☰
基于S7-200 PLC与组态王的自动配料控制系统设计与实践
2026/10/10 7:47:22 网站建设 项目流程

1. 现场配料不准的问题,从前到后理了一遍

1.1 人工配料线到底卡在哪儿

去年我们接手了一条小型建材辅料配料线的改造,现场一共要配六种原料:四种粉料、一种颗粒料、一种液体助剂。改造之前的模式很传统:两个工人对着磅秤,按照配方单顺序称量,手动倒进混合机,再人工记录批次数据。听起来简单,但实际运转起来问题一堆。

第一个问题是精度随人走。有经验的老师傅称料又快又稳,换上个新手就容易过冲,尤其粉料在往秤斗里倒的时候会“飞料”,视觉上看着还没到,秤值已经过了。第二个问题是配方切换麻烦。现场每个班次可能要换三四套配方,每次换配方都要翻手册、调整磅秤上的挡块,改错一次就是一整批废料。第三个问题是过程没法追溯。生产记录靠手写,老板想知道每批料用了多少、对不对得上,根本查不清楚——纸上的数字和实际消耗对不齐。

这三个痛点凑到一起,老板才下决心上自动配料。但真到选方案的时候,又有新的纠结:整套上DCS太贵,单个称重仪表做自动配料功能又太死板,而且操作界面不直观,工人学不会、不爱用。最后我们把方案定成S7-200 PLC做控制核心 + 组态王做上位机监控 + 称重仪表做计量反馈,也就是一套典型的“PLC自动控制系统+配料生产线”组合。这套方案预算不高,控制逻辑全部自己写,画面自己组态,后期改配方、加原料都很灵活。

1.2 为什么选S7-200而不是其他控制器

有人问,这种配料线用国产小型PLC行不行?当然行,但得看现场条件。这条产线规模不大,点位也就五六十个,用S7-200 CPU226完全够用,性价比也合适。S7-200在中小型配料项目里用得特别多,原因有几个:首先是编程软件Micro/WIN上手门槛低,梯形图逻辑直观,后期现场维护的工程师基本都看得懂;其次是它的模拟量处理可靠,配合EM235扩展模块,读取称重传感器变送器过来的4-20mA信号非常稳定;再就是PPI通信协议成熟,和组态王的配套方案早就跑通了,网上能找到大量现成案例,技术风险低。

我们最后确定的CPU是CPU226 DC/DC/DC,晶体管输出版本,带24路数字量输入、16路数字量输出,扩展了一块EM235模拟量模块(4AI/1AO),再扩展一块EM223数字量模块用来补点位。这个配置看着不高端,但处理六种原料的配料循环绰绰有余。

1.3 组态王在上位机里的角色

上位机监控画面选了组态王,原因也很实在:客户对组态王不陌生,操作工在别的厂里见过类似界面,上手成本低;组态王自带图库丰富,料罐、电机、阀门、管道这些图元拖出来就能用,开发周期短;和S7-200的通信不管是走PPI驱动还是走OPC,都有成熟路径。

组态王在这个项目里承担的事有三件:第一,把整个配料流程用动画画面展示出来,哪个料仓在加料、哪个阀门开了、混合机转不转,工人一眼能看清;第二,下发配方和批次指令,操作工在触摸屏或者电脑上选配方号、填批次数量,不用碰PLC程序;第三,记录报警和历史趋势,方便事后查问题。这套“PLC干活、组态王展示和指挥”的架构,是中小型配料线最常见的组合。

2. 硬件选型和I/O清单:先画清信号链路再写程序

2.1 控制系统整体架构和信号流向

动手编程之前,我习惯先把信号链路画明白。这条产线的控制架构分三层:底层是执行机构和传感器,包括六台给料机构、一台混合机、卸料门、称重传感器、料位开关;中间层是S7-200 PLC,负责采集信号、执行配料逻辑、输出控制;顶层是组态王上位机,负责下发配方、监控状态、报警记录。

