EtherCAT 定义了3 种主要的同步模式:
- Free Run(非同步):从站的过程数据处理,由内部事件触发,与主站循环无关。
- SM-Synchronous:从站的过程数据处理,由接收到携带过程数据的周期性数据帧时所产生的硬件中断触发。
- DC-Synchronous:从站的过程数据处理, 由基于分布时钟和系统时间的硬件中断触发
前两种方式不涉及时钟的同步,只要主站周期的发送数据就能正常的工作,第三种DC同步,是三种中最复杂的。
DC同步的参考时钟源选择有三种情况:
- 以主站为参考时钟;
- 以主站为参考时钟,需要在周期性数据帧中包含1个FPWR( 对时命令) 周期性命令,周期的设置从站的时间
- 以第一个带DC的从站为参考时钟;
- 以从站为参考时钟需要需要在周期性数据帧中包含1个FRMW( 对时命令) 周期性命令,周期性的从参考从站读取时间,其它从站写入这个时间,主站根据这个时间来同步主站时间(主站需要一些算法来更新本地时间)
- 以外部时钟为参考时钟;
- 以从站和以外部时钟为参考时钟相类似,目前还没遇到过以外部时钟为参考时钟。
以IgH为例实现从站为参考时钟,控制伺服(IgH给出的demo以主站为参考时钟的)
IGH API