1. 项目概述这套系统到底在做什么一个朋友问我说手头有个三水箱供水系统的项目用PLC和触摸屏来做设备已经拉起来了但调试了两天总感觉哪里不对劲要不就是液位到了不动作要不就是触摸屏偶尔弹出通讯报警想让我帮忙捋一捋思路。我当时就说这类系统别急着改程序先把控制流程和变量表捋清楚问题基本就解决了一半。所谓三水箱供水系统说白了就是三个水箱按顺序配合完成来水—存储—分配的过程。常见于楼宇供水、小型水处理装置、实验室设备甚至不少教学实训台也是这个结构。它一般由三个水箱组成通常叫一箱、二箱、三箱三个箱子之间有管道连接通过水泵和阀门控制水流方向PLC负责整个流程的逻辑判断触摸屏则作为操作员窗口完成启动、停止、参数设定、状态监视和报警记录。这篇文章不是教科书式的原理讲解而是一份实打实的调试手记。我会把方案设计、PLC程序结构、触摸屏变量映射、通讯参数、现场抢修经验全部摊开来讲。适合三类人看一是刚入行的电气工程师正在为第一个非标项目发愁二是做设备维护的人领导丢给你一套旧设备让你改流程三是在学校做PLC课程设计的学生想看看真实项目里是怎么组织的。这套系统看着不复杂但麻雀虽小五脏俱全。三水箱的液位控制往往牵扯到PID闭环、手自动切换、多泵联锁、缺水保护、溢流报警、通讯故障处理这些在单水箱系统里根本碰不到。所以把三水箱玩明白了后面再去做多泵联调或者更复杂的工艺控制心里就踏实很多。2. 控制流程和方案选型先想清楚再动手2.1 工艺逻辑与控制需求拆解我在接触这类项目时第一件事不是打开编程软件而是先把工艺流程画出来。三水箱供水系统的控制需求通常可以拆成下面几块。第一个是液位采集。每个水箱都需要液位检测常见的有浮球开关、投入式液位变送器、超声波液位计。选型取决于成本和精度要求。浮球只能给出开关量适合做上下限保护超声波和投入式变送器输出4-20mA或0-10V模拟量能读连续液位值。三水箱系统要做连续调节一般至少中间那个水箱得用模拟量液位计前后两个水箱可以用开关量做保护也可以都用模拟量看预算。第二个是动力控制。水泵和电动阀怎么配合这是核心。比如一箱高水位时启动水泵往二箱打水二箱高水位时再启动增压泵往三箱供水三箱直接对用户管网供水。如果几个泵同时抢水管路压力会波动剧烈所以要设定优先级和联锁关系。第三个是这个系统的安全保护。低液位禁止泵启动称为防空抽保护高液位停止注水称为满水保护同时还要考虑水泵故障、传感器断线等异常。这些在初始设计阶段就得预留逻辑。这套三水箱系统的调试难点并不是程序本身而是联锁关系和时序配合。调试时最常遇到的问题是现场阀门动作太慢而程序判断太快或者模拟量信号跳变导致逻辑反复触发。这些都不是写代码的问题而是对工艺理解不到位。2.2 硬件选型策略与关键参数硬件选型搞定了后面调试才能顺。PLC这块三水箱系统输入输出点不多模拟量输入三路、数字量输入五六路、输出四五路选小型PLC完全够用。我用过的有西门子S7-200 SMART、三菱FX3U、汇川AM系列各有特点。S7-200 SMART在第三方设备通讯上支持比较好三菱的指令上手快但模拟量模块要单独加汇川AM系列在本地IO扩展上做得比较灵活。触摸屏HMI我这次用的是威纶通MT系列后来朋友那边用的是MCGS两个都调过思路是相通的。威纶通的编程软件是EBProMCGS是MCGS嵌入版组态环境。两个软件在变量组态、画面制作上有个共同核心点PLC地址和触摸屏地址必须完全对应位号和寄存器号差一点都不行。通讯方式上现在主流是工业以太网也就是PLC和触摸屏都接入交换机通过IP地址通讯。老设备可能走串口RS485速度慢但稳定。我这套用的是以太网调试起来方便不用来回插线还能在线监控。硬件清单大致是这样S7-200 SMART SR30主机一台模拟量扩展模块EM AM06一块三路液位变送器信号水位变送器三个水泵三台电动阀两个威纶通MT8071触摸屏一台交换机一个24V开关电源一个。这套配置在3000-5000元级别属于很常见的实训和中小型项目配置。▼ 硬件配置与作用一览设备型号/规格作用备注PLCS7-200 SMART SR30逻辑控制核心自带以太网口模拟量模块EM AM06扩展三路模拟量输入4-20mA信号液位变送器投入式/超声波液位连续检测量程按水箱高度选触摸屏威纶通MT8071人机交互10寸屏交换机普通工业交换机以太网通讯互联至少4口这里特别提醒一下模拟量模块的通道映射地址不要去猜。S7-200 SMART的系统手册里写得很清楚第一个扩展模块从AIW16开始依次累加。你要是拿着AIW0去读那就是在读取CPU本体自带的模拟量通道如果有的话结果要么是0要么是乱跳的开关量变化能把你坑惨。3. PLC内部程序结构的搭建细节3.1 PLC程序的总设计思路三水箱PLC程序我习惯分成几个程序段来组织这样后期维护方便。分段的逻辑是按功能划分不是按扫描周期划分。把主程序拆成泵控制、阀控制、报警处理、手自动切换等块出了问题能直接找到对应行。S7-200 SMART的程序块在软件左侧树形菜单里管理可以建多个子程序。我的结构大概是主程序OB1扫描周期调度调用下面几个子程序初始化子程序上电时设置各输出初始态把非保持型变量清零模拟量处理子程序读取三路液位信号做滤波和标定换算成实际液位值单位厘米或百分比泵逻辑子程序手自动选择泵启停判断联锁保护报警子程序低液位、高液位、通讯超时、泵故障等报警汇总触摸屏交互子程序处理来自触摸屏的置位操作和参数写入程序分段的意义在我们调试时能真正体会到一旦液位到了不动你可以直接进泵逻辑子程序查看不用在主程序里翻来翻去。3.2 模拟量处理与滤波逻辑液位变送器输出4-20mA电流信号进到PLC的模拟量模块后CPU内部读到的是一个0到27648左右的整数西门子S7-1200/1500是0-27648S7-200 SMART也是同样的比例。这个原始数值需要换算成实际工程量。换算公式很简单就是线性映射实际值 (原始值 - 0) / (27648 - 0) * 满量程假如你的液位变送器量程是0到200厘米那么2米水箱对应原始值27648。程序里用浮点数运算把整数原始值转成实数再算。但真正干活的人都知道数值不能拿过来直接用。信号在传输过程中会有干扰尤其是变频器附近。我见过液位值在低位时跳变三四个厘米的一旦程序判断低液位停泵干扰就可能造成误动作。所以我在模拟量处理里做了一阶滤波也叫惯性滤波。它的原理非常简单当前显示值 上次显示值 乘以 权重 新采样值 乘以 1 减 权重。权重一般取0.7到0.9这个值越大曲线越平滑但响应也越慢。我一般取0.8对三水箱这种缓慢变化的液位响应速度和稳定性都能接受。有一点要记住滤波后的值不要直接参与报警判断。报警判断要用原始转换值或者轻微滤波值否则液位已经低过警戒线了程序还在等滤波后的值慢慢靠近会延迟报警时间。这在安全保护上是有讲究的。3.3 泵启停逻辑与手自动切换泵逻辑是整个程序的核心我一般是按模式条件的方式来写。先判断工作在手动还是自动模式再根据模式执行不同分支。手动模式主要用于试车和检修。触摸屏上放一个手动/自动切换开关切到手动后操作员可以直接按钮启停每一台泵。手动模式下PLC必须跳过自动逻辑但不跳过保护逻辑。就是说你手动启动了泵但如果液位太低还是要强行停掉这就是防空抽保护。保护永远高于手动操作这点在设计逻辑时必须写进去不然出了事就是事故。自动模式下泵的控制根据液位值来做逻辑判断。以我的三水箱工艺为例三箱液位低于下限时开启二箱向三箱供水的增压泵二箱液位低于下限时开启一箱向二箱供水的转输泵三箱液位高于上限时关闭增压泵二箱液位高于上限时关闭转输泵同时打开自来水补水阀给一箱补水这里要注意二箱和三箱之间是连锁的。如果二箱缺水增压泵再使劲抽就会把二箱抽空。所以三箱液位低时要先检查二箱液位是否满足启动条件不够就得先等转输泵工作把二箱补起来。程序上可以通过允许启动标志位来实现二箱液位在中间值以上且三箱液位低于下限增压泵才允许启动。这个联锁逻辑用梯形图写出来也就十来行但现场调试时最容易出错。我曾经遇到过的情况是三箱一直缺水增压泵却不启动查了半天发现是二箱的液位信号在启动临界值附近反复跳动导致允许标志位时有时无。后来在触摸屏上看趋势曲线才看出问题。自此以后我在泵启动条件里都加了5秒的稳定延时防止临界值抖动。4. 触摸屏HMI组态的核心变量与画面设计4.1 与PLC通讯建立的关键参数触摸屏的调试先说通讯。威纶通和MCGS的通讯建立流程基本一致在组态软件里选对PLC型号填IP地址和端口号然后下载到触摸屏。但就是这几步很多人能折腾一下午。新建工程时系统参数里要选PLC类型。以威纶通为例在系统参数里添加设备型号选择Siemens S7-200 SMART (Ethernet)然后设置IP地址。PLC的IP地址在S7-200 SMART的编程软件里设定默认是192.168.2.1触摸屏的IP可以在EBPro里设置比如192.168.2.10。两个设备必须在同一网段子网掩码保持默认255.255.255.0即可。这里有一个高频问题也是我们做技术支持时经常被问到的触摸屏提示Device no response翻译过来就是设备无响应。出现这个提示90%的可能是IP不在同网段、PLC的以太网口没插网线、PLC侧未启用以太网连接或者PLC的端口被其他软件比如你正在用的STEP 7 Micro/WIN SMART占用。是的你没看错STEP 7 Micro/WIN SMART在线监控的时候会把CPU通讯资源占掉一部分尤其是你打开了几个监控表又没关掉的时候。我在调试时养成了一个习惯在线监控完PLC程序先把软件里的监视功能停掉再切到触摸屏操作。这不是玄学是因为S7-200 SMART的以太网连接数有限不支持无限多客户端同时连接。你的电脑在监视PLC触摸屏也要连PLC两边同时在线确实偶尔会出现断连。4.2 内部变量表与地址映射表HMI里建立变量本质上是把PLC里的存储位置映射到触摸屏的标签上。我用的方式是在触摸屏软件里直接建立与PLC软元件地址对应的变量表变量名自己起数据类型要匹配。以S7-200 SMART和威纶通为例常见地址映射关系触摸屏变量名PLC地址数据类型用途三箱液位AIW1616位整型读取液位原始值增压泵启停Q0.0位输出控制自动模式标志M0.0位模式切换液位下限设定VW10016位整型触摸屏写入设定值报警汇总MW1016位整型报警状态触摸屏变量建立时类型一定不能选错。SIEMENS的I、Q是位输入输出M是内部位寄存器V是数据寄存器AIW是模拟量输入字AQW是模拟量输出字。很多人会把VW100误写成V100那就完全错了。西门子寻址方式里VW100表示起始地址为100的一个字16位而V100表示地址偏移是100的一个字节单元。差这一个字母数据范围完全不对读出来的值要么是0要么是离奇的乱数。在威纶通EBPro里建立了变量表后画面上的按钮、指示灯、数值显示框都直接绑定变量名。这样如果你改过PLC地址只需要在变量表里改一次地址画面上所有引用这个变量的元件都会跟着更新。MCGS也一样建完变量后用图元连接变量走的是同一套思路。我在触摸屏上放了四个关键画面第一个是主监控画面。显示三个水箱液位的柱状图三个水泵的运行/停止状态下方一排报警灯。柱状图在威纶通里可以用液位元件做绑定液位变量设定量程范围和方向即可。MCGS里也有类似的动画构件用基本元件配合脚本也行。第二个是控制画面。放手动/自动切换开关、每组泵的启动停止按钮、补水阀开关按钮、参数设定区上下限设定值。这里涉及一个安全设计手动模式下泵的启停按钮要置成弹起复位型也就是按住才运行松开就停。这样防止操作人员误触了按钮后泵一直持续运行。很多现场出问题就是给了开关型按钮人点一下泵开人走了泵忘了关。第三个是参数设定画面。用于修改液位上下限、PID参数如果用到的话。这些数值存放在PLC的VW保持寄存器里断电后不会被清零所以触摸屏上改了直接生效。需要注意的是发布给用户的SP值一定得做上下限限制。比如你在PLC里设VW100存储三箱下限液位那触摸屏输入框的数值范围就限制在5到40厘米之间防止操作员填了个负数进去把控制逻辑搞崩。第四个是报警/历史画面。PLC内部用定时器把报警浓度位组合成一个整数MW10每一位对应一种报警。触摸屏做报警显示时用事件登录功能配合PLC控制里面的报警触发地址来采集。这里有个经验报警记录不要存在触摸屏本地的掉电保持区尽量通过事件上传或存至SD卡/USB否则屏一更换历史报警全部丢失售后时查不到原因。4.3 多画面跳转与全局宏的应用威纶通的工程结构里全局宏和局部宏是个高级用法。全局宏独立于任何画面在后台周期性执行局部宏依附在某个画面或元件上在特定事件发生时触发。很多人只把宏用来做数据运算实际上我们调试中最重要的一种用法是把宏当作通讯桥来用。比如说你有一台Modbus设备比如变频器、温控表的数据想显示在触摸屏上但PLC不会去读它那么可以在触摸屏上用宏命令去读然后把结果写回PLC的VW区。这种方式可以减轻PLC扫描周期压力也可以让触摸屏直接充当协议转换网关。在三水箱系统里我没用到变频器但你如果接了变频器要调频率完全可以让触摸屏用MODBUS协议直接读变频器的运行频率和电流再通过宏写进PLC的VW寄存器PLC侧不需要写任何通讯程序。局部宏还有一个非常实用的场景开机初始化。写一个初始化宏在上电时把某些HMI内部寄存器LB或LW清零比如把报警确认标志清掉把当前的画面编号设置到主监控画面。MCGS里对应的概念是启动脚本效果类似。触摸屏编程100例之类的资料我翻过不少但实际项目里真正核心就是上面这套通讯、变量表、画面绑定、宏。把这几样弄熟练绝大多数触摸屏项目都能拿下来。5. 调试全流程实录与故障排查5.1 上电前的检查清单我调过不少设备也见过很多跳闸烧模块的场面。三水箱系统上电前我每次都会走一遍快速检查清单别看它简单能挡掉一半的故障。第一电源确认。PLC的24V电源是否接对很多开关电源输出是24V和0VPLC标的是L和M接反直接烧。三线制液位变送器的棕线接24V蓝线接0V黑线或白线才是信号线。信号线接不进模块那读数永远是4mA以下或超量程。第二模拟量信号线确认。信号线是不是从变送器接到了扩展模块的正确通道模拟量模块上的通道编号通常从0开始。EM AM06第一路是IW16不对S7-200 SMART的CPU SR30自带模拟量的模拟量通道从AIW16开始这里要澄清一下S7-200 SMART的SR30是继电器输出型它本体不带模拟量所以要模拟量只能扩展EM AM06扩展模块的通道地址就是AIW16和AIW18依次往下。如果是其他型号的CPU带了本体模拟量首通道是从AIW16开始。这里每款型号不同建议以选型手册中地址分配章节为准。第三通讯网线是否插好。触摸屏和PLC之间不管是直连还是经交换机网线都不能少于四芯通。水晶头压接不良偶尔也会造成通讯偶发中断测试时多插拔几次看看有没有区别。第四输入点状态复核。逐个短接输入端子确认每个输入点对应的PLC地址和触摸屏按钮逻辑方向是常开还是常闭没有反。这里最坑的是急停按钮很多急停用的是常闭触点接进PLC后输入点信号是1有电表示正常一旦急停按下信号变为0断电。如果你在PLC里写了急停未触发时允许启动用了常开逻辑那上电急停没按输入点是1你判断成了正常一旦按下变成0你还是可能判断成故障。方向搞反后果很严重。5.2 调试过程中的系统推进顺序硬件检查完我习惯分阶段调试从最容易确认的部分往难推进。第一阶段触摸屏通讯连上先不做控制画面只放一个数值显示框绑定三路液位地址。目的是确认通讯和模拟量。这个阶段的关键是液位显示值的正确性。假如你看到的数值是乱跳的先确认是不是线接错了通道再看是不是24V电源地没有共地导致信号有偏置。4-20mA是电流信号变送器供电和PLC模块必须共地否则回路中有压差读数值来回飘。第二阶段开始调试泵的逻辑但不带真实电机用主回路打空车或者用PLC软件里的强制功能去模拟。S7-200 SMART的在线监控里支持位和字的写入你可以在线状态下手动给M区写值观察程序逻辑走向。这一步要特别小心在线强制Q输出是致命操作因为你强制了Q0.0为1如果实际电机接好了它就真的转了。我一般是在断电或断开主回路的时候才做强制强制完立即取消绝不留着强制值运行设备。在线强制模拟几次后触摸屏上的按钮逻辑也应该验证。切换手动模式屏幕上点启动按钮对应Q点置位点停止Q点复位。这个没问题后把自动模式切回来用软件模拟液位变化验证自动启停逻辑。第三阶段真正带水调试。这个过程最考验耐心。因为液位上升需要时间下降也需要时间而你的程序里延时如果设太短会出现泵反复启停。我遇到过一个典型的振荡三箱液位低于30厘米时启动增压泵高于50厘米时停止。因为增压泵流量大水箱内液位波动明显加上传感器响应和滤波延迟液位到了35厘米的时候泵启动结果一个扫描周期内滤波值冲过了50厘米又停泵泵就变成打嗝机。解决办法是设置滞回区间也叫回差。比如下限设为25厘米启动上限设为55厘米停止让启动点和停止点之间留出10到15厘米的余量。液位上升过程中即使有一点过冲也不至于马上触发停止。这个回差值在触摸屏参数里做成可设的现场根据水泵流量实际调。5.3 PID闭环调试的要点如果用到三水箱系统如果对供水压力或流量有恒定的需求那二箱向三箱供水的水泵就不能用简单的开关量启停来控制得走PID调节。用PID的意思是让变频器驱动水泵通过调节电机转速让液位或压力稳定在设定值。S7-200 SMART的PID功能在软件里以PID向导形式生成用起来还比较顺手。但PID向导生成的PID块会自动占用一个定时中断一般是以100毫秒为周期。这个中断不能和项目中其他用途的定时中断冲突。PID调试我建议直接采用经验试凑法不需要一开始就去算传递函数。先设置纯比例模式比例增益从0.5开始观察液位响应曲线。如果曲线振荡加剧就减增益如果响应太慢就适当增加增益。等液位能够在设定值±5%范围内波动且不振荡后再加积分时间先从300秒往下试。微分在三水箱这种大惯性对象里尽量不用或者用很小不然变频器频率会被噪声信号折腾得乱跳。PID参数我一般会在触摸屏上做成可设定项存到VW区。这样现场调参不用开电脑直接在屏幕上操作效率高很多。在实际操作中我们做过一个测试把比例增益从1改到3液位响应明显超调了7%说明对象惯性很大。把增益拉回1.5同时积分时间从300改为120秒系统在80秒左右稳定超调控制在2%以内。这个结果说明参数是要根据现场逐一试出来的没有万能值。5.4 常见问题速查表与排查心得调试过程中遇到最多的问题我整理了一下做成速查表供你现场对照。现象可能原因排查步骤解决方案触摸屏显示数值为0信号线断、变送器供电缺失、通道地址错误用万用表量变送器输出端信号是否4-20mA补接线或更正地址AIW16/AIW18触摸屏数值最大不变模拟量通道正负极接反变送器信号溢出检查信号线接入端子定义对调信号线端子泵启动后立即停止过滤器堵塞导致出水流太大、延时保护触发查泵电流、查停机原因标志位清洁过滤阀或调整延时液位到设定值不动作PLC程序未扫描到该段或变量地址映射错误在线监控看输入状态和条件位修改PLC逻辑或触摸屏地址触摸屏卡死无法操作通讯被在线监视占用或触摸屏内存碎片断开电脑连接、断电重启触摸屏优化在线监视时间及时退出调试模式手动模式下泵也停保护逻辑住了查保护条件是否满足低液位、急停属于正常逻辑检查液位设备这里面有一个很隐蔽但常见的问题就是某个液位信号漂移。比如变送器在接近满量程时输出到了20.5mA超出了PLC模拟量模块的量程上限模块读数会钳在27648程序判断为高液位联锁把所有泵都停了。这种就属于传感器标定问题需要在触摸屏上做零点/满程标定功能或者通过PLC里减法偏置量来处理。还有一次现场报故障说一送电就烧保险查了半天是液位变送器的供电接线接在了PLC输出端的COM端子上输出COM接到电源负极造成短路。这种低级错误说实话接线图看着没错但视觉上COM端子和24V-长得太像了稍微分心就会接错。所以在接线图纸上我要求把24V-用单独编号标出严禁与输出公共端共用哪怕PLC本体上的端子距离再近。5.5 通讯故障的独家排查思路如果有两台触摸屏同时要连一台PLC很多人第一反应是是不是只能连一台。其实S7-200 SMART支持多个客户端同时访问你完全可以用两台触摸屏比如一台嵌在柜门上一台放在操作台同时连接同一台PLC做冗余或双控制位。关键是IP地址不能冲突端口默认是102两条连接共用同一端口理论上没问题。不过真正的瓶颈在于CPU连接资源S7-200 SMART的连接数需要查阅型号手册小型机大概支持3-4路并发连接。如果加了变频器、温控表等其他Modbus从站场景就复杂一些。此时需要规划一个清晰的Modbus地址表PLC做主站轮询读取多个从站触摸屏只跟PLC通讯。这样可以避免多主站同时访问造成的总线冲突或者数据不一致。我遇到过用户直接把触摸屏也加了多个Modbus驱动同时和好几个设备通讯最后因为波特率和校验参数不一致导致总线偶尔风暴所有设备都收不到完整数据。解决方案是统一使用Modbus RTU9600波特率8数据位1停止位无校验或偶校验尽量简化总线结构。关于device no response再补充一个冷门原因。威纶通触摸屏有些新固件默认开启了以太网自动协商如果你的交换机是老旧型号不支持1000M全双工协商偶尔就会出现连接后过几分钟自动断开的怪现象。可以把触摸屏的以太网速度手动设为100M半双工或自适应模式重新下载工程。这个经验我是在一个老项目上踩出来的当时换了两根网线都没解决最后改了网络速度设置就好了。6. 最后的个人经验和技术沉淀这套三水箱系统的调试前前后后用了三个整天。第一天检查线路和IO把触摸屏和PLC的通讯打通确认模拟量信号正常。第二天调试泵控制逻辑手动、自动全部跑通同时处理了两次液位信号漂移问题。第三天做带水整定优化了泵的启停滞回区间并把报警清单跟操作员做了交底。在整个过程中我最想强调的一点是PLC和触摸屏调试拼的其实不是技术炫技而是对整个系统的预期管理。你写程序之前脑海里得有一个完整的什么时候该干什么的流程你画画面之前得知道操作员会在哪个环节做哪个动作。程序写得再花哨如果操作员看不懂画面、找不到按钮照样是废品。还有一点备份和注释。我在给设备落地前会把PLC程序的注释全部补齐包括每条网络的功能说明把触摸屏工程里的变量表导出成Excel然后存档。这个动作在设备后期维护、故障排查、或者人员交接时能省下巨大工作量。我看到太多工程师在现场改完程序不更新注释过了三个月自己回来也看得一头雾水。这种地雷千万不要埋。如果后续要扩展这套三水箱系统可以加的东西还挺多。比如接入SCADA系统把液位、泵状态、报警通过Modbus TCP或OPC UA协议上传到上位机或云平台做远程监控。触摸屏侧也可以把数据用宏写到SQLite数据库生成报表。这些在工业互联网的大背景下都是很好的增值方向但基础还是今天说的这些调试基本功。最后再分享一个小技巧调试这种多水箱系统时触摸屏上一定要有一个全部停止的急停按钮并且这个按钮不仅要停泵还要关闭所有电动阀逻辑上独立于画面层级任何时候都能按到。我见过太多项目因为画面嵌套太深操作员一时找不到停止按钮眼睁睁看着水箱溢流。这类教训有一次就够你记住一辈子。
阅读完成 · 觉得有帮助?