☰
西门子PLC与组态王联动的混凝土自动配料系统搭建详解
2026/10/20 23:44:51 网站建设 项目流程

一提到混凝土配料,很多人第一反应是“不就是把砂子、石子、水泥、水按比例称一称倒进搅拌机吗”。真在搅拌站或者预制构件厂待过的人不会这么想。配料不准,混凝土强度等级直接不达标,整批料报废是小事,带着隐患浇进构件里才麻烦;配料节拍太慢,搅拌机空等,产能又上不去。所以现在做这类系统,基本盘就是西门子PLC加上组态王联动:PLC负责称重判断、给料启停、卸料互锁这些实时控制,组态王负责把流程画出来、把配方管起来、把报警和报表记录下来。这篇文章就把一套水泥混凝土自动配料系统从上位机到下位机的搭建过程拆开讲一遍,重点放在组态界面怎么做、命令语言脚本怎么写,以及联动时最容易出问题的地方。

文章里我会用组态王6.5x/7.5系列的工程环境举例,不同版本界面会略有差异,但数据词典、动画连接、命令语言这几块的核心思路完全一致。适合正在做课程设计/毕业设计的同学,也适合刚接触配料行业的电气工程师照着搭第一套系统。

1. 混凝土配料这件事,难点全在“精度”和“节拍”上

1.1 一次配料周期里发生了什么

水泥混凝土配方通常包含水泥、砂、石子、水和外加剂,有时还有粉煤灰等掺合料。每种物料都有自己的料仓,料仓底部装给料设备,砂石多用皮带机或振动给料机,水泥、粉煤灰用螺旋输送机,水和外加剂用泵和阀门。物料落到计量斗里,计量斗下方挂着称重传感器,传感器信号送到称重仪表,仪表再把重量信号交给PLC。

一次标准的配料过程是这样的:启动配料后,给料机开始快速喂料,计量斗重量快速上升;当重量接近目标值时转为慢速喂料,防止过冲;达到目标值后停止给料,等待重量稳定;然后打开计量斗底门,把物料卸进搅拌机;卸料完成、计量斗回零后关门,进入下一批。

这个流程听起来简单,真正常出问题的地方有两个。一是动态称量精度,给料机停机后,空中还有一段余料要落进斗里,停早了重量不够,停晚了又超重。二是节拍协调,配料、卸料、搅拌是流水线作业,某一台给料机卡住或者卸料门没关严,整条线都会等。

1.2 决定配料精度的三个关键变量

第一个是快慢速切换点。如果从配料开始到结束全用快速,停机瞬间的空中余料可能超重几十公斤,对于一锅几十公斤到上百公斤的配料来说,这个误差完全不可接受。所以必须在接近目标值时切换慢速,把停机后的冲击余量压到最小。

第二个是判稳延时。给料机停掉以后,物料还在下落,计量斗还会晃动,如果这时候立刻读取重量,读数会产生较大波动。实际工程里通常会让重量稳定几百毫秒到一秒再记录最终值。

第三个是落差补偿。每次配料完成后,用实际值和目标值做差,得到的过冲量记录下来,在下一批配料时提前修正。比如上一批超了2公斤,下一批就在目标值减2公斤的位置提前停机。这里有个细节,修正系数不能设成1,否则系统容易来回振荡,一般取值0.3到0.8比较稳。

1.3 为什么不能只用按钮箱,也不能全靠组态脚本

没有组态王之前,很多小型配料站是按钮箱加仪表盘操作,每个料仓一个启动按钮,操作员盯着仪表指针手动切换快慢速,配方切换要反复拨码,生产过程没记录,出了问题只能靠人回忆。这种模式在产能要求不高的小站点勉强能用,一旦配方种类变多、生产批次加密,人就是最大的瓶颈。

