eeros_architecture:safety_system:properties
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
eeros_architecture:safety_system:properties [2017/04/18 07:35] – [Critical Inputs and Outputs] kalberer | eeros_architecture:safety_system:properties [2023/02/25 07:30] (current) – [Safety Events] ursgraf | ||
---|---|---|---|
Line 35: | Line 35: | ||
<code c> | <code c> | ||
SafetyLevel slOff(" | SafetyLevel slOff(" | ||
- | SafetyLevel slIinitializing(" | + | SafetyLevel slIinitializing(" |
SafetyLevel slRunning(" | SafetyLevel slRunning(" | ||
| | ||
Line 57: | Line 57: | ||
Each event must be defined **kPublicEvent** or **kPrivateEvent**. Private events can only be fired by the safety system itself whereas public events could also be caused by the //Control System// or the // | Each event must be defined **kPublicEvent** or **kPrivateEvent**. Private events can only be fired by the safety system itself whereas public events could also be caused by the //Control System// or the // | ||
- | It is also possible to add an event to many levels. In the following example we add from the level // | + | It is also possible to add an event to many levels. In the following example we add to all levels |
<code c> | <code c> | ||
- | // Add events to multiple levels | + | |
- | addEventToLevelAndAbove(slPowerOn, | + | addEventToLevelAndAbove(slPowerOn, |
</ | </ | ||
+ | Two more functions serve a similar purpose. | ||
+ | <code c> | ||
+ | // Add events to all levels equal or smaller than srcLevel | ||
+ | addEventToLevelAndBelow(srcLevel, | ||
+ | // Add events to all levels in between lowerLevel and upperLevel (including lowerLevel and upperLevel) | ||
+ | addEventToAllLevelsBetween(lowerLevel, | ||
+ | </ | ||
+ | |||
===== Input and Output Actions ===== | ===== Input and Output Actions ===== | ||
Line 69: | Line 77: | ||
Define actions for the safety levels. Each level can cause no or one action. | Define actions for the safety levels. Each level can cause no or one action. | ||
<code cpp> | <code cpp> | ||
- | slOff.setLevelAction([&](SafetyContext* privateContext) { | + | slOff.setLevelAction([this](SafetyContext* privateContext) { |
privateContext-> | privateContext-> | ||
}); | }); | ||
- | ... | ||
</ | </ | ||
The method // | The method // | ||
=== Counter === | === Counter === | ||
- | Each time that the safety system runs in a certain level a counter named '' | + | Each time that the safety system runs in a certain level a counter named '' |
<code cpp> | <code cpp> | ||
- | slRunning.setLevelAction([&](SafetyContext* privateContext) { | + | slRunning.setLevelAction([this,period](SafetyContext* privateContext) { |
if (slRunning.getNofActivations() * period >= 60.0) | if (slRunning.getNofActivations() * period >= 60.0) | ||
privateContext-> | privateContext-> |
eeros_architecture/safety_system/properties.1492493743.txt.gz · Last modified: 2017/04/18 07:35 (external edit)