
搞设备调试和自动化改造的同行应该都有同感西门子PLC控制步进电机看起来就是“PLC发脉冲、驱动器带电机转”但真正动手时接线怎么接、脉冲频率怎么算、细分怎么设、为什么电机嗡嗡响不走每一关都能卡掉一批人。这篇内容我就按自己做过项目的习惯把西门子PLC配合步进驱动器和步进电机的完整套路梳理一遍从选型、接线、参数计算到梯形图实现再到现场最常见的坑一次说透。适合刚入门做运动控制的朋友也适合给正在调试设备、想快速上手抄作业的工程师做参考。我用的主力机型是S7-200 SMART和S7-1200后面绝大多数接线和指令都围绕这两类PLC展开。不会整太多晦涩理论尽量用实际干活的语言讲比如“这里为什么能共阳极”“脉冲当量是怎么凑出来的”“ENA到底该不该接”这些你翻说明书不一定看得明白的东西我尽量讲明白。1. 控制方案与选型思路1.1 为什么是PLC加步进驱动器而不是PLC直接接电机先把最基础的东西理清楚。步进电机本身不能直接接220V或者24V转起来它需要驱动器把脉冲信号转换成绕组电流按照特定顺序给电机两相绕组通电电机才能一步一步地转。PLC在里面的角色是“发号施令的一方”通过高速脉冲输出口发送脉冲串和方向电平驱动器负责“干活”把脉冲转化为电流驱动电机。所以整个系统的基本链条是PLC → 步进驱动器 → 步进电机。脉冲信号决定电机转多少步方向信号决定正转还是反转这两个信号是核心。很多新手第一次误以为把电机两根电源线一接就能转结果电机纹丝不动其实是因为中间少了驱动器这个环节。选PLC时必须注意输出类型。步进控制需要PLC输出高速脉冲只有晶体管输出型PLC才有这个能力继电器输出型做不到。继电器输出是机械触点响应速度慢而且脉冲频率一高触点就废了便宜是便宜但不适合做运动控制。我见过有人用继电器输出型PLC的Q点直接当脉冲发结果电机抖得像筛子频率一上去直接丢步。所以选型第一条西门子PLC必须选晶体管输出型号比如S7-200 SMART的SR系列不行ST系列才行S7-1200则要选择带晶体管输出的CPU。1.2 步进驱动器的细分、电流和脉冲模式怎么选步进驱动器上的参数主要有三大块输出电流、细分倍数、脉冲模式。输出电流根据步进电机铭牌上的额定电流来设定一般驱动器上用拨码开关或者调试软件设置。电流不是越大越好太大电机会严重发热甚至烧毁太小扭矩不足、容易丢步。细分是很多人理解不到位的地方。细分不是把电机拆成更小的物理步距而是把每一个整步再细分成若干微步让电机转动更平滑、噪音更小、低频振动更小。常见的两相混合式步进电机步距角是1.8度也就是整步200步转一圈。如果驱动器设成8细分每一步就变成1.8除以8等于0.225度转一圈需要1600个脉冲。细分越高定位精度越高、运行越平顺但PLC要发的脉冲频率也必须越高同样转速下对PLC高速脉冲口的压力越大。脉冲模式一般有脉冲加方向、双脉冲、正交脉冲三种PLC控制步进最常用的是“脉冲加方向”也就是PUL端收脉冲、DIR端收方向电平。买驱动器和电机时我都建议直接问卖家要手册把拨码功能对照表拍下来不同品牌的驱动器和电机拨码定义不一样别想当然。1.3 步进电机选型42、57、86这些数字是什么意思42步进电机、57步进电机、86步进电机数字指的是电机法兰的边长单位是毫米。42步进电机指的是法兰边长42mm的小型电机扭矩一般在0.4牛米到0.6牛米之间适合小型滑台、3D打印、小型xyz机构。57步进电机法兰边长57mm扭矩大概1.0到3.0牛米是最常用的中型设备动力。86步进电机更大扭矩可以到4到12牛米配合大负载应用通常需要更高电压的驱动器。选电机要留至少1.5倍到2倍的扭矩余量别算出来刚好够用就上实际工况里的摩擦、加速力矩、机械误差都会吃掉一部分扭矩。尤其是垂直轴还要考虑断电保持力步进电机有保持力矩但如果负载太重断电瞬间敢向下滑落的一定会摔。这种情况建议加刹车器或者换带抱闸的步进电机别拿安全开玩笑。2. 硬件接线全图解实操版2.1 PLC与驱动器的信号接线脉冲、方向、公共端先讲S7-200 SMART晶体管输出型PLC和步进驱动器的接线。以CPU ST40为例它的高速脉冲输出口一般是Q0.0和Q0.1部分型号还能用Q0.2、Q0.3。如果只有一个步进电机首选Q0.0。方向信号可以选择Q0.2这类普通晶体管输出点也可以用Q0.1但要留意Q0.1本身也是高速脉冲口如果占用了就不能再给第二台电机用了。驱动器的PUL和PUL-是脉冲信号的两个端子DIR和DIR-是方向信号的两个端子。PLC输出的是24V电平信号驱动器的光耦输入端一般可以接受5V到24V所以不用额外加转换电路。具体有两种接法共阳极接法和共阴极接法。共阳极接法就是把PUL和DIR接到PLC的24V电源正极PLC的输出点分别接PUL-和DIR-共阴极接法相反PUL-和DIR-接到PLC的公共端MPLC输出点接PUL和DIR。不过这里有个关键点S7-200 SMART晶体管输出的内部原理是高电平有效输出输出点是内部晶体管的集电极公共端是M。所以它更适合“共阳极接法”。也就是说把PUL和DIR接到24V正极PLC的Q0.0接PUL-Q0.2接DIR-这样PLC输出为高电平时光耦两端产生压差驱动器收到信号。如果你接反了要么信号完全没反应要么电机一直抖动乱跑这属于典型的极性问题。有些驱动器是5V输入和PLC的24V电平不匹配这时需要在信号线上串电阻限流。具体阻值按驱动器手册给的值来一般串联1k到2k欧姆电阻比较安全。驱动器输入侧有光耦隔离电流一般10到20毫安千万别把24V直接干进去会把光耦烧穿。2.2 驱动器和步进电机之间的连接A、A-、B、B-两相四线步进电机是最常见的电机引出四根线分别是A、A-、B、B-对应驱动器上的A、A-、B、B-端子。A相和B相是两套独立的绕组接线时按颜色来常见的颜色对应关系是红色A、绿色A-、蓝色B、黑色B-但不同厂家不一定一样最可靠的办法是用万用表测电阻A相两根线之间电阻和B相两根线之间电阻相等分属不同相的两根线之间不通或者电阻极大。接错相会怎样如果A和B搞反电机通电后会锁死但转不起来或者原地抖动如果同一相的两根线接反电机运行方向会反而且可能伴随明显的异响和电流啸叫。方向反了还好办把任意一相的两根线对调或者改程序里的方向信号都能解决。但把两相搞错绝对不行这是我踩过最深的一个坑后来养成习惯上电之前一定先用万用表确认哪两根是同一相。驱动器的电源端子和电机接线顺序也要注意先接电机的四根线到驱动器输出端再接PLC的信号线最后上主电源。任何时候都不要在通电状态下插拔电机插头步进驱动器在运行时断开电机线可能会因为反电动势烧掉驱动器功率管。这操作和一个常识很像热插拔USB容易烧U盘热拔电机线烧的是驱动器赔得更多。2.3 ENA和ENA-使能信号到底怎么接驱动器的ENA和ENA-是使能信号端。这个信号决定驱动器是否给电机通电锁轴。很多第一次接触步进的人会问ENA不接行不行答案是可以不接驱动器默认使能电机上电后锁住。但为什么驱动器还要做这个端子因为项目里需要断电释放电机比如有人需要手动转动手轮调整机构位置或者垂直轴需要让电机自由落体到指定位置时PLC就要通过一个输出点给ENA信号让电机释放。ENA的接线方式有讲究。和PUL、DIR一样也有共阳极和共阴极接法。如果PLCD输出点接ENA-ENA接24V正极那PLC输出高电平时光耦导通驱动器被“禁用”。注意这个逻辑在不同驱动器中可能是反的有的驱动器是高电平使能、低电平释放有的相反。所以接到具体的驱动器时先查手册里“ENA有效电平”的定义。很多人在这一步偷懒结果现场电机该锁不锁、该放不放鬼知道哪里出了问题。实操中我一般这样处理如果PLC程序里不需要动态控制使能ENA和ENA-就让它悬空驱动器默认使能电机一上电就锁轴。如果设备需要手动释放用PLC的一个普通Q点去控制ENA信号并且在程序中设置“急停时释放电机”的逻辑这样遇到卡料、撞机情况操作工能快速把机构手动脱开。这个细节做设备的时候特别有用。2.4 电源分配与地线共摸干扰、24V电源的选择步进驱动器有独立的电源输入一般直流供电的驱动器用24V到48V直流交流供电的驱动器直接接220V。千万别把步进电机的绕组接到PLC的24V电源上那不是信号电源能扛得住的。我的习惯是PLC使用单独的24V开关电源步进驱动器也单独配一个或几个开关电源吃大电流的负载和控制系统电源严格分开能避免大部分现场干扰问题。如果实在只能共用一个电源也要保证驱动器电源和PLC电源的负极分别接到开关电源同一个24V负极输出端尽量星型接地不要串成一串。步进电机启停瞬间电流波动很大会在电源线上产生压降和毛刺直接影响PLC模拟量和通讯严重时会把PLC干重启。所以大功率驱动器建议配200%峰值电流裕量的电源。2.5 S7-1200的接线差异和高速计数输入备用方案如果用S7-1200接线思路和S7-200 SMART类似晶体管输出CPU支持PTO/PWM功能。S7-1200的高速脉冲输出通道从Q0.0开始多个轴需要占用不同的Q点。不过S7-1200组态轴的方式和S7-200 SMART不一样它要在TIA Portal里给CPU组态“运动控制”技术对象然后通过DB块和指令MC_Power、MC_MoveAbsolute等来控制轴。另外一个容易被忽略的配置是限位开关和原点开关。机械系统一般会有正限位、负限位和原点这些开关信号接普通输入点就行但S7-1200运动控制对象里会要求你指定回零方式的输入点。如果你接错通道或者没有在组态里分配回零功能就是摆设。S7-200 SMART做回零时用向导设置高速计数器或者输入点的信号方向也要在向导里指定不是简单写个常开触点就能拿来用的。3. 参数计算与PLC编程实现3.1 脉冲当量是怎么回事脉冲当量这个名词听起来唬人但理解之后很简单它表示PLC发一个脉冲工作台移动多少毫米。计算原理是先确定步进电机的步距角、驱动器细分、机械传动结构然后换算。举个例子说明。42步进电机步距角为1.8度也就是转一圈需要200个整步脉冲。驱动器细分设置为8那么电机转一圈需要200乘以8等于1600个脉冲。如果电机直连丝杠导程为5毫米也就是丝杠转一圈工作台前进5毫米那么脉冲当量就是5除以1600等于0.003125毫米。换句话说PLC每发一个脉冲工作台移动0.003125毫米。如果你希望以0.01毫米为单位发指令也就是每个脉冲对应0.01毫米那么转一圈需要的脉冲数就是5除以0.01等于500个脉冲。根据这个反推细分倍数可以反算200个整步乘以细分等于500细分等于2.5这不符合整数细分档位所以实际选择8细分然后程序里用浮点数换算距离和脉冲数。这类换算最好写在PLC里而不是在触摸屏上先除后乘否则容易搞出小数点误差做的时间长了位置漂移。3.2 最高速度、启动频率与加减速曲线步进电机的低速性能好但转速不能无限高否则扭矩断崖式下跌。一般57步进电机在300到600转每分钟范围内比较可靠超过800转每分钟基本上只能带空载。PLC发脉冲的最高频率也是有限制的S7-200 SMART的高速脉冲口最高输出频率是100kHz左右S7-1200晶体管输出可以达到200kHz级别。如果你要求电机一分钟转600圈细分8那需要的脉冲频率计算如下电机每秒10转每转1600脉冲所以频率为10乘以1600等于16kHz远低于100kHz没问题。但如果细分设到64电机转600转每分钟需要64kHz脉冲频率高了一截CPU和信号线端子都会更加吃紧。更重要的一个概念是加减速。步进电机不能一上来就全速否则转不动会出现电机停在原地嗡嗡响就是俗称的“堵转”实际上这叫失步。启动频率是电机能够直接起跳的最大频率一般完整的步进电机和驱动器能接受的启动频率在几百赫兹到一两千赫兹之间。如果PLC一启动就直接发10kHz的频率电机必然跟不上。所以程序里必须用梯形加减速曲线让脉冲频率逐渐升起来。S7-200 SMART用向导包生成的运动控制子程序本身就带加减速S7-1200的运动控制指令也内置加减速参数一定要在组态里设置好别图省事全部默认。3.3 S7-200 SMART的PTO向导与运动控制子程序S7-200 SMART控制步进电机最简单的方式是用Micro/WIN SMART里的运动控制向导。打开向导后选择“运动控制”功能分配轴0到轴3对应的Q点会显示出来。向导会让你设置电机每转脉冲数、测量单位、方向控制、手动JOG速度等参数这些参数最终会生成一个初始化子程序和一个控制子程序。初始化子程序需要每个扫描周期调用吗不需要。它只在开机时调用一次用来配置高速脉冲输出口和控制字节。启动时先执行初始化之后用控制子程序里的RUN指令填目标脉冲数和速度值。如果用脉冲位移模式需要先设置位置值再激活运行位。控制线圈保持为1直到到达位置到达后程序要记得把运行位复位否则下次启动可能会出现问题。在这里我把一个最小程序段的伪代码逻辑写一下方便理解流程网络1首次扫描调用初始化 SM0.1 --------------------( MOVB 16#C8, SMB67 ) // 配置Q0.0输出 ( 调用 AXIS0_CTRL ) 网络2启动按钮按下清除完成标志并触发运行 I0.0 --------------------( M0.0 ) ( MOVD 目标脉冲数, VD100 ) ( MOVD 目标速度, VD104 ) 网络3调用运动控制子程序输入参数指向VD区 SM0.0 --------------------( 调用 AXIS0_GOTO, RUN:M0.0, Pos:VD100, Speed:VD104 )SMB67是Q0.0对应的特殊功能寄存器向导配置好之后会自动写入不用你手动去计算每一位的16进制值。但你要知道这个值代表什么意思选择PTO输出、时基为微秒、允许更新速度与位置等。3.4 S7-1200的轴组态与运动控制指令写法S7-1200相对更现代一点但流程也更繁琐。先在TIA Portal里找到CPU双击“工艺对象”新增一个“轴”对象。轴对象里有参数设置驱动类型选步进硬件接口选对应的高速输出字节与位每转脉冲数里填电机每转所需脉冲数位置限制设置软件限位动态参数设置最大速度、启动停止速度、加减速时间。编程时用到的核心指令有MC_Power、MC_MoveAbsolute、MC_MoveRelative、MC_Home和MC_Reset。每个指令都对应一个背景DB块调用时要填入实例数据块。下面是SCL风格的调用框架示意为主// 使能轴 Motion_DB.MC_Power( Axis : Axis_1, Enable : TRUE, StopMode : 0 ); // 绝对定位到1000个单位 Motion_DB.MC_MoveAbsolute( Axis : Axis_1, Execute : StartTag, Position : 1000, Velocity : 200.0 );SCL的好处是逻辑看着清楚但注意MC_MoveAbsolute的Execute不能一直为TRUE边沿触发才会再一次执行定位。如果你把Execute常置为TRUE轴只在第一次扫描时启动一次后续修改Position值并不会引起新的定位动作。所以要用R_TRIG上升沿检测指令每次按键触发一次Execute。3.5 回原点的实现方式绝对定位必须建立在坐标系有参考点这个基础上。每次上电PLC不知道当前轴在哪里如果你直接发一个绝对位置指令轴可能跑到意想不到的位置甚至撞机。所以运动控制程序里必须先回原点建立机械坐标参考。步进控制回原点常用的方式有三种找原点开关、找限位开关、编码器Z相。对于普通生产线设备原点开关接PLC输入点配上减速信号和停止信号最实用。S7-200 SMART的向导里有“找原点”模式要设置原点输入点、方向、寻找时的速度一般用“先快找再慢找”的方式碰到原点开关后停住然后以爬行速度反方向找上升沿消除机械重复误差。S7-1200的MC_Home指令也一样组态回原点方式后触发Execute即可。我自己的项目习惯是回完原点后把当前位置清零再走一遍固定距离验证原点是否可靠。以前吃过亏客户现场有电机偶发原点偏移后来发现是原点开关抖动导致多停了一个脉冲改成硬件滤波加上慢速爬行找沿之后就再也没犯过。4. 经典案例42步进电机两相四线实测4.1 案例配置和接线表以一台S7-200 SMART ST40、一个42步进电机驱动器、一个42步进电机做例子。电机额定电流约1.5A细分设8。接线表如下位置设备端子对应接线说明PLCQ0.0驱动器PUL-脉冲输出PLCQ0.2驱动器DIR-方向输出开关电源24V驱动器PUL、DIR共阳极公共正极驱动器A电机红色线电机A相正极驱动器A-电机绿色线电机A相负极驱动器B电机蓝色线电机B相正极驱动器B-电机黑色线电机B相负极驱动器ENA、ENA-悬空默认使能锁轴如果你不确定电机颜色先用万用表电阻档测一下同相的两根线之间会通不同相之间不通。上电前检查驱动器电流拨码是否和电机额定电流匹配通常驱动器和电机会标注额定电流和峰值电流。42步进这类小型电机的峰值电流一般是1.5安培到2安培之间拨码时宁低勿高。4.2 编写一个最简单的点动程序点动功能是调试运动轴的第一关它验证的方向、脉冲和使能都正常。按一下按钮电机转一点松开就停运行速度也不要太高比如设成10Hz到50Hz方便观察。下面是S7-200 SMART的点动思路I0.0作为正转点动按钮I0.1作为反转点动按钮Q0.0发脉冲Q0.2发方向电平。网络1正转点动方向复位为0 I0.0 ----|P|----------------( 复位 Q0.2 ) ( 置位 M1.0 ) 网络2反转点动方向置位为1 I0.1 ----|P|----------------( 置位 Q0.2 ) ( 置位 M1.0 ) 网络3JOG运行控制调用向导生成的子程序 M1.0 -----------------------( 调用 AXIS0_GOTO, RUN:M1.0, Pos:当前值, Speed:点动速度 ) 网络4松开按钮停止 I0.0 和 I0.1 都断开时 ---------( 复位 M1.0 )点动测试时用低速比如每秒发200个脉冲转一圈对应1600个脉冲相当于每秒0.125圈左右肉眼能看清正反方向。如果电机转向和预期相反不要急着改线先改方向信号或者程序里对换正反转逻辑若现场不方便下载程序再选择把A相两根线对调。4.3 相对定位和绝对定位的切换思路点动没问题后就上定位功能。设备运动一般有两种定位模式相对定位是从当前点再走一段距离绝对定位是到坐标系的某个绝对位置。相对定位指令适合“每次走固定尺寸”的场景比如推料气缸每次推10毫米。绝对定位适合有原点和坐标系的场景比如工作台移动到X100.50毫米的位置。两种模式在S7-200 SMART里的实现不同但向导生成的子程序都支持位置输入关键是程序里要知道当前位置。S7-200 SMART内部有位置计数器需要在向导中分配高速计数器通道这样每次运行后当前位置会更新。否则你自己很难记住每一步走了多远。S7-1200相对而言简单工艺对象自带轴位置每转脉冲数组态正确绝对定位数据直接从DB块里读。不过S7-1200在绝对定位之前必须做回原点否则轴对象状态是“未寻零”所有绝对定位指令执行会报错。4.4 触摸屏联动目标位置与速度如何下发PLC运动和HMI配合才算完整。触摸屏上设两个输入框一个是目标位置单位毫米一个是运行速度单位毫米每分钟再加“启动”和“回原点”按钮。PLC程序里把HMI写的浮点数换算成脉冲数例如触摸屏要移动到12.5毫米而脉冲当量按前面例子说是0.003125毫米每脉冲那脉冲数就是12.5除以0.003125等于4000个脉冲。PLC里用浮点运算指令计算最后把结果转成双整数传给运动控制子程序。这个换算过程容易出问题因为位置值可能有小数而脉冲数必须是整数。建议算完四舍五入到最近的整数并把余量控制在单个脉冲当量范围内。如果设备需要更高精度就把脉冲当量的分母做大也就是提高细分倍数但要注意PLC高速脉冲频率的极限。很多国产驱动器支持32细分S7-200 SMART在32细分下跑到600转每分钟需要64kHz离100kHz上限很近信号线稍有干扰就容易丢脉冲所以要权衡。5. 常见问题与排查技巧5.1 电机完全不转但PLC输出指示灯有变化这是最高的故障比例。先用万用表量PLC输出点Q0.0对M的电压正常时输出高电平应该接近24V。如果电压正常说明PLC侧没问题。接着量驱动器PUL和PUL-两端的电压注意这个电压只在脉冲跳变时才有变化万用表量到的可能是平均值最好用示波器看或者把频率降到1Hz用万用表能看到指针有规律摆动。如果没有摆动大概率是公共端接错、串了电阻阻值太大或者接线端子松动。如果PUL两端有脉冲电压但电机不转检查驱动器的使能信号。ENA如果接反了驱动器可能一直处于释放状态电机没电自然不转。还有一个常见问题是驱动器的拨码开关里电流设成了0等于没输出这种奇葩情况我真的遇到过全新的驱动器出厂默认电流和电机不匹配一上电电机一点反应都没有。5.2 电机抖动、噪音大或原地“嗡嗡”叫电机抖动且不转通常是缺相也就是A相或B相中有一根线没接好或者驱动器有个别功率输出管坏了。断电后用万用表电阻档量电机四根线两两之间的电阻应相等如果A相两个端子量出来电阻无穷大说明绕组断路可能是驱动器烧了电机线圈也可能是插头接触不良。如果电机能转但噪音和振动特别大多半是细分设得太低或者运行频率正好落在低频共振区。2细分、4细分时电机在低速段会有明显共振尝试把细分提升到8或16同时调整运行速度避开共振点。还有一种情况是驱动器输入电流波形异常电源电压不足比如驱动器标称48V但你只给了24V电机高速时扭矩上不去也会表现为振动和丢步。5.3 位置越走越偏误差越来越大这个问题基本可以锁定为丢步或者多步。丢步的常见原因有四个速度太高扭矩不够、加减速太猛、机械负载卡顿、脉冲信号受干扰。排查顺序先做空载测试把联轴器松开让电机带空轴跑固定距离看是否还偏。如果空载不偏问题出在机械侧重点查导轨和丝杠阻力如果空载也偏先降速度再试降到原来一半如果好了就是加减速和速度参数的问题。信号干扰导致的多步和丢步在长距离布线时很典型。脉冲信号线必须用双绞屏蔽线而且屏蔽层要单端接地不能和电机动力线走在同一个线槽里更不能和220V交流线平行走线。PLC和驱动器之间距离超过两三米时最好加差分输出转换器或者用支持差分输入的驱动器。曾经有个项目每次变频器启动步进电机就自己走一步后来查出来就是脉冲线和变频器输出线在同一个线槽里穿了几十米屏蔽接地又没做好。5.4 电机发热严重步进电机发热是正常的尤其是锁定状态因为驱动器持续给绕组通电保持转矩。判断正不正常的标准是温度外壳温度在80摄氏度以下可以接受超过80摄氏度甚至烫手就需要处理。原因主要有三电流设置太高、电机长期锁轴、环境散热差。手摸判断要小心温度超过70度就非常烫手了不能长时间接触。如果是长期锁轴的应用可以在程序里控制ENA信号到位后延时几百毫秒释放电机减少发热但前提是机械结构有自锁能力或者不需要维持位置。如果电机本身电流匹配但热得厉害考虑换低发热的闭环步进电机闭环步进的电流是根据负载动态调整的比开环步进省电也凉快。5.5 常见问题速查表故障现象可能原因检查方法解决手段电机不转PLC灯亮公共端极性接反检查PUL/PUL-与24V公共接法改共阳极接法电机不转PLC灯不亮输出点未配置成高速脉冲检查向导或PTO配置重新配置Q0.0电机抖动缺相、A/B相接错万用表量绕组电阻重接电机相序方向相反方向信号逻辑反点动测试交换A相两根线或改程序位置漂移细分与脉冲当量换算不一致跑固定距离验证按实测修正脉冲当量偶尔多走一步干扰示波器看PUL波形换屏蔽线、加滤波电容、分开布线到位后电机剧烈发热长期锁轴电流过大测温度到位后延时释放ENA或换闭环步进5.6 调试时保护设备的小习惯上电调试别急着高速跑先把速度拉到最低手动点动确认方向无误再逐步提高速度。机械行程两端一定要装硬限位软件限位也必须在程序里设置不能只靠PLC内部位置判断。调试过程中手要放在急停上一旦出现异常异响、位置不对马上拍急停。另外给PLC和驱动器分别断电时要有顺序先断使能信号后断主电源否则驱动器可能带着电机失控一下这种小细节现场吃过亏才记得住。6. 常见扩展方案与后续玩法6.1 PLC加变频器Modbus通讯的协作控制很多项目里PLC不只是控制步进电机还要同时管变频器。我见过一个比较典型的配置一个西门子PLC通过Modbus RTU和32台变频器通讯控制一组产线设备。步进电机负责精确定位变频器负责大功率主传动两者配合。这时PLC与变频器的Modbus通讯和步进控制并不冲突只是通讯口和高速脉冲口各自独立关键是通讯扫描周期不能太长否则变频器反应迟钝而步进电机这边用独立的中断和向导处理不受通讯阻塞影响。和ABB变频器、施耐德变频器通讯时需要先看清楚对方支持的Modbus映射地址。不同品牌变频器的频率地址、启停地址不一样比如有的用40001有的用40005甚至有的是寄存器位操作和西门子PLC的保持寄存器地址对应关系也各不相同。建议做一张地址映射表把每台变频器的启停、频率、电流、故障、复位等寄存器都列出来然后PLC里用MBUS_MSG轮询发送分时读写。6.2 一个PLC控制多台变频器和多个步进轴一个PLC能不能带动多个步进电机可以但要看型号的轴数上限。S7-200 SMART CPU最多支持4轴高速脉冲输出S7-1200可以通过扩展信号板增加高速输出通道。需要注意的是多个步进轴同时运动时脉冲输出可能产生优先级竞争在向导中要为每个轴分配不同的输出地址并错开启动时刻避免所有轴在同一时刻要求最高频率把CPU的高速输出资源挤爆。当一个PLC既要带多个步进轴、又要和32台变频器Modbus通讯时尽量选带两个通讯口的PLC。一个口做编程和HMI通讯另一个口做Modbus轮询。如果只有一个通讯口HMI刷新率会受影响而且程序下载时总线战会卡顿调试体验很差。通讯轮询程序要精简每台变频器的读写间隔可以设不同优先级重要的读故障、读电流可以少间隔不重要的写参数可以放在空闲时。6.3 从开环步进到闭环步进和伺服开环步进的硬伤是丢步了控制器不知道位置靠“死磕”机械卡一下就废了。对精度要求高的场合可以考虑闭环步进比如雷赛DM3E这类驱动器加上编码器反馈PLC发的脉冲位置和电机实际位置会实时对比一旦丢步驱动器会自动补偿或报警。接线方式和使用开环步进基本一样PLC侧同样发脉冲加方向不需要改成总线或者模拟量对老项目升级特别友好。如果对速度和动态响应有更高要求那就要上伺服电机但伺服驱动器的参数调整比步进复杂得多增益、惯量比、刚度和整定动作都不能省。从步进切换到伺服PLC的运动控制指令可以不变但伺服驱动器的电子齿轮比要正确设置否则位置和速度全部失真。性价比的选择是普通定位用步进中等精度闭环步进高速高动态用伺服这是我项目选型时的默认路线。6.4 脉冲控制向总线控制过渡现在越来越多的驱动器支持EtherCAT、PROFINET总线比如西门子的S7-1200配上伺服或步进驱动器的PROFINET接口可以省掉大量脉冲接线也能实时读到位置、电流、报警等状态。不过总线方案的学习成本和硬件成本都高一些对小白来说先把脉冲控制吃透再去玩总线控制会顺畅很多因为底层的位置控制原理完全相同。如果做新设备我在预算允许时更愿意用总线方案特别是轴数超过4个时总线的接线工作量明显少故障率也低。但如果是改造旧设备脉冲控制依然是最高性价比的选择PLC不用换驱动器接线改动量也小。最后再说两句经验前面那些内容基本覆盖了我做步进电机控制项目时的完整套路。有一点个人感触挺深西门子PLC控制步进电机这套东西难度不在指令而在接线和参数匹配方向反了、细分配错、使能接错三个问题占了现场故障的八成。所以我调新设备时一定会带一张自己整理的接线检查表先查公共端接法再查电机相序最后查细分拨码顺序固定能省很多骂街的时间。另外一个建议是调试时尽量让电机跑一个固定距离比如命令它走100毫米然后用卡尺量实际走了多少把实测值和理论值对比很多隐藏问题一下就暴露了。位置对不上要么脉冲换算有问题要么机械传动有间隙或打滑。这个“走100毫米验一验”的习惯值得每个做运动控制的人坚持下去。