☰
基于S7-200 SMART与V90伺服的小型设备PLC控制系统设计与交付
2026/10/22 6:06:49 网站建设 项目流程

前一阵帮客户改一套小型送料设备的控制系统,合同里明明白白写着一条要求:程序必须带详细注释,同步交付控制系统说明书、IO表、电气原理图。客户可能只是顺嘴一提,但干过工控的人都知道,这句话几乎把项目交付里最容易糊弄的几个环节全点了一遍——程序能跑起来不难,难的是跑完之后同事能接手、客户能操作、售后能查、下一个工程师改功能时还能看懂。

这套项目用的就是大家常说的Smart200——准确说是西门子S7-200 SMART PLC,带着一台V90伺服做位置控制。整套做下来,从选型、IO规划、画图、写程序到现场调试,中间踩了几个比较典型的坑,也有不少值得沉淀的经验。这篇就把完整思路和实操过程摊开写清楚,给正在做类似小型自动化设备、想一次把交付物做齐全的同行一个参考。

1. 选型阶段先想清楚:V90用哪种方式和PLC对话

1.1 同样叫V90,订货时却有“三种身份”

V90伺服驱动器这几年在小型设备里用得非常多,但很多第一次接触的人会被它的版本搞晕。按外部控制接口分,常见的就三类:PTI版本,接受外部脉冲和方向信号,PLC发脉冲它就动,相当于一个“吃指令的执行器”;PN版本,走PROFINET实时以太网,指令报文和数据都由网络传输;还有带RS485接口、支持Modbus RTU从站通信的版本,PLC通过串口读写它的参数和状态。

这三种版本外形很接近,订货号有区别,价格也不同。选错了会非常尴尬——PN版本需要带PROFINET控制器的PLC才能发挥价值,而手头的S7-200 SMART本体根本没有PROFINET控制器功能,它上面那个以太网口主要用来编程、下载程序和连接触摸屏,不能直接当PROFINET IO控制器去配置V90 PN。很多人以为“有网口就能PN”,这个坑在选型阶段就要避开。

1.2 两条能走通的控制路径

S7-200 SMART和V90真正能稳定配合的路径,业内常用的就两条。

第一条是最经典的脉冲方案:PLC的晶体管输出口Q0.0、Q0.1发高速脉冲,配一个方向信号,接到V90 PTI版。V90内部完成位置闭环,PLC只负责告诉它“走多少个脉冲”“往哪个方向”。这套方案接线少、逻辑直观、维护门槛低。

第二条是串口通信:利用S7-200 SMART本体集成的RS485口,通过Modbus RTU库指令MBUS_CTRL、MBUS_MSG去读写V90的从站参数。好处是能读回大量状态字、故障码,程序里可以做很细的状态判断;坏处是报文解析比脉冲逻辑复杂,调试时对参数地址的依赖很高,普通设备维护人员接手时会比较吃力。

这两种我都试过。对这台送料设备,控制精度在0.1mm级别,PLC通过电子齿轮比算出脉冲当量,脉冲方案完全够用,而且现场出了问题拿万用表就能大致定位——有脉冲没动作,查伺服参数;没脉冲,查PLC程序。最终我选了PTO脉冲加V90 PTI版本。

1.3 顺带确认的几个硬件细节

选PLC时也要看一下输出类型。S7-200 SMART的CPU分继电器输出和晶体管输出,只有晶体管输出(型号里带T,比如ST30、ST40)才能发100kHz级别的高速脉冲,继电器输出型根本没有这个能力,只能作废重选。

另外,本体自带Q0.0、Q0.1两路高速脉冲输出,也就是最多控制两个轴。如果设备有三四个伺服轴,要么换更高定位的PLC,要么加SB DT04信号板扩展两路脉冲,这一步不在选型时确认,等到画原理图时发现输出点不够,整个柜子布局都要推翻。

V90的功率选型也别只看电机铭牌——制动电阻、编码器电缆长度、动力电缆屏蔽层,这些都要在选型阶段列进清单。尤其是电缆长度超过V90手册推荐值的情况,需要加滤波器或选更大截面的屏蔽电缆,避免现场出现干扰性报警。

2. 先钉死IO表,再动笔画电气原理图

2.1 哪些点位必须硬接线,不能省

很多工程师习惯先把程序框架搭起来,边写边加点位,最后再补IO表。我的习惯正好反过来:IO规划不确认清楚,一张图都不会画,一条程序都不会写。