反过来,也有初学的人想“偷懒”,把配料的判断逻辑全写在组态王脚本里。组态王脚本是类C语言,功能确实能做,但上位机一旦重启、通讯闪断一次,配料过程就可能失控。真实生产线上,控制的最终裁判必须落在PLC,组态王只负责下发设定值、显示状态、记录报警。这个分工想清楚,后面设计架构才不会跑偏。

2. 联动架构与设备选型:谁做实时控制,谁做界面交互

2.1 一套典型配料系统的硬件拓扑

我在实际项目中常用的配置就是一台工控机(或者普通办公电脑)装组态王,通过以太网线连接西门子PLC,PLC再和称重仪表、给料机控制回路、卸料门电磁阀等现场设备打交道。

典型设备清单大致如下:

设备选型参考作用
上位机工控机,带串口/网口运行组态王,提供人机交互
PLC西门子S7-200 SMART CPU SR30/SR40执行配料逻辑、称重判断、设备互锁
模拟量模块EM AM06或EM AM08读取称重仪表4-20mA信号
称重传感器3个传感器加接线盒,量程按计量斗容量选采集计量斗重量
称重仪表具有4-20mA模拟量输出和RS485通讯口变送重量信号、标定零点量程
给料设备螺旋输送机、皮带机、水泵、外加剂泵按配方供料
卸料机构气缸/电动推杆控制底门卸料到搅拌机
报警装置三色灯、电铃提醒超差、故障

这套配置的选型逻辑很直接:中小型配料站IO点数不算多,几十个开关量和模拟量通道就够用,S7-200 SMART的CPU自带以太网口,价格和扩展能力正好匹配。如果未来要接入PROFINET总线、连接变频器做精确调速,或者站点规模更大,那再往上考虑S7-1200,程序和组态王连接思路基本一样,只是驱动配置不同。

2.2 称重通道怎么接,是个值得提前想清楚的问题

称重部分常见的做法有两种。第一种是把称重仪表的4-20mA信号接到PLC模拟量模块,PLC直接读重量值做配料判断。第二种是用称重仪表的RS485串口,走Modbus RTU协议和PLC或者组态王通讯。两种方式各有优劣,模拟量方式实时性好,布线简单,但零点和量程要靠PLC内部标定;串口方式能读到仪表内部的去皮、峰值、稳定标志等更多信息,但通讯周期会引入延迟。

我习惯的做法是双通道并行:PLC读模拟量信号做实时配料判断,称重仪表的RS485口再接一条线到上位机,组态王通过串口或者工业网关读仪表显示值和标定参数。这样即使组态王和PLC的通讯临时断了,仪表盘本身还能显示重量,现场不至于完全失明。

2.3 给料执行机构也得提前规划好

给料机的快慢速切换,可以通过双速电机、两个接触器组合、或者变频器多段速来实现。预算有限的站点常用双速电机方案,成本低,可靠性高。变频器方案的好处是速度可以连续调节,切料更平滑,过冲更小,调试时能微调的参数也更多。

如果是水或者外加剂这类液体物料,用泵加电磁阀/气动阀控制,快慢速可以通过大小泵切换或者阀门开度实现。卸料门控制更简单,气动蝶阀或电动推杆加开到位、关到位两个限位开关就足够。

3. PLC端把配料过程“钉死”:状态机、快慢速切换与落差补偿

3.1 用状态机梳理配料流程

写PLC程序之前,先把配料流程画成状态机,这一步比直接写梯形图更重要。整个配料过程可以分为待机、配料中、卸料中、完成四个大状态。配料中又细分为快速喂料、慢速喂料、判稳延时三个子阶段。

我在程序里习惯用M区中间继电器做状态标志:

  • M0.0 自动运行允许
  • M0.1 配料中
  • M0.2 快进输出
  • M0.3 慢进输出
  • M0.4 判稳延时中
  • M0.5 卸料门打开
  • M0.6 本轮配料完成

组态王画面里读的就是这些M位,M0.2和M0.3为1时画面上的给料机图标就闪烁或者变色,M0.5为1时计量斗底门图标就打开。这个对应关系后面做动画连接会用到。

