Skip to content

Latest commit

 

History

History
2584 lines (1792 loc) · 120 KB

VirSat_Core_User_Manual.adoc

File metadata and controls

2584 lines (1792 loc) · 120 KB

Virtual Satellite 4 Core: User Manual

It has been a long way to get here and it will be an even harder way to go on. Thanks to everyone who contributed so far.
— Philipp M. Fischer

1. Getting Started

Learn about basic requirements of Virtual Satellite, how it is installed and begin your first modeling. It probably takes less than 15 minutes until you have your first item modeled.

1.1. System Requirements

Virtual Satellite is based on Java and Eclipse Technology. It currently supports the following operating system configurations

  1. Windows 7 64bit with Java 8 runtime environment

  2. Linux 64 bit with Java 8 runtime environment

Warning
Use 64 bit Java JRE

Virtual Satellite does not execute on a Java 32 bit runtime environment.

Warning
Linux Dependencies

Virtual Satellite is depending on Visualization Tool Kit (VTK) and ZeroMQ (ZMQ). Where on Windows both are shipped with the external library plugins, on Linux it is not that easy. Make sure that you have the following dependencies installed to your system:

  • VTK 8.1

  • ZMQ 4.1.4

  • JZMQ 3.1.0

Current Versions can be checked in the win32 plugins. Other versions may work as well, but have not been tested.

Virtual Satellite will look up the Environment Variables VS_JAR_VTK and VS_JAR_ZMQ. The variables should directly reference the library to be used e.g. : VS_JAR_VTK=/usr/share/java/vtk6.jar.

1.2. Installation

Installing Virtual Satellite is as easy as possible. Provided that a Java Runtime environment is installed to your system. Follow the steps below to install Virtual Satellite on a windows system:

Note
Installation steps on linux are very similar.

Step Task Image

1.

Download the Virtual Satellite zip-file from the GitHub releases section.

Download

2.

Store the zip file to the folder of your choice (e.g.: C:\VirtualSatellite\) and unzip it here.

Unzip

3.

Dive into the unzipped sub-folder and Execute the VirSat4_Core.exe file.

Execute

4.

Once Virtual Satellite is started it should appear as shown in the image. Now press the link Start modeling now!.

Started

Done. You installed and successfully started Virtual Satellite.

1.3. First Steps

Now when you successfully installed Virtual Satellite to your computer it is about time to get started using it. This chapter provides some first steps to learn some basic functionality to work with this software.

Note
In this example we work locally on your computer, there is no need for a subversion service or similar.
Step Task Image

1.

Dive into the folder where you installed Virtual Satellite and and Execute the VirSat4_Core.exe file.

Execute

2.

The OSGI Console will open up and a Splash screen will be displayed showing the start-up progress.

Note
Details to the Equinox OSGI Console will be explained later in chapter Equinox OSGI Console.

Splash Screen and OSGI Console

3.

During start-up, Virtual Satellite will ask for the workspace folder. Choose a folder you prefer or stick with the default one. This workspace folder is used to store the files of your project locally.

Note
You can also choose different folders for different projects. And you can change between these folders later.

Execute

4.

After a while you will see the Welcome Screen of Virtual Satellite, Press the link Start Modelling now!. This will open the Virtual Satellite perspective.

Note
In case you don’t see the Welcome Screen as shown in the image, it is possible that you already started Virtual Satellite and closed it. To open the Welcome Screen again follow the menu Help  Welcome.

Started

5.

The three important views of the perspective are:

  1. The Navigator to the left (blue dashed box).

  2. The Editing area in the middle which is currently empty (green dashed box).

  3. the Concept Palette to the right (orange dashed box).

Note
In case views get lost, you can always reset the perspective by right-click Icon Core Perspective then Context  Reset

Perspective

6.

Open the dialog for creating a new project by pressing the marked icon in the navigator.

Note
Alternatively you can use the new dialog from the main-menu following File  New  Other…​ or CTRL+N. Then from the new dialog select VirSat  VirSat Project and press Next>.

Open project

7.

In the New Project dialog type in a name for your project (e.g. MySatellite). Press Finish to create the new project.

New Project Dialog

8.

Now open the Repository from the Navigator view by double-clicking MySatellite  Repository.

Open Repository

9.

The Repository Editor will open in the Editing area. Scroll down to the table Section for: Active Concepts. Here click on Add from Registry.

Repository Editor

10.

Select the following two Concepts in the dialog by ticking the check-box. Then press OK to activate the Concepts.

  1. The Concept for Product Structures de.dlr.sc.virsat.model.extension.ps.

  2. The Concept for Design Maturity de.dlr.sc.virsat.model.extension.maturity.

Note
The numbers in the brackets after the Concept name denote the version of the Concept.
Note
Concepts can require other concepts. If you select a concept, all its required concepts are also selected.

Concept Dialog

11.

Go back to the Navigator view and right-click on Repository. Now select Context  Product Structures  Add ProductTree.

Create Product Tree

12.

Now right-click on the newly generated item PT: ProductTree. Now select Context  Product Structures  Add ProductTreeDomain.

Create Product Tree Domain

13.

Double-click on the newly generated PTD: ProductTreeDomain item to open it in the Editor. In the Editor change the name to e.g. AOCS (Attitude and Orbit Control System) as shown in the image.

Note
The ribbon tab of the Editor changes from "PTD: …​" to "*PTD: ...". The extra * shows that there are unsaved changes.
Tip
Save your work frequently since most changes are kept in memory and not on your hard-drive. You can easily save your work by pressing CTRL+S from within the current Editor or by File  Save. You should use CTRL+SHIFT+S or menuFile:[Save All] to save all Editors and changes.

Product Tree Domain Editor

14.

Create an Element Definition in the PTD: AOCS similar as in the steps before. Name it RW (Reaction Wheel).

Tip
You can also use the Concept Pallete and drag the Element Definition item to the PTD: AOCS in the Navigator and drop it.

Added Element Definition

15.

After modeling the Structural Element Instances it is now time to add some design information. Go back to the Navigator view and right-click on the newly created ED: RW. Select Context  Design Maturity  Add Maturity. After this double-click on the ED: RW to open it in the Editor.

Tip
The whole Conceptual Data Model (CDM) is based on Structural Elements and Category Definitions. At runtime the CDM is used to create the System Model. Now Structural Element Instances and Category Assignments are instantiated.

Add Maturity

16.

In the editor scroll-down to Section for: Maturity. Click into the upper table to change the level Enum Property to READY_TO_BE_USED=1 and the trl Enum Property to TRL_9=9.

Note
Opening the Editor on the Structural Element Instance gives access to all Category Assignments. Double-clicking an individual Category Assignment in the Navigator opens and individual Editor for it. You can also open this individual Editor by selecting the Category Assignment in the table in the Editor and press Drill-Down.

Maturity Editor

Well Done. You successfully created your very first model using Virtual Satellite. With this first hands-on experience you learned the first important steps to use this software. Continue reading the next chapters to learn how to use it in real system engineering scenarios.

2. Collaborative work on a shared project

Virtual Satellite uses SVN or git for collaborative work. In order to work on a project with other people, you need to store it in an SVN or git repository. This section describes how to set up and work with a shared project.

2.1. Workflow Overview

The collaborative workflow of Virtual Satellite is shown below. First someone has to create a project in Virtual Satellite locally and share it to an SVN repository. Then all the collaborators can load it and work with it as described in the following subsections.

Colaboration Workflow Overview
Figure 1. Collaboration Workflow Overview

2.2. Sharing a new project to SVN

First of all, you need to install an SVN connector.

Step Task Image

1.

Open from the main menu Window  Preferences.

Preferences

2.

in the preference dialog navigate to Team  SVN, open the tab SVN Connector and press Get Connectors…​

Get SVN Connectors

3.

Choose one of the connectors in the list, press Finish and follow the installation steps - accept the user agreement, agree to the unsigned content and restart Virtual Satellite.

Tip
Due to license restrictions we cannot ship the connectors. For Virtual Satellite to correctly operate we recommend to use the svnkit.

Connectors

After the restart you can share your project.

Step Task Image

1.

Open the Project Explorer tab in the Navigator view.

Opening Project Explorer

2.

In the context menu of your project select Context  Team  Share Project…​.

Share Project

3.

In the Share Project Wizard enter the desired URL in your SVN repository, provide credentials for SVN and press Finish.

Note
If the specified SVN location does not exist, you will get a notification "Location information has been specified incorrectly. Keep location anyway?". Answering OK creates the location.

Share Project Dialog

4.

Next you will see a commit dialog where you can optionally write a commit message. Press OK to commit your project to SVN.

Commit Dialog

Now your project is connected to an SVN repository, you can Commit and Update it (see Updating and committing a shared project), and you can give its URL to your collaborators.

2.3. Loading a project from SVN

Step Task Image

1.

Click on the Open Perspective button in the top right corner and open the SVN Repository Exploring perspective.

SVN Perspective

2.

In the SVN Repositories view click New Repository Location and enter the URL of your project and your SVN credentials.

Add SVN Repository

3.

Press Context  Check Out on your repository.

Note
You need to check out a folder that directly contains data folder. You may need to expand some intermediate folders to get there.

Check Out

4.

Go back to the VirSat - Core perspective, and in the Navigator view you will see a project that you just checked out.

Checked out Project

2.4. Updating and committing a shared project

Step Task Image

1.

To get the most recent changes from the repository, press Context  Update Project from Repository in Navigator. To upload your changes to the repository, press Context  Commit Project to Repository and optionally provide a commit message in the dialog that pops up.

Tip
There are also icons for committing and updating in the icon bar of the Navigator.
Note
Whenever you commit and update, you do it for the whole project.

Committing and Updating

2.5. Sharing a new project to git

Virtual Satellite also provides two modes of using git. A basic and an advanced mode. The basic mode simplifies the transition from SVN to git by providing the classical SVN actions. The advanced mode uses the eclipse default git implementation and provides all git actions. See the EGit documentation for more information.

The following steps can be applied to use Virtual Satellite with the basic git mode.

To share a project via git first switch to the GIT perspective and add a git repository:

Step Task Image

1.

Open the git perspective by selecting [Window → Perspective → Open Perspective → Other] from the menu. In the dialog both select "Git".

Note
You can also switch the eclipse perspectives by using the icons in the top right corner!

