EtherCAT是一项高性能、低成本、应用简单、拓扑灵活且开源的确定性以太网技术,其独特优势使得EtherCAT在半导体制造、机器控制、测量设备等领域有着广泛的应用。
在进行EtherCAT主从通讯测试时,比较容易在DC配置出现错误,特别是使用到从站DC模式时,有时会出现代码为0x1A的“同步错误”,有时即使没报错误,伺服从站运行过程中也会出现电机轴的抖动,这是出于什么原因呢?本文将以虹科EtherCAT开发方案和三洋伺服测试举例,通过采集SYNC0与SM2信号之间相位关系波形图,做出诊断结论。
在测试前,需要认识两个概念:从站同步模式、同步错误
从站同步模式
简单理解就是从站以某个信号作为同步事件(中断信号)来更新数据,EtherCAT支持以下各种同步模式,这里以常用的1,2,3,4举例说明。
1. Free Run
2. Synchronous to SM2/3 (with Shift)
3. DC Mode 1 (Sync0 Event)
4. DC Mode 1 (Sync0 Event with Shift)
5. DC Mode 2 (Sync0, Sync1, with Shift)
6. DC Mode 3 (SM2 Event, Sync0)
7. DC Mode 4 (SM2 Event, Sync0, Sync1)
8. DC Mode with subordinated cycles
同步错误
在应用层,每个从站实时监视从ESC收到的同步SYNC信号。假如检测到同步错误,从站会进入safe-op状态并产生对应的应用层状态码,主站可以通过非周期命令读取这一状态码。
可能引起同步错误的原因
1
主站周期时间/同步信号的错误配置
2
不再收到ESC发送的SYNC信号
3
主站发送数据帧时存在较大的抖动,导致数据帧在从站收到SYNC信号之后才到达从站
所以必须严格保证SYNC0必须在SM2信号之后。
概念解释
Part.1
COE下0x1C32对象字典对应的几个概念
其中也标注了数据从SM拷贝到从站MCU内存的时间和硬件处理延时时间分别为62.5us和30us。
Part.2
FreeRUN模式
自由运行模式通过应用程序控制器的本地计时器中断启动,本地周期从通信周期或主站周期独立出来单独运行。
Part.3
SM2事件
由于从站的处理与SM2事件周期相对应,因此从站的处理保持与SM2事件同步。运行时使用本地周期计时间直到收到SM2事件。
Part.4
DC模式
SYNC0事件收信后也开始从站的本地周期。 在下个SYNC0中断发生前,过程数据帧必须被从站完全接收
开始测试
测试说明:主站周期1ms,分别测试三洋伺服的SYNC0引脚和SM2中断引脚的信号,绿色信号为SYNC0,黄色信号为SM2
测试一
Sync shift time:0μs, Shift time:0μs,不设置传播延时补偿,不设置SYNC0启动延时
测试结果:示波器测试IRQ信号与SYNC0的信号时间差基本上为11μs
测试结果:这时会出现异常的同步错误
测试二
Sync shift time:0μs, Shift time:250μs 不设置传播延时补偿,设置SYNC0延时250us启动
测试结果:IRQ与Sync0之间的时间差为228--238μs左右,而且SYNC0明显在SM2之后,正常
测试三
Sync shift time:60μs,Shift time:250μs,设置传播延时补偿60us(补偿从站响应时间),设置SYNC0延时250us启动
测试结果:IRQ与Sync0之间的时间差为282--300μs左右,相对测试二,往后延时60us左右,正常;
▎总结
[1] 保证SYNC0信号在SM2信号之后[2] 主站的抖动(SM2抖动)会导致从站伺服的抖动,一般如果主站max circle time jitter大于周期的20%-30%,会出现问题[3] 通过设置shift time(SYNC0延时启动)时间可以改变SM2与SYNC0的间隔时间,给从站进行数据拷贝留出更多的时间,保证数据全部更新[4] 每个厂家的伺服,shift time的设置大小不同,需咨询硬件厂商,一般是周期的四分之一,或者以自己实际测试为主,只要保证可以完整更新数据,不会出现来不及更新数据即可
全部0条评论
快来发表一下你的评论吧 !