ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

西门子PLC控制步进电机全解析:从接线组态到调试实战

西门子PLC控制步进电机全解析:从接线组态到调试实战 做自动化控制这些年我碰到最多的入门问题就是“西门子PLC怎么控制步进电机”。很多刚进这行的电气工程师梯形图会写变频器会调一遇到步进电机就卡住了接线不知道怎么接高速脉冲不知道怎么配加减速抬高了还老丢步。这篇文章我把完整链路拆开讲——从选型、接线、运动向导组态、TIA轴配置到实际调试中的坑一次性讲透。适合刚接触运动控制的初学者也适合想系统梳理一遍的在职人员。1. 系统架构与选型PLC、步进驱动器和电机的匹配关系一台典型的步进定位系统从上到下就三层PLC负责发脉冲和方向信号驱动器负责把脉冲放大成电流步进电机负责把电流变成机械转动。搞清楚这三层各自的职责后面很多问题都能自己推出来。1.1 为什么必须用晶体管输出的PLC步进电机的核心控制信号是脉冲一秒钟要发出几千到几万次通断也就是高速脉冲。普通继电器型PLC输出靠机械触点吸合动作频率撑死了几十赫兹根本跟不上。而晶体管输出没有机械触点靠半导体开关通断可以轻松做到几十kHz以上所以控制步进电机必须选晶体管输出型PLC。以西门子S7-200 SMART为例ST系列就是晶体管输出其中Q0.0和Q0.1两个点支持最高200kHz的高速脉冲输出。SR系列是继电器输出别指望用它做步进定位控制气缸电磁阀没问题控制步进电机就是给自己找麻烦。S7-1200的普通DC/DC/DC型号集成Q0.0、Q0.1可以做脉冲输出频率上限100kHz要求更高的场合可以通过信号板扩展最高做到1MHz。1.2 驱动器选型的三个硬指标驱动器选型不比PLC省心我自己的选型逻辑就盯三个参数电流、电压、细分支持度。电流驱动器额定电流要覆盖电机相电流。42步进电机相电流常见1.5A左右57电机相电流2~3A86电机相电流4A往上。驱动器选大了浪费选小了电机出力上不去还会引起过热报警。电压步进驱动器供电电压不是越高越好但也不能太低。42电机建议18~36V57电机建议24~50V86电机建议48~70V。经常有人拿24V开关电源直接带57电机能转但是高速矩频特性差跑到高速就没劲转速上不去。用48V电源供电500r/min以下表现会好很多。细分现在主流驱动器8~32细分都很常见。细分本质上是把驱动器对电机绕组的电流切得更细相当于把每一步切成更多小步让电机运转更平滑、噪声更小。细分越高PLC每转要发的脉冲数越多实际用的时候要平衡精度和PLC频率上限。1.3 电源分配容易被忽略很多人第一套步进系统会犯一个共性错误把PLC和驱动器共用一个开关电源。驱动器启动瞬间电流冲击很大尤其电机加速时母线电流会猛涨这会导致电源电压波动PLC供电一旦被拉低程序跑飞、脉冲乱跳就到头了。我的做法很简单PLC用单独的24V电源驱动器和电机用单独的电源两个电源的0V再接到一起这样做既防止了电源间的干扰又保证了信号电平一致。至于0V要不要连一定要连。不然PLC送出的24V脉冲信号和驱动器的输入参考0V不是同一个参考电位轻则信号误触发重则烧掉驱动器光耦输入。2. PLC与步进驱动器接线一次接对公共端和脉冲/方向信号接线是整个系统最容易出错也最不好排查的部分。看着就几个端子PUL、DIR、ENA一旦接错方向电机要么纹丝不动要么抖一抖就报警。2.1 先把驱动器的信号端子搞清楚市面上绝大多数步进驱动器面板上都标着这几组端子PUL、PUL-脉冲输入发一个脉冲电机就走一步。DIR、DIR-方向输入控制正转还是反转。ENA、ENA-使能输入一般不用接悬空默认使能。这些端子内部基本都是光耦隔离输入PUL/PUL-内部是一个发光二极管脉冲信号通过时让内部光耦导通从而控制驱动器的逻辑电路。理解了这一点接线原则就很简单要知道信号是从哪一端进、哪一端出让电流正确流过光耦。2.2 共阴极接法西门子源型晶体管输出的首选西门子S7-200 SMART和S7-1200的晶体管输出默认是源型PNP输出也就是输出点为高电平外部负载一端接输出点另一端接到0V。这种PLC接步进驱动器推荐用共阴极接法PLC侧 驱动器侧 Q0.0(脉冲输出) ──────→ PUL Q0.1(方向输出) ──────→ DIR 0V(M) ──────→ PUL- 0V(M) ──────→ DIR-这样PLC的Q点输出高电平时电流从Q点流入驱动器PUL再从PUL-流回PLC的0V光耦被点亮形成完整回路。我用这种接法带过不下几十台设备包括S7-200 SMART配雷赛DM542、57电机这种经典组合稳定得很。2.3 共阳极接法什么时候用有些场合比如PLC输出是NPN型、或者你用的是带灌电流输出的扩展模块那就需要反过来用共阳极接法24V ──────→ PUL 24V ──────→ DIR PLC Q0.0 ──────→ PUL- PLC Q0.1 ──────→ DIR-原理还是让电流流过光耦只不过这次是PLC输出点把PUL-拉低来点亮光耦。接之前一定要看驱动器说明书上有没有标明“共阳极/共阴极”支持方式现在多数驱动器两种接法都支持但接线端子内部带的限流电阻可能不一样照手册来最稳。2.4 使能信号、限流电阻和屏蔽线ENA端子很多人忽略我特别提醒一下大多数驱动器ENA不用接悬空默认使能。有些驱动器ENA逻辑是低电平使能有些是高电平使能一旦接错电机反而被锁死或者完全脱机。如果不需要外部急停控制驱动器脱机就让它悬空省事也安全。另一个容易翻车的是5V接口的驱动器。有些驱动器光耦输入默认是5V逻辑你直接把PLC的24V怼进去轻则光耦限流电阻发热重则烧毁输入接口。处理办法是串联限流电阻估算公式是(24V - 5V) / 10mA ≈ 1.9kΩ实际用2kΩ、功率0.25W以上的电阻就行。不过现在主流的雷赛DM系列、汉德宝系列都支持5~24V输入直接24V没问题碰到老款驱动器、进口驱动器就要留意了。脉冲信号线最好用双绞屏蔽线屏蔽层单端接地接驱动器侧或PLC侧不要两端都接动力线电机A/A-/B/B-和信号线分槽走不要绑在一起。很多丢脉冲问题其实是布线不合理造成的不是PLC和驱动器的问题。2.5 限位开关与原点开关的接法定位系统里一定跑不掉限位和原点。西门子PLC的数字量输入默认支持源型或漏型传感器市面上最常用的是NPN常开型接近开关。S7-200 SMART接NPN传感器时传感器正极接24V输出信号接PLC的输入点传感器0V接PLC的0V。这样传感器动作时把输入点拉到低电平PLC内部逻辑识别为“到位”。程序里用常闭触点还是常开触点按你需要的安全状态定急停类信号我通常建议接常闭。3. S7-200 SMART实现脉冲定位向导组态与指令库调用S7-200 SMART做运动控制最方便的地方就是有运动向导不用去记一大串底层SFC指令按向导一步步点完生成的指令库直接调用就行。下面我把整个流程过一遍。3.1 运动向导的完整组态步骤打开STEP 7-Micro/WIN SMART软件在左侧项目树里找到“向导”→“运动”双击后按下面顺序配选择轴轴0对应Q0.0轴1对应Q0.1一般先用轴0。测量系统选“工程单位”还是“脉冲”。我的建议是调试初期选“脉冲”省去单位换算做正式项目如果想界面显示毫米就选“工程单位”后面可以设“每转脉冲数”和“进给量”。每转脉冲数等于电机固有步数乘以驱动器细分。常规两相步进电机是200步/转驱动器设8细分那一转就是200×81600个脉冲。进给量如果选工程单位这里填电机转一圈工作台走的距离比如丝杆导程5mm就填5.0单位是毫米或微米看你上面的选择。方向控制选“单方向脉冲方向”还是“双方向正/反脉冲”日常定位用“单方向”就够了Q0.0发脉冲Q0.1方向。定义输入点可以选择把限位信号、停止信号接到PLC某些输入点也可以不分配完全用程序控制。分配了硬件输入点之后这些点的响应由向导生成的代码负责程序里不用再写。加减速时间默认值是1秒太快了现场大多数场合0.1~0.3秒比较合适。后面我会专门讲加减速的整定。生成指令点击“生成”软件会生成Axis0_CTRL、Axis0_Goto、Axis0_Run、Axis0_Stop、Axis0_Home、Axis0_Man、Axis0_LDPos等子程序。3.2 主程序里的调用方法生成完指令后必须保证Axis0_CTRL一直处在被调用的状态。一般我们在主程序的第一个扫描周期里调用初始化然后用一个SM0.0常ON条件调用Axis0_CTRL这样才能让运动一切正常。调用样例// 轴初始化控制SM0.0表示每个扫描周期都执行 Axis0_CTRL EN : SM0.0 Abort : M0.0 // 有信号立即停止 Done M10.0 // 初始化完成 Error MB11 // 错误代码 C_Pos VD100 // 当前位置单位由向导组态决定下面这个例子是绝对定位让轴从当前位置移动到10000脉冲的位置速度2000脉冲/秒// M0.1上升沿触发绝对定位 Axis0_Goto EN : M0.1 POS : 10000.0 // 目标位置 SPD : 2000.0 // 运行速度 Mode : 1 // 1绝对定位0相对定位 Done M10.1 Error MB12如果只是点动或连续运行用Axis0_Run和Axis0_Man要让设备回原点用Axis0_Home或Axis0_Rseek想重新定义当前位置用Axis0_LDPos。这些指令的EN都用边沿脉冲触发不要长时间置1否则同一个动作会被反复触发。3.3 示例丝杆滑台定位程序的完整逻辑顺序以最常见的丝杆滑台为例导程5mm电机200步/转驱动器8细分那就是每毫米320个脉冲。目标移动50mm就是16000个脉冲。// 上电初始化已由Axis0_CTRL完成 // 回原点 LD SM0.1 // 上电第一个扫描周期 S M0.2, 1 // 触发回原点 CALL Axis0_Home, M0.2, M20.0, MB21 // 回原点过程完成置M20.0 // 启动绝对定位 LD I0.0 // 启动按钮 EU S M0.3, 1 // 触发绝对定位 CALL Axis0_Goto, M0.3, 16000.0, 6400.0, 1, M20.1, MB22 // EN POS SPD Mode Done Error // 速度6400脉冲/秒相当于20mm/s // 停止 LD I0.1 // 停止按钮 S M0.0, 1 CALL Axis0_Stop, M0.0, M20.2, MB234. S7-1200/1500的TIA轴组态与运动控制指令写法S7-1200、S7-1500在TIA Portal里做运动控制思路和S7-200 SMART不太一样它更贴近伺服控制的概念先建“轴”工艺对象再用MC系列指令去操作轴。好处是复杂坏处也是复杂——但逻辑其实很好理解。4.1 在TIA Portal里配置脉冲轴在硬件组态里选中CPU找到“运动控制”标签勾选启用“脉冲发生器PTO1”Q0.0就是脉冲输出Q0.1默认是方向输出。在左侧项目树里找到“工艺对象”新增对象选择“定位轴基础”。双击打开轴对象选“硬件接口”为PTO1脉冲速率上限按PLC型号填写S7-1200一般按100kHz来设。在“组态”里设置“每转脉冲数”1600和“每转进给量”5mm再设定正/负硬限位开关所接的输入点。“动态”选项卡里设置最大速度、启动/停止速度、加加速度和加减速时间。如果加装了编码器反馈轴类型可选“闭环”普通开环步进选“开环”即可。这套配置完成之后PLC内部就建立了一个带位置的“虚拟轴”程序里所有位置、速度都用毫米和mm/s来表示不用自己换算。4.2 最小程序使能轴并执行绝对定位在OB1里至少要调用MC_Power不然其它MC指令全部报错。用STL或者SCL都行下面是SCL写法// 轴使能必须长期保持 MC_Power_Instance(Enable : PowerOn, StopMode : 0, Status PowerStatus, Error PowerError); // 回原点把当前位置定义为0 MC_Home_Instance(Execute : HomeCmd, Position : 0.0, Mode : 3, Done HomeDone, Error HomeError); // 绝对运动 MC_MoveAbsolute_Instance(Execute : StartAbs, Position : 50.0, // 单位mm Velocity : 100.0, // 单位mm/s Done AbsDone, Busy AbsBusy, Error AbsError); // 相对运动在当前基础上再走20mm MC_MoveRelative_Instance(Execute : StartRel, Distance : 20.0, Velocity : 80.0, Done RelDone, Busy RelBusy, Error RelError);S7-1200的MC_Power有一个非常容易踩的坑Enable信号必须一直为TRUE不能在触发一次后马上复位否则轴会被误停止。另外每次运动指令的Execute是沿触发这个跟S7-200 SMART的指令库一致。4.3 S7-1500和TM PTO的区别S7-1500本身不带高速脉冲输出口需要用带TM PTO的模块或通过CU250S之类的驱动控制单元来配合。原理和S7-1200类似只是在TIA里多了一个“硬件支持脉冲输出”的模块组态时要先选对模块型号。如果你手头是S7-1500建议优先考虑“轴”工艺对象配合PTO模块不建议自己用普通数字量输出模拟脉冲频率上不去精度也没保证。5. 回零、限位、加减速定位精度与稳定性的工程参数很多初学者把程序写通后设备运行时总感觉不对劲抖动、过冲、定位不稳、偶尔还报警。这往往不是代码逻辑问题而是工程参数设置不合理。5.1 回零方式怎么选步进电机开环控制没有位置记忆断电再上电当前位置就丢了。所以每次开机必须先回原点。常见回零方式有方式原理适用场景限位开关回零朝负限位找碰到开关后停止简单、便宜适合大多数设备原点开关Z相先找原点开关再找编码器Z脉冲高精度场合当前点为原点上电后直接用当前位置作为原点断电后位置不需要保持的场合S7-200 SMART里用Axis0_HomeS7-1200用MC_Home核心思想都是先慢速找开关再以固定偏移量回到精确原点。回零速度别太快一般用工作速度的10%~20%太快会因为减速距离不够导致过冲撞限位。5.2 加减速时间整定公式步进电机最怕的就是启动瞬间频率太高转不动导致丢步。所以起步频率要低然后逐步加速到目标速度。假设目标速度是V加速时间是t那加速度就是a V/t。举个例子速度100mm/s加速时间0.2s加速度就是500mm/s²这个值在大多数丝杆滑台场景都够用。实际调机时我的流程是先设一个保守值0.3~0.5s空载跑通后逐步缩短加速时间直到出现丢步或异响再退回原来的70%用作正式参数。注意不是所有设备都适合短加速时间负载惯量大、机械刚性差的机构加速时间越短冲击越严重位置误差反而更大。这也是为什么现在高端驱动器支持S形加减速的原因S形曲线比梯形曲线起步和结束更柔适合高精度场合。5.3 脉冲频率、细分和最高转速的换算步进电机不是转速越高越好超过一定转速后力矩急剧下降。以57步进电机为例一般推荐在300~600r/min以内稳定运行。选驱动器细分为8的时候一转1600脉冲600r/min对应的脉冲频率是1600×600/6016000Hz也就是16kHz这个频率对PLC的100kHz、200kHz输出很轻松。如果你把细分调到32一转6400脉冲同样600r/min就要64kHz了虽然大部分PLC还能扛但步进电机本身的电感会让高速时电流建立时间不足转矩掉得厉害。所以细分不是越高越好高细分的意义在于低速平稳性不在于提升最高速度。常规设备用8细分或16细分已经足够高速场合直接用伺服更合适。5.4 电子齿轮与脉冲当量有闭环步进驱动器或真正的伺服驱动器时会看到“电子齿轮”参数。这个概念跟驱动器细分有点像但还不完全一样电子齿轮是把“位置指令脉冲数”通过分子分母比例换算成“电机实际指令脉冲数”。比如PLC发1000个脉冲想让电机转一圈驱动器电子齿轮分子设为16、分母设为10那1000个脉冲经过换算变成1600个脉冲正好驱动电机转一圈。用电子齿轮的好处是可以在不改PLC程序的情况下自由选择脉冲当量把PLC发的脉冲数和机械位移对齐。不过现在普通开环步进驱动器没有电子齿轮靠的还是细分拨码。选型和调机时直接把“脉冲当量”这个概念用起来就行每个脉冲对应的机械位移 导程 / 每转脉冲数。比如导程5mm、每转1600脉冲脉冲当量就是3.125微米这个数值在触摸屏上显示位置时特别有用。6. 实战排查不转、丢步、发热、超差的常见现象与处理最后这部分全是实际调试中反复踩过的坑。我按照“现象→原因→处理”的方式汇总成一张排查表现场照着查能省一半时间。6.1 常见故障速查表现象可能原因处理方法电机完全不动PLC没发出脉冲或接线极性反了先用状态表监控Q0.0看有没有脉冲变化再用万用表量驱动器PUL两端电压电机抖动但不转A/A-、B/B-相序接错或只接了一相检查驱动器输出相序按A、A-、B、B-依次接好电机转一会儿就停驱动器过流报警或电流设置过大看驱动器报警代码按电机铭牌重新设定电流拨码脉冲发了但位置不对丢步或加减速太猛减小加速度检查电源电压排除信号干扰方向反了方向信号接反或相位接反通过参数或对调A和A-或者程序里取反方向位电机发热严重电流设置过大或长时间静止仍通大电流降低电流静止时用半电流功能每次定位差固定的距离细分或每转脉冲数设置与实际不匹配核实电机步数×细分数和向导参数是否一致6.2 一次典型的“不转”排查经历有一次现场调试一台裁切送料机PLC程序监控Q0.0的位状态确实在闪但电机就是不动。我当时没急着怀疑硬件先量了PLC输出点到驱动器PUL之间的电压发现24V和0V之间没有压差再量PUL和PUL-之间也没有信号。后来拆开端子一看是驱动器侧PUL-没有接到PLC的0V回路根本不闭合脉冲信号再强也流不过去。把0V补上之后电机马上转起来了。这个案例说明接线时一定要自己画一个完整回路图不光看PLC输出点有没有信号还要看信号能否从驱动器流回电源负端。断的是回路不是信号。6.3 丢脉冲的常见诱因和干扰排查丢脉冲是步进系统最隐蔽的故障。现象是位置误差时大时小重复定位不稳定。我遇到过的几个典型诱因PLC和驱动器不共地0V没连在一起脉冲高电平可能低于驱动器阈值导致部分脉冲丢失。处理把PLC的M和驱动器电源的0V可靠连接。动力电缆和信号电缆平行走线过长电机相线里的电流变化会在信号线上感应出噪声脉冲驱动器每收到一个噪声脉冲就多走一步位置就偏了。处理分槽走线信号线用双绞屏蔽线屏蔽层单端接地。加速时间太短高速启动导致失步电机实际转过的角度小于指令角度。处理延长加速时间或降低目标速度。PLC扫描周期不稳定如果用的是普通数字量输出模拟脉冲扫描周期抖动会导致脉冲间隔不均驱动器误判。这也是为什么必须用高速脉冲输出点硬件自己产生精确占空比的信号不受扫描周期影响。6.4 把限位保护做成“安全兜底”运动控制系统的安全性不能光靠程序逻辑。程序里当然要写软限位判断但硬件限位开关也必须接到PLC输入点上。就算程序写得再完备总有传感器失效、参数误设的时候机械限位才是最后一道防线。S7-200 SMART运动向导里可以直接分配LMT和LMT-输入点分配之后轴碰到限位会立即停止并为负/正方向限位标志位置位。S7-1200则在轴工艺对象里设置“硬限位开关”可以选择“立即停止后禁止继续前进”或“立即停止后允许反向慢速退回”。我的习惯一直是选后者因为设备停工后往往需要先把机构退回来才能重新开始作业。6.5 从开环到闭环的升级思路当开环步进的丢步问题怎么调都压不下去时可以考虑升级为闭环步进。闭环步进就是在步进电机尾部加一个编码器驱动器实时读取编码器反馈发现丢步会自动补发指令。很多项目不需要上伺服用闭环步进就能满足需求成本比伺服低一大截。控制器层面完全不用改PLC还是发脉冲只需要把原来的驱动器换成闭环步进驱动器电机换成带编码器的闭环步进电机接线多一组编码器线其余照旧。这也是很多设备厂在从低成本方案往高可靠性方案迁移时最常用的平滑过渡手段。我在实际使用中的体会是步进控制系统80%的问题出在接线和参数整定上真正需要换硬件的情况比较少。每次排查都按“电源→接线→信号→参数→机械”的顺序走基本都能快速定位。这篇文章写到的所有接法和组态流程我都在现场设备上验证过尤其共阴极接法和运动向导这两块建议新手先原样照做跑通了再去理解为什么会比一上来就琢磨原理更省时间。
返回列表