车间角落那台加料老设备,原先靠继电器加人工称量干活,一天下来误差大、效率低,后来厂里让我整体改造,我直接走了PLC方案:西门子S7-200做主控制器,昆仑通态MCGS触摸屏做人机界面,一套基于PLC的自动加料机控制系统就这么定了下来。今天把这套方案从需求拆解到落地调试完整盘一遍,涉及选型思路、硬件IO分配、PPI通讯、梯形图逻辑、MCGS组态和现场踩坑,内容不绕弯子,适合正在做PLC毕设的学生、刚入行做非标调试的工程师,以及维护存量设备的老电工朋友参考。
1. 项目需求拆解与方案选型
1.1 自动加料机到底要控什么
先说现场工艺。这台设备是给一个混合罐定量加入四种粉料,A、B、C、D四个料仓,每仓底部一台螺旋输送机,把料送进称量罐。罐体下方装有称重传感器,通过变送器输出4-20mA模拟量信号。加完四种料以后,罐内搅拌电机运行一段时间,然后打开卸料阀,把混合好的料放到下一道工序。
控制需求拆开看其实就四块:第一,能手动操作每一台螺旋输送机,方便检修和生产前试机。第二,能自动按配方顺序加料,A到D依次执行,每仓到设定重量就停。第三,加料过程要有快慢加两个阶段,大料量快加提高效率,接近目标时慢加保证精度。第四,要有完整的报警、联锁、产量累计和配方存储功能。这个需求框架一出来,控制系统的架构基本就定了——PLC负责时序和逻辑,触摸屏负责配方的下发、实时重量显示和报警记录。
1.2 为什么 S7-200 加 MCGS 是这个项目的黄金组合
选型的时候不是没考虑过换S7-200 SMART或者国产PLC,但最后拆掉继电器柜以后发现原来的备件里有一台S7-200 CPU224,而且厂里电工熟悉这款,维修方便。S7-200虽然是西门子停产多年的经典产品,但存量市场非常大,二手件、全新兼容机都便宜,资料多到搜不完,对于单机设备来说性价比很高。MCGS的选择更直接,昆仑通态在国产触摸屏里装机量很大,产品线覆盖广,TPC7062系列七寸屏几百块钱,组态软件基本功能齐全,配方、报警、曲线、数据记录全都有。
最关键的一点是MCGS嵌入版组态软件自带西门子S7-200的PPI驱动,不用写通讯协议,配置一下串口参数就能直接读写PLC的I、Q、M、V区变量。这个便利性很重要——用Modbus RTU当然也能做,但还要在PLC里写一段自由口通讯程序,硬件上要挨个分配地址,调试的时候多一层麻烦。PPI协议是S7-200的专有协议,通讯稳定,老工程师都知道它的底细。至于为什么不直接上S7-1200配博途,原因很简单:成本翻两三倍,现场还要重新培训,完全没必要杀鸡用牛刀。这套S7-200加MCGS组合,放在今天的小型配料、加料、包装设备上依然实用,不是技术落后,而是场景匹配。
2. 硬件选型与IO分配
2.1 控制柜核心硬件清单
控制系统的硬件配置必须从执行机构倒推。四个螺旋输送机是三相异步电机,需要接触器,接触器线圈由PLC输出点控制,PLC内部继电器输出容量有限,加中间继电器过渡更安全。搅拌电机功率不大,同样接触器控制。卸料阀用的是电磁阀,直流24V供电,需要中间继电器或晶体管输出直接驱动,这里用继电器输出加DC24V中间继电器,稳妥。
具体配置如下:
- PLC:西门子S7-200 CPU224 AC/DC/RLY,14点输入、10点继电器输出,带两个串口Port0和Port1。
- 模拟量模块:EM231 4AI,接收称重变送器4-20mA信号。
- 称重系统:拉压力传感器加变送器,量程500kg,变送器输出4-20mA,需要单独24V供电。
- 触摸屏:MCGS TPC7062Ti七寸屏,带一个RS485串口和一个COM口,支持PPI协议。
- 电源:西门子或明纬开关电源24V/2.5A,给触摸屏、传感器、中间继电器和电磁阀供电。
- 低压电器:断路器、接触器、中间继电器、熔断器、开关电源,按标准整齐排列在控制柜里。
- 外围器件:启动按钮、停止按钮、急停按钮、手自动选择开关、四个料仓低位阻旋料位开关、声光报警灯。
这里有个容易忽略的点:CPU224本体没有模拟量输入,加料精度全靠称重信号,所以EM231模块必须单独配一个DC24V电源,同时称重变送器和模拟量模块的地要尽量共地,否则模拟量浮动会导致读数漂移。实际接线时我把24V电源的0V和模拟量模块的M端连到一起,解决了满量程跳动问题。
2.2 IO点分配与接线要点
I/O分配是整个项目里最需要耐心的一步,分配得好后续编程就顺,分配得乱后面改程序改到怀疑人生。我的分配方案如下:
| 地址 | 点位说明 | 地址 | 点位说明 |
|---|---|---|---|
| I0.0 | 启动按钮 | Q0.0 | A仓螺旋电机 |
| I0.1 | 停止按钮 | Q0.1 | B仓螺旋电机 |
| I0.2 | 急停按钮 | Q0.2 | C仓螺旋电机 |
| I0.3 | 手自动切换 | Q0.3 | D仓螺旋电机 |
| I0.4 | A仓低位开关 | Q0.4 | 搅拌电机 |
| I0.5 | B仓低位开关 | Q0.5 | 卸料阀 |
| I0.6 | C仓低位开关 | Q0.6 | 声光报警灯 |
| I0.7 | D仓低位开关 | Q0.7 | 运行指示灯 |
输入信号中停止按钮和急停按钮必须用常闭触点接入,这样线路断线或按钮损坏时系统能自动停机,是安全惯例。低位开关用的是阻旋式料位计,安装在料仓下部接近螺旋出口的位置,料位低于该位置时触点动作,提示人工补料。四个料仓的低位信号不仅做报警,还参与自动流程连锁——对应仓低料位时自动暂停该仓的加料,防止螺旋空转磨粉。
继电器输出型PLC接线时要注意输出端的公共端分组。CPU224的输出分为三组,每组公共端1L、2L、3L,继电器干接点输出,每组可以接不同电压。但现场我习惯统一用AC220V控制接触器线圈,中间继电器线圈也用AC220V,只有电磁阀用DC24V,所以要把卸料阀这一路放到DC24V那组公共端上,避免共用一个电源导致干扰。接线顺序上,每个接触器线圈并联RC吸收回路,电磁阀两端并联续流二极管,这些细节能明显延长触点寿命。
2.3 称重信号采集:从模拟量到工程值
称重传感器输出的mV级信号经过变送器变成4-20mA,进入EM231模块后,S7-200模拟量转换模块把电流信号转换成数字量。EM231标准量程对应的数字量范围是0到32000,4-20mA对应的实际采集数字量大约在6400到32000之间。所以在程序里做工程量转换公式时要减去6400的零点偏置。
举个例子:称重系统量程500kg,当前变送器输出12mA。EM231的AIW0读到的数是(12-4)÷(20-4)×(32000-6400)+6400 = 16000。换算成kg:16000-6400=9600,除以(32000-6400)=25600,乘以500kg,得到187.5kg。这个计算听起来简单,但很多初学者最容易犯的错误是直接用0到32000对应0到500kg,结果设备空斗时就显示一百多公斤,找半天也找不到原因。实际上要先把6400这个偏置减掉,再除以量程对应的25600。
程序里不能直接拿AIW0的原始值去和设定值比较,必须经过滤波和量程转换。我用了两个环节:第一,模拟量采样通过定时中断,每100ms读取一次,连续采五次去掉最大最小值求平均,这个滤波方法比简单算术平均效果好得多。第二,转换后的重量值存放在VD400,单位是kg,浮点数。后续所有加料判断和MCGS显示都用VD400,保持唯一数据源,避免多处计算导致的数据不一致。
3. 通讯搭建:MCGS 与 S7-200 的 PPI 对接
3.1 通讯电缆与参数设置
S7-200与MCGS触摸屏之间的通讯是整套系统的数据枢纽。采用PPI协议,物理层是RS485。S7-200的编程口是RS485接口,触摸屏的COM口也是RS485,两者直接对接即可。需要一根两芯屏蔽双绞线,A接A,B接B,个别屏的端子标识是485+和485-,一一对应就好。
PPI协议默认参数是9600波特率、8数据位、偶校验、1停止位,PLC站号默认为2。这个参数必须和MCGS触摸屏设备窗口里的设置完全一致。碰过的坑比较多的是波特率设置:有人为了通讯快把波特率改成187.5k,触摸屏和PLC都要对应改,改了一边忘改另一边,通讯直接断开。多数项目里9600波特率完全可以满足需求,触摸屏读写数据的频率不高,没必要追求高速。
还有一个容易忽略的硬件细节:在老旧S7-200 CPU上,Port0和Port1两个通讯口物理上共用一套参数设置吗?不对,实际是两个独立口,可以分别设置。我一般用Port0连接编程电缆做程序下载,Port1接触摸屏。这样调试的时候同时插着编程线和MCGS,互不干扰。如果只有一个通讯口,PLC程序里又用了自由口模式和仪表通讯,那触摸屏PPI通讯就会失效,因为自由口模式接管了通讯口底层协议。这种情况要先规划好哪个口留给触摸屏,哪个口做自由口,从硬件上分开。
3.2 MCGS 设备窗口配置实操
MCGS嵌入版组态软件的设备窗口配置是整个通讯环节的核心。先新建工程,选择TPC7062Ti型号对应的模板,然后在设备窗口里添加两个设备:一个“通用串口父设备”,一个“西门子S7-200 PPI”子设备。
父设备参数设置里,端口号选择触摸屏实际接线的COM口,TPC7062Ti一般有COM1和COM2,具体看型号。波特率9600,数据位8,停止位1,校验方式偶校验。这里注意MCGS里的校验位选项叫“偶校验”还是“EVEN”,别选成“无校验”。子设备参数里,PLC站号填2,与PLC通讯口地址一致。
子设备下方的通道设置是关键步骤。需要建立PLC地址与MCGS内部变量的映射关系。比如:
- 启动信号映射到M0.0,数据类型为位。
- 停止信号映射到M0.1,数据类型为位。
- 手自动切换映射到M0.2,数据类型为位。
- 实时重量映射到VD400,数据类型为4字节浮点数。
- 配方A设定值映射到VD200,数据类型为4字节浮点数。
- 设备状态字映射到MB3,数据类型为字节。
- 报警字映射到MB4,数据类型为字节。
通道建立后,MCGS会按照设定的采样周期周期性读取这些变量。把采样周期设为200ms,触摸屏上的重量显示基本能做到实时跟随。注意VD400是浮点数,在MCGS里必须选“4字浮点数”,否则读出来小数点完全是乱的。
3.3 变量对应与读写机制
这个环节很容易踩坑。MCGS读取S7-200 V区变量时,地址对应方式要非常小心。S7-200的V区是按字节连续编址的,VD400表示从VB400开始连续四个字节,作为一个32位浮点数。MCGS设备窗口里建立通道时,也必须以VB400为起点,指定长度为4字节、类型为浮点。如果写成了400.0这种带小数点的地址,或者选了整数类型,数据格式完全对不上,显示出来的重量值满屏乱跳。
读写机制上,MCGS采用的是一次性采集的机制。父设备里的“最小采集周期”决定所有变量多久被刷新一次。我实际测试下来,200ms周期比较合适,太快了浪费CPU,太慢了触摸屏画面响应迟钝。另外,PLC侧的M区和V区是可以同时读写的,MCGS画面按钮和输入框都直接写PLC变量,不需要在PLC程序里做数据交换逻辑。这一点相比一些国产屏需要自己写“数据转发程序”来沟通,省了不少事。但要注意的是,MCGS写入浮点数到PLC时,PLC侧不能同时做运算修改同一地址,否则会出现覆盖冲突,配方的读写时机要避开自动流程运行期间。
4. 核心逻辑实现:定量加料的梯形图设计
4.1 自动流程状态机
PLC控制程序我采用状态机写法,用MB3作为当前步骤编码,程序主线清晰,后续修改维护也容易。MB3的值定义如下:
| MB3 | 状态含义 | 说明 |
|---|---|---|
| 0 | 空闲 | 等待启动指令 |
| 1 | 加A料 | A仓螺旋运行 |
| 2 | 加B料 | B仓螺旋运行 |
| 3 | 加C料 | C仓螺旋运行 |
| 4 | 加D料 | D仓螺旋运行 |
| 5 | 搅拌 | 搅拌电机运行 |
| 6 | 卸料 | 卸料阀打开 |
自动流程的起始条件是按下启动按钮、手自动切换开关在自动位、当前状态为空闲。MB3置1,进入加A阶段。加A完成后自动跳到加B,以此类推,D料加完后进入搅拌,搅拌计时结束开卸料阀,卸料延时后流程结束,MB3回到0。
这个状态机的实现可以完全用梯形图网络完成,也可以配合置位复位指令。实际工程中我用的是比较指令加置位复位:每个状态段里,先判断“MB3等于当前状态且满足转移条件”,然后复位当前状态、置位下一状态。这比用一堆跳转指令好读得多,排查问题时看监控表里的MB3数值就一目了然。
4.2 快慢加控制:精度从这里来
定量加料最容易出问题的就是精度。螺旋输送机停止后,螺旋叶片和管道内残留的物料还会继续落入称量罐,这个“惯性过冲量”如果不处理,每一批都可能偏差好几公斤。解决思路是给加料过程划分快加和慢加两个阶段。
以一个配方设定50kg为例,程序逻辑是:开始加料时持续快加,直到实际加料量达到“目标值减进入慢加提前量”时,切换成慢加。进入慢加提前量我通常取目标值的百分之五到八,50kg的目标大约提前3kg,也就是加料到47kg时转入慢加。慢加阶段不能继续满速运行,而是采用间歇点动方式——螺旋电机运行0.3秒,停止0.7秒,如此循环。这样每次点动加入的料量很少,能明显减小过冲。等到实际加料量达到“目标值减停止提前量”时,彻底停止螺旋。
停止提前量取决于物料特性和螺旋长度。粉状料流动性越强、螺旋越长,过冲越大,这个值要通过试验确定。我第一次调这台设备时,停止提前量设了0.8kg,结果每批都有零点几秒的点动余量,最终精度控制在正负0.3kg以内。如果只设置一个提前量直接停,一批料下来误差能到1.5kg,这在粉料配方中是不可接受的。
梯形图实现时,我把目标值存在VD200,进入慢加的阈值点用VD216存储(目标值减提前量),停止阈值用VD218存储。比较指令判断当前实际加料量(VD400减去皮重VD410)和这些阈值的关系,分别置位快加标志、慢加标志和停止标志。快加标志接了螺旋接触器直接输出,慢加标志接一个定时器控制的点动脉冲。注意实际加料量是整个称量罐的重量,必须减去加料前的皮重,我把启动加料那一刻的称重值存入VD410作为皮重,后续比较都用VD400-VD410。
4.3 报警连锁与手自动切换
报警逻辑的核心是:任何异常都不能让设备带病运行。我设置了以下几类报警:
- 四个仓的低料位报警,对应M4.0到M4.3,触发后触摸屏弹红色闪烁提示,自动流程暂停,等待人工确认补料。
- 称重超量程报警,VD400大于最大量程110%时触发,防止传感器卡死或断线的异常信号。
- 急停报警,I0.2常闭信号断开时直接切断所有输出,并且触发报警记录。
- 加料超时报警,每个仓加料时间超过设定值仍达不到目标重量,判断为堵塞,立即停止并报警。
手自动切换的功能通过M0.2实现。手动模式下,触摸屏上的手动操作按钮通过MCGS直接控制Q0.0到Q0.5,PLC逻辑里只需要一个互锁:手动模式下自动流程不允许启动,自动流程运行时,手动按钮全部失效。为了防止两个模式同时操作设备,我在程序里做了一个互锁网络:自动运行标志M2.0为1时,手动输出指令全部被切断。
5. MCGS 组态画面设计与实操
5.1 画面规划与控件设计
触摸屏组态不是简单堆几个按钮,要把操作人员的使用习惯考虑进去。我按生产流程把画面分成四个主界面:主控台、手动操作、配方设置、报警记录。主控台画面是默认首屏,屏幕左侧画了四个料仓和螺旋输送机的示意图形,中间是称量罐的实时重量棒图和数字显示,右侧是启动、停止、急停按钮和状态指示灯。
动画组态是MCGS的强项,但要用得克制。四个料仓我用填充颜色变化表示低料位报警,螺旋电机用旋转图标配合运行状态变量,管道用颜色深浅变化表示物料流动状态。这些动画的触发变量都是PLC地址,直接关联就好。重量棒图是核心可视化元素,直接绑定VD400浮点数,棒图量程设置成0到500kg。运行指示灯绑定Q0.7,报警灯绑定报警变量,按钮做“按下置位”和“抬起复位”的脚本连接。
有一个实际操作经验:MCGS画面上的按钮在“确认按下”和“确认弹起”两种状态时分别执行不同的脚本。比如启动按钮在弹起时通过置位M0.0来触发PLC的启动逻辑,停止按钮弹起时置位M0.1。不要用“按住”状态,否则操作工手稍微抖一下就会误触发。
5.2 配方管理实现
MCGS的配方功能把配方设置做得非常简单。在“配方”里新建一个配方组,设置字段名:A料目标、B料目标、C料目标、D料目标。每个字段的数据类型选浮点数,数值范围根据工艺限制填入0到500。配方数据保存到触摸屏内存,通过配方窗口把数据写入PLC对应的VD200到VD212。
其实MCGS配方窗口写入PLC的原理就是组态软件把配方值写入到事先定义的设备通道里。操作人员在生产前打开配方画面,选择配方号,点“下发配方”,触摸屏就把VD200、VD204、VD208、VD212这几个地址的值更新为配方数据。这样换产时不用每次去PLC里改程序,非常实用。配方下发后,我建议在PLC程序里加一个“配方更新确认”标志,触摸屏下发完成后置位M1.0,PLC读取到标志后先校验数据合法性,再更新运行参数,这个流程能防止操作工误点导致配方写入一半。
5.3 数据记录与报警显示
MCGS嵌入版自带实时数据库和历史记录功能。把VD400重量变量加入实时数据库,并勾选“历史记录”,触摸屏就能自动按照设定的间隔记录重量趋势。我在主控台放了一个曲线窗口,绑定重量变量,可以看到每批加料过程中重量爬升的曲线。调试阶段这个曲线极其有用,快慢加切换点到底有没有生效、过冲量到底有多少,看曲线一目了然。
报警记录功能使用了MCGS的报警显示控件,报警变量在设备窗口里关联后,控件会自动收集报警事件并显示。操作界面会弹出一个报警条,红色闪烁,操作人员按下“确认”按钮后报警复位。值得提醒的是,报警确认按钮在画面上做的只是“事件确认”操作,真正的报警复位还是要PLC侧根据现场条件解除。如果按下确认按钮后不消失,检查PLC侧对应的报警变量是否还在置位状态。
6. 现场调试与故障排查实录
6.1 首次上电调试流程
现场调试我坚持从静态到动态、从空载到带料的原则,顺序错了只会被故障搞得团团转。
第一步,断电检查接线。用万用表蜂鸣档逐一确认PLC输出点到接触器线圈、电磁阀线圈的通路,检查电源线是否短路。确认输入点接线:每个按钮按下时,对应PLC输入指示灯应亮起。把四个料位开关的信号也逐一短接测试,确认地址和输入点一一对应。
第二步,只给PLC通电,不接动力电。用编程软件监控PLC程序,手动置位各个输出点,确认输出指示灯动作。再用MCGS触摸屏的画面按钮手动操作,验证触摸屏到PLC的通讯是否正常,变量读写是否正确。这个阶段如果触摸屏读不到PLC数据,马上停下来检查通讯参数,不要继续往下走。
第三步,空载试机。合上动力电,在手动模式下逐个启动螺旋输送机、搅拌电机、卸料阀,观察转向是否正常,电机有没有异响。空载运行半小时,检查控制柜内温度是否正常。
第四步,称重校验。用标准砝码挂在称量罐上,对比触摸屏显示值和砝码实际重量,微调EM231的量程和偏置,直到显示误差在0.2kg以内。
第五步,小批量带料试生产。设置一个小的配方目标比如10kg,先加A料单仓试运行,观察快慢加切换、过冲量和最终精度。记录数据,微调提前量参数。全部通过后再跑完整配方流程。
6.2 常见故障速查表
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| MCGS提示设备通讯失败 | 串口选错、波特率不一致、站号错误、电缆接反 | 用串口调试助手测485信号,核对通讯参数 |
| 触摸屏显示重量不变 | 变量类型选错、通道地址错误、EM231断线 | 监控AIW0原始值,检查传感器和变送器供电 |
| 加料误差偏大 | 提前量设置不合理、慢加时间周期不对、皮重干扰 | 看历史曲线分析过冲量,重新标定称重系统 |
| 自动流程中途卡住 | 料位信号误动作、状态转移条件不满足 | 查监控表里MB3状态值和各标志位 |
| 触摸屏能写变量但读不到状态 | 通道方向设置错误、PLC中M区被程序复写 | 核对设备通道的读写属性,查PLC程序 |
| 手动模式下自动流程还运行 | 互锁逻辑没做或失效 | 检查手自动切换信号的常开常闭逻辑 |
6.3 关于下载连接的那些邪门问题
这一条值得单独拎出来说。做S7-200项目时,最让人头疼的往往不是现场工艺,而是电脑和PLC死活连不上。我在这个项目里就遇到过下载程序时电脑卡死、无法关机的情况。后来排查下来,问题不在PLC,而在USB转PPI编程电缆的驱动兼容性。有些国产USB转PPI线用的是老的CH340或PL2303芯片驱动,在Windows 10以上系统里会和系统产生冲突,轻则识别不了端口,重则整个系统卡死甚至无法关机。
解决办法有几个,按优先级排:第一选择是换一根品牌USB-PPI电缆,芯片方案成熟,驱动兼容性好。第二选择是直接给工控机或笔记本加一块串口卡,用原装RS232-PPI电缆,稳定可靠,老设备维护必备。第三选择是下载驱动的时候去官网找适配新系统的版本,不要用光盘里自带的老驱动。另外下载程序时先拔掉触摸屏通讯线,只保留编程电缆一台设备,避免多设备抢占COM口。
还有个容易忽略的点:S7-200的PPI通讯口支持多主站,但调试时如果电脑里的Micro/WIN软件和MCGS组态软件同时开着,并且都占用同一COM口,就会互相抢占资源。建议下载完程序把编程电缆拔出,再让触摸屏正常工作。
调试中我还用过S7-200模拟器做逻辑验证,在电脑上先把程序跑通,减少现场修改PLC程序的频率。不过模拟器毕竟没有真实IO,模拟信号、通信时序这些都要到现场实测,不能完全依赖。
7. 关于这套方案的个人体会
这套S7-200加MCGS的控制系统做下来,我自己最大的体会是:设备能不能稳定跑起来,80%的工作量其实都在前期的工艺理解和硬件设计上。梯形图编程和触摸屏组态只是把思路表达出来,IO分配、接地抗干扰、模拟量处理和快慢加参数的调试,这些才是项目成功的关键。
最后分享一个实用小技巧:在自动加料程序里给每批次的加料重量和实际误差做一个累计统计,存到PLC的V区,在MCGS上做一页简单的报表,操作工每天下班前看一眼,哪个料仓振动大、哪批误差超差,都比凭感觉判断靠谱得多。这套系统交货以后跑到现在一年多,除了偶尔换继电器触点,没有出现过大的控制故障。回头再看,当初坚持用PPI直连而不是Modbus方案,以及坚持做快慢加逻辑,都是值得的。