
做自动化设备这些年我碰到最多的一个场景就是一台PLC既要管好几根伺服轴又要同时和上位机、触摸屏、变频器、扫码枪、仪表做数据交换。三菱的Q系列PLC在这类项目里出镜率极高尤其是Q系列配上QD77MS2运动控制模块再带上MR-J4-B系列伺服几乎成了多轴伺服控制的标准套餐。今天这篇就拿一个实际项目来拆把Q系列多轴伺服系统的架构怎么搭、轴控程序怎么写、多设备通讯怎么规划以及调试过程中那些文档里不会写的坑一次讲透。如果你正要上三菱Q系列项目或者在为“轴怎么动、数据怎么传”发愁这篇文章可以帮你省掉至少一周的摸索时间。1. 项目拆解一台Q系列PLC如何撑起“多轴多通讯”的系统骨架1.1 先看清需求这个项目到底要解决什么任何控制系统项目第一步不是画图、不是写程序而是把需求拆清楚。我经手的这类项目典型的场景是这样的一台自动化装配设备有4到6根伺服轴分别负责上料、搬运、定位、压装、下料等动作设备旁边还有上位机用来下发配方、采集产量和报警触摸屏给操作工看状态、做手动操作扫码枪需要读取条码还有几台变频器或者仪表需要和PLC交换数据。这个项目标题里的三个关键词——多轴伺服、多设备通讯、Q系列PLC其实就对应了三个核心问题多轴伺服谁来做运动控制QD77MS2怎么和MR-J4-20B通讯位置怎么算、加减速怎么配程序怎么写才能让轴稳定、准确、不报警。多设备通讯上位机、触摸屏、扫码枪、变频器、仪表分别走什么接口、用什么协议PLC这边是“零代码自动应答”还是“轮询主站”数据区怎么规划才能不打架。Q系列PLC为什么选Q系列而不是FX系列CPU、运动模块、通讯模块怎么组态模块之间的软元件映射和I/O分配如何统一规划。把这三个问题想清楚整个项目的框架就出来了。1.2 系统架构与硬件选型思路先说结论Q系列PLC在多轴伺服项目里最常见的架构是“CPU模块 运动控制模块QD77MS2 SSCNET III光纤总线 MR-J4-B系列伺服”的组合。通讯侧则根据设备情况配上以太网模块QJ71E71-100、串口模块QJ71C24N以及CC-Link总线模块QJ61BT11N。这个架构选型的理由很直接三菱Q系列CPU本身不做运动控制运动控制由QD77系列模块完成。CPU负责逻辑控制、人机交互和通讯调度运动模块负责伺服位置闭环两者分工明确不会出现CPU运算负担过重导致轴动作卡顿的问题。QD77MS2是2轴运动控制模块通过SSCNET III光纤控制伺服驱动器。SSCNET III是专用的高速串行同步网络抗干扰能力强、配线简单一根光纤就解决了脉冲指令、反馈、报警、参数读写比传统脉冲控制少了一大堆接线。MR-J4-20B后缀的B就表示SSCNET III接口版本200W的伺服驱动器配同功率伺服电机在中小型自动装配设备上非常百搭。20B是B系列的200W型号20表示200WB表示SSCNET III通讯型如果轴数多可以换成QD77MS4四轴或QD77MS16十六轴。Q系列另一个优势是模块化程度高。CPU、运动模块、通讯模块都插在基板上I/O编号、软元件地址跟着模块的起始地址走改配置不伤逻辑后期扩展轴数或者加通讯设备不需要推翻整台设备的程序。1.3 为什么不是FX系列也不是单独的伺服控制器可能有人会问三菱FX5U也支持定位指令为什么非要用Q系列我的实际体会是FX系列的定位指令虽然有但多轴同步、插补、复杂曲线运动、大容量定位数据管理以及同时带多路通讯时的实时性确实不如Q系列专用运动模块。单独的伺服控制器比如只用MR-J4做内置定位也能实现单机台动作但设备一旦要联网、要和上位机交互、要集中处理报警和状态没有PLC做中枢就很费劲。Q系列在这里的价值是“中枢”两个字逻辑归它、运动协调归它、通讯调度归它伺服和仪表都是它的外围设备。所以如果你面对的是一台PLC带动多根轴、同时连接多种外部设备的中大型设备Q系列QD77MS2通讯模块的组合是目前三菱体系里最成熟、最稳妥的方案之一。2. 轴控设计QD77MS2与MR-J4-20B的配对细节2.1 QD77MS2的软元件映射与模块分配首次接触QD77MS2的人最容易卡住的地方是模块装上去之后程序里怎么控制它Q系列运动控制模块不像FX那样用几个定位指令就行它有一套独立的软元件映射规则。每个QD77系列模块在工程配置里会分配一组内部继电器和内部寄存器用来和运动模块通讯。以常见的默认配置为例轴1的控制信号通常从M3200附近开始轴2从M3210附近开始每10个点一组分别对应启动、停止、复位、回原点启动、当前位置预设等功能。位置数据、速度、加减速等则分配到对应的数据寄存器比如轴1的定位地址存放在D0开始的连续寄存器中。但注意这里说的“通常”只是常用默认值实际地址由模块的起始I/O号决定。在GX Works2里添加QD77MS2后一定要打开“软元件分配”标签核对实际的位号和寄存器号。我见过不少工程师直接抄以前项目的M3200结果模块起始地址和旧项目不一样程序里控制的是空气轴一点反应都没有。调试的时候建议打开GX Works2的“智能功能模块监视”窗口直接看定位模块的当前位置、BUSY状态、定位完成标志、报警标志确认软元件映射对不对。这个窗口比你在程序里加几十个监视点有效得多。2.2 伺服参数设置与电子齿轮比计算QD77MS2和MR-J4-20B之间走SSCNET III伺服驱动器的很多参数可以通过运动模块写但必要的基础参数还是要在驱动器侧先设好。MR-J4-20B本体上有一个小显示屏和几个按键可以直接设置参数也可以接上MR Configurator2软件在线改后者方便很多。伺服侧核心参数是电子齿轮比。QD77MS2设置的是“每指令单位的脉冲数”MR-J4设置的是指令脉冲分频分子/分母两者最终效果是等价的。拿一个实际项目举例丝杠导程是20mm我希望PLC侧的位置单位是1μm也就是0.001mm那么伺服电机每转一圈需要20000个指令单位。MR-J4伺服电机的编码器分辨率是4194304脉冲/转那么电子齿轮比就是4194304 / 20000约分后等于131072 / 625。分子131072分母625设进去就对了。实际设参数时QD77MS2侧的“单位”参数建议直接选mm齿轮比分子分母填上面算出来的值MR-J4侧的电子齿轮比参数Pr 0B、Pr 0C在走SSCNET III时也可以由定位模块统一管理这时伺服侧的齿轮比设成1:1即可。这样做的好处是以后改机械结构只改定位模块参数伺服那边不用动。电子齿轮比计算最常见的错误是编码器分辨率写错。MR-J4是4194304不是131072后者是MR-J3的分辨率。算之前先确认伺服型号不然位置偏差能跑到“飞出去”的程度。2.3 定位程序的骨架使能、回原点、JOG、自动定位轴控程序如果从头到尾写完整篇幅会很长但骨架其实就是这么几块伺服使能、报警处理、回原点、手动JOG、自动定位。每块都独立成一个程序段调试时也好单独验证。伺服使能很关键。MR-J4-B通过SSCNET III接收定位模块的命令定位模块侧有“伺服ON”软元件程序里要让这个信号一直为ON伺服驱动器才会处于就绪状态。如果程序运行了半天轴不动看伺服驱动器显示屏如果是“bb”状态就说明使能没给上。回原点增量式系统必须回原点上电后用一个“回原点启动”信号触发。我的做法是手动模式下加一个回原点按钮自动模式下程序里做个“未回原点禁止自动运行”的互锁否则生产时轴跑错位置会撞机。MR-J4-B带绝对位置编码器配合QD77MS2的绝对位置系统功能断电后不用重回原点但这个功能首次使用时必须做一次原点设定之后每次上电才能记住位置。项目里如果允许我强烈建议用绝对值模式能省掉每次开机回原点的等待时间。JOG运行手动调试时非常有用。调速速度写到速度寄存器JOG启动信号ON轴就动松开就停。调试时用JOG把轴移动到合适位置再设原点或当前位置。自动定位的梯形图逻辑用大白话写就是这样X10启动按钮上升沿 - 置位轴启动信号SET 等待定位完成信号 - 复位轴启动信号RST这里有个三菱定位模块的经典坑启动信号要的是“上升沿”程序里如果直接用OUT指令驱动启动信号模块内部处理完这一轮动作后会快速把它复位程序在下一个扫描周期又把它置ON两边“打架”轴会表现为“没反应”或者“反复微动几下停住”。正确的做法是用PLS或者差分指令先做一个上升沿脉冲再用SET置位启动信号等定位完成后再RST掉。这个细节几乎是所有第一次做QD77的人都会踩的坑。定位数据方面目标位置、速度、加减速时间写入对应的数据寄存器然后触发启动。如果项目里需要多个轴同时动作可以同时触发多个轴的启动信号或者在高精度同步场合使用QD77MS2的插补功能两个轴之间做直线插补或圆弧插补。插补的参数配置在模块参数里完成程序里只需要指定起点和终点。2.4 加减速与增益的实用参数建议很多新手把速度调得很高加减速时间设得极短结果就是伺服过载报警、机械冲击很大、定位不稳。实际上加减速时间不是“越小越快”而是要和负载惯量匹配。负载惯量越大加减速时间就要越长。MR-J4具有自适应惯量功能可以在MR Configurator2里做一次惯量测量把负载惯量比读出来再定加减速曲线。我的经验值一般装配设备速度给到额定转速的70%左右加减速时间给200ms到500ms起步试运行后根据实际振动情况再往上调。定位完成前有一段“到位等待时间”通常设10~50ms等轴完全停稳再给后级气缸或夹具动作信号能有效减少定位误差。增益参数刚开始不要猛调先用伺服自整定功能让它自己辨识然后手动微调位置环增益。位置环增益太高轴会抖声音很尖太低定位慢到位回弹严重。现场听声音、看轴抖动就能判断个大概。3. 多设备通讯三菱Q系列常用协议与轮询设计3.1 通讯网络规划谁走以太网、谁走串口、谁走总线多设备通讯的规划原则很简单先按设备数量、数据量、实时性要求分类再给每个设备分配接口和协议。直接用实例说明设备接口协议PLC侧模块备注上位机以太网MC协议TCPQJ71E71-100上位机读写PLC数据选自动应答模式触摸屏以太网三菱GOT专用协议QJ71E71-100直连GOT画面组态效率高变频器CC-LinkCC-Link协议QJ61BT11N循环数据一个扫描周期自动刷新扫码枪RS-232无顺序协议自由报文QJ71C24N数据量小用中断接收电表/仪表RS-485Modbus RTUQJ71C24NPLC做Modbus主站轮询远程I/OCC-LinkCC-Link协议QJ61BT11N节省现场布线以太网的优势是数据量大、速度快适合上位机和触摸屏串口适合点对点、数据量小、协议简单的设备CC-Link则适合需要周期性实时刷新的设备比如变频器、远程IO。要注意这里的“接口”选择不是硬性规定而是项目里按实际需求做的经验分配。如果你有一批仪表只支持Modbus RTU那串口模块就是必须的如果上位机要求OPC UA那往往还需要加一个网关或者由上位机侧做协议转换PLC这边只需要把数据放到公共数据区。3.2 以太网MC协议零代码自动应答的正确打开方式上位机要读PLC的数据以前很多人的做法是PLC侧自己写Socket通讯程序、自己拼报文这非常容易出错而且占扫描周期。Q系列以太网模块QJ71E71-100支持MC协议的自动应答功能。操作步骤很简单模块参数里设置IP地址、端口号比如常用5000然后启用“MELSEC通信协议自动应答”不需要在PLC程序里写任何通讯代码上位机发MC协议帧过来模块直接自动回复。你在GX Works2里把软元件地址比如D1000填对上位机那边就能读到生产数据。这个模式做项目最省心也最稳。它相当于模块自己开了个小服务器CPU只负责干活通讯的事情完全交给模块处理。排查问题时只需要确认上位机发的报文格式对不对与PLC程序无关。MC协议的报文分ASCII码和二进制两种格式上位机开发时要注意。如果是从零开始对接建议直接用三菱官方手册里的报文格式先用网络调试助手手动发一帧试试能读到D区数据再合入上位机程序会顺利很多。有些场景下上位机需要往PLC写定位数据。这时把目标位置写入D区PLC运动控制程序从D区读取定位数据然后触发定位启动。上位机和轴控就这样解耦了上位机只和D区说话PLC只和运动模块说话互不干扰。3.3 串口Modbus RTU与扫码枪自由报文QJ71C24N串口模块的两个口通常这样分配一个RS-232接扫描枪一个RS-485接Modbus RTU仪表组。扫码枪的协议读回来的是一串ASCII码通常以回车结束。程序里用串口中断接收收到回车后把一帧数据存入特定寄存器再通知主程序处理。整个过程类似“串口数据和业务逻辑隔离”避免在主程序里一帧一帧地拼字符串太占扫描周期。Modbus RTU这边QJ71C24N有内置的主站轮询功能可以配置多个从站地址周期性地读取保持寄存器或写入控制字。配置内容无非是从站号、功能码、起始寄存器、数据长度。这里面最容易被忽略的是超时时间。Modbus主站轮询每个从站如果超时会等待一段时间再切到下一个从站如果超时时间设得太长比如3秒一个站点掉线会导致整个轮询周期卡很久。建议单站超时300~500ms连续3次无响应才置通讯故障位既不会卡死也能及时报警。RS-485接线要记住A接A、B接B屏蔽层单端接地不要来回跨接。现场最常见的Modbus故障就是A/B反接和屏蔽层没接地严重时不仅通讯不通还会干扰其他设备。3.4 CC-Link总线变频器和远程IO的实时刷新CC-Link有几个优点一是不占用PLC的程序扫描时间数据在每次扫描周期自动刷新二是带传输确认从站掉站能马上知道三是接线简单屏蔽双绞线串接即可。QJ61BT11N作为主站从站设备变频器、远程IO分别设站号。模块参数里要配置“占用站数”比如有些变频器占2个站。占用站数设置错误后面的从站会全部无法识别这是CC-Link调试里非常典型的低级错误。CC-Link的数据分为远程输入输出RX/RY和远程寄存器RWr/RWw。比如变频器的启动停止命令写入RY速度给定写入RWw运行频率和电流通过RWr读回。有了CC-Link变频器这类设备就不需要再单独走串口或以太网了实时性更好而且掉站报警是硬性的不像Modbus那样要靠超时判断。3.5 数据区规划多设备通讯不打架的底层逻辑多设备通讯最容易出的问题其实是“数据打架”。上位机往D100写数据PLC运动控制又往D100写位置两边互相覆盖设备偶尔动作异常查起来非常痛苦。我的习惯是上电第一件事就画一张软元件地图。项目里的公共数据区通常是这样划分的软元件范围用途写入方读取方D1000-D1049上位机下发配方与命令上位机PLC主程序D1100-D1149设备状态、产量、报警上传PLC上位机D1150-D1169扫描枪数据PLC上位机D1200-D1229Modbus仪表采集数据PLC上位机D1300-D1319变频器状态与速度反馈PLC上位机RW0-RW3CC-Link远程寄存器PLC/变频器双方互读有了这张表程序里的人看到软元件就知道它是干嘛的上位机工程师拿到文档也不需要反复问PLC工程师“这个地址能不能用”。除了数据区划分还有一个很重要的机制叫“心跳”。上位机每500ms往D1000里写一个递增的数PLC在程序里比较这个值如果超过3秒没变化就判断上位机通讯中断然后按预设的安全策略处理比如暂停自动运行并报警。反过来上位机也会监控PLC侧的心跳寄存器。心跳是通讯项目里最便宜的保险它成本极低但能避免“设备通讯断了但机器还在半自动运行”的危险情况。4. 实操过程记录从接线到联调的完整步骤4.1 硬件安装与接线检查清单收到设备后第一步是把模块插好。Q系列模块支持在基板上自由插拔CPU、QD77MS2、QJ71E71-100、QJ71C24N、QJ61BT11N按顺序插入每个模块的起始I/O号由位置自动分配第一次上电前建议记下来。SSCNET III光纤维连接有点讲究MR-J4-20B上有两个光纤接口一个IN一个OUT一组伺服之间需要串接。QD77MS2的第一个SSCNET III口接第一台MR-J4-20B的IN第一台的OUT接第二台的IN以此类推。光纤线在接线时不能弯折半径太小SSCNET III光纤的耐弯折性虽然比老款好但半径太小还是会弄断光纤芯。现场建议把光纤线做固定不要和动力线、变频器输出线走同一个线槽虽然它抗干扰能力很强但信号线单独行走永远是电气布线的金科玉律。变频器、伺服驱动器、开关电源的接地问题也要重视三菱Q系列项目通常要求设备整体用星形接地PLC、伺服、变频器分别接到总接地点不要串接否则变频器的高频干扰会串到伺服回路上表现为轴偶尔抖动、通讯偶发超时。4.2 工程创建与定位参数设定步骤工程创建用GX Works2CPU型号按实际选比如Q03UDECPU。新建工程后在“智能功能模块”里添加QD77MS2配置以下核心参数轴数根据实际接的伺服台数选QD77MS2固定2轴4轴项目可以选择两块QD77MS2或者换QD77MS4。定位单位选mm后续所有位置数据直接以mm为单位程序里好换算。电子齿轮比分子/分母按前面算的填。加减速时间先填300ms运行后再调。原点回归方式推荐用“碰到原点传感器后减速停止”的模式比直接找原点开关的Z相更稳。绝对位置系统如果伺服电机配的是绝对值编码器启用此功能上电不用回原点。参数下载到PLC后在QD77MS2的监视窗口里能看到每个轴的位置数据。此时先做JOG测试让轴小幅移动观察显示值与实际移动距离是否一致。这里顺便检查电子齿轮比是否正确让JOG速度设为100mm/min运行10秒钟量出来的距离应该是约16.7mm偏差大就说明齿轮比有问题。伺服参数设置用MR Configurator2连接MR-J4-20B确认电机型号、编码器分辨率、电子齿轮比、旋转方向。有个细节旋转方向如果和程序里预期相反不需要改接线直接改伺服参数Pr 3的旋转方向选择就行。方向错了在调试时很常见改参数比改程序快得多。4.3 通讯模块配置步骤与调试工具以太网模块QJ71E71-100的参数在GX Works2里设置IP地址、子网掩码、端口号。启用MC协议自动应答后把端口号固定下来比如6000。现场用电脑的以太网调试助手比如TCP调试助手模拟上位机发送MC协议读请求如果能收到正确响应说明模块配置和MAC协议报文都对之后再让上位机工程师对接就轻松了。Modbus RTU这边QJ71C24N的配置在参数里选择“内置协议”添加Modbus主站功能然后逐个添加从站、功能码、起始地址、数据长度。先把从站设备仪表/电表挂在485总线上用电脑串口调试助手模拟PLC主站读一遍设备寄存器确认数据能正常返回再让PLC侧真正去轮询。扫码枪的调试接好RS-232后先在电脑上确认扫码枪输出格式回车结束、连续扫码模式等然后在PLC里写一个串口接收程序用监视窗口看D区收到的帧内容。注意扫码枪的数据是ASCII码写入PLC后需要做ASCII转HEX或者直接按ASCII比较判断条码正确性。4.4 整机联调顺序与时间节点整机联调最忌讳一上来就全自动跑。我的顺序是单轴手动JOG、回原点、单点定位确认每根轴的行程、速度、加速度都在合理范围手感顺滑。多轴配合先从两个轴开始按工艺动作一步步做比如搬运轴先移动到位压装轴再动作期间观察两个轴的完成信号是否正常衔接。加入通讯对象先让上位机只读状态产量、报警、轴位置确认读数据稳定再让上位机下发配方PLC自动切换参数定位观察定位结果。加入CC-Link变频器和远程IO确认RWR/RY映射正确变频器启停和速度给定正常。全自动连续空跑不带产品连续跑几十个循环观察有没有偶发报警、数据错乱期间同步监控伺服报警历史。每个阶段发现问题就停下来解决不要带着问题向上叠加。我的经验是联调阶段80%的问题都集中在通讯参数不匹配和启动信号时序上而真正难查的偶发故障往往出在地线和线缆布局。到了全自动连续空跑阶段如果30个循环都稳定后面带负载生产心里就有底了。5. 常见问题与排查技巧实录把项目里实际碰到的高频问题列一张表现场排查时可以对照着来。现象可能原因排查方法轴启动后没反应启动信号上升沿问题伺服未使能定位数据非法查程序启动信号是否用SET/RST看驱动器显示是否为bb看模块报警代码轴越走越偏电子齿轮比错误机械间隙未补偿重算齿轮比设反向间隙补偿用百分表验证移动距离SSCNET III断线报警光纤弯折半径过小光纤头接触不良EMG链路断开重新插光纤头检查每台伺服上电状态用MR Configurator2查报警历史上位机连不上PLCIP/端口不匹配防火墙拦截MC协议未启用用TCP调试助手直接测端口检查模块参数确认报文帧格式Modbus轮询超时站号重复波特率/校验不符A/B接反先用串口助手单测从站核对参数检查485接线CC-Link从站掉站站号或占用站数设置错误终端电阻缺失检查拨码核对占用站数查线缆端子伺服抖动或有异响增益过高负载惯量比过大用自整定重新辨识惯量降低位置环增益5.1 轴启动后没反应到底卡在哪里这是多轴伺服项目里出现频率第一的问题。遇到“启动信号给了轴不动”先看三处一是伺服驱动器显示屏如果显示“bb”说明伺服ON信号没有输入查程序里的伺服使能位二是QD77MS2监视窗口里的“报警代码”如果模块报“定位数据异常”或者“软件行程超限”说明定位数据没写对比如目标位置超出了设置的范围三是程序里启动信号是不是用了OUT指令导致上升沿冲突改成SET/RST或者配合PLS指令就会恢复。这个排查逻辑基本能覆盖九成以上的轴不动作问题。5.2 位置偏差与回零不稳定位置偏差分两类一是每次定位距离都偏固定比例那就是电子齿轮比算错了比如丝杠导程、减速比没算对。另一种是每次定位后误差不固定和方向有关那是机械回程间隙需要在定位模块参数里设置反向间隙补偿。回零不稳定通常是原点开关位置的振动或者干扰导致处理办法是降低回原点速度并且确保原点开关的信号电压稳定建议用DC24V带屏蔽线接入。5.3 通讯偶发故障要从物理层查起上位机偶发通讯超时、Modbus偶发读不到数据这类故障最容易让人抓狂。我的经验是先看物理层再看参数最后看程序。485屏蔽层是否单端接地、线缆是否和动力线近距离平行、终端电阻是否齐全这些问题不解决程序写得再对也会时有超时。以太网同理网线是不是用了屏蔽双绞线水晶头压接质量如何有时候看似“网络拥堵”其实就是网线劣质导致重传。5.4 防止偶发故障的三个好习惯项目做完后有几个习惯能让设备在现场省心很多伺服报警历史记录程序里周期读取每个伺服的报警代码和报警发生时间存到掉电保持寄存器。设备半夜停机第二天查报警历史能快速定位是哪根轴、什么编号报警。通讯状态监视画面触摸屏上放一页“通讯监视”把上位机心跳、Modbus各站状态、CC-Link从站状态、扫码枪帧计数全部显示出来操作工一个屏幕看懂所有通讯健康度。掉电保持与上电自检设备断电再上电后自动检查各轴位置是否有效通讯设备是否全部在线再决定是否允许进入自动模式。这个逻辑不复杂但很多设备漏掉了导致断电恢复后直接撞机或者通讯错乱。写在最后这套Q系列QD77MS2MR-J4的方案我前后做过好几个类似项目感受最深的点用一句话说就是轴控的难点不在指令而在参数与软元件分配通讯的难点不在协议而在数据规划和故障排查思路。如果照着这篇把系统架构、定位参数、数据区规划、调试顺序都过一遍设备能少走很多弯路。最后再分享一个我最常用的调试技巧在GX Works2里同时打开QD77MS2的“模块监视”窗口和PLC程序的“软元件批量监视”窗口左边看轴状态右边看程序信号梯形图上直接监控启动、完成、报警三个点的通断调任何轴控动作都能快速定位问题。这个技巧看起来简单但比盲调盲猜效率高十倍。做三菱项目的朋友上手调试时一定要善用这两个窗口。