- 1. Getting Started
- 2. Collaborative work on a shared project
- 3. Modeling with Virtual Satellite
- 3.1. General modeling
- 3.2. Modeling Concepts
- 3.2.1. Activating a Concept
- 3.2.2. Modeling with the concept palette
- 3.2.3. Extended product structures - Inheritance and Configuration Control
- 3.2.4. Equipment cost and cost summaries and cost types collection concept
- 3.2.5. Requirements modeling concept
- 3.2.6. Equipment mass and mass summaries concept
- 3.2.7. Functional Electrical Architecture
- 3.2.8. Product maturity concept
- 3.2.9. State machine concept
- 3.2.10. Thermal Concept
- 3.3. 3D Visualization
- 3.4. Advanced Modeling
- 4. Advanced Functionality
- Legal - License & Copyright
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.
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.
Virtual Satellite is based on Java and Eclipse Technology. It currently supports the following operating system configurations
-
Windows 7 64bit with Java 8 runtime environment
-
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:
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 |
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. |
|
2. |
Store the zip file to the folder of your choice (e.g.: |
|
3. |
Dive into the unzipped sub-folder and Execute the |
|
4. |
Once Virtual Satellite is started it should appear as shown in the image. Now press the link Start modeling now!. |
Done. You installed and successfully started Virtual Satellite.
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 |
|||||
2. |
The OSGI Console will open up and a Splash screen will be displayed showing the start-up progress.
|
|||||
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.
|
|||||
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.
|
|||||
5. |
The three important views of the perspective are:
|
|||||
6. |
Open the dialog for creating a new project by pressing the marked icon in the navigator.
|
|||||
7. |
In the New Project dialog type in a name for your project (e.g. |
|||||
8. |
Now open the Repository from the Navigator view by double-clicking MySatellite › 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. |
|||||
10. |
Select the following two Concepts in the dialog by ticking the check-box. Then press OK to activate the Concepts.
|
|||||
11. |
Go back to the Navigator view and right-click on Repository. Now select Context › Product Structures › Add ProductTree. |
|||||
12. |
Now right-click on the newly generated item PT: ProductTree. Now select Context › Product Structures › Add ProductTreeDomain. |
|||||
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.
|
|||||
14. |
Create an Element Definition in the PTD: AOCS similar as in the steps before. Name it
|
|||||
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.
|
|||||
16. |
In the editor scroll-down to Section for: Maturity. Click into the upper table to change the level Enum Property to
|
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.
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.
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.
First of all, you need to install an SVN connector.
Step | Task | Image | ||
---|---|---|---|---|
1. |
Open from the main menu Window › Preferences. |
|||
2. |
in the preference dialog navigate to Team › SVN, open the tab SVN Connector and press Get 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.
|
After the restart you can share your project.
Step | Task | Image | ||
---|---|---|---|---|
1. |
Open the Project Explorer tab in the Navigator view. |
|||
2. |
In the context menu of your project select Context › Team › Share Project…. |
|||
3. |
In the Share Project Wizard enter the desired URL in your SVN repository, provide credentials for SVN and press Finish.
|
|||
4. |
Next you will see a commit dialog where you can optionally write a commit message. Press OK to commit your project to SVN. |
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.
Step | Task | Image | ||
---|---|---|---|---|
1. |
Click on the Open Perspective button in the top right corner and open the SVN Repository Exploring perspective. |
|||
2. |
In the SVN Repositories view click New Repository Location and enter the URL of your project and your SVN credentials. |
|||
3. |
Press Context › Check Out on your repository.
|
|||
4. |
Go back to the VirSat - Core perspective, and in the Navigator view you will see a project that you just checked out. |
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.
|
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".
|
|||
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. |
|||
3. |
Add the git remote URL and insert your credentials. Then click [next] |
|||
4. |
Select synchronisation of all branches by clicking [next] again. |
|||
5. |
Select the file location for the git repository on your local computer. Then click [Finish] |
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. |
|
2. |
In the context menu of your project select Context › Team › Share Project…. |
|
3. |
In the Share Project Wizard select GIT and click [Next]. |
|
4. |
On the next page select the repository you cloned before and click [Finish]. |
|
5. |
Next you will see a commit dialog where you can write a commit message. Press OK to commit your project to git. |
Now your project is connected to a git repository and you can Commit and Update it (see Updating and committing a git project).
Step | Task | Image | ||
---|---|---|---|---|
1. |
Open the git perspective by selecting [Window → Perspective → Open Perspective → Other] from the menu. In the dialog both select "Git".
|
|||
2. |
In the "Git Repositories" view on the left, click the button with the green arrow to clone an existing git repository. |
|||
3. |
Add the git remote URL and insert your credentials. Then click [next] |
|||
4. |
Select synchronisation of all branches by clicking [next] again. |
|||
5. |
Select the file location for the git repository on your local computer. Then click [Finish] |
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" |
|
2. |
Select the desired projects and press [Finish]. |
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).
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.
|
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.
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. |
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. |
|||
2. |
Press the button Add Discipline to insert a new Discipline called New Discipline and that is initially associated with your own user name.
|
|||
3. |
Select the newly created Discipline in the Discipline Name column and change it to |
|||
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.
|
|||
5. |
All editable fields will be no longer be editable and shown as greyed out.
|
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.
|
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
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.
NoteAn 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.
NoteAn 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.
NoteAn 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.
NoteAn 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.
NoteAn 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.
NoteAn 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. |
|
2. |
Scroll to the Quantity Kind Management Section and press the Add Quantity Kind button. |
|
3. |
Select the QUDV Simple Quantity Kind Wizard option in the Available wizards drop-down list. Then press Next. |
|
4. |
Set the name to |
|
5. |
Scroll to the Unit Management Section and press the Add Unit button. |
|
6. |
Select the QUDV Simple Unit Wizard option in the Available wizards drop-down list. Then press Next. |
|
7. |
Set the name to |
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.
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. |
|
2. |
Tick the checkbox for the Unit Management model you wish to export. Then select an export destination by pressing Browse. Finally press Finish. |
|
3. |
Open the QUDV Import Wizard by selecting File › Import and choosing QUDV Import Wizard from the VirSat category. Then select Next. |
|
4. |
Select an import destination by pressing Browse. Tick the checkbox for the QUDV model you wish to import. Then press Next. |
|
5. |
Tick the checkbox for the QUDV model you wish to overwrite. Finally press Finish. |
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. |
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. |
|
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. |
|
3. |
Select the Concept to be activated and press the OK button. |
The concept is now activated.
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. |
|||||
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. |
|||||
3. |
From the concept section in the palette you can select concept elements and then drag them into the navigator section. |
|||||
4. |
Drop the element at the desired location in the system model.
|
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:
-
They are intended to help with the engineering process.
-
They are intended to help with configuration control issues.
-
They should help to avoid data redundancies by inheritance mechanisms.
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. |
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.
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:
-
de.dlr.sc.virsat.model.extension.ps
- The extended product structures concept -
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.
First the product structures have to be set up. Follow the given steps:
Step | Task | Image | ||
---|---|---|---|---|
1. |
Model the Product Tree:
Your Product Tree should now look like the one in the image.
|
|||
2. |
Model the Configuration Tree using the Wizard:
The Wizard should look like this. |
|||
3. |
Finally create the Configuration Tree by pressing the Finish button in the Wizard. The Navigator will show up like this.
|
|||
4. |
Now, model the Assembly Trees using the Wizard:
Repeat the steps to create the second Assembly Tree and call it |
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.
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:
After saving the Mass Equipment will appear on the star trackers in the Configuration Tree and Assembly Trees as well.
|
|||
2. |
Add some weight to the star tracker:
The mass of 1.5kg now gets propagated to all inheriting star trackers.
|
|||
3. |
Add a Mass Summary to the Configuration Tree and inspect it in one of the assemblies:
Inspect how the summary of the Assembly Tree is affected because the mass of the star tracker changes. |
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
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. |
|||||
2. |
Now the
The
|
|||||
3. |
Now the
|
|||||
4. |
It is time to plug the equipment from the Product Storage into the Assembly Trees.
|
|||||
5. |
Now the changes can be observed in the
You can now see the impact of the star trackers from the |
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.
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
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 |
|
2. |
To export that CostTypeCollection or CostEquipment, navigate to File→Export…. |
|
3. |
The Export Wizard opens, in which you can select the Excel Export Wizard. |
|
4. |
In the Wizard you have to select the -Cost Type Collection- or Tree you want to export,
e.g. the ProductTreeDomain |
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). |
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.
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.
Step | Task | Image | ||||
---|---|---|---|---|---|---|
1. |
Create a RequirementsConfigurationCollection element directly in the Virtual Satellite Repository.
Add a RequirementsConfiguration under the collection.
Double-click the new configuration element to open its editor. Add a new requirement type. |
|||||
2. |
Specify a name for the new requirement type and add attributes in the dialog box. |
Step | Task | Image | ||
---|---|---|---|---|
1. |
Go to the model location where you want to add requirements.
At the desired location create a RequirementSpecification. |
|||
2. |
Double-click the specification element to open its editor. Add requirements by using the button |
|||
3. |
When a new requirement is added, the editor asks of which type it needs to be:
|
|||
4. |
After a requirement of the selected type is added, its values can be added. |
|||
5. |
It is also possible to create hierarchies of requirements.
To do that, create a requirement group by clicking the button |
|||
6. |
To create requirements within a group click on the button |
To integrate requirements management into the model-based systems engineering process, Virtual Satellite supports importing requirements from external tools.
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 |
|||
2. |
Select |
|||
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]. |
|||
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.
|
|||
5. |
Then select the RequirementSpecification in which the requirements should be imported to. |
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.
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. |
|
2. |
On the next page, map the columns of the CSV-File to the attributes of the existing requirement type. |
First, export requirements from Doors:
Step | Task | Image | ||
---|---|---|---|---|
1. |
Configure the ReqIF export in DOORs. For that you need to manage the project properties. |
|||
2. |
Create a new ReqIF definition that contains the configuration for your ReqIF file to export. |
|||
3. |
Add specifications to the ReqIF file which shall be exported. |
|||
4. |
Do the export.
|
Import the Requirements in Virtual Satellite:
Step | Task | Image | ||
---|---|---|---|---|
1. |
Select |
|||
2. |
Select |
|||
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) |
|||
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.
|
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:
To do a re-import simply select the existing import configuration:
Step | Task | Image | ||
---|---|---|---|---|
1. |
Select |
|||
2. |
Select |
|||
3. |
Select the ReqIF file to be imported and the existing import configuration.
|
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.
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. |
|
2. |
Open the VerificationConfiguration by double-clicking it in the navigator and use the |
|
3. |
Configure the new verification type by specifying a name, description and what kind of verification it is. |
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.
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 |
|||||||
2. |
Add verification methods in the dedicated editor sections of the requirement. One requirement can also have multiple verification methods.
|
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. |
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:
Note
|
The model element referenced in the trace link is verified, so no need to specify this here. |
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 is0
and the unit iskg
. -
margin
describes the margin that should be taken. The default value is20
measured in%
. -
massWithMargin
is a calculated property describing the mass with the margin and is defined asmass * (1 + margin)
. The default unit iskg
. -
massMargin
is a the mass margin and is defined asmassWithMargin - mass
. Default unit iskg
.
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 iskg
. -
massWithMargin
is a calulcated property summing up over all masses with margin contained in the sub-tree. The default unit iskg
. -
massMargin
is a calculated property defined asmassWithMargin - mass
. The default unit iskg
. -
margin
is a calculated property giving the average margin and is defined asmasMargin / 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. |
|
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. |
|
3. |
Set the mass of ElementConfiguration1 to |
|
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. |
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. A type can be created by clicking with the right mouse on the InterfaceTypeCollection and selecting Context › Functional › Electrical Architecture › Add 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.
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:
Additionally it is possible to add an Interface as described in the following subsection.
Step | Task | Image |
---|---|---|
1. |
Click on the documents folder in the ConfigurationTree. |
|
2. |
Click on the new elements symbol. |
|
3. |
Choose Context › VirSat › Virsat Diagram. |
|
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. |
The properties of the Interface and the InterfaceType can be imported and exported from an excel spreadsheet.
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). |
|
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. |
|
3. |
Set the maturity value of the element from the dropdown box. |
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.
Elements can be collapsed or expanded and the values can be exported to Excel.
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. |
|||||
2. |
For the system, create a ConfigurationTree with a ElementConfiguration, and give it the name |
|||||
3. |
Now the For this, add three ElementConfiguration elements and give them the following names: |
|||||
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 |
|||||
5. |
Having created a State Machine for the camera. Now open the State Machine Diagram Editor in the Navigator with |
|||||
6. |
The Diagram Editor shall look as shown in the image. |
|||||
7. |
Now to add a State (same for other objects in the Diagram Palette, i.e. The state machine diagram for the |
|||||
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: In the Editor if you press [Add TransitionTriggerEvent] button, a new trigger event is created. Name it under the column |
|||||
9. |
Now assign the created trigger event to the
|
|||||
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. |
|||||
11. |
Now having created the various components of the system and described their behavior using state machines, the State Machine for the See Task No.4 “Creating a State Machine” |
|||||
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
|
|||||
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]. |
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.
|
|||||||
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. |
|||||||
|
||||||||
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
|
|||||||
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 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.
|
|||||||
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.
|
|||||||
11. |
The geometry must be exported (make sure all relevant parts are modeled at this stage) using the |
|||||||
12. |
Open FreeCAD with the
|
|||||||
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 Fixed temperature on component: Same as Fixed temperature on face, only choose |
|||||||
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.
|
|||||||
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 |
---|---|
|
"Time (UTCG)","x (km)","y (km)","z (km)" <Time1>,<vectorX>,<vectorY>,<vectorZ> <Time2>,<vectorX>,<vectorY>,<vectorZ> . . . <TimeN>,<vectorX>,<vectorY>,<vectorZ> |
|
"Time (UTCG)","Intensity" <Time1>,<SunIntensity(in percent)> <Time2>,<SunIntensity(in percent)> . . . <TimeN>,<SunIntensity(in percent)> |
|
"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 |
|||||||
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.
|
In Virtual Satellite it is possible to add geometric information to the model and visualise it.
This section describes how to do it.
Step | Task | Image | ||||
---|---|---|---|---|---|---|
1. |
Activate the Visualization concept (see Activating a Concept). |
|||||
2. |
Now you can add Visualization category to the components in the Navigator with Context › Visualization › Add Visualization. |
|||||
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.
|
|||||
4. |
To see the visualization you need to open the 3D Viewer view Window › Show View › Other › VirSat › 3D Viewer.
|
|||||
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. |
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 |
- |
Sphere |
radius |
- |
Cylinder |
radius |
- |
Cone |
radius |
- |
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.
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 |
|||
2. |
To export that visualization, navigate to File→Export…. |
|||
3. |
The Export Wizard opens, in which you can select the Cad Export Wizard. |
|||
4. |
In the Wizard you have to select the Tree you want to export, e.g. the Configuration Tree |
|||
5. |
Finishing the dialog exports all elements of the selected Tree, that contain visualizations, into the JSON output file.
In this example only the
|
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 |
|||
2. |
Similar to exporting you open the Import Wizard. |
|||
3. |
Then select the Cad Import Wizard. |
|||
4. |
In the Wizard, select the Tree to load the JSON file into and the destination of the file. |
|||
5. |
Finally you can open the
|
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.
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 .
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 eitherRef
orCalc
.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.
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. |
|||
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. |
|||
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. |
|||
4. |
Create a new equation
|
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.
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.
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. |
|||
2. |
In the Editor scroll down to the section VirSat Apps. Here you have to press the button Activate/ Update Apps.
|
|||
3. |
After the Apps are activated, press the button Add App to 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.
|
|||
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.
INFO: You can also execute the App in the Java debugger. |
|||
6. |
As soon as the App is executed it will create some output in the Console view. |
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. |
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.
|
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. |
-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
-
Force Virtual Satellite to start with the user named
Mr_Code
. -
The virtual machine arguments which should be at the end of the file.
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. |
-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
-
Force Virtual Satellite to start with the super user rights.
-
The virtual machine arguments which should be at the end of the file.
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.
-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)
-
This parameter is responsible for the interactive OSGI console.
-
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.