信号流的核心是称重信号。每个配料批次开始后,PLC通过EM235模块实时读取称重变送器输出的4-20mA信号,把电流值换算成重量值,再和配方设定值比较,控制给料机构的快慢加状态。给料机构采用螺旋给料机,用变频器驱动,通过PLC的数字量输出控制变频器的多段速端子,实现快加和慢加两种速度切换,比模拟量调速更简单、更皮实。

2.2 称重和给料机构选型的几个细节

配料系统的精度,七成取决于称重和给料机构,而不是PLC程序。现场用的是称重传感器加变送器的方式:传感器装在秤斗的三个支撑点上,信号并进变送器,变送器输出4-20mA给PLC。选型时要注意传感器的量程,最好让正常配料重量落在量程的30%到70%之间,这样线性度最好。比如一秤满量程200公斤的料,传感器按300公斤量程配比较合适。

给料机构这块值得多说一句。粉料用螺旋给料机,颗粒料用振动给料器,液体用泵加电磁阀。粉料最容易出问题的是“喷料”和“架桥”:喷料是螺旋转速太快导致粉料冲出来,架桥是料仓里粉料结拱不下料。所以在给料机选型时,我倾向于选择带调速功能的变频器驱动,配合双速控制:大比例快加、接近目标慢加。这个设计直接影响配料精度,后面程序部分会详细展开。

2.3 完整I/O点表设计

I/O点表是编程的依据,也是电气接线的图纸。我把这套系统的点表整理出来,稍微简化了一下,供参考:

PLC地址信号名称信号类型说明
I0.01#给料机运行反馈数字输入变频器运行信号
I0.11#给料机无料检测数字输入料位开关信号
I0.22#给料机运行反馈数字输入同上
I0.3混合机运行反馈数字输入接触器辅助触点
I0.4卸料门开到位数字输入行程开关
I0.5卸料门关到位数字输入行程开关
I0.6急停按钮数字输入常闭触点
I0.7自动/手动切换数字输入选择开关
AIW0秤斗重量信号模拟输入4-20mA,经EM235
Q0.01#给料机快加数字输出控制变频器多段速1
Q0.11#给料机慢加数字输出控制变频器多段速2
Q0.22#给料机快加数字输出同上
Q0.32#给料机慢加数字输出同上
Q0.4混合机启动数字输出接触器控制
Q0.5卸料门开门数字输出电磁阀控制
Q0.6卸料门关门数字输出电磁阀控制
Q0.7报警输出数字输出声光报警器

实际项目里,六种原料的给料机各自占用两组输出,再加混合机和卸料门,CPU226的16路输出不够用,所以扩展了一块EM223。输入侧也是类似情况,CPU226自带的24路输入刚好够。这里给大家一个经验:做I/O点表时,一定要给每种给料机预留下“运行反馈”和“无料检测”两个输入,哪怕现场暂时没装料位开关,也要预留点位。后期想补断料检测功能,不用再拆柜子改线。

2.4 电气柜和现场布线的注意事项

电气柜这块,要点其实就三条:电源干净、信号屏蔽、接地可靠。PLC的24V电源和变频器、接触器这些动力设备分开供电,不要用同一个开关电源带PLC又带给料机电磁阀,否则变频器一启动,PLC模拟量通道就跳变。称重信号线必须用屏蔽双绞线,屏蔽层单端接地,绝对不能和动力线走同一个线槽。我们现场吃过这个亏,一开始称重信号和变频器输出线平行走了一段,结果快加启动瞬间,组态王上显示的重量值能跳好几公斤,后来重新布线才解决。

另外,晶体管输出型的CPU226驱动能力有限,不能直接带接触器和电磁阀,中间必须加中间继电器。这一步别省,别觉得电流小就直连,PLC输出点烧坏了换起来麻烦得多。

3. PLC程序核心:配方、双速给料和落差补偿

3.1 配方数据存储与批次流程设计

配料程序必须解决两个核心问题:配方怎么存、配料流程怎么走。

