
电子皮带秤自动配料系统加上PID模糊控制是我这几年在工业现场接触最多的组合之一。S7-200虽然早已停产存量设备却遍布水泥、烧结、选矿、饲料、化工的配料车间稳定得让人舍不得换。这篇文章只谈一件事怎么在S7-200这台老而稳的PLC上把PID控制和模糊控制结合到电子皮带秤配料系统里把流量波动压下来把配料的稳定性提上去。先交代清楚系统定位。电子皮带秤自动配料系统解决的是“连续定量给料”问题用一条带秤体的皮带连续计量物料通过调节给料机频率或振幅控制下料量让皮带秤测到的瞬时流量始终贴着配方设定的目标值跑。S7-200在这里干的是核心控制器的活接模拟量称重信号、数字量测速信号算瞬时流量和累计量再给变频器或振动给料机输出模拟量控制信号。适合参考这个方案的人群也比较明确搞PLC程序维护的电气工程师、做配料系统成套改造的调试人员以及刚接触配料闭环控制的自动化专业学生。1. 先从整体方案说起这套配料系统到底是怎么控的1.1 电子皮带秤配料系统的工艺组成与信号链很多人一听到“自动配料系统”就觉得复杂实际上拆开看就是三大段原料段、计量段、执行段。原料段通常是料仓加给料机构常见的是螺旋给料机、电振给料机或叶轮给料机。料仓里的物料被连续排出落到下方的电子皮带秤上。计量段就是皮带秤本体托辊上的称重传感器加上测速传感器共同算出皮带上物料通过的瞬时量。执行段就是变频器根据PLC给的模拟量信号调节给料机转速或振幅最终让下料量跟随设定值。信号流向是一条典型闭环称重传感器/测速传感器 - PLC模拟量/高速计数输入 - PLC内算瞬时流量 - PID/模糊控制器运算 - 模拟量输出 - 变频器 - 给料机 - 实际下料量这里要注意不少老项目把测速信号接到PLC的高速计数器通道例如用旋转编码器或测速滚筒上的脉冲信号。也有的皮带秤自带称重仪表仪表把瞬时流量通过RS485发给PLC这时PLC不需要自己算流量但控制逻辑里面做模糊控制的关键输入——流量偏差和偏差变化率还是要自己根据实时流量来算。1.2 控制回路中的“迟滞”为什么是最大麻烦配料系统如果只是“称一称、调节一下”这么简单那用普通PID就够了。真正难的是这套系统存在巨大的纯滞后环节。举个直观的例子。螺旋给料机从变频器频率变化到螺旋转速稳定需要几秒从螺旋转速变化到物料被推出来并落到皮带上形成稳定料流又要几秒落在皮带上的物料被送到皮带秤称重区还要一段距离。这几个时间加起来可能就有5到15秒的滞后。用生活场景类比一下你洗澡时调水温热水管很长你拧了阀门要过一会儿水温才变太烫了你再拧回去结果等一会儿又变凉了。如果没有经验地乱拧水温永远在烫和凉之间振荡。皮带秤配料也是如此。纯PID在这种大滞后系统里增益调大一点就振荡调小一点又跟不上设定值变化这就是为什么要在PID基础上引入模糊控制。2. PID与模糊控制如何分工不是二选一而是打配合2.1 纯PID在皮带秤上的四个“罩门”我在现场调过的皮带秤配料回路纯PID控制暴露出四个典型问题这也是设计模糊PID的直接动机。第一给料机存在死区。电振给料机特别明显频率加到一定值才开始振动物料才开始“流”出来而螺旋给料机在料仓蓬料时也会出现“电机转但不下料”的短暂死区。死区会带来严重的积分饱和PID积分项为了消除偏差不断累积输出一旦物料突然下来流量立刻冲过设定值。第二物料特性时变。同一台设备今天配混合料明天配矿粉物料的堆密度、含水率一变给料特性就跟着变。固定一组PID参数不可能适应所有物料。第三大扰动频繁。皮带跑偏、料仓中物料压实程度变化、下料口堵料后突然疏通这些扰动是宽频的PID只有一个输出通道很难同时兼顾抗扰动和跟随性。第四纯滞后造成的相位滞后。滞后时间与对象时间常数之比太大时传统PID的稳定裕度急剧下降。这个在上一节已经详细说过。2.2 模糊PID两条路改参数还是改给定值模糊PID在工程上有两种实现路线很多人把它们混为一谈其实差别很大。第一种路线是“参数自整定”路线。模糊控制器根据当前偏差E和偏差变化率EC实时调整PID回路里面的比例增益、积分时间、微分时间。比如系统刚启动时偏差大模糊规则就适当加大比例增益让响应快一点等接近设定值时再减小比例增益、加大积分时间防止超调。这条路效果好但要注意修改PID参数时机的安全性特别是积分时间的突变可能让输出跳变。第二种路线是“给定值修正”路线。模糊控制器不碰PID内部参数只根据偏差和偏差变化率算出一个修正量叠加到流量设定值上然后把这个修正后的设定值送给PID回路。PID还是原来那组参数但实际跟踪的目标被模糊控制器动态调整。比如系统下垂时模糊控制器判断偏差变化率还在负方向加速就会把给定值暂时压低一点相当于提前“刹车”抑制超调。我个人在S7-200上更推荐第二种路线。原因很实际现场的维护人员对PID向导生成的回调表结构往往不熟悉直接改增益和积分时间的存储字容易误操作而给定值修正只是一个加法运算程序逻辑清晰出了问题也好排查。而且S7-200上PID向导本身有抗积分饱和功能配合给定值修正动态性能已经很够用。2.3 模糊规则表怎么定才不脱离现场确定模糊规则是整个设计中最“凭经验”的环节。很多教材讲隶属函数、模糊推理、重心法解模糊但在S7-200这种小型PLC上我更建议直接离线生成查询表。先把偏差E和偏差变化率EC量化成7个语言值负大NB、负中NM、负小NS、零ZO、正小PS、正中PM、正大PB。E用实际流量减去设定流量来算单位可以用百分比或直接用量纲吨/小时EC是本次偏差减去上次偏差再除以采样周期。然后再确定输出量也就是PID设定值修正量SP_trim的语言值。规则的核心逻辑只有四条全是老师傅的直觉偏差大且还在往负方向变大流量严重低于设定必须大幅提高修正量。偏差大但已经往正方向回归说明响应开始见效修正量适度保持或开始回收。偏差小但偏差变化率为负向较大要提前防止流量继续下滑修正量适度增加。偏差接近零且变化率平稳修正量归零交给PID做细调。我把常用规则整理成一个7×7的表规则格子里填的是SP_trim的量化输出。输出范围可以设定为设定值满量程的±3%到±5%这个范围根据现场允许的动态偏差确定。如果配料允差要求±1%修正量输出范围取±3%就比较合适太低起不到作用太高又会造成设定值振荡。3. S7-200上的落地实现查表法比在线模糊推理更实际3.1 程序总体结构与关键寄存器规划S7-200的程序结构其实很简单OB1就是主循环按扫描周期执行。因为CPU本身运算能力和存储空间有限在线做完整的模糊推理七个步骤会占用大量扫描时间所以工程上最成熟的做法是离线把模糊规则表算好用数据块存在V区运行时直接查表。程序我通常分成四个模块称重计算子程序读EM231模拟量输入通道的AIW0完成零点扣除、标定系数换算、瞬时流量计算顺便做一阶惯性滤波。模糊修正子程序计算偏差和偏差变化率量化到[-3,3]区间查模糊规则表得到输出修正量。PID控制子程序调用S7-200自带的PID向导生成的子程序把修正后的设定值传给PID回路。输出限幅与手自动切换子程序防止模拟量输出超出变频器工作频率范围并支持手动模式调试。寄存器规划上我习惯把模糊控制相关的变量集中在V区连续地址方便监控和修改。比如VW0做当前流量VW2做设定值VW4存偏差VW6存偏差变化率VW8存模糊修正输出。PID向导生成的回路表从VB0开始可能与我自己的变量冲突所以一个实用技巧是先开PID向导再规划其他V区变量避免重叠导致不明故障。3.2 模糊表查询的间接寻址实现模糊表是49个整数元素按行优先排列成7×7矩阵。偏移量的计算方式为偏移 行索引×7 列索引× 2。行索引对应偏差E的量化值列索引对应偏差变化率EC的量化值都映射到0~6的整数。S7-200的STL支持间接寻址可以用这样的思路实现查表// 假设E_INDEX存入VW10EC_INDEX存入VW12 // 模糊表起始地址为VB1000每个元素为16位整数 LD SM0.0 MOVW VW10, VW20 // 行索引 MUL 7, VW20 // 行偏移 行索引 × 7 ADD VW12, VW20 // 总索引 行偏移 列索引 SLD 3 // 总字节偏移 索引 × 2这里实际用双字移位处理 MOVD VB1000, VD30 // 取表起始地址 VD30, VD20 // 起始地址 字节偏移 MOVW *VD30, VW40 // 读取模糊输出这个片段表达的是STL思路实际使用时要注意SLD指令操作数的位数和间接寻址指针必须用双字变量。如果对间接寻址不熟还有一种土办法用49个比较指令写7×7的查表逻辑程序长一点但逻辑直白我在老设备上甚至见过这么干的稳定可靠只是可维护性差。3.3 PID回路表参数更新与跟踪S7-200的PID向导会生成PID0_INIT子程序回路表参数存在V区包括设定值SP、过程变量PV、比例增益K、积分时间Ti、微分时间Td等。不同版本Micro/WIN生成的回路表偏移地址略有差异调试时务必在Micro/WIN的“状态图”里查看PID向导生成的符号名确认增益和积分时间对应的VW地址。如果采用“参数自整定”路线就得把模糊查表得到的系数转换成实际增益并写回回路表地址。例如基础比例增益Kp_base为2.0模糊系数ΔKp为0.25那么执行指令让新增益等于2.5再写入增益地址。要注意写入的模拟量形式和PID向导要求的格式增益通常是浮点数在V区占4个字节而积分时间可能是整数格式。写错了轻则参数不生效重则PID输出剧烈跳动。如果采用我更推荐的“给定值修正”路线则完全不碰这些参数。只需在调用PID0_INIT之前把“SP_actual”这个变量更新为“SP_base SP_trim”再将SP_actual写入PID向导指定的设定值地址。这样好处是现场维护人员可以用一个寄存器实时观察修正量的变化系统在任何扫描周期都知道自己在干什么。3.4 抗干扰与工程量转换的现场细节S7-200的模拟量输入模块EM231采集称重传感器信号之前一定要加隔离信号或者做好屏蔽接地。称重传感器输出是毫伏级信号现场变频器驱动的强电线路很容易在AIW0上耦合出噪声。常见做法是传感器电缆用双屏蔽线、屏蔽层单端接地PLC柜内加信号隔离器。流量计算有个工程细节容易被忽略皮带秤测的是“每米物料重量”与“皮带速度”的乘积但称重传感器感受到的是整段称重域上的物料总和需要根据有效称重长度换算。例如称重域有效长度1.2米传感器输出的毫伏信号代表1.2米长度的物料总重那么单位长度重量等于总重除以1.2。再乘以当前皮带速度才能得到瞬时流量。这个换算系数做错的话流量显示可能差好几倍。滤波也不能丢。我用的是“限幅滤波加一阶惯性滤波”的两级组合先判断当前采样值与上一个采样值之差是否超过死区阈值超过则认为受到脉冲干扰直接丢弃没超过则进入一阶惯性滤波滤波系数取0.15到0.3之间。太大会让流量响应迟钝太小则滤不掉皮带跳动引起的噪声。这个滤波系数实际上也是模糊控制器采样周期选择的依据。4. 现场调试排障与参数速查4.1 先分清故障来源是称重不准还是控不准电子皮带秤配料系统调试时最容易踩的坑是把控制问题误判成控制参数问题。流量波动大先别急着调PID参数先判断是不是称重信号本身就在波动。一个非常简单的判别方法把给料机设定到固定频率保持手动模式让物料稳定流动然后观察流量曲线。如果手动情况下流量已经很波动那问题在机械或称重侧比如皮带跑偏、托辊粘料、称重传感器受力不均、测速信号不稳。这种情况调PID参数没用越调反而越乱。只有手动状态下流量曲线平稳切换到自动后才出现超调、振荡或长期偏差才值得动PID和模糊控制器的参数。这个排查顺序我建议写进现场调试标准化流程能省掉大量无效工作。4.2 三个高频问题的排查实录第一个高频问题是“投料瞬间大幅度超调”。现场表现为启动配料后实际流量冲过设定值25%以上再慢慢回落。分析过程发现螺旋给料机在给料启动前管内是空的启动后前几秒实际下料量很小PID一看流量不足就拼命加大输出积分快速累积等物料填满螺旋管后下料量突然上来了但PID输出还在高位于是直接冲过头。解决办法有两个层次。第一层是程序层面启动时先给出一个基于物料特性的前馈频率不依赖PID从零开始摸索。前馈值用“设定流量除以给料机标定系数”估算比如标定得到每赫兹对应0.08吨每小时那么设定3吨每小时时前馈频率约38Hz。第二层是模糊修正层面当偏差大且偏差变化率正大时模糊修正量要果断设置为负值提前给PID设定值“踩刹车”。第二个高频问题是“稳态运行周期性锯齿状波动”。流量曲线像锯齿波周期通常几十秒。这类问题多数是纯滞后引起的振荡。我记得有一次排查到深夜最终发现测速滚筒打滑皮带速度信号周期性偏低导致瞬时流量计算值虚高PID误以为下料多了就降输出下料量真的少了之后流量又跌下来形成锯齿波。换掉打滑的测速滚筒并加装防偏挡板后曲线立刻平直。所以锯齿波不一定就是控制参数问题机械因素优先级更高。第三个高频问题是“更换物料品种后调节效果变差”。这几乎一定会出现因为物料堆密度变了同样的螺旋转速下料量就不同。这时模糊控制器的好处就体现出来了不需要重新整定PID参数只需要修改模糊表输出修正量的比例系数或者修改前馈标定系数。我一般在上位做一页“物料特性参数表”每个品种占用一条记录切换配方时自动调用对应的前馈系数、模糊输出比例和PID基础参数省了很多现场干预。4.3 可以抄作业的调试参数速查表在实际项目调试中我习惯先把关键参数定在一个安全范围再根据曲线微调。这里给出我常用的初始参数表复制前记得结合自己设备实际。参数项推荐初始值调整说明PID采样周期1秒给料响应慢可延长到2秒太快噪声大基础比例增益Kp1.2~2.0流量波动大则减小响应慢则增大基础积分时间Ti3~6分钟注意S7-200向导中积分时间单位是分钟微分时间Td0关闭皮带秤噪声多微分慎开模糊表输出比例系数满量程的3%偏差大时上限可放宽到5%偏差量化死区设定值的0.5%防止频繁调节输出限幅高频45Hz避免变频器过载输出限幅低频5Hz或给料机启动频率避开死区前馈标定系数每赫兹对应流量用实物标定或挂码标定获得特别注意积分时间和前期滤波系数的配合。滤波时间常数如果取得大流量信号相位滞后就大PID积分时间要相应加大否则回路上容易产生低频振荡。这是很多工程师调了很久都找不到原因的隐性坑。结尾我最后再聊几句实际经验这套S7-200上的PID模糊控制配料方案我前后在四五个项目里落地过。最大的体会是模糊控制在配料系统里的本质作用不是替代PID而是给PID加了一个“带经验的调校员”。流量偏差大而且还在恶化时它提前修正设定值偏差回到零附近时它主动收手把控制权交还给PID。说白了就是把老师傅的调阀逻辑翻译成了查询表。我的建议是第一次做这个方案的朋友先别追求复杂的模糊推理算法。从给定值修正法入手先把偏差和偏差变化率量化好把49格查询表填上跑通流程再逐步优化规则。S7-200的可编程控制器虽然老但它结构清晰、指令稳定程序写在里面跑十年都不会乱跳对于长期运行的配料产线来说是件好事。还有个小技巧在调试阶段把模糊修正量单独引到触摸屏上显示让操作工能看到控制器“在想什么”。一次我们现场操作工发现流量偏低但修正量一直没起作用原来是他把配方设定值改了但模糊修正的基准值没有联动更新。后来我把基准值改为从配方画面直接读取这类问题再没发生过。调试调试很多时候不是算法不够高级而是现场逻辑没串通。