User Tools

Site Tools


eeros_architecture:control_system:signals

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:signals [2015/10/14 14:12] grafeeros_architecture:control_system:signals [2021/03/03 08:29] (current) – [Reading from Unconnected Inputs] ursgraf
Line 6: Line 6:
 Each element of a signal is characterized by a value, a high precision timestamp, a name and additional properties, depending on the type of signal, which will provide semantic information. Some examples are dimension (e.g. length, mass, current, etc.), SI-unit (e.g. m, m/s, kg, Nm, A, etc.), reference coordinate system or activation state (enabled/disabled). Other properties could include information about the quality of the signal like noise or quantification which could be used for Kalman filtering. Each element of a signal is characterized by a value, a high precision timestamp, a name and additional properties, depending on the type of signal, which will provide semantic information. Some examples are dimension (e.g. length, mass, current, etc.), SI-unit (e.g. m, m/s, kg, Nm, A, etc.), reference coordinate system or activation state (enabled/disabled). Other properties could include information about the quality of the signal like noise or quantification which could be used for Kalman filtering.
  
-{{ signaluml.png?150 | Signal type with its properties}}+[{{ signaluml.png?150 | //Signal type with its properties//}}]
  
 It's important to note that a signal can carry a single value as well as a vector or matrix of values. For this purpose the field //value// is declared as of type T.  It's important to note that a signal can carry a single value as well as a vector or matrix of values. For this purpose the field //value// is declared as of type T. 
 Signals are used to connect different blocks in the control system and share information between the control system, the sequencer and the safety system.  Signals are used to connect different blocks in the control system and share information between the control system, the sequencer and the safety system. 
  
 +Supported types for signals are
 +  * Arithmetic (int, double ...) 
 +  * Logic (bool)
 +  * Vector (Vector2, Vector3, Vector4)
 +  * Matrix
 +Each signal can be assigned a name and a unit. All dimensions of a signal share the same name and unit.\\
  
-===== Using Signals ===== +As an example we look at a block which does summation. Two signalseach of dimension 3, will be added together
-The example below shows gain block being definedwhere its input and output are set to a two dimensional vector. Its gain is therefore a 2x2-matrix.+
 <code cpp> <code cpp>
- Gain<Vector2, Matrix<2,2>g1({1,2.5,-1,-0.5}); +  Sum<2,Vector3sum; 
-</code>+  sum.setName("adds feedback"); 
 +  sum.getOut().getSignal().setName("control signal"); 
 +</code>  
 +This is shown in the following diagram: 
 +[{{ sumblock.png?300 | //Summation block with threedimensional signals//}}] 
 + 
 +The functions //getIn()// and //getOut()// return an input or output. To access the signals on those in- or outputs, use //getSignal()//.  
 + 
 +===== Timestamp ===== 
 +Every signal carries a timestamp. The timestamp of a signal is usually set in input blocks. Block which read from an external source and deliver this value on a output signal will set its timestamp to the time of the acquisition of the value. \\ 
 +Most blocks will not alter this timestamp. However, blocks which depend on the sampling time such as integrators or differentiators will change the timestamp according to their inner algorithm.   
 + 
 +===== Reading from Unconnected Inputs ===== 
 +If you try to read from an input, which is not connected to an output, a //NotConnectedFault// is thrown. Please make sure that such faults are handled correctly. For an example refer to [[getting_started:tutorials:controlsystem|]].
  
-If a ''Gain'' block is declared with a simple value, a eye matrix with this value is created internally.  
-<code cpp> 
- Gain<Vector2> g1(10); 
-</code> 
  
-In order to access the individual dimensions of a certain signal, use functions like 
-<code cpp> 
- sum.getOut().getValue();  // returns dimension 0 of output   
- sum.getOut().getValue(0);  // returns dimension 0 of output  
- sum.getOut().getValue(2);  // returns dimension 2 of output  
- sum.getIn(1).getValue(2);  // returns dimension 2 of input 1  
-</code>  
  
eeros_architecture/control_system/signals.1444824744.txt.gz · Last modified: 2015/10/14 14:12 by graf