User Tools

Site Tools


tools:logger_cs:start

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
Last revisionBoth sides next revision
tools:logger_cs:start [2017/12/21 13:52] graftools:logger_cs:start [2018/05/31 10:30] – [Log in the Same Task] graf
Line 13: Line 13:
 This will output the output of a chosen block once per second. The lambda function is necessary so that the periodic task knows what to do, though it actually does nothing, as the function is empty. \\ This will output the output of a chosen block once per second. The lambda function is necessary so that the periodic task knows what to do, though it actually does nothing, as the function is empty. \\
 For more complete examples see ''examples/controlsystem/BlockTest2'' and ''examples/controlsystem/BlockTest3''. For more complete examples see ''examples/controlsystem/BlockTest2'' and ''examples/controlsystem/BlockTest3''.
 +
 +
 +===== Log in the Task of the Time Domain =====
 +It is also possible to add the logging to the monitors of one of the currently running task of the control system. This could be done as follows:
 +<code cpp>
 +  double period = 0.001;
 +  eeros:: control::TimeDomain td("time domain CS", period, true);  // time domain for the control system running with 1kHz
 +  eeros::task::Periodic perCS("periodic CS", period, td);      // periodic task running the time domain
 +  perCS.monitors.push_back([&](PeriodicCounter &pc, Logger &log){
 +    static int ticks = 0;
 +    if ((++ticks * period) < 1) return;
 +    ticks = 0;
 +    log.info() << controlSystem.myBlock.getOut().getSignal();
 +  });
 +
 +  // and further down the code
 +  executor.add(perCS);
 +</code>
 +Please note that you usually want the logging to happen at a much smaller frequency than the time domain. For this, you have to reduce this frequency as shown in the example above.
  
 ===== Log in a Subsequent Task ===== ===== Log in a Subsequent Task =====
Line 24: Line 43:
 Now, the logging will be done after the control system task has finished running. Now, the logging will be done after the control system task has finished running.
  
-====== Log in the Same Task ====== 
-It is also possible to add the logging to the monitors of one of the currently running task of the control system. This could be done as follows: 
-<code cpp> 
-  TimeDomain td("time domain CS", 0.001, true);  // time domain for the control system running with 1kHz 
-  Periodic perCS("periodic CS", 0.001, td);      // periodic task running the time domain 
-  eeros::task::Periodic perLog("periodic log", 1, l1); 
-  perLog.monitors.push_back([&](PeriodicCounter &pc, Logger &log){ 
-    log.info() << controlSystem.myBlock.getOut().getSignal(); 
-  }); 
-  
-  // and further down the code 
-  executor.add(perLog); 
-</code> 
tools/logger_cs/start.txt · Last modified: 2018/05/31 10:32 by graf