讨论

SOE跑在IGH主站上,PDO映射改了之后从站偶尔回个0x1A00啥意思?

slj2000
slj2000
2026/03/28 18:40

手头项目是台达ASDA-A2伺服走EtherCAT,主站用的IGH+Etherlab,SOE功能跑得起来但是有个问题搞不太明白。PDO映射表里0x1A00是位置实际值,正常周期下来读数都没问题,但偶尔会收到一次0x1A00,里面状态位是bit13置位(跟随误差超限),这时候伺服实际位置还没真的出错,就是通讯层面报了一下,过一两个周期又自动恢复了。

想问下各位这个0x1A00回的是带状态字的PDO数据,还是SOE的服务通道回的数据?目前看从站ESC寄存器0x0920的设置是SM2用的,SM3没启用,是不是跟这个有关?

10 4

全部回复 (4)

老婆孩子热炕头
老婆孩子热炕头#1

0x1A00这个索引在402行规里就是位置实际值对象,正常情况是过程数据PDO回传的,和SOE通道不搭边。你收到bit13置位说明那一帧PDO里状态字被伺服写进去了,但值本身可能是上一周期的旧数据。我之前用A2也碰到过类似情况,根因是DC同步没配好,主站从站时钟有抖动,伺服在同步窗口里检测到瞬时误差就置位了一次flag。解决办法是把0x1C32.02和0x1C33.02的循环时间设成和总线周期一致,再把分布时钟的起始时间补偿加上,0x1F98试试看。

2026/03/28 19:26
小梁
小梁#2

插一句,你IGH是哪个版本?7.12之前的有个bug,过程数据读取时序会跟SOE请求撞车,表现就是周期性出现莫名其妙的0x1A00状态字。建议升到8.4以上,或者干脆把SOE那部分代码用rate_divider拆开成独立线程跑,别跟PDO主循环挤一起。

2026/04/03 08:46
杰姐
杰姐#3

不一定是通讯问题。bit13置位过1-2个周期自动清,一般是伺服内部跟随误差检测阈值设得太敏感了,检查一下6075(跟随误差窗口)和6066(跟随误差超时)这两个参数,台达出厂默认有时候偏严。把你工艺速度加减速拉出来对一下,确认是不是机械那边有共振点。

2026/04/06 07:52
吴树林
吴树林#4

0x0920和SOE有关系吗?你SM2的物理地址配的是多少?

2026/04/08 07:17