
做多轴伺服同步又叠加一堆设备要通讯的项目选型阶段真的不能只看CPU点数够不够。我接过一条四轴伺服联动外加扫码枪、仪表和上位机数据采集的产线改造一开始在小型PLC里把轴控制和通讯全塞进去结果接线乱、调试慢、偶发报警还查不到根因最后彻底换成三菱PLC Q系列把多轴伺服和多设备通讯拆成两个独立体系来做才算把整个项目理顺。这篇就把当时选型、配轴参数、通讯协议搭建和现场调试踩坑的全过程整理出来给正在做或者准备做类似项目的同行一个参考。这套东西适合谁看一是准备在产线上用Q系列加伺服做联动、但不清楚定位模块和伺服放大器怎么搭的二是设备上既有伺服又要挂一堆串口、以太网设备想知道各种通讯方案怎么分工的三是已经在现场调试遇到过伺服轴偶发丢步、通讯偶发断站的看看我当时一步步定位的过程。1. 为什么是Q系列一套设备同时扛多轴伺服和三类通讯1.1 项目基本盘四轴伺服加三种通讯协议同时上这条设备不算特别复杂但麻烦在什么都有一点。四个伺服轴分别负责送料、切断、搬运、压装动作顺序互相牵连设备旁边有一台触摸屏、一把扫码枪、一块数显仪表还有上位机通过以太网实时采集产量和报警记录。这些需求单独拿出来都不难但凑到一起就出现了矛盾轴与轴之间需要快速联动响应另外几路通讯又要不停收发数据如果全部靠CPU扫描周期去轮流处理定位脉冲的实时性会受到通讯程序的拖累。我上一版方案就是这么翻车的——串口通讯指令一执行轴响应明显变慢隔壁设备过来干扰一下报警信息又乱掉。后面重新梳理需求后选型逻辑变成了CPU只负责逻辑和通讯协调轴控制全部交给独立的定位模块让专业的事归专业模块干。1.2 Q系列和常见小型PLC在多轴场景的真实差距很多人一开始会问为什么不用脉冲输出型的小型PLC坦白说轴数少、动作简单的小设备确实够用但到四轴联动加插补就有了差距。首先是硬件层面的差距。Q系列是模块化机架结构轴控模块、串口模块、以太网模块各占一个槽位互不干扰。选型时可以按需插入两三个通讯模块再加一个定位模块不必挤在固定的本体IO上。小型PLC本体自带的脉冲通道通常就2到4路通讯口也就一两路RS485扩展起来还得占功能模块的空间。其次是响应机制的区别。Q系列定位模块比如QD77或QD75系列内部是独立CPU轴脉冲的生成、插补运算、回原点时序都在定位模块内部完成不受主CPU扫描周期和通讯中断的影响。主CPU只需要通过缓冲存储器下发指令、读取状态就行。这个设计决定了它的动作时序稳定度远超靠本体发脉冲的方案。最后是维护和排障的差距。定位模块自带详细的轴状态、当前值和报警代码断在哪一步、为什么停从缓冲存储器里就能读到数据不用拿着万用表在端子排上挨个量。跟变频器、伺服放大器混在一个柜子里的时候模块化布局也更容易做强弱电分离。我这套项目最终的基础配置如下供参考不是唯一解位置选型方向作用CPUQ03UDECPU或更高逻辑控制、通讯调度、数据运算定位模块QD77MSSSCNET III光缆型四轴同步控制、插补和回原点伺服放大器MR-J4-B系列光缆通讯伺服抗干扰强、免脉冲接线串口模块QJ71C24-NRS485无协议对接扫码枪和仪表以太网模块QJ71E71-100与上位机/SCADA通讯HMIGOT2000系列人机交互、配方和报警显示CPU扫描周期当然也不是完全无关但轴控已经被定位模块包掉了CPU只要在收到已完成信号后切换下一步逻辑即可。材料成本比小型方案高一点但换来的调试效率和产线稳定度值这个差价。2. 多轴伺服系统的硬核配置从伺服放大器到轴参数逐项落地2.1 伺服放大器与定位模块的选型组合选Q系列时最需要先拿主意的是定位模块用脉冲输出型还是SSCNET光缆型。这两种我都用过差别挺大。脉冲型QD75系列输出的是差分脉冲指令伺服放大器选MR-J4-A驱动器端需要接脉冲线、方向线还要接编码器反馈线。接线多每一步动作都受传输线干扰影响对柜内布线的要求很高。光缆型QD77MS系列走SSCNET III光缆直接从定位模块串接到各个MR-J4-B伺服放大器编码器反馈也走同一根光缆柜内布线干净得多。而且光缆不受电磁干扰伺服动力线哪怕跟光缆靠近一点问题也不大。我这次选的QD77MS加MR-J4-B接线量少一半调试时省了很多事。选模块时还要注意轴数上限。QD77MS有2轴、4轴、8轴版本四轴设备选4轴模块刚好合适留点余量可以选8轴但成本和占用槽位也要算进去。插补功能方面QD77MS支持2到4轴线性插补、2轴圆弧插补做常见的搬运轨迹和飞剪同步都够用。项目里搬运轴和压装轴要走一段斜线轨迹用的就是两轴线性插补效果很稳。2.2 电子齿轮把指令单位换算成机械移动量伺服系统里最容易被忽略、但又最影响定位精度的参数就是电子齿轮比。很多人看到伺服放大器参数表里PA06、PA07就头大其实思路很清晰——把定位模块发出去的脉冲数和机械实际移动量换算到用户能直接使用的单位上。拿我项目里的送料轴举例。电机通过联轴器直连丝杠丝杠导程10mmMR-J4伺服编码器分辨率是131072脉冲/转。我希望工程师在程序里或者触摸屏上直接输多少毫米就能控制位置于是把用户单位定义为1脉冲对应0.001mm1μm。那么电机转一圈要走10mm也就是10000个用户单位而编码器反馈一圈是131072个计数脉冲。伺服放大器的电子齿轮比就应该设成电子齿轮比分子PA06 131072电子齿轮比分母PA07 10000这样伺服内部每收到10000个指令脉冲就会驱动电机转一圈刚好走10mm。换算逻辑就这么简单分子分母分别等于编码器反馈分辨率除以一圈对应的用户脉冲数对应的两个值。真正容易出错的是带减速机的轴。比如搬运轴带1:5减速机丝杠导程还是10mm那电机转一圈工作台只走2mm。一圈对应2000个用户单位电子齿轮比分母就得改成2000分子还是131072。如果按直连算这个轴的位置就会放大5倍一开机对原点就跑飞。2.3 回原点方案的取舍近点DOG与绝对位置系统的运维账回原点是多轴设备开机后的第一道坎。Q系列定位模块提供三种方式挡块式、近点DOG式、机械式绝对位置。挡块式最简单靠伺服碰到硬挡块产生扭矩极限信号确认原点适合精度要求不高的轴。近点DOG式是主流选择轴上装金属感应块接近开关碰到DOG后减速减速后再找伺服电机Z相脉冲重复精度高。绝对位置系统则是伺服放大器配电池断电后编码器位置靠电池保持开机不用回原点直接接着上次位置继续干。我项目里送料和压装用了绝对位置系统因为这两轴位置和配方强相关开机马上干活能省不少时间。但这里要给各位提个醒绝对位置系统的电池寿命一般在两到三年电池欠压报警必须接进PLC报警逻辑里否则某天电池耗尽原点全丢整台设备等于要重新对刀。搬运和切断轴我用近点DOG每天开机回一次原点动作不多但胜在结构简单、维保省心。回原点参数设置上快速接近速度我设了300mm/s碰到DOG后爬行速度降到10mm/s。爬行速度不能太快太快容易冲过零点导致每次原点位置有偏差但如果DOG感应距离很短爬行速度太低又会停在感应区外干脆回不了原点。这个速度和感应片长度的匹配调试现场要用试错法调两三轮别指望一次到位。3. 多设备通讯三种协议在同一条产线上各司其职3.1 CC-Link轴间通讯主干道之外的远程IO扩展多轴伺服真正要联网时CC-Link是Q系列最常见的现场总线。它不是必须用来带伺服的——伺服走SSCNETCC-Link我用来带产线侧边的远程IO站和几个变频器。但它在整体通讯架构里的位置很关键IO点和变频器控制不占CPU物理输入输出全部通过总线刷新。做CC-Link配置时核心把握三个参数站号、波特率、终端电阻。站号是设备在总线上的身份重复或跳号都会导致通讯建立失败。波特率决定传输速度和最大总延长10Mbps时总延长只能做到100米左右降到2.5Mbps能到400米。我柜子到远端IO站的距离大概80米选5Mbps留了余量也保证了刷新速度。CC-Link的刷新机制是把每个从站的输入输出数据映射到主站的缓冲存储器里然后Q系列CPU通过智能功能模块软元件直接读写这些数据。在程序里用FROM/TO指令或者配置好自动刷新后远程IO点就像本地IO一样用。很省心。不过这里不得不提一句变频器挂在CC-Link下要特别注意总线刷新周期和设备响应时间的匹配定位模块的轴状态刷新是微秒级变频器运行频率的刷新是毫秒级这两种速度差完全不能当成一回事做程序联锁时千万不要把远程变频器的运行反馈当成实时信号去联锁伺服轴。3.2 串口无协议通讯和扫码枪、仪表打交道最省心的办法扫码枪、电子秤、温度表这类仪表型设备最常见的通讯方式就是RS485或RS232串口。Q系列上一般用QJ71C24-N这个模块支持无协议通讯也就是你想发什么帧就发什么帧完全由上位设备定义的协议决定PLC这边不掺和解析只负责收发字节流。这种模式最大的好处是不受品牌限制。我的扫码枪协议是一串ASCII字符仪表协议是十六进制报文两者完全不一样但我只要在程序里分别组帧、按各自格式解析就行。如果用了三菱自家的专用协议反而会两边对不上。模块配置时要设定波特率、数据位、停止位、校验位这些必须跟对方设备保持一致对不上就是乱码或者完全收不到。我踩过一次扫码枪默认9600波特率仪表用19200结果我在同一个串口模块的两个通道上设错了波特率扫码枪的数据终端上显示全部乱码排查了半天才发现是通道参数互相覆盖。QJ71C24-N每个通道是独立的配置时不要嫌麻烦一定要逐通道保存并核对。发送和接收的编程逻辑是这样的发送时用专用指令发出缓冲区的帧数据接收可以设定起始码和结束码比如扫码枪以换行符结束那模块收到回车换行就自动置位接收完成标志PLC再通过缓冲存储器读取整帧数据。读走数据后要把接收区清空否则下一帧覆盖进来会丢数据。这个小细节我一开始漏了偶尔会出现上一帧和下一帧拼在一起的情况。3.3 以太网Socket通讯与上位机/MES对接的关键产线数据要进上位机或者MES绕不开以太网。Q系列配QJ71E71-100模块后最简单的方式是用三菱MC协议让上位机直接读写PLC的软元件如果上位机有自己的通讯协议比如要发JSON字符串那就用无过程控制的Socket通讯指令从PLC主动发数据。MC协议对很多搞上位机开发的同事来说是最省事的上位机按协议格式发请求帧PLC模块自动应答不需要在PLC程序里写额外收发逻辑。协议帧的核心字段包括副头部、网络编号、PLC编号、IO编号、站号、请求数据长度、监视定时器、指令和子指令、设备起始编号、设备点数这一串对好后就能稳定读写D寄存器、M继电器这些软元件。要注意一个问题MC协议占用的是PLC软元件地址多台设备共用同一台Q时地址规划要提前做。我在程序里把D区的规划画了一份表产量数据、报警码、伺服当前位置各占哪些区间全部写清楚贴在控制柜门上。不然几个月后有人来改程序对着地址表一脸懵。Socket通讯则适合自定义协议的场景。Q系列能用专用指令打开TCP或UDP端口然后发送和接收字符串。我上位机的数据采集系统要求每隔两秒主动上报一次设备状态就是PLC定期组帧字符串通过Socket指令发到上位机指定IP和端口。注意字节序和帧结束判定上位机解析是字符串方式那PLC发送时就要在末尾拼接好分隔符两端约定一致通讯才稳。三种通讯方式在一条产线上各有分工我按这个原则分的通讯方式对接对象特点主要用途CC-Link远程IO、变频器周期刷新、实时性高设备层IO控制串口无协议扫码枪、仪表灵活组帧、按设备协议走数据采集以太网MC/Socket上位机、MES数据量大、扩展性强数据上报和远程监控4. 程序架构让四轴程序不失控的FB封装与状态机设计4.1 轴控制FB把使能、点动、定位、回原点收进一个接口四轴设备最怕的就是程序里到处散落着轴控制指令今天改这个轴明天改那个轴改一处忘三处。我的做法是把每个轴的控制逻辑全部封装成功能块FB程序里只留一个统一的调用接口。轴控制FB的输入输出大致是这个思路用结构化文本(ST)描述比较直观FB_AxisControl 输入 AxisNo : 轴号 bEnable : 使能信号 bHomeStart : 回原点启动 bJogPlus : 正转点动 bPosStart : 绝对定位启动 iTargetPos : 目标位置单位mm iTargetSpeed : 目标速度 输出 bReady : 伺服就绪 bHomeDone : 回原点完成 bPosDone : 定位完成 bAlarm : 轴报警 iCurrentPos : 当前实际位置FB内部做的事情是先检查伺服就绪和急停状态然后根据输入信号决定执行回原点、点动还是定位最后把完成标志和报警代码回传给主程序。主程序里四根轴各调用一次这个FB分别传不同的轴号和参数就行。以后要改某个轴的速度曲线只需要改FB内部参数或者调用处的参数不用翻几百行梯形图找触点。Q系列用GX Works2/3做标签化编程时FB的接口变量记得用标签而不是裸软元件这样跨程序复制和后续维护都省心。我甚至把一批常用的设备控制逻辑都做成了FB库后面做第二条相似产线时直接复用这四轴FB时间至少省了三分之一。4.2 报警联动与手动自动切换的细节处理四轴设备的程序核心除了动作顺序还有一个不能马虎的系统报警联动。我的原则是故障不叠加、动作有互锁、报警要分级。报警不叠加的意思是一根轴报警时在屏幕只显示根因报警不把一堆联动报警同时弹出来。伺服报警从定位模块缓冲存储器读出来之后我会先做一次轴根因判断比如伺服过载报警就不去额外推送定位超时这些衍生报警否则操作工会被报警信息淹没。动作互锁则体现在自动流程每个工步的启动条件里。比如送料轴到达位置后切断轴才能启动搬运轴的夹爪要确认夹紧到位压装轴才允许下降。这些互锁写在FB内不比写在主程序里差因为主程序梯形图长了之后谁都不能保证每个调用处都记得加互锁条件。把互锁收进FB接口调用处想漏都难。手动和自动切换也是需要用心处理的地方。手动模式下面板点动按钮直接操作伺服点动自动模式下点动按钮全部禁用。这个切换逻辑如果处理不好会出现在自动运行中途操作工误触点动按钮导致轴飞车的情况。我的做法是增加一个设备模式状态变量手动模式下调用的点动指令全部带模式判断条件自动模式触发时强制把点动允许标志清零。轴报警处理还要和通讯断站做联动。电柜里的远程IO如果偶发断站Q会报通讯异常此时自动程序必须中止等待复位而不是继续往下跑。我在通讯异常处理里做了一段小逻辑当CC-Link主站刷新异常时自动流程立刻停到安全工步所有轴进入暂停状态屏幕弹出提示。这样即使不在现场操作工也知道发生了什么。5. 现场调试两周踩到的坑干扰断链与原点丢失的完整排查链5.1 第一坑伺服启动瞬间定位偶发偏差查到最后是编码器线缆受扰设备联调第三天开始出现随机问题——某轴偶发定位到目标位置后实际机构还有零点几毫米的偏差不是每一次都有。这种偶发问题最折磨人因为没有固定的复现路径。我的排查链路是这样走的先在触摸屏上手动重复跑同一个定位动作看当前值反馈排除程序逻辑问题。然后把动作放到低速问题消失恢复高速问题又出现。这时候基本锁定是干扰而不是程序。接下来借了一台手持示波器夹在编码器反馈线出口处让伺服反复启停看到启动瞬间有明显的振铃干扰叠加在脉冲信号上。再顺着布线查原因发现伺服放大器动力线在柜内和编码器线走了同一个线槽距离不到15厘米。处理办法编码器线全程换成双绞屏蔽线屏蔽层在伺服放大器端单端接地动力线和编码器线彻底分槽走并拉开30厘米以上距离伺服放大器动力线输出端加一套磁环。彻底整改后同样的动作跑了两天偏差没有再出现过。所以配柜子的时候强弱电分离不是一句口号是实打实的可靠性保障。5.2 第二坑CC-Link远程IO偶发断站一步步定位到布线长度第二个坑发生在通讯侧。产线上到远端IO柜的距离有80米左右运行几天后偶发断站每次都是几秒后自动恢复不规律特别像接触不良。一开始我的判断是某处端子接线松动把所有接头重新压了一遍还是偶发。接着怀疑终端电阻把两端110欧电阻换新问题依然没有消除。再用万用表量通讯线A、B之间的波形发现波形在远端明显畸变有反射现象。CC-Link在波特率5Mbps时的实际安装距离裕量已经不高两端站数又多反射造成了偶发误码。最终解决方式是降低波特率到2.5Mbps对应总延长距离更宽裕同时把中间的一处T型分支线缆整改成逐站串联结构波形恢复正常。CC-Link的布线规则是手拉手结构T型分支会破坏阻抗匹配现场不太合规的接法一定会用某种方式还回来别心存侥幸。5.3 第三坑回原点偶尔多走一段根因居然在DOG感应距离和爬行速度第三个坑是回原点偶尔多走一小段。送料轴用近点DOG回原点正常情况下偏差在正负2μm以内但偶尔会出现回原点后比标准位置多了大概0.5mm。0.5mm这个数字很微妙正好接近电机转半圈左右的距离。分析后基本确认是回原点时爬行阶段的零点搜索出了问题。近点DOG回原点原理是快速碰DOG后停下来转为爬行爬行中等待伺服Z相零点信号Z相一来就锁停。如果我爬行速度偏高导致Z相零点过冲后伺服来不及急停就会锁定在Z零点之后若干脉冲的位置这个位置就是那段多出来的偏移。现场用示波器看DOG信号和Z相脉冲的时序后发现DOG感应片安装位置太靠前爬行距离长速度还没降到位Z相就到了等于没有真正减速就锁停。解决方式是把回原点爬行速度从40mm/s下调到10mm/s同时把接近开关的安装位置往前挪了2厘米让DOG感应更早开始在Z相到来前充分降速。改完后再跑了几十次回原点位置偏差稳定回到正负2μm以内。回原点参数的经验可以总结成一句话爬行速度宁可慢等Z相等久一点别追求那点回原点的效率。产线上这类问题反复出现时先怀疑机械安装位置再怀疑速度参数最后怀疑编码器硬件。做完这套项目我的体感是Q系列的优势不在于某一个单项参数有多强而在于它把轴、总线、串口、以太网这些复杂需求拆成了独立模块各自稳定运行逻辑层只做协调和判断。遇到轴控制问题就去查定位模块遇到通讯问题就去查对应通讯模块边界清晰调试和故障定位快。最后分享一个我实际现场攒下来的小习惯程序里给每根轴、每路通讯都建立独立的运行状态字包含就绪、忙碌、报警、当前值、最近一次报警代码五个字段同时显示在触摸屏的工程师监控页上。这样不管是谁在维护这台设备不用翻程序就能定位问题出在哪一环节。对于多轴加多通讯的设备这种可观察性比什么技巧都值钱。