This is an old revision of the document!
Practical Problems
Every EEROS system consists of a control system, a safety system, and a sequencer. In order to guarantee maximum stability we strongly recommend that you adhere to a strict set of design rules as given below.
Do's
Don'ts
Stumbling Blocks
Trigger Safety Event from Control System
It is not advisable to use the safety system to check signals of the control system. This causes unnecessary confusion and blows up the safety system. Rather insert a Signal Checker into your control system and let it trigger a safety event from there.
Avoid Hidden States in the Safety System
It might be tempting to define elaborate actions in a certain safety level. However, in order to keep the safety system clean and simple avoid such practises. Do not define different states in a safety level. If you need to stay a certain amount of time in a safety level use the field nofActivations
as described in Counter. As soon as you want to model a more complex behaviour use a Sequence.
Handle Faults in the Control System
input not connected, forget to connect nan initial signals = nan, forget to addBlock remove block
Remove Blocks when no longer used
Blocks have to be added to a time domain and will then be run by this. If you have blocks which are used only for a certain task such as initialization, you can remove them after this task has finished in order to safe processing power, see Time Domains.
Switch Block Switches Automatically
There are cases were a switch block has to switch to a certain input under given conditions. While it might be possible to use the safety system to check this condition it might be preferable if the switch block itself switches when a certain condition is met. To use the sequencer for this purpose is generally not advisable as realtime cannot be met there.
For further information refer to Switch or check the example in Control System Containing Switch Blocks .
Block with Parameters
Situation: inner states of blocks can be changed only through signals or getter / setter methods. How to implement a slowly changing inertia matrix? You do not want to calculate this matrix out of regular signals with full speed. Solution: use slow time domain for this purpose and change …
How to Stop a System with CTRL-C
How to interact between Sequencer and Control System
Seq soll signale in CS setzen (const) oder lesen
Comparisons of Safety Level do not Work
addLevel forgotten