Opening Git Perspective

2.

In the git perspective, in the "Git Repositories" view on the left, select the icon with the green arrow to clone an existing git repository.

Add Repository

3.

Add the git remote URL and insert your credentials. Then click [next]

Add Repository

4.

Select synchronisation of all branches by clicking [next] again.

Select Branches

5.

Select the file location for the git repository on your local computer. Then click [Finish]

Local Location Dialog

Now you checked out a git repository. This can be used to share your project:

Step Task Image

1.

Open the Project Explorer tab in the Navigator view.

Opening Project Explorer

2.

In the context menu of your project select Context  Team  Share Project…​.

Share Project

3.

In the Share Project Wizard select GIT and click [Next].

Share Project Dialog

4.

On the next page select the repository you cloned before and click [Finish].

Select Repository

5.

Next you will see a commit dialog where you can write a commit message. Press OK to commit your project to git.

Commit Dialog

Now your project is connected to a git repository and you can Commit and Update it (see Updating and committing a git project).

2.6. Loading a project from git

Step Task Image

1.

Open the git perspective by selecting [Window → Perspective → Open Perspective → Other] from the menu. In the dialog both select "Git".

Note
You can also switch the eclipse perspective by using the icons in the top right corner!

Opening Git Perspective

2.

In the "Git Repositories" view on the left, click the button with the green arrow to clone an existing git repository.

Add Repository

3.

Add the git remote URL and insert your credentials. Then click [next]

Add Repository

4.

Select synchronisation of all branches by clicking [next] again.

Select Branches

5.

Select the file location for the git repository on your local computer. Then click [Finish]

Local Location Dialog

Now you have cloned a git repository from which projects can be imported:

Step Task Image

1.

To checkout the git repository’s projects, right-click the repository and select "Import Projects"

Import Projects

2.

Select the desired projects and press [Finish].

Select Projects

Switch back to the Virtual Satellite Perspective to start modeling (Window → Perspective → Open Perspective → Other → VirSat Core; or with the icons in the top right corner).

2.7. Updating and committing a git project

Step Task Image

1.

To get the most recent changes from the repository, press Context  Update Project from Repository in Navigator. To upload your changes to the repository, press Context  Commit Project to Repository and optionally provide a commit message in the dialog that pops up.

Tip
There are also icons for committing and updating in the icon bar of the Navigator.
Note
Whenever you commit and update, you do it for the whole project.

Committing and Updating

3. Modeling with Virtual Satellite

Learn here about the out of the box available modeling capabilities supported by Virtual Satellite. In this chapter you will learn about concepts, how to work with them, how to interact with the data model, and which default concepts are delivered to you by the Core.

3.1. General modeling

Virtual Satellite supplies a core modeling language. Amongst other advanced capabilities, it allows storing various peripheral information such as user rights and unit management. The modeling language can be extended by concepts, which represent specific engineering processes or knowledge domains.

Note
For example activating the de.dlr.sc.virsat.model.extension.ps concept extends the modeling language by allowing modeling of complex product structures including product trees and product configurations.

3.1.1. User Rights Management

Having multiple users manipulate the data model concurrently may lead to merge conflicts. To avoid such issues, Virtual Satellite provides a rights management system. It defines which user is allowed to manipulate a certain model element. The association between a user and the modifiable elements is called a Discipline. Then only users logged in with that specified user name are allowed to modify those elements. A Discipline has two properties:

Discipline name

The name of the Discipline which should be unique.

User name

Only users logged in with that specified user name will be associated with the Discipline.

Disciplines are managed in the Role Management. By default when a new project is created, the Role Management will contain exactly one Discipline called System.

In this section you will learn how to:

  • Create a new Discipline

  • Assign a Discipline to a model element

Step Task Image

1.

Open the Editor for the Role Management from the Navigator view by double-clicking MySatellite  Role Management.

Opening the role management editor

2.

Press the button Add Discipline to insert a new Discipline called New Discipline and that is initially associated with your own user name.

Tip
Disciplines can be removed by selecting a Discipline and then pressing the Remove Discipline button.

Adding a discpline

3.

Select the newly created Discipline in the Discipline Name column and change it to RepositoryManager. Then select the Discipline in the User Name column and change it to OtherUsername.

Changing properties of a Discipline

4.

We will now assign the discipline to the Repository. To do this, open the Repository from the Navigator. Then select the combo box listing Discipline: System and choose the entry Discipline: RepositoryManagener. Finally press the Apply Discipline button.

Tip
You can assign a Discipline to an element and all sub elements by pressing the Apply Discipline Recursive button.

Applying a Discipline

5.

All editable fields will be no longer be editable and shown as greyed out.

Warning
This includes the Discipline field. Once you assign a Discipline only the associated user can return the ownership!

The repository can longer be edited

Tip
In the event that the rights management needs to be bypassed, Virtual Satellite can be started with the -superUser flag to gain super user rights. For further information, check out Enforce super user rights.

3.1.2. Quantities, Units, Dimensions and Values

Values without a physical dimension carry little meaning. They need to be considered within their engineering context,

Note
For example the statement "the mass is 5" is ambiguous and not meaningful. However, the information "the mass is 5kg" is something that can be worked with.

To establish a solid foundation for well-defined and consistent units, Virtual Satellite provides an implementation of the Quantities, Units, Dimensions and Values (QUDV). In this section you will learn how to:

  • Create a new Quantity Kind

  • Create a new Unit

  • Export a QUDV Model

  • Import a QUDV Model

Unit Management

The Unit Management is the central hub for managing Quantity Kinds and Units. By default, when you create a new project the Unit Management will be populated by a default QUDV model supplied by Virtual Satellite. Further Quantity Kinds and Units required in the project can then be defined. The QUDV supports two sorts of Quantity Kinds:

Simple Quantity Kinds

A Simple Quantity Kind is not based on another Quantity Kind.

Note
An example for this in the SI unit system is Mass.
Derived Quantity Kinds

A Derived Quantity Kind is defined as a composition of other Quantity Kinds. Each quantity is equipped with a factor stating its involvement.

Note
An example for this in the SI unit system is Speed, which is composed over the quantities Length with factor of 1 and Time with a factor of -1.

In the same fashion, the Virtual Satellite implementation of QUDV supports the following sorts of Units:

Simple Unit

A Simple Unit is not based on another Unit.

Note
An example for this in the SI unit system is Second.
Conversion Based Unit

A Conversion Based Unit is defined by conversion of a reference Unit. The conversion can be described with a factor and an offset.

Note
An example for this in the SI unit system is Degree Celsius, which is defined in reference to Kelvin with a factor of 1 and an offset of 273.15.
Derived Unit

A Derived Unit is defined as a composition of other Units.

Note
An example for this in the SI unit system is Velocity, which is composed of the Units Metre with a factor of 1 and Second with a factor of -1.
Prefixed Unit

A Prefixed Unit is defined by a referenced Unit and an added prefix.

Note
An example for this in the SI unit system is Milli Second, which prefixes the Unit Second with the prefix Milli.

In the following you will create a new Simple Quanitity Kind and a new Simple Unit for it.

Step Task Image

1.

Open the Editor for the Unit Management from the Navigator view by double-clicking MySatellite  Unit Management.

Opening the unit management editor

2.

Scroll to the Quantity Kind Management Section and press the Add Quantity Kind button.

Adding a new quantity kind

3.

Select the QUDV Simple Quantity Kind Wizard option in the Available wizards drop-down list. Then press Next.

Selecting the quantity kind wizard

4.

Set the name to MyQuantityKind and fill out the other fields by data of your choosing. Then press Finish. You can now find your created Quantity Kind in the Quantity Kind Management section.

Simple quantity kind wizard

5.

Scroll to the Unit Management Section and press the Add Unit button.

Adding a unit

6.

Select the QUDV Simple Unit Wizard option in the Available wizards drop-down list. Then press Next.

Selecting the quantity kind wizard

7.

Set the name to MyUnit and fill out the other fields by some data. Set the Quantity Kind to MyQuantityKind - Q Then press Finish. You can now find your created Unit in the Unit Management section.

Simple unit wizard

You have created your first own Unit on the basis of your own Quantity Kind! You can remove a created Quantity Kind or Unit by going to the Unit Management, selecting the desired Quantity Kind or Unit then press Remove Quantity Kind or Remove Unit. Likewise, editing existing an existing Quantity Kind or Units can be done by pressing Edit Quantity Kind or Edit Unit.

QUDV Wizards

If you have defined a QUDV model to your liking, you can transfer it between different projects using the QUDV wizards. Virtual Satellite provides an export and an import wizard for QUDV models. Both wizards can be found in the VirSat category. In the following you will export a QUDV system and re-import it.

Step Task Image

1.

Open the QUDV Export Wizard by selecting File  Export and choosing QUDV Export Wizard from the VirSat category. Then select Next.

Selecting the QUDV export wizard

2.

Tick the checkbox for the Unit Management model you wish to export. Then select an export destination by pressing Browse. Finally press Finish.

The QUDV export wizard

3.

Open the QUDV Import Wizard by selecting File  Import and choosing QUDV Import Wizard from the VirSat category. Then select Next.

Selecting the QUDV import wizard

4.

Select an import destination by pressing Browse. Tick the checkbox for the QUDV model you wish to import. Then press Next.

The source selection in the QUDV import wizard

5.

Tick the checkbox for the QUDV model you wish to overwrite. Finally press Finish.

The target selection in the QUDV import wizard

3.2. Modeling Concepts

Virtual Satellite provides an extension mechanism to customize the system modeling to project-specific needs. Concepts allow the creation of new types that can be used in Virtual Satellite models. Virtual Satellite ships basic concepts to a model systems, such as the Concept de.dlr.sc.virsat.model.extension.ps. This concept enables to model complex product structures.

Note
To create your own Concepts see Section Developing a Concept.

3.2.1. Activating a Concept

To activate Concepts, it is necessary to have a Virtual Satellite project in the navigator. A new project can be created by clicking the satellite icon in the VirSat Navigator or by right-clicking New > Project then select the folder VirSat and select VirSat Project.

Once you have a Virtual Satellite Project (in this documentation called MySatellite) follow the next steps to activate Concepts:

Step Task Image

1.

Open the editor for the Repository from the navigator view by double-clicking MySatellite  Repository.

