
车间角落那台加料老设备原先靠继电器加人工称量干活一天下来误差大、效率低后来厂里让我整体改造我直接走了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/RLY14点输入、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.0A仓螺旋电机I0.1停止按钮Q0.1B仓螺旋电机I0.2急停按钮Q0.2C仓螺旋电机I0.3手自动切换Q0.3D仓螺旋电机I0.4A仓低位开关Q0.4搅拌电机I0.5B仓低位开关Q0.5卸料阀I0.6C仓低位开关Q0.6声光报警灯I0.7D仓低位开关Q0.7运行指示灯输入信号中停止按钮和急停按钮必须用常闭触点接入这样线路断线或按钮损坏时系统能自动停机是安全惯例。低位开关用的是阻旋式料位计安装在料仓下部接近螺旋出口的位置料位低于该位置时触点动作提示人工补料。四个料仓的低位信号不仅做报警还参与自动流程连锁——对应仓低料位时自动暂停该仓的加料防止螺旋空转磨粉。继电器输出型PLC接线时要注意输出端的公共端分组。CPU224的输出分为三组每组公共端1L、2L、3L继电器干接点输出每组可以接不同电压。但现场我习惯统一用AC220V控制接触器线圈中间继电器线圈也用AC220V只有电磁阀用DC24V所以要把卸料阀这一路放到DC24V那组公共端上避免共用一个电源导致干扰。接线顺序上每个接触器线圈并联RC吸收回路电磁阀两端并联续流二极管这些细节能明显延长触点寿命。2.3 称重信号采集从模拟量到工程值称重传感器输出的mV级信号经过变送器变成4-20mA进入EM231模块后S7-200模拟量转换模块把电流信号转换成数字量。EM231标准量程对应的数字量范围是0到320004-20mA对应的实际采集数字量大约在6400到32000之间。所以在程序里做工程量转换公式时要减去6400的零点偏置。举个例子称重系统量程500kg当前变送器输出12mA。EM231的AIW0读到的数是12-4÷20-4×32000-64006400 16000。换算成kg16000-64009600除以32000-640025600乘以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接AB接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.5PLC逻辑里只需要一个互锁手动模式下自动流程不允许启动自动流程运行时手动按钮全部失效。为了防止两个模式同时操作设备我在程序里做了一个互锁网络自动运行标志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.0PLC读取到标志后先校验数据合法性再更新运行参数这个流程能防止操作工误点导致配方写入一半。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方案以及坚持做快慢加逻辑都是值得的。