
前阵子帮客户调试一条小型装配线遇到了一个挺有代表性的问题。设备上装了十几只三菱MR-JET伺服但机械行程限位开关的位置离驱动柜很远客户不想在每个驱动器CN3端子都拉一根长线就问我能不能把限位全部接到PLC输入点再由PLC把这些信号“告诉”伺服驱动器。我当时答复说能做而且三菱GXWORKS3环境下有非常成熟的刷新配置方案。不过我也提醒了一句你在GXWORKS3里配置的不是简简单单“把限位信号转进去”而是把限位的控制权从驱动器端子转移到了PLC程序与通信链路这一步想明白调试就顺想不明白轻则伺服报警重则行程过冲撞机。这篇文章就围绕MR-JET伺服限位信号的PLC刷新方案展开讲清楚为什么要这样做、底层机制是什么、GXWORKS3里具体怎么配置、程序怎么写最后把我实际调试中踩过的坑一并整理出来。适合正在做三菱伺服选型、设备调试或者改造老设备的电气工程师、PLC程序员参考。1. 限位信号设计思路为什么伺服要看PLC“脸色”1.1 硬接线方案有多少痛点传统三菱伺服限位几乎都是硬接线处理。限位开关直接接到伺服驱动器CN3端子上正限位进LSP脚负限位进LSN脚同时配合DOG原点狗信号、EM1急停信号一起接。信号一旦触发伺服驱动器的内部硬件电路直接生效立即按参数设定的停止方式减速停止、零速钳位、急停等让电机停住。这个过程不需要PLC干预响应时间是硬件级的几毫秒甚至更快而且CS轴控制器轴即使掉线伺服本身依然执行限位。这种方案最大的优点是“物理即安全”限位保护不依赖任何上位逻辑断线时如果选用常闭触点还能触发报警。但它也有很现实的痛点。第一是布线成本设备上十几台伺服每台都要从行程开关拉一对线到驱动器CN3端子走线远、桥架乱、端子排占地方排查故障时那一大把线让人头疼。第二是灵活性差工艺调整时行程位置改了硬接线方案要重新走线、改端子甚至换传感器。第三是信号资源紧张CN3上LSP/LSN/DOG/EM1这些输入点数量有限如果设备还要做多段限位、区域检测端子数根本不够用。这些痛点让很多电气工程师宁可把限位信号全部挪到PLC输入模件上再从PLC侧做逻辑处理。1.2 通信式控制带来了什么新选项MR-JET系列伺服的一个明显变化是把通信控制能力提到了新的高度。它支持CC-Link IE TSN等工业以太网总线方式也支持传统脉冲串方式。当采用总线通信控制时PLC与伺服之间不再是“只发脉冲、不管状态”的关系而是一个周期性的数据交换链路。PLC每个扫描周期都要把控制指令字、速度指令、使能位、限位状态等数据刷新到伺服驱动器同时从伺服读回当前位置、速度、报警代码、状态字等内容。这时候“限位信号刷新”就有了新的实现路径。硬件上限位开关只需要接到PLC的输入点比如X0、X1PLC程序里把这两个输入状态经过软件逻辑处理后写到总线刷新映射区的指定位上。伺服驱动器通过通信周期收到这个位状态后内部就会把它当成硬件LSP/LSN信号来响应执行相应的行程末端停止逻辑。从驱动器“眼里”看限位信号确实出现了只是来源不是CN3端子而是通信刷新。这种做法的优势一眼就能看出来。布线工作量大幅下降所有限位信号都在PLC侧完成几十个点集中处理驱动器侧只需要一根通信总线。逻辑上更灵活可以在写入刷新区之前叠加软限位判断、急停联动、原点区域内允许反向运动之类的工艺逻辑。调试维护也方便直接在GXWORKS3里监控软元件状态就能判断限位信号进没进来不用拿万用表去驱动器端子上量。代价则是实时性依赖通信周期和PLC扫描周期安全性上比物理硬接线多了一层软件依赖所以整套方案必须想清楚什么场合能用、什么场合不能用。1.3 硬接线还是PLC刷新怎么选很多人问过我既然PLC刷新这么省事是不是所有场合都能用。我的建议向来是先评估安全等级再做技术取舍。下面这个对比表格是我平时选型时习惯用的物理硬接线响应速度硬件级电气独立性高PLC故障不影响安全性强但布线性差、灵活性低、信号点数受端子限制。PLC刷新限位响应速度依赖扫描周期与通信周期电气独立性低PLC故障时保护可能失效安全性较弱但布线性好、灵活性高、逻辑可以任意扩展。硬接线PLC刷新双链路响应速度兼顾二者安全性最强但成本增加、接线工作量依然存在适合安全要求高的场合。所以我的结论很明确真正用于机械防撞、人身安全或者设备本体保护的行程末端限位能硬接线尽量硬接线PLC刷新最多作为辅助逻辑而工艺性限位、区域检测、换向限位、条件判断这类不直接参与安全保护的信号完全可以交给PLC刷新来处理。这个判断标准比任何参数配置都重要因为方案选错了后面程序写得再漂亮都白搭。2. MR-JET限位信号的底层机制与映射关系2.1 伺服内部的行程末端逻辑不管限位信号来自CN3端子还是通信刷新MR-JET伺服内部对行程末端的处理逻辑是一致的。伺服规定了两个边界正方向行程末端和负方向行程末端分别对应LSP和LSN信号。当正限位信号有效时伺服会禁止正转方向的运行负限位信号有效时禁止反转方向的运行。如果运行中突然触发限位伺服会根据参数中预选的行程末端停止方式来决定怎么停下来。三菱伺服常见的行程末端停止方式大致分三类。一类是“零速钳位停止”限位触发后伺服立即按零速伺服锁定处理保持当前位置这种停止方式最快但对机械冲击也最大。一类是“减速停止”伺服以设定的减速时间让电机缓慢停下来机械冲击小但停止距离相对长。还有一类是“动态制动停止”限位触发后伺服用动态制动器让电机快速制动适合大惯量负载。具体用哪种方式在MR-JET伺服参数中有专门的项目来选择调试时一定要根据负载的转动惯量和机械刚性来定不建议上来就选零速钳位尤其是大惯量转盘类机构那种工况下零速钳位很容易损坏减速机或者联轴器。2.2 通信刷新时信号落在哪个位置当MR-JET工作在总线通信控制模式时伺服驱动器的输入信号被映射到通信缓冲存储器的某个字或者某几个位里。GXWORKS3里做刷新配置本质就是把PLC侧指定的一段软元件区和伺服驱动器侧缓冲区建立对应关系。比如你把PLC的M1000到M1015这16位软元件映射到伺服控制字的一号缓冲区那么M1000就对应控制字第0位M1001对应第1位以此类推。其中某些位就承担了LSP/LSN限位信号的输入职责。这个映射关系在GXWORKS3界面上一目了然。配置好刷新参数后软件会列出伺服侧缓冲存储器的位定义你只需要把每个信号位对应到一个PLC软元件即可。例如正限位信号映射到M1010负限位信号映射到M1011急停信号映射到M1012。PLC程序里对该软元件赋值通信周期一到伺服驱动器就收到了这个信号。这个过程很容易理解但实际操作中有个地方特别容易搞错刷新方向搞反很多人以为刷新是把伺服状态读进PLC结果把控制字位也给“只读”了限位信号死活写不进去这个问题我在后面排查部分会细讲。2.3 关键参数告诉伺服限位信号从哪里来硬接线方案使用时MR-JET默认从CN3端子的LSP/LSN引脚读取限位信号。到了通信刷新方案中必须通过伺服参数把限位信号来源切换到通信通道否则即使PLC侧把对应的刷新位置位了伺服也不会采信。这个参数在MR-JET使用说明书的“参数一览”章节中能找到大致功能就是把“正限位输入源”和“负限位输入源”从“外部端子输入”改成“网络输入”或“通信刷新输入”。注意不同批次固件的MR-JET参数编号和项目名称可能有细微差别所以严谨的做法是打开对应版本的手册搜索“行程末端”“LSP”“LSN”这几个关键词然后逐项确认。除了输入源选择还要同时检查行程末端停止方式参数以及通信断开时的处理参数——这三项是联动的。如果只改了输入源、没改停止方式限位触发后电机停得不符合预期如果没改断线处理参数那么通信一旦掉线伺服可能直接失去限位保护这是非常危险的。我的习惯做法是参数改完后用伺服调试软件或者GXWORKS3的伺服监视功能手动置位刷新区的对应位观察驱动器状态是否从“运行允许”切换成“正限位有效”确认无误后再联动机械机构测试。3. GXWORKS3环境下的完整配置流程3.1 新建工程与伺服组态GXWORKS3的基础操作这里不多讲重点说伺服限位刷新相关的部分。新建工程时PLC类型按实际硬件选FX5U、L系列或者iQ-R系列都可以。工程建好后在“智能功能模块”下添加MR-JET伺服。GXWORKS3导入伺服配置后会自动生成伺服参数界面和通信刷新界面。如果是CC-Link IE TSN组网先要把网络拓扑建好设置好主站参数并把伺服从站的站号与驱动器实际拨码设置保持一致。这一步有个容易被忽略的地方添加伺服模块时软件会让你选择伺服型号和通信协议版本。MR-JET系列有不同软件版本功能码和缓冲区定义有细微差别一定要按驱动器铭牌上的实际型号和固件版本去选。选错型号的后果是后续很多刷新地址和信号映射看起来正常但下载到PLC后伺服根本不响应。我调试时习惯先在GXWORKS3的模块诊断页面确认连接状态看到“正常”或者“准备完成”字样后再进入下一步绝不跳过连接检查。3.2 轴参数与限位项设置在GXWORKS3左侧导航栏打开“轴设置”页面找到对应的伺服轴进入参数明细。三菱运动控制系统里轴参数通常分成基本参数、限位参数、伺服参数、定位参数等几个页签。限位刷新方案主要关注两个区域行程末端参数和软件限位参数。行程末端参数里把正限位输入类型和负限位输入类型改成“网络输入”或者“通信刷新输入”具体选项名称取决于GXWORKS3版本和模块类型。这一步与伺服驱动器本身的参数是联动的软件提示你“该设置将反映到伺服参数XXXX号”时直接确认即可。软件限位参数则是一个附加保护层在伺服内部行程限位之上再叠一层逻辑判断。比如你把软件限位I/O参数设置成PLC刷新值那么PLC可以在程序中动态改变限位范围实现“根据当前工位切换行程区间”这样的工艺需求非常实用。实际配置过程中我建议把行程末端停止方式与限位来源放一起确认。GXWORKS3轴设置页里一般会有“行程末端停止模式”下拉框常见选项是立即停止、减速停止、动态制动停止。现场机械刚性一般、负载惯量中等时我优先选减速停止并配合合适的减速时间如果机械结构脆弱还可以再设置一个较长的减速斜坡。总之这一项务必结合负载特点来不能只图“最快停住”。3.3 刷新映射设定把限位信号拉进PLC侧轴参数设好之后继续在GXWORKS3里找到“刷新参数”或“通信刷新设置”页面。三菱总线伺服控制都有类似“I/O刷新”的功能核心是建立PLC软元件与伺服缓冲存储器的映射关系。两种刷新方向都要配。第一种是伺服→PLC方向比如把当前位置、实际转速、报警代码等状态字映射到PLC的D寄存器方便程序和触摸屏监视。第二种是PLC→伺服方向把控制字、指令速度、限位信号位映射到PLC的M软元件。限位刷新属于第二种。我把伺服控制字中“正限位”对应的位映射到M1010“负限位”映射到M1011映射完成后GXWORKS3会自动在刷新列表中显示起始软元件和点数。关于刷新周期GXWORKS3里通常可以选择“恒定周期”或“与CPU扫描同步”。这里不需要一味追求最快因为限位信号本身来自PLC输入再快也不过是扫描周期级别的响应。我给客户设置时一般选择恒定周期、通信周期选择满足伺服控制要求的最小稳定值比如1ms或2ms没有必要为了限位信号去牺牲网络负载。真正的响应瓶颈在PLC扫描周期所以如果你的工艺对限位响应时间有硬性要求还是要考虑把限位逻辑放到中断程序里或者干脆走硬接线。3.4 样例程序限位读取与刷新逻辑程序逻辑其实不复杂但细节决定成败。下面给出一段典型的限位刷新样例程序以FX5U为例梯形图和ST混排思路// 限位信号刷新样例FX5U MR-JETCC-Link IE TSN刷新方式 // X0正限位开关常闭触点断线可检测 // X1负限位开关常闭触点 // M1010刷新映射区正限位位 // M1011刷新映射区负限位位 // M1100通信正常标志总线诊断结果 // 第1段输入采集与滤波防止限位信号抖动造成伺服误动 LD X0 ANI M1200 // M1200是程序内设置的“限位禁用”标志工艺复位时使用 OUT M1300 // M1300正限位有效中间变量 LD X1 ANI M1201 // M1201为负限位禁用标志 OUT M1301 // M1301负限位有效中间变量 // 第2段通信状态判断通信异常时强制输出“限位有效”安全方向 LD M1100 // 通信正常 INV SET M1302 // M1302通信异常限位强制标志 // 第3段执行刷新输出断电时保持正限位有效、禁止运动 LD M1300 AND M1100 OUT M1010 // 正限位刷新到位 LD M1301 AND M1100 OUT M1011 // 负限位刷新到位 LD M1302 RST M1010 // 通信异常复位正限位输出 RST M1011 // 通信异常复位负限位输出整个程序的逻辑核心有三个点。第一是中间变量做了信号预处理把机械抖动和工艺屏蔽条件过滤掉避免限位信号在临界区域反复翻转导致伺服频繁启停。第二是通信状态与限位输出联动一旦通信异常程序主动把限位输出全部撤掉让伺服进入行程末端保护状态宁可报警停机也不给运行机会。第三是刷新区软元件直接输出没有额外换算因为GXWORKS3的映射已经完成了位对应程序侧只需要保证布尔值正确即可。这里特别提醒M1010、M1011这些软元件属于刷新专用区程序里不要再把它们挪作他用。我见过有人图省事直接在程序里用M1010做其他中间继电器结果伺服限位信号出现莫名其妙的误触发查了半天才发现是软元件资源重复使用导致的。3.5 程序下载与在线监视验证程序写完后按照“先改参数、后下载程序”的顺序操作。我个人习惯是编译通过后先下载参数到PLC和伺服再下载程序然后做一次“上电复位”。“RUN中下载”虽然GXWORKS3支持但在伺服限位这类安全相关参数上稳妥起见还是让设备停机状态下操作。验证环节不要一上来就动机械机构。在GXWORKS3的“软元件批量监视”窗口强制置位M1300观察刷新区M1010是否变为ON同时打开伺服的“状态监视”页面确认驱动器识别到“正限位有效”。确认通信链路正常后再用手动按压限位开关实物看PLC输入点是否有变化、刷新映射区是否跟着变化。一套流程走下来硬件接线、PLC程序、通信链路就都验证到位了之后才轮到机械联动测试。4. 调试故障排查这些坑我替你踩过了4.1 限位刷新以后伺服纹丝不动现场最常见的现象是PLC侧软元件明明是ON刷新配置看着也没问题但伺服就是不理你限位报警不报、运动也不禁止。排查顺序第一步看伺服参数确认限位输入源到底切换了没有。很多人只改了GXWORKS3轴设置里的“网络输入”选项忘了在伺服驱动器的SIP参数里确认导致驱动器依旧认为限位来自外部端子而CN3上实际什么信号都没接限位自然永远无效。第二步看刷新映射方向。伺服缓冲存储器里的控制字通常是读写的但个别位是只读。如果映射时把位放到只读区域程序怎么赋值都写不进去。GXWORKS3的刷新设置页面会显示每个字的读写属性反复核对一遍别依赖肉眼记忆。第三步看软元件重叠。刷新区起点设得不好和程序中其他M点使用区域重叠会导致限位位被程序其他指令改写。我建议刷新区专门规划一段连续M区程序中一律不占用需要中间变量另外划分区域这样排查时直接查映射就行。4.2 限位动作慢半拍位置超限PLC刷新限位最怕的就是延迟。正常情况下限位开关从硬件翻转到PLC输入刷新到程序扫描写入刷新区再到伺服通信周期接收并执行行程末端停止整个链路会有几毫秒到十几毫秒不等的延迟。如果机构速度快、惯量大又没有预留减速距离这个延迟足够让机械位置冲过度限位点。处理办法不外乎几个方向。第一把限位读取与刷新逻辑放到PLC定时中断程序里独立于主扫描周期执行这样可以显著缩短信号延迟。第二合理设置行程末端停止方式中的减速时间伺服收到限位后能按照预定的减速斜坡停下不要每次都零速钳位零速钳位虽然瞬时停住但机械冲击大位置还不能完全保证。第三在工艺允许的前提下让限位开关的安装位置比实际需要多留几十毫米的物理余量把通信延迟吃掉。总之PLC刷新的限位更适合工艺性保护硬安全需求请务必回到硬接线方案。4.3 通信断开瞬间限位状态丢失导致报警总线通信最让人头疼的就是通信异常。一旦CC-Link IE TSN链路断开刷新数据停止更新伺服可能会把最新的限位状态保持住也可能直接按照断线参数处理。如果伺服参数中“网络异常行程末端处理”没有设置默认行为可能是“限位无效”这让设备失去了行程保护非常危险。我的做法是在伺服参数中把“通信断线行程末端处理”和“通信断线运行指令处理”都设为“行程末端强制有效”或“停止”。同时PLC程序中保留通信监视标志一旦通信诊断从正常变为异常立即执行一段安全输出程序停止所有轴使能指令把限位刷新位强制复位让伺服处于行程末端保护状态。程序里M1302这个标志就是干这个的。通信恢复后不要直接自动复位报警一定要人工确认设备状态再执行复位操作。这个逻辑写起来不难但却是PLC刷新方案能不能被安全验收的关键。4.4 GXWORKS3操作中的典型失误除了通信问题GXWORKS3本身的误操作也容易出幺蛾子。最常见的是“RUN中下载”搞错对象本来只想更新程序结果连伺服参数一起写进去了导致驱动器瞬间重新初始化。其次是不注意注释与软元件关联GXWORKS3修改软元件注释后如果不做“全局编译”下载时注释丢失调试时找不到对应点。第三个典型失误是轴号与驱动器实际站号不匹配程序里是轴1通信配置里却是站2刷新数据完全错位监控看着数据在动实际驱动的是另外一台伺服。针对这些问题我调试时养成了一套固定习惯。项目开始前先整体规划软元件分配表哪些是输入区、哪些是输出区、哪些是刷新区、哪些是中断区白纸黑字写清楚避免资源冲突。参数修改记录在案每次下载前对照一遍绝不凭感觉操作。伺服参数在原始出厂值基础上做备份文件一旦现场调乱一键还原省去跟铭牌和手册重新对参数的痛苦。这些习惯看起来不起眼但真能帮你省下无数加班时间。5. 安全冗余方案与个人建议5.1 硬接线与PLC刷新如何组合我在实际项目里最推荐的结构是“安全硬接线兜底、工艺限位PLC刷新”双链路。具体做法是每个伺服驱动器的CN3端子接上最主要的两个行程末端限位开关用于机械行程终极保护而其余大量工艺限位、区域检测、换向信号全部接PLC输入点走刷新方案。这样接线的负担会小很多安全等级也保住了。如果成本允许还可以再给驱动器加一路EM1急停硬接线构成完整的硬件安全链路。PLC刷新的那一路限位在程序中可以继续叠加软限位逻辑。比如根据设备的不同工作模式动态调整软限位范围或者在某段区域内允许向限位方向低速点动这些都是硬接线做不到的。但要注意所有软件层限位逻辑的优先级必须低于硬件限位程序里做任何试验都不应该让软逻辑“解锁”硬限位触发的状态。5.2 把限位状态做到可视化监控一个小建议把限位信号和刷新结果做到触摸屏或者上位机上。不需要什么高级功能就是几个指示灯而已。正限位开关哪一个动作了、刷新区对应位有没有置位、伺服有没有识别到限位这些状态做成一个“限位状态总览”画面调机和维护时非常有价值。实际故障发生时操作工和维修工看屏幕就能定位不用再去配电柜扒线测量。实现方式也简单把PLC侧的输入点、中间变量、刷新区软元件对应到触摸屏的位指示灯即可。注意信号名称做到人机界面上时尽量显示中文注释的完整描述比如“三号工位正限位开关”比简单的“X50”对现场维护人员友好得多。这些细节看起来小却能让整套系统的可维护性提升一个台阶。我在实际项目中还有一个体会每次做限位刷新调试都要先想清楚“这个限位失效了会发生什么”然后反向推导需要几步保险。不要急着接线、急着写程序、急着试机。把安全逻辑想透比把参数改对有价值得多。这套思路不仅适用于MR-JET也适用于所有总线型伺服算是通用方法论了。