
去年我接到一个某园区冷站改造项目核心要求就一句话把中央空调机房里的冷水主机、冷冻水泵、冷却水泵、冷却塔和末端设备的运行状态统一收到一个监控画面上同时实现定时启停、设备联锁、故障报警和压差旁通调节。甲方一开始想直接上商业楼宇自控系统但询价之后沉默了最后我们选了组态王加上PLC这套方案整体造价砍掉一半还多后期改点也灵活。这篇文章就把从硬件组网、点表梳理、PLC程序写到组态王画面开发、联调试运行的完整过程捋一遍重点说图纸上和说明书里不会写的细节给正准备做中央空调控制系统搭建的同行做个参照。1. 系统全貌与选型逻辑为什么中央空调控制要上PLC加组态王1.1 先把系统拆开看冷源、输配和末端做中央空调控制不能一上来就写程序第一步是把物理系统拆明白。一个典型的集中式中央空调系统包含三个部分冷源侧、输配侧和末端侧。冷源侧就是制冷机房核心是冷水主机主机负责把蒸发器里的冷冻水降到7℃左右冷凝器把废热通过冷却水带到冷却塔散发掉与主机配套的有冷冻水泵、冷却水泵、冷却塔风机、电动阀门和各类水流开关。输配侧是冷冻水供回水管网包括分水器、集水器、旁通管和压差调节阀。末端侧则有新风机组、组合式空调箱和风机盘管在控制柜里对应的是电动水阀、风阀、风机变频器等。这套系统最大的特点是设备多、相互关联强。主机启动之前必须确保冷冻水和冷却水流动起来否则轻则报警重则冻坏蒸发器冷却塔风机不能和冷却水泵同时启动否则水还没建立流量就先散热效率极低。这些逻辑靠人工操作很难不出错尤其夏天空调负荷一上来冷站一天开关好几次谁手快谁就出错。所以必须有PLC做底层控制把启停顺序、联锁保护、参数调节全部固化下来。1.2 组态软件选型为什么没选商业BAS也没自研上位机当时摆在我面前的有三条路商业楼宇自控系统、完全自研上位机、组态王加PLC。我把三者放在一起对比过关键差异在于成本、开发周期和后期维护门槛。方案软件/授权成本开发周期改点灵活性对维护人员要求商业BAS系统高按点位收费短但后期扩点收费贵受原厂限制改点常要厂商支持较高自研上位机低但开发成本高很长需写通信协议和界面框架高但需持续投入开发很高得有编程能力组态王PLC中等短组态生态成熟高工程师自己就能加页面和变量中等会组态软件即可对这个项目来说点位数量不算特别多大概一百多个I/O点商业BAS按点数报价确实贵而且以后加一台水泵就要让原厂重新配置周期和费用都不可控。自研上位机虽然看着高级但通信协议解析、历史数据库、报警管理、操作权限这些都要自己做时间成本完全扛不住。组态王这类组态软件正好卡在中间图形化开发环境成熟内部集成了大量的PLC通信驱动画画面、做趋势、配报警都是拖拖拽拽的事教师傅上手也快。1.3 PLC和组态王的分工谁干活谁看板这套系统里PLC和组态王各管一段职责不能混。PLC负责“干活”包括所有启停逻辑、联锁保护、PID运算、故障判断和定时控制组态王负责“看板”和“操作入口”把PLC里的运行数据采集上来用画面和曲线展示给操作员同时把操作员的按钮指令下发到PLC。为什么必须这样分中央空调控制最重要的不是界面好看而是逻辑可靠性。如果启停顺序靠上位机脚本实现通信一断整个系统就瘫了。而PLC的程序存在本地即使组态王完全离线PLC依然能按预设逻辑自动运行该开的泵照开该停的主机照停该触发的保护照触发。组态王掉了最多是看不见数据不影响现场安全。这一点在我后来遇到通信故障时体会特别深系统没有因为上位机离线而出任何事故。2. 硬件组网与点位表搭建之前最容易被忽略的一步2.1 网络拓扑分散控制集中监视这套系统的网络架构是这样的控制柜内放一台带以太网口的中小型PLCPLC本体负责冷源侧的主要逻辑末端机组分布较散用两台远程IO扩展站通过现场总线挂在PLC后面。上位机组态王电脑和PLC在同一网段通过交换机互联网线距离控制在80米以内没有跨VLAN。变频器采用Modbus RTU方式接在PLC的RS485口上没有直接把变频器接给上位机。这样做的原因很简单上位机只和PLC通信协议单一排查故障时只需要看一条链路变频器的实时数据和状态由PLC统一采集、统一转发。如果变频器直接挂到组态王上一旦某个变频器通信卡住整个上位机的通信线程都可能被拖累问题很难定位。2.2 点位表设计动手写程序前先做减法很多人一上来就开组态画面结果做到一半发现点位对不上返工最耗时。正确的做法是先做一张完整点位表把所有I/O点按信号类型列清楚。我这份点位表分了四类数字量输入、数字量输出、模拟量输入、模拟量输出。以冷源侧为例数字量输入包括各台泵和风机的自动/手动状态、接触器运行反馈、热继电器故障信号、水流开关信号、主机运行状态和故障状态数字量输出包括接触器线圈、电动蝶阀开关、故障复位信号。模拟量输入包括冷冻水供/回水温度、冷却水供/回水温度、分集水器压差、冷却塔回水温度、集水器液位、每台水泵的电流模拟量输出则主要是变频器的频率设定值。点位表的字段我通常这样定义点位名称信号类型PLC地址组态变量名量程/单位备注冷冻水供水温度AIAIW0FT_T_CHS0~50℃/0.1PT10004-20mA冷却水泵1运行反馈DII0.3K_PUMP_COOL1_RUN0/1接触器辅助触点冷却水泵1变频设定AOAQW2AVE_PUMP_COOL1_FREQ0~50Hz4-20mA到变频器这张表做完组态王的数据词典变量基本可以照着抄PLC程序的I/O映射也照着填后期联调遇到点位错位直接对照表检查比现场猜地址高效得多。这也是我反复跟团队强调的一句话点表不是后勤文档是控制系统设计的图纸。2.3 传感器与执行器选型稳定的信号比品牌更重要温度传感器我选的是PT1000加温度变送器输出4-20mA信号量程0~50℃。用电流信号而不是电阻信号的原因是控制柜到传感器现场距离可能有几十米电流传输抗干扰能力明显优于电阻直接测量同时也省去了组态王和PLC内部再做线性化处理的麻烦变送器已经把温度线性映射到4-20mA了。压差变送器用来测分水器与集水器之间的差压量程0~1MPa输出4-20mA取压管要装在泵的进出口汇管上避免取压口太靠近弯头。水流开关装在冷冻水泵和冷却水泵的出口管段上作用是确认泵启动后水流量真的建立起来了这个信号是主机允许启动的必要条件不能省。执行器方面电动蝶阀选用开关型配置开到位、关到位反馈旁通调节阀用模拟量控制型接收4-20mA信号带上限位反馈。变频器要支持Modbus RTU通信这样PLC可以远程读写频率、电流和故障码省去大量硬接线。2.4 控制柜布线抗干扰和检修便利要兼顾控制柜看起来是电气的活但自动化工程师如果不盯紧后面通信干扰、模块烧毁的坑都在这里等着。我的要求是柜内走线分三个区域动力线、控制线、信号线三个区域物理隔离模拟量信号线用屏蔽双绞线屏蔽层单端接地。PLC的24V电源单独用一个开关电源不要和接触器线圈共用避免接触器吸合瞬间把电压拉垮导致PLC误复位。继电器输出给接触器的线圈时务必并联续流二极管或RC吸收回路否则感性负载断开瞬间会产生几百伏尖峰轻则干扰通信重则损坏PLC输出点。这一点在调试时遇到过实际案例有一台冷却塔风机的接触器没有接续流每次停机组态王上所有模拟量都会跳一下加了吸收回路后彻底消失。3. PLC程序骨架把季节模式、启停联锁和PID都安排明白3.1 季节模式切换防冻永远是第一优先级中央空调控制程序里最核心的顶层逻辑是季节模式。夏季模式走制冷流程冷冻水供回水温差控制主机加减载冬季如果系统兼做供暖或防冻循环则走冬季模式此时冷却塔、冷却水泵和主机都要禁止启动只允许冷冻水泵在低温时段低速运行防止管网冻裂。我这里的模式切换没有完全交给操作员手动选择而是留了自动判断和手动选择两档。自动判断依据是室外温度和冷冻水回水温度室外温度连续30分钟高于15℃且回水温度高于18℃才允许自动切入夏季模式反向条件满足则切回冬季模式。模式切换时还要先关闭主机、停冷却塔风机确认冷却水路排空或者切换到旁通状态再执行泵组切换避免管路里出现“憋死”或者“倒流”。3.2 启停顺序与联锁每一步都要看反馈中央空调冷源侧的启停顺序是有严格时序的。开机顺序是开冷却塔电动蝶阀启动冷却塔风机启动冷却水泵水流开关确认启动冷冻水泵水流开关确认最后才允许冷水主机启动。停机顺序正好相反先停主机延时停冷冻水泵再延时停冷却水泵和冷却塔风机。这套逻辑用梯形图写比较繁琐但结构很清晰。大致可以用这样的伪代码来表达// 开机组流程 IF 启停指令 启动 THEN 打开冷却塔蝶阀 延时5秒后启动冷却水泵 IF 冷却水泵运行反馈 1 AND 冷却水水流开关 1 THEN 启动冷冻水泵 END_IF IF 冷冻水泵运行反馈 1 AND 冷冻水水流开关 1 THEN 允许主机启动 主机启动指令置位 END_IF END_IF每一步启动之后都必须检查反馈信号不能只发指令不管结果。比如冷却水泵接触器吸合了但水流开关没动作按标准逻辑要判为启动失败并报警不能继续启动冷冻水泵更不能启动主机。很多新手程序只写了“发启动指令”却忽略了“确认反馈”表面上设备能转实际上处于完全裸奔状态一旦某台泵没转起来就继续下一台最后主机缺水运行蒸发器结冰损坏。另外我建议所有水泵启动都带间隔防止多台大功率泵同时启动造成变压器冲击。一般同一母线下的水泵错峰8到10秒这个延时写进PLC里不靠人工去按顺序操作。3.3 压差旁通PID不看理论看曲线冷冻水系统在末端负荷变化时供回水压差会跟着波动。末端阀门关小压差升高末端阀门开大压差降低这时需要旁通阀开合来维持压差稳定。这个控制在PLC里可以用PID功能块实现反馈量是分集水器压差执行器是旁通调节阀。PID参数我第一版给的初值参考经验比例带P在8%左右积分时间I在120秒左右微分D关闭。之所以不用微分是因为压差信号本身噪声大微分作用会被信号抖动放大表现为旁通阀来回乱动。整定过程我在后面联调章节详细说这里只提醒一个关键点PID作用方向必须搞清楚。压差偏高时旁通阀要开大让更多水回集水器压差偏低时旁通阀要关小。如果你发现阀门动作方向相反压差越调越乱八成是正反作用设反了改一下方向变量就行不用动PID参数。3.4 故障报警与自动恢复策略报警逻辑不能只做一个开关量闪烁要把故障分类处理。分三类瞬时故障、持续故障和严重故障。瞬时故障包括通信瞬时断开、变频器临时过载这类故障自动复位一次5分钟内重复发生才锁定报警持续故障包括水泵运行反馈消失、水流开关动作异常这类要立即联动停机并禁止自动重启严重故障包括主机故障、防冻保护动作这类直接执行紧急停机顺序并锁定设备要人工到现场确认后才能复位。自动恢复策略要保守不能因为故障消除就立刻自动启动大设备。比如冷却水泵故障停机后即使反馈信号恢复也要等到人工确认故障原因并按下复位按钮程序才允许再次启动。这个逻辑可能让操作员觉得麻烦但恰恰是这种“麻烦”保护了设备和人身安全。4. 组态王侧开发设备通信、数据词典、画面与动画4.1 通信驱动配置地址不是一拍脑袋填的组态王连接PLC核心是设备驱动配置。在组态王工程里新建一个设备选择对应PLC的驱动类型填上IP地址、槽号或站号然后设置通信超时和重试次数。这里面最容易踩的坑是驱动匹配PLC侧如果启用了不同的协议版本或映射方式组态王填错一个参数整个设备状态就显示“打开设备失败”。我的建议是先不加画面新建好设备后先用组态王自带的“设备测试”或“变量测试”功能读一个最简单的点位确认通信通了再往下做。这一步能省掉后面大量无意义排查。通信超时设置不要太短工业以太网在交换机转发繁忙时偶尔会有几百毫秒延迟建议设到1秒以上重试次数2到3次避免画面上的数据频繁波动。但也不能设得太长否则故障发现不及时3秒已经是上限。4.2 数据词典与中间变量别把画面直接挂到I/O变量上组态王的数据词典是画面和PLC之间的桥梁里面要定义两类变量I/O变量和内存变量。I/O变量直接关联PLC地址比如把组态变量FT_T_CHS关联到PLC的AIW0内存变量是组态王内部的中间量比如当前季节模式、操作员登录名、报警确认状态。我强烈建议不要把所有画面动画都直接绑I/O变量。比如旁通阀开度百分比先通过脚本把PLC返回的原始电流值线性换算成百分比存入内存变量再让画面动画连接内存变量。这样做的好处是线性换算、报警判断、数据显示格式都可以在组态王脚本里集中处理后期改量程或换传感器时只改脚本一处不用满工程翻找。另外把频繁刷新的I/O变量数量控制在必要范围内可以明显降低组态王和PLC之间的通信负担。实测下来通信周期设置在200到300毫秒画面上温度趋势看起来已经足够平滑。4.3 主画面、趋势曲线与报警窗口的实战布置组态王的画面布局我的习惯是分四层总貌画面、系统分画面、设备详情画面、操作画面。总貌画面放系统工艺流程图冷源侧和末端侧一图展示设备运行状态用颜色动画体现运行是绿色、停止是灰色、故障是红色旁边标注当前冷冻水供水温度、回水温度和压差。系统分画面按冷冻水、冷却水、末端三个系统拆开每个系统里放本系统的详细数据和设备启停按钮。趋势曲线独立一个页面用组态王的“历史趋势曲线”控件把冷冻水供回水温度、压差、主机电流等重点参数都配置进去。配置时注意时间轴和历史存储的刷新周期要匹配否则曲线回放会出现断点。报警窗口放在所有画面的右侧或底部设置报警级别分类低级别是提示中级别是操作提醒高级别是故障。报警触发时画面自动弹窗同时记录报警时间、确认人和恢复时间。4.4 操作权限与命令语言画面不只是看板组态王如果不做权限控制任何人都能点启停按钮这是现场绝对不能接受的。工程里要配置用户管理系统划分操作员、班长、管理员三级。操作员只能看数据和手动切换普通设备的启停不能修改PID参数班长可以调整模式、修改报警上下限管理员才有权限修改工程画面、更改用户配置和通信参数。命令语言脚本用来处理一些不能靠简单动画连接完成的逻辑。比如冷却水泵从手动切换为自动时画面上的手动按钮要自动置灰比如主机累计运行时间超过设定值后弹出保养提示。写命令语言时注意脚本不要写得太重避免在每一个扫描周期里做大量字符串处理和循环运算否则组态王CPU占用会异常升高画面刷新变卡。这一条是我实践踩过的刚开始为了做漂亮的报表命令语言里写了个全工程变量循环运行三小时后组态王直接卡到鼠标都动不了删掉后恢复流畅。5. 联调试运行的现场问题通信超时、点位错位、PID振荡5.1 通信时断时续排查顺序很重要第一次上电联调最典型的症状是组态王画面上的数据偶尔变成星号过一会儿又恢复设备状态闪烁不定。很多人上来就怀疑PLC驱动配置错了或者组态王软件有bug其实绝大多数情况下是网络层面的问题。我的排查顺序是固定的先ping PLC的IP看丢包率如果丢包查网线、交换机端口、网卡速率协商如果不丢包查组态王设备诊断看通信重试次数和时间戳如果驱动报错再回头核对驱动参数。有一次现场就是组态王电脑的网卡开启了电源管理节能模式加上系统休眠策略电脑运行一会儿网卡就自动降速通信间歇性中断。把网卡的“允许计算机关闭此设备以节约电源”关掉问题立刻消失。还有一个容易忽略的点是交换机端口。如果交换机带流量控制或风暴抑制而且配置了不合理的广播限制PLC的周期通信帧偶尔会被丢弃。我一般建议上位机、PLC、远程IO都用普通非管理型交换机不做复杂策略中央空调控制系统的数据量很小不需要那些高级功能简单反而稳定。5.2 点位“差一”与变量类型错位的教训现场调试最让人头秃的问题就是数据显示错乱。明明组态王读的温度应该是7.2℃画面上却是-200多换成整数显示又变成28000多。这类问题九成出在变量类型和寄存器映射上。我遇到过两次典型的错位。一次是Modbus通信时PLC侧寄存器地址从0开始而组态王侧设备地址从1开始结果所有点位整体偏移了一个字读出来的数值全是上一路的。解决方法是统一地址基准把点位表里的地址列直接标注组态王驱动中要填的实际寄存器号两边对照调试。另一次是32位浮点数问题PLC里写的温度是32位实数组态王变量类型却定义成了16位整数数据被截断成乱七八糟的数值。检查出来之后把组态王的变量类型改为32位浮点同时核对字节顺序是大端还是小端数据才恢复正常。这里给一个有效做法第一批变量建立后不要急着做画面先把每个关键变量通过组态王的“变量监视”窗口核对值是否正确量程和工程单位是否匹配。变量监视没问题了再让PLC程序做一次“输出已知值”测试手动把几个模拟量通道写入固定值看组态王是否一一对应。这一步相当于数据链路的整体体检花20分钟能省两天现场调试时间。5.3 PID参数整定从“跑掉”到“稳住”压差旁通阀的PID整定让我印象最深。第一次投自动时旁通阀在0%和100%之间来回冲压差曲线像个锯齿波稳压泵的电流跟着大起大落。我先确认正反作用没问题然后开始逐个参数试。先把积分和微分设为最小作用只留比例。P设在8%时阀门还是振荡压差超调明显往上调到15%振荡幅度减小但仍有波动。接着恢复积分I从180秒开始往下降降到120秒时曲线开始收敛阀门动作幅度被压下来。整套过程大约花了四十分钟最终参数是P12%I120秒D0。稳定后的效果是压差基本稳定在0.06MPa附近旁通阀开度缓慢波动不超过正负4%。整定过程中我注意观察了一个关键转换点阀门动作频率。如果阀门每几秒就大幅动作一次说明P太大或者积分作用太强如果阀门几乎不动但压差持续偏离设定值说明积分作用偏弱。参数修改要一次次小幅调每改一次至少观察十分钟不能一次调好几个参数否则永远不知道是谁起作用。5.4 夏季高峰运行效果与节能经验系统在七八月份经历了完整的高负荷运行总体比较稳定。冷冻水供水温度稳定在7.3℃左右回水温度11.6℃压差维持在0.06MPa上下主机运行台数根据负荷自动切换负荷低时单台主机加旁通调节负荷上来后自动加机。运行记录里没有出现主机因为缺水保护停机的情况水流开关和启停逻辑发挥了作用。节能方面比较明显的是水泵变频控制。原本三台冷冻水泵工频运行改为根据末端压差需求变频调节后在非高峰时段可以把频率降到38到42Hz电机电流下降明显。两周的用电统计对比下来水泵部分节省电量约两成多基本半年能收回变频改造的成本。有一点要提醒变频器频率不能调太低水泵转速过低会导致电机散热变差同时也可能让管网最远端末端冷冻水流量不足我这套系统设了下限35Hz低于这个值会自动切回工频旁路。6. 写在最后跑过两个夏天之后的实话这套基于组态王和PLC搭建的中央空调控制系统我实际运行了两个制冷季总体上达到了当初的目标成本可控、稳定可靠、后期改点方便。项目刚交付的时候现场操作员面对组态画面还有点发怵但用过一周后基本都能独立完成模式切换、查看趋势和确认报警这比商业楼宇自控系统动不动就要厂商远程操作接地气得多。我个人最满意的地方是PLC承担了全部安全逻辑组态王即使完全离线也不影响设备正常运行。最想提醒同行的是不要把组态王的画面开发排在点表和程序之前数据字典、地址映射、通信参数这些基础工作做到位后续联调会顺畅很多。整个项目里最费时间的从来不是拖拽控件而是把每一个信号的真实来源、量程范围和作用条件搞清楚。如果你手头也有类似的冷站改造需求我的建议是先花一周时间把冷源系统运行规程吃透再花三天列点位表然后才是写程序和做画面。顺序对了这套方案的开发速度会远超你的预期。真要遇到调试问题别急着自己硬扛拿点表、网络拓扑和变量测试结果逐层排查问题总会定位到具体环节上。