Opening the repository editor

2.

The Repository Editor will open in the Editing area. Scroll down to the table Section for: Active Concepts. Here click on Add from Registry.

Select concept to activate

3.

Select the Concept to be activated and press the OK button.

The concept is now activated.

3.2.2. Modeling with the concept palette

After you activated a concept, you can add instances of its elements to the system model. This can be done either with the context menu ( Right-click an element in the navigator, click on the concept name and select the element to be added ) or with the Concept Palette on the right side of the editor.

Note
If you try to add an element from the context menu but do not have the rights to add it at the current location (see User Rights Management ) or the element is not applicable for the current element then the menu is grayed-out.

Follow the next steps to add concept elements from a concept palette:

Step Task Image

1.

Concept elements can be added to the system model by selecting them from the Concept Palette. The palette is located right to the editor section.

The Concept Palette

2.

To select elements from the palette you have to expand the containing concept. To create a basic structure for your system model, you can e.g. expand the ProductStructure concept.

The ProductStructure section of the Concept Palette

3.

From the concept section in the palette you can select concept elements and then drag them into the navigator section.

Drag an element from the palette

4.

Drop the element at the desired location in the system model.

Note
If you do not have the rights to add the element at the selected location or it is not applicable, then the courser will indicate that.
Note
Concepts that are not activated for a project are still shown in the Concept Palette, but you cannot add them to the project. The courser will always show that dropping the element is blocked.

Drop an element in the VirSat Navigator

3.2.3. Extended product structures - Inheritance and Configuration Control

Virtual Satellite Core delivers a concept for extended product structures. These product structures are highly related to other product structures as they are currently used in MBSE in the space domain. There are several aspects where these product structures should support:

  1. They are intended to help with the engineering process.

  2. They are intended to help with configuration control issues.

  3. They should help to avoid data redundancies by inheritance mechanisms.

General introduction to extended product structures

The product structures concept delivers capabilities to structure the system design. Besides classical decomposition into one product tree, the concept delivers four different type of trees. Each of these trees reflect a different view to the system in the context of its development. Information which is entered into one of the trees in an early development stage, can be reused in another tree in a later stage. The concept uses Virtual Satellite’s intrinsic inheritance functionality for this purpose. The four different trees are called: Product Tree, Configuration Tree, Assembly Tree and Product Storage.

Product Tree

This is the first tree in the development process. Here engineers usually define one of the equipments they want to use in the design. The data stored here is usually data as it is provided by the supplier.

Tip
E.g.: This tree is used to model one star tracker of a given type and store the information which is equal for all actual implementations of it.
Configuration Tree

This is the second tree usually defined in the development process. This tree is used to reflect the actual configuration of a spacecraft. The data stored here is usually information which is associated to each individual instance of an equipment. All information of an equipment in the product tree is inherited here. Information can be overridden here if necessary.

Tip
E.g.: Information about the position of an equipment in the spacecraft is stored here, whereas the size of the equipment can already be defined in the Product Tree.
Tip
E.g.: Here is the place to model every instance of the star tracker such as ST1 and ST2.
Assembly Tree

These are the third trees usually defined in the development process. One of these trees reflect how one spacecraft conforming to the Configuration Tree is built. The data stored here is usually information which is specific to the actual spacecraft built. All information of an equipment in the configuration tree is inherited here. Information can be overridden here if necessary.

Tip
There is not necessarily one Assembly Tree! Satellite constellations are a typical use-case for multiple Assembly Trees.
Tip
E.g.: Information about the ID of a spacecraft should be stored here. Also slight modifications to the configuration can be reflected here.
Note
The Assembly Tree also combines information from the Product Storage. E.g. an equipment in the Product Storage may have a unique serial number. Once plugged into the Assembly Tree the serial number will be finally overridden with the one from the equipment in the Product Storage.
Product Storage

This is the last tree usually defined in the development process. This tree is used to combine the reality with the virtual representation of the system. The data stored here is usually information which is unique to the actual equipment. All information of an equipment in the product tree is inherited here. Information can be overridden here if necessary. Data defined here is finally inherited into the Assembly Tree.

Tip
The Product Storage is usually the place to save information such as real life measurements or serial numbers.
Note
E.g. in the Product Storage we create three instances of the star trackers which inherit from the one defined in the Product Tree. Now we get three real star trackers delivered from the supplier. We assign the serial numbers to their representation in the Product Storage. From the Product Storage we assign two of them into the Assembly Tree. Now we know which star trackers are actually built into the spacecraft.
Extended product structures and inheritance by example

The Figure "Example of Extended Product Structures and Inheritance" explains how Inheritance works together with the Extended Product structures. Imagine a Product Tree in which one reaction wheel is defined as an equipment. Together with this equipment a calibration curve as given by a supplier specification is stored. This reaction wheel is instantiated as RW1 in the Configuration Tree. Here it inherits the calibration curve of the reaction wheel as defined in the Product Tree. The Assembly Tree also instantiates a reaction wheel which is inheriting from the one from the Configuration Tree. Thus it will first inherit the same calibration curve as it has once been specified in the Product Tree. Now the supplier delivers two reaction wheels from which one has to select for the actual spacecraft. Therefore two instances of the reaction wheel are created in the Product Storage called RW_A and RW_B. Both of them initially inherit the calibration curve from the specification in the Product Tree. But measurements showed that the calibration curves are different in reality. Hence the calibration curves are now adjusted in the Product Storage. It becomes clearly visible, that one calibration curve is far off and the other one is somewhat ok. The reaction wheel with the calibration curve which is ok, is now the one that should be used in the actual spacecraft. Therefore the RW1 in the Assembly Tree has to additionally inherit from the RW_A in the Product Storage. The calibration curve in RW1 now reflects the reality of the actually used reaction wheel called RW_A.

Tree Inheritance Example
Figure 2. Example of Extended Product Structures and Inheritance
Using the Extended Product Structures concept in Virtual Satellite

The previous chapters explained how to use product structures in general and how the inheritance mechanisms works. This chapter takes a closer look how to actually use it in Virtual Satellite. Additionally to what has been explained before, this chapter will also highlight some of the flexibilities in modeling product structures which have not yet been addressed. This concerns e.g. the option to create not just one Product Tree but several if needed.

To get started create a simple project as explained in First Steps. Then activate the following two concepts as explained in Activating a Concept:

  1. de.dlr.sc.virsat.model.extension.ps - The extended product structures concept

  2. de.dlr.sc.virsat.model.extension.budget.mass - A mass budget concept

In the following tutorial a complex example of a star tracker equipment is realized. In this example a Product Tree with one star tracker will be created. Following, the Configuration Tree will be instantiated with two star trackers. Two Assembly Trees will be derived from the Configuration Tree. A mass will be modeled to these star trackers. Then, five star trackers will be modeled in the Product Storage, with actual weighed mass. Due to some fictive fluctuations in the weight, four of them have to be selected for the actual assemblies.

Setting up the product structures

First the product structures have to be set up. Follow the given steps:

Step Task Image

1.

Model the Product Tree:

  1. Start modeling the Navigator.

  2. Add a Product Tree as root element and name it StarExplorer.

  3. Nest a Product Tree Domain into it and call it AOCS.

  4. Add the Star Tracker equipment into it by modeling an Element Definition and name it ST.

Your Product Tree should now look like the one in the image.

Tip
In Virtual Satellite you are not restricted to one single Product Tree. You are free to model as many Product Trees as you need to organize your data.

The Product Tree

2.

Model the Configuration Tree using the Wizard:

  1. Right click the Product Tree called StarExplorer in the Navigator.

  2. Follow the context-menu Context  Product Structure  Generate Product Wizard to open the Wizard.

  3. In the Wizard select the Element Configuration called ST. Then press the Duplicate button to copy it. Remember the configuration has two instances of the star tracker.

  4. Select the first star tracker and press the Rename button and set the name to ST1.

  5. Select the other star tracker, press the Rename button and call it ST2.

  6. Finally set the Configuration Tree Name to StarExplorerConfig.

The Wizard should look like this.

The Configuration Tree Wizard

3.

Finally create the Configuration Tree by pressing the Finish button in the Wizard.

The Navigator will show up like this.

Tip
You can model the Configuration Tree without the Wizard as well. But you will have to perform a lot more modeling steps such as setting inheritance links.

The Configuration Tree in the Navigator

4.

Now, model the Assembly Trees using the Wizard:

  1. Right click the Configuration Tree called StarExplorerConfig in the Navigator.

  2. Follow the context-menu Context  Product Structure  Generate Product Wizard to open the Wizard.

  3. Finally set the Assembly Tree Name to StarExplorer1.

  4. Press the Finish to create the first Assembly Tree

Repeat the steps to create the second Assembly Tree and call it StarExplorer2. The product structures in the Navigator should now look like this.

The two Assembly Trees

Well done, the product structures for our spacecraft is prepared. At the moment we don’t yet need the Product Storage. The next part explains how data inherits in this product structure and how this inheritance can be broken.

Basic inheritance of data

In this product structure example we now have one star tracker camera, which is instantiated six times in the Configuration and Assembly Trees. Now it is time to model a mass to these star trackers, but not to every individual one. This following example will show how the inheritance mechanism helps to model the mass in one place and use it in all the other star trackers as well:

Step Task Image

1.

First the mass has to be modeled in the Product Tree:

  1. Traverse the Product Tree in the Navigator down to the Element Definition called ST.

  2. Model a Mass Equipment from the mass budget concept here.

  3. Save the change by pressing the button Save All or pressing CTRL+SHIFT+S.

After saving the Mass Equipment will appear on the star trackers in the Configuration Tree and Assembly Trees as well.

Note
The Mass Equipment will not be inherited if the data is not saved. Once the data is saved, the eclipse builder will call the inheritance builder to update all relevant data.

InheritedMassEquipment

2.

Add some weight to the star tracker:

  1. Traverse the Product Tree in the Navigator down to the Element Definition called ST.

  2. Select the Mass Equipment and double-click to open it in the Editor.

  3. In the Editor scroll down to the field called mass and set a value of 1.5kg.

  4. Save the change by pressing the button Save All or pressing CTRL+SHIFT+S.

The mass of 1.5kg now gets propagated to all inheriting star trackers.

