User Tools

Site Tools


getting_started:tutorials:system3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
getting_started:tutorials:system3 [2020/12/03 09:13] ursgrafgetting_started:tutorials:system3 [2026/04/12 16:00] (current) ursgraf
Line 1: Line 1:
 ====== Triggering Safety Event from Control System ====== ====== Triggering Safety Event from Control System ======
  
-In the EEROS library you will find a directory with examples. Open a shell in the build directory of your EEROS library and run +In the EEROS library you will find a directory with examples. For this example see [[https://github.com/eeros-project/eeros-framework/blob/master/examples/system/SystemTest3.cpp|SystemTest3.cpp]].  
 + 
 +Open a shell in the build directory of your EEROS library and run 
 <code> <code>
-sudo ./examples/system/systemTest3+$ ./examples/system/systemTest3
 </code> </code>
-IMPORTANT You have to run a program using real time threads with root privileges. We do not use the simulator in this example, hence there is no need to set the library path.  
  
 The example comprises a safety system with only two safety levels and two safety events. The system will start in the safety level ''slStart''. It will stay there for three seconds after which a safety event is triggered which causes a level change to ''slRampingUp''. The control system for this example consists of three block as shown below: [{{ .:safetysystemtest2.png?500 | //Control system of the example//}}] The example comprises a safety system with only two safety levels and two safety events. The system will start in the safety level ''slStart''. It will stay there for three seconds after which a safety event is triggered which causes a level change to ''slRampingUp''. The control system for this example consists of three block as shown below: [{{ .:safetysystemtest2.png?500 | //Control system of the example//}}]
Line 11: Line 12:
 Pay attention to the following points: Pay attention to the following points:
   * The time domain of the control system is run by a periodic object. A lambda function serves as monitor function of this periodic. It outputs the integrator signal once every second.    * The time domain of the control system is run by a periodic object. A lambda function serves as monitor function of this periodic. It outputs the integrator signal once every second. 
-  * The safety properties and the control system are defined in separate classes. The safety system needs a reference to the control system in order to start the integrator or to reset the signal checker. On the other side the control system uses a reference to the safety system to allow its signal checker to trigger a safety event. After creating both control and safety system, the proper safety event must be registered for the check block in the control system with <code cpp>cs.checker.registerSafetyEvent(ss, sp.seReset); \\ cs.checker.setActiveLevel(sp.slRampingUp);</code> The second line configures the signal +  * The safety properties and the control system are defined in separate classes. The safety system needs a reference to the control system in order to start the integrator or to reset the signal checker. On the other side the control system uses a reference to the safety system to allow its signal checker to trigger a safety event. After creating both control and safety system, the proper safety event must be registered for the check block in the control system with <code cpp>cs.checker.registerSafetyEvent(ss, sp.seReset);  
 +cs.checker.setActiveLevel(sp.slRampingUp);</code> The second line configures the signal checker that it fires only if the active safety level is equal or greater that ''slRampingUp''.
  
getting_started/tutorials/system3.1606983194.txt.gz · Last modified: by ursgraf