Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

embedded_systems:ethercat:troubleshooting:timing_problem [2019-02-12 13:32] – angelegt mgehrig2embedded_systems:ethercat:troubleshooting:timing_problem [2019-02-12 15:19] (aktuell) mgehrig2
Zeile 9: Zeile 9:
 </code> </code>
  
-===== Problem =====+===== Cause ===== 
 +<code> 
 +082039 : DCM Status: ERROR: controller error - synchronisation out of limit (0x981201C2) 
 +</code> 
 + 
 +If the jitter of the Distributed Clock (DC) is too high, this error message is displayed. 
 +If the Linux master synchronizes the clock (busshift-mode), then the master probably has realtime-performance problems. 
 + 
 +<code> 
 +082039 : eUsrJob_ProcessAllRxFrames - not all previously sent frames are received/processed (frame loss)! 
 +082039 : No response on cyclic Ethernet frame 
 +</code> 
 + 
 +The Acontis stack could not receive/send the PDO in time. 
 +The master probably has realtime-performance problems. 
 + 
 + 
 +===== Solutions ===== 
 +==== Use master shift mode ==== 
 +If you use the bus shift mode (default) then the Linux master sets the clock for the DC. 
 +In this case, the DC clock is only as stable as the Linux master. 
 + 
 +However, a slave can also set the clock for the DC. 
 +Since EtherCAT slaves often have hardware clocks, these clocks are often much more stable and accurate. 
 +This mode is called master shift mode. 
 + 
 +To use the master shift mode, add the parameters "''-dcmmode mastershift''" when calling the application. 
 + 
 + 
 +[[embedded_systems:ethercat:understanding_ethercat:understanding_sync_with_dc|Understanding bus/master shift mode]] 
 + 
 + 
 +==== Increase real-time performance ==== 
 +See [[https://wiki.ntb.ch/infoportal/embedded_systems/ethercat/test_and_tune_rt | this instruction]] on how to measure and improve realtime-performance. 
 + 
 + 
 +==== Decrease load ==== 
 +Within a cycle, the system needs to: 
 +  * Send/receive a data frame (PDO) 
 +    * If 50% of the maximum bandwidth is used, at least 50% of the cycle is used to send/receive the EtherCAT frame 
 +  * User application 
 +    * The control application; i.e. EEROS 
 +  * Jitter of the real-time system 
 + 
 +If all this points add up to more than the cycle duration, than the system can not send a frame every cycle. 
 + 
 +You can try to: 
 +  * Send less data over PDOs. 
 +  * Lower the calculation time of your control application. 
 +  * Increase [[https://wiki.ntb.ch/infoportal/embedded_systems/ethercat/test_and_tune_rt |real-time performance]] 
 +  * Increase the cycle time (lower control frequency)