Tip
The name of the editor in the top tabulator helps you to navigate. The name indicates where the Mass Equipment resides that is currently open.

Set the Mass Equipment on the star tracker

3.

Add a Mass Summary to the Configuration Tree and inspect it in one of the assemblies:

  1. Traverse the Configuration Tree in the Navigator down to the Element Configuration called AOCS.

  2. Model a Mass Summary from the mass budget concept here.

  3. Save the change by pressing the button Save All or pressing CTRL+SHIFT+S.

  4. Now, traverse the Assembly Tree in the Navigator called StarExplorer1 down to the Element Occurrence called AOCS.

  5. Double-click the AOCS to open it in the Editor.

  6. Open the Mass Equipment from the Product Tree as well.

  7. Change the mass in the Mass Equipment to 1.6kg.

  8. Save the change by pressing the button Save All or pressing CTRL+SHIFT+S.

Inspect how the summary of the Assembly Tree is affected because the mass of the star tracker changes.

Observe the Mass Summary in the Assembly Tree

Multi-inheritance with Storage Equipment

After the Product, Configuration and Assembly Trees have been modeled, it is about time to create some Product Storage equipment. As in the example before, the idea is to be able to model the real equipment which have been delivered. This is needed to store equipment individual information, such as specific calibration curves or serial numbers. In this example we stick with the mass. We assume that for the four star tracker we need in the assembly, we ordered five parts. All parts will be weighed and their actual mass will be noted down. We finally pick the four which have the lowest mass and add them to the Assembly Trees.

Step Task Image

1.

First a new root one equipment has to be modeled in the Product Storage and typed by the equipment in the Product Structure

  1. Create a new root Product Storage element in the Navigator. Follow the context menu Context  Product Structure  Add Product Storage.

  2. Create a nested Product Storage Domain as a child to the Product Storage and name it AOCS.

  3. Create a nested Element Realization as a child to the Product Structure Domain called AOCS and call it ST_A.

The first equipment in the storage can now represent a real equipment. Still it needs to be typed and later copied to represent the amount needed.

The Product Storage with one Element Realization

2.

Now the ST_A needs to by typed with the ST from the Product Tree.

  1. Double-Click the Element Realization called ST_A to open it in the Editor.

  2. Scroll down to the table section called Inheritance.

  3. Under the table press the button Add Inheritance.

  4. In the dialog select the Product Tree called StarExplorer in the tree to the left side.

  5. After the right list updated, select the Element Definition called ST.

  6. Press the button OK.

  7. Save the changes by pressing CTRL+S.

The ST_A is now typed by the 'ST' from the Product Tree. The Element Definition ST shows up in the table of the Inheritance section. The Mass Equipment category is inherited to the ST_A as expected.

Note
To remove the inheritance, select the element in the table and press the Remove Inheritance button.
Tip
You can also use drag & drop to model the inheritance. Simply drag the ST from the Product Tree and drop it into the table of the Inheritance section of the ST_A.

Dialog for setting the Inheritance

3.

Now the ST_A needs to be copied and weights need to be assigned.

  1. Select the 'ST_A' and press CTRL+C.

  2. Select the Product Storage Domain called AOCS and press CTRL+V four times.

  3. Rename the copied equipment to ST_B, ST_C, ST_D and ST_E.

  4. Adjust the mass of ST_A to 1.592kg.

  5. Adjust the mass of ST_B to 1.599kg.

  6. Adjust the mass of ST_C to 1.594kg.

  7. Adjust the mass of ST_D to 1.604kg.

  8. Adjust the mass of ST_E to 1.602kg.

  9. Press CTRL+SHIFT+S to save all changes.

Product Storage with five equipment

4.

It is time to plug the equipment from the Product Storage into the Assembly Trees. ST_A and ST_E will be assigned to StarExplorer1. ST_B and ST_C will be assigned to StarExplorer2. ST_D is kept in the Product Storage as a spare.

  1. Traverse the Navigator down to the ST1 of StarExplorer1.

  2. Double-click the ST1 to open it in the Editor.

  3. Scroll down to the section called Inheritance.

  4. Add a second inheritance referencing to the ST_A in the Product Storage.

  5. Press CTRL+S to save all changes, and to update all inherited data.

  6. Repeat the steps to assign the other star tracker as well.

Product Storage with five equipment

5.

Now the changes can be observed in the Assembly Tree for the 'StarExplorer1' and StarExplorer2.

  1. Traverse the Navigator down to the AOCS of StarExplorer1.

  2. Double-click the AOCS to open it in the Editor.

  3. Scroll down to the section MassSummary.

You can now see the impact of the star trackers from the Product Storage.

Product Storage with five equipment

Note
You can also change the order of inheritance in the inheritance section. E.g. if you set the link to an Element Configuration into second place, it’s values will override the ones from the Element Realization from the 'Product Storage'.
Tip
You can specify as many inheritance links as you which. This can be useful, when e.g. stereotyping certain equipment.
Tip
You can also use drag & drop again to set the inheritance links.

You finalized the tutorial for the extended product structures.

3.2.4. Equipment cost and cost summaries and cost types collection concept

Costs and cost budgets can be modeled with the de.dlr.sc.virsat.model.extension.cost.budget concept. The concept contains three main categories:

CostEquipment::CostEquipment

CostSummary::CostSummary

CostTypesCollection::CostTypesCollection

Export/Import

The CostTypeCollection or CostEquipments can be exported from Virtual Satellite and imported from an Excel file. This section describes the workflow on the Virtual Satellite site of the corresponding round-trip engineering.

Step Task Image

1.

You start with a simple Repository containing a Product, Configuration, Assembly Tree and CostTypeCollection with a CostEquipment added to the CostMaterial.

Example trees

2.

To export that CostTypeCollection or CostEquipment, navigate to File→Export…​.

Export

3.

The Export Wizard opens, in which you can select the Excel Export Wizard.

Export Wizard

4.

In the Wizard you have to select the -Cost Type Collection- or Tree you want to export, e.g. the ProductTreeDomain ProductTreeDomain. You also have to provide the destination of the exported file.

Tree and destination selection

Note
The round-trip engineering is driven from the Virtual Satellite side, so that Virtual Satellite can execute all CRUD (Create, Read, Update, Delete) operations, while an external CAD software can only Read and Update existing components.
Note
For the purpose of identification, each element has a corresponding UUID (Universally Unique Identifier).

3.2.5. Requirements modeling concept

To support model based requirements management and to verify requirements by using the system model, Virtual Satellite provides a concept to model requirements. Requirements can be either imported from other tools or created directly within Virtual Satellite.

First steps

Before you can start:

  • Open Virtual Satellite.

  • Create a new Virtual Satellite Project.

  • Activate your required concepts, such as Product structure and Requirements.

For more information check Modeling with Virtual Satellite.

Configure requirements modeling
Step Task Image

1.

Create a RequirementsConfigurationCollection element directly in the Virtual Satellite Repository.

  • This collection is a place where all requirements configuration elements should be stored.

Tip
User rights can be customized to prevent other users from editing this collection.

Add a RequirementsConfiguration under the collection.

Note
The RequirementsConfiguration element is used to define requirement types. These types specify attributes of each requirement.

Double-click the new configuration element to open its editor.

Add a new requirement type.

Add requirement type

2.

Specify a name for the new requirement type and add attributes in the dialog box.

Specify requirement type name and attributes

Modeling of requirements
Step Task Image

1.

Go to the model location where you want to add requirements.

Note
Requirements can also be split to several elements within a model.

At the desired location create a RequirementSpecification.

Create requirement specification

2.

Double-click the specification element to open its editor.

Add requirements by using the button Add Requirement in the requirements section.

Add requirements

3.

When a new requirement is added, the editor asks of which type it needs to be:

  • You can now choose between the types you create in the configuration element of your project. The left part of the dialog allows to filter by the container element of the configuration, the right side shows all applicable types in the currently selected tree element.

Choose requirement type

4.

After a requirement of the selected type is added, its values can be added.

Add values

5.

It is also possible to create hierarchies of requirements. To do that, create a requirement group by clicking the button Add RequirementGroup.

Create requirement group

6.

To create requirements within a group click on the button Drill-Down to go to the group.

Drill-Down to requirement group

Import / export of requirements

To integrate requirements management into the model-based systems engineering process, Virtual Satellite supports importing requirements from external tools.

Import from CSV-files

It is possible to import requirements form CSV files. CSV files can be exported from e.g. Excel. To import requirements from CSV files follow the next steps:

Step Task Image

1.

Select Import from the file menu in Virtual Satellite

Import Menu Virtual Satellite

2.

Select Requirements CSV Import Wizard form the Virtual Satellite category.

Select the correct import wizard

3.

Select a CSV file to import from, check if the column separator is correct (from a default Excel export it is “;”) and set the line number of the heading and the first data line. Then select a RequirementsConfiguration which should be container for the new requirement type. It is also possible to select an existing requirement type for the import. For more information got to the next section [Map CSV requirements column to existing type].

Import start page

4.

On the next page of the import wizard, select a type for each column found in the file. If the type is not clear yet it can be left as string. It is always possible to import types later.

Note
The type is used only for editing support; values are not validated when importing requirement values. Unselected columns are not imported.

Configure the imported type

5.

Then select the RequirementSpecification in which the requirements should be imported to.

Selection of import target element

After the import, the targeted specification element should contain the requirements. For columns with the type Enumeration, the editor shows all values which were already contained in this column from the moment of import. Additional values can be added to the enumeration when re-selecting Enumeration as type of the attribute in the editor of the requirement type.

Imported enumerations

Map CSV requirement columns to existing type

It is also possible to import requirements by using an existing type. This does not create a new requirement type and can help to have consistent requirement types for all modeled requirements.

Step Task Image

1.

Instead of selecting the container for the new requirement type, select the existing type on the first page of the import wizard.

Select an existing type

2.

On the next page, map the columns of the CSV-File to the attributes of the existing requirement type.

Map requirement attributes to CSV columns

Import ReqIF-files from DOORs

First, export requirements from Doors:

Step Task Image

1.

Configure the ReqIF export in DOORs. For that you need to manage the project properties.

Configure ReqIF Export

2.

Create a new ReqIF definition that contains the configuration for your ReqIF file to export.

Create ReqIF Definition

3.

Add specifications to the ReqIF file which shall be exported.

Add Specifications

