User Tools

Site Tools


eeros_architecture:control_system:time_domains

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:time_domains [2017/03/20 15:04] – [Catching Faults in Time Domains] grafeeros_architecture:control_system:time_domains [2021/05/16 15:27] (current) ursgraf
Line 1: Line 1:
-====== Time domains ======+====== Time Domains ======
 Time domains comprise blocks which run with the same periodicity. Each time such a time domain executes everyone of its blocks runs in a predetermined way. A control system may have one or several time domains running with different periods.  Time domains comprise blocks which run with the same periodicity. Each time such a time domain executes everyone of its blocks runs in a predetermined way. A control system may have one or several time domains running with different periods. 
 [{{ :eeros_architecture:control_system:controlloopwithtwotimedomains.png?500 | //Signal flow for a 1 ms filtered input into a 5 ms loop// }}] [{{ :eeros_architecture:control_system:controlloopwithtwotimedomains.png?500 | //Signal flow for a 1 ms filtered input into a 5 ms loop// }}]
 A time domain must be defined as follows: A time domain must be defined as follows:
 <code cpp> <code cpp>
-  eeros::control::TimeDomain td("td1", 0.01, true);+eeros::control::TimeDomain td("td1", 0.01, true);
 </code> </code>
 The last parameter which is of type boolean indicates whether the time domain has to be run in realtime. After creation you can add blocks to it. Please make sure to add these blocks in the order in which they must be executed. Currently, no reordering of those blocks is done.  The last parameter which is of type boolean indicates whether the time domain has to be run in realtime. After creation you can add blocks to it. Please make sure to add these blocks in the order in which they must be executed. Currently, no reordering of those blocks is done. 
 <code cpp> <code cpp>
-  td.addBlock(&const1); +td.addBlock(const1); 
-  td.addBlock(&gain1);+td.addBlock(gain1);
   ...   ...
 </code> </code>
 Finally, you have to add the time domain to the executor, refer to [[eeros_architecture:control_system:executor|]]. Finally, you have to add the time domain to the executor, refer to [[eeros_architecture:control_system:executor|]].
 +If a block no longer has to run - this could be the case for blocks used solely for initializing - it can be removed with
 +<code cpp>
 +td.removeBlock(const1);
 +</code>
 +
 ===== Time Stamps ===== ===== Time Stamps =====
 Each signals's value will be marked with a timestamp, indicating the exact time corresponding to the value of the represented physical quantity. This is for instance when the value was captured or generated.  Each signals's value will be marked with a timestamp, indicating the exact time corresponding to the value of the represented physical quantity. This is for instance when the value was captured or generated. 
Line 24: Line 29:
  
 ===== Catching Faults in Time Domains ===== ===== Catching Faults in Time Domains =====
-Time domains are responsible to run their blocks in a predetermined way. However, if a block fails to run properly due to a fault within this block the time domain must catch this fault and be able to trigger a safety event. In order to do this you can create a time domain with passing a reference to the safety system as well as reference to the safety event to be triggered, e.g.+Time domains are responsible to run their blocks in a predetermined way. However, if a block fails to run properly due to a fault within this block the time domain must catch this fault and be able to trigger a safety event. In order to do this you can assign a time domain a reference to the safety system together with certain safety event which should be triggered whenever such a fault occurs, e.g.
 <code cpp> <code cpp>
-  eeros::control::TimeDomain td("td1", 0.01, true, &mySafetySys, &mySafetyEvent);+td.registerSafetyEvent(&mySafetySys, &mySafetyEvent);
 </code> </code>
 The safety system will change to a safe level for this condition and might stop the time domain with The safety system will change to a safe level for this condition and might stop the time domain with
 <code cpp> <code cpp>
-  td.stop();+td.stop();
 </code> </code>
 As soon as the faulting condition is amended the time domain can be restarted with As soon as the faulting condition is amended the time domain can be restarted with
 <code cpp> <code cpp>
-  td.start();+td.start();
 </code> </code>
  
 +===== Transitions from one Time Domain to another =====
 +The control system offers a special transition block whenever a signal crosses from one time domain to another. Such a transition block has two different manifestations depending on the two time domains involved.
 +  * Signal passing from slow time domain to fast time domain: In this case the transition block does interpolate the signal in the fast time domain.
 +  * Signal passing from fast time domain to slow time domain: The transition block filters the incoming signal according to a desired timestamp.
 +For further details of the transition block, see [[eeros_architecture:control_system:available_blocks:transition|]].
eeros_architecture/control_system/time_domains.1490018688.txt.gz · Last modified: 2017/03/20 15:04 by graf