Real-Time Robotics Framework

Sidebar

getting_started:tutorials:system3

Triggering Safety Event from Control System

In the EEROS library you will find a directory with examples. For this example see SystemTest3.cpp.

Open a shell in the build directory of your EEROS library and run

\$ sudo ./examples/system/systemTest3

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:

Control system of the example

When the system changes into slRampingUp the integrator is enabled. The output of the integrator starts to ramp up. As soon as the signal reaches the upper limit of the signal checker block the safety event seReset is triggered by this block. This causes a restart of the whole sequence.
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 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
cs.checker.registerSafetyEvent(ss, sp.seReset);
cs.checker.setActiveLevel(sp.slRampingUp);

The second line configures the signal checker that it fires only if the active safety level is equal or greater that slRampingUp.