配方在S7-200里我习惯用数据块DB1来存储。每种原料占2个实数寄存器,例如配方1的1#原料目标重量存放在VD400,2#原料目标重量存放在VD404,依此类推。配方号通过组态王下发到VD380,PLC根据配方号把对应原料的目标值搬到当前配料用寄存器。这样好处是:程序逻辑不直接引用具体配方值,只操作“当前配方目标”,改配方不用改程序,组态王画面上直接填数就行。

配料批次流程用状态机来写,核心状态大致是:

  1. 待机状态:等待启动指令和配方确认;
  2. 逐料配料状态:从1#开始,依次完成六种原料的称量;
  3. 卸料状态:所有原料称量完成后,自动或手动打开卸料门,把物料放入混合机;
  4. 混合状态:混合机运行设定时间,同时可以开始下一秤的称量,重叠生产提高效率;
  5. 批次完成状态:计数加1,回到待机或自动启动下一批次。

用状态机编程的好处是逻辑清晰,不会出现两个步骤同时执行的情况。S7-200没有专门的顺序功能图,我是用内部继电器加上移位逻辑实现的:每个状态对应一个内部继电器,状态切换时复位当前状态、置位下一个状态。

3.2 快慢加料时序和落差补偿算法

配料精度最关键的地方,就是“什么时候从快加切到慢加”和“什么时候彻底停止给料”。

先说过冲问题。螺旋给料机停止后,螺旋管里还有一部分余料,会继续往秤斗里掉,称重值还会涨一点。这部分多出来的量叫“落差”。如果不处理,每一批的实际重量都会比设定值多出1到3公斤,对要求严格的配方来说完全不能用。

处理方法是落差补偿,也就是把设定值“提前量”扣除。假设目标重量是50公斤,实测停止后还会涨2公斤,那么给料提前量就是2公斤,下次配料时实际让PLC在48公斤时就停止给料。但落差不是固定值,料位高低、物料湿度都会影响它,所以不能用固定值,得让程序自己学习。

我在程序里的做法是:每次配料结束后,等称重值稳定(延时2秒),记录实际重量,计算实际重量和目标重量的差值,作为本次落差值。然后用平滑滤波更新下一次的提前量:

提前量新值 = 0.7 × 提前量旧值 + 0.3 × 本次实测落差值

这样提前量会自适应物料状态变化。实测下来,用这个简单算法,配料误差能稳定控制在±0.3%以内。

再说快慢加切换。切换的临界点要设计成两个条件取“先到为准”:

  • 条件一:当前重量达到“目标重量 - 提前量 - 慢加余量”时,关闭快加,开启慢加;
  • 条件二:快加持续了最长时间(比如15秒)但重量还没跟上,说明给料机堵了或料流不畅,也要切到慢加并报警。

这个“慢加余量”一般取目标值的5%左右,或者取一个固定值比如3公斤。太小了会导致慢加时间过长,太慢了会过冲过大。

3.3 断料、堵料、缺料的判断方法

配料线最常见的故障不是控制逻辑出错,而是“料下不来”。粉料架桥、颗粒料卡住、液体泵空转,都会导致给料机在转但秤斗重量不涨。不处理的话,程序会一直傻等,一个批次卡在那里半个小时都没人发现。

断料判断逻辑不复杂:在慢加阶段,PLC每隔一定时间(比如500毫秒)读取一次重量值,和上一次读数比较。如果连续10次读数变化量都小于一个阈值(比如每次变化小于0.1公斤),就判定为断料或堵料,立刻停止该给料机,输出报警,并且让程序进入“暂停等待人工处理”状态。

这个逻辑要注意一点,阈值不能设得太小,否则螺旋给料机刚启动时的正常间歇性下料也会被误判。我调试时的经验是:先空转观察正常下料时重量的最小变化速率,取这个速率的1/3作为判断阈值,留足余量。

3.4 手动干预和自动运行的无缝切换

自动程序做得再完善,现场也难免遇到需要人工干预的情况:比如某种原料临时缺货需要跳过,或者某秤料加多了需要人工取出一点。所以程序里必须设计可靠的自动/手动切换逻辑。

