PLC恒压供水系统实战:S7-200 PID整定与威纶通HMI调试避坑指南 📅 发布时间:2026/9/9 18:07:12 👁 浏览次数: 做这套系统的时候我其实没打算写得太复杂。恒压供水是个非常经典的PLC入门级实战项目但真正动手做完从图纸到通水调试踩的坑一点都不比大型项目少。这篇文章就直接以我调试完成的这套“威纶通TK6070iP S7-200/224XP 变频器恒压供水系统”为例把硬件选型、程序框架、PID参数整定、HMI画面、通讯故障排查从头捋一遍。不管是拿来应付毕业设计、做工程样板还是想搞懂PLC控制变频器恒压供水这套流程你都能从中找到能直接抄作业的东西。1. 系统整体设计与选型思路1.1 恒压供水为什么绕不开PID恒压供水说白了就是让管网出口压力维持在一个设定值上用户用水量一变泵的转速就得跟着变。这种“出口压力恒定”的要求天生就是一个闭环调节问题压力传感器反馈实际压力PLC拿它跟设定值比较算出一个输出量去调节变频器频率改变电机转速。这里面最关键的算法就是PID因为它面对的是一个水系统不是纯电子负载水压变化有大惯性、大延迟而且用水量随时在变普通开关量控制根本压不住波动。很多人一开始会问能不能直接根据偏差大小控制变频器加减频率不用PID简单场合确实可以但一旦管网长度、用户用水习惯发生变化这种“拍脑袋”控制很容易振荡。PID里的积分项会把历史偏差累计起来比例项负责快速响应微分项抑制过冲三者配合才能让压力稳定在设定值上下。S7-200本身有PID向导和PID指令根本不需要自己写积分逻辑关键是参数要会整定这个后面会单独说。1.2 硬件选型为什么是S7-200/224XP和TK6070iP先说明一下这套系统的硬件构成很多人会困惑为什么不选S7-1200或者Smart系列其实S7-200/224XP虽然已经停产多年但在存量市场里保有量非常大大量老的供水设备、锅炉房、污水处理站用的都是它。224XP这个型号很特殊CPU本体自带2路模拟量输入和1路模拟量输出这意味着做恒压供水时压力变送器的4-20mA信号可以直接接进本体AIW变频器频率给定信号可以直接从本体AQW输出不需要额外扩展模拟量模块成本低、故障点也少。威纶通TK6070iP是一款7寸的经济型触摸屏支持RS232、RS485和以太网编程软件是EB Pro。为什么选它而不是西门子的Smart屏首先是价格优势很明显其次是威纶通对S7-200的支持做得非常成熟驱动里直接有S7-200的PPI通讯驱动设置简单画面响应速度也不错。对于这类中小型系统TK6070iP完全够用。除开PLC和触摸屏还需要一台变频器和一个压力变送器。变频器选用通用型即可比如西门子MM420/440、V20或者国产英威腾、汇川都行只要能接受外部模拟量给定信号就行。压力变送器建议选择两线制4-20mA输出量程一般选1.0MPa左右供电24V这个信号传输距离远抗干扰能力强是最稳妥的选择。1.3 控制方案总体框架这套系统按照现场需求设计了三种运行方式手动、自动、检修。手动模式方便现场调试和应急直接通过HMI或者柜门按钮启停泵频率和压力值只做监视不做调节自动模式是核心工作方式PLC内部做PID运算根据压力偏差自动调节变频器输出频率维持管网压力恒定检修模式用于故障时强制运转一般配合接触器直启使用避开变频器。项目初期只考虑单台泵变频运行如果未来要扩展成“一用一备”或者“多泵循环”程序里预留了泵切换的逻辑只需要把另外一台泵的接触器和热继电器的I/O点加进去把主泵和备泵互锁逻辑补上即可。但第一版一定要保持简单先把压力调节跑通再谈冗余和轮换。2. 硬件接线与通讯搭建2.1 核心接线压力变送器、变频器与PLC这套系统接线不算复杂但一点都不能马虎。压力变送器两线制接线正极接DC24V负极接PLC的AI输入通道。S7-200/224XP自带的模拟量输入位于端子的A、B、A-、B-对应AIW0和AIW1通道。这里必须注意的是224XP模拟量输入端子之间的电压范围是0到10V或0到20mA如果用4-20mA传感器必须在通道端子上并联一个500欧姆精密电阻把电流信号转成电压信号因为224XP本体AI不支持直接接电流这点跟S7-200模块化EM231电流型不一样很多人第一次接都会栽在这里。我实际是这样接的压力变送器的电流回路进入A端然后在A和A-之间并联了一只250欧电阻这样4-20mA对应1到5V电压信号刚好落在AI通道量程范围内。如果不并电阻直接用0-10V电压档接电流传感器读数会完全不对甚至可能烧坏输入通道。并电阻后PLC侧需要把模拟量通道量程设置成0-5V或者匹配1-5V对应AIW0的数字量0到32000。变频器的频率给定信号从224XP的模拟量输出端AQW0取端子是I0和M0。AQ通道输出0-10V电压接到变频器的模拟量输入端子VI和GND上。变频器要设定为外部端子给定频率默认的模拟量输入类型通常是0-10V这个通常不用改。如果变频器支持4-20mA输入也可以把AQ输出改成电流型但S7-200本体的模拟量输出默认是电压0-10V通常情况下直接接电压型输入更省事。启动/停止信号从PLC的Q0.0接到变频器的数字量输入端子作为自动模式下的启停控制。2.2 PLC与触摸屏的PPI通讯配置TK6070iP和S7-200连接我首选的是PLC上面的Port 0口走PPI协议只需要一根RS485线。S7-200的DB9针口定义是3正8负触摸屏侧如果是COM2连接器也是RS485两线制接线方法在威纶通说明书里有明确标注。这里特别提醒通讯线一定要用双绞屏蔽线屏蔽层在PLC端单端接地否则现场变频器一启动触摸屏画面就会不断闪烁甚至灰屏。通讯参数方面PLC的Port 0波特率常见设置为9600站号设为2。触摸屏EB Pro软件里新建工程时选择“Siemens S7-200”接口选RS485站号填2波特率9600数据位、校验位、停止位跟PLC端保持一致。在PLC端Micro/WIN软件里双击“通讯”设置把CPU的站号改成2波特率设成9600并把PPI协议勾选上。很多初学者会忽略一个细节触摸屏和Micro/WIN软件不能同时占用PPI主站去访问PLC调试时如果Micro/WIN还连着PLC触摸屏会通讯超时这属于正常现象。如果这套系统选用了带CP243-1以太网模块的配置也可以用网线直连触摸屏侧选择S7-200 Ethernet驱动。TCP方式唯一的优势是速度快、方便下载程序但对入门用户来说RS485的PPI方式反而更稳定可靠。首次使用以太网驱动时需要正确填写CP243-1模块在Micro/WIN以太网向导里分配的IP地址和TSAP参数稍有一点不匹配就会一直在连接里转圈。2.3 总是“重启后只能连一分钟”的坑我在网上看到有人反馈TK6070iP通过以太网连接S7-200时每次冷启动PLC或触摸屏后设备只连接保持大约一分钟之后就会掉线必须重启设备才能恢复。这个问题我在加载CP243-1模块时也遇到过其实根因多半在S7-200侧的以太网向导配置。CP243-1在STEP 7-Micro/WIN的以太网向导中有一个“保持活动间隔”的选项如果这个间隔设置得太短比如10秒CP243-1每隔10秒会发送一个保持报文而如果触摸屏和PLC之间的数据交换频率较低可能造成连接被误判为超时断开因为CP243-1的一条TCP连接资源是在PLC侧静态占用的一旦断开只有重启模块才能释放资源。还有一个更隐蔽的问题某些旧版本的威纶通驱动在TCP连接断开后不会自动重连而是会一直停留在等待状态表现就是只能在重启后连上一分钟。解决办法一是优先使用RS485 PPI彻底绕开TCP连接问题二是如果必须用以太网在Micro/WIN里把“保持活动”间隔设置为20秒同时把触摸屏的通讯超时时间调短例如5秒如果驱动有“重连接”选项一定要勾选上。调试时把二者绑在同一个交换机上不要跨三层网络可以大大减少这类故障。3. 西门子S7-200程序设计与实现3.1 程序结构主程序、子程序、中断S7-200的程序由主程序、子程序和中断程序组成。我习惯把恒压供水的程序按功能拆成几个子程序初始化子程序、模拟量采集标定子程序、PID运算子程序、启停控制子程序、报警子程序。主程序每一扫描周期依次调用这些子程序逻辑清晰后期维护找问题也好定位。初始化子程序只需要在PLC上电后运行一次用SM0.1作为触发条件完成以下几个工作把PID回路表和输出值清零把手动自动模式标志位恢复为自动读取HMI下发的设定压力值并存入VD104把变频器给定频率清零复位各路报警标志。初始化很重要否则PLC断电重启后可能保持上一次的运行状态造成意外的启泵或超压。模拟量采集部分把AIW0的压力传感器原始值读出来后需要标定成0.0到1.0MPa的工程量。比如224XP在0-5V量程下对应AIW0数值0到32000而实际的变送器输出1-5V对应0到1.0MPa所以编程时要先算出0到5V的数字范围再做线性映射。我经常看到有人直接拿AIW0去掉符号位就当成压力值用结果因为数值范围不对PID输出全乱了所以标定这一步一定不能省。中断程序主要用于高速计数、通讯或定时中断在这个项目里我用一个定时中断去执行模拟量采集和PID运算确保PID采样周期准确。不过如果只是单泵恒压供水采样周期要求不高在主程序里每个扫描周期调PID也没问题。S7-200的PID指令本身带有采样时间参数只要保证PID被调用的频率不低于采样时间要求即可。3.2 PID回路表与指令使用要点S7-200的PID指令在Micro/WIN的指令树里直接拖出来用它需要一个V存储区作为回路表我把首地址定在VB100。回路表里要填写的关键参数包括过程变量PV、设定值SP、输出值Output、增益Gain、采样时间、积分时间、微分时间以及偏置量。这个表的结构在S7-200系统手册里有详细说明编程时建议用PID向导生成因为向导会自动把表结构和输入输出地址映射好比自己手动填省事得多也不容易把地址搞错。有一点必须提醒大家S7-200的PID指令默认需要把过程变量和设定值归一化处理也就是换算到0.0到1.0之间的实数。我通常把压力变送器量程0-1.0MPa映射成0.0到1.0这样AIW0读到的0到32000除以32000就得到PV值设定压力0.5MPa也对应SP0.5。如果不做归一化PID比例项会直接失控输出几乎不是饱和就是震荡。PID输出值也是0.0到1.0之间的实数我把它乘以32000写进AQW0对应变频器0-10V的满量程频率给定。这里可以加一个频率上下限限制比如下限20Hz上限50Hz防止水泵低频运转导致电机过热或者压力过低。需要特别注意的是PID输出为0.0到1.0而变频器如果设定为0Hz停机可能导致水泵在管网压力已经超高时转速缓慢变化所以我一般会在自动模式下增加一个“下限频率给定”的阀值低于这个值直接给0V并停机高于这个值再按比例输出。3.3 启停、手自动切换与保护逻辑这套程序里启停控制逻辑的优先级从高到低依次是急停、干运转保护、变频器故障、超压保护、自动模式启停、手动启停。急停信号接到PLC的I0.0常闭触点一旦按下Q0.0立即断开变频器停止输出同时触摸屏弹出急停报警。干运转保护用压力开关的常开点接入I0.1如果管网压力低于0.05MPa持续说明水池缺水或者泵入口没有水程序立即停泵并锁存报警防止泵空转损坏机械密封。手自动切换我用了触摸屏上的一个位开关保存在M0.0。M0.0为0时是自动模式PLC根据PID计算结果自动控制变频器启停和频率M0.0为1时是手动模式操作工在HMI上直接点启动/停止按钮频率设定由HMI给定PLC不参与调节。手动模式主要用于调试和检修这个逻辑用一句话总结就是手动优先于自动保护逻辑永远是最高优先级。主程序里还要处理变频器故障信号。变频器故障继电器接入I0.2正常时是通状态故障时断开。我采用常闭接法即使变频器掉电PLC也能感知到断线这样不会漏报故障。故障发生后程序停止输出触摸屏报警窗口显示“变频器故障”并记录故障发生时间方便后期查原因。3.4 与HMI之间的数据交换规划触摸屏和PLC通过PPI通讯数据交换其实很简单。我在程序里规划了一块V区地址专供HMI使用主要包括压力设定值VD100但我把PID表安排在了VD120以避免冲突这里以实际为准、运行频率显示VD200、当前压力VD204、故障状态MW210、手自动标志M0.0、启动停止按钮VW220等。块规划清晰后HMI画面上每个元件的地址只需要对着这张表填调试时也不会出现PLC端和HMI端地址不匹配的问题。另外提醒一点S7-200的V区地址在HMI里用VW、VD表示但触摸屏里可能显示为LW、LB等不同形式其实本质都是V区地址数值范围和格式要注意区分。我通常把所有模拟量都定义成实数浮点数这样HMI显示的时候可以直接用数值显示元件无需再做进制转换。如果用的是整数类型还要考虑小数点的位置显示容易出错。4. 威纶通TK6070iP画面制作与联调4.1 画面总体布局TK6070iP用EB Pro软件组态新建工程时选择机型TK6070iP通讯驱动选Siemens S7-200。我做了五个主画面主监控画面、压力趋势画面、手动操作画面、参数设置画面、报警记录画面。主监控画面是值班人员最常看的页面顶部用大字显示当前管网压力、压力设定值、变频器运行频率和泵运行状态中间放一台水泵的示意图用状态指示灯表示运行、停止、故障三种状态底部放“自动/手动”“画面切换”按钮。压力显示元件关联VD204数值格式是一位小数单位MPa这样可以直观看出压力是否满足设定。压力趋势画面用水HMI自带的趋势图控件读取VD204并实时生成曲线时间轴可以设成10分钟滚动显示。趋势图是调PID时最好用的工具观察压力曲线是过冲还是振荡比看数字直观十倍。现场调试时我就是一边手动改变设定值一边盯着趋势曲线去调节PID参数几次就能找准合适的增益和积分时间。手动操作画面只在M0.0为1时开放有启动、停止按钮频率给定用滑杆或者数值输入控件并实时显示当前输出频率和压力反馈。这个画面专门给维修工用防止误操作。参数设置画面用户只能修改压力设定值和PID参数工程密码保护防止现场操作工随意改动PID增益导致系统失控。4.2 关键元件设置及地址对应这里重点说一下地址设置的细节。在EB Pro里新建一个“数值显示”元件服务端地址要填V区实际地址例如显示当前压力地址填VD204类型选32位浮点数。如果是压力设定值输入地址填VD100类型同样选浮点数因为PLC端的PID设定值SP就是浮点数。如果地址类型不一致比如PLC里是整数而触摸屏里按浮点读读出来的数字会完全错误这点特别容易踩坑。启动/停止按钮我用的是“位状态切换开关”地址设为M0.0可以做成“瞬时”型或“交替”型。在自动模式下我一般不用这个按钮而是用“自动运行”位开关M0.1由操作工按下后PLC程序里做上升沿检测并置位运行标志。如果按钮没有做上升沿处理可能出现按下时运行松开就停的矛盾情况。所以我在PLC程序里把启动信号的处理统一改成了沿触发。报警画面里我使用了HMI的事件登录和报警显示功能PLC把各个报警状态写入VW210HMI端通过“事件登录”功能当VW210的某个位变化时弹出报警消息。这样即使画面不在报警页也能第一时间弹窗提示避免操作人员漏看。4.3 画面下载与在线调试EB Pro编写完成后用USB线连接TK6070iP的USB下载口选择“下载”按钮触摸屏会自动进入下载模式并提示系统重启。下载完成后最好先启动在线模拟把PLC程序下载到CPU在EB Pro里运行“在线模拟”这样调试时既能看到PLC实际数据又不用反复下载工程能省不少时间。画面调试时要养成一个习惯先核对PLC侧的V区数据再核对HMI显示的数值。我会打开Micro/WIN的状态表同时监控VD100、VD204、AQW0这些关键地址的状态然后在HMI上修改设定值看PLC状态表有没有同步变化。如果HMI写的地址没生效多半是地址格式或数据类型不匹配如果PLC算出来的频率跟HMI显示的不一致要考虑字节顺序问题尤其是32位浮点数的字序S7-200是高字在前有些HMI默认按低字在前读取这时需要在驱动设置里选择“字顺序”或“字交换”默认是“Big Endian”还是“Little Endian”要按实际情况调整。5. 现场调试避坑指南5.1 PID参数的现场整定实操记录我先说结论恒压供水PID参数整定别迷信什么公式手动现场调是最快的。我一般按“先P后I最后微调D”的顺序来。第一步把所有积分时间设得很大比如3600秒微分时间设0比例增益先给一个保守值比如0.5。然后让系统自动运行看压力曲线的振荡情况。如果压力从设定值附近上下震荡且波动越来越大说明增益太大降到0.2再测。第二步比例增益基本稳定后逐渐减小积分时间。恒压供水这种大惯性系统积分时间从60秒开始试比较稳。观察压力恢复到设定值的速度和超调量如果恢复太慢把积分时间调短如果一恢复就过冲来回震荡再增大积分时间。一般我最后整定出来的增益在1.0到2.0之间积分时间在80到150秒之间这样压力波动能控制在正负0.02MPa以内。第三步微分时间一般直接设0就行因为压力传感器信号本身波动不大微分容易把噪声放大反而让变频器频率上下跳。有些项目里为了抑制超调会把微分时间设成2到5秒但我个人的经验是供水系统延迟大PID的微分项用不好会非常灵敏除非实在压不住超调否则不建议启用。5.2 常见故障一览与排查措施这里把我在这个项目里踩过的坑汇总成一个速查表方便大家直接按图索骥。故障现象可能原因排查/处理方法触摸屏一直显示通讯超时波特率/站号不一致通讯线正负接反核对PLC Port0站号和波特率检查触摸屏驱动设置换屏蔽线压力显示值明显偏高或偏低变送器未并电阻或量程选择错误模拟量通道标定不对确认4-20mA回路并接250欧电阻检查AIW0量程是否选对用万用表测变送器电流PID输出饱和压力始终上不去设定值可能高于变送器满量程PID未归一化泵选型偏小检查SP是否在0到1.0之间确认PID表参数复核泵扬程流量自动模式下泵启停频繁压力设定值和实际值靠得太近PID积分反复触发启停增加启动/停止回差例如启动时V0.45MPa停止时V0.5MPa变频器不启动但PLC输出频率有值Q0.0到变频器正端接线松动变频器未设外部启停模式检查回路和变频器端子参数确认Q0.0输出类型是继电器还是晶体管触摸屏频繁掉线重启恢复PPI通讯质量差触摸屏与Micro/WIN同时占用检查屏蔽层接地调试时断开Micro/WIN连接泵启动后水压超调很多比例或微分参数不合适PID未做输出限幅降低增益增大积分时间限制PID输出最高频率上限5.3 几点现场经验总结这套系统调试到通水稳定最让我有感触的还是细节。第一压力变送器的安装位置很关键最好装在泵出口的止回阀之后远离水泵出口的直管段这样测出来的压力更接近用户端的真实压力不会因为泵出口涡流导致波动大。第二电气柜内的24V电源尽量单独给变送器供电不要和PLC输出模块、触摸屏共用同一个开关电源的同一路输出否则变频器启动瞬间的电压跌落会让触摸屏直接黑屏重启。还有一个真实体会现场联调前一定要先用万用表确认变送器的输出电流。我以前遇到过变送器损坏输出固定4mA结果程序里PID一直算出压力接近零然后拼命加大输出把变频器频率推到50Hz压力却始终为零。当时查了半天都没查出来最后用钳形表量了一下变送器回路电流才发现是变送器坏了。类似这种看起来很“程序问题”的现象至少有三分之一其实是硬件信号问题所以不要一上来就怀疑PID参数。自动模式稳定运行后我还建议在HMI上加一个“偏差过大报警”。当实际压力和设定值偏差超过0.1MPa持续30秒就触发报警提示这能提前发现水泵抽空、管道破裂或者变送器漂移等隐患。很多系统运行一段时间后出问题往往不是PLC程序坏了而是外部传感器或者机械本体出了状况有这么个报警项维护人员能第一时间到现场处理。6. 项目扩展与建议恒压供水这套系统做完以后如果还想继续往深了做可以在现有基础上扩展成双泵交替运行或者加入远程监控功能。TK6070iP本身支持以太网可以加一个WiFi或者4G模块把现场压力、频率、启停状态上传到云平台实现手机端监控。S7-200的CPU如果剩余点数和模拟量通道够用增加一台泵的启停和故障接点并不复杂只需要在程序里增加泵切换逻辑把当前泵运行时间、故障状态和备用泵启动条件加进去即可。程序层面我建议后续再增加一个“休眠唤醒”功能。夜间用水量很小时管网压力下降缓慢可以让变频器进入休眠水泵停机依靠管网余压维持压力当压力下降到某个阈值时自动唤醒水泵运行。这个功能对降低能耗和机械磨损效果非常明显很多自来水公司的恒压供水系统都有这个功能。实现起来也不难只需在自动模式里加两个压力回差变量和一个定时器压力低于启动阈值持续10秒以上再启动压力达到设定值后继续运行30秒再停机。最后再说一个我自己的习惯每次改完程序或者HMI工程后一定要做一份完整的备份并记录版本号和修改日期。S7-200的老项目特别容易出现维护人员换了几波后已经没人知道当前运行的CPU里烧的是哪一版程序了。我会把Micro/WIN的工程文件、EB Pro的工程文件、接线图、I/O表、PID整定记录全部打包存在同一个文件夹里并在触摸屏的“系统信息”画面里显示一个版本号这样可以少很多不必要的麻烦。