送料设备这类小系统,必须硬接线的点位有这几类:急停回路、原点开关、正负限位、伺服报警输出、伺服就绪输出。急停必须走硬回路串联到伺服使能信号里,直接切断使能回路,绝不能只靠程序里一个常闭点去处理——程序扫描周期再快也有延迟,而且CPU死机的时候,程序里的急停就完全失效了。

限位和原点,这里想多说一句。限位开关我建议同时接进PLC和伺服驱动器。只接PLC的话,伺服自己不知道边界在哪,一旦程序跑飞,它可能带着机械硬撞限位挡块;接进伺服之后,V90的PTI版本本身就有正负限位输入,等于在驱动层又多了一道机械保护。原点开关接伺服做回零,接PLC做程序判断,两边各自有用,不要图省事只接一边。

2.2 一张能落地的IO表,字段比数量更重要

IO表不是简单列个“I0.0启动、I0.1停止”就完了,真正能落地的IO表,每一行都要能对应到电气图和程序里的同一个符号。我自己惯用的字段是:PLC地址、符号名、中文注释、电气图端子号、线号、信号类型、传感器供电规格、常开/常闭逻辑。

以这台设备为例,摘一部分输入点:

PLC地址符号名中文注释电气图端子号信号类型备注
I0.0SB_Start启动按钮(无锁)X2-124V DC输入常开,按下有效
I0.1SB_Stop停止按钮(无锁)X2-224V DC输入常开,断开即停
I0.2SQ_Home回零原点开关X2-324V DC输入常开,感应有效
I0.3SQ_LimitP正方向限位开关X2-424V DC输入常闭,断开报警
I0.4SQ_LimitN负方向限位开关X2-524V DC输入常闭,断开报警
I0.5Servo_ALM伺服报警输出X2-624V DC输入常闭,报警时断开

像“常闭、断开报警”这种逻辑,在IO表里写清楚,电气图接线的人才不会接反,写程序的人也不会把常开常闭搞错。

2.3 画电气原理图时最容易对不上的三处

EPLAN、CAD都行,工具不是重点,重点是图纸和IO表必须一对一能对上。我反复核对时发现,最容易出错的是三处:

第一是PLC的COM端和24V电源负极的共地问题。S7-200 SMART的输入点一般用源型接法,公共端接传感器电源正极,信号线回到输入端。如果IO表里写了传感器用NPN输出,而PLC公共端却接了正极,所有信号全部无效,现场查半天查不出来。

第二是脉冲线和方向线的屏蔽处理。PTO频率一上去,干扰问题就显形了。脉冲信号线必须用双绞屏蔽线,屏蔽层在PLC侧单端接地,不能两端都接地,更不能把脉冲线和动力线走同一个线槽。

第三是急停继电器。急停按钮后面带一个中间继电器,继电器的常闭触点串到伺服使能回路,同时这个继电器的另一组触点给PLC一个输入信号。原理图上这两个回路都得画出来,很多人只画了PLC输入,伺服使能回路被忽略,真出紧急情况时伺服根本不会被硬性切断。

3. 程序不是“能跑”,而是“能被后来人看懂”

3.1 程序结构按这个顺序切,维护的人就轻松了

S7-200 SMART的梯形图程序,最怕写成几百行平铺的“面条程序”。我按设备逻辑把它切成几段:初始化与状态标志、手动模式、回零流程、自动流程、报警与互锁。

这么分的原因很直接:操作工开机之后第一件事永远是回零,回零完成才允许自动运行;自动运行过程中任何一个报警触发,伺服使能要立刻掉,但手动模式要能继续操作以便排除故障。这几个状态互锁关系在这里理清,后面的程序就是往对应段的框架里填逻辑,而不是一边写一边发明新状态。

状态标志用M继电器统一管理,比如M0.1手动模式、M0.2回零完成、M0.3自动运行中、M0.4报警状态。所有流程段只认这些标志,不直接去乱读按钮和传感器,逻辑会干净很多。

3.2 PTO运动控制向导生成的子程序,拆开讲一下

S7-200 SMART做PTO控制,第一步是在软件里启用运动控制向导,配置轴0、轴1,指定Q0.0、Q0.1作为脉冲输出点,设好最大速度、启动/停止速度、JOG速度、参考点模式。向导配置完之后,会在程序里生成一系列以AXIS0_开头的子程序,后面编程就是调这些现成块。

这里特别想说:很多初学者拿到向导生成的代码,不知道每个块是干嘛的,干脆全放SM0.0常ON调用一遍。正确用法是分场合调用。

