The value of Zmotion is to bring customers more success!
通用说明
供电要求
控制器主电源输入要求24V直流电源,最小输入电流要求0.5A(对应功率12W及以上), DC24V且输入大于0.5A的电源均可使用,控制器工作电流为0.4A。
主电源使用DC18V-36V均可使用,但由于大部分控制器采用主电源转换给其他模块供电,会导致其他接口的参数与硬件手册提供的参数不匹配,故仅推荐使用DC24V。
通用说明
U盘本身格式有很多种,控制器可以识别FAT格式,eFAT不一定。模拟U盘,在RTSys的目录下新建一个“udisk”文件夹,即可模拟为u盘。
一、通用接线
1.推荐采用菊花链拓扑结构接线,不可采用星型拓扑结构,当使用环境较为理想并且节点较少时也可考虑分支结构;
2.请在CAN总线最两端接口各并接一个120欧的终端电阻,匹配电路阻抗,保证通讯稳定性;
3.请务必连接CAN总线上各个节点的公共端,以防止CAN芯片烧坏;
4.请使用双绞屏蔽线,尤其是环境恶劣的场合,务必使屏蔽层充分接地。
二、通用说明
注意事项
1.实际支持的通讯速度和线缆长度,需要根据现场实际情况测试得出,硬件手册规格参数仅为参考。
2.支持的通讯速度与线缆长度成反比。
分配IO起始地址:
打开RTSys软件,右上角工具栏点击控制器->控制器状态->ZCAN节点(如下图),获取控制器的IO编号范围。
分配IO地址,通过扩展卡拨码开关前四位,根据硬件手册定义的起始地址,用8421规则拨码给扩展卡分配起始IO(注意不要让地址冲突)。
三、常见问题
1.ZCAN 扩展板通讯不上,需要注意排查哪些点?
(1)检查供电电源接线是否正确,扩展板的24V电源和IO电源使用双电源供电;
(2)推荐采用菊花链拓扑结构接线,不可采用星型拓扑结构,使用双绞屏蔽线,接屏蔽层到外壳;
(3)检查拨码ID是否正确,IO地址是否冲突;
(4)检查扩展板拨码开关第8位是否拨上去(如果多个扩展板,电阻拨码只拨最后一个扩展板即可)。控制器CANL和CANH之间是否并120欧的电阻,如果多个扩展板,控制器CAN口要并一个120Ω电阻;
(5)检查控制器的CANIO_ADDRESS是不是为32,32表示主端;
(6)排查干扰问题,测量CANL和CANH电压,正常值为0.04V。可以在接入扩展模块电源时加一个24V直流滤波器,可以降低干扰。
2.控制器CAN通讯不上
解决方案:
(1)电源隔离,双电源供电,主电源和IO电源分开供电;
(2)修改波特率,短距离调高波特率,长距离调低波特率;
(3)控制器或设备CAN口可能故障,用第三方软件通讯测试;
(4)接线不对,检测接线。或通讯有干扰,使用双绞屏蔽线,不和强电路走线;
(5)看控制器的CANIO_ADDRESS是不是为32,32表示主端;
3.CAN通讯不稳定问题
参考现象:有的第三方设备读取控制器AD信号再通过can通讯传输回去,会出现偶尔的电压信号突变。
解决方案:一般在输出电压后添加延时50ms左右,即可正常读取AD值。
4.CAN读取数据时报警“passed because No buff”
参考现象:CAN读取数据时报警“Warn file:“READRADAR.BAS”line:27 task:8,Can message:53 passed because No buff.”
解决方案:读取速度赶不上接收。 CAN芯片接收太快,Basic程序读取太快,需要降低波特率或者加快自定义通讯的读取速度,优化basic程序。
一、通用接线
网口连接要求
PC的IP地址,需要与控制器的IP在同一网段才能连接成功,控制器出厂的IP地址为192.168.0.11,端口号为502。请把PC的IP地址修改为同一个网段(即第一次连接PC的IP要改为192.168.0.XXX),然后再连接。
若忘记控制器的IP地址可尝试串口连接后查询IP,串口缺省参数:波特率38400,数据位8,无校验,串口掉电恢复缺省值。
部分笔记本电脑的多网卡有冲突,此时可以尝试先禁止其他网卡(或者把其他网卡改成和控制器同一网段)。
包含多个网口的控制器,注意不要将两个网口的IP改为同一网段。
二、常见问题
1.控制器与PC网口连接失败处理方法
客户提问:
(1)网口连接不上;
(2)扫描不到IP;
(3)连接控制器,反复断开连接;
(4)网口的灯不亮;
(5)网口掉线;
(6)PC程序中出现20009或者3402的错误码(20009错误码/3402报错码)。
问题分析:
(1)网络通信不通畅不稳定;
(2)PC程序里有大量的单个IO,单个轴状态查询语句;
(3)部分网卡(千兆网卡),当高级属性中设置的部分参数(如双工模式,连接速率等)不适配时,也会导致网口灯不亮;或硬件异常也会导致网口灯不亮。
排查流程:
解决方法:
方法一:参考此文档。0028控制器与PC网口连接失败的排查方法.docx
方法二:
排查是否能连接RTSys/ZDevelop:
(1)如果RTSys/ZDevelop能连上,那就是用户的PC程序有问题,看链接控制器的函数(例如OpenEth)的返回值多少,常见的错误是:vs直接报警,提示找不到入口。这种一般是没有在合适的位置放置正运动函数库或者编译类型(32bit、64bit)和dll文件的类型不一致。
(2)如果RTSys/ZDevelop无法连接,就是物理问题或者IP错误,做如下的排查方法:
1)排查控制器上的POWER灯和RUN灯的闪烁情况。如果没有亮两个,就是网卡或者网线硬件问题(如果有交换机还要留意交换机质量问题)。如果亮两个灯,证明硬件正常。后面再进行PING测试。
2)PING测试,PING测试前一定要保证PC和控制器同网段(子网掩码也要相同)不同IP,控制器默认IP为192.168.0.11,子网掩码为255.255.255.0。自己的电脑IP可以设置为192.168.0.xx;
ping测试代码如下:ping 192.168.0.11 -t
2.如果PING测试的数据不正常,则排查是否网线/网口被干扰了,或者排查网卡是否有问题。
(1)网线要使用超五类带屏蔽网线,和电机动力线宁交叉不并线。
(2)如果确认不是网线的问题,那基本上就是网卡的问题,可以换一个独立网卡。
(3)如果问题是偶发的(PC程序偶尔卡顿),那就可以使用带日志的PING小工具持续PING,持续的记录(小工具可以向正运动支持人员索取)。
如果PING数据也很正常,只有用户自己的PC程序很卡顿,就要改进PC程序,一般容易出问题的地方是:
(1)IO状态和轴状态不要单个高频的去读取。尽量使用批量读取,并且中间加一点延时。读取IO可以使用GetModbusIn,读取电机位置可以使用GetModbusDpos,读取轴参数可以使用GetAllAxisPara(返回浮点数数组)。
(2)推荐不要高频读取轴状态,低频的读取AXIS_STOPREASON(历史原因)也可检测到出错状态。
(3)运动缓冲区满了之后不要无延时的循环持续发送,要适当的加点延时。
(一)物理接线检查:
确认物理接线是否正常无误,排查是否存在以下情况:
a)网线是否有破损和接触不良的情况;
b)网口卡槽是否插错,如EtherCAT接口和ETHERNET接口是否插错。
(二)网口配置检查:
检查网口配置网络是否正常设置,排查是否存在以下情况:
a)控制器网段与电脑网口网段是否设置成相同网段;
b)电脑存在多个网卡,涉及到多个网口有相同网段的情况;
c)电脑防火墙,电脑管家安全性较高,对网络监管管控限制,关闭防火墙等;
d)部分网卡适配性问题,如部分网卡属性配置里面带双工模式,连接速率等参数,需要手动调整对齐配置等。
(三)设备状态检查:
确认连接的控制器网口/使用的电脑网口能否正常工作,按如下方法排查:
a)确认双方网口灯,是否能正常闪烁;
b)更换电脑或更换控制器进行对比测试验证。
3.如果RTSys/ZDevelop能连接上但是容易断开,就要留意干扰问题或者硬件问题,排查是否出现以下情况:
(一)网线使用非超五类带屏蔽网线;
(二)网线和电机动力线并线/进入了同一个线槽;
(三)交换机质量不稳定(建议更换交换机);
(四)工控机的网卡不稳定(建议更换网卡)。
4.已经把电脑网口IP修改成跟控制器IP同一网段了,还是连接不上控制器,ping也ping不通。
参考现象:已经把电脑网口IP修改成跟控制器IP同一网段了,还是连接不上控制器,ping也ping不通。
可能原因:客户只正确设置了网口IP,子网掩码设置错误或者没有设置。
解决方法:把子网掩码设置成“255.255.255.0”。
5.MODBUS_TCP无法访问地址
客户提问:
(1)MODBUS_TCP无法访问地址。
(2)使用Modbus/Tcp协议无法连上对端设备怎么办。
解决方法:
(1)首先确认网口灯是一切正常。正常亮两个(正式工作应该亮一个,闪一个。但只要网线正常,应该至少亮两个),如果没有亮两个就是网卡或者网线硬件问题(如果有交换机还要留意交换机质量问题)。
(2)通过PC ping一下对端设备。确保控制器和对应设备在同一个网段,不同的ip。子网掩码也要相同。
(3)如果能PING通,确认MODBUSM_DES2里的参数都是对的,包括当前控制器的Eth端口是对的,对端的端口号如果不是502也要设置正确。
(4)确认对端设备的MODBUS设备需要的功能码和我们的一致,我们的支持01/02/03/04/05/06/15/16,不同的功能码对应不同的指令。
(5)如果确认以上都一切正常还是通信不上,就可以用modbus poll来测试,如果modbus poll都无法测通,就是从站设计或质量有问题。
6.MODBUS_TCP链接10多秒后断开
客户提问:
控制器和对端的Modbus/TCP建立连接后首次通信后一直没有通信,后续就通信不上了。
问题分析:
如果确认过之前通信很正常,也通过PING等方法确认物理连接没问题,就应该是该从站有可能在没有通信的情况下会主动关闭连接,这种情况就需要控制器通过定期查询等方式防止从站断开。
解决方法:
添加心跳保持功能。
一、常见问题
总线开启失败可能的原因(总线初始化例程、教客户查询错误码)
排查方法:
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指令进行查询;手册下载地址:/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],设置完成后控制器需断电重启后生效;
一、通用说明
坐标清0,使用datum(21,$21)\datum(21,$22)指令可将伺服当前电机位置,编码器位置直接清0。
目前松下retx总线没有伺服上的IO点锁存,只能用控制器的IO锁存。
Rtex回零报错27.4,是因为通讯周期设置不对,将驱动器7.21设置为1,7.20设置为对应周期。
一、通用接线
1.RS232(port0)的接线如下,收发信号需交叉接线,与电脑连接时建议采用双母头的交叉线;
2.RS485(port1)的接线如下为菊花链拓扑结构接线,不可采用星型拓扑结构,当使用环境较为理想并且节点较少时也可考虑分支结构;
3.请务必连接各个通讯节点的公共端,以防止通讯芯片烧坏;
4.请使用双绞屏蔽线,尤其是环境恶劣的场合,务必使屏蔽层充分接地。
二、通用说明
注意事项
1.RS485通讯不接终端电阻,市面上有些485通讯需要接,但我们的设计不接。
2.实际支持的通讯速度和线缆长度,需要根据现场实际情况测试得出,硬件手册规格参数仅为参考。
3.支持的通讯速度与线缆长度成反比。
MotionRT7 串口配置
1.设置串口数量;
2.在配置文件中设置port口编号对应的串口编号,在RT文件夹中找到配置文件后打开。
3.打开文件后修改comport,左边为port口,右边为对应的com口;
例如:如图为port口对应com0,port口对应com1,保存修改,关闭RT软件重新打开,可以正常启动就是串口已成功打开。
以下情况表示串口打开失败,切记要在设备管理器中确认进行通信的串口的编号;
4.连接RTSys/ZDevelop在线命令输入:?*port,可以查看各个port口的通讯协议类型,确认port口是否为com类型;
5.查看串口属性,找到端口设置可以修改串口的参数;
三、常见问题
RS232(485)连接PC失败或用232转USB连不上控制器
异常伴随现象:
1.PC软件不可以连接,ZDevelop/RTSys串口也连接不上;
2.PC软件可以连接,ZDevelop/RTSys串口连接不上。
排查方法:
1.检查波特率,数据位,停止位,串口号是否正确,可以通过?*SETCOM查看当前的所有串口配置;
2.打开设备管理器,检查有无设备,检查串口端口号是否正确,检查驱动是否安装正确;若是232转usb,检查是否安装USB接口的驱动或查看驱动是否安装正确;
3.检查RS232串口线接口与控制器接口是否对应得上;
4.检查串口线是否有问题,是否是交叉线,排查串口线是交叉线还是直连线;
5.使用串口调试助手测试是否正常;
6.上述几点检查无问题后仍无法连接可能是串口损坏,需更换串口线。
串口读取或写入数据失败
异常伴随现象:
1.无通讯反应;
2.获取的值不正确;
排查方法:
1.检查协议模式(setcome)是否选择正常,检查波特率,数据位,停止位,串口号是否正确;
2.检查建立连接指令MODBUSM_DES指令里链接的站号是否正确;
3.检查MODBUS数据操作指令参数正确,确认访问地址是否正确,特别是对端寄存器地址参数是否正确;
4.查看对端地址是否可读可写;
5.setcome指令超时时间不能设置成0;
6.使用串口调试助手排查,确认对端是否可以正常工作;
7.确认主从端和通道号是否正确;
8.确认数据转换格式是否正确;
9.站号切换或指令读取写入时可适当增加20ms的延时;
10.检查是否干扰导致,串口线需要使用双绞屏蔽线;
11.使用多个485设备连接时需要并120欧电阻,电阻起稳压作用;
12.使用485连接多个从站时,检查从站地址是否冲突;
13第三方支持modbus协议的软件进行连接时失败,请检查是TCP链接还是串口链接,如果是直接的串口线相连接就是串口,如果经过串口转USB再转网口就是TCP的,选择对应的通讯协议即可。
激光器485自定义通讯问题
问题描述:激光器485自定义通讯,多条putchar指令操作,对方激光器接收的时候,只能接收1或者两条指令。
解决方案:中间加延时delay间隔处理。
注:485通讯为半双工模式,因此为了可靠的工作,在485总线状态切换时需要做适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时1ms左右的时间,再发送有效的数据,一包数据发送结束后再延时1ms后,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。此方法不仅仅适用于激光器的485通讯。
控制器作为MODBUS主端,读取从端的寄存器值后作判断,判断结果和寄存器的值不符
问题分析:检查通讯是否正常,代码逻辑有没有出错。
排查方法:
1.检查读取的功能码和地址是否正常;
2.检查寄存器存储是16位还是32位的;
3.解析的格式是16进制还是10进制;
4.检查数据转换格式(大端序/小端序、高低位)是否正常;
5.代码逻辑问题,通讯没有完成就开始做判断了。添加如下代码进行等待:WAIT UNTIL MODBUSM_STATE<>1,表示等待消息结束,最多等待1s,为消息超时时间,获取消息或超市后变为相应值;
自定义通讯,GET #读取字符一直等待或print#写入无反应
问题描述:使用GET #读取字符数据一直等待;print#写入无反应
排查方法:
1.检查串口参数读取是否正常,检查波特率,数据位,停止位,串口号是否正确,可以通过?*SETCOM查看当前的所有串口配置;
2.打开设备管理器,检查有无设备,检查串口端口号是否正确,检查驱动是否安装正确;若是232转usb,检查是否安装USB接口的驱动或查看驱动是否安装正确;
3.检查RS232串口线接口与控制器接口是否对应得上;
4.检查串口线是否有问题,是否是交叉线,排查串口线是交叉线还是直连线;
5.使用串口调试助手测试是否正常;
6.通讯任务推荐使用单独任务执行;
7.增加延时判断是否超时接收;
8.上述几点检查无问题后仍无法连接可能是串口损坏,需更换串口线;
解决方案:GET#推荐使用语法3,4来进行操作,会返回读取到的字节数;使用语法1,2时,一直没读取到数据时会进行等待,程序易堵塞。
一、Basic编程基础
1.寄存器
通过MODBUS直接访问一些系统状态
通过特殊的MODBUS寄存器可以访问IO,轴参数等。
控制器直接从MODBUS_BIT地址10000开始与输入IN口对应,20000与输出OUT口对应(注意读取的IO是原始的状态,INVERT_IN反转输入指令不起作用),30000与PLC编程的S寄存器对应。
MODBUS_IEEE地址10000开始对应轴DPOS区间,11000开始对应轴MPOS区间,12000开始对应轴VP_SPEED区间。
MODBUS_REG的13000开始对应模拟量DA输出区间,14000开始对应模拟量AD输入区间。
M8000:只要PLC处于运行状态,M8000的常开触点一直保持闭合。可以作为需要一直驱动程序的 输入条件以及作为控制器的运行状态的显示来使用。 M8001:只要PLC处于运行状态,M8001的常开触点一直断开。 M8002:PLC从停止到运行的时候,M8002仅在第一个扫描周期内导通一次,一般用于初始化参数和 程序复位,或者批量赋值。 M8003:PLC从停止到运行的时候,M8003断开第一个扫描周期,然后恢复常闭状态。 M8011:是以10毫秒为周期时间,在这10毫秒内M8011的触点接通5MS,断开5毫秒,不断重复循 环。 M8012:是以100毫秒为周期时间,在这100毫秒内M8011的触点接通50MS,断开50毫秒,不断重 复循环。 M8013:是以1秒为周期时间,在这1秒内M8011的触点接通500MS,断开500毫秒,不断重复循 环。 M8014:是以1分钟为周期时间,在这1分钟内M8011的触点接通30秒,断开30秒,不断重复循 环。 M8020:加减运算结果为零时,M8020就会置位,反之则为复位状态。 M8021:减法运算结果小于负的最大值时,借位标志位动作。 M8022:加法运算结果大于正的最大值时,进位标志位动作。 M8023:小数点标志。 M8100-M8199:轴0-99的IDLE标志 M8200-M8299:轴0-99的BUFFER剩余标志 M10000~:IN(0)对应M10000地址,IN(1)对应M10001地址,以此类推。 M20000~:OP(0)对应M20000地址,OP(1)对应M20001地址,以此类推。
D8001:版本 D8004:错误 D8010:扫描时间 D8011:扫描最小时间 D8012:扫描最大时间 D8013:秒 D8014:分 D8015:时 D8016:日 D8017:月 D8018:年 D8019:星期 D10000-D10198:DPOS,浮点方式,每个轴占1个MOBBUS_IEEE。 D11000-D11198:MPOS,浮点方式,每个轴占1个MOBBUS_IEEE。 D12000-D12198:VPSPEED,浮点方式,每个轴占1个MOBBUS_IEEE。 D13000-D13128:AOUT,模拟量输出,每个通道占1个MOBBUS_REG。 D14000-D14256:AIN,模拟量输入,每个通道占1个MOBBUS_REG。 |
掉电保存数据
VR的数据是掉电保存的,可反复读写,寄存器空间有限。
数据量较大的可以写入FLASH,上电时再读取出来,注意FLASH不要频繁读写,有读写次数限制十万次。
2.运动指令
(1)单轴指令
CANCEL后运动还在执行
规划层面:
1.CANCEL缺省模式为取消当前运动但缓冲区内的运动不取消,使用CANCEL(2)立即停止;
2.检查CANCEL(2)后,是否还在下发运动命令;
3.检查加减速度有无设置,不存在绝对的立刻停止,通过设置FASTDEC参数为很大值,可以使得限位、报警或RAPIDSTOP(2)时可以快速停止;
4.急停速度过小,同3;
5.预留刹停距离过小,比如限位感应片长度过短导致限位信号时间较短;
6.CANCEL的轴号要正确;不要只对插补从轴使用CANCEL指令;
7.对于手轮等电子齿轮同步运动,CANCEL主轴从轴若不会立即停止,注意Clutch_Rate是否为0且从轴速度/加速度比例较小。
执行层面:
1.驱动器内部的S曲线设置需为0,由控制器规划S曲线;
2.驱动器刚性参数。
datum21调用时,往mpos等于0运动
解决方法:
1.若使用的是pdo设置-1,驱动器配置中未加入6060,未配置回零模式,则会导致回零异常。
2.驱动器回零模式将当前位置设置为0。
DATUM(13)实际往负向回零的可能原因
解决方法:
1.可能原点信号极性反了,检测原点传感器的信号是否是默认常闭;
2.可能是电机方向反了,检查手动运动的方向是否一致;
3.限位信号极性错误,或者正负限位原点信号绑定错了;
4.程序问题,datum(13)触发后又调用了其他负向回零模式;
5.原点信号误触发。
DATUM(3)碰原点不停止异常问题
参考现象:轴位于原点以及负限位之间,驱动一个轴,用回零模式3,会有偶发性的情况,碰到原点不掉头,一直往正向跑。然后出现这个情况的时候,停止轴运动,再重新驱动轴往负向走,就会一直往正向撞机。
排查步骤:
1.手动运动确认电机方向;
2.通过示波器抓取波形,确认是有偶发性出现运动控制走正向,实际运动方向相反,且撞到负限位的情况;
3.检查控制程序逻辑,通过关闭上位机软件,用ZDevelop编写脚本,复现上位控制逻辑,且重复运动,若出现同样的问题,则进行下一步;
4.检查硬件接线,是否采用双绞屏蔽线,更换后再单独接线测试;
5.检查是否固件问题或控制器老旧问题;可考虑更换新老运动控制器,更新新老固件,若依然出现这个情况;
6.检查基础参数设置;改加减速,回零参数验证;(若无法解决则进行下一步);
7.排查是否为驱动器问题,可能为步进电机执行问题。
(2)多轴指令
整圆插补有时不执行
解决方法:
1.整圆插补必须使用相对圆弧插补MOVECIRC,不能使用绝对圆弧,也不能用MOVECIRC2;
2.控制器是否支持插补指令,使用在线命令[?*max]查看最后一行信息(最后一行信息表示控制器所支持的功能);
3.圆心画圆时,圆的轨迹参数设置不合理,不是一个数学几何意义上的整圆;
4.走圆过冲中碰到异常停止(如圆弧过程中某个轴碰到软限位)。
插补运动使分轴速度保持
参考现象:base(X,Y,Z)三个轴走多段插补运动时,运动中未改动X轴的SPEED,但X轴速度时快时慢,怎么让X轴保持同一个速度运行?
解决方案:
1.插补运动时,矢量速度恒定,各轴速度视运动距离自动规划,故分轴的速度会发生变化;通过指令INTERP_FACTOR=1,0,0 可以设置X轴速度保持不变。注意在单轴运动时一定要将INTERP_FACTOR恢复至1,否则会飞车;
2.直线运动,可以尝试切换MOVE_PTP;
3.如果不要求同时到达目标位置,可以YZ插补,插补过程中对X使用MOVE_ASYNMOVE。
设置了连续插补但是没效果
解决方案:
1.检查Merge是否设置在插补运动的第一个BASE轴上;
2.运动中是否有延时导致缓冲运动不连续,延时会打断插补运动连续性;
3.若运动指令为小线段,检测是否小线段运动时间太短,导致PC这边发运动的速度没有运动跑的快导致;
4.是否设置SP运动或轨迹前瞻等限制速度的操作,会对插补速度有影响(如设置了SP速度,设置了拐角减速等);
5.确认当前控制器是否支持连续插补功能;
6.多条插补间加入了 MOVE_DELAY,MOVE_WAIT之类指令,也会导致减速;
7.切换主轴,连续插补MERGE程序中被关闭。
轴停止命令不生效,缓冲区执行basic代码,运行过程中执行轴停止命令不成功。
参考现象:轴停止命令不生效,缓冲区执行basic代码,运行过程中执行轴停止命令不成功。
可能原因:控制器的运动缓冲数较少,一次性下载的运动命令太多,每个轴的运动缓冲空间是有限的,当扫描太多运动指令放入运动缓冲区时,多级运动缓冲区全部被塞满,如果程序继续扫描到更多的运动指令,程序也会被堵塞,直到运动指令依次完成并退出,运动缓冲区有了空位,运动指令才会继续进入运动缓冲区,轴停止指令只能把当前运动和缓冲运动取消掉,之前被堵塞的运动指令刚好因为运动缓冲区中的运动被取消了,运动缓冲区有了空位,就把之前被堵塞的运动指令写入缓冲区,所以造成轴停止命令不能让轴停止下来。
解决方法:
1.用运动暂停指令来让停止轴;
2.快速多次的输入轴停止命令;
3.Basic死循环的时候,直接停止任务,使用halt 或者stoptask指令;
4.上位机:先停止上位机线程,再发送停止命令。
(3)同步运动指令
CAMBOX指令使用,运动出现误差
解决方案:
1.当前轴运动的总时间由参考轴的运动距离和轴速度确定,速度自动匹配;
2.TABLE数据需要手动设置,TABLE的第一个数据为引导点,建议设置为0。因为凸轮走的数据是相对于起点来说的相对距离;
3.确保指令传递的距离参数*units是整数个脉冲,出现浮点数会导致运动有细微误差;
4.同一段运动分段使用分成多个CAMBOX,凸轮启动的位置要做处理,确保是分段的起始位置;
5.TABLE数据细分不够会导致规划轨迹变形;
6.对于长凸轮表,不要在运动中修改TABLE里的位置值。
CONNECT同步运动丢脉冲
参考现象:CONNECT指令同步会丢脉冲问题,主从轴速度差较大时CLUTCH_RATE设0也会丢失。
解决方案:
1.脉冲当量为浮点数时,同步也有精度丢失;
2.可以考虑使用ADDAX新模式设置比例解决。
(4)位置相关指令
编码器mpos和dpos有误差(运动过程中反馈位置mpos相对规划位置dpos有误差,大部分现象是滞后)
滞后:命令由控制器发出后,驱动器响应并执行动作存在一定的延迟。这个延迟包括驱动器接收信号后的处理时间以及执行动作所需的时间。位置滞后可能导致机械运动的同步性和精确性受到影响,从而影响整个加工过程的质量和效率。
可能原因1:使用伺服驱动器出现滞后
解决方案:
1.位置环的参数设置对于减少位置滞后非常关键。可通过调整位置环的比例增益和积分时间常数,可以优化伺服驱动器的响应性能,减少位置滞后,提高系统的动态性能。此外,位置环的前馈增益也可以用来改善高速响应特性,但需要在不引起振荡的前提下进行调整。有些伺服直接调整刚性等级自适应增益,或可自动识别惯量调整增益。
2.速度与加减速的比例不匹配,根据实际机台调试。
可能原因2:使用步进驱动器出现位置滞后
解决方案:
1.初始速度和加速度设置不当:如果初始速度过高或者加速度过大,可能会导致步进电机丢步或堵转,从而引起位置滞后。
2.控制信号线可能受到设备其他信号的影响,或者驱动器受到干扰信号的影响,这些干扰可能导致步进电机误动作,进而引起位置滞后。
3.如果选用的步进电机力矩偏小,在加速或高速运行时可能会出现丢步,导致位置滞后。
4.速度与加减速的比例不匹配,根据实际机台调试。
3.轴参数与轴状态指令
(1)基本参数指令
无法设置轴类型ATYPE,每次设置都出现fail
排查方法:
1.排查轴物理地址是否支持。
2.在总线轴中,总线初始化脚本中DRIVE_PROFILE模式是否设置正确,如需设置ATYPE=67(力矩模式),则DRIVE_PROFILE模式需设置带CST模式的模式,如17,18,30,31其中任一模式。
3.排查是否超过了控制器最大实轴数量(实际控制电机运动的的轴,具体可查看RTSys软件中[控制器状态]界面中RealAxises一栏的值)
4.排查轴映射语法是否正确。总线轴映射、扩展的脉冲轴映射、本地脉冲轴重映射以及MotionRT7控制卡子卡上的轴映射时的语法都不一致,具体参考《RTBasic编程手册》中AXIS_ADDRESS指令介绍。AXIS_ADDRESS-轴地址设置.docx
4.程序结构与流程指令
(1)数据定义指令
数组越界问题
可能原因:由于起始索引为0,结束索引为数组长度减去1,越界程序报错。
排查方法:
1.使用前确保声明数组放程序开头;
2.排查数组下标的值。例如设置空间大小为10的数组,数组下标只能设置为0到9;
3.排查是否超过控制器所支持的最大长度。
5.输入输出相关指令
(1)输出相关指令
AOUT不输出电压问题
参考现象:AOUT设置输出指定电压值,实际不输出。
排查方法:
1.检查IO电源有没有接上 ;
2.确认一下接线有没有接错;
3.模拟量电源是否和控制器电源分开;
4.使用EtherCAT总线扩展模块的模拟量子模块时,模拟量量程未设置或未对应上,用SDO_WRITE指令写数据字典设置;
5.若程序中存在多个连续aout指令,则需添加延时指令处理。由于刷新周期的问题只生效前面的aout指令,因此建议在两条aout指令之间加30ms以上的延时;
6.若程序中存在多个连续aout指令,则建议在两条aout指令之间加30ms以上的延时。
6.报错问题
1000H报错问题
可能原因:1000h报警主要为设置的SPEED*UNITS超过MAX_SPEED导致。如果是插补运动则为设置的MSPEED*UNITS超过MAX_SPEED导致。
解决方案:
1.适当增大MAX_SPEED,但不要超过硬件手册的最大脉冲频率;
2.将驱动器细分降低;
3.控制运行速度和加速度;
4.脉冲当量设置太大;
5.电机齿轮比指令调整,不建议在控制器上修改电机齿轮比,在驱动器上里面修改电机齿轮比;
6.检测有无叠加,叠加轴超max_speed。
100000H报错问题
可能原因:一是瞬间速度大于MAX_SPEED,二是从叠加轴引起主轴报错。前者可能由move_pt这一类指令导致。
解决方案:可以通过设置正确的速度,使轴的最大瞬间速度不要超过MAX_SPEED。
排查方法:
1.叠加失速问题导致;
2.修改了电机齿轮比,不建议修改电机齿轮比。
6099报错6090031h问题
可能原因:报6090031是参数值太高,问题在于驱动器那边的单位是圈,而控制器给的速度是乘上脉冲当量的,这导致控制器这边传输过去的速度值报6090031h。6099是驱动器回零速度。
解决方案:回零前将脉冲当量修改为1在启动驱动器回零就能解决了。
排查方法:
402协议错误码:写入数据异常
总线扫描RTSys/ZDevelop出现6015(EtherCat总线初始化失败,错误码6015/ EtherCat总线初始化失败,报错6015/总线初始化报应答包WKC错误/6015)
参考现象:
解决方法:
6015是驱动器在扫描时返回的应答报错,可能原因有以下几点:
1.驱动器的固件更新过,通讯周期可能对不上,确定驱动器通讯周期范围,检查是否和控制器周期一致。控制器的总线通讯周期设置范围可通过RTSys软件或者ZDevelop软件的在线命令下发[?*MAX]进行查询;
2.尝试提高控制器的总线通讯周期看看是否可以解决问题。控制器的通讯周期设置可通过RTSys软件或者ZDevelop软件的在线命令下发指令修改如:[SERVO_PERIOD=2000],设置完成后控制器需断电重启后生效;
3.驱动器的控制通讯方式选择错误,部分驱动器控制通讯方式分为脉冲控制和总线控制,部分驱动器需要手动设置更改控制通讯方式,可通过驱动器的调试软件修改或驱动器控制器面板修改,修改为总线控制;
4.驱动器固件问题,咨询驱动器厂商看看能否升级固件。
配置XML文件,slot_scanRTSys/ZDevelop报错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:
解决方法:
1.通常是PDO配置内容驱动器不支持导致,可以将DRIVE_PROFILE的模式设置成0或者-1观察是否正常。
2.驱动器可能和串口进行通讯交互数据,有些驱动器厂家只有一种通讯方式,需要进行切换,切换时需先关闭串口通讯,再转为总线通讯方式进行总线初始化。
现象参考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。
上位机2033报错问题
参考现象:客户的连接句柄正常(点动接口可以使用),原点指令的参数也直接使用数字,但报错2033,2033是表达式中碰到不认识的名称(未定义的变量或数组)。
排查方法:
1.检查库文件是否有问题,将验证过的回零例程运行,观察是否有报错;
2.检查控制器是否有问题,在线命令执行原点指令,观察能否正常回零;
3.检查控制器状态,查看控制器固件版本,将固件更新到最新版本,观察是否可以正常运行。
7.存储相关指令
(1)FLASH相关指令
FLASHVR使用注意事项
FLASHVR(-1)指令仅会保存默认的32万个TABLE寄存器,如果用TSIZE指令修改TABLE寄存器的数量大于32万,超出部分的TABLE寄存器不会被保存。
解决方案:若要使用TSIZE修改TABLE空间,建议用FLASH_WRITE和FLASH_READ手动控制,不用FLASHVR指令。
一、注意事项
ARM 的so2022.rar里面的 libzmo.so库, 使用LOCAL接口调用ZAUX_DirectCommand指令时。该接口参数2的命令字符串不能超过100字节。
二、常见问题
上位机掉线检测问题/上位机连接不上控制卡
解决方案1:判断函数返回值来确认
(每个API都有返回值,获取返回值,对照错误码列表即可)
解决方案2:在定时器里面,上位机给控制器发送信息,下面接收到了就是不掉线,没接收到就掉线,一般用给变量赋值的形式实现就行。
排查方法:
1.确认是否存在IP冲突,使用动态IP时容易出现IP冲突;
2.确认网口网线是否稳定,可以尝试更换抗干扰性能更好的网线;
3.确认库是否正常,建议更新防掉线库;
4.同步对比RTSys是否掉线;
5.排查网络资源是否被抢占(如存在交换机、千兆相机、万兆网等情况),以及WIFI IP是否冲突,建议使用独立网卡;
6.排查是否电脑休眠影响,建议禁用电脑休眠;
7.排查控制器连接端口是否已被占满,可通过port_status指令打印查看端口状态;
8.排查网卡参数是否有误,推荐设置百兆全双工,并禁用网卡的节能模式;
9.可使用eth_mode指令修改合适的网口模式;
PC发送命令限制
问题描述:运动缓冲区满了,此时继续往缓冲区存入指令。
解决方案:命令下发之前就需判断缓冲区是否已满。可在程序中用 ZAux_Direct_GetRemain_Buffer接口获取参数轴剩余缓存并且做个判断,确认存在剩余缓存后才可往缓冲区写入指令。
PC发送运动指令却不运动的原因?
排查方法:
1.排查控制器BASIC程序是否不断地调用停止指令,可通过清零上次停止原因观察;
2.检查基础轴参数的配置,是否存在UNITS太小、ATYPE=0、SPEED=0等配置;
3.排查是否一直下发同一个绝对位置指令;
4.查看轴状态有无报错(ZAux_Direct_GetAxisStatus),如果报错则可排查是否碰到限位、常开常闭传感器是否对应(需进行信号反转);
5.排查轴是否使能、电机刹车是否关闭、伺服电机是否已经报警、联轴器的皮带轮是否有松动、电机是否堵转;
6.检查硬件接线,如检查脉冲轴差分/单端接法是否正确,万用表测导通;
7.脉冲轴接法,检查INVERT_STEP脉冲模式设置是否设置正确,默认脉冲方向模式;
8.打印运动指令返回值,是否可正常返回成功值;
9.排查驱动器限位是否已生效,建议用驱动器软件手动运动排查是否运动正常;
10.排查驱动器高速线和低速线切换时是否存在引脚不一致的情况、并且驱动器参数是否需要重新配置
MotionRT7连接上位机掉线问题
解决方案:取消MotionRT7中配置的License参数;带卡使用时无需配置该参数,不带卡使用时才需配置。(注:此软件试用版存在3小时试用期)
上位机通过网口扫描不到控制器的排查步骤
排查方法:
1.排查RTSys/ZDevelop能否扫描到控制器;
2.排查网线接线是否正确;
3.观察板卡RUN灯和ALM灯是否亮起且闪烁,若有此情况则存在,则硬件异常的问题;
4.确认控制器IP是否被修改,可以使用串口连接成功后,通过RTSys/ZDevelop软件打开控制器状态,查看控制器IP;
5.确认能否Ping通;
6.确认是否存在网段冲突;
7.确认网口通道数量有无被连接满,可通过在RTSys/ZDevelop软件[在线命令]中发送指令[?*PORT_STATUS]打印网口通道数量查看;
一、PCI系列
扫描不到PCI卡问题
参考现象:使用pci卡与工控机通讯,设备管理器扫描不到pci卡的标志。
问题分析:
1.检查判断工控机是否连接过多扩展板或其他设备,连接过多设备可能易导致工控机供电不足,由此导致pci卡无法上电则扫描不到;
2.在设备管理器检查PCI/PCIE卡驱动是否安装,是否匹配。
故障排查方法:尝试进入BOIS增加主板检测时间,不一定有效,部分主板限制延时检查的内容,如仅生效硬盘检测,内存检测,如配置不生效请联系主板供应商提供延时检测的BOIS升级主板固件。
故障排查步骤:
1.先卸载驱动XPCIe、PCI与PCIe控制卡驱动;
2.尝试仅软重启操作系统,不断电是否能够读取到PCI设备,如每次软重启操作系统均能读取到卡;
3.尝试步骤2后拔出电源等待主板完全断电后重新上电是否能读到PCI设备,如每次断电均不能读到,则判断与故障原因匹配;
4.执行步骤2和步骤3均出现偶尔读到偶尔读不到PCI设备的情况,检查XPCIe、PCI与PCIe控制卡槽是否全部被使用,如卡槽使用过多,尝试减少使用卡槽至一个;
5.执行步骤4故障无法解除,清除XPCIe、PCI与PCIe控制卡金手指的氧化层,排查卡与卡槽接触问题;
6.执行步骤5故障无法解除,尝试更换卡槽位置,排除卡槽问题;
7.执行步骤6故障无法解除,尝试更换同类型XPCIe、PCI与PCIe控制卡以及第三方PCIe/PCI卡,排除卡本身问题;
8.执行步骤7故障无法接触,寻求相关技术人员帮助。
二、VPLC系列
VPLC7开不了机的可能原因(VPLC7开不了机/ VPLC7开机后自动关机)
参考现象:
1.插上电源后按开机键vplc7没反应;
2.插上电源按开机键后vplc7开机后,一会儿又自动关机。
解决方法:
1.检查电源线是否接通电源;
2.检查电源正负是否接反;
3.检查电源供电功率是否够。
三、通用问题
控制卡死机或者插入的指令不运行现象
客户提问:
在使用大量运动指令的过程中
1. Basic运行中,程序卡在运动指令中。
2. PC运行中,调用运动指令返回 20003
可能原因:
由于每个轴的运动缓冲空间是有限的,当扫描太多运动指令放入运动缓冲区时,多级运动缓冲区全部被塞满,如果程序继续扫描到更多的运动指令,程序也会被堵塞,直到运动指令依次完成并退出,运动缓冲区有了空位,运动指令才会继续进入运动缓冲区。
通过REMAIN_BUFFER指令可以查看剩余缓冲个数。
解决方法:
查看remain剩余运动缓冲数量,将插入逻辑改为有缓冲则插入。
IF REMAIN_BUFFER(1) > 0 THEN '如果有剩余缓冲,调用直线运动指令
MOVE(10)
movetime = movetime +1
ENDIF
PC函数库解决此问题方法类似
控制器掉线问题(控制器掉线)
参考现象:
1.检查网线是否松动,将网线水晶头压好或更换网线;排除干扰问题,可尝试更换超六类带屏蔽网线观察效果;
2.修改控制器网口模式ETH_MODE;
3.修改防掉线库;
4.检查控制器是否重启,结合Basic代码进行验证;
5.利用wrieshark查看在连接中断之前是否有广播类型的消息或大量的广播包;
6.如下图,查看电脑中的这个服务是否开启,如果开启则禁用。
控制器与驱动器相连接,上电后控制器会关机
解决方案:
1.检查是否使用了控制器轴口里面的24V给驱动器的工作面板供电,轴口的24V功率不足,不能给驱动器供电;
2.检查控制器供电,检查电源是否被短接;
3.建议排查时先给控制器单独供电,拔掉控制器上所有IO端子和轴接口,观察控制器是否正常,排除控制器硬件问题。然后依次接线,排查接线问题。