配料启动条件我一般设置为:自动运行允许位为1,计量斗空秤(重量小于空斗值加残留阈值),配料完成标志已复位。三个条件缺一不可,否则组态王上按启动按钮,PLC不会理你。这样做的好处是防止操作员在料斗里还有剩料时直接启动下一轮,造成累计重量错误。

3.2 快慢速切换和空中余料补偿

快慢速切换不能只看重量,还要考虑物料流量。比如石子这类大颗粒物料,给料流量大,切换太晚会超冲太多,切换太早又会让循环时间变长。工程上常用的做法是设置两个提前量:

快速向慢速切换的阈值 = 目标值 - 慢速提前量 - 落差补偿值 慢速停机的阈值 = 目标值 + 落差补偿值

这里“落差补偿值”可以简单理解为上一轮实际超差的修正量。每轮配料结束后,把实际重量和目标值的差存到V区,下一轮开始前读取。修正系数默认0.5,现场试料时再根据物料流动性微调。

判稳延时不能一竿子打死,砂石这类粗骨料落到计量斗里会砸秤,延时可以设1秒,水泥粉煤灰这类细粉料可以短一些,500毫秒就够。延时时间太长会让每锅节拍变慢,延时太短又会把不稳定读数当成实际值,这个参数现场调整的经验值很重要。

3.3 和组态王通讯的变量规划表

组态王读取PLC数据的前提是变量地址一一对得上。我在建工程之前一定先做一张变量表,规划好V区和M区的作用,否则组态王画面写一半再去翻PLC程序,非常容易出错。

PLC地址数据类型变量用途组态王侧变量名
M0.0BIT自动运行允许自动运行
M0.1BIT配料中配料状态
M0.2BIT快进输出快进指示
M0.3BIT慢进输出慢进指示
M0.5BIT卸料门打开卸料门状态
M10.0BIT启动脉冲(由组态王置位)启动命令
M10.1BIT停止脉冲(由组态王置位)停止命令
VW100WORD当前配方号配方号
VD102REAL水泥目标值水泥设定
VD106REAL砂目标值砂设定
VD110REAL石目标值石设定
VD114REAL水目标值水设定
VD118REAL外加剂目标值外加剂设定
VD200REAL计量斗当前重量斗重量
VD300REAL本轮水泥实际值水泥实际
VD304REAL本轮砂实际值砂实际

这里要注意,VD和VW是不同长度的数据区,规划地址时避免重叠。VD102双字会占用V102到V105,所以VW100放在V100到V101,刚好错开。组态王里读取VD实数时,寄存器类型选FLOAT,地址填VD102;读取VW整数时选INT/UINT。这类问题特别隐蔽,后面通讯排坑时我还会再提。

3.4 PLC内部互锁逻辑

写PLC程序还有一个必须做的动作:按钮防连击。组态王画面上的启动按钮如果脚本没处理好,操作员点一下会发送一个短脉冲,正常没问题,但鼠标卡顿或者操作员双击时,两个脉冲连续到达PLC,就可能造成配料流程重复启动。

最稳妥的做法是在PLC里把M10.0这个“启动脉冲”做成上升沿触发且自保持,启动条件满足后立即把M0.1配料中置位,同时复位M10.0。这样无论组态王脚本发多少次脉冲,PLC侧只认第一次。停止逻辑同理,停止命令只在配料中或某个运动中有效,配料完成状态下按停止不起作用,防止操作员误操作把设备状态搞乱。

4. 组态王画面怎么做:从数据词典到动画连接的完整套路

4.1 画面布局:先让操作员用起来顺手,再谈好看

组态王画面不是画得越花越好。我的建议是分四个子画面:系统总览、配料监控、配方设置、报警与趋势。总览画面显示设备运行状态、三色灯状态、当前配方号;配料监控是主操作画面,所有启动停止按钮、重量数值、给料机状态都在这里;配方设置给工程师用,区分操作权限;报警趋势页放报警窗口和历史曲线。

