分布式时钟的工作原理
用EtherCAT的分布式时钟(DC)功能使从站设备同步指的是,总线中的第一个DC-从站被定义为基准时钟,EtherCAT主站将基准时钟的时间分配至所有的从站。因此,EtherCAT主站周期性发送一个ARMW命令,以此读取存储在时钟主站的ESC(EtherCAT从站控制器)上适当的寄存器中的总线时间,并将这个值写入DC-从站相应的寄存器中。这些DC从站通过整合在ESC中的一个控制器来更新他们的本地时间。为保证请求的精度(可以接收低于1us的值),特殊从站之间的EtherCAT帧延迟必须得到额外的补偿。 对于每个从站来说,一个帧从发送到接受的这段时间将被测量。然后,根据总线拓扑结构,主站计算从站之间的延迟,并将相应延迟补偿值写入到ESC中的寄存器0x928里。
ESC控制器的DC单元提供两个数字输出信号,SYNC0和SYNC1。频率一般对应于EtherCAT总线时钟的SYNC脉冲通常都是基于总线时间生成的。举个例子:如果EtherCAT主站用1ms发送周期性的I/O数据,SYNC脉冲频率通常也设置为1kHz。这些SYNC信号在从站一侧,一方面是可作为一个数字输出信号(例如要激活从站硬件组件),另一方面作为从站软件中断源。也就是说,很明显的要在SYNC脉冲被释放之前为所有从站提供新的信号。要实现这一目标,新的周期性I/O数据到达和SYNC脉冲之间的相隔时间的必须保证最小化。
主站同步
通常情况下,EtherCAT主站协议栈通过在其控制硬件(例如嵌入式x86PC中的8254计时器)中的硬件计时器来发送循环输出数据。如果系统运行周期为1kHz,那么8254计时器以及负责生成同步脉冲的从站计时器都应设置为1kHz。但8254计时器和从站计时器都不能准确的运行1kHz的周期率。实际上,这两个计时器之间有些偏差,因此,在主站里发送周期性I/O数据和从站中的一系列SYNC脉冲之间可以实现非恒定间隔。为了控制一个定义好的常量值的间隔,EtherCAT主站必须要与DC时钟主站同步(就是主站上的第一个DC从站)。这一机制被称为分布式时钟主站同步(DCM)。
它可以以两种不同的方式实现:
重新调整用来执行EtherCAT主站的硬件中所使用的物理计时器(例如8254定时器)(主站转换);重新调整DC时钟主站的总线时间时间(总线转换)。
DCM控制器周期性计算EtherCAT主站时间和DC时钟主站时间之间的差异。根据设定值(即SYNC脉冲到主站中计时器中断的距离),PI控制器算法计算重新调整的值。当使用"主站转换"时,重新调整值会影响EtherCAT主站的物理计时器(例如8254);而当使用的"总线转换"时,它则会影响DC时钟主站的寄存器0x920。
EtherCAT主站ClassA支持这两种方法(主站转换和总线转换)。
主站与从站的同步是EtherCAT最具挑战性的特点之一。
基于我们的经验,我们会建议客户根据给定的应用程序和硬件使用正确的方法。
DCM主站转换模式
主站控制系统(主机)上的计时器(重载值)是被调整过的。例如,如果主机太快,则会一瞬间增加重载值,然后转换为默认值。硬件接口延迟(计时器api)将自动执行错误补偿,因为系统的时间无法触及,所以我们将从所有的DC从站上获得非常精确且稳定的SYNC0频率。
DCM总线转换模式
调整DC时钟主站上的系统偏移量(STO)寄存器。注意:STO是绝对值且是立即添加到DC时钟主站的系统时间上的,DC从站汇聚于这个时间。可以同步多个EtherCAT总线否则主站计时器的调节是不可能的。缺点:同步中断的微小抖动。