轴初始化块,也就是AXIS0_CTRL,必须一直在后台运行,所以用SM0.0常ON调用,它负责轴的状态保持和参数初始化。回零块AXIS0_RSEEK只有按下回零按钮时调用一次,触发后伺服以回零速度找原点。手动点动用AXIS0_MAN,绑定到点动按钮。自动定位用AXIS0_GOTO,传入目标位置数字就能走到指定位置。

举个例子,一个典型的调用片段:

网络1 轴0初始化(每次扫描都执行) LD SM0.0 CALL AXIS0_CTRL, SM0.0, M10.0, VB200, VD202, VD206, M10.1 // MOD_EN=常使能 // Done=M10.0 Error=VB200 // C_Pos=VD202(当前位置,单位由向导设定) // C_Speed=VD206(当前速度) // C_Dir=M10.1(当前方向)
网络2 回零按钮触发回零流程 LD I0.7 // 回零按钮 EU // 上升沿触发 CALL AXIS0_RSEEK, M10.2, M10.3, VB201 // Start=M10.2 Done=M10.3 Error=VB201
网络3 自动定位:目标位置从VD300读取 LD M0.3 // 自动运行中 CALL AXIS0_GOTO, VD300, M10.4, M10.5, VB202 // Pos=VD300(目标位置) // Mode=M10.4(绝对定位模式) // Done=M10.5 Error=VB202

这几段代码看起来简单,实际使用中容易忽略的是:AXIS0_GOTO的Mode引脚一定要在向导的“绝对/相对”设定里保持一致,如果程序中传进去的模式和向导设置不一致,设备会按错误的理解跑位置,轻则定位不准,重则直接超行程。

3.3 “详细注释”的标准:每行都能翻译成一句人话

客户要求的“详细注释”,不是每个网络上面加一行“启动程序”就算完。我的标准是:别人只看注释,不看梯形图里的触点符号,也能知道这个网络在干什么、为什么这么干、触发条件是什么。

举个例子,不好的注释是这样的:

// 电机启动 LD M0.1 A I0.6 = Q0.3

能看懂吗?能看懂“电机启动了”,但不知道为什么启动,为什么加了I0.6,为什么输出到Q0.3。

换成这种写法就完全不同:

// 伺服使能输出 // 条件1:手动模式(M0.1)下才允许操作,避免自动运行时误动 // 条件2:伺服无报警(I0.6常闭),报警期间强制断开使能 // 输出到Q0.3,驱动中间继电器KA3,KA3常开触点接入伺服使能端子 LD M0.1 A I0.6 = Q0.3

同一段逻辑,第二种注释量不到三行,但三个月后你自己回来看、或者同事接手看,都能在10秒内进入状态。这个投入完全值得。

4. 控制系统说明书和IO表,不只是“应付验收的文档”

4.1 一套完整的控制系统说明书装些什么

我给这台设备写的说明书,目录基本固定成下面这八块:系统概述与硬件清单、电气安装与接线说明、IO分配表、操作说明(手动/回零/自动)、伺服参数表、程序流程说明、故障报警与排查表、日常维护注意事项。

硬件清单要具体到PLC型号、伺服驱动器订货号、电机功率、开关电源容量、接触器型号。很多人觉得这些写进说明书没意义,但设备三年后坏了,售后工程师拿着说明书去现场,发现清单里根本没有电源规格,现场还得拆柜子看铭牌,那就是文档失职。

操作说明要按操作工的角度写,不要按程序员的角度写。比如“开机后先按回零,等待回零指示灯亮起,再按启动进入自动模式”,而不是“将M0.2置位”。一台设备交给客户,最终用户是操作工,不是PLC工程师。

4.2 IO表在这份文档里的地位

IO表在说明书中不是附属品,它是电气设计和程序开发的“契约”。写程序之前先定IO表,画图时对着IO表画,写程序时对着IO表编符号名,三者的关系应该是铁三角。

最容易出问题的地方是符号名不一致。IO表里写SW_START,程序符号表里写SB_START,电气图上标X2-1是启动按钮。三个人看同一份点,叫三个名字,轻则沟通混乱,重则线接错了都查不出来。所以项目中我会强制一个原则:IO表、图纸、程序符号表,三处的符号名必须完全一致,谁改谁同步。

4.3 写说明书时被逼出来的三个设计漏洞

这是我最想分享的一段经历。写说明书这件事,我一开始也觉得是“给客户交差”,但真正动笔之后,它逼着我把系统逻辑从头到尾过了一遍,然后发现了三个如果不写文档,到现场才会暴露的问题。