主画面布局可以按“左状态、右数值、下按钮”的套路排:

画面区域放置内容
左上系统状态指示灯、自动/手动模式
中上各料仓给料机状态、快慢速指示
中央计量斗示意图、当前重量、目标重量
右侧本次实际配料值列表、超差提示
下方启动、停止、急停、配方切换按钮

按钮位置要固定,不能换了画面就找不到。急停按钮单独放在角落,用红色,而且不允许动画闪烁,因为闪烁会分散注意力。启动和停止按钮尺寸要够大,现场操作员戴手套点鼠标的情况很常见。

4.2 数据词典配置,这是最枯燥但最重要的一步

组态王的变量分I/O变量和内存变量。I/O变量对应PLC里的寄存器,画面显示重量、状态、启停命令都用I/O变量;内存变量存在上位机本地,配方号暂存、界面切换、中间计算这些用内存变量。

数据词典里新建I/O变量时,采集频率设成100毫秒到500毫秒均可,配料称重画面建议100毫秒,报警状态可以500毫秒。变量初始值设置为0,但如果PLC没有上电,组态王默认会把通讯失败时的值显示为0,这会在画面上造成“重量变成0”的假象,后面我会专门讲怎么规避。

4.3 动画连接:几个典型的配置写法

确认变量建好后,做动画连接就有章可循了。

启动按钮:右键按钮选择“动画连接”,在“命令语言”里选弹起时执行脚本,弹起时才触发是为了避免操作员按住不松时重复触发。停止按钮同理。

状态指示灯:把灯图元的“离散量”动画连接绑定到“配料状态”,1时显示绿色,0时显示灰色。给料机快进、慢进指示可以绑定到相应M位,运行时就能看到快进灯亮了又灭、慢进灯闪一下再灭的动态过程。

重量显示:用一个文本图元做“模拟值输出”,变量绑“斗重量”,保留一位或两位小数。目标值、实际值几个文本也这样绑。模拟值输出的好处是不需要写脚本刷新,变量值一变画面就变。

4.4 权限管理:操作员和工程师分开

组态王如果不做权限区分,任何一个操作员都能进配方设置改参数,生产安全没保障。我在工程里通常会建两个用户组:操作员组只允许启动停止、选择配方;工程师组可以修改配方值、标定参数、下载画面。

具体做法是在按钮的动画连接里勾选“安全区”,把配方保存按钮放入工程师安全区,操作员登录后按钮变成灰色不可用。登录界面用组态王自带的“登录”按钮就能实现,无需额外脚本。这个细节在课程设计和实际项目里都是加分项。

5. 命令语言脚本逐段拆解:配方下发、启停互锁、报警与报表

5.1 启动和停止按钮脚本

启动按钮的弹起时命令语言很简单:

// 按钮弹起时执行 \\本站点\启动命令 = 1;

这句的意思是把组态王的“启动命令”这个I/O离散变量置1,对应PLC里的M10.0。PLC检测到M10.0上升沿后启动配料流程,并自动复位M10.0。所以组态王不需要再写复位,也不需要管PLC内部状态。

停止按钮:

\\本站点\停止命令 = 1;

这里有个细节,组态王的变量写入是有通讯周期的,按钮弹起瞬间写1,如果PLC还没收到脉冲就被下一个周期刷新成0,可能造成漏触发。我在实际工程里会再加一句延时复位:

\\本站点\停止命令 = 1; \\本站点\停止命令 = 0;

脚本连续执行时组态王会先发送一次1再发送0,到PLC侧看就是一个完整的脉冲。虽然最终PLC侧还有上升沿互锁保护,但脚本里多这一句能让通讯时序更干净。

5.2 配方选择与下发脚本

