讨论

EtherCAT主站发PDO给从站,从站只收到一半的数据是啥情况?

阿磊
阿磊
2026/03/17 20:30

用的IgH主站,跑在Xenomai下,从站是汇川IS620N伺服。PDO映射配了0x607A(目标位置)+0x60B8(触摸探针)+0x6064(实际位置)这三个,对应RxPDO 0x1C12。周期1ms,DC同步打开。

跑起来之后0x607A目标位置伺服能正常接收执行,但是0x60B8触摸探针功能码从站那边反馈一直是0,0x6064实际位置回传上位机也偶尔丢帧。用wireshark抓ECAT帧看SM通道是没问题的,三个PDO都在一帧里发出来了,从站也回了对应长度的数据。但应用层读上来的结构体里探针那个字段永远是初始值。

有遇到过这种部分PDO通部分不通的吗?是不是映射顺序或者PDO内容长度对齐的问题?

10 4

全部回复 (4)

潘志明
潘志明#1

先确认一下你那个0x60B8在从站ESI里是不是真的声明成可映射PDO,有些伺服厂家把这个对象声明成可见但是mappable属性是no,映射表里强行加进去主站不报错但是从站会忽略这一段。我们之前用过一台国产伺服踩过这个坑,最后改用厂家给的标准PDO映射配置才正常。

实际位置丢帧那个怀疑是SM buffer size配小了,你SM2的大小是按完整PDO长度算的吗?0x6064是INT32三个加一起至少要算够,buffer不够从站会丢数据。

2026/03/18 15:23
平平淡淡才是真
平平淡淡才是真#2

主站发出去从站收到没问题,从站回传丢数据这个方向先排除一下线缆和EMI,实际位置回传速率比目标位置下发高很多容易暴露硬件问题。我们项目上同一批次汇川伺服有3台在0.5ms周期下回传位置抖得厉害,换成屏蔽层双端接地的网线后稳定了。

2026/03/20 20:00
alei
alei#3

0x60B8单独拿出来测一下,别放在0x1C12里映射,放0x1C13单独发一帧试试,能通的话就是映射冲突或者PDO内容总长度超过了SM2 buffer

2026/03/21 19:14
难得糊涂
难得糊涂#4

汇川IS620N固件版本是多少?我们这边用V2.71的版本0x60B8这个对象映射上去直接报PDO配置错误,主站日志里能看到abort code,换成V3.02之后好了

2026/03/21 20:47