我的做法是:用一个选择开关切换“自动/手动”模式,两种模式下PLC的输入输出分别走不同逻辑。手动模式下,组态王画面上的每个设备都有独立的“开/停”按钮,直接控制对应输出点,方便检修和应急操作。自动模式下,这些手动按钮全部失效,防止误操作。切换的关键在于:从自动切手动时,所有自动运行中的输出必须立即复位,避免设备在不受控状态下继续动作;从手动切自动时,程序必须重新从初始待机状态开始,不允许从中间状态继续跑。

这个切换逻辑看起来简单,但我在现场见过很多程序在这里出问题,最常见的就是切换瞬间设备突然动作,把人吓一跳。解决方法是切换指令用“下降沿”触发复位,并且复位完成后再允许进入自动状态。

4. 组态王上位机组态:安装、图库和动画连接的实战细节

4.1 组态王6.60SP4安装:装对版本和路径能省一半故障

组态王的上位机开发,第一步就是把软件装对。网上经常有人搜“组态王6.60sp4下载”,但下载只是一半,装对才是关键。我装过很多台机器,说几点实在的:

  • 安装目录不要用默认的“Program Files”路径,建议直接装到类似“D:\Kingview”这样无空格、无中文的目录下。我在两台电脑上遇到过因为路径里有空格导致驱动加载失败的问题,重装之后才解决;
  • 安装过程中会弹出驱动安装选项,最好全选,省得后面想用某个通信驱动时找不到;
  • 装完6.60之后打上SP4补丁包,修复了不少通信稳定性问题,尤其是和S7-200的OPC通信,打补丁和不打补丁区别挺明显;
  • 组态王运行需要加密锁。插上锁之后,如果系统提示找不到授权,去设备管理器里看看加密锁驱动有没有正常安装,这个驱动在安装包里,手动装一下就行。

组态王装好后,第一步是新建工程。工程名称和路径同样别用中文,工程路径里的中文在某些版本里会导致画面编译异常。这个我踩过坑,后来统一用拼音或者英文命名工程。

4.2 用图库精灵搭建主画面:料罐、电机、阀门

组态王图库是它最方便的地方,新手也能快速搭出像样的画面。打开开发系统,右侧有个“图库”管理器,里面按类别分好了一批现成图元:容器罐、电机、泵、阀门、管道、仪表、按钮等等。做配料画面时,我基本上是拖拽和拼接。

具体操作是这样的:从图库类别里找到一个立式料罐图元,拖到画面上,用鼠标拉伸到合适尺寸,复制六个分别代表六种原料仓。给料机用“螺旋给料机”图元或者用一个电机图元加一条管道代替,混合机找一个带搅拌桨的容器图元。图元放好后,双击图元,进入“动画连接”对话框,把图元的填充属性关联到对应的变量上。

举个例子,料仓的料位显示:双击料罐图元,在动画连接里选择“填充”,表达式填PLC传来的料位变量(如“料仓1料位”),填充方向和颜色设好。运行时,变量值变化,料罐的填充高度就会跟着变。电机旋转动画:选择“旋转”或“水平移动”,表达式关联电机运行状态变量,变量为1时图元旋转。这样整个画面动起来之后,操作工一眼就能看出系统正在干什么。

如果有特殊设备在图库里找不到现成图元,调试完成之后,可以把图形组合选中,点图库菜单里的“存图库”,下次做同类画面直接调出来用。做第二个项目的时候效率会快很多。

4.3 变量定义和S7-200通信配置

组态王里的变量分内存变量和I/O变量。内存变量只在组态王内部使用,I/O变量则要和PLC实时交换数据。配料系统里,配方设定值、下发启动指令、读取实际重量、读取设备状态,这些都是I/O变量。

S7-200和组态王通信,我推荐用OPC方式:先装好S7-200 PC Access这个OPC服务器软件,在PC Access里建好PLC连接,定义好要访问的寄存器,然后在组态王的工程浏览器里“设备”列表中添加OPC服务器,选到S7200.OPCServer,再在变量定义时把“连接设备”指向这个OPC服务器。

