为什么控制器监控不到驱动器的IO状态
解决方法:
1.通过RTSys/ZDevelop软件,发送在线命令【?*EtherCat】,参考驱动器的drive_profile的设置,看看设置的drive_profile 模式是否包含数据字典0X60fd(驱动器输入)、0X60fe(驱动器输出);
2.通过RTSys/ZDevelop软件,发送在线命令【ZTEST(30,10,NodeId)】,查看驱动器测PDO是否包含数据字典0X60fd(驱动器输入)、0X60fe(驱动器输出)。(NodeId表示要查询的节点号);
3.如果上面2个步骤查询发现没有异常,那可通过RTSys/ZDevelop软件在线命令打印【?drive_io(AxisId)】,参考该轴的起始IO编号,检查是不是自己监控的输入口编号有问题对不上导致的。(AxisId表示要查询的轴号)
4.可以使用驱动器软件监控观察,观察驱动器的IO口是否可以监控到相关信号;
5.如果上面的4个步骤均正常,那么可以在线命令发送SDO读指令去读0X60FD的数据,对比驱动器输入有信号和没信号时的0X60FD各个位是否有差异,如果没有差异就是驱动器那边的问题。如果有差异排查出是哪一位的差异,假设这个差异发生在第M位,那么正常监控控制器的输入口IN(drive_io(AxisId)+M)是可以监控到的;(AxisId表示要查询的轴号)
6.因为不同的DRIVE_PROFILE模式,映射的驱动器IO数目是不一样的,可以通过RTSys/ZDevelop软件发送【?*DRIVE_IOCOUNT(AxisId)】 查询映射的驱动器IO数目,步骤4监控的第M位的输入口这个M是否小于映射的驱动器IO数目,如果小于可以把DRIVE_PROFILE模式设置成其他模式试试看,比如模式5他可以映射监控32个驱动器的IO。(AxisId表示要查询的轴号)
注:【】内为发送的指令代码。