ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

汇川PLC运动控制实战:从轴配置到多轴调试的避坑指南

汇川PLC运动控制实战:从轴配置到多轴调试的避坑指南 1. 从一台伺服调不通说起汇川PLC运动控制到底难在哪很多人第一次用汇川PLC带伺服梯形图写完了程序下载进去了结果轴一动不动。查了半天接线没问题伺服使能灯也亮了就是不走。最后发现是MC_Power指令的Enable引脚没保持住或者轴号配置和实际硬件对不上。这类问题在汇川PLC的运动控制调试中太常见了不是逻辑有多复杂而是细节没对齐。汇川PLC的运动控制指令体系本质上和CODESYS标准是一致的。MC_Power、MC_MoveAbsolute、MC_MoveRelative、MC_MoveVelocity、MC_Home、MC_Reset这一套指令做运动控制的人应该都不陌生。但汇川的Easy系列和AM系列在具体实现上有差异尤其是Easy320这类小型PLC轴配置方式和中型PLC不完全一样。很多教程只讲指令怎么填参数不讲为什么这么填结果换个项目就懵了。这篇内容面向的是已经会用汇川PLC做基础逻辑控制、但运动控制还没跑通的工程师或者之前用三菱、西门子做运动控制、现在要转到汇川平台的同行。我会从轴配置、指令调用、梯形图编程结构、调试排错几个维度展开重点讲清楚每个参数背后的逻辑以及实际项目中容易踩的坑。不是照着手册念而是把调试过程中真正会遇到的问题摊开来说。2. 轴配置与硬件映射运动控制的地基2.1 轴号分配与伺服驱动器的对应关系汇川PLC的运动控制轴号不是随便定的它和硬件配置强绑定。在AutoShop或者InoProShop里你需要先在硬件配置中把伺服驱动器挂到总线上然后给每个驱动器分配轴号。这个轴号就是后续所有MC指令里Axis引脚的来源。以Easy320配合GL20系列模块带伺服为例假设你用EtherCAT总线挂了三个伺服驱动器那么在轴配置界面里第一个驱动器默认轴号是1第二个是2第三个是3。但这里有个容易忽略的点轴号是逻辑编号不是物理站号。物理站号是总线上的顺序逻辑轴号是你自己分配的。如果项目里轴比较多建议在轴配置表里做好标注不然后期维护很痛苦。注意轴号一旦分配好程序里所有MC指令的Axis引脚都必须和这个编号一致。改轴号意味着所有相关指令都要改所以前期规划好后期别乱动。2.2 单位换算与电子齿轮比设置运动控制里最让人头疼的不是指令本身而是单位换算。MC_MoveAbsolute指令里的Position参数单位是什么是脉冲是毫米还是度这取决于你在轴配置里怎么设的。汇川PLC的轴配置里有一个“单位换算”设置项。你需要告诉系统电机转一圈对应多少脉冲机械移动多少距离。比如伺服编码器是17位那电机转一圈就是131072个脉冲。如果丝杆导程是10mm那电机转一圈机械移动10mm。那么电子齿轮比就是131072脉冲对应10mm。设置好之后MC_MoveAbsolute的Position参数就可以直接写毫米了。比如写100就是移动到100mm的位置。这个换算关系一定要在轴配置里设对否则程序里写的数值和实际移动距离对不上调试的时候会非常困惑。我见过一个项目工程师在轴配置里没设单位换算程序里MC_MoveAbsolute写的是1000他以为是1000mm结果实际移动了1000个脉冲电机几乎没动。查了半天以为是伺服参数问题最后发现是单位没设。2.3 软限位与硬限位的配置逻辑运动控制的安全边界靠限位来保证。硬限位是物理传感器接到PLC的输入点或者伺服驱动器的限位输入。软限位是在轴配置里设的软件边界超过这个位置PLC会报错并停止轴运动。软限位的设置逻辑是这样的假设你的机械行程是0到500mm那软限位可以设成-5到505mm留一点余量。这样即使程序里写了一个超出范围的位置轴走到软限位就会停不会撞到硬限位。但这里有个坑软限位只在轴使能并且回零之后才生效。如果轴没有回零当前位置是未知的软限位判断就不准。所以标准流程是上电后先回零再使能再执行运动指令。顺序错了软限位可能不起作用。3. MC_Power与使能逻辑轴动不起来的第一嫌疑人3.1 MC_Power指令的引脚含义与常见误用MC_Power是所有运动控制指令的前置条件。轴没有使能后面所有MC_Move指令都不会执行。MC_Power的引脚不多但每个都有讲究。Enable引脚是使能输入必须保持为TRUE轴才会一直处于使能状态。如果你用点动按钮触发Enable松手就变成FALSE轴就失能了。正确做法是用一个自锁回路或者置位指令让Enable保持。Axis引脚填轴号这个前面说过了。Enable_Positive和Enable_Negative是正负方向使能一般默认都设为TRUE。但如果你的机械结构不允许某个方向运动可以在这里限制。Status引脚是使能状态输出TRUE表示轴已经使能成功。Busy引脚在使能过程中为TRUE使能完成后变FALSE。Error引脚和ErrorID引脚用于报错诊断。实操心得调试的时候先把MC_Power单独拿出来测试确认Status变成TRUE之后再写后面的运动指令。不要一上来就把所有指令都写好出了问题不好定位。3.2 使能保持与急停回路的梯形图写法使能保持的梯形图写法有很多种我推荐用置位/复位指令来做。用一个启动按钮置位一个M变量这个M变量接MC_Power的Enable。急停按钮复位这个M变量同时触发MC_Halt或者MC_Stop。// 梯形图伪代码示意 // 启动按钮X0 置位 M100 // 急停按钮X1 复位 M100 // M100 接 MC_Power.Enable // X1 同时触发 MC_Halt.Execute这种写法的好处是逻辑清晰急停的时候既断使能又触发停止指令双重保护。有些工程师只用MC_Halt不停使能轴停了但还处于使能状态如果这时候有外力推动机械伺服会抵抗可能造成电机过热。3.3 使能失败的错误码排查路径MC_Power的ErrorID会给出具体的错误码。常见的使能失败原因有几个伺服驱动器没上电、总线通讯没建立、轴配置里的驱动器型号和实际不匹配、伺服有报警没清除。排查顺序建议这样先看伺服驱动器面板有没有报警有报警先清报警。然后看PLC的总线通讯状态EtherCAT总线的话看从站是否都处于OP状态。再看轴配置里的驱动器型号和实际是否一致。最后看MC_Power的ErrorID具体是多少查手册对应解决。我遇到过一次使能失败ErrorID报的是轴配置错误。查了半天发现是轴配置里选的驱动器型号是IS620P实际用的是IS620N型号差一个字母配置就对不上。这种问题不看错误码很难想到。4. MC_MoveAbsolute绝对定位梯形图编程的核心指令4.1 绝对定位与相对定位的选择依据MC_MoveAbsolute是绝对定位Position参数是目标位置的绝对值。MC_MoveRelative是相对定位Distance参数是相对于当前位置的偏移量。什么时候用绝对定位当你的机械系统有明确的位置坐标系比如0点是原点每个工位都有固定的绝对位置那就用绝对定位。换型的时候只需要改Position参数不用关心当前在哪。什么时候用相对定位当你的动作是“往前走100mm”这种相对运动不关心绝对位置就用相对定位。比如送料机构每次送固定长度用相对定位更直观。但要注意绝对定位的前提是轴已经回零当前位置是已知的。如果没回零绝对定位的目标位置就没有意义。相对定位不依赖原点但多次相对定位会累积误差。4.2 梯形图中MC_MoveAbsolute的完整调用结构一个完整的MC_MoveAbsolute调用需要包含以下几个部分触发条件、指令实例、参数赋值、状态处理。触发条件一般用上升沿触发Execute引脚。不要用电平触发否则指令会反复执行。用上升沿指令或者用一个M变量的上升沿。指令实例需要分配一个背景数据块汇川PLC里叫功能块实例。每个轴的运动指令最好用独立的实例不要多个轴共用一个实例否则状态会冲突。参数赋值包括Position、Velocity、Acceleration、Deceleration、Jerk。Position是目标位置Velocity是最大速度Acceleration和Deceleration是加减速Jerk是加加速度用于平滑加减速过程。状态处理包括Done、Busy、Error、ErrorID。Done在定位完成后变TRUE可以用这个信号触发下一步动作。Busy在运动过程中为TRUE。Error和ErrorID用于诊断。// 梯形图伪代码示意 // M200上升沿触发 MC_MoveAbsolute.Execute // MC_MoveAbsolute.Axis : 1 // MC_MoveAbsolute.Position : 100.0 // MC_MoveAbsolute.Velocity : 50.0 // MC_MoveAbsolute.Acceleration : 100.0 // MC_MoveAbsolute.Deceleration : 100.0 // MC_MoveAbsolute.Done 触发下一步4.3 多轴顺序动作的梯形图编排技巧多轴顺序动作是运动控制里最常见的场景。比如一个三轴机械手先X轴移动再Y轴移动再Z轴移动。梯形图里怎么编排最简单的方式是用步序控制。定义一个步序变量每个步序触发一个轴的运动指令Done信号触发步序加一。这种写法逻辑清晰容易调试。但要注意步序切换的时候上一个轴的指令Execute要复位否则下一个周期可能重复触发。另外如果某个轴运动过程中报错步序要能停下来并报警。还有一种方式是并行执行多个轴同时运动。这时候要注意轴之间的干涉以及总运动时间由最慢的轴决定。并行执行的梯形图编排相对复杂建议用状态机的方式来做。实操心得多轴顺序动作调试的时候先把每个轴单独调通确认每个轴都能正常定位。然后再串起来做顺序动作。不要一上来就调整个流程出了问题不知道是哪个轴的问题。5. 回零与急停运动控制的安全底线5.1 MC_Home回零模式的选择与参数配置回零是运动控制里绕不开的一步。汇川PLC的MC_Home指令支持多种回零模式每种模式对应不同的机械结构和传感器配置。最常见的回零模式是“找原点开关Z相信号”。机械上有一个原点接近开关轴运动时碰到开关然后寻找伺服电机的Z相信号找到后停止并设当前位置为原点。这种模式精度高但需要原点开关和Z相信号都正常。还有一种模式是“找原点开关编码器零脉冲”和上面类似只是用编码器零脉冲代替Z相信号。效果差不多。如果机械上没有原点开关可以用“撞硬限位回零”模式。轴往一个方向运动撞到硬限位后停止然后反向找第一个Z相信号作为原点。这种模式不需要额外的原点开关但对机械结构有要求不能撞坏。MC_Home的参数配置里HomingMode选择回零模式Position设原点位置偏移Velocity设回零速度。回零速度一般分两段快速寻找原点开关慢速精确找Z相信号。5.2 急停链路中MC_Halt与MC_Stop的区别急停的时候用MC_Halt还是MC_Stop这两个指令有本质区别。MC_Halt是暂停轴按照设定的减速度停下来但保持使能状态。停下来之后如果再给一个MC_MoveAbsolute指令轴可以继续运动。MC_Halt不影响轴的使能状态。MC_Stop是停止轴停下来之后会进入“停止”状态必须用MC_Reset复位之后才能再次使能。MC_Stop相当于一个软急停轴停了之后不会自动恢复。急停链路的设计建议普通暂停用MC_Halt安全急停用MC_Stop。如果急停按钮按下后需要人工确认才能恢复用MC_Stop更合适。如果只是临时暂停用MC_Halt。但要注意MC_Stop之后必须调用MC_Reset否则轴一直处于停止状态无法使能。这个复位操作可以放在急停恢复按钮的逻辑里。5.3 回零失败与限位触发的排查流程回零失败是调试中经常遇到的问题。排查流程可以按这个顺序来先看轴有没有使能没使能先使能。再看回零模式选的对不对机械上有没有对应的传感器。然后看回零速度是不是太快太快可能冲过原点开关。再看Z相信号有没有接到PLC或者伺服驱动器。如果回零过程中触发限位说明回零方向反了或者原点开关位置不对。这时候需要手动把轴移到原点开关附近再重新回零。限位触发后轴会停止并报错。需要用MC_Reset复位错误然后手动反向移动轴离开限位区域。有些工程师在程序里写了自动反向离开限位的逻辑但要注意安全反向移动的速度要慢。6. 调试工具与实战排错从报错到跑通6.1 用在线监控定位梯形图逻辑问题汇川PLC的编程软件支持在线监控可以看到梯形图里每个变量的实时状态。调试运动控制的时候在线监控是必不可少的工具。监控的时候重点看几个变量MC_Power的Status、MC_MoveAbsolute的Busy和Done、Error和ErrorID。如果Status一直是FALSE说明使能没成功。如果Busy一直是TRUE但轴不动说明指令执行了但轴没响应可能是硬件问题。如果Error变TRUE看ErrorID查手册。在线监控还可以强制变量比如强制MC_Power的Enable为TRUE看轴能不能使能。但强制变量要小心调试完成后一定要取消强制否则程序逻辑会乱。6.2 常见错误码的含义与快速处理汇川PLC运动控制的错误码有很多常见的几个错误码含义处理方式16#8001轴未使能检查MC_Power是否执行成功16#8002轴处于错误状态用MC_Reset复位16#8004位置超出软限位检查目标位置是否在软限位范围内16#8006回零未完成先执行MC_Home16#8009轴正在运动中等待当前运动完成再触发新指令16#8010参数超出范围检查Velocity、Acceleration等参数这些错误码在汇川的手册里都有详细说明但手册不会告诉你实际调试中哪个错误码最常见。根据我的经验16#8001和16#8009是最常见的。前者是使能问题后者是指令触发太频繁。6.3 从手动调试到自动运行的过渡要点手动调试的时候工程师习惯用按钮触发每个动作一步步确认。但切换到自动运行的时候逻辑就不一样了。自动运行需要把手动按钮的逻辑改成步序控制或者状态机。每个动作的Done信号触发下一步而不是靠人工按按钮。这时候要注意Done信号的上升沿要用好不要用电平否则步序会跳步。另外自动运行的时候要考虑异常处理。比如某个轴运动超时没完成要报警并停止流程。再比如急停按下后自动流程要能安全停止并记住当前步序恢复后从断点继续或者重新开始。实操心得手动调试和自动运行的逻辑最好分开写用模式切换变量来切换。不要混在一起否则调试的时候容易乱。手动逻辑可以写得简单直接自动逻辑要写得严谨完整。7. 从单轴到多轴运动控制程序的架构思路7.1 功能块化编程在运动控制中的应用单轴调试的时候程序怎么写都行。但轴多了之后如果每个轴都复制粘贴一遍代码维护起来就是灾难。这时候需要用功能块化编程。汇川PLC支持自定义功能块你可以把单个轴的控制逻辑封装成一个功能块输入输出定义好然后每个轴调用一次这个功能块。轴号、速度、位置这些参数通过功能块接口传入。这样做的好处是逻辑只写一遍改一处所有轴都生效。新增轴的时候只需要多调用一次功能块不用重新写代码。调试的时候也方便每个轴的状态独立监控。功能块的设计要注意每个轴的运动指令实例要放在功能块内部不要用全局实例。否则多个轴调用同一个功能块会冲突。7.2 轴间同步与插补的初步实现多轴同步是运动控制的高级话题。最简单的同步是两轴同时启动、同时到达但这对机械精度要求高实际很难做到完全同步。更实用的方式是主从同步一个轴作为主轴另一个轴跟随主轴运动。汇川PLC支持电子齿轮和电子凸轮功能可以实现轴间同步。电子齿轮是速度同步主轴走多少从轴走多少比例可调。电子凸轮是位置同步从轴的位置根据主轴位置按凸轮曲线变化。插补是更高级的功能两轴或多轴联动走直线或圆弧。汇川的中型PLC支持直线插补和圆弧插补但Easy系列可能不支持。做插补之前先确认PLC型号是否支持。7.3 程序可维护性与后期扩展的平衡运动控制程序不仅要能跑还要好维护。我见过很多项目程序写得很复杂但换个人就看不懂改一个小功能要花好几天。提高可维护性的几个建议变量命名要规范轴号、位置、速度这些关键参数用有意义的变量名不要用M100、D200这种。程序结构要清晰手动逻辑、自动逻辑、报警逻辑分开写。注释要写清楚尤其是参数的计算过程不然后期没人知道这个数值是怎么来的。扩展性方面轴配置和程序逻辑要解耦。轴号、软限位、回零参数这些放在配置数据里程序逻辑从配置数据读取。这样增加轴或者改参数的时候只需要改配置不用改程序。8. 几个让我印象深刻的调试案例8.1 轴使能后自己慢慢移动的问题有一次调试一台设备轴使能之后没有给运动指令但轴自己慢慢往一个方向移动。速度很慢但确实在动。查了半天发现是模拟量输出有零点漂移伺服驱动器收到了一个很小的速度指令。这种问题在模拟量控制的伺服系统里比较常见。解决办法是在轴配置里设置一个死区或者用总线控制代替模拟量控制。汇川的伺服现在大多支持EtherCAT总线用总线控制就不存在零点漂移的问题。8.2 绝对定位位置偏差的排查过程另一个案例是绝对定位的位置总是差一点比如目标100mm实际走到99.5mm。反复调参数也没用。后来发现是电子齿轮比设错了。编码器分辨率是131072丝杆导程是10mm但机械上还有一级减速机减速比是2:1。实际电机转两圈机械才走10mm。电子齿轮比应该是262144脉冲对应10mm而不是131072。改过来之后位置就准了。这个案例说明机械参数一定要搞清楚减速比、导程、编码器分辨率一个都不能错。不然后面所有位置都是错的。8.3 多轴顺序动作中Done信号丢失的处理多轴顺序动作的时候偶尔会出现某个轴的Done信号丢失步序卡住不动。查了很久发现是Done信号的上升沿太短PLC扫描周期没抓到。解决办法是用置位指令把Done信号锁存步序切换后再复位。或者用Done信号的上升沿触发一个M变量步序判断这个M变量。不要直接用Done信号做步序切换条件因为Done可能只在一个扫描周期内为TRUE。这个问题的根源是PLC的扫描机制。运动控制指令的状态更新和PLC扫描不同步Done信号可能在一个扫描周期内出现又消失。所以关键状态信号一定要锁存。9. 写在最后一些个人体会运动控制调试这件事说难不难说简单也不简单。指令就那么几个参数也就那些但实际项目中遇到的问题千奇百怪。我的经验是先把单轴调通再调多轴。先把手动逻辑调通再调自动逻辑。先把正常流程调通再调异常处理。另外手册一定要看但不能只看手册。手册告诉你指令怎么用但不会告诉你什么时候会出问题。多动手多记录每次调试遇到的问题和解决办法都记下来下次遇到类似的就能快速定位。汇川PLC的运动控制功能这几年进步很快Easy系列现在也能做比较复杂的运动控制了。但不同型号的功能差异还是有的选型的时候要确认清楚。做项目之前先确认PLC型号支持哪些运动控制功能不然后期发现功能不够用就麻烦了。
返回列表