简介:这份文档面向自动化、暖通及热力工程相关专业的学生与技术人员,围绕基于PLC的热力公司换热站控制系统展开,可用于课程设计、毕业设计或工程方案参考。资源为单个doc文件,压缩包约277KB,内容以章节化文档形式组织,涵盖绪论、换热站控制方案、换热站组成及工作原理、PLC S7-200介绍、控制系统总体方案设计与结论等模块。文中系统梳理了集中供暖的国内外发展概况、换热站构成与运行现状,重点讲解PLC在自动控制、运行监控与故障诊断中的应用,并给出温度、循环水流量、压力等调节控制思路及硬件总体框架。目前已有483人学习下载,适合需要理解换热站控制逻辑、熟悉S7-200选型与I/O配置、搭建控制系统框架的读者参考借鉴。
1. 换热站自控改造:从人工拧阀门到 S7-200 闭环调节的落地路径
冬天最怕什么?不是室外零下十几度,而是换热站二次供水温度像坐过山车——中午晒得开窗,后半夜冻得盖两层被。很多老换热站至今还在靠值班师傅盯着温度计手动拧阀门,室外温度一变,二次网供水温度就跟着飘,用户投诉电话能打爆值班室。这份《基于PLC的热力公司换热站控制系统》文档,核心就是解决这个问题的:用 S7-200 PLC 把一次侧电动调节阀、循环泵变频器、补水泵和各类温度压力变送器串成一个闭环,让二次供水温度跟着室外温度曲线自动走,把“看天供暖”变成“按需供热”。它适合做供热自控改造的电气工程师、自动化专业做课程设计的学生,以及想把换热站从有人值守推到少人值守的运维负责人。文档从换热站构成讲到 S7-200 硬件选型,再到温度、流量、压力三个回路的控制方案,是一份能直接对着接线和编程的工程参考。
2. 换热站控制方案拆解:一次侧量调节与二次侧质调节怎么配合
2.1 为什么选间接连接加量调节-质调节组合
换热站与热用户的连接方式分直接连接和间接连接。直接连接就是热网循环水直接进用户散热器,水力工况和热力工况完全耦合,一处出问题全网跟着抖。间接连接用换热器把一次网和二次网隔开,二次网有自己的循环泵和补水定压系统,运行上互不干扰。这份方案选的是间接连接,原因很实际:一次网高温水参数波动大,直接进用户端风险高,而且间接连接后二次侧可以独立做质调节,用户室内温度更稳。
调节方式上,方案定的是“一次侧量调节 + 二次侧分阶段改变流量的质调节”。一次侧量调节的意思是:二次供水温度偏离设定值时,不去改一次网的水温,而是改一次侧电动调节阀的开度,用改变流量的方式来改变换热量。这样做的好处是热源侧不用频繁调温,换热站自己就能把二次温度稳住。二次侧质调节则是把室外温度分成两个阶段:室外温度高于某个设定值时,循环泵工频运行;低于设定值时,循环泵降到 0.75 工频运行,循环水量相应减小。这个分阶段策略比连续变频简单,对老站改造来说,变频器选型和调试门槛都低不少。
2.2 温度闭环:PID 加前馈补偿的落地写法
二次供水温度控制是整个系统的核心。控制逻辑是:温度传感器装在二次供水出水管上,测到的实际温度与设定值比较,偏差送进 PID 运算,输出信号去控制一次侧电动调节阀的开度。但这里有个坑——换热器本身有热惯性,一次侧流量变化到二次侧温度响应之间有滞后。如果只用纯反馈 PID,供水温度会出现较大的动态偏差,表现就是温度冲过头再慢慢拉回来,用户端能感觉到忽冷忽热。
方案里给的做法是加入流量前馈补偿信号。具体实现上,在一次侧供水管上装流量计,流量信号作为前馈量直接叠加到 PID 输出上。当一次侧流量突然增大时,前馈信号让调节阀提前动作,不等二次温度反应过来就先把阀门关小一点,抵消掉一部分扰动。前馈补偿系数需要现场整定,一般从 0.3 到 0.5 开始试,观察二次温度的超调量再微调。
PID 参数整定上,S7-200 的 PID 指令块用起来比较直接。采样周期建议设 1 秒,比例增益先给 2.0,积分时间给 120 秒,微分时间给 20 秒。这个起点适合大多数板式换热器的响应特性。如果二次温度振荡厉害,先把比例增益降到 1.5,积分时间加到 180 秒。微分项在温度控制里不用给太大,否则对传感器噪声敏感,反而让阀门频繁动作。
2.3 循环泵变频与补水定压的联动逻辑
循环泵变频控制的目标是维持二次网供回水压差。压差传感器装在二次网供回水干管上,实测压差与设定值比较,偏差送 PID 运算,输出 4-20mA 信号给变频器调节循环泵转速。这里有个细节:循环泵是平方转矩负载,流量与转速成正比,压力与转速平方成正比,轴功率与转速立方成正比。所以降转速运行时,节能效果非常明显,转速降到 80%,轴功率只有额定的 51% 左右。
补水定压回路的逻辑是:压力传感器装在二次网回水干管上,实测压力低于设定下限时启动补水泵。方案里写的是“当一台补水泵无法通过变频补水达到所要求的压力时,控制器可使另一台备用泵以工频方式补水”。这个逻辑在 S7-200 里用比较指令和定时器就能实现。具体做法是:补水泵变频运行,输出频率达到 50Hz 后持续 30 秒,压力仍低于设定值,则延时 5 秒后启动备用泵工频运行。压力恢复到设定值后,先停备用泵,再让变频泵降频运行。
注意:补水泵切换逻辑里,工频泵启动前要确认变频泵已经在 50Hz 运行,否则两台泵同时启动会导致管网压力瞬间冲高,容易把压力传感器打坏。
2.4 报警与连锁停泵的硬逻辑
报警功能分两类:参数越限报警和设备故障报警。参数越限包括二次供水温度超过设定值上下限、二次网压力低于下限或高于上限、一次侧流量低于最小允许值。设备故障包括循环泵过载、补水泵过载、变频器故障、电动调节阀反馈信号丢失。
连锁停泵的逻辑是:当循环泵停止运行时,一次侧电动调节阀自动关闭。这个连锁必须做,否则循环泵一停,换热器里的水不流动,一次侧高温水继续加热,局部水温会迅速升高,可能把换热器密封垫片烧坏。实现上,循环泵运行接触器的辅助触点接到 PLC 数字量输入,PLC 检测到该信号丢失后,立即输出信号让电动调节阀执行器断电,阀门靠弹簧复位关闭。
3. S7-200 硬件选型与 I/O 分配:点数怎么算、模块怎么配
3.1 CPU 主机选型:CPU224XP 还是 CPU226
S7-200 系列里,CPU224XP 和 CPU226 是换热站控制里用得最多的两款。CPU224XP 集成 14 点输入/10 点输出,共 24 点数字量 I/O,2 个模拟量电位器,最大可扩展 35 路 AI/AO,1 个 RS-485 通信口,2 路 20kHz 高速脉冲输出,6 路 30kHz 高速计数器,带 PID 控制器。CPU226 集成 24 点输入/16 点输出,共 40 点数字量 I/O,2 个 RS-485 通信口,其他参数与 CPU224XP 类似。
换热站控制系统的数字量输入包括:循环泵运行状态、循环泵故障、补水泵运行状态、补水泵故障、电动调节阀开到位、电动调节阀关到位、手动/自动转换开关、水箱液位高、水箱液位低、安防门窗信号等。数字量输出包括:循环泵接触器、补水泵接触器、备用泵接触器、电动调节阀控制、报警指示灯、报警蜂鸣器等。模拟量输入包括:一次侧供水温度、一次侧回水温度、二次侧供水温度、二次侧回水温度、室外温度、二次网供水压力、二次网回水压力、二次网供回水压差、二次网流量、一次侧流量等。
按这个规模算,数字量 I/O 大约需要 20 点左右,模拟量输入大约 10 路。CPU224XP 本机 24 点数字量 I/O 基本够用,模拟量需要扩展 EM231 模块。如果还要接触摸屏和上位机通信,CPU224XP 的 1 个 RS-485 口可能不够,这时候选 CPU226 更合适,两个通信口一个接触摸屏,一个接上位机或通信模块。
3.2 模拟量扩展模块:EM231 与 EM235 的取舍
EM231 是 4 路模拟量输入模块,EM235 是 4 路模拟量输入加 1 路模拟量输出模块。换热站里模拟量输入多、模拟量输出少。模拟量输出主要给变频器频率给定和电动调节阀开度给定,一般 2 路输出就够。所以常见配置是:1 块 EM235 提供 4 路输入和 1 路输出,再加 1 到 2 块 EM231 提供额外的 4 到 8 路输入。
温度传感器选 PT100 热电阻时,直接用 EM231 RTD 模块更方便,它专门为热电阻设计,省去变送器。但 EM231 RTD 只有 2 路输入,点数少、单价高。如果温度点比较多,用 PT100 温度变送器转成 4-20mA 信号再进 EM231 更经济。压力、压差、流量传感器一般输出 4-20mA 或 0-10V 信号,直接进 EM231 或 EM235。
注意:EM231 的输入信号范围要通过模块上的 DIP 开关配置,4-20mA、0-10V、±5V 等量程对应的开关组合不一样。配置错了,PLC 读到的数值会完全不对,而且不会报错,排查起来很费时间。
3.3 I/O 分配表与接线要点
下面是一份典型的 I/O 分配表,可以直接对着接线:
| 地址 | 信号名称 | 信号类型 | 说明 |
|---|---|---|---|
| I0.0 | 循环泵运行状态 | DI | 接触器辅助触点 |
| I0.1 | 循环泵故障 | DI | 热继电器常开触点 |
| I0.2 | 补水泵运行状态 | DI | 接触器辅助触点 |
| I0.3 | 补水泵故障 | DI | 热继电器常开触点 |
| I0.4 | 电动调节阀开到位 | DI | 限位开关 |
| I0.5 | 电动调节阀关到位 | DI | 限位开关 |
| I0.6 | 手动/自动转换 | DI | 旋钮开关 |
| I0.7 | 水箱液位低 | DI | 浮球开关 |
| Q0.0 | 循环泵接触器 | DO | 继电器输出 |
| Q0.1 | 补水泵接触器 | DO | 继电器输出 |
| Q0.2 | 备用泵接触器 | DO | 继电器输出 |
| Q0.3 | 电动调节阀开 | DO | 继电器输出 |
| Q0.4 | 电动调节阀关 | DO | 继电器输出 |
| Q0.5 | 报警指示灯 | DO | 继电器输出 |
| AIW0 | 二次供水温度 | AI | 4-20mA |
| AIW2 | 室外温度 | AI | 4-20mA |
| AIW4 | 二次网供水压力 | AI | 4-20mA |
| AIW6 | 二次网回水压力 | AI | 4-20mA |
| AIW8 | 二次网供回水压差 | AI | 4-20mA |
| AIW10 | 一次侧流量 | AI | 4-20mA |
| AQW0 | 变频器频率给定 | AO | 4-20mA |
接线时,模拟量信号线要用屏蔽双绞线,屏蔽层单端接地,接在 PLC 柜的接地排上。4-20mA 信号比 0-10V 信号抗干扰能力强,传输距离远,换热站现场电磁环境复杂,优先选 4-20mA 变送器。数字量输入如果接的是长距离信号,比如水箱液位开关在几十米外,建议加中间继电器隔离,避免感应电压导致误触发。
4. 控制程序框架:从模拟量采集到 PID 输出的完整链路
4.1 模拟量采集与工程量转换
S7-200 的模拟量输入模块把 4-20mA 信号转换成 0-32000 的整数。工程量转换就是把这个整数映射回实际的温度、压力、流量值。下面是一段温度转换的示例代码:
# 模拟量采集与工程量转换(以二次供水温度为例) # 假设 PT100 变送器量程 0-100℃,输出 4-20mA # S7-200 模拟量输入 AIW0 范围 0-32000 对应 4-20mA raw_value = AIW0 # 读取模拟量输入寄存器 # 第一步:判断信号是否断线 # 4-20mA 信号正常时,AIW0 读数应在 6400-32000 之间 # 低于 6400 说明传感器断线或短路 if raw_value < 6400: temp_value = -999 # 用特殊值标记故障 fault_flag = 1 else: # 第二步:线性变换 # 0-32000 对应 0-100℃,实际有效段 6400-32000 对应 0-100℃ temp_value = (raw_value - 6400) * 100.0 / (32000 - 6400) fault_flag = 0这段代码的逻辑是:先做断线检测,再做线性变换。断线检测的阈值 6400 对应 4mA 信号,如果传感器断线,输入电流降到 0mA,AIW0 读数接近 0,低于 6400 就判定为故障。这个判断必须做,否则断线时 PLC 会读到一个很低的温度值,PID 会误以为温度不够,把调节阀开到最大,造成能源浪费甚至过热。
压力、流量、压差的转换逻辑一样,只是量程不同。比如二次网供水压力变送器量程 0-1.6MPa,转换公式就是pressure = (raw_value - 6400) * 1.6 / (32000 - 6400)。
4.2 PID 指令块配置与参数整定
S7-200 的 PID 指令块需要配置一个回路表,占用 36 个字节的 V 存储区。下面是一个温度 PID 回路的配置示例:
# S7-200 PID 回路配置(二次供水温度控制) # 回路表起始地址 VB100 # 过程变量当前值(PV) VD100 = temp_value # 来自模拟量转换的二次供水温度 # 设定值(SP) VD104 = temp_setpoint # 根据室外温度曲线计算出的目标温度 # 输出值(OUT) VD108 = pid_output # 输出到 AQW0 控制电动调节阀 # 增益(Kc) VD112 = 2.0 # 比例增益,先给 2.0,振荡时降到 1.5 # 采样时间(Ts) VD116 = 1.0 # 采样周期 1 秒 # 积分时间(Ti) VD120 = 120.0 # 积分时间 120 秒,振荡时加到 180 秒 # 微分时间(Td) VD124 = 20.0 # 微分时间 20 秒,温度控制不宜过大 # 积分项前值(Mx) VD128 = 0.0 # 初始为 0 # 过程变量前值(PV) VD132 = 0.0 # 初始为 0配置好回路表后,在程序中调用 PID 指令块,指定回路表起始地址 VB100 和模拟量输出地址 AQW0。PID 指令块会自动完成偏差计算、PID 运算和输出限幅。输出限幅默认是 0.0 到 1.0,对应 4-20mA 输出时,需要把输出值乘以 32000 再写入 AQW0。
参数整定的实操顺序是:先把积分时间和微分时间设为零,只留比例增益,从 1.0 开始慢慢加大,直到二次温度出现小幅等幅振荡,记下此时的增益为 Ku,振荡周期为 Tu。然后按经验公式:比例增益取 0.6Ku,积分时间取 0.5Tu,微分时间取 0.125Tu。这个方法比盲试快得多,一般两三个小时就能整定到可用状态。
4.3 室外温度补偿曲线的实现
二次供水温度的设定值不是固定的,它跟着室外温度走。方案里给的做法是“给出一条室外温度与二次供水温度之间的对应曲线”。工程上常用的是分段线性化,把曲线拆成几个折点,用线性插值计算。
# 室外温度补偿曲线(分段线性插值) # 折点定义:室外温度 -> 二次供水温度设定值 # 室外温度高于 8℃ 时,供暖负荷很低,供水温度设 45℃ # 室外温度 0℃ 时,供水温度设 55℃ # 室外温度 -10℃ 时,供水温度设 65℃ # 室外温度低于 -15℃ 时,供水温度设 70℃ def calc_supply_temp(outdoor_temp): if outdoor_temp >= 8: return 45.0 elif outdoor_temp >= 0: # 8℃ 到 0℃ 之间,45℃ 到 55℃ 线性插值 ratio = (8 - outdoor_temp) / 8.0 return 45.0 + ratio * 10.0 elif outdoor_temp >= -10: # 0℃ 到 -10℃ 之间,55℃ 到 65℃ 线性插值 ratio = (0 - outdoor_temp) / 10.0 return 55.0 + ratio * 10.0 elif outdoor_temp >= -15: # -10℃ 到 -15℃ 之间,65℃ 到 70℃ 线性插值 ratio = (-10 - outdoor_temp) / 5.0 return 65.0 + ratio * 5.0 else: return 70.0这段代码在 S7-200 里用比较指令和整数运算就能实现。室外温度采集后,先判断落在哪个区间,再做线性插值。折点参数可以根据当地气候条件调整,北方寒冷地区可以把 -15℃ 以下的供水温度再提高一些,南方地区可以整体下调。
注意:室外温度传感器要装在建筑北侧阴面,避免阳光直射和墙体热辐射影响。装在向阳面的话,白天测到的温度偏高,PLC 会误判为室外暖和,把供水温度降下来,结果用户家里反而冷了。
4.4 晚间节能与分时分区控制
方案里提到“在系统中增加晚间节能的设置,根据需要设置晚间供热温度”。实现方式是用 S7-200 的实时时钟功能,在特定时间段内把二次供水温度设定值降低 3 到 5℃。比如晚上 22:00 到次日 6:00,供水温度设定值从 55℃ 降到 50℃。这个降幅不能太大,否则早上恢复时热惯性导致室温回升慢,用户会觉得冷。
分时分区控制更复杂一些,需要把用户分成不同区域,每个区域有独立的调节阀和温度设定。S7-200 的 I/O 点数有限,做分时分区一般要配触摸屏或上位机来下发不同时段的设定值。PLC 只负责执行和反馈。
5. 避坑与排查:换热站自控改造里最容易翻车的五个点
5.1 电动调节阀反馈信号跳变
现象:二次供水温度曲线出现周期性波动,调节阀开度反馈信号在触摸屏上跳来跳去,PID 输出跟着震荡。
原因:电动调节阀的阀位反馈电位器磨损,或者反馈信号线与动力线捆在一起走线,变频器输出的高频干扰耦合到反馈信号上。
解决:先检查反馈信号线是否与变频器输出线分开走线,间距至少 20cm。如果已经捆在一起,重新布线。反馈电位器磨损的话,用万用表测反馈电阻,转动阀杆时电阻值应该平滑变化,如果出现跳变,更换电位器或整个执行器。临时措施是在 PLC 程序里对反馈信号做 3 点滑动平均滤波,但这是治标不治本。
5.2 补水泵频繁启停
现象:补水泵每隔一两分钟就启动一次,接触器咔咔响,补水泵电机发热严重。
原因:压力设定值的上下限区间设得太窄,比如下限 0.35MPa、上限 0.36MPa,管网压力稍微波动就触发启停。或者压力传感器安装在靠近补水泵出口的位置,泵一启动压力立刻冲高,泵一停压力立刻掉下来,形成自激振荡。
解决:把压力设定值的上下限区间拉大,下限 0.35MPa、上限 0.40MPa,给系统留出缓冲空间。压力传感器改装在二次网回水干管上,远离补水泵出口。如果补水泵是变频控制,把变频器的加减速时间设长一些,从 10 秒加到 30 秒,让压力变化更平缓。
5.3 模拟量信号受变频器干扰
现象:循环泵变频器启动后,二次供水温度显示值跳动 2 到 3℃,压力显示值跳动 0.05MPa 左右,变频器停止后恢复正常。
原因:变频器输出的是高频 PWM 波形,输出电缆辐射电磁干扰,模拟量信号线没有屏蔽或屏蔽层接地不良,干扰信号被 PLC 模拟量模块采集到。
解决:模拟量信号线必须用屏蔽双绞线,屏蔽层在 PLC 柜侧单端接地。变频器输出电缆用屏蔽电缆,屏蔽层两端接地。模拟量信号线与变频器输出电缆分开走线槽,间距至少 30cm。如果干扰仍然存在,在模拟量输入模块的通道上并联 0.1uF 电容滤波,或者在 PLC 程序里做数字滤波。
5.4 PID 输出限幅没设对导致阀门卡死
现象:二次供水温度持续偏低,调节阀一直处于全开位置,但温度就是上不去。手动把阀门关小一点,温度反而上升。
原因:PID 输出限幅设成了 0-32000,对应 4-20mA 输出。但电动调节阀的输入信号范围是 4-20mA 对应 0-100% 开度,如果 PID 输出长时间停在 32000,阀门执行器一直收到 20mA 信号,电机堵转发热,时间长了要么烧电机,要么阀门卡死在全开位置。
解决:PID 输出限幅设成 6400-32000,对应 4-20mA 的 0-100% 开度。同时在程序里加一个输出变化速率限制,每个采样周期输出变化不超过 5%,避免阀门频繁大幅动作。电动调节阀本身也要有电气限位,开到位和关到位时自动切断电机电源。
5.5 通信中断导致上位机数据丢失
现象:中央控制室上位机画面上,某个换热站的数据突然全部变成零或问号,过几分钟又恢复。
原因:S7-200 的 RS-485 通信口没有隔离,换热站现场的地电位与中央控制室地电位不一致,通信线屏蔽层两端接地形成地环路电流,干扰通信信号。或者通信线距离过长,超过 RS-485 的 1200 米理论极限,信号衰减严重。
解决:在 RS-485 通信口加装光电隔离器,切断地环路。通信线屏蔽层只在 PLC 侧单端接地。如果距离超过 800 米,加装 RS-485 中继器。通信协议上,把上位机的轮询周期从 1 秒放宽到 3 秒,给通信留出重试时间。PLC 程序里加通信超时判断,超时后保持上一次的有效数据,而不是清零。
6. 从能跑到好用:换热站自控系统的验证与调优习惯
系统装完能跑起来只是第一步,真正难的是让它稳定跑过一个采暖季。我自己的习惯是,每年供暖季开始前做一轮全回路验证,不是只看触摸屏上有没有数,而是逐个回路做闭环测试。
温度回路验证:把二次供水温度设定值手动改成比当前值高 5℃,观察调节阀开度变化和温度响应。正常情况下,阀门应该在 30 秒内开始动作,温度在 5 到 10 分钟内达到新设定值,超调不超过 2℃。如果阀门不动,查 PID 输出和 AO 通道;如果温度到了但阀门不回关,查 PID 积分饱和。S7-200 的 PID 指令块没有内置抗积分饱和,需要在程序里加逻辑:当输出达到限幅值且偏差方向不变时,冻结积分项。
压力回路验证:把二次网压力设定值调高 0.05MPa,观察补水泵启动和压力上升过程。压力应该在 2 分钟内达到新设定值,补水泵在达到设定值后 10 秒内停止。如果补水泵停了但压力继续上升,说明止回阀关不严,或者补水泵出口有旁通阀内漏。
流量回路验证:把循环泵频率给定从 50Hz 降到 40Hz,观察供回水压差变化。压差应该随频率下降而降低,但不应低于设定下限。如果压差没变化,查压差传感器取压管是否堵塞。取压管堵塞是换热站里最常见的“玄学”故障,表现是压差显示值一直不变,但实际管网压差已经变了。
通信验证:在上位机连续记录 24 小时数据,检查是否有数据断点。如果有规律性断点,比如每小时断一次,查通信程序里的轮询逻辑是否有冲突。如果是随机断点,查通信线屏蔽和接地。
注意:所有验证做完后,把 PID 参数、温度补偿曲线折点、压力设定值、报警阈值这些关键参数抄在纸上,贴在控制柜门内侧。PLC 电池没电或程序丢失后,重新下载程序时这些参数不会自动恢复,有纸质记录能省很多事。
从那以后我每次做换热站改造,调试完成后都会强制走一遍“断电恢复测试”:把 PLC 断电,等 5 分钟再上电,观察系统是否能自动恢复到断前的运行状态。这个测试能暴露很多问题,比如 PID 回路表初始值没设对、阀门断电后位置漂移、补水泵自启动逻辑缺失。走完这一遍,采暖季里半夜被叫去现场的概率会低很多。希望帮到你。
本文还有配套的精品资源,点击获取