第一个是在写“手动转自动”的操作流程时发现:程序里没有限制“当前位置必须在原点区间内才允许切换自动模式”。如果操作工在手动模式下把轴移动到接近正限位的地方,然后切自动按启动,轴会直接以一个绝对目标位置快速运行,概率上来讲很容易出事故。于是我在程序里加了一个互锁:手动转自动的上升沿必须同时满足“回零完成且当前位置在安全区间”。

第二个是写伺服参数表时,我重新核了V90的电子齿轮比。V90 PTI版本的电子齿轮比分子分母定义和PLC发脉冲数的关系,换算公式是“电机每转编码器分辨率 / PLC每转脉冲数”。我一开始把分子分母理解反了,方向会完全反向,幸好写参数表时把这组数字在文档里列了一遍才发现。

第三个是写故障排查表时想到:设备断电再上电,伺服断电的位置和PLC通过C_Pos记录的当前值会不会不一致?如果程序在上电后直接允许自动运行,轴就会用错误的位置基准去定位。所以我在说明书里明确规定:每次上电或急停恢复后,必须先回零再允许自动。这既是给客户的操作要求,也成了程序里的一道强制流程。

这些漏洞如果在现场调试时才暴露,至少多花半天到一天,而且气氛绝对不好。写说明书本质上是低成本的自查工具,这个认知改变了我对交付文档的所有抵触情绪。

5. 现场调试:按单操作,别靠感觉

5.1 上电之前,用20分钟做掉这几件事

设备送电前,我习惯带着IO表在柜子前过一遍,逼自己不看图纸在端子上找每个信号的位置。重点检查三处:24V电源的负极和PLC输入公共端的关系是否和IO表一致;急停继电器常闭触点是否真的串进了伺服使能回路——拿万用表量一下伺服使能端子在急停拍下时是否断开;脉冲线是否在PLC侧完成了屏蔽层单端接地。

上电顺序也有讲究:先送控制电,让PLC和驱动器先起来;确认驱动器面板没有报警,再送主回路动力电。很多人上去直接把总闸合了,伺服带报上了电,查问题的起点就乱了。

5.2 V90参数设置和脉冲联调

V90 PTI版本的参数设置,用调试软件或者驱动器面板都能做。核心要确认的这么几个:控制模式必须设为外部脉冲位置控制模式;脉冲类型要和PLC输出方式匹配,S7-200 SMART的晶体管输出一般配集电极开路输入,接法要按V90手册来;电子齿轮比、加减速时间、回零模式也要提前写好。

联调时最实用的验证手段是看V90面板上的脉冲接收计数。PLC手动点动时面板数字在涨、方向反了就调齿轮比符号或交换脉冲方向信号。程序里再读回C_Pos,两边一对照,就知道脉冲当量算得对不对。

回零模式这里特别提醒:V90用原点开关加编码器Z信号回零,重复精度比单纯找开关高很多。首次回零之前,手动把轴摇到原点开关的“正确一侧”再触发回零,否则设备会向相反方向找开关,直接撞限位。这一步说多了都是泪,很多设备第一次调试就是栽在首次回零方向上。

5.3 跑通之后,还必须做的三个“断电复现”

程序跑顺了、定位也准了,很多工程师收拾工具就准备下班。我多留了半小时做三组测试:第一组是断电再上电,看程序是否强制要求回零,不回零允许启动是否被互锁;第二组是运行中拍急停,复位后伺服是否要求重新回零,程序会不会在位置丢失的状态下继续跑自动流程;第三组是伺服报警复位后,程序能否正常恢复手动和回零。

这三个测试客户不会要求,但恰恰是交付后电话回访最常出现的场景。提前自己做过一遍,把不合理的地方修完,后面可以省掉好多售后电话。

回头看这个项目,客户当时提出“程序带详细注释、说明书、IO表、电气图”一套齐活,当时觉得是额外负担,实际做完发现最受益的是自己。文档逼着你在选型阶段想通信方式,在画图阶段想接线逻辑,在写程序阶段想互锁条件,在调试阶段想断电极端场景。那些“跑得起来但很脆”的隐患,基本都在这个过程中被过滤掉了。

最后分享一个小习惯:把上面这些章节整理成自己的交付模板,每次接新项目直接套用,IO表、说明书目录、调试清单都是现成的,花不了半天就能攒出一套个人知识库。以后不管设备大小,交付物齐不齐,至少自己心里有底——出了问题,翻文档比翻记忆靠谱得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询