User Tools

Site Tools


eeros_architecture:control_system:available_blocks:switch

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
eeros_architecture:control_system:available_blocks:switch [2019/08/14 10:04] – [Combining] grafeeros_architecture:control_system:available_blocks:switch [2021/07/07 20:09] (current) – [Switch] ursgraf
Line 2: Line 2:
 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. 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.
 <code cpp> <code cpp>
-  Switch<3> sw; +Switch<3> sw; 
-  sw.switchToInput(1);+sw.switchToInput(1);
 </code> </code>
 You can also query the index of the selected input with You can also query the index of the selected input with
 <code cpp> <code cpp>
-  int index = sw.getCurrentInput();+int index = sw.getCurrentInput();
 </code> </code>
  
 +By calling 
 +<code cpp>
 +setActiveLevel(safetySystem, safetyLevel);
 +</code> 
 +the switch will only switch if the current safety level is equal or greater than the safety level set by this method.
 ==== Auto Switching ==== ==== 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 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
 <code cpp> <code cpp>
-  setCondition(T switchLevel, T delta, uint8_t index)+setCondition(T switchLevel, T delta, uint8_t index)
 </code> </code>
 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 ([[tools:matrix:start|]]) you have to keep in mind that the condition for the switching has to be met for each single element of the vector! \\ 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 ([[tools:matrix:start|]]) 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 Before the switching can take place the switch must be armed with
 <code cpp> <code cpp>
-  arm();+arm();
 </code> </code>
 The function The function
 <code cpp> <code cpp>
-  triggered();+triggered();
 </code> </code>
 queries the state of the switch function. It will return ''true'' as soon as the auto switching happened.  queries the state of the switch function. It will return ''true'' as soon as the auto switching happened. 
Line 28: Line 33:
 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. 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.
 <code cpp> <code cpp>
-  registerSafetyEvent(SafetySystem* ss, SafetyEvent* e);+registerSafetyEvent(SafetySystem* ss, SafetyEvent* e);
 </code> </code>
  
Line 34: Line 39:
 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 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
 <code cpp> <code cpp>
-  s1.combine(s2)+s1.combine(s2)
 </code> </code>
 where ''s2'' is the switch whose position will follow the position of ''s1''. You can combine as many switches as you want. 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.1565769878.txt.gz · Last modified: 2019/08/14 10:04 by graf