ethercat 同步方式 FreeRun/SMx/DC

对象字典 index 0x1C32:0x01 可以选择 ethercat 主站和从站的同步方式。
一共有三种:

  1. Free Run 模式
    这种模式就是说每个slave根据自己的时间中断(未同步的timer)来处理ethercat数据,跟主站的运行周期其他从站的周期以及ethercat帧的到达时间都没关系。
  2. SMx 模式
    这种模式就是slave根据SM2 或者 SM3 event 来处理ethercat帧数据的读写(也就是说slave一收到ethercat数据就会触发SM event),但是由于有些设备SM3一直是输出有效,因此有些设备的SM3不能用来作为同步信号。
  3. DC 模式
    这种模式就是高精度的时间同步模式(与第一个有 DC 的 slave 同步),该模式会将第一个有DC的slave的时间作为 system time,然后再用这个 system time 来作为所有设备的参考时间(加上传输延时,抖动等等时间误差)来生成 SYNC0 或者 SYNC1 同步信号。该模式要求主站有很强的实时性能,因为某些slave要求在该模式县时间抖动不超过 100us,否则会有 Sync Error 报警。

Free Run
这里写图片描述

SM2/3
这里写图片描述

DC
dc

每一种同步方式都有一个 Cycle Time 的参数 (index 0x1C32:0x02),该ethercat数据帧在这个时间内必须被消化(也可以理解为主站运行周期)。而一个 Cycle Time 周期又可以分为几个部分:

主要有四部分时间:其中 Copy and Prepare output 部分表示 slave 将ethercat数据从SyncManager(表示 PDO)中读出并复制到从站的 local RAM 中并经过计算输出的时间(0x1c32 0x06, 只读),外加一些硬件延时等(ox1c32 0x09 只读); Output Valid 表示将数据读入,并且经过设备内部周期,使数据生效的时间点;Input Latch 表示从传感器读入数据的时刻; Get and Copy inputs 部分表示将数据从传感器读入并插入到 ethercat帧中的时间(0x1c33 0x06 只读)。

例如,Sanyo 驱动器对各部分时间的描述:

这里写图片描述
这里写图片描述

一般ethercat从站需要设置两个时间参数: cycle_timeshift_time,其中 SYNC0 的 cycle time 表示从站运行周期周期,一般即为ethercat的主站运行周期时间(e.g. 1ms); SYNC0 的 shift_time(下图中的 Sync0 Shift) 表示的是 SYNC0信号 相对于 DC信号(DC Base) 的偏移时间(正值,表示向后推移,例如可以设置为cycle_time的一半)), 如图(见参考链接):
这里写图片描述

注意: SYNC1 的 cycle_time 和 shift_time 与 SYNC0的含义不一样,见链接:https://infosys.beckhoff.com/english.php?content=../content/1033/tcsystemmanager/reference/ethercat/html/EtherCAT_DistributedClocks.htm&id=

还有些驱动器直接将 shift_time 设置为零,有些设置为零会出现数据周期错乱导致 sync error。具体看驱动器sm是否支持 shfit_time,可以读取index 为 0x1c32 或者 0x1c33,subindex 为 0x04 的uint16的数据,如图:

这里写图片描述

如果 bit6-5 为 00 则表示不支持 ShiftTime.

  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值