4.

Do the export.

Note
You can also do this step again later using the same definition. Thus, doing a re-export.

Do Export

Import the Requirements in Virtual Satellite:

Step Task Image

1.

Select Import from the file menu in Virtual Satellite.

Import Menu Virtual Satellite

2.

Select Requirements ReqIF Import Wizard form the Virtual Satellite category.

ReqIF Import

3.

Select a ReqIF file and a container for the new import configuration. The import configuration is named according to the ReqIF file name. (Select a RequirementsConfigurationCollection in the tree)

Select ReqIF file

4.

Select the requirement specifications from the ReqIF file which shall be imported. For each of them select a Virtual Satellite container tree element in which a new specification shall be created. Optionally you can specify an existing requirements configuration in which imported requirement types and link types are imported into. Otherwise a new requirements configuration is created for that purpose.

Note
Make sure to select a container element for all selected specifications. Otherwise they are not imported

Select Specifications

After a first ReqIF import, the mapping of external specification to the ones within the model can be customized. It is also possible to customize in which RequirementsConfiguration the to be imported types are added:

Edit Mapping
Figure 3. Edit the mapping of external to internal specifications

To do a re-import simply select the existing import configuration:

Step Task Image

1.

Select Import from the file menu in Virtual Satellite.

Import Menu Virtual Satellite

2.

Select Requirements ReqIF Import Wizard form the Virtual Satellite category.

ReqIF Import

3.

Select the ReqIF file to be imported and the existing import configuration.

Note
Make sure that ReqIF file and import configuration are matching. Otherwise nothing will be imported.

Re-import

Requirements verification

Managing requirements within Virtual Satellite allows to verify the requirements with the system model. This section explains how these model based verification methods can be used and how custom project-specific verification methods can be integrated into the project.

Configuration of basic verification methods

Basic verification methods do not use the system model but are simple model representations to reflect external verification processes.

To configure these basic verification methods follow these steps:

Step Task Image

1.

Add a VerificationConfiguration to your RequirementsConfigurationCollection.

Add verification configuration

2.

Open the VerificationConfiguration by double-clicking it in the navigator and use the Add VerificationType button to add a new verification method.

Add a verification type

3.

Configure the new verification type by specifying a name, description and what kind of verification it is.

Configure the verification type

Besides these basic verification methods, Virtual Satellite supports verification methods that use and link to the system model. System model-based verification methods are provided via the different domain concepts. For more information how concepts are developed check out the Developer Manual.

Add verification methods to requirements
Step Task Image

1.

To add a verification method to a requirement open it in the VirSat Editor. Easiest way to do so is to press the Drill-Down button in the RequirementSpecification or by double-clicking the element in the VirSat Navigator.

Open requirement in editor

2.

Add verification methods in the dedicated editor sections of the requirement. One requirement can also have multiple verification methods.

Note
Basic verification types are created in the VerificationConfiguration.
Note
System model-based verification methods can be added via dedicated editor sections. Depending on the used concepts in the project there might be different model-based verification methods.
Note
Model-based verification methods automatically verify that the system model element, which is traced by this requirements fulfills the added verification rules.

Add a verification methods to requirement

The verification methods contain a status attribute which has influence on the requirement status, shown in the specification table.

Note
Depending on the verification status, the requirement status might change automatically.

Requirement status

Model based verification methods can be used to continuously check that requirements are fulfilled. For now these verification rules have to be selected and configured manually. See the mass budget concept as an example: A requirement specifying that the "mass of system X shall not exceed 10kg" can be verified by an UpperLimitVerification method that links to the mass property (done automatically by the UI) and then specifying the value to be checked - in this case 10kg. These verification methods always automatically use the trace-link to the system model to find the element to be verified. It is also possible to verify multiple system model elements, by having multiple trace links.

Adding this verification rule can be done as shown in the following screenshot:

Configuration of a upper limit verification

Note
The model element referenced in the trace link is verified, so no need to specify this here.

3.2.6. Equipment mass and mass summaries concept

Masses and mass budgets can be modeled with the de.dlr.sc.virsat.model.extension.mass.budget concept. The concept contains two main categories:

MassEquipment::MassEquipment models the mass of an equipment or sub-equipment. It should usually only be at leaf nodes in the system decomposition. It provides the following properties:

  • mass describes the equipment mass. The default value is 0 and the unit is kg.

  • margin describes the margin that should be taken. The default value is 20 measured in %.

  • massWithMargin is a calculated property describing the mass with the margin and is defined as mass * (1 + margin). The default unit is kg.

  • massMargin is a the mass margin and is defined as massWithMargin - mass. Default unit is kg.

MassSummary::MassSummary models mass budegt summaries of sub-systems or systems. It should be usually placed above nodes with MassEquipments. It provides the following properties:

  • mass is a calculated property summing up over all masses contained in the sub-tree. The default unit is kg.

  • massWithMargin is a calulcated property summing up over all masses with margin contained in the sub-tree. The default unit is kg.

  • massMargin is a calculated property defined as massWithMargin - mass. The default unit is kg.

  • margin is a calculated property giving the average margin and is defined as masMargin / mass. It is measured in %.

In the following we will create a mass budget. Create a project - in the following called MySatellite - and activate the following concepts

  • de.dlr.sc.virsat.model.extension.mass.budget

  • de.dlr.sc.virsat.model.extension.ps

according to Activating a Concept.

Step Task Image

1.

For the system, create a Configuration Tree with two ElementConfigurations, called ElementConfiguration1 and ElementConfiguration2.

MySatellite system

2.

Now you can add MassEquipment category to ElementConfiguration1 from the Navigator with Context  MassBudget  Add MassEquipment. In the same manner, add an MassEquipment category to ElementConfiguration2.

Adding an equipment mass

3.

Set the mass of ElementConfiguration1 to 10kg and of ElementConfiguration2 to 20kg. Also change the margin of ElementConfiguration2 to 10%. Finally, save the change by pressing the button Save All or pressing CTRL+SHIFT+S.

Configuring masses

4.

Add a MassSummary category to ConfigurationTree from the Navigator with Context  MassBudget  Add MassSummary. Save the change by pressing the button Save All or pressing CTRL+SHIFT+S. Now, in the Navigator double click on ConfigurationTree and scroll to the MassSummary section. Here you can find a budget breakdown.

Insepcting the mass budegt breakdown

3.2.7. Functional Electrical Architecture

Add Interface to the model

Virtual Satellite enables the user to add Interfaces to the system model. Add the concept Functional Electrical Architecture as described in section in Activating a Concept Elements of the functional electrical architecture can be added to the system model by opening the context menu with the right mouse and click. 

There are InterfaceEnds that are of a specific InterfaceType and have the potential to connect Interfaces.

InterfaceTypes need to be defined as child elements of an InterfaceTypeCollection . The InterfaceTypeCollection is created by clicking with the right mouse on the repository and select Context  Functional Electrical Architecture  Add InterfaceTypeCollection. InterfaceType_Collection A type can be created by clicking with the right mouse on the InterfaceTypeCollection and selecting Context  Functional  Electrical Architecture  Add InterfaceType InterfaceType

An InterfaceType can be a DataInterfaceType , a ThermalReferencePoint or a PowerInterfaceType.

By adding a RangedVoltageDefinition or a FixedVoltageDefinition to the PowerInterfaceType a minimum and maximum voltage  can be specified.

Specify the voltage of a power Interface

InterfaceEnds should be defined as part of an ElementDefinition in a product tree. This definition enables elements of the configuration tree to inherit properties defined in the product tree. It can be added to elements in the product tree by right-clicking the selected element definitions and using the context menu: Context  Functional Electrical Architecture  Add Interface End.

An Interface can be added manual to an Element Configuration in the configuration tree by using the right mouse and navigating to Context  Functional Electrical Architecture  Add Interface. The end and start point of the Interface can be set as properties of the Interface as shown in the following image: _Interface_End

Additionally it is possible to add an Interface as described in the following subsection.

Add a new diagram
Step Task Image

1.

Click on the documents folder in the ConfigurationTree.

DE

2.

Click on the new elements symbol.

NE

3.

Choose Context  VirSat  Virsat Diagram.

NE

4.

Choose Interface in the Drop Down menu.

5.

Drag and Drop the Element Configurations from the satellite navigator to the diagram editor .

6.

The Interface can be used in the system diagram to connect system elements with a power supply by drag and dropping the Interface to their Interface_End.

InterfaceIn

The properties of the Interface and the InterfaceType can be imported and exported from an excel spreadsheet.

3.2.8. Product maturity concept

Virtual Satellite provides means to add element maturities to the system model. Maturities can be used to evaluate the technical development level of the different components of a system. The concept is based on the Technical Readiness Level. Its assessment can be done following NASA’s guide: TRL Assessment Guide.

The Maturity concept in Virtual Satellite allows to add maturity properties to all system elements and provides an overview of the level of child elements.

To start modeling maturities in Virtual Satellite follow these steps:

Step Task Image

1.

Activate the Maturity concept (see Activating a Concept).

Add Maturity Concept

2.

You can add maturity parameters to a system element by 1) using the context menu, right-click → Design Maturity → Add Maturity 2) By dragging the Maturity element from the Concept Palette 3) Or by checking the Maturity check box in the editor section of a system element.

Add Maturity parameters

3.

Set the maturity value of the element from the dropdown box.

Set maturity parameter value

To get a summary of the different maturity values of the system, the section shows a hierarchical list of the maturity values of all child elements.

Maturity overview

Elements can be collapsed or expanded and the values can be exported to Excel.

3.2.9. State machine concept

Virtual Satellite provides means to add state machines to your system but also of its single components. State machines describe the behavior of the system. It consists of a finite number of states and is therefore also called finite-state machine (FSM). Based on the current state and a given input the machine performs state transitions and produces outputs.

The basic building blocks of a state machine are:

  • State: is a situation of a system depending on previous inputs and causes a reaction on following inputs. One state is marked as the initial state; this is where the execution of the machine starts.

  • Transition: defines for which input a state is changed from one to another. Depending on the state machine type, states and/or transitions produce outputs.

  • AllowsConstraint: should specify the states that are allowed to be activated while the parent state is active.

  • ForbidsConstraint: should specify the states that are forbidden while the parent state is active.

