分布时钟机制使所有的从站都同步于一个参考时钟。主站连接的第一个具有分布时钟
功能的从站作为参考时钟,以参考时钟来同步其他设备和主站的从时钟。为了实现精确的
时钟同步控制,必须测量和计算数据传输延时和本地时钟偏移,并补偿本地时钟的漂移。同步时钟所涉及到如下6 个的时间概念。
- t_sys: 系统时钟,32/64位,32位表示4.2S。64位表示2000年一月一日零点开始。单位均为纳秒。分布时钟的最终目的就是所有主从的系统时钟同步
- t_ref:一般为第一个从站提供的时钟,为分布时钟系统内基准时钟。
- t_master:主站时钟,在DC系统中作为从时钟被同步,且在初始化阶段可以按照系统时间的格式发给基准时钟从站,使整个分布时钟系统使用系统时钟计时:t_sys_ref.
- t_local:从站本地时钟。每个从站自己的本地时钟
t_offset:初始偏移量。每个从站启动时间点不同,带来的时钟初始偏差。
t_drift:时钟漂移。时钟源,温漂带来的时钟漂移。初始误差很小,但是有累计误差
- t_sys_local:本地系统时钟。DC同步后时钟,所有主从运行在此时钟下
- t_delay:信号传输延时
DC同步最终目的为:t_sys_ref = t_sys_local。
图3.1 帧传播示意
T1:帧从主站传到第一个从站的时间点
T2(n):帧从主站传到第n个从站的时间点
T3(n):帧从主站传出,转完一圈后回传到第n个从站的时间点
T4:帧从主站传出,转完一圈回传到第一个从站的时间点
假设线缆延时均匀,并且所有从站的处理和转发延时都一样,可得出:
主站读取从站保存的时间值, 使用公式( 3-1) 计算各个从站的传输延时T_delay(n),并写入到各个从站中;为了得到准确的传输延时,主站可以多次测量,然后求平均值; 在初始化后的运行中也可以随时测量传输延时,以补偿环境变化对传输延时的影响。
主站由公式( 3-2) 计算出初始偏移量T_offset(n),并写入各个从站。初始偏移量只用于对从时钟的粗略同步且只需要测量一次。
每个设备的本地时钟是自由运行的,会与参考时钟产生漂移。为了使所有设备都以相同的绝对系统时间运行,主站计算参考时钟与每个从站设备时钟之间的偏移T_offset(n) ,并写入从站,以便计算从时钟的本地系统时间。利用T_offset(n)可以在不改变自由运行的本地时钟的情况下实现时钟同步。每个DC从站使用自己的本地时间t_local(n)和本地偏移量T_offset(n)。通过公式( 3-3) 计算它的本地系统时间副本.
根据公式( 3-3) 计算得到本地系统时间t_sys_local(n)。根据接收到的参考时钟
系统时间t_sys_ref,并利用本地保存的传输延时T_delay(n),计算得到本地时钟漂移量t:
如果是正数,表示本地时钟运行比参考时钟快,必须减慢运行。如果是负数,表示本地时钟运行比参考时钟慢,必须加快运行。时间控制环路调整本地时钟的运行速度。正常情况下, ESC 控制本地时间每10 ns 增加10 个单位。当t>0 时,则每10 ns 增加9 ,当t<0时,则增加11,以实现时钟漂移补偿。
在实际自动化控制系统中, 应用程序之间通常有两种数据交换形式: 时间关键和非时间关键。时间关键表示特定的动作必须在确定的时间窗口内完成。如果不能在要求的时间窗口内完成通信,则有可能引起控制失效。时间关键的数据通常周期性发送,称为周期性过程数据通信。非时间关键数据可以非周期性发送,在EtheCAT 中采用非周期性邮箱( mailbox) 数据通信。
周期性过程数据通信通常使用FMMU进行逻辑寻址,主站可以使用逻辑读、写或读写命令同时操作多个从站。在周期性数据通信模式下,主站和从站有多种同步运行模式。在这里只描述运动控制用到的DC同步事件
名词解析
- Output Valid : 输出有效,表示从站将数据帧中对应数据从SM通道上下载下来的一个过程。
- Input Latch:输入锁存,锁存信号LATCH0/1用于给外部信号打入时间戳,DC模式下一般用于从站锁存主站数据帧到达的时间戳,然后让主站取走进行事件同步计算
- (Output)Shift Time:指主站发送数据帧的起始时间到从站Syn0事件触发之间的事件间隔。
- (Input)Shift Time:只对输入模块有效,表示输入有效信号。指Sync1事件信号,用于设置input lacth触发信号。
- SM Event:Frame数据帧到达从站后会触发SM Event事件信号
- Sync0 Event:同步时间信号,最常用的同步信号,由DC产生,固定周期触发
- Sync1 Event:指Input Latch输入锁存的一个事件触发信号,不独立存在,通常在Sync0后整数倍周期触发。
图4.1 DC事件同步机制
- 此模式使用了SM Event事件信号和Sync0 Event事件信号,只要当数据帧Frame到达从站的时候都会触发对应的SM Event事件信号
- 当对应的SM Event事件信号触发后,从站会进入到中断服务例程进行数据的处理(即从Frame中取出对应的所需数据进行计算,然后复制到SM对应的用户区域,等待Sync0信号触发后,取走)可以看到由于SM中断中已经完成了前期的数据处理,当Sync0同步中断触发时,就只需要很短的一段Output Delay Time,马上就进入到Valid状态
图4-2 DC模式的时序分析
- 当数据帧Frame依次到达每一个从站的时候,Ethercat的机制会触发SM Event事件信号。
- 然后从站会把数据帧上从站所需要的数据进行计算,并复制到SM通道上,然后进行SM Event中断事件恢复
- 主程序等待一个DC Sync Signal同步事件中断信号(Sync0),这个信号时许哦有从站在DC同步后同时进行触发的
- 当Sync0触发时,由于之前在SM Event时已经完成了数据的计算和复制,因此此时的输出抖动会非常小,约为15ns.
- 在Output Valid输出有效触发之后,从站会等待一个input Latch信号,它可以是Sync1事件信号,也可以是Sync0之后一段固定的延时时间,这取决于我们的设置。
总体DC分布时钟通信模式如下
DC模式下,所有支持DC的从站都应该同步与DC系统时间。主站也应该使其通信周期同步与DC参考时钟时间。下图为主站本地周期与DC参考时钟同步的工作原理。
在使用DC模式的时候会出现一种同步丢帧的情况,就是说数据帧在到达尾端从站之前,所有从站的Sync0事件已经触发了,而此时Frame还未到,SM Event无法触发,导致同步丢失。
因此需要把第一个从站和主站之前的偏移时间调大,即在主站输出事件周期上加上Sync Shift Time.。
EtherCAT协议中非周期性数据通信称为邮箱数据通信,它可以双向进行—主站到从站和从站到主站。
邮箱数据报文结构如下图所示,通常邮箱通信只对用一个从站,所以报文中使用设备寻址模式。
图 4-3 邮箱数据单元结构
表4.1 邮箱数据头
主站到从站通信—写邮箱命令
从站到主站通信—读邮箱命令
EtherCAT 状态机( ESM ,EtherCAT State Machine ) 负责协调主站和从站应用程序在初始化和运行时的状态关系。
EtherCAT 设备必须支持四种状态, 另外还有一个可选的状态。
- Init: 初始化,简写为I;
- Pre-Operational: 预运行, 简写为P;
- Safe-Operational: 安全运行,简写为S;
- Operationa 1: 运行, 简写为O;
- Boot-Strap: 引导状态(可选) , 简写为B。
以上各状态之间的转化关系如下图所示。从初始化状态向运行状态转化时,必须按
照" 初始化→预运行→安全运行→运行"的顺序转化,不可以越级转化。从运行状态返回
时可以越级转化。引导状态为可选状态,只允许与初始化状态之间互相转化。所有的状态
改变都由主站发起, 主站向从站发送状态控制命令请求新的状态,从站响应此命令,执行
所请求的状态转换,并将结果写入从站状态指示变量。如果请求的状态转换失败, 从站将
给出错误标志。
图 4-2 EtehrCAT状态转化关系
(1) Init: 初始化
初始化状态定义了主站与从站在应用层的初始通信关系。此时,主站与从站应用层不可
以直接通信, 主站使用初始化状态来初始化ESC 的一些配置寄存器。如果从站支持邮箱通
信,则配置邮箱通道参数。
(2) Pre-Operational: 预运行
在预运行状态下,邮箱通信被激活。主站与从站可以使用邮箱通信来交换与应用程序相关的初始化操作和参数。在这个状态下不允许过程数据通信。
(3) Safe-Operational: 安全运行
在安全运行状态下,从站应用程序读入输入数据, 但是不产生输出信号。设备无输出,
处于"安全状态"。此时,仍然可以使用邮箱通信。
(4) Operational: 运行
在运行状态下,从站应用程序读入输入数据, 主站应用程序发出输出数据,从站设备产生输出信号。此时,仍然可以使用邮箱通信。
(5) Boot -Strap: 引导状态(可选〉
引导状态的功能是下载设备回件程序。主站可以使用FoE 协议的邮箱通信下载一个新
的固件程序给从站。