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/02/27 15:13] – [Input and Output Actions] graf | eeros_architecture:safety_system:properties [2023/02/25 07:30] (current) – [Safety Events] ursgraf | ||
---|---|---|---|
Line 9: | Line 9: | ||
Define critical output signals, get references to them from the HAL and assign them. | Define critical output signals, get references to them from the HAL and assign them. | ||
<code c> | <code c> | ||
- | eeros:: | + | eeros:: |
- | eeros:: | + | eeros:: |
HAL& hal = HAL:: | HAL& hal = HAL:: | ||
- | watchdog = hal.getLogicSystemOutput(" | + | watchdog = hal.getLogicOutput(" |
- | enable0 = hal.getLogicSystemOutput(" | + | enable0 = hal.getLogicOutput(" |
... | ... | ||
criticalOutputs = {watchdog, enable0, ...}; | criticalOutputs = {watchdog, enable0, ...}; | ||
Line 22: | Line 22: | ||
Define critical input signals, get references to them from the HAL and assign them. | Define critical input signals, get references to them from the HAL and assign them. | ||
<code c> | <code c> | ||
- | eeros:: | + | eeros:: |
- | eeros:: | + | eeros:: |
| | ||
- | q0 = hal.getRealSystemInput(" | + | q0 = hal.getScalableInput(" |
- | limitSwitchQ0p = hal.getLogicSystemInput(" | + | limitSwitchQ0p = hal.getLogicInput(" |
... | ... | ||
criticalInputs = {q0, runButton, ...}; | criticalInputs = {q0, runButton, ...}; | ||
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 67: | Line 75: | ||
===== Level Actions ===== | ===== Level Actions ===== | ||
- | * 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. |
- | < | + | < |
- | slOff.setLevelAction([&](SafetyContext* privateContext) { | + | slOff.setLevelAction([this](SafetyContext* privateContext) { |
privateContext-> | privateContext-> | ||
}); | }); | ||
- | ... | ||
</ | </ | ||
- | The method // | + | The method // |
+ | === Counter === | ||
+ | Each time that the safety system runs in a certain level a counter named '' | ||
+ | <code cpp> | ||
+ | slRunning.setLevelAction([this, | ||
+ | if (slRunning.getNofActivations() * period >= 60.0) | ||
+ | privateContext-> | ||
+ | }); | ||
+ | </ | ||
+ | The system will stay for 60 seconds in safety level '' | ||
+ | ===== Entry Level ===== | ||
As a last point, you have to specify with which level the system has to start. | As a last point, you have to specify with which level the system has to start. | ||
<code c> | <code c> |
eeros_architecture/safety_system/properties.1488204794.txt.gz · Last modified: 2017/02/27 15:13 by graf