User Tools

Site Tools


eeros_architecture:control_system:available_blocks:switch

This is an old revision of the document!


Switch

A switch block allows to select one of several input signals to write to its output. The code below shows a switch with 3 inputs where the second input is selected.

  Switch<3> sw;
  sw.switchToInput(1);

You can also query the index of the selected input with

  int index = sw.getCurrentInput();

Auto Switching

It is possible to configure a switch in such a way, that if the selected input reaches a given level within a small margin the switch does switch automatically. For this purpose you have to specify a condition with

  setCondition(T switchLevel, T delta, uint8_t index)

where switchlevel is the level the switch has to reach within the margin delta. index is the new index of the input. As soon as the signal type of the input is no longer the default type (double) but, for instance, a vector (Vectors and Matrices) you have to keep in mind that the condition for the switching has to be met for each single element of the vector!
Before the switching can take place the switch must be armed with

  arm();

The function

  triggered();

queries the state of the switch function. It will return true as soon as the auto switching happened.
The switching might lead to a change in the safety level. In order to be able to trigger a safety event you have to register such an event beforehand.

  registerSafetyEvent(SafetySystem* ss, SafetyEvent* e);

Combining

Switched can be combined. If switch 1 is combined with switch 2 and switch one changes its position then switch 2 will simultaneously change its position as well. To combine switches you have to call

  s1.connect(s2)

where s2 is the switch whose position will follow the position of s1. You can combine as many switches as you want.

eeros_architecture/control_system/available_blocks/switch.1553765591.txt.gz · Last modified: 2019/03/28 10:33 by graf