
做工业自动化的朋友应该都有体会称重配料这套东西看着不复杂真正做起来坑特别多。我在现场调试过十几套基于西门子S7-200 PLC的配料系统从最简单的单料斗单物料到十几种原料、带配方的自动配料系统都碰过。今天这篇就把我这些年积累的套路和心得整理出来标题叫“傻瓜式”是因为这篇文章的目标是让刚入门的朋友能照着步骤做出一套能稳定运行的配料系统而不是光看一堆概念。所谓的称重配料就是把多种原料按照设定好的比例和重量分别计量然后投入到搅拌设备或者料斗里混合。小到食品厂配料大到混凝土搅拌站、橡胶密炼、玻璃配方原理都是同一套逻辑。S7-200虽然停产多年但存量市场的设备量极其庞大我在很多代工厂里见过2010年前后装的S7-200配料系统至今仍在昼夜运行。对于做项目维护和新旧系统改造的工程师来说掌握这套技术依然是实打实的手艺。这篇文章我不讲虚的直接把系统怎么搭、程序怎么编、现场怎么调、坏了怎么查一条条拆开讲。1. 称重配料系统整体设计与方案选型1.1 系统架构与工作原理先讲讲整体链路。物料储存在储料仓里仓底安装螺旋给料机或者气动蝶阀下面挂着一只计量料斗料斗通过吊杆或压脚方式安装在称重传感器上。当一套配料循环开始时PLC根据配方打开对应物料的给料阀门物料进入计量斗计量斗的重量通过传感器输出毫伏级差分电压信号送到称重变送器——它负责给传感器供桥压、做放大和线性化最终输出标准的4-20mA电流信号。电流信号再进到PLC的模拟量输入模块EM231被转换成数字值PLC通过这个数字值判断当前重量控制给料和放料。链条的末端是触摸屏或按钮面板负责配方录入、参数修改和状态监控。从软件角度看配料系统的核心就三件事读重量、判流程、控阀门。读重量考验模拟量处理和标定的功底判流程考验状态机和逻辑设计控阀门则考验时序和参数的精细化调校。三件事都不复杂但组合在一起就会产生各种细节问题。比如模拟量读数漂移一点结果配出来的料重量就偏差几百克阀门关慢半拍前面辛辛苦苦调的落差补偿全部白搭。所以系统设计一定要从整体出发先把硬件链路选型定好再写程序。1.2 硬件配置选型硬件选型直接决定系统能跑多久、多稳。我列一张我自己常用的一套配置表这套配置适合大多数中小型配料系统你可以根据自己的现场条件替换部分组件。组件推荐型号说明控制器S7-200 CPU226 DC/DC/DC程序存储大支持扩展性价比高模拟量扩展EM231 4AI12位分辨率4路4-20mA够用称重变送器杰曼GM8802 / 奥恒等支持供桥电压可调、线性补偿称重传感器桥式传感器3只或4只均布量程按料斗自重物料最大重量1.2~1.5倍选触摸屏威纶通TK6071iQ 或 TD400C威纶通做配方方便TD400C省成本CPU为什么用226而不是224主要看程序容量和扩展能力。配料系统通常还要挂触摸屏、管几个报警灯和模拟量模块CPU226的程序存储区更大将来加配方也不至于写不下。当然如果只是单物料的一个小称重斗CPU224XP自带两路模拟量输入连EM231都能省掉。但要注意224XP自带的模拟量输入精度和EM231有差别对精度要求高的场合不建议省模块。变送器和传感器这里多说两句。传感器的量程选择要按计量斗自重加最大物料重量的1.2到1.5倍来选称重系统经常出现的问题是量程选小了料斗满料时传感器输出饱和非线性误差会明显放大。如果现场是粉体物料还要额外考虑除尘风机的抽力对传感器的干扰——这个后面故障章节单独讲。1.3 为什么是S7-200老平台的价值与取舍我知道现在很多人会说S7-200都停产了还不如学S7-1200或者1500。这话放在新项目上我完全同意但如果你的工作场景是存量设备维护、中小型工厂改造S7-200在很长一段时间内仍是绕不开的存在。原因很简单第一存量设备多二手配件和兼容模块便宜第二编程软件Micro/WIN操作极其简单梯形图写起来流畅第三S7-200的定时器和比较指令用起来比新平台灵活调试方便。我也做过不少把S7-200系统升级成S7-1200的改造项目。说实话对于点对点控制的配料系统1200带来的提升主要体现在通信和在线监控上核心控制逻辑反而没有本质差别。所以如果你现在拿到的是一个S7-200的项目别急着否定这套老平台把配料逻辑跑通再说。这就像很多人还在用机械手表一样不是因为走时最准而是稳定可靠、足够用。2. 核心细节解析与实操要点2.1 模拟量信号的接入与工程量转换模拟量这一环节是所有称重配料问题里最容易出岔子的地方。S7-200的EM231模块12位分辨率对应0-20mA的读数范围是0-32000。大多数变送器输出4-20mA所以4mA对应数字量640020mA对应32000。这个6400对应的就是称重下限0kg32000对应上限满量程。转换公式就一句实际重量 当前读数 - 6400÷32000 - 6400× 量程上限。举个例子量程是500kg变送器输出正好10mA这时AIW读数为16000。算一下(16000-6400)/25600×500 9600/25600×500 187.5kg。如果你在现场看到PLC里的重量值明显不对先拿这个公式手算一遍判断是程序换算问题还是信号本身的问题。这里有个新手容易踩的坑S7-200的整数运算范围有限AIW读数是16位数据直接参与乘除法容易溢出。我的习惯做法是先把AIW转换为实数再计算。指令序列大概是这个顺序先用MOVW把AIW0存到VW区再用I_DI转成双整数然后DTR转实数接着减掉6400.0乘以量程上限最后除以25600.0。结果存在VD区。这样每一步都是32位浮点中间结果不会溢出。注意VD区是4个字节一个浮点数占一个VD。编写程序时不要让不同的VD地址重叠特别是程序里又要存整数又要存实数的时候很容易写混。滤波处理也很关键。S7-200的模拟量输入如果不做软件滤波读数会跟着现场电磁干扰轻微跳动。我的做法是在定时中断里采样然后取平均值。比如每100ms采样一次连续取10次求平均作为当前重量用于判断。这样能滤掉大部分高频噪声代价是响应会慢零点几秒对配料流程完全没影响。2.2 标定的关键从传感器到PLC的完整链路无论你用什么变送器标定都绕不开这三步零点标定、量程标定、PLC系数换算。很多人只做前两步忽略了PLC里还有一个换算关系结果系统挪到另一个现场就测不准。现场实际标定流程我一般按下面这个顺序走空斗状态下先让传感器和变送器通电预热至少15分钟等输出稳定。在变送器上做调零让输出为4.000mA。如果变送器有数字显示直接显示当前重量为0即可。放标准砝码或者用已知重量的物料用高精度秤先称量好调整变送器增益让输出对应满量程的80%-90%。回到空斗状态确认零点没有变化再放砝码确认量程来回调两三次。记录PLC当前AIW读数这个值就是后续工程量换算的重要参考。这里要注意变送器上的调零和调满会互相影响需要来回调两三次才能稳定。调满时最好用满量程的80%-90%砝码而不是满量程留出余量。如果现场实在没有砝码可以用替代标定法先拿地磅或高精度秤称好一定量的物料投到料斗里记录AIW变化量。这样做出来的精度取决于替代物的计量精度一般±0.5%以内没问题但如果你要的是高精度配料还是老老实实借砝码。还有一个特别容易忽略的点接线端子。称重信号是毫伏级信号接线端子接触不良或者氧化信号就会在温度和湿度变化时漂移。新装系统时我习惯直接建议客户用镀金端子或者干脆焊接能省掉后期非常多莫名其妙的漂移排查。2.3 飞料补偿与落差修正配料系统的控制精度比拼的不是谁程序写得花哨而是谁把“飞料”处理得好。所谓飞料就是关阀门瞬间从给料机出口到料斗物料堆积面之间还有一段悬空的物料。阀门关断了这段物料还会继续落入料斗导致实际重量大于关阀时的指示重量这个差值就是落差。落差的危害在于每次配料可能还不一样。螺旋给料机因为物料密度变化螺旋输送的每一转的输送量都在波动所以要靠“提前量”来补偿。提前量就是编程时设一个比目标重量小的停止值等重量到达这个值时关阀利用空中那一段物料正好补到目标值。提前量的确定我的经验做法是先用空斗做三到五次试料每次都记录目标值和实际值算出平均偏差作为初始提前量。写入PLC后再连续跑十次观察超差趋势。如果正负偏差分布均匀说明提前量基本合适如果系统性地偏重就加大提前量偏轻则减小。就这么微调到±0.1%以内不是问题。配合提前量还有一招是快慢加切换。把快加和慢加分开重量达到目标值的85%时关掉大阀门开启小阀门或者给料机降频用低速小流量的方式把剩余一小撮料慢慢补进去。这样能大幅降低飞料的影响。快慢加切换需要单独设定切换阈值阈值要是太早了配料周期变长太晚了慢加时间不足精度变差。不同系统我建议先在触摸屏上把切换值做成可调的现场根据试料结果微调。物料形态对参数的影响也很大颗粒状物料流动性好落差异常稳定粉体物料会因为扬尘和架桥导致给料不均匀液体物料要关注起泡和挂壁。不要指望一组参数走天下每次换物料品种以后都要重新做一次试料确认。这些都是我在现场吃过亏换来的经验别想着偷懒。3. 实操过程与核心环节实现3.1 梯形图程序结构设计一套能稳定跑的配料程序我的建议是采用“主程序子程序定时中断”三层的结构。主程序负责整体调度子程序按功能拆分定时中断负责定时采样重量。先说定时中断。S7-200支持定时中断典型做法是设SM35中断每100ms读取一次AIW做数字滤波后存到VD区。为什么要定时采样而不是在程序扫描中不断采样因为模拟量信号有波动如果每次扫描都读电机启停、阀门的电磁冲击都可能把瞬时值放大容易造成误判断。定时采样再配上平均值滤波就能滤掉大部分噪声。滤波参数的选择我有一些经验如果现场电磁干扰严重采样周期可以放大到200ms甚至500ms但配料周期会相应拉长。一般配料精度要求±0.5%时100ms采样加10次滤波已经完全够用。如果你发现重量显示还是跳先检查变送器输出是不是本身就波动再考虑加大滤波。程序滤波治标不治本硬件的干扰源还是得源头处理。然后是状态机的实现。我习惯用字节变量MB100作为状态字每个值代表一个步骤0表示空闲1表示快加2表示慢加3表示延时稳定4表示放料5表示完成。主程序里只需要判断状态字跳到对应子程序而子程序只处理当前状态下要做的事。这种做法的最大好处是逻辑清晰。现场调试时通过触摸屏看到状态值就知道整个流程卡在哪里排查效率高得多。给一段核心判断逻辑的梯形图思路。比如在状态1里LD 启动按钮 S MB100, 1 // 进入快加状态 LD MB100, 1 // 状态为快加 A 重量VD100 慢加切换VD204 Q0.0 // 开快加阀门 LD MB100, 1 A 重量VD100 慢加切换VD204 Q0.1 // 开慢加阀门快加阀门在下一个扫描周期被关闭 LD MB100, 1 A 重量VD100 停止值VD208 M0.0 // 触发状态切换标志这段只是示意实际操作时要加上阀门互锁、报警判断和状态切换的边界处理。比如快加阀和慢加阀不能同时开状态切换时要把当前状态清零再赋值避免逻辑冲突。3.2 配料主流程的状态机实现配料主流程我用文字完整描述一遍然后我们拆开讲。按下启动按钮系统先做一次清零自检重量偏移过大时报故障报警然后进入状态1快加。大给料阀门打开物料快速进入计量斗重量快速上升。当重量到达慢加切换值跳到状态2慢加大阀门关闭小阀门打开物料流量变小。当重量到达停止值目标重量减提前量跳到状态3延时稳定所有阀门关闭等待2-3秒让料面平稳。稳定后PLC记录实际重量并存入批次数据进入状态4放料。打开放料斗阀门计量斗排空当重量回到空斗基准值附近比如低于空斗零点加10kg就关闭放料阀回到状态0一个批次完成。每个状态切换都要套用一些保护逻辑。比如状态1快加持续超过设定时间但重量却没怎么上升多半是给料机堵了或者料仓空了这时候要报警停机不能傻等。再比如放料状态下如果长时间重量不下降说明放料阀堵了或者物料架桥也要报警。我给这些报警都加了单独的M继电器触摸屏上做指示灯方便现场人员第一时间知道哪里出了问题。对于多物料配料核心就是按照配方顺序一种物料配完再配下一种。每次配完一种物料都要等计量斗放空、重量归零后再进入下一种物料。为了保证效率很多场景可以合理利用重叠加料通道比如物料A和物料B互不影响可以在A慢加阶段就打开B的快加阀。但新手不建议上来就做重叠先把单物料状态机跑稳再说。重叠加料调试时最怕两种料交叉污染或者同时进料导致料斗过载。还有一点配料的批次累计和产量统计。我通常会把每批实际重量累加存到VD区同时记录配料次数和报警次数触摸屏上显示。这个在维护和生产统计时特别有用。比如生产报表要统计每班投了多少料直接看累计值就行不用再去车间数袋子了。3.3 配方管理与参数设定配方管理看起来高大上实际就是给每种物料设定几个数目标重量、慢加切换值、提前量、放料延时。S7-200没有专门的配方数据块我们就用常规的V区来存。我常用的配方区布局是这样的从VD200开始每12个字节存一组配方数据分别对应物料1目标值、慢加切换、提前量。第一组放在VD200、VD204、VD208第二组放VD212、VD216、VD220依次类推。VW100存放当前配方号。程序里根据配方号计算偏移地址用指针去访问。不熟悉间接寻址的这里给一个最简单的写法如果配方号存在VW100先把配方号转成双整数再乘以12得到偏移量然后加配方区首地址VB200结果存到AC1指针寄存器。最后用MOVD *AC1, VD500把对应配方中的目标值取出来。S7-200间接寻址只支持字节、字、双字注意指针对齐别把偶数地址写成奇数了。HMI方面威纶通触摸屏连S7-200时在组态软件里选PLC类型为Siemens S7-200通讯口选RS485PPI协议波特率设置一致通常9600或19200。变量地址直接写V区的绝对地址就可以PLC端不用额外写通信代码这是PPI协议最大的方便。威纶通里一个32位浮点数变量占两个字地址写地址的时候注意不要和旁边变量冲突了。需要特别提醒配方数据写V区时最好用浮点数的变量格式而且现场调试时触摸屏写配方要时刻注意是不是把整数和浮点数格式写混了。这个坑我踩过好几次触摸屏上填的神智数据显示都对PLC一读取运算就是天文数字。因为触摸屏数据类型选的是16位整数而PLC里读的是32位浮点数据字节顺序完全对不上。如果预算少、想省触摸屏也可以用文本显示器TD400C配Micro/WIN里的文本向导就能完成但只能显示固定格式的文本操作体验不如触摸屏。再节省的话干脆用按钮和数码管做面板逻辑全在PLC里那又要多写一坨手动和自动切换的代码得不偿失。能用触摸屏就尽量用无论是调试效率还是后期维护便利性触摸屏多出来的成本都能赚回来。4. 常见问题与排查技巧实录4.1 称重不准的典型原因下面这些都是我在现场实际踩过的坑每一项都有血有泪。处理器称重不准先别急着怀疑PLC大部分问题出在传感器和机械结构上。第一个问题是传感器信号漂移。表现是空斗时重量数值会在几公斤到几十公斤之间缓慢变化。十有八九是传感器进水受潮了或者电缆屏蔽层破皮搭到了外壳。排查方法很简单用万用表测传感器的输出桥电压和信号线对地绝缘电阻正常应该在几千欧以上低于这个就要换传感器了。传感器这东西是耗材不要心疼该换就换。第二个问题特别隐蔽计量斗被机械结构卡住。料斗的吊杆如果碰擦了周围的护栏、软连接管路或者传感器底座下面的减振垫被压死重量就不准了。这个在查找时一定要用手去推料斗观察重量有没有变化。通常推一下波动超过10kg就说明有机械干涉。配料斗周围经常有除尘管道、进料软管、放料阀这些都可能在不经意间把力传给计量斗。第三个是除尘风管的抽力。粉体配料系统最爱出这个问题除尘风机一开计量斗内负压增大相当于传感器上附加了一股向上的力导致读数偏小。对策是使用带补偿波纹管的软连接或者把除尘风量做自动调节在配料最后阶段减小抽风。我记得有一家塑料改性厂他们每批料都偏少2kg左右查了一个星期最后才发现是除尘管道压住了计量斗的波纹软管改完管道就正常了。第四个是粘料。沾在斗壁上的粉体越积越多皮重越来越大。解决办法是定期清零或者在程序里做一个“零点自动跟踪”功能在放料完成的空闲状态如果重量在空斗基准值±一个小窗口内就自动把当前值刷新为空斗基准。这样能很大程度缓解粘料造成的漂移但定期人工清理还是跑不掉。4.2 通讯与干扰问题触摸屏连不上PLC排在第一位的原因就是地址和波特率不匹配。威纶通默认的站号往往和PLC的PPI地址不一致S7-200的PPI地址默认是2两边必须一致。地址改通以后如果还是闪断多半是RS485的AB线接反了或者线缆没接屏蔽。这里有个经验通讯线要用带屏蔽的双绞线屏蔽层在PLC端单端接地而且绝对不要和动力线走同一个线槽。还有一类干扰不表现成通讯失败而是模拟量波动。通常出现在有变频器的柜子里变频器的开关噪声会通过公共地线干扰EM231。对策是模拟量信号电缆单独屏蔽、变送器用隔离型、PLC和变送器分别供电或者把AIW读数做数字滤波。很多客户起初不理解为什么要多花钱买隔离变送器等现场出了问题就知道那个钱不能省。我曾经处理过一个案子现场配料重量偶发跳动正负20kg怎么查都查不出来。最后发现是PLC旁边一台工频焊机每次点焊时产生强烈的电磁脉冲干扰。加了一个隔离变送器、把柜门关严问题解决。这种事在工厂里很常见排查干扰要往源头去挖不要只盯着PLC。拿着示波器去看AIW读数的波形比在程序里瞎猜快得多。4.3 常见故障速查表下面这张表是我多年的调试和维护笔记整理出来的可以保存下来对应排查。故障现象原因分析处理方法重量读数恒定不变变送器未供电或EM231通道损坏用万用表测信号线和模块通道重量显示为满量程跳变信号线断线或接线端子松脱重接信号线检查端子实际重量总是偏大提前量偏小空中物料补过头增大提前量实际重量总是偏小提前量偏大关阀过早减小提前量配料过程中重量倒退机械卡阻或除尘抽风突变检查机械连接和除尘风量触摸屏时而断线PPI地址冲突、线缆干扰检查通讯设置和布线配方无法写入浮点格式和整数格式错乱检查数据类型和地址长度放料后重量回不到零点粘料严重或放料阀未关严清理料斗检查阀门速查表是经验总结但真正排查时还是要按“先看机械、再看电气、后看程序”的顺序来。程序里查不到问题的时候多半是外部干扰或机械问题。我见过太多人程序里反复调参结果是气缸漏气或者螺丝松了这个教训值得记下来。另外提醒一句调试阶段养成一个习惯每次改参数都记录到调试笔记上。S7-200的V区是掉电保持的你今天改的参数明天还在如果没有笔记到了现场两眼一抹黑。我甚至见过有人在现场改了十几次配方参数最后自己都忘了哪个值对应哪批试验。工欲善其事必先利其器一个简单的Excel表格就能避免很多麻烦。我现在做配料项目第一步永远是先确认现场的基础条件传感器稳不稳、料斗有没有卡死、接线牢不牢靠。基础条件不达标程序写得再好也无济于事。S7-200这套平台虽然老但只要基础工作做扎实它的稳定性和控制精度足够撑起一条中小型产线的配料需求。最后分享一个小技巧给系统做权限分级。把配方参数和维护参数分开操作员只能改目标重量工程师才能动提前量和快慢加切换值。很多时候不是程序不好用而是现场人员乱调参数把系统调乱了。加一层保护运维烦恼能少一半。踩过几次坑之后我现在每套系统出厂前都会把权限分好这也是这套“傻瓜式”流程里最容易被忽略却很重要的一环。