
前阵子帮朋友改一台小型送料机构控制柜里一台三菱FX3U台面上一个步进电机带着同步轮送料。要求不高按下启动能自动跑位置现场还要能手动点动对位。听起来简单真正动手时才发现步进电机这玩意儿从选型、接线、拨码到梯形图一环扣一环哪一环不对都不转。我干脆把整个过程完整复盘一遍把三菱PLC控制步进电机涉及的高速脉冲输出、驱动器参数、手动点动和自动定位的梯形图代码解析全部摊开讲。这篇适合手里有FX3U或FX5U、想用步进电机做定位送料分度的朋友也适合刚接触PLC脉冲控制的同行。里面的坑我都踩过直接写出来能帮你省不少现场调试时间。1. 项目整体设计与硬件选型思路1.1 先算线速度再定速度方案设备结构很简单一个主动同步轮通过同步带带动送料辊主动轮是5M20同步轮也就是齿距5mm、20齿。同步轮转一圈送料长度就是节圆周长5乘以20等于100mm也就是0.1m。要求线速度最大0.8m/s换算一下轮子要转到8圈/秒也就是480r/min。如果像有些方案那样直接配5比1减速器电机转速就是960这里得掰开算清楚。减速比5比1的意思是电机转5圈输出轴转1圈所以输出轴转速等于电机转速除以5。反过来电机转速等于输出轴转速乘以5。这样输出轴480r/min时电机转速就要到2400r/min。问题就在这步进电机在2400r/min这个转速下扭矩掉得非常厉害很容易丢步甚至堵转。如果你手头有步进电机的矩频特性曲线一看就明白转速超过1000r/min后输出扭矩直线下滑。所以选型的第一件事不是挑PLC而是把速度、减速比、轮径这些算明白。用步进电机时我一般把电机实际最高转速控制在600到1000r/min之间这个区间扭矩和稳定性都比较好。针对这台设备我把减速比改成了2比1负载轴480r/min时电机转速960r/min各转速点算下来正好落在合理区间。如果传动比和轮径受结构限制改不了那建议直接上伺服比如三菱JE-A伺服额定转速两三千转带5比1减速器跑0.8m/s很轻松。不是步进不能用而是一定要先算转速区间再选型这是很多人一开始就踩的坑。1.2 三菱PLC选型必须晶体管输出PLC选型要盯死一个指标高速脉冲输出能力。三菱FX3U的Y0、Y1两个输出点最高可以输出100kHz脉冲FX5U能力更强而且这些定位指令的用法和老款FX3U基本一致老程序改个机型能直接搬过去。所以我用FX3U作为示例FX5U用户照着用完全没问题。这里有个大坑必须提醒PLC的输出类型必须选晶体管输出。继电器输出的PLC响应速度太慢几十赫兹的脉冲都发不利索更别说几十kHz了。我见过有人拿继电器输出的型号程序写完电机一点反应都没有就是这个原因。选型号的时候看准输出规格带后缀带晶体管的机型才行别只盯着 CPU 型号看。另外FX3U的Y0、Y1通常还和高速计数器功能复用如果程序里同时用了高速计数就得注意点位的占用冲突。定位控制时我们要把Y0、Y1留出来专门发脉冲、发方向这点在程序架构时就该规划好别到接线了才发现输出点被占。1.3 步进电机与驱动器怎么配步进电机选多大主要看负载扭矩和安装空间。42步进适合小型轻载57步进是中低转速下很常用的规格86步进则用于扭矩需求更大的场合。这台设备我选了57步进因为负载不重但同步带传动需要一定的保持力矩。电机额定电流要和驱动器匹配比如57步进额定电流常见2.8A左右驱动器选的额定电流不能小于这个值。市面上的步进驱动器品牌很多工业场合我习惯用雷赛这种数字式驱动器开环用DM3E闭环用配套的CL系列拨码设细分和电流逻辑清晰接线也规范。如果不想在定位可靠性上赌运气闭环步进是很好的折中方案自带编码器反馈丢步能纠正价格比开环贵不了多少比伺服便宜一大截。开环、闭环、伺服怎么选我做了个对照表对比项开环步进闭环步进伺服成本低中高高速扭矩差转速高掉扭严重中好防丢步能力无有编码器反馈有调试难度低低中适合场景低速定位、送料要求可靠性的中小设备高速高精度场合本方案最后选了57闭环步进加2比1减速器驱动器配雷赛CL57。这样即使偶尔负载波动也不容易出现丢步累计误差现场调试时心里有底。如果你只是做教学实验或小功率轻载42开环步进加DM3E也完全够用后面讲的接线和程序思路是一样的。2. 接线与驱动器参数设置2.1 PLC与驱动器接线共阳还是共阴接线之前先搞清楚一个概念共阳和共阴。三菱FX系列晶体管输出Y点作为漏型输出也就是低电平有效。大多数步进驱动器的脉冲接口是差分或共阳接法用共阳接法和三菱PLC配合最顺手。以雷赛系列驱动器为例这几种端子的标准接法如下表驱动器端子接法PUL接24VPUL-接PLC的Y0DIR接24VDIR-接PLC的Y1ENA通常悬空或按驱动器说明接ENA-接0V这样接好以后PLC的Y0每发一个低电平脉冲驱动器就收到一个脉冲信号Y1输出低电平时驱动器走一个方向Y1断开时走另一个方向。PUL和DIR一定要成对接不能把PUL-和DIR-都接到同一个Y点那就没法独立控制方向和速度了。输入侧的接线同样有讲究。FX3U的输入端子S/S是公共端接NPN传感器时S/S要接24V传感器的棕色线接24V蓝色线接0V黑色信号线接X点。这个逻辑很多新手搞反结果传感器怎么感应X点都没信号。如果用的是PNP传感器S/S要反过来接0V信号线输出的高电平信号才能被识别。买传感器之前先确认PLC输入接法不然到了现场还要重新改线。ENA端子很多人忽略但它恰恰是最容易坑人的地方。多数驱动器默认不接ENA电机正常使能一旦你将ENA和ENA-接反相当于给驱动器一个禁止使能信号电机就锁死不转但驱动器电源指示灯又是亮的特别容易误判为PLC没发脉冲。后面排查章节我会专门讲这个。2.2 驱动器拨码细分和电流步进驱动器上那排小拨码是用来设置细分和电流的。细分的本质是把步进电机每一步再细分比如8细分就是把原来一步1.8度变成0.225度。细分数越高每转需要的脉冲数越多低速平稳性越好但同样转速下需要的脉冲频率也越高。常见的细分和每转脉冲数对应关系细分倍数每转脉冲数步距角1.8度12002400480081600163200326400现场我最常用的是8细分1600脉冲转一圈低速平稳性够用频率压力也不大。按前面算的2比1减速方案电机960r/min时所需脉冲频率是960除以60乘以1600等于25.6kHzFX3U的Y0最高能到100kHz余量很足。如果用16细分同样的960r/min频率翻倍到51.2kHzFX3U也能扛但驱动器和PLC之间的抗干扰压力会变大。细分的上限不是越高越好够用就行。电流拨码按电机铭牌额定电流来设。42步进常见1.5A左右57步进常见2.8A左右。注意别为了追求扭矩把电流调得比电机额定值高时间长了电机严重发热轻则丢步重则退磁报废。设完电流最好让电机静止一段时间摸一下电机外壳温度如果烫手就说明电流偏高需要降下来。2.3 上电前的检查清单接线看起来简单但每次都能抓出问题。我在上电前会过一遍清单逐项确认这几分钟能省下一两个小时的事故排查第一确认PLC是晶体管输出Y0、Y1没有被程序里其他指令占用。第二步进电机四根相线A、A-、B、B-)和驱动器端子一一对应接错会不转或方向异常。第三PUL和DIR是不是确实接了24V共阳接法接错成共阴脉冲信号根本进不去。第四拨码设的电流不高于电机额定电流。第五传感器接线和S/S公共端接法匹配NPN传感器就接24V到S/S。最后给PLC和驱动器分别上电的顺序也有讲究最好先给驱动上电再给PLC上电避免PLC上电瞬间把杂波灌进驱动器。3. 核心代码解析从手动到自动3.1 指令选型PLSY、PLSR、DDRVI、DZRN三菱FX系列做定位控制常用的脉冲指令就那么几条选对指令程序写起来一半的功夫就省了。先捋一下PLSY是连续脉冲输出指令指定频率和脉冲数如果脉冲数设为0就表示连续输出。这个指令没有加减速过程适合手动点动这种频率变化不频繁的场景。PLSR是带加减速的脉冲输出指令指定最高频率、总脉冲数和加减速时间。电机启动时频率慢慢升上去停止时慢慢降下来适合定长定位能有效减少丢步和机械冲击。DDRVI是相对定位指令指定当前位置往某个方向走多少脉冲走完以后M8029会导通一个扫描周期作为定位完成标志。自动流程里经常用它。DZRN是原点回归指令配合近点信号也叫狗信号使用。它让电机先以较快的速度找零点碰到近点信号后降为爬行速度在信号沿准确的位置停止这样每次开机都能回到一个确定的原点。实际定位程序里手动模式用PLSY自动模式用DZRN加DDRVI组合这是最常见也最稳的套路。3.2 手动点动梯形图与逐行解析先看手动点动这段我用X0正转点动、X1反转点动、X2急停Y0发脉冲、Y1发方向信号正转时Y1断开反转时Y1导通。梯形图指令表如下// 手动正转点动 LD X000 OR M0 ANI X002 ANI M1 OUT M0 // 手动反转点动 LD X001 OR M1 ANI X002 ANI M0 OUT M1 // 方向输出正转为OFF反转为ON LD M1 ANI M0 OUT Y001 // 脉冲输出点动运行 LD M0 OR M1 ANI X002 PLSY K2000 K0 Y000第一段里X0是正转点动按钮按下后M0得电并自保持。ANI X002表示如果急停按下M0立刻断开。ANI M1是互锁防止正转和反转同时导通这是手动模式最关键的地方。第二段逻辑和第一段对称X1控制M1反转自保持同样有急停和互锁。第三段把反转标志M1映射到方向输出Y1上反转时Y1输出导通。第四段里只要M0或M1有一个导通PLSY就以2000Hz的频率在Y0上连续发脉冲X2断开就停止。这段程序有个需要注意的点方向切换时如果正转还没完全停稳就直接切反转电机瞬间反向会产生很大的电流冲击机械上表现为咯噔一声严重时会损坏同步带或减速器。所以我现场使用时会在正转和反转之间加一个延时比如断开当前方向后等50ms再允许另一个方向导通。实现思路是加一个T0定时器做切换等待用M2作为方向切换中的标志位。LD M0 OR M1 ANI X002 ANI T0 OUT M2 LD M2 OUT T0 K5这样在M0和M1都断开的瞬间T0开始计时0.5秒内任何方向点动都无效等方向切换缓冲结束才能继续操作。手动调机时这个操作习惯能明显减少机械冲击。3.3 自动模式原点回归、两段定位循环自动流程我设计成按下启动后先回原点然后正向走4000个脉冲到位置1停留1秒再反向走2000个脉冲到位置2完成后返回位置1循环循环5次后回到初始状态。用STL步进顺控指令实现层次非常清晰。// 自动模式STL状态 LD M8002 SET S0 STL S0 RST C0 LD X003 ANI X002 SET S10 STL S10 // 原点回归 DZRN K1000 K5000 X004 Y000 AND M8029 SET S11 STL S11 // 走到位置1正向4000个脉冲 DDRVI K4000 K2000 Y000 Y001 AND M8029 SET S12 STL S12 // 停留1秒 OUT T0 K10 LD T0 SET S13 STL S13 // 从位置1返回2000个脉冲回到中点 DDRVI K-2000 K2000 Y000 Y001 AND M8029 ANI C0 OUT S11 // 未到循环次数继续循环 // 独立计数段 LD S13 AND M8029 OUT C0 K5 LD C0 SET S0先看S0这个初始状态。X3是启动按钮按下后进入S10。这里RST C0用来清空循环计数器保证每次启动都是从头开始计数。X2急停串在启动条件里急停一按任何状态都进不去。S10是原点回归。DZRN指令三个关键参数K1000是爬行速度K5000是快速找狗速度X004是近点信号输入。电机先以5000Hz往原点方向快速跑碰到近点信号后自动降为1000Hz爬行在信号沿准确停止。M8029导通代表原点回归完成用AND M8029作为转移条件进入S11。S11里DDRVI指令K4000表示相对当前位置正向移动4000个脉冲K2000是运行频率。Y0是脉冲输出Y1是方向输出这就是前面接线时固定好的两个点。定位完成后M8029导通进入S12。S12用T0延时1秒给机械动作留出时间T0计时到后进入S13。S13执行反向2000个脉冲的相对定位。ANT C0的意思是如果循环计数器C0还没到5次就返回S11继续走位置1。这里计数和判断我单独放在一段独立梯形图中不在STL状态内部做是因为STL状态内同一扫描周期既要判断计数又要做状态转移时序容易乱拆开写逻辑更清晰这也是我现场调试后的习惯。独立计数段里S13和M8029同时导通时普通计数器C0加一次数设定值K5就是5次。计数到5后C0触点闭合SET S0跳回初始状态等待下一次启动。如果你的循环逻辑是无限循环只要把OUT C0 K5改成常数计数器或者干脆去掉计数器判断直接把S13完成后返回S0就行。3.4 速度与脉冲频率换算看得懂才能调得快程序里的K2000、K5000这些参数代表的都是脉冲频率单位是Hz。写程序之前一定要把实际要跑的线速度换算成脉冲频率。换算公式不复杂但很容易算错我把它拆成两步第一步算电机转速电机转速(r/min) 线速度(m/s) × 60 ÷ 同步轮周长(m) × 减速比。第二步算脉冲频率脉冲频率(Hz) 电机转速(r/min) ÷ 60 × 每圈脉冲数。每圈脉冲数等于电机固有步数200乘以细分倍数。按本方案2比1减速、8细分、5M20同步轮周长0.1m各个速度点的频率如下线速度(m/s)电机转速(r/min)脉冲频率(Hz)0.112032000.224064000.4480128000.6720192000.896025600对照表就很直观了我要跑0.8m/s直接在程序里填25600Hz就行。现场改速度的时候也可以通过改频率反推实际线速度心里有数不用拿秒表去掐。另外加减速时间参数也很关键。PLSR指令里的加减速时间我一般按0.3到0.5秒起步根据负载惯性大小调整。加减速太短电机从静止直接跳到25kHz几乎必然丢步太长又影响节拍。现场调的时候先给0.5秒如果设备响应慢再往下压这样最稳。4. 常见问题与排查技巧实录4.1 电机不转先查使能再查接线电机不转但驱动器电源灯亮是最常见的一种现象。很多人第一反应是PLC程序问题其实很多是接线和参数问题。我建议按这个顺序排查先看电机有没有保持力矩也就是电机通电后轴是不是有阻力。如果轴完全松散说明驱动器没有输出电流问题在驱动器的使能或电源侧如果轴有锁紧的阻力说明电机带电问题在脉冲信号侧。这个动作2秒就能缩小排查范围。再看ENA端子接没接反。ENA和ENA-接反等于告诉驱动器禁止输出电机虽然有电但被锁死或者完全没力驱动器指示灯还是正常的特别容易误判。一般把ENA悬空、ENA-接0V驱动器默认使能如果你不确定自己的驱动器逻辑直接悬空最保险。然后用万用表测PUL端子的电压。正常发脉冲时PUL和PUL-之间能测到脉冲电压用万用表直流挡看会有一个跳变的平均值。如果电压恒定5V或者0V说明要么PLC没发脉冲要么共阳接法接错Y0和PUL-没形成回路。最后看拨码。细分数设成0或者电流设成0驱动器也会有各种异常反应。拨码这东西上电以后才生效改完拨码必须断一次电再上电这个细节很多人不注意。4.2 电机抖、异响、丢步怎么办电机运转时抖动、有异响通常不是PLC的问题而是电机和驱动器参数匹配的问题。先检查A、A-、B、B-四根线有没有接对相线接反会表现为启动困难、反转无力甚至小角度抖动。然后看细分数和步距角匹配如果驱动器设置的细分和电机实际步距角不匹配低速时就会一顿一顿的。电流如果设得偏低扭矩不足高速也会发抖。丢步的现象是定位不准、误差逐渐累积。主要原因有五个加减速太急、目标频率太高、负载超过电机扭矩、电流偏低、同步轮或联轴器打滑。解决办法按优先级来第一用PLSR代替PLSY给足加减速时间第二降低目标频率或者调整减速比让电机转速落在合理区间第三核对电机电流是否达到额定第四检查机械连接同步带松紧度、联轴器是否锁紧。这里提一个很多人不知道的细节步进电机不是转速越高越好它的扭矩在超过一定转速后会断崖式下跌。如果设备工作点刚好在高速区再怎么调参数都救不回来唯一的出路就是改传动比或者换伺服。所以我在选型阶段就强调算转速就是在源头避免这个问题。4.3 方向反了怎么办方向反了是最容易处理的两种方法任选一种。第一种是改程序。Y1是我们的方向输出点正转时Y1应该断开还是导通取决于驱动器方向电平定义。如果正转变成反转只需要把程序里方向逻辑反过来比如原来LD M1 ANI M0 OUT Y001改成LD M0 ANI M1 OUT Y001让正转标志去驱动方向输出。第二种是换电机线。把A和A-对调或者把B和B-对调磁场的旋转方向就反过来了。注意只需要对调其中一组两组都对调等于没换。现场我一般优先改程序因为不用动线改完立即可测。但要记住两种方法只能选一种别改完程序又去换线方向会再反一次白白浪费时间。4.4 原点回归回不准、过冲DZRN回原点最怕的问题是每次停的位置都不一样或者直接冲过去不停。先看近点信号也就是狗信号。X4接的是NPN型光电开关还是PNP型接法对不对直接决定了传感器能不能被挡块准确触发。挡块的安装位置也有讲究最好让狗信号的上升沿和下降沿都有一段稳定区域别让挡块刚好卡在信号的临界位置。再看DZRN的爬行速度。K1000代表爬行速度1000Hz这个值如果太高电机在狗信号沿附近减速不下来就会出现过冲每次停止位置偏差变大。现场调试时我会先把爬行速度降到500Hz确认定位精度够了再慢慢往上提找到一个精度和节拍的平衡点。还有一个容易被忽略的问题X4近点信号如果和PLC的输入滤波时间冲突会导致信号响应延迟原点位置也跟着偏移。FX3U的输入滤波时间默认10ms对光电开关来说可能偏大可以在PLC参数里把X4的滤波时间调小到1ms或更短这样原点回归的重复精度会明显提升。4.5 我的现场调试习惯和避坑清单调试这件事经验往往比书本有用。我总结几个自己的习惯每次上电第一件事把所有速度参数改成10%然后手动点动确认方向、行程、限位都符合预期再慢慢提速。别一上来就全速跑撞了限位或者飞了料再后悔就晚了。驱动器参数拨好以后拍照存档PLC程序加好注释源文件命名带上日期。设备出问题能找到原始状态恢复起来快得多。我见过太多次调试现场参数被改乱最后谁也说不清原始值是什么的情况。脉冲线和动力线不能走同一个线槽。步进驱动器对干扰很敏感PLC到驱动器的脉冲线我用屏蔽双绞线屏蔽层单端接地这样长距离传输时不容易丢脉冲。断电后别急着接电机线或拆驱动器等两三分钟让电容放完电再动手。这个问题不大但被电一下或者烧个驱动器就足够你心疼半天了。就我个人习惯来说每次到现场第一件事就是把所有速度参数默认降到最低手动空跑确认方向和行程没有问题再逐步提速。步进电机这东西很多时候不是它不行而是参数和机械没匹配好。只要速度区间、细分数、加减速这三样理清楚三菱PLC加步进电机这套组合在中小型设备里能非常稳定地跑好几年。