用OPC方式比组态王直接走PPI驱动要稳定。实际调试中我发现,PPI直接驱动在通信量大的时候容易偶尔掉线,OPC方式则好很多,而且PC Access里能看得见通信状态,排查问题非常方便。要注意的是,PC Access和Micro/WIN软件不能同时占用同一个通信端口,调试时要关掉Micro/WIN的通信连接。

连接建立后,变量地址要和PLC程序里的一致。比如PLC里实际重量存放在VD200,组态王变量“1#实际重量”的连接设备选OPC服务器,数据类型选FLOAT,寄存器地址写VD200,通信方向选读写。数据类型一定要对应上,S7-200的VD是32位浮点,组态王里选Float,选错类型读出来就是天书一样的乱值。

4.4 配方下发、报警显示和实时趋势曲线

组态王的配方功能有两种做法。一种是用组态王自带的配方组件,把配方数据存在上位机里,下发时一次性写进PLC。另一种简单直接:在画面上做几个输入框,操作工直接输入每种原料的目标重量,点“下发配方”按钮,把这些值依次写入PLC的配方寄存器。

我比较推荐第二种,因为操作工逻辑更清晰,改配方就像填表格,不容易搞混。做一个配方画面,列出六种原料的输入框,旁边放“下发配方”、“读取当前配方”、“确认启动”三个按钮。点“下发配方”时,组态王脚本把画面上的内存变量值赋给对应的I/O变量,PLC收到新配方值后存入数据块。

报警显示用组态王的报警窗口控件。PLC把断料、堵料、超差、急停这些状态都做成一个报警变量(可以是一个字节的各位),组态王里对每个位关联一条报警配置,触发时报警窗口显示并记录。历史趋势曲线用“历史趋势曲线”控件,选择要记录的重量变量、变频器频率变量,运行时可以查看任意一段时间的数据曲线,这个是事后分析称重波动最有力的工具。

5. 通信调试实录:变量不刷新和偶发掉线的排查

5.1 通信参数匹配的全链条检查

每次做S7-200和组态王通信,我都会遇到“上位机变量不刷新”的求助。这类问题90%出在参数不匹配,而且是一个链条上的好几个环节都要对上:

  • PLC侧的通信端口参数:站号、波特率。S7-200默认站号是2,波特率是9.6kbps;
  • PC Access里的PG/PC接口参数:必须选择正确的通信硬件(如PC/PPI电缆),波特率要和PLC一致;
  • 组态王OPC服务器连接配置:读取的寄存器地址要和PC Access里定义的完全一致。

排查顺序我建议从最底层往上走:先用Micro/WIN测试能否在线监控PLC。如果Micro/WIN都连不上,那就是电缆、接口、PLC站号的问题,和组态王没关系。Micro/WIN能连上,再打开PC Access,新建变量测试通信,PC Access显示质量指标为“好”,再去看组态王。这就像查水管哪里堵了,从源头逐段排查,效率最高。

5.2 组态王变量闪烁和偶发掉线怎么定位

变量不刷新还有一个表现:画面上的数字一会儿有值一会儿变“####”,或者显示“设备失败”。这种情况是组态王和OPC服务器之间通信中断后又恢复,来回闪。

经验判断,偶发掉线的原因通常有三个:一是通信端口被其他软件占用,比如Micro/WIN还开着在线监控,占着PPI口,组态王就抢不到通信资源。解决方法是调试期间不要两个软件同时开着通信。

二是通信数据量太大,PPI口忙不过来。组态王画面上的I/O变量如果太多,而且刷新频率设得很高(比如100毫秒刷新一次),通信周期内排不过来,就会超时。解决办法是:非关键变量刷新频率降到500毫秒或1秒,关键重量变量单独设短周期。生产画面没必要所有数字都实时跳,重点是趋势和状态。

三是OPC服务器里的通信超时设置。PC Access的通信超时时间我习惯调到2000毫秒以上,S7-200响应慢,超时时间太短容易误判为掉线。

还有一个容易被忽略的坑:S7-200的通信口同时被编程口和组态王使用时,如果程序启用了“数据块写保护”或者PLC程序本身有访问冲突,也会导致通信异常。我曾经为这个问题折腾了一整个下午,最后发现是PLC程序里有个子程序在不停读写同一个V区地址,导致通信和程序冲突。解决办法是程序扫描周期内避免频繁重复占用同样的通信缓冲区。

