三菱/西门子PLC与组态王液料混合系统联调实战详解

发布时间:2026/10/15 7:14:30
三菱/西门子PLC与组态王液料混合系统联调实战详解
前阵子接了16#项目名字挺唬人——“三菱/西门子S7-200 PLC与组态王构建液料混合系统探秘”。乍一看这就是教科书里最经典的那类自动化案例可真做下来才发现越是这种“看着经典”的项目坑越是藏在不显眼的地方。项目本身是一套液料混合系统用在某工厂两条水性涂料配料线上。现场情况比较特殊一条线用的是三菱PLC另一条线是老设备改造留下的西门子S7-200中控室要求统一用组态王做上位监控。两种PLC、一套上位机怎么让组态王把两边都稳稳管起来是整个项目最值得琢磨的点。这篇文章我把方案设计、PLC程序思路、组态王组态配置、通信联调顺序和排障经验从头到尾捋了一遍给准备接同类项目的朋友当个参考。1. 液料混合系统到底要解决什么问题1.1 工艺现状与控制需求这个项目做的是水性涂料配料线的基础色浆生产三个原料罐分别装树脂、色浆、助剂通过泵和电磁阀送入一个3m³的主混料釜。主釜带搅拌电机变频调速和夹套式加热/冷却要求按配方把三种料按重量加入搅拌充分后把温度控制在设定范围最后通过放料泵送到下一道工序。甲方原来的操作方式是纯手动人工开关阀门、人眼看着称重读数配方切换时还得重新算量记录靠纸笔。改造目标说起来很朴素自动执行配方、中控室远程监控、超限报警、保留手动模式用于清洗和检修。这类液料混合系统在化工、日化、涂料、水处理、食品饮料行业非常普遍。规模差别可以很大小到几百升的实验釜大到几十吨的储罐配料但控制模式大同小异。核心并不在PID而在顺序控制、计量和互锁。如果没把工艺吃透就闷头写程序后面返工概率极高。我接手项目前专门和甲方工艺员聊了两次把加料顺序、称重精度要求、温度控制精度、批次周期这些关键点全部确认了一遍才敢动笔。1.2 三层控制架构怎么搭按照惯例我把整套系统分成三层现场层、控制层、监控层。现场层包括液位/称重传感器、温度变送器、电磁阀、水泵、搅拌电机、变频器等。控制层就是PLC负责所有逻辑、联锁、PID回路和配方执行。监控层是组态王负责操作画面、实时趋势、报警记录、历史数据和配方参数下发。16#项目特殊的地方在于控制层有两台不同品牌的PLCA线三菱FX3UB线西门子S7-200监控层只有一个组态王工程。组态王通过两个不同的设备驱动分别和两台PLC通信中控室一台工控机同时管理两条线。这个架构本身不复杂但对通信配置和数据点规划要求很高。尤其是两条线的软元件地址如果混用变量一多就容易乱。1.3 为什么选组态王而不是其他上位软件组态王在国内项目里占有率很高尤其是在老厂改造和中小型控制系统里。原因不外乎几点驱动库比较全常见PLC、仪表、板卡的驱动都有现成的画面、报警、趋势、报表功能齐全国内工程师熟悉度高甲方后续自己改画面也容易上手成本上比进口软件有优势。这个项目甲方明确要求用组态王理由是他们厂里另外几套系统都在用维护能统一。如果完全从零选型同等条件下我大概率也会选组态王原因很简单驱动兼容性好、中文资料多、调试周期短。但必须注意组态王的驱动和西门子WinCC、罗克韦尔FactoryTalk这类软件的驱动机制不完全一样有些驱动走串口有些走以太网选驱动时必须和PLC支持的通信方式严格对应后面我会详细说这个事。2. 三菱与西门子S7-200两种PLC的选型思考2.1 两条线的硬件配置方案A线三菱选的是FX3U-48MR/ES外扩一块PT100温度采集模块再加一块FX3U-485-BD做串口通信。FX3U按48点算数字量输入24点、输出24点覆盖阀门、泵、接触器和状态灯基本够了。温度模块接主釜PT100实际用一路另一路留作备用。B线西门子S7-200用的是原来的CPU224 AC/DC/继电器挂一块EM231 RTD模块做PT100采集。CPU224自身带14个数字量输入和10个数字量输出再扩一个EM223数字量混合模块点数也够。这里的选型逻辑要说清楚。A线是全新柜子选FX3U而不是更便宜的FX2N主要考虑温度扩展模块好买、程序容量大、下载调试方便。B线是老线改造原柜里就是S7-200 CPU224拆掉换新成本高而且甲方维修队伍对这个型号特别熟最后决定保留原有PLC只增加组态王上位监控。这种“新旧搭配”在改造项目里很常见关键是通信能不能打通。S7-200的PPI口和组态王的兼容性以及三菱485通信参数怎么设这两块分开处理清楚就行谈不上有多大技术难度但细节决定成败。2.2 编程语言和程序框架的差异三菱和西门子的编程理念差别很大。三菱在GX Works2里写梯形图和STL步进梯形图做顺序控制非常顺手。我习惯用STL把自动流程拆成“加料A→加料B→加料C→搅拌→升温→保温→出料”多个步每步对应一个状态继电器S执行条件满足就跳到下一步可读性和查错性都很好。西门子S7-200用STEP 7 Micro/WIN没有STL这种步进指令顺控逻辑得自己搭状态字和转移条件。我一般用一个字节变量做状态号再用比较指令判断当前状态把每个状态的输出和转移条件写在一个网络里效果等同于状态机。两种写法没有谁绝对好但有一点要提醒如果项目组里同时精通两套软件的人不多建议把两套PLC的程序风格写得尽量接近。不要一台用STL搞得很溜另一台用位逻辑堆成一坨否则后面维护的人看到会非常痛苦。我这次的代做法就是都按“状态机”的思路来写三菱用STL实现西门子用状态字字节实现逻辑一一对应这样联调时对照着查也方便。2.3 通信协议三菱和S7-200根本不是一回事这一节必须重点讲。三菱FX3U串口通信走的是三菱计算机链接协议帧格式、地址映射规则和西门子完全不同西门子S7-200串口走的是PPI协议PPI是主从式令牌环协议上位机作为主站轮询PLC作为从站应答。两种协议在组态王里对应完全不同的两个驱动设备地址规则也不同。组态王添加I/O设备时三菱要选“三菱FX系列编程口”或对应的串口驱动西门子要选“西门子S7-200 PPI”驱动。如果现场工控机有两个COM口建议一台PLC一个COM口互相不干扰。如果非要共用一个COM口前提是全部设备用同一种协议、波特率一致、通过站号区分。但三菱和S7-200协议不同绝对不能共用同一条485总线这是硬约束。另一个容易忽略的是接线定义。三菱485-BD端子和S7-200通信口虽然都是RS-485但引脚定义不一样。三菱用的是RDA/RDB、SDA/SDB、SG五根端子S7-200是DB9针座的3脚B、8脚A-。转接头必须分别做不能通用。很多人第一次做双品牌混接就是栽在这个细节上。3. PLC程序设计与关键逻辑实现3.1 I/O点表与现场接线我先列一个典型的I/O分配以A线三菱为例数字量输入A/B/C罐低液位各1点主釜高液位1点搅拌电机热过载1点变频器故障1点手/自动切换1点启动按钮1点停止按钮1点急停1点总共13个输入点。数字量输出A/B/C进料电磁阀各1点主釜放料阀1点搅拌电机接触器1点循环泵接触器1点加热接触器1点冷却水电磁阀1点声光报警1点总共9个输出点。模拟量输入三个原料罐称重传感器4-20mA信号3路主釜PT100温度1路变频器转速反馈1路总共5路模拟量。B线S7-200的点表结构基本一样只是地址不同。接线时特别注意输入公共端的形式三菱FX3U是漏型输入输入公共端COM接0VNPN型接近开关正好匹配S7-200 CPU224输入公共端根据源型/漏型组态接L或M如果用PNP型传感器公共端接法又不一样。传感器类型选错轻则信号不过来重则烧输入点。现场电工师傅在这方面出过好几次问题最后是我逐条核对图纸才确认。3.2 手动/自动控制框架与双线圈问题自动模式执行配方流程手动模式用于清洗、检修和应急操作。两种模式切换必须做互锁。我的做法是用一个内部继电器M100作为“自动运行标志”手动模式下自动流程输出全部被禁止自动模式下画面上的手动按钮被禁用。这里必须强调“双线圈”问题。同一个输出点绝对不允许在手动程序段和自动程序段各写一次线圈。PLC扫描是从上到下执行的最终输出状态由最后一次扫描结果决定一旦双线圈就会出现“手动能开、自动关不掉”这种诡异现象。正确做法是手动逻辑和自动逻辑分别写到中间继电器M最后在输出段统一用中间继电器变量驱动实际输出点。一句话输出线圈在程序里只出现一次所有控制逻辑都走中间变量。3.3 配方表与加料顺序控制配方数据统一放在PLC的保持寄存器区。三菱用D510到D540这一块断电保持区D510存配方号D511存A料目标重量D512存B料目标重量D513存C料目标重量D514存搅拌时间D515存目标温度。西门子用V区比如VW200开始存配方参数。组态王画面直接读写这些寄存器操作员改完参数点“下载配方”PLC对应内存立即更新。加料方式我采用了“称重计量同时加料”策略。三个原料罐下方都有称重传感器主釜重量实时变化程序对A/B/C三个阀的控制不是简单的“先开A等达到再开B”而是不断比较“当前重量”和“目标重量”的差值哪个没到就开哪个阀到了就关哪个阀。这个策略有个前提工艺允许哪种料可以同时进。16#项目里配方1要求先加A再依次加B、C配方2允许A和B同时进C最后进。为了兼容两种模式程序里做了一个“加料完成字”M20、M21、M22分别记录三种料各自的完成状态三个都完成后统一进入搅拌步。这样一个程序支持顺序加料和并行加料换配方只需要改目标重量参数不用改控制逻辑。三菱STL伪代码大致是这个思路STL S21 // 加料步 OUT Y001 // A进料阀 LD M20 // A已完成 AND M21 // B已完成 AND M22 // C已完成 SET S22 // 进入搅拌步 STL S22 ...实际程序里还要处理称重传感器信号抖动、阀动作滞后等细节但整体框架就是“配方参数区加料完成状态状态步进”简单且可靠。3.4 温度控制与PID参数初调主釜温度控制在3545°C范围加热用夹套电加热冷却用循环水电磁阀。单纯用位式控制到了就停容易出现温度和设定的反复震荡。这里用了PID时间比例控制PLC的PID输出值经过换算映射成加热接触器在固定周期内的导通占空比。比如PID输出50%在一个60秒周期内加热30秒、停30秒输出小于5%时直接不加热大于95%时全速加热。三菱FX3U用PID指令西门子S7-200用PID向导生成子程序两条线分别调参。我的初调经验是先把积分时间设大50秒以上微分关闭比例增益从10到15起步用50%左右的手动输出把温度稳定在目标附近再切自动观察超调。如果温度曲线在目标上下反复就降低比例增益或加大积分时间如果响应太慢就加大比例增益。16#项目最后的参数是比例增益18、积分时间35秒、微分时间0配合5%死区温度稳定在±1°C以内。这里有个重要提醒普通接触器频繁通断很容易坏PID占空比周期如果太短接触器每分钟通断几十次寿命直线下降。我把加热输出改成了固态继电器周期设为60秒用了几个月都没问题。如果柜子里已经装了交流接触器那PID周期至少要设90秒以上并且程序里要加最小导通时间限制避免输出小于某个阈值时接触器还在高频通断。4. 组态王监控系统的搭建4.1 添加设备驱动与通信参数匹配组态王工程浏览器左侧树里在“设备”节点下新建I/O设备。A线三菱选择“三菱FX系列编程口”驱动设备地址填PLC站号B线西门子选择“西门子S7-200 PPI”驱动。每台设备单独指定COM口。工控机如果只有两个COM口就一台PLC占一个COM口互不干扰。如果必须要共用协议和波特率必须一致并且用站号区分从站但三菱和S7-200协议不同这条直接不成立。所以我在采购清单里多要了一个多串口卡工控机上装了4个串口两个给PLC一个留作备用一个给后续的仪表调试。通信参数以三菱485-BD为例PLC侧D8120设置9600波特率、8位数据、偶校验、1位停止位站号通过D8121设置比如设站号1。组态王驱动里也要选对应波特率和校验方式。S7-200侧在STEP 7 Micro/WIN的通信设置里把波特率设为9.6k或19.2k组态王的PPI驱动也要对应设备地址默认2按CPU的系统块设置保持一致。两边参数只要错一个组态王里的“通讯测试”就不可能通过。4.2 变量字典的规划与映射变量命名是组态王项目里最容易翻车的点。16#项目有几十个I/O变量不规划好画面做到一半就分不清哪个是A线的阀、哪个是B线的泵了。我的命名规则是“线号_位置_类型_含义”比如A_MainTempA线主釜温度A_Level_AA线A罐液位A_ValveBA线B料进料阀B_MixRunB线搅拌运行状态B_RecipeNoB线当前配方号组态王里定义I/O变量时寄存器地址直接对应PLC软元件地址。三菱D511对应A线A料目标重量西门子VW220对应B线B料目标重量。数据类型统一用SHORT或FLOAT读写属性按用途区分配方参数设置成读写运行状态设置成只读防止误发数据。有一个细节值得单独说组态王和S7-200的寄存器地址映射规则。S7-200的V区变量VW200在组态王驱动里对应的寄存器地址写法不同驱动版本可能不一样有的是V200有的是显式字节地址。一定要看驱动帮助文档别想当然填地址否则读上来的数据完全是错的。这个坑我当年踩过调了半天以为是PLC程序有问题最后发现是寄存器映射差了一个字节。4.3 操作画面与动画连接主画面仿照工艺流程图来画三个原料罐在左侧主混料釜在中间管道和阀门串起来右侧是操作按钮和数据框。组态王图库自带阀门、泵、电机、罐体等图元直接用就行再配合颜色动画连接和水平填充实现液位变化。具体来说A罐液位对象在动画连接里选“填充”表达式连A_Level_A范围设0%到100%。阀门开状态用颜色动画连接变量为对应阀开关量开是绿色关是红色。运行状态灯用隐含连接控制。按钮部分要特别注意。启动和停止按钮要关联PLC内部继电器地址比如“自动启动”对应三菱M101写入值1。如果PLC程序里对这些M是自保持置位逻辑组态王按钮就要用“置位/复位”或“切换”的方式操作得和PLC逻辑配合好否则会出现按钮按了没反应或者状态卡住的假象。我在项目里花了不少时间校准这些操作方式最终采用了“按下时置1、弹起时置0”的脉冲型按钮PLC侧配合上升沿触发启动命令两边配合默契。4.4 报警、趋势与报表配置报警分两类。第一类是PLC侧检测的现场报警比如液位低、温度超限、电机故障、变频器故障。这些故障信号进入PLC后通过内部继电器映射到组态王变量在组态王里做“开关量报警”。第二类是组态王侧的变量报警直接在数据词典里对液位、温度变量设置上限、上上限、下限、下下限报警阈值。报警消息统一显示在报警窗口同时可以驱动声光报警器。历史趋势曲线用组态王的“历史趋势曲线”控件关联温度、液位、PID输出等关键模拟量变量。时间轴可以回放分析配方执行过程时非常有用。批量报表我用的是组态王自带报表窗口每批次结束后把配方号、各料实际重量、搅拌时间、出料温度等变量写入报表行再定时导出EXCEL给生产部。这套报表虽然简单但对这个规模的生产管理已经完全够用不用额外花钱上MES。5. 通信联调顺序与问题排查实录5.1 先单机后联机别一上来就开满画面联调顺序直接影响排查效率。我现在的固定做法是四步走第一步PLC本地程序模拟调试不接组态王把手动、自动、报警逻辑全部跑一遍。这一步能过滤掉绝大多数程序本身的问题。第二步用串口测试工具确认COM口、线缆和设备物理连接通畅。第三步在组态王里建一个测试画面只放两个文本显示当前值比如三菱D515和西门子VW220能刷出正确数值后再继续。第四步逐步把主画面、配方画面、报警画面挂上来。这个顺序的核心目的是把通信问题和画面问题彻底隔离。一旦后面出问题能快速定位是通信问题还是组态问题。很多人直接做完所有画面再联调最后虽然通了但整个过程糊里糊涂出了故障也说不清原因。5.2 三菱线的串口通信要点三菱FX3U接485-BD时端子RDA/RDB接485转换器的A/BSDA/SDB要看是4线还是2线模式。很多485-BD默认是4线模式但组态王驱动走的是半双工轮询实际上用2线模式对接更简单。具体做法是把RDA和SDA短接RDB和SDB短接再接485转232/485转换器的A和B。通信参数要两边严格一致。PLC侧D8120设置波特率9600、偶校验、8数据位、1停止位站号D8121设置成1。组态王设备参数里的站号也必须设为1。这里很容易犯迷糊的是站号初始值不同驱动默认站号可能不同务必和PLC实际设置核对。我遇到的另一个现实问题是485总线的终端电阻。早期没有加终端电阻通信偶尔乱码尤其是温度变送器频繁刷新数据的时候。后来在工控机侧和PLC侧总线两端各加了一个120Ω终端电阻问题基本消失。如果有条件再用双绞屏蔽线并单端接地抗干扰能力会更好。5.3 西门子S7-200的PPI通信要点S7-200 CPU224自带一个PPI口默认站地址2波特率9.6k。电脑端通过编程电缆或USB-PPI线连接组态王的驱动直接走这个PPI口。这个过程中有一个必须注意的点组态王的S7-200驱动是主站PLC是从站同一时间内不能有另一个主站占用这个通信口。如果调试电脑上的STEP 7 Micro/WIN软件还连着这条线组态王就抢不到总线通信会断断续续。所以用组态王联调时要么拔掉编程电缆要么把Micro/WIN彻底关闭。如果总线上还挂了其他智能仪表要保证所有从站地址不冲突并且组态王驱动的超时时间要适当放宽。某个从站无响应时整条轮询链路会被拖慢画面数据刷新就会变慢。S7-200的总线末端同样建议加终端电阻PPI口的3脚是B8脚是A-接线时注意方向。5.4 通信故障速查表我把调试中的典型问题整理成一张表直接可以对照排查故障现象可能原因排查步骤组态王设备节点显示“通讯失败”COM口选错、波特率不一致、485极性接反、转换器没供电先用串口工具看有无数据帧再逐项核对D8120或系统块设置数据能显示但不更新站号不对、PLC忙、变量采集周期过长核对站号把采集周期从1000ms临时改成200ms测试偶发乱码和掉线485屏蔽层未接地、无终端电阻、变频器干扰屏蔽层单端接地加磁环换带光电隔离的485转换器按钮操作没反应中间变量地址映射错、PLC没有自保持逻辑、写入类型不匹配在组态王里做一个测试按钮固定写M0看PLC端是否变化读上来的重量数值抖动称重传感器模拟量未滤波、动力线与信号线同槽PLC程序里对模拟量做多次采样平均检查信号线屏蔽与敷设规范这个表看起来简单实际排查时每一条都能讲半小时。尤其是变频器干扰我这次项目中真实遇到了后面单独说说。6. 项目实施中的经验与避坑总结6.1 现场踩过的坑和解决办法第一个坑就是变频器干扰。搅拌电机用变频器驱动485通信时不时掉线组态王画面一会儿显示故障一会儿恢复。排查过程很有代表性把变频器停了通信立刻稳一启动变频器问题就回来。最后处理方式是给485通信线换双绞屏蔽线、屏蔽层单端接地、通信线套上磁环再把485转换器换成带光电隔离的型号问题彻底解决。变频器功率大、通信线缆长的时候这个干扰问题特别典型别指望程序能解决必须在硬件层面处理。第二个坑是称重传感器的零漂。连续生产一段时间后称重值会有一点点偏移如果不做去皮和标定配方精度会受影响。我在PLC程序里加了去皮和零点校正功能配方画面上放了一个“去皮”按钮操作员一键完成。这里也提醒一下去皮逻辑尽量放PLC里不要放组态王脚本里。万一通信中断脚本执行不到称重偏差会一直存在而PLC本地执行则可以保证任何时候操作都有效。第三个坑是配方断电丢失。最初我把配方参数只放在普通D区断电后全部恢复出厂值。第二天操作员上班发现配方全没了直接打电话投诉。后来把配方参数全部放到断电保持区三菱D512到D540默认是保持区同时在组态王数据库里保存一份配方参数PLC重启后一键写回。这个功能强烈建议加上成本很低但能省掉大量麻烦。6.2 给同行的一些建议做液料混合这种项目工艺永远是第一位。拿到需求别急着写程序先问清楚加料顺序有没有要求能不能并行加料物料称重是累计还是差量温度是升到就停还是要PID稳这些直接决定PLC程序框架。还有施工阶段多拍照记录调试时查线能省半天时间。调试工具也要备齐。一个带隔离的485转USB转换器、一个串口调试助手、一块万用表、一台带原生串口的工控机或笔记本这些缺一不可。没有串口工具的笔记本加USB转串口线也可以但兼容性要提前确认。6.3 后续扩展方向这套系统的扩展空间其实不小。组态王可以开Web发布让生产部在办公电脑上也能看实时状态。PLC加以太网模块后组态王可以走TCP/IP通信速度和稳定性比串口更理想。以后如果上MES组态王的历史数据和变量都可以通过ODBC导出到数据库。我在16#项目里预留了20%的I/O余量后续增加设备也不用换PLC。最后分享一个个人习惯每个项目收尾后我都会把PLC程序备份文件和组态王工程文件一起归档在工程里放一个“项目说明”页面写清楚设备型号、I/O清单、通信参数、供电方案、调试日期。这个页面以后维护的人会特别感谢你因为大多数现场故障排查第一步就是要找这套资料。做项目不容易能把细节留给后来人也算是对自己劳动成果的一种交代。