ARTICLE DETAIL

资讯详情

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

S7-200 PLC步进电机正反转控制:接线、梯形图与调试全攻略

S7-200 PLC步进电机正反转控制:接线、梯形图与调试全攻略 做设备改造这几年遇到最多的需求之一就是让步进电机按设定方向转起来而且还要能随时换向、随时停车。我最近用西门子S7-200 PLC给一台小设备做了套步进电机正反转控制从接线到梯形图调试踩了不少坑也总结出一套可以直接照抄的方案。设备需求不复杂启动正转、启动反转、停止速度可调但真正落地时涉及脉冲输出、驱动器参数、加减速、互锁逻辑每一步都值得写清楚。这篇记录适合正在学PLC步进控制、或者要快速出样机的朋友参考。S7-200这个系列虽然已经是老将但在存量设备改造、教学实验、小型专机上仍然大量存在。用S7-200控制步进电机核心就三件事让PLC输出脉冲、用方向信号控制正反转、把驱动器参数和电机参数算清楚。只要把这三条线理顺剩下的梯形图就是个状态转换问题。下面我把方案设计、硬件接线、参数计算、梯形图、调试排查五块内容逐个展开。整个过程我用的是S7-200 CPU224 DC/DC/DC晶体管型加42步进电机和常规两相驱动器这套组合在市场上非常常见你手上的硬件略有差异也不影响逻辑理解。1. 项目需求与整体方案设计1.1 需求拆解正转、反转、停止与速度调节这个项目最原始的需求就一句话让一台步进电机转起来按按钮正转按按钮反转按停止停车。但如果直接照着这句话去接十有八九要翻车。我习惯先把需求拆成明确的功能点再写程序。拆下来其实有五个点第一两个启动指令分别对应正转和反转第二两个方向之间必须互锁不能同时有效否则方向信号抖动会导致电机换向冲击第三停止指令要能在任何状态下切断输出第四转速要能调到不同档位不能一锤子定死第五最好有运行状态指示方便现场观察是正转还是反转。这种需求在设备改造里很典型比如小型传送带换向、丝杆滑台往复、标签机进给逻辑都不复杂但对可靠性有要求。互锁这个细节尤其重要很多新手程序里少了一行互锁现场按快一点就会出现正反转标志同时置位步进电机还没转起来就说“坏了”。其实不是坏了是程序逻辑有漏洞。1.2 为什么选S7-200加步进驱动器方案有人问过我用变频器不行吗为什么要步进电机。要说清楚这个得看负载特点。变频器驱动异步电机强调的是平滑调速和大扭矩但定位能力很弱步进电机靠脉冲驱动开环就能准确数脉冲转多少圈由脉冲个数决定非常适合这种“转固定圈数然后换向”的场景。S7-200在这个方案里的角色是脉冲发生器加逻辑控制器。它有两个高速脉冲输出口Q0.0和Q0.1晶体管型号最高能输出几十kHz的脉冲驱动常规42步进电机完全够用。相比用独立脉冲发生模块或者单片机方案PLC的最大优势是梯形图修改逻辑不需要改硬件现场调整方向、速度、圈数几分钟就能搞定。运动控制确实是PLC学习中一个不大不小的坎但用步进电机入门是最合适的因为硬件直观、反馈明确、效果立竿见影。你理解了脉冲怎么发、方向怎么切、驱动器怎么配后面再做伺服、做总线运动控制底层思路都是相通的只是接口从脉冲变成了通讯。1.3 系统架构与控制信号流向整个系统的信号流向很清晰PLC通过Q0.0输出脉冲串脉冲频率决定电机转速脉冲数量决定电机转过的角度PLC通过Q0.1输出方向电平高电平一个方向低电平另一个方向脉冲和方向信号进入步进驱动器驱动器内部把脉冲转换成电流时序驱动电机绕组步进电机连接负载开环完成位置控制。驱动器还需要一个使能信号ENA这个信号的作用是让驱动器输出级通电或断开。调试时如果把ENA接反了会出现电机完全没力、用手能直接拧动的现象第一次遇到的人很容易误判成电机坏了。后面接线章节我会单独讲这个端子怎么处理。把系统拆成信号流来看编程思路就很自然了逻辑层负责处理按钮和互锁输出层负责控制脉冲输出和方向电平。这也是整个梯形图设计的骨架后面第四章的程序就是沿着这个思路写的。想清楚信号流再动手写程序比盯着梯形图硬憋要高效得多。2. 硬件选型与接线实战2.1 需要准备哪些硬件先列清单这些基本上就是市面上最常见的组合。PLC我用的是西门子S7-200 CPU224 DC/DC/DC后缀三个DC分别表示直流供电、直流输入、晶体管输出。注意这里必须是晶体管输出型也就是DC/DC/DC如果是AC/DC/继电器型继电器输出的响应速度不够没法输出高频脉冲很多人第一次就栽在这上面。步进电机我用的是42步进电机两相四线制步距角1.8度也就是200步整圈。42这个数字指机座尺寸42mm是小负载的主流选择。驱动器配套的是常规两相混合式步进驱动器型号很多比如DM420、TB6600这类接口定义大同小异。还要准备一个24V直流开关电源给PLC和驱动器信号端供电一个36V或48V直流电源给步进驱动器主供电以及按钮、急停、指示灯、端子排和导线。驱动器的供电电压不用和PLC一样很多驱动器主电源支持18V到50V电压高一点对高速性能有利但也不能超过手册上限否则可能烧驱动器。2.2 S7-200高速脉冲输出口怎么选S7-200晶体管型CPU有两个高速脉冲输出点Q0.0和Q0.1这两个点归PTO/PWM功能模块管理使用前需要在程序里配置控制字节。普通输出点也可以输出方波但频率受扫描周期影响极不稳定所以控制步进电机必须用Q0.0或者Q0.1这样的高速口不能用其他输出点替代。注意控制步进电机只能用Q0.0或Q0.1这样的高速脉冲输出口普通数字量输出点不能用于脉冲输出否则频率根本提不上去电机转起来像爬行。我这个项目只用了一个轴所以脉冲走Q0.0方向走Q0.1。Q0.1因为被借用为方向信号它本身的高速脉冲功能就不能同时使用了这没有问题方向信号只是普通电平不需要高速能力。如果以后要做双轴联动Q0.0和Q0.1可以分别作为X轴和Y轴的脉冲输出但方向信号就要另外找普通输出点了。需要特别注意S7-200的PWM/PTO功能一旦使能对应的输出点就由高速模块接管此时用SET/RST指令去置位或复位这个点是无效的程序执行结果可能让你一头雾水。我调试时就遇到过Q0.0指示灯亮了但万用表量不出电压后来才反应过来是PWM模式还在输出把它当普通输出点去控制自然不生效。2.3 接线图逐线说明步进驱动器的信号端子通常有PUL、PUL-、DIR、DIR-、ENA、ENA-不同厂家叫法略有差异但功能一致。接线方式主要分共阳极和共阴极两种。西门子S7-200晶体管输出一般是源型输出导通时输出点输出24V高电平所以我用的是共阴极接法PUL接PLC的Q0.0PUL-接24V电源的0VDIR接PLC的Q0.1DIR-接0V。PLC输出高电平时电流从输出点流进驱动器光耦再回到0V信号有效。如果你的驱动器手册默认的是共阳极接法也就是PUL接24V、PUL-接PLC输出那就要先确认你的PLC输出类型是不是漏型或者用中间继电器转换不能直接照抄。这个细节很多教程不提但实际项目中因为PLC输出类型不匹配造成信号不通的情况非常常见尤其是从三菱PLC转过来的朋友更要注意。主电路接线相对固定。驱动器A、A-接电机A相绕组引线B、B-接B相绕组引线。两相四线电机出厂一般会给出红蓝绿黑四条线但不同厂家颜色定义不一致最可靠的办法是用万用表测电阻同一相两根线之间电阻很小不同相之间不通。如果相序接反电机会剧烈抖动而不是正常旋转下面调试章节我还会细讲。2.4 接线时的三个关键避坑点第一PLC供电和驱动器供电最好分开。PLC用24V开关电源驱动器主电源用36V或48V电源不要把驱动器主电源直接接到PLC的24V上。驱动器工作电流大启动瞬间电压跌落可能把PLC拉复位这个故障非常隐蔽排查起来很头疼。第二ENA使能端子要谨慎处理。很多驱动器手册写着ENA接24VENA-不接或接0V这是禁用使能的状态电机通电锁定。如果你不需要通过PLC控制电机脱机最简单就是让ENA悬空或者按手册默认处理如果接线时ENA-接到了0V而ENA空着相当于使能了脱机电机就没力了。调试时想手动盘车检查机械阻力倒是可以利用这个端子。第三信号线不要和主电源线走在同一根线槽里。PUL和DIR信号本质上是高频脉冲一旦和驱动器电源线或者电机线平行走线干扰容易串进脉冲信号里表现为偶发丢步。正确做法是信号线用屏蔽线屏蔽层在PLC端单点接地主电源线单独走线槽交叉时保持垂直。3. 步进控制原理与参数计算3.1 步进电机为什么能正反转步进电机的核心原理是通过给不同绕组通电让转子磁场一步步“追”定子磁场。两相混合式步进电机的转子是永磁体定子上有两组绕组驱动器按照PUL脉冲的顺序切换电流方向每来一个脉冲电机就前进一步步距角1.8度意味着转一圈需要200个脉冲。正反转的实现方式有两种理解角度。从电机内部看改变两个绕组电流的相位顺序转子旋转方向就反过来从外部控制看驱动器已经帮你把这件事做好了你只需要给DIR端子一个高电平或者低电平驱动器内部就会按照相反的顺序换相。所以PLC控制正反转本质上是控制Q0.1这个方向电平而不是控制电机绕组的电流这一点想明白了程序就简单了。还有一个概念容易混淆就是电机的“步距角”和驱动器的“细分”。步距角1.8度是电机本身的电气特性但驱动器细分后一个脉冲对应的角度会变小。比如8细分时每个脉冲电机只走0.225度一圈需要1600个脉冲。细分并不会改变电机步距角的物理极限但能让运行更平稳、噪音更小尤其在低速时效果明显。3.2 转速、细分与脉冲频率的换算这是整个项目里最容易算错的地方。转速与脉冲频率的关系可以用一个公式表达电机转速转/分钟 脉冲频率Hz× 60 ÷ 每转脉冲数。每转脉冲数等于电机固有步数乘以细分数固有步数是200如果驱动器拨码设置为8细分那么每转脉冲数是1600。举个例子我想让电机以120转/分钟运行那么脉冲频率 120 × 1600 ÷ 60 3200Hz也就是3.2kHz。如果驱动器的拨码是16细分每转脉冲数变成3200同样的3.2kHz频率下转速就变成60转/分钟。这说明转速和细分是联动的调了驱动器拨码以后程序里的频率如果不跟着改实际速度会变化很大。我在程序里用PWM周期来控制频率。S7-200的PWM模块设置的是周期和脉宽周期是频率的倒数比如3.2kHz对应的周期是312.5微秒。如果时基选择1微秒SMW68写入313即可四舍五入一点误差对步进影响不大。如果频率再高比如10kHz周期只有100微秒此时周期的微小误差就会明显影响转速所以高速时尽量选择整数周期对应的频率。为了直观我把常用转速对应的频率列出来方便现场调试时快速查表。电机200步、8细分也就是1600脉冲每转的情况下60转/分钟对应1.6kHz120转/分钟对应3.2kHz300转/分钟对应8kHz600转/分钟对应16kHz。600转每分钟对42步进电机来说已经接近高速区扭矩下降明显不一定能稳定运行具体要看电机的矩频特性曲线。3.3 加减速为什么重要步进电机的转矩随转速升高而下降这是它天生的矩频特性。如果一启动就把脉冲频率拉到3000Hz电机会来不及换相直接丢步甚至堵转。解决办法是加减速也就是让脉冲频率从低到高平滑爬升停止前再从高到低降下来。S7-200的PWM模式本身没有加减速能力它只能输出恒定频率的方波。所以如果要做固定速度的连续运行我一般用较低的速度档位直接启动或者把加减速的需求交给驱动器侧的“自动半流”和内部平滑功能去缓解。但真正严格要求的定位场合就要用PTO模式并配合向导生成的加减速曲线了。PTO向导支持定义加速时间、减速时间和运行速度生成一段脉冲包络PLC按照包络曲线自动完成加减速。比如加速0.5秒到2000Hz运行1秒再减速0.5秒停住整个过程脉冲总数固定位置精确定位。这一部分我在第四章单独讲新手入门可以先用PWM玩通逻辑再上PTO做定位理解起来会顺畅很多。4. 梯形图程序设计4.1 程序框架与符号表写程序之前先建符号表这一步很多人懒得做但项目稍大就会后悔。我使用的符号表如下I0.0是正转启动按钮I0.1是停止按钮I0.2是反转启动按钮Q0.0是脉冲输出Q0.1是方向输出M0.0是正转标志M0.1是反转标志M2.0是运行标志。程序整体分为三块逻辑控制块负责处理按钮和互锁输出控制块负责设置PWM参数和PLS指令状态指示块负责驱动方向点。三块之间用M寄存器传递状态这样修改按钮逻辑不影响脉冲输出部分调试的时候也方便监控中间变量。用M寄存器而不是直接用Q点做逻辑判断是我一直坚持的习惯因为中间变量可以复用也给后续扩展留了余地。下面以PWM连续输出方式为例先演示最简单的正反转逻辑。这个方案不追求精确定位但逻辑完整、容易理解适合第一次做步进控制的初学者。精确定位方案在4.4节用PTO向导实现。4.2 启停与互锁逻辑梯形图先写正转启动网络梯形图用文本方式表达Network 1 正转启动 I0.0 M0.1 I0.1 M0.0 ----| |-------|/|--------|/|---------( )---- M0.0 ----| |------------------------------------这段逻辑的含义是按下正转按钮I0.0并且反转标志M0.1没有置位停止按钮I0.1没有按下正转标志M0.0才会得电。M0.0的常开触点并联在启动按钮下面形成自锁松开按钮后程序仍然保持正转状态。M0.1的常闭触点是互锁防止正转和反转同时有效。反转启动网络结构完全一样只不过输入换成I0.2输出是M0.1互锁触点换成了M0.0的常闭点。这样两个网络最终只有一个方向标志能够保持按下正转再按反转时反转网络里的M0.0常闭触点已经断开反转不会启动必须先按停止才能切换方向。有人问过为什么不直接在输出端加常闭互锁。原理上输出端互锁也能防止Q0.1同时得到两个相反信号但中间标志层的互锁更可靠因为方向输出逻辑还可以继续扩展比如加状态指示、加计数器都不会影响底层互锁。养成标志层互锁的习惯后面写复杂程序会省很多麻烦。4.3 PWM连续正反转的程序实现正反转标志确定之后需要把运行状态合并成一个运行标志M2.0。M2.0在M0.0或M0.1任一为真时得电你可以把它理解成“电机的总运行开关”。这个M2.0作为脉冲输出的总开关程序可以通过判断M2.0的状态来决定是否继续输出PWM。PWM参数的写入和使能需要放在一个边沿触发的网络里不能每个扫描周期都执行PLS指令。原因是PLS指令会重启PWM输出如果每个周期都执行输出会被持续复位电机根本不会动。我用S7-200的上升沿指令只在M2.0从0变1的时候执行一次参数写入和PLS。Network 5 启动PWMM2.0上升沿触发一次 M2.0 ----| |-------------| P |------------------- MOVB 16#91, SMB67 MOVW 313, SMW68 MOVW 156, SMW70 PLS 0这里SMB67是Q0.0的PWM控制寄存器16#91对应二进制10010001含义是1微秒时基、允许更新周期、允许更新脉宽、使能PWM输出。SMW68写入313对应313微秒的周期频率约3.2kHzSMW70写入156对应约50%占空比。实际使用中不同版本的S7-200系统手册对SMB67的位定义表述略有差异但主流的写法就是按这个规范来的。停止部分同样用下降沿触发。M2.0从1变0时把SMB67的使能位清零再执行一次PLS指令Q0.0就停止输出。不要把使能位清零的PLS放在每个周期都执行的网络里否则会导致PWM无法正常启动我在调试时吃过这个亏后面排查章节会细说。方向输出很简单正转标志M0.0为1时置位Q0.1反转标志M0.1为1时复位Q0.1。用置位和复位指令比用普通输出线圈更安全因为M0.0和M0.1已经互锁了置位复位只会执行一次方向电平保持稳定不会因为扫描周期里的偶然状态变化产生抖动。4.4 用PTO向导做精确定位如果需求变成“正转5000个脉冲再反转5000个脉冲”PWM方案就不够用了因为PWM不计数不知道电机走了多少步。这时候应该用S7-200的PTO功能配合Micro/WIN自带的位置控制向导。在项目树点开“向导”选择“运动控制”配置0号轴也就是Q0.0。第一步选择PTO模式第二步填写电机每转脉冲数比如8细分时填1600第三步选择方向控制方式我选择“Q0.1做方向输出”第四步设置加减速时间比如加速0.5秒、减速0.5秒。向导完成后会自动生成PTO0_CTRL和PTO0_RUN两个子程序。提示PTO向导一旦接管Q0.0就不要再手动执行PLS指令否则两套代码会互相干扰。所有控制都通过PTO0_RUN的输入参数来修改。主程序里先调用PTO0_CTRL做初始化然后在正转启动时调用PTO0_RUN填入目标脉冲数和运行速度。PTO0_RUN内部会按照向导设定的加减速曲线输出脉冲包络发完指定脉冲数后自动停止位置是开环精确的。这个方法比手动操作PTO寄存器可靠得多也省去了一堆SM区操作新手强烈建议直接用向导。需要注意PTO0_RUN的引脚在不同版本的Micro/WIN软件里略有区别具体以生成后的块定义为准但逻辑是一样的。这个方案做出来的正反转定位比PWM方案更贴近实际工业应用尤其适合丝杆滑台、点胶机、焊接头这类需要精确走位的设备。我这套项目最后就是把PWM方案换成了PTO向导方案因为客户后续要求在固定位置停留PWM模式根本满足不了。4.5 程序改进多档转速与状态指示基础程序跑通之后可以很自然地加多档转速。把二档速度对应的周期值存在VW10三档存在VW12然后通过选择开关或者触摸屏按钮把选中的周期值MOV到SMW68再执行一次PWM更新。由于PWM输出过程中可以动态更新周期只要同步刷新SMW68并重新执行PLS速度切换就能即时生效。状态指示加一组很简单Q1.0接一个“正转指示灯”Q1.1接“反转指示灯”梯形图里直接把M0.0和M0.1的输出并联到这两个点。有些设备还会要求带“到位”信号这个在PTO方案里可以通过PTO0_RUN生成的Done位来触发非常方便。还有一个常见扩展是加计数器记录电机运行了多少次到了设定次数自动停机。计数器放在正转标志的下降沿后面每次正转结束加一到达设定值后复位运行标志。这类扩展不改变核心控制逻辑但对现场维护很有用机械寿命统计、保养提醒都可以靠它实现。设备越往后做这些“锦上添花”的功能越能体现程序的完整度。5. 调试流程与常见问题排查5.1 上电前的自检清单接完线先别急着上电我用十分钟按下面这个顺序检查能避免一大半故障。第一步确认PLC型号后缀是DC/DC/DC晶体管型如果不确定就看输出端子附近有没有“晶体管”标识继电器型的不能用于脉冲输出。第二步用万用表电阻档测驱动器A相、B相绕组确认电机相线没有短路和断路。第三步检查驱动器电源极性接反轻则烧保险重则损坏驱动器。第四步确认PUL、DIR信号线没有和主电源线混扎屏蔽层有没有接好。第五步程序下载前先编译通过把PLC切到RUN模式观察CPU运行指示灯。我习惯先把Q0.1方向信号单独测试一遍给程序里临时写一段固定电平输出去控制Q0.1确认正反转方向对应的电平正确。这一步会让后面调试脉冲输出时少一个变量逻辑上更可控。调试就是不断缩小问题范围的过程一次只测一个点比上来就全系统跑要快得多。5.2 常见故障速查表下表是我在测试中遇到最多的几类问题基本覆盖了新手会踩的坑现象可能原因排查方法电机完全不动也没声音PLC没输出脉冲、驱动器无电源、使能脱机用万用表量Q0.0对地电压检查驱动器供电和ENA接线电机抖动但不转电机相线接反、电流设置太小调换A相或B相任意一组接线检查驱动电流拨码电机只往一个方向转Q0.1方向信号无效、方向逻辑错误手动控制Q0.1电平看方向是否切换运行中偶发丢步频率过高、加减速太急、干扰降低频率、用PTO加减速包络、信号线改屏蔽电机没力手能转动ENA被激活为脱机、驱动器电流过小检查ENA接线调整驱动电流到电机额定值程序下载后指示灯乱闪PWM使能后普通输出点被剥夺、程序有双线圈检查Q0.0是否被普通线圈指令占用第三行“只往一个方向转”在纯PWM方案里特别容易遇到因为方向信号是电平如果Q0.1接线松动或者程序里忘写了方向网络脉冲照常输出电机当然只朝一个方向转。我建议调试时先用最笨的办法找两个按钮分别置位复位Q0.1确认方向信号本身没问题再联调程序。5.3 我的调试实录与心得这次调试我印象最深的一个故障是电机能转但转速比计算值慢一半。我用公式算出来应该是120转每分钟实际只有60左右第一反应是频率设置错了结果查了半天发现是驱动器细分数拨码拨错了位8细分拨成了16细分每转脉冲数翻倍转速自然减半。所以记住改频率之前先看一眼驱动器拨码这个错误非常隐蔽因为它不是程序问题而是参数不一致。第二印象深刻的是PWM反复执行PLS导致电机不走的现象。当时我把参数写入和PLS放在了每个扫描周期都执行的网络里Q0.0指示灯亮万用表也有电压但电机纹丝不动。后来才想明白PWM模块的每个新周期被PLS反复重启输出刚建立又被清零电机当然无法响应。这种情况用示波器看波形最直观没有示波器就靠逻辑推断把PLS挪到上升沿网络后立刻正常。调试下来我的体会有三条第一先手动后自动先单点后联动任何一步不确定就单独测第二参数改动一次只动一个变量同时改细分数和周期会导致两个原因互相干扰第三一定要做互锁程序逻辑上的小漏洞在现场会变成非常难查的软故障而互锁是成本最低的防护手段。最后再分享一个实用技巧。如果你的PLC和驱动器之间信号线比较长超过两米建议在驱动器侧并一个电阻到公共端降低干扰。还有S7-200的PTO向导生成后如果设备换过电机或者细分数只需要重新配置向导再下载比手动改一堆SM区快得多。这个项目做下来最大的体会就是步进控制没有想象中那么玄乎把脉冲、方向、细分三者之间的关系吃透剩下的事情就是按部就班地接线和写梯形图。以后想往视觉定位或者触摸屏联动方向扩展这套脉冲控制框架也完全可以继续沿用。
返回列表