In the following we will create a state machine. Create a project - in the following called MySatellite - and activate the following concepts

  • de.dlr.sc.virsat.model.extension.statemachines

  • de.dlr.sc.virsat.model.extension.ps

according to Activating a Concept.

Step Task Image

1.

First of all, the concepts State Machines and Product Structure need to be activated in the Repository.

AddStateMachineConcept

2.

For the system, create a ConfigurationTree with a ElementConfiguration, and give it the name AOCS (Attitude and Orbit Control System). This shall serve only as an example.

CreatingAOCSElementConfiguration

3.

Now the AOCS shall for example contain components like a Camera as payload, as well as the Thrusters and Reaction Wheels for attitude control purposes.

For this, add three ElementConfiguration elements and give them the following names: CAM, THR, RW.

CreateSubcomponentsOfSystem

4.

Now create a State Machine element for any of the system components. In the following a State Machine is created for the Camera that shall be used in the science phase of the mission for collecting images data.

Now you can add a state machine to the component CAM in the Navigator with ContextState MachinesAdd StateMachine.

CreateCamStateMachine

5.

Having created a State Machine for the camera. Now open the State Machine Diagram Editor in the Navigator with ContextOpen Diagram Editor.

OpenDiagramEditor

6.

The Diagram Editor shall look as shown in the image.

DiagramEditor

7.

Now to add a State (same for other objects in the Diagram Palette, i.e. State, Transition, ForbidsConstraint, …​), left click on the object in the Palette once and then left click again on the position in the diagram where you want to add it.

The state machine diagram for the CAM object shall look as shown in the image.

AddState

8.

After creating a transition connection in the Diagram Editor, you want to create a TransitionTriggerEvent and assign it to the previously created transition.

Go in the Editor using SM instance in the Navigator: ContextOpen Editor or simply by double clicking on the SM instance in the Navigator.

In the Editor if you press [Add TransitionTriggerEvent] button, a new trigger event is created.

Name it under the column Name, and give it a description under the detail.

Open Editor AddTransitionTriggerEvent

9.

Now assign the created trigger event to the Transition you created in the diagram. Under trigger column in the transitions section, you can choose a trigger action from the list as shown in the image.

Note
Transitions can be created or removed in the Diagram Editor, but also manually in the normal Editor.

AssigningTriggers OpenedWizardForTriggerActions

10.

After assigning, go back to the Diagram Editor and update the state machine diagram using the yellow button up right the State Machine block, then you will be able to see the new transition.

UpdateStateMachine

11.

Now having created the various components of the system and described their behavior using state machines, the State Machine for the AOCS system can be created in a newly created ElementConfiguration namely SystemOperation (standing for concept operations). This state machine shall describe the behavior of the whole system.

See Task No.4 “Creating a State Machine”

AddingSystemStateMachine

12.

Open the Diagram Editor and add the following States and Transitions as shown in the image. This shall serve as an example to represent the behavior of the AOCS system.

Note
The green and red arrows shown in the state machine shall represent the AllowsConstraints and ForbidsConstraints respectively. For instance, the thrusters are on when the safe mode of the satellite is active to perform coarse pointing control.
Tip
To use the State Machine of other system components, e.g. the Camera, Reaction Wheels in Main system State Machine, one can just drag and drop them from the Navigator.

AOCSSystemStateMachine AOCSTransitionsAndTriggerEvents

13.

For each section in State Machine concept found in the Editor an excel table with the section instances can be created. This is shown in the following image on the down right part with a button named [Export to Excel].

ExtractingExcelTables

3.2.10. Thermal Concept

The thermal concept allows the user to add thermal properties to the system model. Ultimately, these properties can be used as the basis for a workflow to perform thermal analyses with the FEM tool CalculiX. This is done by exporting the 3D Visualization and the thermal properties, processing them utilizing FreeCAD as preprocessing tool. CalculiX then reads the generated files, creates, and solves, the equation system. Finally, the thermal concept also allows to import some aspects of the result to the system model.

To model all thermal aspects required for the complete workflow follow these steps:

Note
In the following table the word "part" refers to the lowest level instances of each branch of the configuration tree desired to model. This can be subsystem, assembly or component, depending on how detailed the model is supposed to be.
Step Task Image

1.

Create a project and make sure the thermal and Visualization concept are activated.

2.

Now the actual modeling can start. Add a configuration tree and fill it with subsystems/components/…​, depending on how deep the level of detail is supposed to be.

Tip
The overall workflow is rather complex and it might help (and save time) to practice it with a simple model first.

3.

Add a MaterialCollection element in the root directory(TBC). There are two options to fill the Material Collection: Firstly, by creating the material elements manually with a right-click on the MaterialCollection and filling it with the thermal conductivity, the absorption coefficient (in the visible), the emissivity (in the infrared), the heat capacity, and the density.

Secondly, by using the import function. This import function reads a .csv file that is structured as shown in figure X and imports the materials and their properties.

Tip
The exporter works in that way, that it iterates through every single element and checks if a visualization and the thermal properties are defined by the user. Make sure that all elements, and only these elements, intended for the thermal analysis fulfill these two criteria. Also, do not define a visualization/thermal properties on both, subsystem level and component level of the same subsystem, either choose to model the subsystem as an entirety, or the parts of the subsystem. This avoids inconsistencies in the thermal analysis due to duplication and overlapping of parts.

4.

With this being said, add a visualization for each of the desired elements, define the dimensions, and align its position and rotation as desired.

5.

Accordingly, add a ThermalData element, and then, a ThermalElementParameters (TEP might be an own category later) element for each of the parts. This element is very important for setting up the rest of the model and for the simulation itself, so make sure all desired parts have such an element. Fill this element with the required information comprising the initialTemperature (only relevant for dynamic simulations), the powerBalance of the part (meaning the dissipated heat), and finally reference the desired material for the part.

6.

If not already present anyways, create a ThermalControl (or similar name) subsystem in the configuration tree. Even if it is not necessary for modeling physical parts. In this subsystem create a ThermalAnalysis element. This will host a lot of general, analysis related information.

Note
Make sure there is only one of the ThermalAnalysis elements in the tree.

7.

In the ThermalAnalysis element, create an AnalysisType element. This is used to specify some top level information for the analysis. First, the AnalysisType is specified. Here the user can choose between static and transient. A static simulation will result in a steady-state thermal equlibrium result, while the transient simulation refers to a dynamic simulation over a specified time period.

The timeStep defines the time step size for a transient analysis (for static analysis this can be ignored).

The totalTime defines the total simulation time and therefore the total number of time steps (for static analysis this can be ignored)

The includeOrbitRadiation option allows to take into account the thermal influence of the spacecraft’s orbit (for static analysis this can be ignored). For more information refer to the dedicated explanation below this table.

8.

In the ThermalAnalysis element, create a ThermalContacts element. This is where it gets slightly complex. Each contact between two physical elements (check the visualization to identify all contacts) must be considered to obtain a valid simulation result, as thermal contacts usually conduct heat quite effective. In the ThermalContacts element, create one ThermalInterfaceList and one ThermalPortList element.

9.

For each part that has a visualization and ThermalElementParameters, one ThermalPort element must be created. A thermal ports is assigned to its respective part by the reference property. This links to the ThermalElementParameter of the desired part.

Tip
To keep track of all thermal ports it is important to choose a consistent nomenclature such as TP:<NameOfThePart>.

10.

When the thermal ports are created and assigned to the parts, the thermal interfaces are modeled. For this, create one ThermalInterface element for each contact. In this element, two references and two values are set. The references are linked to the involved thermal ports, the thermal contact conductivity, and two mesh sizes. If the mesh sizes are specified (optional) the meshing will be executed considering the specified contact mesh size locally on the contact face. Thus, a finer mesh can be used for these critical areas of heat flow, which increases the validity of the simulation. The value with the suffix "0" again refers to the "master", while the "1" refers to the "slave" component.

Tip
To keep track of all thermal interfaces it is important to choose a consistent nomenclature such as TI:<Part1>_<Part2>
Note
The first thermal port is treated as the "master" contact in the following. This is relevant if the two parts are overlapping, either on purpose or accidentally. In that case the FreeCAD processing script will cut the overlapping volume from the "slave" part, whereas the "master" part will not be touched.
Note
Letting two components overlap on purpose could be used when there is an edge/point contact. CalculiX does not accept such contacts as they have zero contact area. Letting the contacts overlap just slightly will result in a small contact area, allowing the contact to transfer heat. The magnitude of overlap has to be determined manually by evaluating the size of the resulting contact area and tweaking the contact conductivity.

11.

Note
Having specified the contacts is an important step in the workflow. It is also the foundation for assigning face-specific properties. VirSat treats geometries as a whole and does not distinguish between individual faces. To assign properties to faces, a different approach has to be used. For this, a fraction of the subsequent workflow is performed at this stage already

The geometry must be exported (make sure all relevant parts are modeled at this stage) using the CAD Export Wizard. In addition, the contacts need to be exported as well (make sure all contacts for the analysis are defined). This is done with the TBD function.

12.

Open FreeCAD with the VirSat Workbench installed. Switch the view to the VirSat Workbench and press the import json button to import the geometry, then press the "TBD" button. This will execute the geometrical preprocessing of the imported geometrical model. After the preprocessing was executed successfully, new faces (and accordingly, new face numbers) were created. These new face numbers are important as they are the ones, that are used each time a face number is requested in the thermal concept in VirSat (all properties with a name similar to "freeCADFaceNumber").

Note
The face number can be obtained by hovering with the mouse over the respective face in FreeCAD. Keep in mind that the newly created dedicated contact faces are covered by the contacting part and can only be seen if the respective part is hidden. The face number information is exclusively for the user to apply face specific properties (boundary conditions to faces and face specific radiative properties). If these are not relevant for the actual use case, the related steps 11 and 12 can be skipped.
Note
Each time the geometry or the contacts in VirSat are modified, steps 11 & 12 must be executed again, as the modifications might change the resulting face numbers.

13.

Now the rest of the properties can be defined in the VirSat model. In the ThermalAnalysis element from step 6, create a BoundaryConditions element. This element hosts all possible boundary conditions, except the part specific dissipated heat, which was defined before in the part’s thermal properties. The possible boundary conditions to be applied are all optional and only defined, if necessary. These are: Heat flux to a face (due to complications with duplicate assigning of thermal loads, as of now only possible when the orbital thermal radiation option is deactivated), fixed temperature on a face, and fixed temperature on a part.

