使用Igh主站遇到的一些问题:
-
汇川电机无法进入op
其他电机(松下、maxsine)在主站idle阶段时处于preop(可能的原因是汇川电机默认支持eoe),然而汇川电机处于SAFE+E
解决方法:
在主站配置的时候关闭eoe功能:eg: ./configure …. --disable-eoe
注:
igh的eoe功能支持默认将从站进入OP状态,然而在主站处于idle阶段时,从站无法获取主站的pdo映射,在safeop阶段验证过程数据时失败。
-
进入OP耗时10s左右,且打印 从站未同步超过5000ms
解决方法:
linuxcnc-ethercat-master源码默认使用的是以主站作为参考时钟,在linuxcnc上打官方的RTAPI补丁,并且xml文件中的refcycletime = -1,即可实现以从站作为参考时钟,同步时间明显缩短。
linuxcnc\src\rtapi注:
以主站作为参考时钟会因为主站的抖动导致同步时间过长。
-
松下电机偶尔进不了op问题:
刚开始出现在进op前写不了PDO映射
后面一步一步推导发现,在扫描完成后,出现等待sdo回复超时,导致伺服电机写不了sdo数据。查看fsm_master.c文件可知,这是由于松下电机开启sdo_info_enable,这是一个可以将伺服电机eeprom保存的对象字典导出的功能(读取0x0808地址)。通过修改松下电机xml文件可以将该功能取消掉,目前也是解决了松下进不了op的问题。
但是,有两点问题还是没弄清楚:为什么读取回复会超时?(读写sdo数据的地方有很多,只有在获取do对象字典(fetching dictionary list)这里会超时,可能是读到的数据太多导致的吗,因为读到了1122个entry);还有,为什么超时会导致后续写入sdo数据失败?这个不能理解,怀疑是不是有什么错误状态位没有清除,但是通过ethercat crc没有查到什么错误位...后续会好好研究一下
-
Failed to get reference clock time: Input/output error / UNMATCHED datagram
获取参考时钟时间失败 :
master->sync_datagram.state != EC_DATAGRAM_RECEIVED
ec_master_receive_datagrams未收到该报文(收到报文会给报文状态:EC_DATAGRAM_RECEIVED)
原因:(个人分析)
上次发送的数据报文的未收到(因为周期太短了,短于数据帧往返时间)
周期中又很耗时的任务,或系统抖动很大 -
松下电机在网线插拔后无法正常OP
检测出的问题在于确认状态时,给从站发送0x14,但是偶尔从站无法进行状态转换导致超时退出状态机。
目前的解决方案是将确认状态设置为INIT(0x01)即可正常OP
然而也发现,再次进入op后0x092c有很大时钟偏差,需要同步很久... 目前尚未解决
PS:
这个问题和问题3应该是一个问题,松下电机处于错误状态时,有时候收不到主站下发的指令(或者说收到指令没有有效回复)。由于对电机内部处理逻辑不太了解,还得继续分析。
可以OP:
不能OP:
-
IGH冗余功能
1)igh并不能完全实现冗余功能,在有设备断联后,igh重启主站扫描状态机和主站配置状态机(个人觉得有些多余,只需要通过广播获取到main、backup设备上挂在的从站,再重新给从站排序不就可以了吗?重新扫描和配置是不是多此一举...),这可能需要花费几秒时间,因此设备还是会停止工作。
2) 最大问题在于,冗余功能启动后,DC同步并不能很好的完成...通过dmesg可也看出,backup设备并没有计算传输延迟(translate delay),并且由于时钟漂移的原理,参考时钟是第一个带dc功能的从站,若拓扑中间断开,backup的从站无法获取frmw中的参考时钟,自然无法同步....
-
后续也会继续更新!!