
这个项目是我之前经手的一个室外恒温游泳馆循环水处理改造业主原来的控制柜里就几个接触器加时间继电器一到夏季高峰期水质经常出问题余氯和pH全靠人工盯着加药晚上值班员打个盹第二天池水就发浑。接手之后我直接定了S7-200 PLC加组态王监控这套方案把循环过滤、投药消毒、水温调节、反洗切换全部做成自动中控室一台电脑就能看到整个泳池的实时运行状态。这也是很多小型水处理项目里最典型的控制架构到今天回头看这套系统的稳定性和性价比依然很能打今天就把完整的IO分配、带解释的梯形图逻辑、电气图纸要点和组态王组态过程都捋一遍给打算做类似项目的朋友一个能直接抄作业的参考。1. 项目核心需求与整体方案定调1.1 游泳池水处理到底在干什么很多人第一次接触泳池水处理容易把它当成普通给排水项目其实站在控制角度它比想象中要复杂一点。游泳池的水是循环使用的不是一直补新水核心工艺就是“循环过滤消毒加热补水”四件事。水从池面溢流进入平衡水箱经过毛发收集器拦截头发和杂物再由循环水泵加压送进砂缸石英砂过滤器过滤掉悬浮物过滤后经过板式换热器加热同时通过投药泵投加次氯酸钠和pH调节剂最后经过布水口回到池内。这个循环是24小时不间断跑的按国家相关卫生规范游泳池循环周期一般在4到6小时也就是说整个泳池的水一天要循环过滤4到6次。过滤器运行一段时间后砂层截留的脏东西会让压差上升这时候需要反洗把砂缸里的脏水反向冲排出系统。这些过程如果全用人工操作误差很大尤其是投药余氯高了刺眼臭低了消毒不达标pH偏了絮凝效果直接就崩。所以控制系统的核心任务就是稳定维持水循环根据在线仪表反馈自动控制投药泵启停按时切换过滤/反洗模式温度低了自动开加热阀任何异常立刻报警。1.2 为什么选S7-200加组态王而不是选别的现在市面上小型PLC选择很多三菱FX系列、台达、汇川都有人用但我在这类项目中依然倾向西门子S7-200理由很实在。S7-200的指令系统相对直观梯形图逻辑做水处理这种以开关量为主、少量模拟量调节的程序非常顺手。它的定时器、计数器资源在这个量级的项目里绰绰有余价格也控制在合理区间。关键是模块化做得好的CPU内置24路数字量输入加16路数字量输出整机还带模拟量扩展能力一个CPU226就能吃下整个泳池项目的IO点不需要额外拉太多扩展模块柜内空间和接线工作量都下来了。组态王KingView这边在国内中小型监控项目里的地位有点类似于“水电工都会用的监控软件”它最大的优势是驱动库极其丰富S7-200通过西门子的PC Access或TCP/IP驱动可以直接对接不需要自己写任何通讯协议。再一个就是它的画面编辑和报表功能上手快对于不熟悉工控编程的运维人员培训成本很低。相比之下用WinCC虽然和西门子生态更亲密但授权价格摆在那儿业主通常不愿意为一个小泳池掏这个钱。组态王的性价比在这里就非常突出了。这套组合定了之后我先把设备清单和IO点表做出来这是整个项目的地基。IO分配看起来就是个表格实际上它决定了PLC程序怎么写、柜子怎么接线、组态王变量怎么建一步错后面步步错。2. IO分配先把现场点数盘清楚2.1 输入信号清单与地址规划IO分配是PLC项目的第一步这一步做不好程序写得再漂亮都白搭。我习惯先把现场所有设备、按钮、仪表列成一张设备清单然后逐个确认是需要PLC采集信号还是只需要硬接线。在泳池项目里输入信号主要分三块设备运行状态反馈、手动操作与模式选择信号、液位与故障信号。先说数字量输入。循环水泵、反洗泵、投药泵这一类动力设备一般从接触器辅助触点上取一对常开触点接到PLC用来判断设备到底转没转这叫“运行反馈”。同时热继电器或电机保护器的常闭触点串进来一旦电机过载PLC立刻收到故障信号。每个设备还配一个本地控制柜上的“手动/自动”切换开关以及手动模式下用的启动、停止按钮。这些手动信号也要接进PLC否则自动程序无法判断当前设备处于什么操作模式。液位方面平衡水箱装高、低液位浮球开关投药桶装低液位开关这两个信号直接决定水泵能不能启动、投药泵要不要闭锁。这块我给出的IO分配是这样一组典型的地址规划大家可以根据实际CPU型号微调信号描述PLC地址说明循环水泵运行反馈I0.0接触器辅助触点反馈循环水泵故障I0.1热继电器常闭触点串入反洗泵运行反馈I0.2接触器辅助触点反馈反洗泵故障I0.3热继电器常闭触点串入投药泵低液位信号I0.4低液位浮球开关平衡水箱高液位信号I0.5高液位浮球开关平衡水箱低液位信号I0.6低液位浮球开关系统自动/手动模式选择I0.7控制柜面板转换开关系统启动按钮I1.0自复位常开按钮系统停止按钮I1.1自复位常闭按钮投药泵A运行反馈I1.2接触器辅助触点反馈投药泵B运行反馈I1.3接触器辅助触点反馈加热电磁阀开到位反馈I1.4阀开到位行程开关加热电磁阀关到位反馈I1.5阀关到位行程开关备用输入点I1.6-I2.7预留扩展2.2 输出回路清单与地址规划输出点这里要稍微动点脑筋。泳池项目里的输出绝大多数是控制接触器线圈和电磁阀这类负载虽然是220V AC但我不建议PLC输出点直接驱动尤其是S7-200的晶体管或继电器输出长期直接吸合接触器线圈触点寿命和抗浪涌能力都有隐患。我习惯的做法是PLC输出先驱动中继中继再驱动接触器线圈中间物理隔离检修也方便。输出分配我给出下面这套方案它对应的就是主回路里每个接触器、电磁阀的动作对象信号描述PLC地址说明循环水泵启动Q0.0控制接触器KM1反洗泵启动Q0.1控制接触器KM2投药泵A启动Q0.2控制接触器KM3投药泵B启动Q0.3控制接触器KM4加热电磁阀打开Q0.4控制电磁阀DO1加热电磁阀关闭Q0.5控制电磁阀DO2正常过滤模式电磁阀Q0.6控制电动阀门DO3反洗模式电磁阀Q0.7控制电动阀门DO4系统报警指示灯Q1.0控制柜声光报警器电铃输出Q1.1临时报警输出备用输出点Q1.2-Q1.7预留扩展用这里要特别提醒一点Q0.4和Q0.5这种“开阀”和“关阀”输出千万别把它们理解成互锁的两个独立动作电磁阀执行器往往是三线控制模式一个开指令一个关指令两个都不输出的时候阀位保持。程序里要做软件互锁绝对禁止Q0.4和Q0.5同时为1否则阀门执行器直接烧。后面写梯形图的时候这个互锁是重点。2.3 模拟量通道规划泳池项目里需要连续监测的物理量主要是余氯、pH和温度。余氯和pH通过在线传感器变送器输出4-20mA信号温度用PT100铂电阻配温度变送器也变成4-20mA。S7-200 CPU本身不带模拟量需要加扩展模块我选EM231四通道模拟量输入模块四路4-20mA刚好覆盖两个水质参数加一个温度留一路备用。模拟量IO分配如下信号描述模块通道信号类型工程范围池水余氯值AIW04-20mA0-5mg/L池水pH值AIW24-20mA0-14pH池水温度AIW44-20mA0-50℃备用通道AIW64-20mA预留这里有点要放在心上EM231模块的DIP拨码开关必须按通道信号类型拨对位置电流信号和电压信号的拨法不一样我曾经见过有同行把4-20mA的仪表信号接到了电压模式下结果读数直接飞满查了半天最后发现是模块侧面一个不起眼的拨码开关没拨对。另外4-20mA信号在PLC内部读到的是0-32000的原始值要在程序里做量程转换这个放到梯形图部分详细说。3. 带解释的梯形图程序程序段逐个拆解3.1 程序总体框架与扫描流程S7-200的梯形图程序是循环扫描执行的一个扫描周期里读输入、执行程序、刷新输出。写水处理程序时我不会把一堆逻辑堆在主程序OB1里而是按功能拆成几个子程序循环过滤控制、投药控制、反洗控制、加热控制、报警处理。主程序里按条件调用这些子程序可读性比一大坨梯形图高太多以后维护的人会感谢你。整体流程是这样的PLC上电后先做初始化把中间变量复位然后进入自动判断。系统要是处于自动模式先看平衡水箱液位是否正常液位正常才允许启动循环泵。循环泵跑起来之后根据余氯和pH的反馈决定投药泵启停同时根据砂缸压差或者定时周期决定要不要进入反洗流程。加热这块独立跑温度低于设定点就开加热电磁阀温度到了就关阀。任何一个环节出问题统一汇总到报警子程序驱动Q1.0声光报警并在组态王上显示具体故障点。3.2 循环过滤泵的控制逻辑循环泵是整个系统的“心脏”它不转后面投药加热全是空谈。控制逻辑上我采用“主令启动条件闭锁”的思路。手动模式下直接由柜面按钮控制接触器PLC只在旁边看状态。自动模式下PLC输出Q0.0接通前提是I1.0启动按钮按过、系统停止按钮没有拍、平衡水箱没到低液位、循环泵没有故障。这里用了一个带自锁的启保停电路做基础框架。梯形图的第一个网络是启停逻辑I1.0启动按钮和Q0.0循环泵输出相或之后与上I1.1的常闭点再串联I0.6的常闭点低液位禁止启动和I0.1的常闭点热继电器故障。这个逻辑的含义是要么你按过启动按钮让系统记忆在运行状态要么泵本来就在运行一旦停止按钮按下、水箱缺水或者电机过载输出立即断开。不过光有启停不够水处理系统对循环泵还有一个更高的要求过滤模式和反洗模式下泵的启停顺序不能乱。正常过滤时循环泵驱动水经过砂缸反洗时反洗泵启动同时切换四通阀/电动阀改变水流方向。程序里我加了一个反洗状态中间变量M0.0过滤模式下M0.00反洗模式下M0.01这两个模式对应的电动阀输出Q0.6和Q0.7必须严格互锁。反洗泵的启动条件里还有个隐形的顺序逻辑反洗电磁阀先动作到位I1.4/I1.5反馈或者4秒延时反洗泵才能启动防止憋泵。3.3 投药与消毒泵的控制逻辑投药这块大部分中小泳池用的就是计量泵按时间比例间歇运行。有的项目用余氯在线仪表做PID闭环控制但说实话很多泳池现场的余氯传感器维护跟不上探头脏了读数漂移PID参数设死反而不如时间比例投加来得可靠。我的做法是折中余氯仪表作为趋势参考和高低限报警源日常投加还是靠定时器控制投药泵的运行/停止时间比例。举个例子投药泵A负责次氯酸钠消毒程序里用定时器做一个循环假设设定为运行20秒、停60秒这样一个周期80秒投药泵的平均运行比例就是25%。如果余氯偏低比值切换到运行40秒、停40秒投药比例提升到50%。这个逻辑用两个TON定时器交替触发输出就能实现。S7-200的TON定时器是延时接通型我用T37控制运行时间T38控制停止时间两个定时器互相复位对方形成一个方波振荡器。梯形图里这个振荡器写出来非常短T37的常闭点和T38的常闭点串联驱动M0.1M0.1启动T37T37定时到时置位M0.2并复位M0.1和T38等待时间M0.2常开点驱动T38T38到时复位M0.2再重新启动M0.1。输出的Q0.2投药泵A由M0.1或M0.2的常开点控制同时串联投药桶低液位I0.4的常闭点缺药直接禁止投加并报警。这个逻辑非常实用后面我会提调试中遇到的振荡器停不下来的问题。3.4 反洗程序与定时切换砂缸反洗控制上有个非常关键的工艺点反洗的触发条件是“压差高定时周期”二选一。压差仪表如果没配就靠累计运行时间触发我习惯设定每24小时自动反洗一次反洗持续5到8分钟。反洗过程启动时先要把循环泵停下来切换电动阀让水反向流过砂缸再启动反洗泵反洗结束后恢复过滤模式再重新启动循环泵。这个顺序放到梯形图里用步进指令或置位复位指令写最清晰。S7-200有个SCR步进指令适合这种带严格顺序的过程但很多老工程师不习惯用SCR习惯用置位复位状态位。我两种都试过在反洗这个小流程里我更推荐用状态位加转移条件状态S0表示正常过滤S1表示停止循环泵并切换阀门S2表示启动反洗泵S3表示停止反洗泵并复位阀门S4表示重新启动循环泵回到正常过滤。每个状态用M0.3到M0.7表示转移条件是定时器或者阀位反馈。这里要注意反洗泵启动之前一定要确认电动阀已经切到位。我见过一个项目就是省略了这个确认阀门还没动泵先硬顶着管路启动结果把砂缸里的滤料冲翻整个水质系统崩了。S7-200的阀位反馈信号是数字量输入I1.4和I1.5作为开到位关到位反馈程序里没有这个反馈就加延时保护比如切换指令发出后5秒内没有到位反馈就报警停止这种兜底必须做。3.5 故障报警与复位逻辑报警逻辑我单独做成一个子程序核心思想是“别用梯形图到处散着报警”统一集中处理。每个设备的故障触点进来自动置位对应的报警中间变量报警变量再驱动Q1.0声光报警。组态王读取这些报警变量画面上对应设备图标变红闪烁。这样做的好处是后续加一个报警点位只需要在报警子程序里加一段不用满程序找。故障复位我用了两种方式一种是本地复位按钮按一下如果故障源消失了报警中间变量复位另一种是上位机复位组态王上做一个按钮写复位变量M1.0PLC程序里用M1.0的常开点对报警区做批量复位。这里有个经验报警回路必须有自锁不然故障信号是脉冲型的比如水压瞬断又恢复你不锁存的话操作员根本看不到故障发生过。每次复位前务必确认故障原因已经排除不然复位按钮一按设备又带着故障重新启动容易出安全事故。3.6 温度控制与模拟量处理温度这块我没上PID原因是泳池水容积大、热惯性大用简单的滞回控制效果就很好了。设定目标温度28℃回差设为2℃程序里当温度低于26℃时打开加热电磁阀加热到28℃时关阀。这套逻辑用两个比较指令就完成EM231读到的AIW4原始值先做量程转换实际温度 原始值 / 32000 * 50转换成浮点数。S7-200的浮点运算用起来要小心整数除法之后结果是整数很多人第一次在这边栽跟头必须先用DTR把双整数转成实数再除。量程转换我放在模拟量子程序里每次扫描都算一遍。转换后得到的是VD100余氯实测、VD104 pH实测、VD108温度实测。这几个变量直接作为组态王的通信变量被读取。注意EM231模块连续采集会有微小波动程序里我做了数字滤波把连续三次采样结果求平均波动明显改善尤其是pH信号滤波前后组态王曲线完全是两个样子。4. 接线图与原理图电气设计要点4.1 PLC配电与外部接线方案电气图纸设计环节第一个要敲定的是PLC柜和动力柜的关系。在这个项目里我做的是单柜方案一个800宽的GGD改型控制柜柜内左侧是总开关和动力回路右侧是PLC和中间继电器层中间用隔板分隔。PLC供电这块特别强调一下S7-200 CPU是24V DC供电但很多现场直接从开关电源取24V如果柜内还有变频器变频器启动瞬间的干扰很容易把PLC干死机。我做的是隔离变压器加开关电源给PLC单独一路24V传感器和中间继电器共用另一路24V两路电源地只在一点共地这是抗干扰性价比最高的做法。外部接线图里每个电机的控制回路我标配了“手动/自动/停止”三位转换开关。打到手动挡的时候直接按柜面启停按钮操作接触器打到自动挡的时候接触器线圈由PLC输出中继控制停止挡就是在调试和检修时把回路完全断开。这个转换开关的触点要接到PLC输入程序才能知道当前处于什么模式。控制回路里所有接触器线圈都并联RC吸收器消除断电瞬间的反电动势这个细节能明显减少PLC输出中继触点烧蚀。4.2 主回路与保护元件选型泳池循环泵功率一般从2.2kW到7.5kW不等我们这个项目用的是两台5.5kW循环泵一用一备反洗泵3kW。主回路我用的方案是总断路器进线分支断路器保护每台电机接触器控制启停热继电器做过载保护。断路器选的是D型脱扣曲线D型曲线允许短时启动过载避免电机启动瞬间断路器误跳。接触器选型时注意按AC-3使用类别选额定电流留1.2到1.5倍余量5.5kW电机额定电流大约11A我选的是25A接触器这个余量不是浪费是给线圈电压跌落和触头老化留的。热继电器整定电流按电机铭牌电流的0.95到1.0倍调别整太大不然过载保护形同虚设。4.3 传感器与仪表接线余氯和pH传感器的4-20mA信号线我强调一个原则信号线走独立弱电桥架或者穿金属管绝对不允许和动力线在同一个线槽里并排走长距离。这个项目里传感器到PLC柜距离大约25米信号线用的是RVVP屏蔽双绞线屏蔽层在PLC柜侧单端接地。单端接地的原因是为了避免形成接地环路两端都接地在工业现场反而会引入地电位差噪声。传感器变送器供电我用独立的24V开关电源没和PLC用同一个。原因也不复杂变送器输出4-20mA回路里如果混入PLC数字量输出的通断干扰水质读数会跳变。而且仪表供电电源挂了不影响PLC本体运行故障排查面就缩小了。电气图纸上每个模拟量信号线我都标注了对应的信号类型、量程和变送器型号后期打着手电筒在柜里找线的时候就知道有多重要了。4.4 防雷与接地系统细节泳池控制柜一般放在设备机房接地条件往往不太好但PLC系统对地线质量又极其敏感。我的做法是柜内设置一条独立接地铜排PLC、开关电源、屏蔽层、浪涌保护器都汇总到这个铜排铜排再用不少于10平方毫米的铜导线单独接到机房主接地极不与电机回路共用地线。信号入口我都加了浪涌保护器尤其是余氯和pH的传感器信号这类探头装在池边距离户外不远雷雨季节感应雷打进来直接把EM231模块烧掉的事故我遇到过不止一次。还有些小细节比如PLC的24V电源负极和传感器信号负端的关系。4-20mA变送器如果是四线制信号负端和电源负端在变送器内部是同一参考点如果接法乱了导致信号回路串入额外压降读数值会整体偏移好几个工程单位。接完线用万用表的毫安档串进去测一次回路电流确认PLC侧读到的原始值落在合理区间这一步永远不能省。5. 组态王监控系统搭建5.1 S7-200与组态王的通讯方式选择组态王接S7-200通讯链路的选择基本决定了后面的调试顺畅度。官方推荐的方式有几种通过串口走PPI协议、通过以太网走TCP/IP、通过西门子PC Access做OPC。老项目里S7-200只有串口组态王走PPI驱动没问题但PPI通讯速率低而且组态王和STEP 7 Micro/WIN同时访问PLC的时候偶尔会有冲突。这个项目我选的CPU226自带以太网模块直接走TCP/IP驱动速率和稳定性都好得多。用组态王的“PLC-西门子-S7-200(TCP)”驱动时要正确填写PLC的IP地址和机架号槽号。S7-200在TCP/IP驱动下的槽号默认是0很多新手在组态王里填了CPU的槽号1反而连不上。还有一个坑组态王的S7-200 TCP驱动有时候初始化会报“创建协议组件失败”这跟系统里安装了多个西门子通讯软件有关系解决方法是把SIMATIC NET里的通讯服务停掉或者直接用PC Access方式连接。5.2 变量定义与数据词典配置组态王里建变量是实现监控的第一步。打开数据词典新建变量时注意数据类型对应关系PLC里的数字量位变量对应组态王的开关量变量VD100这种浮点数对应组态王的浮点型内存变量或IO变量。连接设备选好之后寄存器地址填写要按组态王要求的格式比如读VW100的浮点数填的是VD100不允许搞混否则读出来就是乱码。连接变量的时候我习惯把每个变量的采集频率单独设置。温度、余氯、pH这些过程量采样周期设1秒开关量状态设200毫秒设备运行状态的反馈变量设100毫秒。采集频率太高会增加PLC通讯负荷太低又会让操作员觉得画面卡顿这个平衡在泳池项目里按我这个经验设置基本合适。变量建好之后第一时间用组态王“测试”功能手动读一次确认每个变量都能实时刷新这一步能提前暴露八成通讯问题。5.3 画面组态与报警趋势功能画面设计上泳池监控主画面就是一张工艺流程彩图池体、平衡水箱、毛发收集器、循环泵、砂缸、换热器、投药桶、布水口全部用图元画出来设备运行状态用颜色变化表示运行是绿色停止是灰色故障是红色闪烁。数据用标签在设备旁边直接显示看起来一目了然。组态王自带的图库里有水泵、阀门、管道这些基础图元稍微改改就能用非常省事。报警这里组态王可以建立报警窗口把PLC里的报警变量映射到报警组报警优先级设置合理后操作员在画面上就能根据最近事件窗口看到具体故障点。趋势曲线我也做了两组一组是24小时余氯和pH的趋势一组是温度趋势用组态王的实时趋势和历史趋势控件实现历史数据存到本地数据库里方便第二天早上分析夜间水质变化。这里有个运营上的好处有了趋势曲线业主能直观看到每天高峰时段余氯掉得快从而反推投药时间比例和药量该怎么调。5.4 操作权限与安全控制组态王还提供了一个不能忽略的功能操作权限分级。我给这个项目配置了三级用户管理员、操作员、只读观察员。管理员能修改设定参数、切换运行模式操作员只允许启停设备和复位报警观察员只能看看画面不能操作任何阀门按钮。用户权限和密码在数据词典里的“用户管理”中统一配置。这个设计看起来是软件层面的小事但对于这种面向公众经营场所的设施后期审计和安全管理能省不少麻烦。权限设计还要和PLC侧的硬逻辑配合。比如组态王上“启动循环泵”这个操作按钮权限设置成操作员以上但“进入反洗模式”这种涉及工艺流程切换的操作我设置成管理员权限。不是说非要这么做但实操中我发现操作员不小心点了反洗按钮导致整个泳池停循环半小时的事故就是权限没分级惹的祸。6. 调试过程与高频问题排查实录6.1 现场调试的基本流程调试顺序我建议按“先硬件后软件先单机后联调”这条线走。硬件部分柜子通电前先用万用表挨个回路量电阻确认没有短路、没有对地漏电再送主电源PLC部分先单独下载一个空程序确认CPU能正常RUN和STOP切换然后逐个强制输出点测外部回路中继、接触器、电磁阀一个个动过去确认线没接错。这个阶段最花时间但也是事故率最高的阶段绝不能图快。软件部分先调数字量输入把现场的转换开关来回拨看PLC状态位是否跟着变。然后调模拟量把传感器放入标准溶液里观察AIW原始值是否稳定对应标准读数。接着调梯形图逻辑先用仿真状态把条件信号全部断开确认所有输出处于安全状态再逐个置位输入信号验证启停、互锁、报警分支。最后才连组态王验证通讯和画面联调。这样一层层排查真的遇到问题的时候可以准确缩小范围。6.2 常见问题与排查技巧速查调试和运行阶段我遇到的典型问题比较集中这里整理成一张速查表大家可以直接存下来用。现象可能原因排查方法组态王创建协议组件失败系统中存在多个西门子通讯服务冲突关闭SIMATIC NET服务或改用PC Access OPC方式PLC通讯正常但某变量读数为0寄存器地址或数据类型填写错误用组态王测试功能逐点验证核对VW/VD/DB地址余氯数值跳变厉害信号屏蔽层悬空或模拟量滤波不足屏蔽层单端接地程序增加滑动平均滤波循环泵启动后立刻跳停热继电器整定电流太小或电机缺相核对电机电流重新整定热继电器检查主回路接线反洗泵启动时阀门没动作阀位反馈信号未到位或阀门延时不足检查电动阀行程开关程序中增加延时等待逻辑pH值保持恒定不变变送器电缆断线或探头污染万用表检查4-20mA回路清洗或更换探头报警后按下复位无反应故障源仍未消除或复位条件不足检查故障源状态确认故障触点已恢复组态王历史曲线缺数据组态王记录服务未启动或存储路径错误启动历史记录服务检查数据存储路径权限6.3 投药定时器振荡停不下来的处理投药泵时间比例控制里最容易被忽视的坑就是两个定时器互相复位的时序问题。我调试时发现过一种情况程序在上电后第一次扫描T37和T38都未计时M0.1和M0.2都处于复位状态投药泵输出瞬时导通了一个扫描周期然后才进入正常振荡。对投药泵来说这几十毫秒的误动作虽然不会坏设备但会引起计量泵空转几滴药日积月累管路里可能积气。解决办法是在振荡器前面加一个初始化约束条件比如用M0.0系统运行状态作为振荡器的总使能系统没启动时定时器全部复位输出无条件断开。另外两个定时器之间的复位网络顺序我调成了“先断开输出再复位定时器最后启动另一个定时器”避免出现同一周期内两个定时器都处于导通状态的竞态。这类时序问题在S7-200梯形图里需要用扫描周期的思维去理解新手往往把梯形图当成继电器电路来理解总觉得线连上就是通的忽略了扫描顺序带来的细微差异。6.4 组态王与S7-200通讯掉线的处理通讯这块还有一个很典型的故障组态王运行一两天后画面全部变灰重新启动软件又好了。这是典型的以太网通讯阻塞。分析下来有两个原因一是S7-200 CPU的通讯缓冲被定时读取的数据量塞满二是组态王侧的采集频率太高导致PLC通讯任务一直占满CPU资源。解决方法是把不需要实时刷新的变量适当延长采集周期尤其是一些整定参数和累计量没必要每秒读。还有个实用技巧组态王画面里不要放太多动画连接每个动画连接每秒都会触发IO通讯读取。画面图元闪烁效果做得好看但50个动画点就是50次读写请求PLC通讯负担就是这样一点点堆上去的。优化后我把主画面的动画点控制在20个以内稳定运行一个月掉线次数明显减少。6.5 关于图纸和程序的交付习惯这个项目交付时连同PLC程序、组态王工程文件我还给业主附了一套完整的竣工图IO分配表、电气原理图、接线图、柜内布置图并标注了每个元器件的位置编号。这里分享一个我自己的交付习惯所有图纸不仅要给CAD原文件还导出一份带彩色标注的PDF把电缆编号、线号、信号去向全部标清楚。很多运维人员遇到问题并排插检查半天很大原因就是竣工图上信息缺失。梯形图程序这边我在每个网络标题里都写了注释说明这段逻辑控制什么设备、闭锁条件是什么、修改时需要注意什么。S7-200的STEP 7 Micro/WIN支持在每个网络上方添加注解这个功能一定要用起来。带解释的梯形图才能真正让后来维护的人一个月后还敢改程序不然就是一团看不懂的线网。写在最后的一点体会这个泳池水处理项目从设计到调试交付花了不到两个月中间踩过的坑不少但最后运行效果业主非常满意。我个人体会最深的一点是这类水处理控制系统真正的难点不在PLC编程而在对工艺的理解和IO分配的前瞻性。工艺决定了你要控制什么、怎么闭锁、怎么报警IO分配决定了整个系统的骨架梯形图和组态王只是在这个骨架上填肉。如果让我再做一个类似项目我会在前期跟业主把水质变化规律聊透弄清楚高峰客流时段和夜间低谷时段的水质差异再回头推导控制逻辑这样做出来的系统才是真正贴着需求走的。最后再分享一个小技巧所有模拟量仪表的量程和工程单位换算系数务必在PLC程序和组态王里保持一致换算基准不统一导致的显示和实际偏差是水质监控项目里最难排查的暗病从一开始规范好后面能省掉大量扯皮的精力。