Heat flux to face: Create a HeatFluxToFace in the BoundaryConditions element. Set the reference to the related part’s TEP element (TBC), specify the freeCADFaceNumber as described before, and then specify the heatFlux (W/m^2).

Fixed temperature on face: Create a TemperatureBoundary element in the BoundaryConditions element. Set the reference to the related part’s TEP element (TBC), set boundaryType to Face, specify the freeCADFaceNumber as described before, and then specify the boundaryTemperature.

Fixed temperature on component: Same as Fixed temperature on face, only choose Volume instead of Face and ignore the freeCADFaceNumber field.

14.

As already indicated before, the workflow allows to set characteristic mesh sizes for components, and even locally for contact faces. The user can set the characteristic mesh sizes for each component individually by creating a MeshSizes element in the ThermalAnalysis element. In the MeshSizes element the individual component’s mesh sizes are created as ComponentMeshSizes. As done before, the reference to the component is set and then the value for the maximumCharacteristicMeshLength is set.

Note
The characteristic mesh length is the maximum length of the mesh element edges in mm.
Note
If set to "0", the characteristic mesh length will be set to an appropriate value automatically.
Tip
As the script used for meshing the model in FreeCAD uses the automatic meshing option to create tetrahedral meshes. The resulting mesh might happen to be not to the user’s satisfaction. In this case, it is also possible to include a custom tetrahedral mesh (see XXX).

15.

If desired, it is possible to to set dedicated radiation properties for individual faces. This can be done for each part by adding a SingleFaceRadiationList to its ThermalData element. For each face of the part that shall have different radiative properties a FaceRadiation is defined by specifying the freeCADFaceNumber as described before, the emissivity of the face (in the IR) and the absorptivity of the face (in the visible). The component’s default radiative properties defined by the part’s material will then be overridden for the specified faces.

The thermal model is now complete. The next part of the workflow is the export of the model, processing it, and executing the thermal simulation. However, first the includeOrbitRadiation option is discussed.

This feature allows to include externally obtained orbital data in the workflow to model the thermal environment in an Earth orbit. A mission analysis tool like STK (Satellite Toolkit) can be used to export the required information into a readable .csv file. There are three main heat sources in Earth orbit: Direct solar irradiation, indirect solar irradiation (Albedo), and Earth infrared radiation. To calculate all three it is necessary to have the following data at each time step: Spacecraft-Sun vector, Sun visibility, Spacecraft-Earth vector, and Sun-Earth vector. This data must be provided in three files. The structure of these files is as follows

File Structure

Sun_Vector.csv

"Time (UTCG)","x (km)","y (km)","z (km)"

<Time1>,<vectorX>,<vectorY>,<vectorZ>

<Time2>,<vectorX>,<vectorY>,<vectorZ>

.

.

.

<TimeN>,<vectorX>,<vectorY>,<vectorZ>

Solar_Intensity.csv

"Time (UTCG)","Intensity"

<Time1>,<SunIntensity(in percent)>

<Time2>,<SunIntensity(in percent)>

.

.

.

<TimeN>,<SunIntensity(in percent)>

Earth_Vector.csv

"Time (UTCG)","x (km)","y (km)","z (km)",Reflection Angle

<Time1>,<vectorX>,<vectorY>,<vectorZ>,<reflection angle>

<Time2>,<vectorX>,<vectorY>,<vectorZ>,<reflection angle>

.

.

.

<TimeN>,<SC-Earth_vectorX>,<SC-Earth_vectorY>,<SC-Earth_vectorZ>,<cosine of reflection angle of sun rays on Earth>

Note
In the table <vectorX> refers to the x component of the vector to Sun/Earth, reflection angle refers to the reflection angle over a light ray originating from sun, reflected on Earth, hitting the Spacecraft.
Note
The resulting albedo load value is only an approximation.

To complete the workflow, the following steps are executed after completing the thermal model in VirSat:

Step Task Image

1.

The whole model is exported from Virtual Satellite using the TBD exporter.

2.

Start FreeCAD and navigate to the VirSat Workbench. Then, use the import json button to import the geometry.

3.

Use the TBD button to execute the script that takes over preprocessing and preparation of the thermal analysis model.

4.

Wait for the script to finish execution. NOTE: If the orbital radiation influences are activated, execution might take time, depending on the number of nodes/elements. The reason being one boolean operation that has to be executed to determine the obstruction of a face. For this reason the execution time of the script quickly rises to hours for significantly more than 5000 generated mesh elements. Automatic mesh size is recommended to obtain a first impression of the number of elements created.

5.

When the script was executed successfully, start CalculiX (e.g. CalculiX Launcher 3.4 for Windows) and choose the main.inp file as main file. Then, execute the simulation.

6.

After successful execution, a main.frd file with the results was generated by CalculiX. To have a visual impression of the results, the graphical postprocessor of CalculiX is recommended.

7.

With the main.frd file in the directory, execute the simulation results importer (TBD) It creates (if not already present) a ThermalAnalysisResults element in the ThermalAnalysis element. In it, a new AnalysisResult is created for each analysis. The importer will obtain the maximum and minimum temperature value of the whole simulation, for every component.

Note
For dynamic analyses the time step where this temperature was achieved is stored.
Note
Make sure that the properties in the AnalysisType were not changed during the workflow, else the importer will misinterpret the output file
Note
The result import function is relatively primitive as of now and is constrained to simple min/max temperature values. To further evolve this workflow, more sophisticated results could be drawn from the result file.

3.3. 3D Visualization

In Virtual Satellite it is possible to add geometric information to the model and visualise it.

Visualization Demo

This section describes how to do it.

Step Task Image

1.

Activate the Visualization concept (see Activating a Concept).

Add Visualization Concept

2.

Now you can add Visualization category to the components in the Navigator with Context  Visualization  Add Visualization.

Add Visualization Category

3.

Double-click this newly created Visualization to open it in the Editor. Here you can pick a shape (e.g. a cylinder or a box) and set various parameters related to the size, position and orientation of the node.

Note
Position and rotation parameters are relative to the center of a parent node (if there is a parent node with Visualization attached). Root components are positioned relative to the origin.
Tip
If you have an STL model of your component, you can choose "GEOMETRY" shape and click Select / Upload File to use it. In this case size parameters will be ignored. Only STL is supported currently.

Visualization Parameters

4.

To see the visualization you need to open the 3D Viewer view Window  Show View › Other › VirSat › 3D Viewer.

Tip
You can use a combination ALT+SHIFT+Q, Q to open a view.
Note
Alternatively you can open the 3D Viewer by switching to the VirSat - Visualization perspective.

3D View

5.

If you want to model a more complex shape (e.g. a thruster with a nozzle), you need to split a component into subcomponents and assign each one a separate Visualization category. In this case you can add a NONE shape to the root of the component to position the whole thing.

3D View

3.3.1. Geometric shapes

Every Visualization node has a shape property defining how the node is rendered. Below is the description of all shape types and their relevant properties.

Shape Size properties Notes

None

-

None shape is not rendered, but can be used for logical grouping of elements. Example: an equipment contains several parts that have individual Visualizations attached. None visualization can be added on the equipment level to control the positioning of the whole equipment (by setting positions and rotations of the None node).

Box

sizeX
sizeY
sizeZ

-

Sphere

radius

-

Cylinder

radius
sizeY

-

Cone

radius
sizeY

-

Geometry

geometryFile

Renders an external STL 3d model. An STL file should be uploaded via geometryFile property. For other shapes this property has no effect. The size of the STL model is taken from the file and cannot be changed in Virtual Satellite.

All shapes can be translated using properties positionX, positionY, positionZ and rotated using properties rotationX, rotationY, rotationZ (relative to the parent Visualization node or the origin).

Properties color and transparency can be set for all shapes except None.

3.3.2. CAD Export/Import

The 3D Visualization can be exported from Virtual Satellite and imported into CAD (computer-aided design)-tools using JSON (JavaScript Object Notation) format. This subsection describes the workflow on the Virtual Satellite side of the corresponding round-trip engineering.

Step Task Image

1.

You start with a simple Repository containing a Product, Configuration and Assembly Tree, with a visualization added to the ST2.

Example trees

2.

To export that visualization, navigate to File→Export…​.

Export

3.

The Export Wizard opens, in which you can select the Cad Export Wizard.

Export Wizard

4.

In the Wizard you have to select the Tree you want to export, e.g. the Configuration Tree StarExplorerConfig. You also have to provide the destination of the exported file.

Tree and destination selection

5.

Finishing the dialog exports all elements of the selected Tree, that contain visualizations, into the JSON output file. In this example only the ST2 got exported because ST1 did not contain a visualization.

Note
The JSON contains Parts, exported from the Product Tree, and Products, exported from the Configuration or Assembly Tree. So Parts contain information about the elements, e.g. their shape, size and color, and Products configuration information, e.g. position and rotation.

JSON output file

Note
The round-trip engineering is driven from the Virtual Satellite side, so that Virtual Satellite can execute all CRUD (Create, Read, Update, Delete) operations, while an external CAD software can only Read and Update existing components.
Note
For the purpose of identification, each element has a corresponding UUID (Universally Unique Identifier).
Step Task Image

1.

You can now modify the generated JSON file using a CAD software, e.g. change the posX of the ST2. Afterwards it can be reimported to update the Virtual Satellite Model.

Changed JSON output file

2.

Similar to exporting you open the Import Wizard.

Import

3.

Then select the Cad Import Wizard.

Import Wizard

4.

In the Wizard, select the Tree to load the JSON file into and the destination of the file.

Tree and destination selection

5.

Finally you can open the ST2 's Visualization to check that its positionX is property updated.

Note
Because of Inheritance (see Extended product structures - Inheritance and Configuration Control) importing a Configuration Tree will also change the corresponding Assembly Tree.

Imported Model changes

3.4. Advanced Modeling

Most users will only require modeling techniques from the section [General Modeling]. However, there may be projects where further extensions or behavior adjustments of Virtual Satellite are desired. This can include adjusting the default equations in concepts, writing additional small programs - Apps - that allow Virtual Satellite to output data for example into Excel. While a common end user may never be exposed to the deeper workings of these functionalities, users administering repositories may find a need for them.

