主题
HVAC 暖通例程
暖通专用块只有两个(PI 控制、空调参数计算),但它们是 DDC 的看家本事: 一个负责把温度平稳拉到设定值,一个负责把温湿度变成焓值 / 露点 / 湿球温度。
返回 例程总览。
这一页的主角
PI 调节三句话:① 制冷选正作用(正比例 = 1),加热选反作用(正比例 = 0),选反了就是"越热越加热"; ② 先只调比例(Ti 填 0 关积分),Kp 从默认 10 起,震荡就减小、太慢就加大,稳了再加 Ti(60~300 秒); ③ 死区给 0.5~1℃,让阀门接近目标时不再微动——否则几个月就磨坏执行器。
例程 1:房间恒温(制冷,PI 调水阀 / 风阀)
场景:把房间温度平稳控制在设定值,输出 0~100 直接当阀门开度或变频器频率百分比用。最典型的一个 PI 回路。
软元件
| 软元件 | 作用 |
|---|---|
D220 | 系统运行标志 |
D110 | 实测温度(已线性变换) |
D150 | 当前设定值 |
D210 | PI 输出(0~100) |
D230 | 限幅后的阀门开度 |
Y0 | 风机 |
块图(照着拖即可)
对应的 ddc.json(点「生成 JSON」得到的就是它;也可存成 .ddc.json 导入)
json
{
"version": 1,
"name": "房间恒温PI",
"scan_ms": 500,
"lines": [
{
"op": "assign",
"target": {"op":"ref","device":"D","addr":210},
"expr": {
"op": "pi",
"id": "pi_room",
"args": [
{"op":"ref","device":"D","addr":220},
{"op":"const","value":1},
{"op":"ref","device":"D","addr":110},
{"op":"ref","device":"D","addr":150},
{"op":"const","value":0.5},
{"op":"const","value":10},
{"op":"const","value":128}
]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"D","addr":230},
"expr": {
"op": "limit",
"args": [
{"op":"ref","device":"D","addr":210},
{"op":"const","value":10},
{"op":"const","value":90}
]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":0},
"expr": {"op":"ref","device":"D","addr":220}
}
]
}要点
- PI 的 7 个输入依次是:使能、正比例、输入、设定、死区、Kp、积分时间 Ti(秒);输出固定 0~100。
- 限值运算套在输出外面做保护:冷水阀留 10% 最小开度(防冻、防泵憋压),上限 90% 留调节余量。
- 设定值接寄存器(D150)而不是常量,就能配合工况切换自动改目标。
验证:D220 = 1、D110 从 22 升到 29 → D210 从接近 0 增到接近 100;进入死区(±0.5)后输出保持不动;D220 = 0 → 停止调节。
注意事项
- 输入接了未换算的原始读数(如 4000):PI 看到"温度 4000 度",输出直接顶到 100 不动。
- 使能断开时 PI 停止调节(不再更新输出),但不会自动清 0。要"停机即关阀"另加一条:
如果 非 D220 → D230 ← 0。 - 死区给 0:阀门在设定点附近一直微动,几个月就磨坏。
其余例程(各自一页)
- HVAC 暖通例程 2:加热工况(反作用)+ 停机清零
- HVAC 暖通例程 3:新风 / 回风焓值比较(经济运行)
- HVAC 暖通例程 4:露点防结露(送风温度不低于露点)
- HVAC 暖通例程 5:冷却塔风机(湿球温度 + 出水温度双条件)
相关文档
- 2.5 HVAC 暖通功能块(PI 参数说明、空调参数计算四个输出)
- 2.4 计算类功能块(限值、多路选择、取最大最小)
- B1 基础控制 / B3 模拟量与工程量 / B5 综合场景
- 3.2 常见问题(PI 输出不动怎么排查)