配方管理是组态王脚本的重头戏。先在画面上放一个按钮或者下拉列表,选择配方号。下拉列表可以用组态王的数据词典内存整数变量绑定,然后用脚本判断配方号并把目标值写到PLC的VD区。

以配方1为例,执行“配方1下发”按钮的弹起时脚本:

\\本站点\配方号 = 1; // 通知PLC当前配方号 \\本站点\水泥设定 = 500.0; // 写VD102 \\本站点\砂设定 = 1000.0; // 写VD106 \\本站点\石设定 = 1500.0; // 写VD110 \\本站点\水设定 = 180.0; // 写VD114 \\本站点\外加剂设定 = 8.5; // 写VD118

如果有多组配方,可以写成:

if(\\本站点\配方选择 == 1) { \\本站点\水泥设定 = 500.0; \\本站点\砂设定 = 1000.0; } else if(\\本站点\配方选择 == 2) { \\本站点\水泥设定 = 480.0; \\本站点\砂设定 = 1050.0; }

注意这些目标值写入PLC后,PLC侧会在下一轮配料开始时读取使用。组态王这边不需要参与称重判断,只要管“把设定值送下去”就行。

5.3 数据改变事件脚本

组态王里可以给变量绑定“数据改变”脚本,当变量值变化时自动触发。我在配料监控画面最常用的一个数据改变脚本是监控“配料状态”和“本轮配料完成”标志。

比如当PLC侧的M0.6“本轮配料完成”从0变1时,组态王弹出一个提示窗口:

if(\\本站点\配料完成标志 == 1) { \\本站点\状态提示 = "本轮配料完成,开始卸料"; }

这里“配料完成标志”就是一个I/O离散变量,绑定PLC的M0.6。状态提示是一个内存字符串变量,绑定到画面上的文本显示。这样操作员不用一直盯着重量数字,看见状态提示变化就知道该卸料了。

报警脚本也走数据改变事件。比如M0.7是超差报警,PLC判断实际配料值和目标值偏差超过一定范围后置位M0.7。组态王脚本再做弹窗:

if(\\本站点\超差报警 == 1) { \\本站点\报警文本 = "水泥配料超差,请检查给料机"; }

报警窗口和语音提示用组态王自带的报警控件就能做,不需要自己写太多脚本。

5.4 实时趋势和历史报表

趋势曲线我推荐直接用组态王的通用趋势控件,把“斗重量”和几个目标值绑定进去,运行时就能看到重量实时变化的曲线。这个曲线非常直观,调试时能直接看出快慢速切换点是否合理、超调量有多大。

历史报表可以用组态王的报表窗口控件。用控件自带的单元格数据源,把每批次的“水泥实际”、“砂实际”、“石实际”等变量填到单元格里。如果不熟悉报表控件的配置,也可以用组态王的SQL访问功能,把每批数据写入数据库,再用Excel汇总。这里不展开数据库,但思路和普通组态王报表配置一致。

6. 通讯掉线、配料超差、按钮连点:联调阶段实测排坑记录

6.1 S7-200 SMART以太网通讯配置

S7-200 SMART本身带以太网口,组态王通过以太网驱动访问。电脑和PLC只要在同一个网段就能通讯,PLC的IP地址可以通过编程软件设置,我习惯设置成192.168.0.10,上位机设成192.168.0.20。

组态王里新建设备时,驱动选择S7-200(TCP),填上PLC的IP地址。新建I/O变量时,寄存器类型选FLOAT或者INT,地址填V区对应位置。这一步容易踩的坑是数据类型和地址不匹配,比如PLC侧VD100是浮点实数,组态王里选了INT,读出来的数据就是乱码,画面上的重量数字会跳来跳去。排查方法很简单,用一个重量恒定的小配方做测试,看读出来的数是不是和预想一致。

第一次连接测试可以用组态王的“设备测试”功能,选择一个I/O变量,点击读值,看当前值是否为PLC实际值。这一步能过滤掉九成以上的地址配置错误。

