
最近刚收尾一套三水箱供水系统的PLC与触摸屏调试项目趁记忆还热把这二十多天踩过的坑、理清的逻辑、现场的处理方法整理成一篇手札。这套系统本身不复杂——三个水箱、三台泵、一块PLC、一块触摸屏但越是这种看起来“小儿科”的项目越容易在联锁逻辑、模拟量处理和现场干扰上翻车。文章主要聊三块内容系统怎么设计、程序怎么写、现场怎么调。适合正在做或准备做供水、水处理、循环水这类小项目的工程师也适合带徒弟的老师傅拿来当案例讲。选择写这个题目是因为三水箱几乎是各种水处理工艺的“最小完整模型”有模拟量采集、有泵的逻辑联锁、有人机交互、有报警保护、还有通信问题。把这些细节吃透了再去做更复杂的非标项目会顺手很多。下面按照我在现场实际操作的顺序把整套调试过程摊开讲。1. 项目背景与方案选型先想清楚再动手1.1 三水箱系统到底控制什么这套系统要解决的是典型的阶梯式供水问题。市政水源先进入1号原水箱通过P2增压泵送入2号中间水箱再通过P3供水泵送入3号高位供水箱最终由3号箱向用户管网供水。三台泵从上游取水补入下游水箱形成三级串联补水链路。控制目标听起来很简单维持每个水箱的液位在安全范围内。但真正拆开看需要处理的问题不少。首先是“优先级”——用户端3号箱没有水系统必须优先补3号箱而补3号箱的前提是2号箱有足够的水所以又要联动补2号箱补2号箱的前提是1号箱有水于是还要联动补1号箱。这就是从下游往上游逐级触发的阶梯补水逻辑。其次是“保护”——任何一级水泵都不能在取水侧干转否则机械密封几分钟就可能烧毁。再次是“稳定”——水泵不能因为液位轻微波动就频繁启停否则接触器和电机都扛不住。1.2 硬件选型为什么是S7-200 SMART加威纶通PLC选用西门子S7-200 SMART具体型号为ST40本体自带以太网口和24点输入/16点输出。模拟量方面扩展了一块EM AM06模块提供4路模拟量输入和2路模拟量输出三路液位变送器正好够用还能留一路给后续恒压供水做变频器频率给定。触摸屏选的是威纶通MT8071iP组态软件用EBpro。有人会问为什么不用西门子Smart Line屏其实两者都能和S7-200 SMART通讯差别主要体现在工程效率和后续维护上。EBpro的宏功能强、画图方便而且做报警和趋势图比Smart Line顺手不少。更实际的原因是很多现场维修电工对威纶通更熟后续改画面、查报警不用每次都喊厂家过来。选型这事有一个原则不一定要选参数最好看的要选现场维护人员最愿意用的。传感器方面三台液位变送器全部选用投入式静压变送器量程0到1.5米水柱输出4到20mA。为什么选两线制4到20mA而不是485通讯或者开关量因为两线制模拟量在短距离传输中抗干扰能力尚可接线简单而且PLC模拟量模块直接采集不用走通讯协议解析调试门槛最低。除了变送器每个水箱还配了低低液位和高高液位两个浮球开关用来做硬件级别的极限保护这个后面会重点讲它和PLC程序里的软保护完全是两码事。2. 控制逻辑设计与I/O规划把联锁关系掰开揉碎2.1 三级补水的工艺逻辑先明确系统的运行边界市政水源通过P1提升泵给1号箱补水P2把1号箱的水抽到2号箱P3把2号箱的水抽到3号箱3号箱靠高位差压直接向用户供水。这里采用高位水箱供水而不是变频恒压供水主要考虑是用户端压力要求不苛刻水箱本身就能缓冲压力波动没必要上一套变频器加PID。自动运行的核心逻辑是“下游优先、逐级触发”。3号箱液位低于启动值30%时P3启动从2号箱往3号箱补水3号箱液位达到停止值80%时P3停止。P3运行过程中2号箱液位持续下降当2号箱液位也低于30%时P2启动从1号箱往2号箱补水同理1号箱液位低于30%时P1启动从市政水源往1号箱补水。反过来当上游水箱液位已经补到80%对应的泵就停止。这套逻辑的关键在于“滞环”设计。如果启动值30%、停止值80%泵一旦启动就要把下游水箱补到80%才停中间这50%的跨度就是缓冲区间。液位在30%到80%之间时泵保持原状态不变不会因为液位上下波动反复启停。很多新手直接把启动和停止设成一个值比如“低于50%启动高于50%停止”结果液位在50%附近稍微一抖泵就频繁启停这是最典型的初级错误。2.2 手动、自动、远程三种模式怎么共存设备交付后不可能永远只跑自动。检修时需要手动启停单台泵调试时需要就地操作生产时又要切到自动。所以控制柜面板上有一个模式选择旋钮PLC程序里同时识别触摸屏下发的模式指令两者结合在一起工作。手动模式下操作员通过柜面按钮或者触摸屏上的手动按钮直接启停任意一台泵但低低液位保护、热继电器保护、急停保护始终有效。自动模式下PLC依据液位滞环逻辑自行控制操作员理论上不需要干预。远程模式则是在自动逻辑基础上叠加触摸屏下发的启动/停止指令适用于上位机集中监控的场合。为了保证安全柜面旋钮的优先级高于触摸屏指令当旋钮打到手动时触摸屏上的自动启动指令一律无效。三种模式的切换还要考虑泵的状态保持问题。比如自动运行中P2正在给2号箱补水操作员把旋钮拨到手动P2不能直接停掉——它会由手动条件接管保持运行否则切换瞬间泵全停系统容易出大问题。处理办法是模式切换后原运行泵的控制权转移给新模式的对应保持位复用输出逻辑中的置位条件。2.3 I/O分配与接线实现I/O分配是整个控制系统的基础我习惯先做一张完整的表格再动手接线避免后期改线改到怀疑人生。信号名称PLC地址信号类型说明1号箱液位变送器AIW964-20mA模拟量量程0-1500mm2号箱液位变送器AIW984-20mA模拟量量程0-1500mm3号箱液位变送器AIW1004-20mA模拟量量程0-1500mm急停按钮I0.0常闭开关量柜面急停串联硬回路P1热继电器I0.1常闭开关量故障信号P2热继电器I0.2常闭开关量故障信号P3热继电器I0.3常闭开关量故障信号1号箱低低浮球I0.4常闭开关量硬件保护1号箱高高浮球I0.5常开开关量溢流保护2号箱低低浮球I0.6常闭开关量硬件保护2号箱高高浮球I0.7常开开关量溢流保护3号箱低低浮球I1.0常闭开关量硬件保护3号箱高高浮球I1.1常开开关量溢流保护P1泵接触器Q0.0输出到中间继电器驱动P1电机P2泵接触器Q0.1输出到中间继电器驱动P2电机P3泵接触器Q0.2输出到中间继电器驱动P3电机接线时有三点必须强调。第一液位变送器是两线制信号线正负不能接反屏蔽层只能在PLC柜侧单端接地现场传感器这一头要悬空。第二PLC输出点不要直接驱动接触器线圈中间一定要加中间继电器过渡。ST40的输出点是继电器型还好说但如果用晶体管输出直接接感性负载很容易把输出点烧掉。第三急停按钮的常闭触点不仅要进PLC的I0.0还要串联在中间继电器线圈的供电回路里。这样即使PLC程序跑飞了急停也能通过硬件回路把全部泵切掉。这套“软硬结合”的保护思路是整个控制系统的安全底线。3. PLC程序设计模拟量处理与控制逻辑落地3.1 模拟量采集与量程换算的正确姿势S7-200 SMART的模拟量模块默认把4到20mA信号转换成0到27648的整型数其中4mA对应553020mA对应27648。如果直接使用这个原始值去和液位百分比比较逻辑很容易写错所以第一步必须做量程换算。换算公式很简单液位毫米值 (AIW原始值 - 5530) / (27648 - 5530) × 1500。三路液位分别存入VD100、VD104、VD108数据类型为实数。STL程序段如下LD SM0.0 MOVW AIW96, LW0 ITD LW0, LD4 DTR LD4, LD8 -R 5530.0, LD8 *R 1500.0, LD8 /R 22118.0, LD8 MOVR LD8, VD100换算完的液位值才是后续所有比较和显示的基础。这里有个细节22118是27648减5530得到的有效量程跨度如果现场变送器实际量程不是0到1500mm把乘的1500换成实际量程即可。关于滤波我建议在换算后的工程值上做均值滤波和死区判断而不是对原始值滤波。原因很简单原始值的噪声范围在量程换算后被缩小直接对原始值滤波效果不明显而且不直观。现场我用的是8个扫描周期的滑动均值再叠加20mm的死区液位变化量小于20mm时显示值保持不变。这个死区足够滤掉水面轻微晃动和变送器微小噪声又不会让液位响应迟钝。另一个必须要做的是“坏值处理”。当液位变送器断线或信号严重干扰时AIW值可能跑到小于5000或者大于29000。如果不加判断这个错误值会被换算成一个离谱的液位可能引发泵的误动作。我的做法是每个扫描周期判断一次如果AIW原始值超出正常范围就把对应的液位有效标志位置位报警同时延用上一次的液位值不让系统跟着假信号乱跑。3.2 泵启停逻辑滞环控制、防抖与互锁泵的控制是整个程序的核心我在程序里把每台泵的自动启停条件分成“启动请求”和“停止请求”两组再用置位复位指令输出到Q点。以P3为例子它的启动条件包括系统处于自动模式、3号箱液位低于30%、2号箱液位高于15%保证吸水侧有水、3号箱没有高高保护、P3热继电器正常、急停未按下。STL段如下LD M1.0 // 自动模式 AN M20.2 // 3号箱低低保护 AN M20.3 // 2号箱低低保护 AN M30.1 // 3号箱高高报警 AN I0.3 // P3热继正常 M50.2 // P3自动启动请求停止请求则包括3号箱液位达到80%、2号箱液位低于低低值、热继电器动作、急停按下、手动模式切出。停止条件用置位复位指令中“复位优先”的方式实现停止网络放在启动网络之后PLC执行时后面的指令覆盖前面的结果从而确保“停止请求”永远比“启动请求”优先。这个顺序问题特别容易被忽略我见过不少程序启动和停止两个网络写反结果泵该停的时候停不下来。滞环控制是防止泵频繁启停的第一道防线但我还加了三道“保险”。第一道是启动延时液位低于启动值后持续5秒才允许启动液位达到停止值后也持续5秒才允许停止用来过滤水面波动造成的瞬时穿越。第二道是短周期重启锁定任何一台泵停止后120秒内禁止再次启动。即使液位在停止瞬间又掉回启动值以下泵也不会马上再转。第三道是启停次数统计程序里用计数器累计每台泵的启停次数触摸屏趋势画面上可以看到工程验收时这是一个很有说服力的数据。3.3 保护逻辑的硬回路设计PLC程序里的软保护再完善也不能替代硬件保护回路。这套系统的硬件保护主要有三路。第一路是低低液位浮球开关它串在对应泵接触器线圈的控制回路里浮球动作时常闭点断开接触器线圈直接失电泵立即停止完全不依赖PLC。第二路是高高液位浮球开关动作后PLC检测到输入信号停止向上游泵发出运行指令并及时报警。第三路是急停回路串在控制电源总回路中急停按下后所有中间继电器失电所有泵全部停止。现场调试时我反复跟用户强调一个概念PLC程序只是逻辑层真正的安全兜底在硬件层。比如3号箱高高浮球动作哪怕PLC程序因为某种原因卡死了P3接触器线圈供电回路里还串联着3号箱“低低保护”的相关条件但这里更关键的是低低浮球和急停这一类硬切点。如果只用程序保护一旦CPU运行异常保护就形同虚设。做工业控制永远不要把安全寄托在单一路径上。4. 触摸屏组态画面不光是好看更要好用4.1 画面规划与操作分层触摸屏画面规划我习惯按照“监视—操作—参数—报警—趋势”五个方向来分页面。主画面显示工艺流程图三个水箱用填充柱显示实时液位三台泵用状态灯表示运行/停止/故障底部显示当前模式、日期时间、通信状态。主画面是给操作工看的信息要一目了然不要放任何按钮。手动控制画面放操作按钮包括每台泵的手动启动/停止、手自动模式切换、急停复位。这个画面的按钮权限要控制好操作员密码只能操作泵启停工程师密码才能改参数。手自动切换这种关键操作必须在画面上弹窗确认防止误触。我在EBpro里用了一个内部LW做权限等级标志密码验证通过后给LW赋值按钮的“安全”属性里选择对应权限简单可靠。参数设置画面给工程师用包括三路液位的启动值、停止值、报警值、泵的重启锁定时间、滤波周期等。这些参数存放在PLC的V区触摸屏直接读写。这里有个设计要点参数画面里所有修改值必须先“读出”再“写入”修改后还要回读比对防止因为通信丢包导致参数写入错误。另外手自动切换按钮写入VW0数据类型是整数很多新手把它做成位按钮导致只能写1不能写回0就是因为没搞清楚类型。4.2 变量映射为什么不要直接用触摸屏写Q点触摸屏上的按钮和PLC寄存器之间建立变量映射时有一个原则必须遵守不要用触摸屏直接写Q点。正确的做法是让触摸屏写M区或V区的控制字PLC程序内部再根据模式、保护条件、联锁逻辑把这些控制字转换成实际的Q输出。举个例子手动模式下操作员想启动P3触摸屏按钮写M0.0置位。PLC程序里这样处理自动逻辑正常输出Q0.2同时M0.0手动启动请求经过模式判断后也能置位Q0.2。如果直接在触摸屏上写Q0.2程序里的自动逻辑和手动逻辑同时在竞争同一个输出点两边互相覆盖这是最典型的“程序抽风”现场。而且直接写Q点调试时在PLC监控软件里根本看不出是哪一侧发出的指令定位问题非常困难。变量地址映射表建议做成文档避免后期改线改乱。我这里展示最关键的一部分触摸屏变量PLC地址数据类型用途说明1号箱液位显示VD10032位浮点实时液位mm2号箱液位显示VD10432位浮点实时液位mm3号箱液位显示VD10832位浮点实时液位mmP3手动启动按钮M0.0位触摸屏写P3手动停止按钮M0.1位触摸屏写模式切换字VW016位整数0手动/1自动/2远程3号箱启动液位VD20032位浮点参数可调3号箱停止液位VD20432位浮点参数可调这里要特别注意数据类型。VD100是32位浮点触摸屏侧的变量类型必须选“浮点32位”如果错选成16位整数读出来的数值完全是乱的。这个问题的排查排了很久后来发现是HMI侧数据类型没对上。4.3 报警和趋势让故障自己浮出来报警设计的目标是不依赖操作员盯着画面故障出现时必须主动弹出来。我在PLC里定义了报警位M10.0对应1号箱高高液位、M10.1对应1号箱低低液位、M10.2对应2号箱高高液位以此类推。触摸屏EBpro的“事件登录”里把这些报警位关联起来触发方式选上升沿恢复时自动生成解除报警并勾选“持续触发”确保弹窗不被其他窗口盖住。报警画面除了显示当前报警还必须保留历史报警记录。EBpro的历史报警可以存储到内部存储器掉电后靠电池保持。这个功能交付时一定要测试我就遇到过HMI固件版本问题导致历史报警记录上传异常后来换个版本才好。趋势画面是三路液位的历史曲线采样周期设为1秒保留最近24小时数据。趋势图最大的价值不是实时看液位而是回放分析。比如用户投诉夜间压力不稳拉出趋势图一看就知道是3号箱液位波动太大还是P3启停太频繁比在现场猜可靠得多。MT8071iP支持U盘导出历史数据每次回访现场我都会习惯性把所有趋势数据导出一份存档。5. 联调实录从空载到带载的全过程5.1 调试顺序设计先安全后功能整套联调我没有一上来就跑自动而是严格按“硬件检查—逻辑空载—单泵带载—自动联动”四步走。第一天上电前把每个回路的通断用万用表测了一遍24V电源对地是否短路、变送器正负极是否接反、中间继电器线圈是否与PLC输出点一一对应。这些工作看似基础但真能避免上电瞬间烧东西的惨剧。上电后先下载一个空白验证程序只做两件事把PLC点动强制输出到Q0.0、Q0.1、Q0.2确认三个输出点和中间继电器、接触器一一对应再在触摸屏上手动切换三个画面确认页面跳转正常。状态不对的先排查硬件状态对了才继续往下走。不要一上来就把完整程序下载进去否则逻辑一旦依赖的硬件条件不满足你根本分不清是接线问题还是程序问题。5.2 模拟量通道标定与信号注入验证模拟量通道的标定我花了一整个上午。用信号发生器直接注入4mA、12mA、20mA三档电流分别读取AIW96、AIW98、AIW100的原始值。正常情况下4mA对应5530左右12mA对应16538左右20mA对应27648左右。如果偏差超过50个码值就要检查变送器接线或者模块通道配置。标定完成后接上真实变送器往1号箱里实际注水观察触摸屏液位显示是否与实际水位一致。这里最容易发现的问题是变送器安装位置。投入式变送器探头必须垂直于箱底探头底部不能直接接触箱底沉淀物否则测量值会偏低或跳动。另外变送器的排气孔要朝上电缆不能受力否则水汽进入探头内部液位读数会漂移。信号注入的同时我还在触摸屏上观察了液位柱的动画效果。设置好液位目标属性后填充柱会跟着液位百分比变化。这一步虽然简单但能提前发现动画方向反了、液位上限不对等画面问题这些问题如果等到带载才发现改起来会非常被动。5.3 触摸屏与PLC通信联调通信联调是现场最容易卡壳的环节。我的做法是先电脑直连PLC在编程软件里在线监控确认PLC本身运行正常再把触摸屏接入同一个交换机。EBpro里新建设备时设备类型必须选择“Siemens S7-200 Smart”接口选EthernetPLC IP地址填实际地址站号默认1。HMI本机IP设置成和PLC同网段比如PLC是192.168.1.10HMI就设192.168.1.2子网掩码一致。先用EBpro的“在线模拟”功能在电脑上模拟画面和PLC通讯确认所有变量地址都能读到。在线模拟正常后再下载到HMI本体下载完成后重启触摸屏看主画面数值是否和编程软件监控值一致。如果显示0或者乱码优先检查数据类型和地址映射。如果直接弹“Device No Response”重点去查驱动类型和IP配置这个常见问题我会在下一章详细写排查过程。通信联调通过后我还在触摸屏上做了一次延时测试手动按P3启动按钮同时看PLC输出点状态从按下到Q0.2动作的时间间隔不超过0.5秒。如果延时超过1秒要考虑通信周期设置是否过长或者网络里是不是同时挂了很多设备导致PLC处理不过来。5.4 三级联动带载试验通信没问题后进入带载阶段。先把模式打到手动单台试转P3。通电前确认泵出口阀稍微打开一点点避免泵腔憋压。第一次点动时立即观察电机转向三相泵反转的特征是电流偏大、出水量很小甚至不出水。确认转向正确后让P3连续运行几分钟听声音、看压力表、摸电机温升一切正常再做下一台。单泵试转完成后把模式打到自动开始三级联动试验。我特意把三个水箱排到比较低的水位再启动这样能观察完整的阶梯补水过程3号箱液位低于30%时P3启动随着P3持续抽水2号箱液位下降低于30%后P2启动同理1号箱液位下降后P1启动。等到各箱液位达到80%泵按先停下游后停上游的顺序逐台停止。整个过程我录制了视频方便后面和用户交流。联动试验里我还做了保护验证。将2号箱低低浮球人为触发正在运行的P3必须立即停止这就是“防止抽干2号箱”的硬保护。然后恢复浮球报警复位系统重新进入自动状态。急停测试同理按下急停后三台泵同时停机故障排除后复位急停系统恢复正常。这两项测试一定要做而且要让用户在场见证否则验收时容易扯皮。6. 现场常见问题与排查速查6.1 触摸屏报Device No Response这个报错几乎每个用威纶通触摸屏的人都会遇到。现象是触摸屏弹出红色边框的“Device No Response”提示框画面数据不刷新或刷新极慢。但它不一定代表PLC挂了更多时候是HMI在超时时间内没有收到PLC的应答。排查按照顺序来。第一步电脑ping PLC的IP地址如果不通检查网线、交换机端口、IP地址是否冲突。第二步看HMI本机IP是否和PLC同网段MT8071iP的网口如果直连PLC两边IP要手动设置不能用自动获取。第三步检查EBpro里设备类型是否选对很多人选了标准的Siemens S7-300驱动结果自然连不上S7-200 SMART。第四步看PLC的连接资源是否被占满。S7-200 SMART支持多个以太网连接但如果同时挂着编程软件在线、触摸屏在线、上位机组态在线连接数超了之后触摸屏就会间歇性报错。第五步把通信超时时间从默认的3000ms调到6000ms重试次数改成3很多时候能缓解偶发弹窗问题。我还遇到过一种很隐蔽的情况触摸屏与PLC通过交换机连接交换机某个端口因为静电或者接触不良平时能用但一有大电流设备启动就断流导致Device No Response频繁出现。后来换个交换机端口就好了。所以排查通信问题不要只盯着软件配置硬件链路同样要查。6.2 液位显示跳动的排查液位显示在触摸屏上反复跳动是供水系统调试里最常见也最让人烦躁的问题。现场排查时我先用万用表串联在变送器信号回路里观察电流值是否稳定。如果电流本身就在波动问题大概率出在变送器或者线缆上如果电流稳定但PLC读数跳动问题就在模块或者程序侧。干扰是最大的嫌疑。信号线走线太靠近动力电缆、屏蔽层没有单端接地、变送器供电电源质量差都可能导致模拟量读数抖动。尤其要注意的是现场很多情况下液位变送器和接触器线圈共用同一个24V开关电源泵一吸合瞬时电流很大电源电压跌落液位读数就会跟着跳。这个问题的解决办法是把传感器供电单独拉一路电源或者在电源输出端并联足够容量的电解电容。我在软件侧还加了两个处理一是均值滤波窗口适当拉长二是加坏值判断。但滤波只能缓解显示问题绝对不能掩盖硬件故障。如果液位显示持续跳动该换变送器就换该走线重新走就重新走。6.3 泵频繁启停泵频繁启停的直接危害是接触器和电机寿命大幅缩短。现象通常表现为液位在启动值附近来回穿越泵每隔几分钟甚至几十秒就启停一次。造成这个现象的原因有几个。最典型的是滞环设置过小启动值和停止值离得太近液位波动一点点就会跨过边界。处理办法是拉开滞环区间比如启动值30%、停止值80%。第二个原因是液位波动太大传感器信号噪声严重这个结合上一条“液位跳动”的排查思路处理。第三个原因是启动延时和停止延时的滤波时间不够我前面提过5秒延时如果现场液位波动特别剧烈可以适当延长到10秒。我在调试中还做了一个很有用的功能——启停次数统计。在程序里放两个计数器记录P3当天累计启动次数和总运行时间。有了这组数据就能客观判断泵的启停频率是否合理而不是靠感觉猜。正常的供水系统一台泵每小时启停三五次以内合理如果超过十次就要认真查原因了。6.4 上电瞬间输出误动作现场出现过这种情况系统断电后再次上电的一瞬间触摸屏还没启动完毕某台泵的接触器会“啪”地吸合一下随后又断开。这个现象虽然持续时间很短但如果是大功率电机瞬间启动冲击会对设备和管路造成危害。原因主要是PLC上电后程序首次扫描期间的输出状态不确定。解决思路有三层。第一层在程序里用SM0.1首次扫描标志把所有Q点复位确保输出初始状态全部为0。第二层是硬件回路串联急停和低低液位保护即使Q点瞬时置1接触器也可能因为保护触点断开而吸合不上。第三层是控制触摸屏和PLC的上电顺序最好让PLC先完全启动进入RUN状态再给触摸屏上电避免双方握手过程中乱发指令。6.5 一个PLC可以接两个触摸屏吗这个问题在现场被问过很多次答案是可以。S7-200 SMART本体支持多个以太网连接常见做法是一台触摸屏做操作员站放在现场另一台放到办公室或中控室做数据监视。但要注意两点第一多台HMI同时在线会占用PLC连接资源加上编程软件的话连接数压力会更大所以不要轻易把HMI同时挂太多台。第二多台HMI同时写同一个参数会有覆盖风险比如现场操作员把启动值改成35%办公室里又是旧参数30%两侧不断互相覆盖最终参数到底是多少完全不可控。我的方案是只允许主操作员屏写参数其他屏设成只读或只监视趋势和报警。7. 调试心得一些不写在说明书里的事7.1 版本管理与调试日志半程调试下来我最大的感触是版本管理比技术本身更重要。程序改到第几版、触摸屏画面同步更新到哪一版靠脑子记完全不靠谱。我的习惯是每天收工时把PLC程序归档一份带日期的文件触摸屏工程也同步归档命名格式统一为“三水箱_项目编号_日期_V版本号”同时把当天的调试日志写进一个简单的记事本现象、原因、处理、验证结果四行记录。项目结束时翻这些日志你会发现很多当时觉得“搞了两天才解决”的问题其实都遵循同样的规律。7.2 交付前的断电重启测试交付前有一个项目我差点跳过的步骤——断电重启测试。我当时在机柜前连续做三次断电、上电循环第一次就发现问题触摸屏上电速度比PLC快HMI启动完成后PLC还没进入RUN状态导致触摸屏上报警记录里出现一堆假报警。这个问题的根源是HMI在PLC启动完成前就开始读取变量PLC尚未初始化数据都是0报警位自然被误判。解决的办法有两个一个是在HMI开机宏里加延时等PLC稳定后再进入主画面另一个是PLC程序里把初始化完成位写到V区HMI检测到这个位为1后才允许主画面刷新。断电重启测试还能发现很多“程序看起来对、现场跑起来不对”的问题。建议所有人在正式交付前都做一遍哪怕只是简单的三到五次断电上电花不了多少时间但能省掉大量的售后返修。7.3 最值得投入的“软功夫”调试这个项目的最后几天我花了不少时间做一件事把整套系统的操作说明和常见故障对照表整理成一份简短的文档不需要长篇大论两页纸就够。内容包括开机步骤、关机步骤、自动运行说明、手动操作注意事项、常见报警对照表。这份文档最终成了用户最认可的东西比任何花里胡哨的画面都实用。我个人在实际操作中的体会是一个项目的成败很多时候不在于你用了多高端的硬件、多复杂的算法而在于把每一个细节都考虑到位。三水箱供水系统是很基础的控制对象但基础不等于简单它把模拟量采集、逻辑联锁、人机交互、通信故障、现场干扰这些问题全部浓缩在了一个小小的系统里。把这些细节吃透了再遇到类似的非标水处理项目心里就有底了。最后再分享一个小技巧调试记录里我始终保留了一份“初始基准值”笔记记录所有变送器在4mA、12mA、20mA时的原始读数这份数据在后期的维护和故障排查中帮了大忙建议你也保留一份。