EtherCAT主从同步方法.docx
《EtherCAT主从同步方法.docx》由会员分享,可在线阅读,更多相关《EtherCAT主从同步方法.docx(7页珍藏版)》请在冰豆网上搜索。
EtherCAT主从同步方法
EtherCAT主从同步方法
D
的值。
当对位置反馈值做微分获得速度值时,就可以看到速度会在9次位置采样时产生跳变。
同样的,位置漂移对于位置环的运算也是致命的,由于位置指令是以增量形式下发的,当不能保证每个Sync0周期能有固定次数的Eva周期时,观察位置环输出的速度值也是跳变的。
2.解决方案
EtherCAT总线解决了主站系统时间和各个从站Sync0信号的同步问题,即总线能够保证各个从站的Sync0信号能够根据主站的系统时间同时周期性的产生。
现在需要一套机制保证控制芯片的控制周期能和Sync0保证同步周期性产生。
2.1Sync0/Sync1生成
EtherCAT通讯芯片支持Sync0和Sync1两路同步信号,其中Sync0为同步源信号,Sync1的生成始终跟随Sync0。
当主站对从站通讯芯片的0x0981写入0x07后,就可以激活这两个信号输出。
Sync0和Sync1的关系可以通过如下4个参数来设置:
Cycle0:
Sync0周期,单位ns
Shift0:
从激活DC时钟到产生第一个Sync0所延迟的时间,单位ns
Cycle1:
从Sync0产生到Sync1产生所延迟的时间,单位ns,Sync1产生后,延迟的时间由下一次Sync0产生时开始计算(Linux主站)。
Shift1:
Sync1相对于它之前的那个Sync0信号的偏移,单位ns(仅在TwinCAT的配置文件中使用,Linux主站无效)。
注:
若想在使用Linux主站时控制Sync1相对于Sync0的偏移Shift1,且Sync1的周期为Sync0的N倍,则可以做如下设置:
Cycle1=Cycle0*(N-1)+Shift1
以伺服的情况配置如下:
Cycle0=125000
Shift0=0
Cycle1=Cycle0*(8-1)+50000=925000
Shift1=0
这样将会产生125us为周期的Sync0和周期为1ms的Sync1,Sync1滞后Sync0时间为50us。
Sync0作为同步Eva周期使用,Sync1作为过程数据交换触发使用。
由于Sync0和Sync1保持了8倍频率关系,因此只要Eva周期能和Sync0保持一一对应的同步就能够使从站控制周期和过程数据交换同步以及不同从站之间的控制周期同步。
2.2从站控制周期和Sync0同步
为了保证同步,需要实时调整从站控制周期,以伺服驱动器为例,就是要实时调整Eva.T1PR。
Eva.T1CNT是以DSP的150M频率进行计数的计数器,其计数周期规律为0→Max→0,当Eva.T1PR=9375时,0→9375→0所需时间为125us。
此处125us时间是以从站晶振频率来考虑时的时间,与Sync0的125us周期不同(以主站系统时钟来考虑)。
实际测试可知,Sync0的125us周期时间对应Eva.T1PR约等于9373,且Sync0的周期维持的非常稳定,其周期抖动可以基本忽略。
为此可以设计如下控制策略控制Eva.T1PR:
定义T为Eva.T1PR的值,t为Sync0信号产生时的Eva.T1CNT值,Shift为Sync0和Eva周期中断(在Eva.T1CNT=0时产生)期望的偏差时间(应当为一个固定值)。
的调节偏差足够Eva周期中断快速收敛到指定的Shift偏差处,9375为预设的控制周期(125us)。
2.3程序实现
在伺服实现中,将EtherCAT通讯芯片的Sync0直接引入XINT1管脚,Sync1直接引入XINT2管脚。
自由运行:
Eva按照从站晶振频率定义的125us周期运行。
同步阶段1:
通过检测Sync0信号来停止Eva的周期计数和中断产生。
同步阶段2:
在合适的时刻重新启动Eva周期计数,并开始调节Eva周期和使之向Sync0同步。
同步阶段3:
在经过不断的调整后,Eva周期和Sync0保持同步,并拥有稳定的Shift偏移关系。
a)当EtherCAT总线从PREOP→OP并激活DC时钟后,产生了第一个Sync0信号。
b1)DSP程序在本控制周期内检测到Sync0第一次产生,遂将Eva.T1CNT停止计数,等待后续同步时机。
b2)DSP程序未在本控制周期内检测到Sync0第一次产生,但是在接下来的一个控制周期中检测到Sync0第二次产生,遂将Eva.T1CNT停止计数,等待后续同步时机。
c)第3个Sync0信号产生,立刻将Eva.T1CNT=0,并开始Eva.T1CNT计数,初始的Eva.T1PR可使用9375。
使用章节2.2描述的方法对Eva.T1PR每个Eva周期都进行调整。
d)经过几十个控制周期的调整,同步完成,只要Sync0信号存在,就一直进行调整保持。
注:
1)在同步阶段2,可能会出现Eva周期和Sync0信号不一一对应的情况。
2)同步阶段2的时间长度取决于Shift的设置,Shift越大,所用时间越长。
3)Shift的值不易设置的太小或太大,避免调节时Eva.T1CNT做递增操作(章节2.2的控制策略只适用于Eva.T1CNT做递减操作的情况),一般来说最好设在1004)Sync0信号引入XINT1中断时触发的中断回调函数被响应的时间和DSP程序当前执行指令的状态有关,其本身的响应时间会有小范围浮动,因此单次调节时的补偿值不应该太小,避免因为干扰造成的调节失效,
是一个比较合理的设置。