1、理论
EtherCAT 定 义 了 3 种 主 要 的 同 步 模 式:
1、Free Run (非同步): 从站的过程数据处理, 由内部事件触发, 与主站循环无关
2、SM-Synchronous: 从站的过程数据处理, 由接收到携带过程数据的周期性数据帧时所
产生的硬件中断触发.
3、DC-Synchronous: 从站的过程数据处理, 由基于分布时钟和系统时间的硬件中断触发
前两种方式不涉及时钟的同步,只要主站周期的发送数据就能正常的工作,不是我们主要研究的内容,我们主要研究第三种DC同步,也是三种中最难和最复杂的。
DC同步的参考时钟源选择也有三种情况:1. 以主站为参考时钟;2. 以第一个带DC的从站为参考时钟; 3. 以外部时钟为参考时钟;
- 以主站为参考时钟,需要在周期性数据帧中包含1个FPWR( 对时命令) 周期性命令,周期的设置从站的时间
- 以从站和以外部时钟为参考时钟相类似,(目前还没遇到过以外部时钟为参考时钟),以从站为参考时钟需要需要在周期性数据帧中包含1个FRMW( 对时命令) 周期性命令,周期性的从参考从站读取时间,其它从站写入这个时间,主站根据这个时间来同步主站时间(主站需要一些算法来更新本地时间)
2、实践
以IgH为例实现从站为参考时钟,控制伺服(IgH给出的demo以主站为参考时钟的)
伺服:清能德创RC2
选择第一个从站为参考时钟
设置shift time为周期的一半(周期为4ms shift time为2ms)
图中监视的数据可以看到和设置的shift time 2ms有25us的延迟,这个延迟是发送函数执行数据处理到数据报文发送出来的延迟,是正常现象。
3、总结
- 以主站为参考时钟的优点是简单,容易实现,缺点是时钟抖动大,会造成从站同步困难(有可能会造成从站PLL ERROR),由上面监视图也可以看出,在数据处理发送这段程序执行会有一定时间抖动,这个抖动会增大主站和从站之前的时间抖动
- 以从站为参考时钟的优点是时钟同步快,从站之前的时钟抖动很小,因为从站之间报文的转发速度非常快,抖动基本可以忽略不记,以从站为参考时钟的难点是需要主站实现一套算法来跟随从站实时调整主站的本地时钟,来达到和从站同步。如果主站和从站不同步会造成SM2同步时间不稳定,如果SM2有丢失同样会造成PLL ERROR