5.3 上电自恢复和看门狗设计

做项目最怕什么?晚上断电,第二天早上PLC和上位机状态不一致,操作工不知道按哪个按钮,现场一片乱。所以我习惯在程序里加入上电初始化和通信看门狗逻辑。

上电初始化:PLC上电后,所有输出点先强制复位,所有状态机寄存器清零,然后延时3秒再允许自动逻辑运行。这样即使PLC刚上电瞬间出现信号抖动,也不会导致设备误动作。

通信看门狗:PLC程序里做一个1秒自增的寄存器,只要PLC在运行,这个值就持续变化。组态王画面脚本里定时读取这个寄存器,如果超过5秒没变化,说明PLC可能死机或通信断了,画面上弹出一个明显的报警,同时把相关操作按钮置灰,防止操作工在通信断开的状况下盲操作。这个设计成本极低,但能避免很多生产事故。我们这套系统投运后的第一次夜间断电,第二天早上操作工就是靠这个看门狗画面确认了通信状态,然后再放心启动的。

6. 试车结果和现场运营细节

6.1 试产精度数据和节拍对比

系统调试完成后,做了两天试产验证。连续生产了80个批次,每批六种原料,总重量在100公斤到300公斤之间。数据统计下来,单种原料的称量误差基本都在±0.3%以内,大部分批次甚至能做到±0.1%。对比原来人工配料的±2%误差,可以说提升非常明显。

效率上也直观。原来一个批次从称量到投料大概需要12分钟,自动系统稳定后一个批次只需要6到7分钟,而且两个人减少到一个人值守。操作工的主要工作从“称料”变成了“看着画面、处理报警”,劳动强度明显下降,老板最关心的“这个月用了多少原料”也能从组态王的历史报表里直接导出来,账目清清楚楚。

6.2 操作工最关心的两个点:防错和易改配方

项目验收之后,我特意问了操作工的使用感受。他们最在乎的其实不是自动化率多高,而是两个细节:

第一是防错。原来人工配料最怕加错料,一袋料倒下去就是几百块的成本损失。自动系统里,我给每个料仓都加了“物料代码确认”逻辑,操作工在画面上选择当前料仓实际装的是什么物料,PLC校验配方要求后才会运行,对不上直接报警不允许启动。这一个功能,操作工觉得比省力气更重要。

第二是改配方容易。他们原来改一次配方要重新算比例、改磅秤、做记录,现在直接在配方画面里改数字、点下发,一分钟搞定。我还把配方权限分了两级:普通操作工只能调用配方,不能修改配方参数;技术人员登录后才允许修改配方并写入。避免了操作工不小心把配方数值改错的情况。

6.3 这套方案的可复制性和扩展方向

这个项目的经验,后来在另一个小化工厂的配料线上也复用了。硬件结构基本一样,只换了模拟量模块的规格和给料机构类型,PLC程序框架没动,组态王画面改了下原料标签,一个多星期就跑通了。

如果要扩展,可以考虑的方向是:把S7-200升级成S7-1200或S7-200 SMART,以太网通信会比PPI快很多,组态王也支持对应的TCP驱动;或者把组态王的报警和历史数据接到管理系统的数据库里,实现生产数据远程查看。但就这条线的规模来说,S7-200加组态王的组合已经足够稳定可靠,再往上升级,边际收益不一定大。

最后分享一个实际体会:做自动配料项目,真正花时间的往往不是编程和组态,而是现场那些看起来不起眼的细节——给料机的机械结构顺不顺、料仓的架桥问题有没有解决、称重传感器的安装有没有受震动影响。PLC程序和组态王画面做得再漂亮,这些机械和工艺问题不解决,精度照样上不来。所以有人问我要不要换更高端的硬件时,我的建议通常是:先确认现场机械和仪表侧的底子打好了,再考虑控制器和上位机升级,顺序反了,钱就白花了。

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

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

立即咨询