6.2 通讯掉线和假数据问题

现场网络环境不比办公室,交换机质量不好、网线接头氧化、电磁干扰都可能导致组态王和PLC通讯闪断。闪断的表现是画面数据突然变0或者不刷新,过几秒又恢复。

应对办法是给I/O变量设合理的“初始值”,同时把设备通讯参数的“尝试恢复间隔”调短。我一般设为5秒,这样偶发断网后组态王会自动重连,不会一直卡在断开状态。另外,重要变量要做质量戳判断,组态王变量属性里有“原始值”和“质量戳”选项,可以在脚本里判断质量标志,通讯异常时不更新画面显示。

还有一个更稳妥的土办法:在PLC里做一个定时翻转的M位,比如M10.7每0.5秒翻转一次,组态王读这个变量做“心跳检测”。如果连续几个周期没变化,基本可以判定通讯断了,画面弹提示告诉操作员“与PLC通讯异常,请检查网络”,而不是任由重量显示成0误导操作。

6.3 模拟量干扰与滤波

称重传感器的毫伏信号经过仪表变送成4-20mA,再进PLC模拟量模块,中间最容易受干扰的是变送器到PLC这一段信号线。现场有变频器、接触器、电机,强电干扰会串进来,导致PLC读到的重量值在几公斤范围内来回跳。

处理办法首先是信号线用屏蔽双绞线,屏蔽层在PLC侧单端接地,绝对不能两端都接,否则会形成接地回路。然后是PLC模拟量模块的滤波设置,S7-200 SMART的系统块里可以配置模拟量滤波,滤波采样次数设成8或16,能明显压住毛刺。但滤波太强会让快速喂料切断变迟钝,所以现场调试是在“稳定”和“响应速度”之间找一个平衡点。

6.4 快慢速切换参数现场标定流程

前面说的数学公式只是理论参考,真实的落差补偿一定要到现场试料调整。我的调试顺序是:

  1. 手动单仓试料,分别测快速喂料和慢速喂料的实际流量;
  2. 根据流量估算基本提前量,先设一个偏激进的快慢速切换点;
  3. 跑一整轮配料,记录实际值和目标值的偏差;
  4. 根据偏差修正式中的落差补偿系数,再跑一轮验证;
  5. 连续跑三轮,偏差在允许范围内才算合格。

这个流程最忌讳的就是一次调到位。物料的流动性、含水量、料仓料位高低都会影响流量,同一批参数在不同料位下的表现也不一样。所以落差修正系数设到0.5左右,留出调整余地,比设死一个理论值靠谱得多。

6.5 操作员误操作和防呆设计

最后说一个看起来不显眼但实际很重要的点:组态王按钮的防误触。启动按钮和停止按钮如果放得太近,操作员疲劳时很容易点错,最好在启动按钮脚本里加一个二次确认弹窗:

\\本站点\启动命令 = 1;

变成

if(确认启动 == 1) { \\本站点\启动命令 = 1; }

这个“确认启动”可以在画面上做成一个小勾选框,或者用组态王的弹窗函数弹出“是否确认启动配料”,操作员再点一次“是”才真正下发命令。多一步操作虽然增加了操作耗时,但对防止误启动整套设备非常有效。

另外急停按钮不要走组态王命令语言,直接把PLC的急停输入点接到硬件回路里,组态王只做一个急停状态显示,不承担急停控制功能。关键时刻网络断了,组态王靠不住,必须靠硬件。

做这类系统多了以后,我最大的体会是:真正决定运行体验的,往往不是算法有多先进、画面有多漂亮,而是那几处防错、互锁、恢复逻辑有没有做到位。PLC和组态王的联动方案,控制核心放在PLC,交互展示交给组态王,刚好能把实时响应和人机管理这两件事都拿捏住。配料精度、配方切换、报警追溯,一套组合拳下来,生产线的稳定性和可维护性都会有质的提升。

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

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

立即咨询