混凝土搅拌站配料控制系统PLC梯形图与组态王设计全解析
发布时间:2026/9/12 17:02:01 作者:尧图编辑部 阅读量:1,286

接到这类带“解释”的梯形图程序和图纸一起出现的需求一般有两种情况要么是学校或者培训机构的学生在做课程设计要么是现场做设备改造、旧系统升级的电工或工程师在找能直接抄的作业。我自己的判断是不管哪种情况真正值钱的往往不是那一张梯形图截图或者原理图PDF而是藏在图里的控制逻辑、I/O分配思路和现场调试时踩过的坑。这篇就把我从方案设计、PLC程序编写、组态王画面搭建到接线调试的完整过程拆开讲清楚给想做混凝土搅拌站配料控制系统的朋友一条能走通的路。混凝土搅拌站配料控制系统说白了就是精确控制砂石、水泥、粉煤灰、水和外加剂这几种料的配比和投放顺序然后把它们送进搅拌机拌匀。这个场景非常适合用PLC做逻辑控制再配上组态王做上位机监控。下面我从系统方案开始一步一步把核心细节和实操要点讲透。1. 项目到底做什么需求梳理与方案选型1.1 混凝土搅拌站配料到底控什么很多人第一次接触搅拌站配料系统容易把它理解成“称重然后倒进去”这么简单。实际做下来根本不是那么回事。一个典型的混凝土配料系统至少要控制四类物料骨料砂子、石子、粉料水泥、粉煤灰、矿粉、水和外加剂。其中骨料是大宗物料需要粗称和精称两步来控制精度水可以直接用流量计或者称重传感器外加剂用量很小但精度要求很高通常用专用称斗加延时补偿来控制。配料的核心难点在于“动态精度”。以骨料为例料门打开后料流是连续的如果等重量到达设定值再关料门由于料流惯性和滞后的关系实际重量早就超了。所以控制系统必须做“提前关断量”的补偿也就是在大约还有2到3公斤就要到达目标值时提前关掉快速料门只留小门或者振动器继续补料用慢速逼近目标值。这个提前量不是一个固定值它和料仓压力、骨料含水率、落料高度都有关系需要现场实际标定。PLC程序里一般会提供一个“精称提前量”的寄存器方便工艺人员随时调整。水和外加剂的精度问题不太一样。水泵启动后管路里有余水电磁阀关闭到完全断流还有时间差。这些误差靠PLC的I/O扫描速度是救不回来的必须在程序里做“来料累计量”处理再用仪表或者模拟量反馈做闭环校正。1.2 为什么选S7-200PLC而不是选其它现在西门子主推的是S7-1200和S7-1500S7-200早就是停产状态那为什么还要选S7-200说白了三点原因项目预算有限、现场的运维人员只懂S7-200、旧系统升级要求硬件接口不变。实际项目中大量搅拌站用的还就是S7-200系列库存备件和图纸都好找很多老师傅闭着眼睛都能改程序。从控制规模看一套中小型搅拌站配料系统开关量输入输出点一般也就三四十个模拟量通道数量在六到八个左右。S7-200 CPU224自带14个数字量输入和10个数字量输出扩展一个EM231四通道模拟量输入模块再挂一个EM223扩展数字量整套系统就能拿下来。成本比换整套S7-1200加模块低很多而且组态王对S7-200的驱动支持非常成熟通信用PPI协议一条编程电缆就能搞定。1.3 系统架构与手动/自动运行设计这套系统我建议做成“手动 自动 急停”三模式结构。手动模式用于检修、单机调试和异常处理每个执行机构都有独立的控制按钮自动模式用于正常生产按下启动按钮后PLC按配方顺序自动完成配料、卸料、搅拌、出料的循环急停则直接切断输出继电器电源让所有机构停下来。手动和自动的切换在梯形图里用“模式选择开关”这个输入点控制。进入自动模式时程序会先把所有输出复位一遍防止残留的中间状态直接触发设备动作。这个细节特别重要我见过好几个项目因为切换模式时输出没复位一按自动启动搅拌机混凝土还没清完就开始进料。2. 梯形图程序核心逻辑每个网络的编写意图2.1 I/O分配表先行写梯形图之前我习惯先把I/O表定死后面程序结构就跟着表格走不容易乱。这套系统的I/O分配大致如下地址功能说明信号类型备注I0.0启动按钮常开输入自动模式启动I0.1停止按钮常闭输入停止循环I0.2手动/自动切换开关量ON为自动I0.3急停按钮常闭输入硬接线切断输出I0.4骨料称斗到位检测接近开关卸料门关闭到位I0.5水泥称斗到位检测接近开关同上I0.6搅拌机卸料门限位接近开关出料门控制I0.7搅拌机运行反馈接触器辅助触点运行状态检测AIW0骨料称重传感器信号4-20mAEM231通道0AIW2水泥称重传感器信号4-20mAEM231通道1AIW4水称重传感器信号4-20mAEM231通道2Q0.0骨料粗料门快继电器输出驱动接触器Q0.1骨料精料门慢继电器输出驱动接触器Q0.2水泥螺旋输送机继电器输出驱动接触器Q0.3水泵继电器输出驱动接触器Q0.4外加剂泵继电器输出驱动接触器Q0.5搅拌机正转继电器输出接触器互锁Q0.6搅拌机反转继电器输出接触器互锁Q0.7骨料卸料门继电器输出斗门打开Q1.0搅拌机卸料门继电器输出出料门打开Q1.1运行指示灯继电器输出自动运行指示模拟量通道和称重变送器要配套调整量程范围。比如称重传感器量程是2000kg变送器输出4-20mA那么AIW0里的数值对应关系就得在程序里做标定。这个标定一般不用PLC指令去算而是在组态王里做工程量换算。但是PLC内部用于逻辑判断的“重量到达”信号还是需要在PLC里算出一个工程量所以梯形图里通常会用整数运算指令来处理。2.2 启动、停止和置位复位逻辑核心启动逻辑我一般写成“置位优先式”。网络1做启动条件判断网络2用置位指令把运行标志位M0.0置1网络3做停止复位。为什么不用简单的输出线圈而要费劲写置位复位因为配料过程中有大量状态需要保持比如精称正在进行时就算某个瞬间称重值波动导致条件不满足流程也不能随便退出。用线圈直接驱动的话扫描周期里条件一断输出就跟着断设备会抖。置位复位电路要特别注意“复位的最高优先级”。停止按钮、急停、超差报警都必须能无条件复位M0.0。梯形图里要把这些条件全部并联在复位线圈前端任何一路接通M0.0就归零。顺序是先复位流程标志再复位输出最后点亮指示灯。2.3 配料流程核心粗称、精称与补料这是整段梯形图里最值钱的部分。以骨料配料为例流程大致分五步启动配料打开骨料快速料门Q0.0开始粗称。当称重值达到“粗称设定值”时关闭快速料门同时打开精料门Q0.1。当称重值达到“精称设定值”时关闭精料门。延时1到2秒等称斗稳定记录实际重量。偏差超过允许范围则报警否则进入下一步。梯形图里这个流程我用“状态步”实现比单纯用定时器和比较指令串起来要清晰得多也好排查问题。状态位用M0.1到M0.7表示不同工序任何时候只有一个状态位接通。Network 4 骨料粗称启动 LD M0.0 // 自动运行中 A M0.1 // 骨料配料状态步 LDW VW100, VW200 // 当前重量 粗称目标 Q0.0 // 开快速料门 Network 5 粗称转精称 LD M0.0 A M0.1 AW VW100, VW200 // 当前重量 粗称目标 S M0.2, 1 // 进入精称状态 R Q0.0, 1 // 关闭快门 Network 6 精称控制 LD M0.0 A M0.2 AW VW100, VW250 // 当前重量 精称目标 R Q0.1, 1 // 关闭慢门 S M0.3, 1 // 进入稳定延时VW100是称重实际值工程量VW200是粗称目标值VW250是精称目标值。这里看到“粗称目标值”和“精称目标值”是两个不同的设定。粗称值通常比目标配方值小3到5公斤具体多少要看现场落料的惯性。如果粗称值设得太接近目标慢门还没来得及补就超重了设得太小慢门工作时间太长效率低。精称结束后的稳定延时也很有讲究。料门全关后料斗还在摇晃传感器信号可能还有几百克的跳动。马上读重量记录会造成误差反复跳变还可能触发超差报警。我一般延时1.5秒再读值这个时间要在满足生产节拍的前提下尽量长一些。水和外加剂的配料逻辑类似但控制对象是泵和电磁阀。水称斗的精度通常靠电磁阀两次开关来实现先开大阀快加到达粗设定值后切小阀慢加。外加剂泵流量小直接用延时关断的方式程序里需要根据流量标定出一个“提前关断时间”。2.4 卸料、搅拌与循环控制所有物料进搅拌机以后程序要完成搅拌时间控制和卸料控制。搅拌机正转和反转之间必须有接触器互锁程序里也要做输出互锁防止正转和反转同时输出。卸料门控制要注意“门到位信号”的作用。搅拌机出料门打开后要检测到“限位开关到位”才允许出料小车走行或者停止搅拌。很多现场事故都是因为出料门没关到位搅拌机又开始进料混凝土漏一地。所以梯形图里卸料门的控制我习惯用“开到位”和“关到位”两个限位信号参与逻辑判断而不是只靠时间延时。循环次数用计数器指令实现。每个批次完成后计数器加1和配方要求的批次总数量比较。全部完成后自动停机同时把完成信号上传到组态王。2.5 报警与急停逻辑报警逻辑是梯形图里容易被看轻、却是后期维护最需要的部分。我至少会做这几类报警称重超差报警、模拟量信号断线报警、设备运行超时报警、急停触发记录。模拟量断线报警是个容易漏掉的功能。EM231的模拟量输入在传感器线断掉时会变成一个固定值比如4-20mA信号断线后读到的数值可能是满量程或者非常小的值。如果不做判断系统会把断线误认为“重量为零”或者“严重超重”。我一般会在程序里判断AIW值和正常范围的关系连续几个扫描周期都越界就触发断线报警。急停逻辑我在硬件上做了双重保护。第一重是急停按钮直接切断中间继电器工作电源任何PLC输出信号都无法让接触器继续保持吸合第二重是PLC程序里检测急停输入点一旦检测到急停信号立即复位所有输出和配方执行状态。3. 组态王上位机设计监控画面与数据管理3.1 组态王和S7-200的通信设置组态王KingView连接S7-200用的是PPI通信协议物理链路就是PC/PPI编程电缆或者USB-PPI电缆。组态王里新建设备时要选择“S7-200系列PPI”驱动然后配置PLC站地址。S7-200的默认站地址是2组态王里设置的设备地址必须和PLC系统块里设置的一致否则通信指示灯会一直闪红。通信参数方面波特率要匹配。S7-200系统块里设置的是9600那组态王的串口通信参数也要设为96008数据位、偶校验、1停止位。如果PLC里改成187.5k组态王那边也得跟着改。实操中通信不上最典型的原因有三个一是COM口号被别的程序占用尤其装了USB转串口驱动后系统里会有好几个虚拟COM口要在设备管理器里确认实际端口二是PC/PPI电缆上的拨码开关位置不对传输速率选错三是PLC已经被Micro/WIN在线监控占用通信口同一时刻只能被一个主站占用。3.2 画面布局与变量关联组态王画面的核心是“动画连接”。把画面里的图形和数据库变量关联起来图形就会跟随变量的变化而变化。搅拌站监控画面我建议至少做四张总览画面、配料监控画面、手动操作画面、报警与报表画面。总览画面里放搅拌站工艺流程图需要用矩形、直线、管道这些基本图形元素把物料流向画出来。骨料仓、粉料仓、称斗、搅拌机、出料口用不同颜色区分每一个执行机构旁边放一个指示灯图形运行时用颜色变化显示开关状态。建立变量的时候要分清I/O变量和内存变量。I/O变量直接和PLC地址绑定比如“骨料实际重量”定义为I/O变量数据类型选整型连接设备选S7-200寄存器选VW100。内存变量是组态王内部用的比如“当前生产批次号”、“配方编号”它们不占用PLC存储区用来做画面显示和脚本计算。组态王里修改按钮字体这个问题我经常遇到。双击画面里的按钮进入“动画连接”对话框在“文本”标签里可以设置按钮文字内容。如果想改字体样式要先选中按钮图形右键选择“字符串替换”或者直接进入属性编辑器在“字体”属性里修改。实际上按钮文字的字体修改有时候不生效是因为按钮的“文本”属性没有绑定到“用户输入”或者固定字符串输入框里显示的字符串没有通过回车确认设置完一定要点确定退出再保存画面。3.3 报表系统与MySQL数据存储组态王的报表分实时报表和历史报表。搅拌站生产记录需要的报表主要是“每批次配料记录”包括批次号、时间、各种料的实际重量、偏差值、操作员。这些数据在组态王里通过“报表窗口”控件展示但更推荐的做法是把数据写入数据库再用报表工具做统计分析。热搜词里有“组态王与navicat for mysql连接”这就是把组态王采集到的数据存到MySQL里然后用Navicat去管理。实现方式是组态王自带的SQL访问管理器通过ODBC数据源连到MySQL。这里有个容易踩坑的地方ODBC驱动必须和组态王位数一致。组态王6.55是32位程序就必须用32位的MySQL ODBC驱动不能用64位的否则数据源配置好了组态王也连不上。具体连接步骤先在Windows里配置系统DSN选择MySQL ODBC驱动填主机地址、端口、用户名、密码、数据库名。然后在组态王的数据词典里创建记录体把要写入的变量一一对应到数据库字段。最后在命令语言里用SQLConnect、SQLInsert这些函数完成连接和插入。每次连接数据库前先断开旧连接避免连接句柄泄漏导致写入失败。表格里重点记录配方号和实际重量方便后续追溯。实测下来用Navicat管理MySQL查询历史批次记录和导出Excel都比组态王自带的历史查询灵活得多。3.4 报警记录时间不对的处理“组态王报警记录时间不对”这个问题可以说十个项目中至少有五个会碰到。最典型的表现是报警窗口里显示的报警时间比实际时间慢8小时或者时间完全不对。第一个原因就是时区设置问题。组态王取的是系统本地时间如果运行组态王的这台电脑时区设成了UTC显示的就是比北京时间慢8个小时的时间。这个最好排查把Windows时区改成“UTC8 北京”就行。第二个原因是变量类型选错。组态王里的报警时间显示的是“报警产生时间”而非“恢复时间”如果变量被定义成“内存离散”类型部分版本会有时间戳不一致的老毛病。解决办法是尽量让报警变量从I/O离散变量派生并且保证PLC侧使用系统时钟。第三个原因比较隐蔽组态王历史报警记录默认是保存在缓冲区里除非配置了ODBC数据库存储否则重启之后历史报警时间可能和实时时间发生错乱。解决办法是在工程配置里把报警存储设置为“同时存储到数据库”这样时间戳由数据库管理系统统一生成就不会乱了。3.5 组态王7.5和6.55怎么选热搜里有人问组态王7.5和6.55的区别。我的看法很直接如果只是做搅拌站这种规模不大的监控项目6.55完全够用而且运行稳定、教程多、网上问题答案好找。7.5在画面效果、图库、图表控件上更漂亮支持Windows 10/11更好但有些旧工程的控件需要重新授权而且工程文件不能直接降级打开6.55。从工程移植角度讲我建议站点规模大、后期要扩展三维模型或者复杂报表的项目直接上7.5简单的PLC监控、数据记录用6.55就够了。配套的授权狗和驱动版本要注意别买了6.55的授权装了7.5软件这类授权不通用的情况经常发生。4. 接线图与原理图设计要点4.1 数字量输入输出接线先用对信号类型PLC输入信号有源型和漏型的区别。S7-200数字量输入是漏型输入外部传感器用PNP输出型接近开关公共端接24V负极传感器输出高电平有效。这一点非常容易接错。如果拿了一个NPN输出型接近开关接到S7-200上信号怎么都不来现场还很难判断。数字量输出端S7-200继电器输出型比较常用因为它可以交直流两用负载能力强。继电器输出接接触器线圈时触点容量和线圈电流要匹配。接触器线圈电流大的要加中间继电器扩流不能直接把Q0.0端子接到大接触器线圈上拉弧几下继电器触点就废了。输入端的线最好用0.75平方以上的软线压冷压端子。输出端到接触器线圈的线用1.0平方或1.5平方具体看电流。图纸上每个端子都要标线号端子排编号要和原理图一致。4.2 模拟量称重信号线与抗干扰称重系统的模拟量信号是整套设备中最娇贵的部分。称重传感器输出毫伏级信号进了变送器之后转成4-20mA电流环信号再送进EM231模拟量模块。变送器到EM231之间的线必须用屏蔽双绞线屏蔽层在PLC侧单端接地。最忌讳的是把模拟量信号线和动力线扎在同一个线槽里走。我在现场见过一次骨料秤数据每隔几秒就跳几十公斤的情况排查到最后就是称重信号线跟搅拌机主电机电缆并行走了好几米电机一启动干扰就来了。后来重新走了线槽把模拟量线和动力线隔开20厘米以上跳变问题就消失了。EM231模块的接线端子边上一般标着RA、A、A-这些记号。4-20mA两线制变送器接法是把变送器正极接到模块的24V电源端子负极接到A输入端子模块的A-和公共端短接。不同品牌的变送器接线有差异图纸上一定要标注清楚。4.3 主回路与二次回路的隔离绘制电气原理图时主回路电机、接触器、热继电器和二次回路PLC、传感器、继电器要分开放置中间用端子排做隔离。这样检修时切断二次回路不会影响主回路的安全隔离维护也方便。接触器线圈两端要并联RC浪涌吸收器或者压敏电阻。不要只靠PLC输出继电器自身去吸收反电动势长期拉弧会把触点烧黑。我给每台接触器线圈都配了一个阻容吸收模块和接触器线圈并联安装。成本很低但对PLC输出点寿命的提升非常明显。PLC的24V电源建议单独用一个开关电源不要和传感器共用一个带变频器的电源。变频器产生的谐波会反馈到24V电源上导致称重信号漂移、PLC误动作。如果现场只有一个24V电源可以在PLC电源进线端加EMC滤波器。4.4 图纸交付与现场施工的一致性图纸做得再漂亮施工队不按图纸接线等于零。我交付图纸时都会附一页“接线检查表”把每根线的线号、起点、终点、颜色列出来施工完成后要求逐一打勾确认。这个表格看起来不起眼但在调试阶段能省下大量查线时间。还有一个经验原理图里的“接地点”符号要统一PLC侧、变送器侧、柜体接地的位置要在图纸里明确标注。很多系统干扰问题本质上就是接地不当多点接地形成地环路信号地变成噪声源。5. 现场调试实录与问题排查5.1 通信不上、驱动图标打红叉组态王和设备通信不上是调试第一天最容易遇到的坎。打开组态王的设备通信测试窗口能看到当前设备的状态。如果设备状态是“停用”或者“故障”多半是通信参数没对上。排查顺序我建议是从物理层往上层走先看PLC侧通信口的灯是否闪烁电缆插没插好再看设备管理器里COM口号和组态王里选的是否一致然后确认波特率、校验位、站地址最后查看驱动是否被系统防火墙拦截。这里面COM口号不一致是最多见的USB转PPI电缆每次插到不同USB口系统会分配不同的COM号。5.2 称重数值跳变与配料超差调试骨料配料时出现超差首先要区分是称重系统本身的问题还是配料逻辑的问题。把组态王画面切到“实时趋势”观察骨料重量曲线看曲线是不是在配料过程中出现毛刺。如果毛刺伴随电机启停出现那基本是干扰或者电源波动如果曲线非常平滑但最终重量超差就要查精称提前量和粗称设定值。填料提前量的整定方法是先做一次试料观察实际到达重量和目标重量的差值。假如目标100kg实际到了105kg说明关料门过晚提前量应该加大如果实际到了97kg说明提前量太大要减小。重复几次就能找到一个区间。记住提前量和料流速度正相关料位高低变化时提前量也要微调成熟的配料系统会在配方里放一个“流速修正系数”。5.3 配方切换乱序与互锁失效调试过程中最容易出顽固性Bug的就是流程乱序。有一次现场反映手动摸了几个按钮之后再切自动模式配料过程会跳过水泥直接进水差点打坏搅拌机。排查后发现问题出在状态位没有彻底复位上。手动操作时某个M点正好处于置位状态切回自动后程序误认为该步已经完成直接跳到了下一步。从此以后我在模式切换逻辑里强制加了一个“全状态复位”网络。不管是手动切自动、自动切手动还是急停恢复都要先复位所有M状态位和输出Q点延时100毫秒后再允许置位新的自动运行标志。这个习惯让我后续项目里的流程乱序问题几乎绝迹。5.4 报警记录和报表有数据但不显示组态王里报警记录有数据但报表控件里查不到通常是两个原因。第一历史报表控件的数据源没有选择正确的ODBC连接或者历史库文件第二报表查询的时间范围和报警产生时间不一致用了系统默认的“当前时间”去查而数据是昨天产生的。我一般会在报表查询界面增加一个起始时间和结束时间的输入框默认取当天零点到当前时间就避免了这种情况。如果数据库里有数据但组态王图表显示断线那多半是组态王在查询期间连接数据库超时而且没有做重连。我的处理方式是写一个定时脚本每隔60秒检查一次数据库连接状态如果掉线就自动重连并记录断线时间。这个做法尤其适合那些跑几个月不重启的上位机系统。5.5 调试过程中最值钱的一条经验调试这套系统时最深刻的感触是PLC程序里多写一句注释、图纸上多标一个线号在后期维护时能省下几个小时。以前我总觉得注释写不写无所谓反正自己看得懂。后来一个项目隔了半年去现场维护打开软件看着那一堆M0.0、M0.1的位地址半天没缓过神。现在我的程序网络注释和变量注释都写得像说明书一样组态王变量也按“料种_功能_位号”的规则命名比如“GZ_Weight_Real”“SN_Feed_Fast”。这个习惯带到现场调试里最大的好处是排查问题的时候不需要抱着图纸一个个对着看看变量名就知道哪一步没走通。个人体会是配料控制系统的成败一半在程序逻辑另一半在变量和图纸的规范度。程序写得再巧变量乱七八糟接手的人一样没法维护。