Class A - Master Synchronization (DCM)

主站和从站之间的同步

分布式时钟原理

为了从站设备的同步,EtherCAT的采用了分布式时钟(DC)的特性。
参考时钟被定义为,这个总线中第一个有DC能力的从站的时钟。
参考时钟的时间通过EtherCAT主站分发给所有从站。因此,EtherCAT主站周期发送一个ARMW命令,以便读取存储在适当的寄存器中的相对于ESC(EtherCAT从站控制器)主时钟的总线时间,并将此值写入相应的DC从站寄存器。
通过一个集成在他们ESC上的控制器来给这些DC从站更新他们的本地时间。
另外,为了确保所要求的精度(可以实现小于1us的值),必须补偿EtherCAT在特定从站之间的帧的延迟。
对于每个从站,当帧被发送和它被接收之间的时间将被测量。
然后,根据总线拓扑,主站计算从站之间的延迟,并将相应的延迟补偿值写入ESC的寄存器0x928中。

ESC控制器的DC单元提供两个数字输出信号,SYNCO和SYNC1。
基于总线时间,产生这些同步脉冲,其频率通常与EtherCAT总线时钟相对应。
例如,如果EtherCAT主机以1毫秒的速率发送周期性I/0数据,同步脉冲频率通常也设置为1kHz。
这些同步信号在从站端,一方面可以作为数字输出信号(例如激活从站硬件组件),另一方面作为从站软件的中断源。

很明显,在同步脉冲被释放之前,所有的从站都必须提供新的数据。为了实现这一点,必须保证新的循环l/0数据到达时和同步脉冲之间的延迟达到最小。

Master Synchronization

通常,EtherCAT主站基于控制器硬件中的硬件定时器(例如嵌入式x86 PC中的8254定时器)循环发送I/0数据。
当系统需要以1kHz周期运行时,将8254定时器和负责产生同步脉冲的从站定时器设置为1kHz。
但是8254定时器和从定时器都不会运行在一个确切为1kHz的周期速率。
事实上,这两个定时器之间存在漂移,因此没有恒定的距离发送周期1/0数据在主站和产生同步脉冲在从站可以实现。
为了控制这个距离为一个确定的常数,EtherCAT主站必须与DC时钟主同步(这是总线上第一个具有DC能力的从站)。
这种机制称为分布式时钟主同步(DCM)。

它可以通过两种不同的方式实现:
- 重新调整物理定时器(例如8254定时器),在硬件的EtherCAT主站执行(Master Shift)
- 重新调整分布式时钟主时钟的总线时间(Bus Shift)

DCM控制器循环计算EtherCAT主时间和DC时钟主时间之间的差异。
PI控制器算法根据设置值(这是SYNC脉冲到主机中定时器中断的距离)来计算重新调整值。
当使用“主移位”时,重新调整值会影响EtherCAT主站的物理计时器(例如8254),而当使用“总线移位”时,它会影响DC时钟主站的寄存器0x920。

Class A EtherCAT Master支持两种方法(master shift和bus shift)。
主站与从站的同步是EtherCAT最具挑战性的特性之一。
根据我们的经验,我们将建议客户正确的使用他们的应用程序和硬件。

Blue line: Start of cyclic task (Job-Task) driven by oscillator on master controller

Red line: DC-Sync signal based on System Time driven by oscillator in the slave.
Slave task is scheduled after DC-Sync is raised.

Without synchronizing both times, the EtherCAT frame (process data) may transmitted through the network while the slave task is scheduled.
This will cause the same issues as in free run mode.

  • Outputs (Master to Slave): Slave has no new data in one cycle, or will miss output data
  • Inputs (Slave to Master): Master has no new data, or will miss input data

DCM: Bus Shift Mode (default) Reference Clock controlled by Master/Controller Time

Bus Shift: DC Reference Clock follows the Master Clock/Timer

  • Adjust the Bus Time Register of the DC Reference Clock. The Ref.clock converge to this time.
  • The DC Ref. clocks time (EtherCAT system time) is distributed to the slaves behind the Ref.clock. The slaves will converge to the system time.

DCM: Master Shift Mode Master/Controller Time controlled by Reference Clock

Master Shift: Master Clock/Timer follows the DC Reference Clock

  • The timer frequency on Master controller is adjusted.
    E. g., if the timer is to fast, slow down the timer for one cycle and then switch back to the original frequency.
  • Pro: Reduced DCM controller error
  • Pro: Quality independent from cyclic frame send time jitter
  • Con: Requires enhanced OS-Layer:
    OsHwTimerGetInputFrequency(), OsHwTimerModifyInitialCount()
  • Con: Not available on all operating systems!

DCM Controller Set Value (default) “Controlling the time between cyclic frame and Sync0”

  • Minimum controller error depending on cyclic frame send time jitter
  • Frame send time depends on application execution time
  • App execution time should be nearly constant
  • The DCM controller is using a filter algorithm to deal with frame send time jitter
  • Works fine in most cases

DCM Controller Set Value (enhanced) “Controlling the time between start of cycle and Sync0”

  • Reduced DCM controller error
  • Quality independent from
    cyclic frame send time jitter
  • Requires enhance OS-Layer
  • OsHwTimerGetInputFrequency()
  • OsHwTimerGetCurrentCount()
  • Not available on all operating systems!