The value of Zmotion is to bring customers more success!
一、常见问题
总线开启失败可能的原因(总线初始化例程、教客户查询错误码)
排查方法:
1.驱动器是否报警(总线驱动无法控制):
1)控制器端:打开RTSys软件 - 控制器/常用 - 连接 - 控制器 - 视图 - 轴参数 - AXISSTATUS(或打开ZDevelop软件 - 顶部菜单栏 - 控制器 - 控制器连接 - 视图 - 轴状态 - AXISSTATUS)。如果轴状态报8H则是驱动器通讯错误,检查链接网线及接口是否插紧 - 如果报4H,驱动器自身报错,编码器线脱落等。
2)驱动器端:查看驱动器面板 - 查看数据码 - 翻查驱动器手册对照报错码,查找问题点 - 根据问题点检查驱动器本身问题(若是报错码属于接线、电路问题则按驱动器说明去改正,非电路问题直接断电等待一会后重启)
2.通讯周期是否一致:
咨询驱动器技术或者查驱动器手册,确认总线模块的通讯周期范围 -> 打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接) -> 在线命令输入 “ ?SERVO_PERIOD” -> 点击发送 -> 此时会返回出来目前控制器的总线周期 ,以 us为单位 。
如果周期在模块的总线周期范围内则没有问题 ,反之则总线周期不适配,可以修改控制器的总线周期(在固件允许的范围内),操作方式: RTSys/ZDevelop底部在线命令输入 “SERVO_PERIOD = 想要的周期”,单位us(如需要2MS,则, SERVO_PERIOD = 2000) -> 点击发送 -> 断开控制器电源,等待几秒,重新上电生效。
3.drive_profile设置是否正确,驱动器模式是否正确
注:总线初始化程序出现abort code 字样的报错时检查。
1)drive_profile问题:打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接) -> 打开总线初始化程序 -> 查找关键字Drive_profile -> 将其等式的值修改成 -1 (如drive_profile = -1 ) -> 下载到控制器ROM -> 断开驱动器电源并等待约20秒,重启驱动器电源 -> 重新下载初始化程序,下载到ROM,此时会自动使用驱动器中的预设PDO;如果正常开启成功,则是配置的drive_profile有问题,如要检查预设PDO,使用Basic手册中的Ztest指令进行查询;手册下载地址:https://www.zmotion.com.cn/download_list_18.html
2)打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接) -> RTSys/ZDevelop底部在线命令输入“?drive_profile(轴号)”,轴号就填要查询的轴的编号,从0开始;位置模式下是 8 ;(注意某些驱动器是可以选择走脉冲或者总线的,请确保驱动器端已经设置使其切换成了总线模式,具体切换方式咨询驱动器技术或查找驱动器说明书。
常见 abort code 如下:
控制器端总线错误表:
4.接入了未知设备,检查xml文件是否正确添加。
当总线初始化程序执行时出现 UNKOWN Device 字样时检查。
Unkown Device 的出现是由于总线网络中接入了控制器没有适配过的,如下图所示报错
1)未识别的设备:找未适配的模块的厂家技术或官网获取对应型号模块的XML文件 - 打开正运动XMLParsingTools - 左上角文件图标 - OPEN XML - 导入 - Export ZML - 生成的ZML文件添加到总线初始化目录下 - 打开ZDevelop软件 - 顶部菜单栏 - 控制器 - 控制器连接 - 打开总线初始化程序 - 文件列表 - 鼠标右键唤出菜单 - 添加到项目 - 找到生成的ZML - 添加- 重新下载到ROM即可;
2)ZML添加成功与否:打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接)-RTSys/ ZDevelop底部在线命令输入 ?*ZML - 点击发送- 查看在线命令栏返回的数据(所有添加的ZML的状态) - 找到刚才添加后下载的ZML(如果没有找到对应编号的ZML,则没有添加成功),看其后面的USED 的个数,个数为0则没有使用;(下图表示模块编号为13feh的模块,版本 4的zml 被当前总线网络中的一个模块使用了。版本5的没有使用到)
3)如果是已经适配过的模块,并且是在使用过程中出现,那么可能是总线模块存在错误,上报的厂商信息不对导致,断电重启对应模块清除其报错即可。
4)部分驱动器xml会修改,固件里可能是老版本的xml,需要最新xml转换zml做总线初始化。如果固件里有驱动器信息同时使用了zml,则以zml为准。
5、带有分支器的网络中接入了未知模块
对于带有分支器的总线网络,如果其中一个分支器的端口上接了未适配的模块,会报错状态切换失败,需要单个检查分支器上的模块,确认未适配的模块,联系厂商,获取XML按照第4点的说明生成ZML进行适配;
6.检查总线初始化例程中的步骤是否有设备数量校验
检查总线初始化程序中是否有判断node_cout数量的语句,或根据报错的提示,如果出现提示数量不对。
此处附EtherCAT总线初始化程序(带驱动器IO映射)。
7.部分驱动器需要自定义PDO配置
正常设置无法开启总线,开启总线时报错6020,可以尝试自定义PDO。对于使用了zml的驱动,若仍有报错,可以设置NODE_PROFILE = -1。
总线掉线问题
1.总线在初始化完成使能后一段时间自动掉线断开使能:
可能原因一:
Ethercat网口硬件问题,通过ZDevelop里面的Ethernet error tool,在总线初始化成功后,监控网口错误计数。
解决方法:如果出现较多的301H计数,则模块网口可能存在问题,更换模块。
可能原因二:
电磁干扰,出现丢包;如果打开RTSys/ZDevelop软件监控时,在线命令输出栏出现Recv no pdo 字样,则是出现丢包,若此时驱动器报错记录出现有关电路报错的信息,则是受到干扰导致掉线;
解决方法:
(1)检查驱动器的地是否接好并接入大地;
(2)在驱动器侧安装磁环减少干扰;
(3)更换网线,使用带金属屏蔽头的Ethercat网络专用线;
(4)将驱动器移出来机箱外,远离电路干扰,进行测试检查;
(5)检查Ethercat网线是否存在与动力线等强电线路捆绑或处于同一接线槽内,避免信号线被强电干扰;
(6)若电路中存在较大功率的用电器,如超大功率电动机等,建议电源接入经过隔离器再给机器供电,避免大功率用电器启动时产生的大电涌干扰。
可能原因三:
驱动器自身故障断开链接;可以检查驱动器的历史报警记录,检查是否出现过位置误差超过(电机特别柔的时候)、电流过大(带的负载很大的时候)等一些报警记录(部分驱动器不会自动记录,可以使用驱动器的软件通过里面的示波器抓取)。
解决方法:修正驱动器参数。
2.在运动过程中,总线会突然断开、掉线
可能原因:
总线周期过短(一般常见于125US 或者500US周期),多模块时,如果交互的PDO数据量很大,周期需要相应变大,可以通过调试软件ZDevelop或RTSys里面的总线节点诊断工具,在总线初始化成功后,检查丢包个数(308H数据项)。
解决方法:
修改总线周期。 打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接) -> RTSys/ZDevelop底部在线命令输入SERVO_PERIOD = 想要的周期,单位US(如需要2MS,则SERVO_PERIOD = 2000) -> 点击发送 -> 断开控制器电源,等待几秒,重新上电生效。
总线节点顺序错误问题
1.问题现象:驱动器的节点编号和排布的顺序对不上
可能原因:Ethercat网线接入顺序不对
解决方法:
(1)检查出问题的驱动器的总线IN和总线OUT的链接端是否出错,若出错,重新调整IN、OUT接线顺序;
(2)推荐使用RTSys软件,在节点列表窗口查看厂商ID和厂商名,便于排查接线顺序。
注:有些驱动器是上出下进,注意检查接线是否正确。
2.问题现象:去除或加入一个新的驱动器,或者在驱动器之间接入一个新的IO模块后,原本驱动器的IO编号不对
可能原因:总线初始化程序中,对驱动器的IO使用了drive_io进行了映射,当在节点中间新增驱动器后,原本的驱动器IO编号就会按顺序后移;
解决方法:
(1)将新加入的驱动器节点放在最后面(一般建议新增的IO模块或者驱动器接入原来总线网络的最后),或者在总线初始化程序中修改映射起始地址;
(2)任意位置插入io模块时,IO模块自身的地址可以改为自动化配置(判断这个节点是否有轴,可以通过node_info指令判断,若没有轴但是有io就是IO模块,自动配置地址)。
(3)可以考虑使用自定义映射轴号(自由绑定轴号),这样用户虽然在中间插入了一个轴,但轴号可以不在中间位置,而drive_io地址的分配可以让IO地址只和轴号有关系。
3.问题现象:在带有总线分支器的网络中,改变了分支器其中一路接入的总线模块(添加或者减少),轴号顺序发生变化
可能原因:分支器本质上仍属于串联网络。
排查方法:将接入的驱动器或其他模块放到最后面,或者在总线初始化时使用数组存储好每个分支器节点的轴号,初始化时指定轴号通过数组里面的数据分配轴号。或者使用最新的软件RTSys来进行配置。(推荐使用RTSys配置的方式,会更加灵活,可以配置轴与IO, 参考下面附件的RTSYS总线配置教学)
如何使用自定义PDO方式添加数据字典?
客户提问:若drive_profile = -1 时,里面默认设置的PDO没有包含想要的数据字典,但想添加,该怎么设置?
解决方案:可以通过自定义PDO的方式添加,此自定义修改步骤一定要在总线扫描之后,总线开始之前设置。过程如下:
1.先查询默认的PDO是怎么设置的,用了哪些数据字典:打开RTSys/ZDevelop软件 – 连接控制器 - 加载总线初始化程序 - drive_profile使用 - 1 - 下载 - 初始化完成后 - 在线命令输出 ztest的查询命令,打印输出需修改的模块目前的PDO;
2.用basic写PDO修改函数,函数利用SDO_WRITE指令对PDO数据对象进行修改,可以在保留原有对象的基础上添加;过程如下图所示:
3.drive_profile 设置成 -1;
注:
(1)PDO自定义设置,profile设置最后必须设置为-1;
(2)1600h-160xh为RxPDO;
(3)1A00h-1A0xh为TxPDO;
(4)1c12h设置RxPDO使用1600h-160xh的哪几个;
(5)1c13h设置TxPDO使用1A00h-1A0xh的哪几个。
4.参考《TwinCat简易使用说明》文档, 下载twincat软件,在倍福软件上面操作一遍,文档中列出pdo的操作,可以自由添加。
XML文件问题(如何添加XML文件到控制器)
1.ZML文件获取方式
由于控制器只可以识别ZML文件,某些情况驱动器厂商可能只能提供XML文件,所以我们需要将EtherCAT从站的XML文件转换成ZML文件。
(1)将XML文件转换成ZML文件需要使用到XMLParsingTools软件,首先需要打开此软件。此处附XMLParsingTools软件,选择应用程序文件打开即可。
(2)点击左上角文件夹打开XML文件,选择对应的从站型号和从站类型。Device Type参数一般默认即可(软件会自动识别)。以下设备以一拖四总线驱动器为例。
(3)大部分设备此时直接导出ZML文件即可,少部分特殊的模块需要额外操作配置。此时点击左上角文件夹位置导出ZML文件即可。
2.上位机如何下载配置文件
(1)新建文件夹,并把准备好的配置文件《***.bas》和《***.zml》文件一起放入刚刚新建的文件夹。
(2)打开RTSys软件,点击【文件】--【新建工程】,新建的过程路径选择刚刚新建的文件夹里面。
(3)点击软件左侧【工程视图】空白区域,右击鼠标点击【增加到工程】,把第一步放在新建文件夹里面的.bas文件和.zml文件一起添加到工程里面。
(4)设置要自动运行的bas文件的自动运行号,这里单击《192.168.0.11.bas》文件,右击鼠标点击设置任务号即可,一般任务号设置为0。(任务号就是控制器的线程号,相当于用控制器的线程0去执行这个.bas文件)
(5)导出ZAR文件给上位机使用。通过RTSys软件产生配置文件的Zar包,点击[控制器]-[生成ZAR文件]-设置文件名,点击保存即可:
(6)把生成的ZAR程序包通过上位机接口下载到控制器。
3.ZML文件配合Basic开发使用步骤
(1)把上一步生成的ZML文件/厂商给的ZML文件拷贝到总线初始化的ZPJ项目文件夹下,通过RTSys软件打开【EtherCAT参数.zpj】项目文件。
(2)右键工程视图空白区域,点击【增加到项目】,将上一步生成的ZML文件/厂商给的ZML文件添加到项目里面。
(3)点击连接按钮,连接控制器。
(4)点击【下载到ROM】,将整个项目下载到控制器里掉电保存即可。
如何查看ZML是否生效
检查方法:
ZML添加成功与否:打开RTSys软件 -> 控制器/常用 -> 连接(或打开ZDevelop软件 -> 顶部菜单栏 -> 控制器 -> 控制器连接)-RTSys/ ZDevelop底部在线命令输入 ?*ZML - 点击发送- 查看在线命令栏返回的数据(所有添加的ZML的状态) - 找到刚才添加后下载的ZML(如果没有找到对应编号的ZML,则没有添加成功),看其后面的USED 的个数,个数为0则没有使用;(下图表示模块编号为13feh的模块,版本 4的zml 被当前总线网络中的一个模块使用了。版本5的没有使用到)
ETHERCAT总线IO映射不上(如何把驱动器的IO映射到控制器上监控)
解决步骤:
1.总线初始化里面的指令Drive_Profile指令是设置驱动器的PDO列表的。
如果要监控驱动器的输入,那么PDO列表需要有数据字典0X60fd0020,比如模式4、模式5等。
如果要监控驱动器的输出,那么PDO列表需要有数据字典0X60fe0020,比如模式5。
2.通过DRIVE_IO指令来设置各个驱动器上的IO在控制器上映射的起始IO编号。注意IO地址不能有冲突,IO起始地址要是8的倍数。
3.如果还需要把驱动器的运动限位映射到控制器上,可参考以下代码的第三步。
为什么控制器监控不到驱动器的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)是可以监控到的;
6.因为不同的DRIVE_PROFILE模式,映射的驱动器IO数目是不一样的,可以通过RTSys/ZDevelop软件发送?*DRIVE_IOCOUNT(AxisId) 查询映射的驱动器IO数目,步骤4监控的第M位的输入口这个M是否小于映射的驱动器IO数目,如果小于可以把DRIVE_PROFILE模式设置成其他模式试试看,比如模式5他可以映射监控32个驱动器的IO。
配置XML文件,使用slot_scan指令进行总线扫描报错6020问题(EtherCat总线初始化失败,错误码6020/EtherCat总线初始化失败,报错6020/ 总线初始化报不支持的功能/6020)
现象参考1:
解决方法:
该现象大概率是驱动器内部设置非EtherCat模式导致,先把驱动器设置成总线模式,然后进行总线初始化是否报错。
现象参考2:
解决方法:
基本是这个问题 al状态从1到2失败了,一般是sm初始化问题。
在XML文件导出ZML文件的时候,Minsize可以先尝试改成与DefaultSize相同大小, SM0 和SM1须一起修改,两个修改值要相同;如果还是不行,比原来的MinSize大即可,同时小于或等于MaxSize都可以,比如现在的MinSize是0x22 ,可以试试0x64 0x80 0x32。
现象参考3:
解决方法:
出现该问题通常是把状态机切换为Safe Op或者把状态机从Safe Op 切换到 Op时,切换失败导致的,通常是Pdo配置内容驱动器不支持导致,可以将DRIVE_PROFILE的模式设置成0或者-1观察是否正常。
还有少部分型号驱动器在Safe Op切换到 Op时,需要做一定时间延时才可。
现象参考4:
解决方法:
通常是PDO配置内容驱动器不支持导致,可以将DRIVE_PROFILE的模式设置成0或者-1观察是否正常。
驱动器可能和串口进行通讯交互数据,有些驱动器厂家只有一种通讯方式,需要进行切换,切换时需先关闭串口通讯,再转为总线通讯方式进行总线初始化。
现象参考5:
解决方法:
(1)可能是上电ECAT从站还没有准备好,控制器就马上进行总线初始化的相关操作了,导致从站报错,这时候重启从站后重新总线初始化后正常。可以在控制器总线初始化代码执行前加大延时到10S观察是否有效果;
(2)可能是某个ECAT从站有问题导致的,排查是哪个从站接上去就会报这个错误,把该从站替换新的硬件观察或者将驱动器升级;
(3)更新从站的XML文件观察是否有效果。微信回复 [如何添加XML文件] ,根据步骤提示更新XML到控制器。
(4)Pdo列表长度加大,控制器默认以八位来接受数据
在XML文件导出ZML文件的时候,Minsize可以先尝试改成与DefaultSize相同大小, SM0 和SM1须一起修改,两个修改值要相同;如果还是不行,比原来的MinSize大即可,同时小于或等于MaxSize都可以,比如现在的MinSize是0x22 ,可以试试0x64 0x80 0x32。
总线扫描RTSys/ZDevelop出现6015(EtherCat总线初始化失败,错误码6015/ EtherCat总线初始化失败,报错6015/总线初始化报应答包WKC错误/6015)
参考现象:
解决方法:
6015是驱动器在扫描时返回的应答报错,可能原因有以下几点:
1.驱动器的固件更新过,通讯周期可能对不上,确定驱动器通讯周期范围,检查是否和控制器周期一致。控制器的总线通讯周期设置范围可通过RTSys软件或者ZDevelop软件的在线命令下发[?*MAX]进行查询;
2.尝试提高控制器的总线通讯周期看看是否可以解决问题。控制器的通讯周期设置可可通过RTSys软件或者ZDevelop软件的在线命令下发指令修改如:[SERVO_PERIOD=2000],设置完成后控制器需断电重启后生效;