ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

三菱PLC+组态王+变频器恒压供水系统调试要点与PID参数整定实战

三菱PLC+组态王+变频器恒压供水系统调试要点与PID参数整定实战 做恒压供水系统调试最怕的不是程序写不出来而是变频器频率在PID调节下像呼吸一样忽高忽低水泵电机跟着一阵阵嘶吼管网压力表指针来回甩。这种情况我见过不少问题往往不在程序逻辑而在模拟量标定、PID动作方向、变频器参数和组态王通讯这些被很多人当成“默认正确”的环节。这篇文章围绕“三菱PLC 组态王 变频器恒压供水”这套组合把我做过的项目里那些能直接复用的控制思路、参数设置、组态方法和联调顺序完整梳理一遍。适合手里有PLC基础、正准备做供水项目或者已经接了恒压供水改造但还没完全跑通的人。内容以FX3U系列PLC为例结合组态王的上位机监控讲的是从传感器信号到变频器频率再到上位机画面的完整链路。1. 恒压供水系统的控制对象与整体架构1.1 恒压供水到底在“恒”什么恒压供水的核心不是把水泵开起来那么简单而是让管网出口压力始终贴近设定值。用水量小的时候如果水泵还全速运转压力会超标能量全浪费在阀门和管阻上用水量大的时候转速不够又供不上水。变频调速解决的正是这个问题压力低了就提速压力高了就降速让水泵的出力跟随用水量实时变化。从节能角度看泵类负载的轴功率和转速的三次方成正比。转速从50Hz降到40Hz理论上轴功率能降到原来的51%左右。这也是为什么恒压供水改造方案往往能用“省下的电费”收回设备成本。从控制角度看它本质上是一个典型的闭环压力调节系统压力变送器是测量环节PLC是运算环节变频器与水泵是执行环节。1.2 一套最小可用系统由哪些部件组成标题里四个关键词——三菱PLC、组态王、变频器、恒压供水——对应的硬件清单如下部件典型型号/方案作用控制器三菱FX3U系列PLC信号采集、PID运算、逻辑判断、输出控制模拟量模块FX3U-4AD / FX3U-4DA读取压力变送器电流信号输出频率给定电压压力变送器4-20mA两线制量程按现场需求选把管网压力转成标准电流信号变频器三菱FR-E700/F800系列根据模拟量给定电压调节水泵电机转速水泵电机一般配置1台变频泵加若干台工频泵实际扬水和输水上位机组态王远程监控、参数设定、趋势报警、数据记录这套配置里PLC和组态王的配合是重点。PLC负责现场级实时控制组态王负责“看得见、能操作、会记录”的人机界面。组态王不是必需的操作员面板但对供水这种需要长时间无人值守的场景来说历史曲线和报警记录是排查问题的关键依据。1.3 控制逻辑主线与信号流向整条信号链可以这样理解压力变送器检测管网压力 → 输出4-20mA → FX3U-4AD转换成数字量 → PLC内部做工程量换算 → 与设定压力求偏差 → PID指令运算 → 输出值写入模拟量模块 → 变频器获得0-10V或4-20mA频率给定 → 水泵转速调整 → 管网压力变化 → 压力变送器再次检测。这就是一个完整的负反馈闭环。组态王在这条链路的旁边通过串口或以太网与PLC交换数据不直接参与PID实时运算只做设定值下发、状态显示、趋势记录和报警提醒。搞清楚这条信号流后面所有调试都有方向了。在实际工程里还有一种变体是变频器内置PID直接闭环PLC只做启停和监控。这种方案接线简单但对多泵切换、休眠唤醒、复杂逻辑支持很弱而且出了问题不好扩展。既然标题明确是三菱PLC加组态王就按“PLC为核心控制器”的思路展开这也是大多数中小型供水项目更稳妥的做法。2. 把4-20mA压力信号变成PID能用的数值2.1 模拟量通道的接线与模式设置压力变送器最常用的是两线制4-20mA输出。接线时24V电源正极接变送器电源端变送器信号端回到PLC模拟量模块的电流输入端子负极共用。FX3U-4AD每个通道可以设置成电压或电流输入但要注意模块侧面的接线端子方式电流输入必须把通道对应的接线端子按手册要求短接或跳线这一步漏了信号直接读不出来。我见过不少人在这栽跟头传感器输出接的是电流信号模块通道却保留了默认的电压模式结果实际压力已经0.8MPa了PLC读到的数值要么是满量程、要么在0附近乱跳。用FX3U-4AD时模块的特殊功能寄存器要正确写入控制字指定通道和量程方式比如在程序初始化阶段用TO指令向FX3U-4AD的BFM#0写入 H0000 表示CH1为4-20mA输入CH2关闭CH3关闭CH4关闭BFM里具体每一位的意义可以在模块手册里查但核心就一句话模块必须和传感器输出类型完全匹配。4-20mA对应的是电流输入0-10V对应的是电压输入二者互不通用。2.2 量程标定与数值换算压力变送器量程选多少直接影响PID计算的数值范围。以0-1.6MPa量程为例4mA对应0MPa20mA对应1.6MPa中间是线性关系。FX3U-4AD在设置成4-20mA并完成偏置增益校准后输出的数字量通常是0到16000这个范围会因分辨率设置略有差异。换算公式其实就是一个直线方程数字量DV (实际压力 / 量程上限) × 16000 实际压力 数字量DV / 16000 × 量程上限比如管网压力0.8MPa时数字量应该是0.8 / 1.6 × 16000 8000。组态王画面里显示0.8MPa是通过同样的公式反算回来的不是PLC直接存了一个0.8的浮点数。实际压力(MPa)电流(mA)数字量DV0400.4840000.81280001.216120001.62016000做到这一步压力值已经变成了PLC程序里的一个标准数字量。后面PID指令的采样输入就用这个值组态王读取的也是这个值换算关系全系统保持一致不会出现“PLC里0.8、组态王显示0.6”的错位。2.3 接地与屏蔽的现场细节模拟量信号最怕变频器干扰。变频器输出侧是PWM波形主回路电缆如果不做屏蔽处理感应电压会叠加到压力变送器的4-20mA信号线上轻则读数波动重则PID无法稳定。常规做法是压力变送器信号线用屏蔽双绞线屏蔽层在PLC柜侧单端接地。动力电缆和信号电缆分开桥架敷设间距至少20厘米。变频器输出侧加输出电抗器或磁环也是抑制谐波干扰的有效手段。这些看似和“程序”无关的细节往往是联调阶段最难查的问题来源。程序逻辑完全正确、参数也给了但压力曲线就是抖十有八九是干扰问题。3. PLC侧PID运算与变频器频率给出的工程实现3.1 用PID指令还是自己写控制三菱FX3U系列有专门的PID指令格式是PID S1 S2 S3 D。S1是设定值S2是当前测量值S3是参数区首地址D是输出值。参数区里要填动作方向、采样时间、输入滤波系数、比例增益、积分时间、微分增益和微分时间等具体偏移按编程手册为准。自己写PID算法也可以但没必要。指令内置了滤波、积分、微分和输出限幅逻辑比自己用基本指令拼PID稳定得多。而且三菱FX3U的PID指令还支持自整定对新手友好。使用PID指令时采样时间的选择很有讲究。供水系统的压力变化是缓慢过程采样时间一般设几百毫秒到几秒都正常。采样时间太短系统对噪声过于敏感采样时间太长系统响应迟钝。我一般先给0.5秒左右再根据实际曲线微调。3.2 正反作用的判断很多人第一步就反了这是最容易出错的地方也是调试时最让人抓狂的地方。PID指令有一个动作方向参数要搞清偏差和输出的关系。恒压供水属于正作用系统。所谓“正作用”是指当实际压力低于设定值时PID输出应增大让变频器频率上升水泵加速压力回升当实际压力高于设定值时PID输出应减小频率下降压力回落。我一开始做这个系统时把动作方向设反了结果一启动压力就往上冲冲到超压报警然后频率又猛掉压力跌到低位再反弹整个系统像打摆子一样。当时还以为是PID参数问题调了半天比例和积分都没用最后查手册发现就是方向反了。所以在设置PID参数区时一定要确认系统类型是正作用还是反作用再根据所用指令的实际约定填写对应位。恒压供水绝大多数情况下是正作用少数特殊工况比如某些水位控制才需要考虑反作用。3.3 PID输出如何变成变频器频率PID指令算出的输出值D通常是一个数字量范围比如0到4000。这个值要传给FX3U-4DA模拟量输出模块再由模块输出0-10V电压给变频器。关键换算关系是PID输出0对应0V对应0HzPID输出4000对应10V对应50Hz。也就是说频率给定值 PID输出 / 4000 × 50Hz。如果不想在变频器侧做额外换算直接在PLC程序里把PID输出值映射到0-4000就行。PID输出D4DA输出电压变频器频率00V0Hz10002.5V12.5Hz20005V25Hz30007.5V37.5Hz400010V50Hz需要提醒一下PID输出是经过运算得出的中间量实际输出到变频器之前最好做限幅。也就是把频率给定限制在下限频率之上、上限频率之下防止PID参数不合适时频率冲过头损毁设备。3.4 手动/自动无扰切换的工程处理供水系统调试时变频器先用“手动”方式给定频率确认水泵转向、系统管路没漏、压力变送器显示正常然后才切到“自动”PID模式。手动和自动的切换不能简单粗暴否则切换瞬间频率跳变水锤会冲击管道。工程化的做法是手动时PID指令不参与运行D值跟随手动设定的频率值切换到自动时用一个“切换瞬间保持当前输出”的过渡逻辑让PID输出从当前手动值开始继续调整。三菱PLC程序里可以用一个中间寄存器保存当前输出值切换时把它赋给PID输出寄存器再放开PID调节。这个细节看着小实际现场体验差别很大直接影响系统是否平顺。另外供水系统通常还有水池或水箱液位保护逻辑。如果进水来自清水池液位低到下限时必须停泵否则水泵会空转烧毁。这类保护条件要加在PID输出之前一旦触发频率给定直接切到0同时输出报警状态。4. 变频器侧参数设置与运行方式4.1 外部运行与频率给定来源PLC控制变频器有控制字加模拟量给定、纯通信给定、端子控制多种方式。恒压供水最经典、也最容易理解的是“外部端子启动模拟量频率给定”。以三菱FR-E700系列为例Pr.79要设置成外部运行模式。频率给定来源通过Pr.73选择模拟量输入规格比如0-10V电压输入或4-20mA电流输入。如果PLC的4DA输出接的是0-10VPr.73就要对应电压输入。启停信号接在变频器STF/STR端子上由PLC继电器输出控制。RUN端子反馈运行状态给PLC这样组态王画面里能真实反映变频器是否在运行而不是只看PLC内部逻辑状态。变频器参数设置值作用说明Pr.792外部运行模式启动信号来自外部端子Pr.730或对应值模拟量输入选择0-10VPr.150Hz上限频率Pr.225Hz下限频率Pr.75-10s加速时间Pr.85-10s减速时间4.2 上下限频率不是随便填的很多人把下限频率设成0Hz觉得这样最灵活。但在供水系统里这样做有风险PID输出如果持续下降变频器频率会一路降到0水泵停转系统反而失压然后PID输出又猛升形成低频振荡。正确做法是把下限频率设成一个“不至于出水太少但还能稳定运行”的值比如25Hz。低于这个值就认为已经进入“小流量”状态可以判断是否需要休眠而不是继续压频率。上限频率一般设成50Hz或接近额定频率。要注意的是当变频器频率已经顶到上限、压力还达不到设定值时说明单台泵的流量不够了这就是后面要讲到的“加泵”判据。4.3 为什么不在变频器里做PID不少人觉得变频器自带PID功能直接用它的内置PID不就行了PLC还可以省掉PID指令。这种方案不是不行但有几个明显局限第一变频器内置PID的设定值和测量值来源比较单一模拟量反馈直接接在变频器端子上不方便做复杂的量程转换和滤波。第二恒压供水不是只有PID这一件事还有多泵切换、休眠唤醒、手自动切换、液位保护、报警处理这些逻辑放在变频器里非常别扭。第三组态王需要实时读取压力、频率、PID输出、泵运行状态等大量数据变频器内置PID模式下的数据交换并不方便。所以我的做法是变频器只做执行机构接收模拟量频率给定所有控制逻辑都在PLC里完成。各司其职调试和排查都容易。5. 组态王工程搭建从设备通讯到监控画面5.1 通讯驱动与参数设置的几个关键选择组态王与三菱PLC通讯常见方式有两种串口和以太网。FX3U通常用编程口或FX3U-485BD扩展板走串口FX3U加ENET模块或FX5U自带网口走以太网。无论哪种方式组态王驱动配置里都要求选择正确的PLC系列和协议。串口方式下常见参数是波特率9600、数据位7位、偶校验、1停止位但这并不是绝对必须和PLC侧的通信参数保持一致。很多通讯失败都是“组态王默认设置”和“PLC实际参数”不一致造成的。以太网方式要填PLC的IP地址和端口还要注意站号。组态王驱动里常见的“站号”或“网络号”要和PLC侧设置一致否则报通讯超时。一个容易忽略的细节是如果PLC程序里主动往某段寄存器连续写大量数据会占用通讯总线时间组态王变量刷新速度也会变慢。我在调试时习惯组态王左侧“设备”栏先新建一个逻辑设备然后做一个“设备测试”直接读取一个固定寄存器地址确认通讯成功后再开始定义变量。这一步能把“通讯问题”和“变量定义问题”分开排查省掉大量无头绪的查找时间。5.2 I/O变量的定义与PLC寄存器地址映射组态王通过变量来读写PLC数据。变量类型分I/O变量和内存变量I/O变量直接关联PLC寄存器内存变量只在组态王本地使用。恒压供水系统里核心变量至少要覆盖以下几类组态王变量数据类型PLC地址用途压力设定值SVI/O实数D100组态王下发设定压力压力实测值PVI/O实数D101显示当前管网压力PID输出MVI/O实数D102显示频率给定手动给定频率I/O实数D110手动模式频率设定系统启停I/O开关M0远程启动/停止系统运行状态I/O开关M10显示运行状态故障报警I/O开关M20显示报警状态定义变量时要注意数据类型匹配。PLC里的D寄存器是16位如果压力值做成了浮点数就要用寄存器间址存储比如高16位放整数部分、低16位放小数部分。这种做法在组态王和三菱PLC之间常常需要做高低字交换是很多初学朋友容易被绕晕的地方。我的习惯是在PLC程序里统一用整数运算处理工程量只在组态王侧做除法换算简单可靠。5.3 监控画面的分层设计组态王画面不是无限堆元素要根据操作习惯分层。主画面放系统流程图水泵图标、变频器状态、压力变送器数值、PID给定和反馈、启停按钮、手自动切换开关位置关系尽量和实际工艺一一对应。趋势曲线放在第二层专门显示压力、频率、PID输出三路实时趋势。历史曲线还要配置数据保存计划让变量按固定周期写入历史数据库否则组态王重启后曲线数据丢得七零八落。报警窗口放在独立页面或弹窗列出报警时间、确认状态、恢复时间。设计画面前多想想操作员真正需要什么他需要一目了然地看到“现在压力多少、设定多少、水泵在跑哪台”而不是在一堆装饰性PID框里找数值。简洁准确的画面比花哨的矢量图有用得多。5.4 历史数据与报表组态王的历史库记录频率默认按变量刷新周期或自定义周期存储。恒压供水系统我一般把压力、频率、PID输出三个变量的记录周期设为1秒启停状态、报警状态按变化记录。报表用组态王的“数据报表”功能按小时、班次、日汇总生成压力平均值、超压时长、启停次数等统计数据。这些数据最大的用处是几个月后用户说“水压最近总是不稳”你可以打开历史曲线一看发现每天某时段频率频繁波动结合变频器运行记录定位问题。没有历史数据这类排查基本全凭猜。6. 系统联调流程与现场踩坑记录6.1 调试顺序先开环后闭环联调最忌讳一上来就把系统投到自动PID模式。我自己的固定顺序是第一步用组态王或PLC程序手动给定一个固定频率比如30Hz启动变频器确认水泵转向、管路压力上升、压力变送器读数变化。这一步验证的是“执行链”和“测量链”是否正常。第二步手动给定频率从30Hz到45Hz逐步切换观察压力随频率的响应趋势。压力上升速度和管路容积直接相关这能帮你判断后面PID采样时间该设多大。第三步切到自动PID模式先给一组保守参数比例小、积分长观察曲线走向逐步修正。不要一上来就把比例给到3以上。第四步组态王远程操作全部跑一遍确认画面显示、按钮下发、报警输出、历史记录都正常再交用户试用。6.2 PID参数整定的一点经验恒压供水是一个滞后较大的过程管道越长、容积越大滞后越明显。PID参数整定别迷信书本上的固定值不同管网的特性千差万别。我的经验方法类似简化版的衰减曲线法先把微分设置为0积分时间设得很大比如300秒比例增益从0.3左右开始观察压力曲线。如果曲线等幅振荡减小比例如果曲线响应太慢、达不到设定值增大比例。压力曲线出现1/4衰减振荡后基本就找到合适的比例增益了。然后再逐渐减小积分时间修正稳态余差。微分在恒压供水里一般不用因为压力信号本身噪声就多微分会把噪声放大让变频器频率抖得更厉害。PID现象可能原因调整方向压力等幅振荡比例增益过大减小比例响应慢、稳态偏低比例不足或积分太长增大比例、缩短积分频率频繁抖动微分过大或信号干扰去掉微分、检查屏蔽接地切泵瞬间压力掉太多加减速时间偏短控制逻辑不完善调整加减速时间与滞后逻辑6.3 几个容易误判的坑第一个坑压力信号读数漂移。系统一开变频器组态王里的压力值就开始上下翻动。程序检查过没问题后来发现屏蔽层没有单端接地变频器一启动干扰就耦合进来了。信号线换成屏蔽双绞线并做好接地后问题立刻消失。第二个坑休眠唤醒过于频繁。把休眠条件只设成“频率低于下限”结果夜里用水量波动系统一会在休眠条件边缘反复横跳。解决方法是加持续时间和唤醒死区必须连续低于下限一定时间才休眠唤醒压力要比设定压力低一个固定死区避免临界反复切换。第三个坑组态王变量刷新超时。现象是画面数值偶尔变0或者好长时间不更新。排查后发现是PLC程序扫描周期太长某个频繁执行的大循环拖慢了整体扫描通讯请求排队超时。优化程序循环结构后恢复正常。这类问题排查时要先看组态王驱动日志再看PLC扫描周期而不是贸然改通讯参数。第四个坑多泵系统加泵瞬间水锤。一拖几的系统里当变频泵频率顶到上限仍达不到设定压力时要把工频泵投入到管网。加泵瞬间压力冲击很大容易损坏压力变送器甚至水表。工程处理上一般会先让变频泵降到较低频率再合闸工频泵然后PID重新升频。这个降频-合闸-升频的过程看起来简单但时序做不好现场水锤声音会非常吓人。6.4 休眠唤醒的一种实用实现思路最后补充一下休眠唤醒的具体判断逻辑这也是恒压供水工程里非常实用的功能。夜间小流量时水泵一直低频运行能耗高而且电机长期低转速散热差。休眠逻辑可以这样设计当变频器频率低于下限频率且压力稳定在设定值附近连续保持一段时间比如30-60秒系统停止水泵进入休眠。唤醒条件有两个压力低于唤醒压力设定压力减去0.05-0.1MPa持续一定时间或者水管压力跌破警戒值立即启动。唤醒和休眠必须都配死区否则会出现频繁启停把接触器烧掉。休眠后组态王画面要显示“休眠中”状态让值班人员清楚系统不是故障停机。我实际调试时发现很多用户看着水泵停了会紧张以为是跳闸了所以休眠状态的指示一定要醒目。这个系统做下来三菱PLC负责控制逻辑组态王负责监控变频器负责执行压力变送器负责感知四者缺一不可。调试时我自己的体会是不要急于进入自动模式先把每一段信号链路验证扎实再放开PID最后再连组态王。链路清晰了参数整定和问题排查都会顺利很多。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进