接了个供水改造的活客户要求三台11kW的水泵保持出口压力恒定白天用水高峰不能掉压夜里小流量不能频繁启停还要考虑三台泵的磨损均匀。方案翻来覆去比了几轮最后还是落到了西门子S7-1200配合变频器做一拖三恒压供水。这个方案在中小型水厂、高层二次供水、小区增压泵房里非常常见结构不复杂但里面值得细抠的细节很多——从主回路设计、软启动器一拖三接线到PLC里的加减泵状态机、PID整定再到威纶通触摸屏和S7-1200的标签对接每一层都有能让人踩坑的地方。这篇文章把我从设计到调试完整个过程的思路、图纸要点和踩过的坑都写出来给准备上手这类项目的同行做个参照。1. 为什么一拖三比三台变频器更符合供水项目的性价比逻辑先把这个概念说清楚。所谓一拖三不是三台泵同时由一台变频器拖动——电动机做不到这么拖。实际意思是整个泵组只配一台变频器三台电机通过接触器切换轮流挂到这台变频器上做无级调速不参与调速的泵直接用工频电网驱动满速运行。用水量小的时候一台泵变频就够了用水量大了就把这台泵切到工频再把第二台泵挂到变频器上接着调不够就三台全上。整个过程由S7-1200根据压力反馈自动判断。刚入行的朋友经常有一个疑问为什么不干脆配三台变频器每台泵一个变频逻辑简单、切换也少这个问题的答案很现实。同样按11kW算一台国产一线品牌变频器大约3000到4000元进口品牌7000往上。三台变频器光设备成本就比一台高出两到四倍而且实际运行时绝大多数时间只有一台泵在调速另外两台要么停机要么工频满速多出来的变频器长期闲置纯粹浪费。真正需要三台全变频的场景是那种用水量波动极大、且每台泵都要长期低速运行的场合普通恒压供水根本用不上。再说全部工频加阀门调节的方案。这种老方案设备成本最低但有两个硬伤一是阀门节流损耗大电机始终满速电费长期高出一截二是水泵直接工频启动冲击大11kW以上电机直启对电网和泵体都不友好水锤冲击还容易把管道接头打松。一拖三方案用一台变频器做软启和无级调速工频泵启动时再用软启动器过渡一下既控制了设备成本又保住了启动平稳性和节能效果。从运维角度看一拖三还有个好处备件少。全厂只有一台变频器、一台软启动器备件库存压力小出故障也容易替换。下面是三种方案在中小型泵站里的直观对比方案设备成本节能效果启动冲击维护复杂度适用场景三台全变频高最优但大部分变频器闲置小备件多故障点多多泵常年低速大范围调节一拖三中良好调速泵节能工频泵高效区运行经软启过渡较小切换逻辑稍复杂备件少中小型恒压供水主流选择全工频阀门低差节流损耗大大简单对能耗不敏感的临时项目2. 主回路设计的关键软启动器一拖三接线与接触器互锁主回路是这个项目的根基接线出了问题后面程序写得再好也白搭。一拖三供电回路的典型结构是总断路器下来分两路一路去变频器变频器输出侧通过三个变频接触器分别接到1号、2号、3号泵另一路经过软启动器软启动器输出侧再接三个工频接触器同样分别接到三台泵。再加上每台泵的热继电器或电动机保护器以及泵出口的压力传感器、泵腔缺水检测等信号组成完整回路。这里要特别说下软启动器一拖三的两种接法因为很多人问实物怎么接。第一种是软启动器固定拖一台泵。也就是软启动器输出直接接某台泵这台泵作为软启泵专门负责工频启动。另外两台泵工频直接启动或者也通过各自软启回路。这种接法简单但软启动器利用率低而且每一台泵都得配独立启动回路。第二种是软启动器切换拖三台泵这也是热搜里plc软启动器一拖三接线实物对应的常见做法。软启动器输出端并联到三个工频接触器的上端三个接触器下端分别接三台电机。PLC先选择让哪台泵工频启动输出一个选泵信号给对应的工频接触器同时给软启动器启动指令电机软启到全速后软启动器内部旁路接触器吸合电机进入工频全压运行。这种接法最大的注意事项是选泵接触器绝对不能同时导通否则软启动器输出端会短路。常规做法是两个层面同时保证一是PLC程序里做互锁选泵输出只能有一个为真二是接触器本身加机械联锁或者选那种带互锁功能的接触器组。对于大功率场景选型时还要注意接触器的额定电流要按电机额定电流的1.2到1.5倍选频繁切换的项目最好用AC-3类接触器。变频器侧的切换更讲究。变频泵需要从变频切换到工频时很多人想当然地让变频接触器和工频接触器同时换向——这绝对不允许。无论哪台泵同一时刻只能有一个接触器闭合。变频器输出和电网之间没有隔离工频接触器一旦在变频器还在输出时闭合等于直接把电网接到变频器输出端轻则炸模块重则整个柜子报废。正确的切换时序是先让变频器升到50Hz再由PLC发指令封锁变频器输出延时几百毫秒确认输出封死后断开该泵的变频接触器然后闭合该泵的工频接触器完成后变频器解除封锁。这一串动作必须在程序里加延时和状态确认不能靠操作员手动切换。除了强电互锁变频器本身也有输出端反供电保护但不要依赖这个保护来兜底。我的习惯是每个变频接触器上并一个辅助触点反馈到PLC的DI点程序里只有检测到变频接触器已断开这个条件成立才允许闭合工频接触器。这样即使接触器卡住或触点粘连逻辑上也能拦住。3. 加减泵与轮泵策略恒压控制程序的状态机设计控制逻辑是整个项目的大脑。S7-1200要完成的核心任务就三件事测压力、算频率、管水泵切换。前两件事靠PID后一件事靠一套清晰的状态机。先说压力信号。压力变送器装在出水管上输出4-20mA信号进模拟量模块。程序里要把原始数值换算成工程值比如0到1.6MPa量程对应5530到27648的原始值这个归一化处理是PID调节的基础。S7-1200自带PID_Compact指令输入直接接压力反馈输出接变频器频率给定非常方便。这里有个重要的细节PID的输出是什么形式决定了你后面变频器怎么接。如果变频器用0-10V端子给定PID输出走模拟量输出模块如果用Modbus通信给定PID输出要换算成一个字通过通信指令发给变频器。两种方式我都做过Modbus方式省一根控制电缆且能同时读回变频器电流、频率、故障状态调试时信息更全但通信波特率、从站地址这些参数必须和变频器侧完全一致否则现场查半天查不出问题。加减泵的判断逻辑本质上是一个带滞环的比较器。我设计的规则是这样的加泵PID输出达到50Hz上限且实际压力低于设定值0.05MPa以上持续30秒说明单台泵已经满负荷还顶不住压力这时加一台泵。减泵PID输出低于25Hz且实际压力高于设定值0.05MPa以上持续30秒说明当前调速泵能力过剩退出最后一台工频泵。两个信号都加了延时避免用水量瞬间波动导致泵组频繁投切。这个延时参数我用的是30秒现场如果水泵启停较频繁可以适当加大到60秒。轮泵策略是另一个要点。三台泵如果一直按1、2、3的顺序启停1号泵会最先磨损。轮泵的逻辑不复杂用一个轮泵计数器每次系统从停止状态进入启动状态时把计数值加1然后用取余运算决定先启哪台泵。比如计数值是0启1号1启2号2启3号3再回到1号。这样每次循环先启动的泵都不一样三台泵的运行时间基本均衡。实际项目中可以不只在长期停机后轮换更精细的做法是每次加泵时也按顺序选择当前运行时间最短的泵投入工频这需要给每台泵积累运行时间用S7-1200的保持性定时器做也可以。状态机的设计我用了5个状态状态编号状态含义泵组状态0停止所有接触器断开1单泵变频1台泵在变频器上调速运行2一工一变1台泵工频满速1台泵变频调速3两工一变2台泵工频满速1台泵变频调速4故障/手动人工干预或故障联锁状态状态之间只允许相邻切换也就是从状态1只能到状态0或状态2不允许程序上从状态1直接蹦到状态3。这样做的原因是每次加泵或减泵都涉及变频接触器和工频接触器的切换一次只操作一台泵切换冲击最小。如果程序里出现跨状态跳跃一定是逻辑漏洞要回头检查。切换的时序细节我放到下一节细讲因为S7-1200程序里的具体实现才是这个项目的核心工程量。4. S7-1200程序实现的核心PID_Compact参数与切换时序硬件配置我先列一下参考CPU用的1214C DC/DC/DC数字量输出点不够的话加一个SM1222扩展模块模拟量输入用SM12318通道4-20mA压力传感器和几台泵的电流反馈都够用了。如果变频器走Modbus通信再加一个CM1241 RS485模块。这套配置在中小型泵站里非常通用备件也好买。程序结构主要靠OB1循环调用三个功能块一个PID调节块一个泵组状态机块一个通信和故障处理块。每个功能块用FC封装接口变量留清楚后期维护时思路会很清晰。PID_Compact块是TIA Portal里的标准库指令拖进OB1就能用。关键参数设置如下Input压力反馈工程值单位Bar或MPa对应0-100%Setpoint压力设定值由触摸屏写入范围0.3-0.8MPaOutputPID输出接模拟量输出或通信字PID参数比例增益P2积分时间TI0.8s微分不启用恒压供水属于大惯性、小滞后对象压力变化相对慢P太大容易震荡P太小响应慢。我调试了三个泵站起始参数都是P2、TI0.8s实测效果都还能接受再根据现场微调。这里有个容易被忽略的点压力变送器信号如果波动大不要急着调PID参数先检查是不是变送器安装位置离泵出口太近水流紊流导致读数跳变。如果是在PID输入端加一个几十毫秒的均值滤波比调参数管用得多。加减泵切换时序我写成了一段结构化文本SCL状态逻辑核心思路是每个切换动作都拆成多步每步用定时器确认完成后再走下一步。以从状态1单泵变频切到状态2一工一变为例第一步检测到加泵信号ADD_REQ置位切换中标志闭锁PID输出变化PID输出强制保持当前值。 第二步延时0.5秒让系统稳定。 第三步变频器封锁输出延时0.3秒。 第四步断开当前泵的变频接触器等待该接触器辅助触点反馈已断开超时则报错。 第五步闭合下一台待投泵的工频接触器或通过软启动器回路软启该泵延时等待启动完成信号。 第六步把变频器输出切换到新泵的变频接触器解除PID封锁PID重新自动调节。减泵时序反过来先让新泵挂上变频器再断开待退泵的工频接触器。每一步之间都有条件确认任何一步超时程序进入故障状态同时触摸屏上弹出对应提示。这种step by step的写法虽然代码量比一次性置位复位多但现场查问题非常方便——哪一步没走过去看状态字就知道卡在哪。变频器通信如果有需要用MB_COMM_LOAD加MB_MASTER指令块。S7-1200做Modbus主站频率给定写保持寄存器电流和故障字读输入寄存器。通信参数我一般设9600波特率、8数据位、1停止位、无校验变频器侧保持一致从站地址1。需要注意Modbus写频率时很多变频器要求先用功能码写运行命令再写频率值这个顺序逻辑也要在程序里体现。触摸屏上我留了手自动切换开关。自动模式下PID和状态机全权控制手动模式下操作员可以直接点击每台泵的变频启动、工频启动、停止按钮这主要是方便检修和单机调试。注意手动模式一定要绕过状态机的同时保留互锁逻辑——接触器的互锁是安全底线不管手自动都必须生效。5. 威纶通触摸屏接入S7-1200标签导入与通信设置人机界面选的是威纶通原因很简单性价比高EBPro组态软件上手快而且它对西门子S7-1200的支持做得比较成熟。但成熟不等于没坑这里最典型的一个坑就是标签导入。很多人第一次做威纶通连1200的项目直接在EBPro里手动一个个建地址比如DB1.DBD0写个浮点填进去。数据点少还好等画面里要放十几个压力、频率、状态变量时手动填地址不仅累还容易填错。正确做法是从TIA Portal里导出标签再导入EBPro。TIA侧操作步骤在TIA Portal项目里把需要给触摸屏访问的DB块选中右键属性取消勾选优化块访问。这一步非常关键因为优化块访问的DB没有固定偏移地址外部设备无法直接按地址访问。编译无误后找到HMI标签表或变量表用导出功能生成CSV文件。注意导出时选择带地址信息的格式把变量名、数据类型、绝对地址都导出来。EBPro侧操作步骤新建工程PLC类型选Siemens S7-1200以太网CPU型号尽量选一致的。在系统参数里设置PLC的IP地址必须和S7-1200的PROFINET口IP在同一网段比如PLC是192.168.0.1触摸屏就设192.168.0.10。菜单栏标签→导入标签选择刚才从TIA导出的CSV文件按提示映射数据类型。导入完成后画面组态时直接引用标签名不要再手填地址。导入过程中我遇到的几个实际问题和对应处理一是数据类型映射错位。TIA里的Real对应EBPro里的32-bit FloatInt对应16-bit SignedBool对应Bit。如果导出来发现地址偏移或者数值读出来不对多半是这里没选对。二是优化块访问没取消导入后标签地址全是空气通信永远是0。解决方法是回TIA取消勾选重新编译导出。建议做之前就把所有需要外部访问的DB统一取消优化不要等现场再改。三是S7-1200侧要开放PUT/GET通信访问。在PLC属性里勾选允许从远程对象进行PUT/GET通信访问否则威纶通只能读不能写或者干脆连不上。四是通信不上时先排查网线和IP再看防火墙。威纶通触摸屏的网口和S7-1200之间用普通工业网线直连即可如果经过交换机要确保交换机端口没隔离。实际现场遇到九成通信问题都是IP网段不一致。画面组态方面主画面我会放四块区域上侧是实时压力曲线中间是设定值加减按钮和实际压力大字号显示下侧是三台泵的状态指示灯和运行模式选择底层做故障报警弹出窗口。做曲线时注意EBPro的历史缓冲区要分配足够内存采样周期设1秒这样才能看到PID调节和切换过程的水压波动趋势这个趋势图在后期的调试里非常有用。6. 现场调试实录PID整定、切换冲击与常见故障定位项目调试里最耗时间的不是程序逻辑本身而是现场各种意料之外的现象。我把这个项目里最具代表性的几个问题整理出来。第一个是PID参数整定。按照初始参数P2、TI0.8s单品泵变频运行时压力基本能稳住但有轻微周期波动大约每10秒一个来回。原因分析压力传感器离泵出口太近出口涡流导致反馈信号本身波动PID看到波动就跟着调形成振荡。我在模拟量输入里加了平均值滤波窗口取20个扫描周期波动明显减小。这里给个建议调PID之前先看反馈信号质量信号都不干净调参没有意义。第二个是加减泵切换瞬间的水压冲击。症状是加泵动作后压力先掉0.1MPa再冲高0.15MPa持续十几秒才恢复。这是典型的切换时序问题。问题出在先断变频接触器、再合工频接触器这个空隙里旧泵已经脱离变频器但还没挂上工频管道瞬间失压紧接着工频泵全速启动压力又冲高。解决办法是把加泵条件阈值调紧一点让切换发生在压力已经偏低而不是压力刚好到设定值的时候同时把切换过程分成两步先把新泵通过软启动器工频启动待压力上升后再切换变频泵切换完成后再让PID慢慢回调。调整后冲击幅度降到了0.05MPa以内可以接受。第三个是软启动器旁路不吸合。PLC给了软启动指令电机也在转但软启动器一直不切旁路导致PLC一直等不到启动完成信号状态机卡在中间。查软启动器参数发现是旁路切换条件设置了电流阈值启动过程中电流还没降到阈值以下所以不切换。把旁路条件改成全速运行时间模式设定为斜坡升速时间加2秒问题解决。这类问题提醒我软启动器的参数说明书要提前看不同品牌的旁路条件默认逻辑不一样现场临时翻说明书最浪费时间。第四个是压力变送器断线导致的误加泵。现场突然全部泵都启动压力飙高。查原因压力变送器信号线松动AI模块读到的值变成超量程的下限4mA以下程序判定压力为0加泵条件一直满足于是一台接一台往上加。处理方式分两层程序里加断线检测如果AI原始值小于量程下限的5%判定传感器故障并闭锁自动加泵接线端子上用弹簧端子压紧不再用普通螺丝端子。故障现象可能原因排查/处理通信不上IP网段不一致、PUT/GET未开放检查IP、勾选允许远程访问变频器报过流切换时接触器未完全断开检查互锁反馈加强制延时压力波动周期振荡传感器信号跳动输入滤波先稳信号再调参软启动不切旁路旁路条件设置不当改时间模式或调电流阈值误加泵导致压力超高传感器断线程序加断线检测物理端子压紧7. 程序上传、备份与密码交接的规范化操作项目收尾阶段最容易被忽视、也最容易埋雷的是程序备份和密码交接。我见过太多交接不清楚的项目后期运维人员拿到设备想改个参数进不去程序找原单位又找不到人只能干瞪眼。先讲备份。S7-1200的程序备份分两个层面。第一个层面是用TIA Portal的从设备上传功能把设备里的程序完整拉出来。这个操作要求电脑能连上PLC且PLC没有设置禁止上传的保护级别。上传成功后建议再做一次归档操作把整个项目打包成ZIP文件连同触摸屏工程、变频器参数表、图纸一起存到一个以项目名称命名的文件夹里交给业主或者运维负责人。第二个层面是硬件级备份。如果担心程序被误删可以买一张S7-1200的存储卡在TIA Portal里配置程序卡模式把程序下载到存储卡上。PLC运行时优先执行卡里的程序卡里的内容也方便批量复制到同型号设备上。做过批量泵站项目的朋友应该懂这个操作的价值——几十个站点同样配置一张卡克隆完事。关于上传密码清除这个热词我多说两句。S7-1200在固件V4.0以上引入了块保护机制有完全访问读保护HMI访问保护不可访问等不同级别。如果交付时设置了保护密码上传上去的程序块是加密的即便拉下来也不能打开看逻辑。所以我一直强调密码必须在交付资料里明确记录和程序归档文件放一起。万一真的出现密码遗失的情况正轨做法是联系西门子技术支持对于合法维护场景可以通过官方存储卡恢复流程处理更实际的预防措施是调试期间不要急着设密码等全部验收通过后再设置并立即记录在案。密码不要只存在一个工程师的脑子里——这句不是开玩笑我实际遇到的项目里因为工程师离职导致整套程序无法维护的情况至少见过三次。备份和密码做完后还有一件小事在触摸屏里把项目名称、调试日期、调试人加到开机画面的版本信息里以后谁到现场一看就知道这个站是什么版本有没有改过。细节看似不起眼长期运维时能省很多沟通成本。8. 写在最后的一些体会整套一拖三恒压供水项目做下来我最深的感触是这个系统的难点不在硬件也不在单个程序指令而在切换时序这四个字。三台泵、一台变频器、一台软启动器设备就这么多但任何一次泵组状态变化都要经历一串精密的安全动作任何一个环节没考虑到轻则水压波动重则设备损坏。这也是为什么我写这篇文章时把状态机和时序放在最核心的位置反复讲。另一个体会是关于调试方法。现场问题不要急着改程序先花时间把现象观察透拿趋势图记录压力、频率、电流的变化过程往往问题本质就藏在曲线里。比如前面提到的切换冲击就是因为趋势图上一段明显的凹陷冲高才定位到时序问题。工控调试本质上是个用数据说话的活。这个项目做完后我又在另一个泵站上复用了这套程序框架只改了量程、PID参数和泵的数量一天就完成了单体调试。框架的力量就在这里。希望对正在做或准备做同类项目的朋友能有些帮助。