3.4.1. Adjusting Equations

Mathematical dependencies between numeric properties are described by Equations. An equation has on the left-hand side a variable and on the right hand-side a mathematical calculation. Whenever a change in the model occurs, Virtual Satellite re-checks the equations and updates the left-hand side variable according to the result of the calculation of the right-hand side. A variable whose value is determined by an equation is a calculated variable. Such variables are not editable and marked by a calculator symbol Indication for a variable being calculated by VirSat.

The equations in Virtual Satellite are not hard-coded, but explicit parts of the model. They can be freely edited using the Equation Editor. In many cases, editing equations is not necessary since a concept may come with its own default equations model.

Note
Example Equation: Ref: massWithMargin = mass * margin; Here massWithMargin is a calculated variable. Whenever mass or margin change, massWithMargin is recalculated.

In this section you will learn how to:

  • Open the Equation Editor

  • Edit an Equation

  • Create a new equation

An equation can be defined in the Equation Editor. The editor is available in any CategoryAssignment that possesses at least a numeric property. Every equation follows the format TYPE: CALCULATED_VARIABLE = CALCULATION; where

  • TYPE is either Ref or Calc. Ref, short for reference, is used when referencing an element of the data model. Calc, short for intermediate calculation, is used when creating an intermediate variable. The variable is not part of the data model and thus also not persistently stored. This type of equation can be used to simplify equations and remove redundant terms.

  • CALCULATED_VARIABLE is the name of the property that will be calculated. It is also possible to pass a full qualified name to reference non-local properties.

  • CALCULATION is a mathematical expression using operators such as *, +, -, /, sin(…​), cos(…​). Inputs of a calculation are other properties, specified by their name. It is also possible to pass full qualified names to reference non-local properties.

Concepts may also provide customized extensions for the calculation engine. This includes allowing the use of other objects than properties for input and outputs, defining new mathematical functions, and so on.

Equation Editor

The Equation Editor is a textual editor and the main tool for editing equations. In the following, we will modify the equations of the [Product mass summaries] concept to include an additional top-level system margin. You will need a VirSat project (called MySatellite in the following) with the Extended product structures - Inheritance and Configuration Control concept and the [Product mass summaries] concept both activated.

Step Task Image

1.

Create a data model consisting of a ConfigurationTree as the root with two child ElementConfigurations. Attach a MassEquipment to each ElementConfiguration and a MassSummary to the ConfigurationTree.

Setting up a data model with equations

2.

Set the mass value of the first ElementConfiguration to 10 and the mass value of the second ElementConfiguration to 15. Leave the margins at 20.

Setting input values for equations

3.

Save (CTRL+S) and then open the Editor of the MassSummary of ConfigurationTree. The massWithMargin value should show 30. Next open the EquationEditor by pressing the Edit Equations button.

Opening the equation editor

4.

Create a new equation Calc: systemMargin = 0.1. This creates a new intermediate variable called systemMargin with value 0.1. Modify the equation of massWithMargin by adding the factor (1 + systemMargin). After saving (CTRL+S) the value of massWithMargin should update to 33.

Tip
You can also delete equations by removing them in the Equation Editor. This way you can manually override any calculated values.

Editing equations

Aggregation Functions

In addition to the usual mathematical functions with fixed number of inputs, Virtual Satellite supports aggregation functions. Aggregation functions are intended to apply operations such as summing up all elements, calculating the mean, etc. on a set of inputs. The input set can be specified either by explicitly listing all inputs or an input type.

Note
An example use of an aggregation function is the expression summary(AMassParameters.massWithMargins) from the [Product mass summaries] concept, which sums up all massWithMargin values of categories of type AMassParameter.

Calling an aggregation function on N specific number of instances can be achieved via the following syntax:

aggregationFunction { propertyInstanceName1, ..., propertyInstanceNameN }

Alternatively, calling an aggregation function on a instance type achieved via the syntax

aggregationFunction(propertyName, nameFilter, depth)

where

  • nameFilter is optional and filters out all Categories that do not confirm to the nameFilter

  • depth is optional and limits the aggregation depth. The value -1 represents limitless aggregation and is set by default.

Note
depth is defined as the amount of levels where the property or category in question was found.

Concepts may define new aggregation functions as necessary and may also allow other objects than properties to be used as aggregation inputs. By default Virtual Satellite CORE comes with a set of aggregation functions, namely:

summary

summary sums up all elements in the set. Returns 0 for empty sets.

mean

mean computes the average over the set. Returns NaN for empty set.

Max

max computes the maximum value over the set. Returns NaN for empty sets.

Min

min computes the minimum value over the set. Returns NaN for empty sets.

Count

count counts the number of elements in the set. Returns 0 for empty sets.

Calculation Builder

The automatic calculation updates are performed via the Calculation Builder. The builder executes by default whenever there is a change in the data model. Should it be desired for the builder to not execute automatically, it can be turned off by toggling the option Project  Build Automatically. In the same menue, manual builds can also be triggered via Project  Build All.

Just like all other data model changes, the builder is subject to the rights management. Should a value be updated and a calculated variable require an update, which cannot be performed due to lack of rights, a Computed value is out of date warning is issued instead. A proposed update order to resolve these warnings can be obtained from the Domain Round View. The view can be opened via Window  Show View  Other  VirSat  Domain Round. By selecting a project in the Navigator, the view will then show a proposed update order to resolve calculation dependencies.

3.4.2. Using and Developing Apps

In MBSE it is very important not just to model a system, but to also make use of the modeled data. In most cases reasonable Input and Output from and to other sources is required, same as some on-the-fly analysis of the current data. Since it is impossible to foresee all possible use cases, Virtual Satellite provides a generic App Interface based on the Java programming language. The following steps explain how you can activate the Apps and how you can create your first individual program on your data model.

Note
Create an example project (see First Steps) before you continue with this tutorial.
Step Task Image

1.

In the Navigator double click on the Repository to open it in the Editor.

Open the Repository

2.

In the Editor scroll down to the section VirSat Apps. Here you have to press the button Activate/ Update Apps.

Note
Technically the project will be transformed into an eclispe plugin project in the background. This may take a while.

Activating the Apps

3.

After the Apps are activated, press the button Add App to add a new example app.

Add a new example App

4.

Now select the newly created App "AppExample1.java" in the list and press the button Edit App. This will open the the App in an Editor. This example App accesses the repository and prints all units stored in the unit management.

Note
The Apps provide a complete Java in the background. This means you can include any library you like, code your own user Interfaces as you are used to in an eclipse environment.

The App opened in a Java Editor

5.

Back in the Repository Editor you can now execute the App by pressing the Run App button. You have to select the App in the list before.

Tip
You can also execute the App in the editor by the context menu Context  Run As  Java Application or by pressing ALT+SHIFT+X, J.

INFO: You can also execute the App in the Java debugger.

Execute the App

6.

As soon as the App is executed it will create some output in the Console view.

App output in the console view

3.4.3. Developing a Concept

The modular data model allows to develop concepts by yourself. This enables you to add new data into the system engineering process whenever it is needed. Developing a concept can happen in various stages. 1. It is possible to just create new structural elements or categories for modeling using the generic systems engineering language (GSEL) and generate all necessary code with it. 2. It is possible to tweak all the automatically generated code.

Note
Developing the concept is not intended for the standard user. Therefore please consult the Virtual Satellite developers manual for further information.

4. Advanced Functionality

Most of the advanced functionality that is shown here concerns changing settings in the ini file. E.g. it allows to gain super user rights or to activate the OSGI console which is useful for debugging.

Tip
The ini file is an intrinsic feature of Eclipse. If you want to learn more about it and other feature connected to it, search for eclipse.ini in the internet.

4.1. Enforce user rights

By default you open Virtual Satellite with your normal system user name. However, in certain cases you may want to start Virtual Satellite as a different user. This can be done by changing the VirSat4_Core.ini file. Open the file in a text editor and add the parameter -forcedUser <name> as given in the example below.

Note
The user name should be on the next line following -forcedUser line.
Note
Make sure that the -forcedUser is set before the virtual machine arguments in this file.
Warning
Playing around with user rights can easily corrupt your system data. Be sure about what you are doing in case you are using this parameter.
VirSat4_Core.ini
-forcedUser
Mr_Code // (1)
-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834
-console
-consoleLog
-vm // (2)
C:\Program Files\Java\jdk1.8.0_202\bin\javaw.exe
  1. Force Virtual Satellite to start with the user named Mr_Code.

  2. The virtual machine arguments which should be at the end of the file.

4.2. Enforce super user rights

Virtual Satellite allows you to get super user rights. Super user rights actually means that the rights management is turned off. In consequence, Virtual Satellite does not stop you anymore from changing information in case you are not allowed to do this. Gaining super user rights can be done by adding -superUser parameter in the VirSat4_Core.ini file.

Note
Make sure that the -superUser is set before the virtual machine arguments in this file.
Warning
Playing around with super user rights can easily corrupt your system data. Be sure about what you are doing in case you are using this parameter.
VirSat4_Core.ini
-superUser // (1)
-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834
-console
-consoleLog
-vm // (2)
C:\Program Files\Java\jdk1.8.0_202\bin\javaw.exe
  1. Force Virtual Satellite to start with the super user rights.

  2. The virtual machine arguments which should be at the end of the file.

4.3. Equinox OSGI Console

The OSGI console of eclipse can be very helpful in case things do not work as expected. Therefore, it is often activated in Virtual Satellite projects. In case you don’t like it, you can turn it off by removing the parameter -console and -consoleLog from the VirSat4_Core.ini file.

VirSat4_Core.ini
-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834
-console // (1)
-consoleLog // (2)
  1. This parameter is responsible for the interactive OSGI console.

  2. This parameter us responsible for logging into the OSGI console.

Tip
The OSGI console is an intrinsic feature of eclipse. It is very powerful and can help to track to problems. If you want to know more about it, search for eclipse OSGI console in the internet.

Product Version:

{revnumber}

Build Date Qualifier:

{revdate}

Travis CI Job Number:

{buildnr}

Copyright (c) 2008-2019 DLR (German Aerospace Center), Simulation and Software Technology. Lilienthalplatz 7, 38108 Braunschweig, Germany

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/ . A copy of the license is shipped with the Virtual Satellite software product.