主题
综合场景例程 3:水箱液位(双泵 + 高低报警 + 报警锁存)
这一页只讲这一个例程。母页 b-05-integrated-scenarios 里留着例程 1,其余例程各自一页、在那一页的目录里点。
场景:水箱补水/排水:液位到高值开泵、低值停泵(回差),超高/超低单独报警,低液位报警要锁存并人工确认。
软元件
| 软元件 | 作用 |
|---|---|
D620 | 液位(%) |
M520 | 主泵运行(80 开 / 20 停) |
M521 / M522 | 超高(≥90)/ 超低(≤10) |
M530 | 低液位报警锁存 |
X21 | 确认按钮 |
Y0 / Y1 | 主泵 / 备用泵 |
Y20 / Y21 | 高 / 低液位报警 |
块图(照着拖即可)
对应的 ddc.json(点「生成 JSON」得到的就是它;也可存成 .ddc.json 导入)
json
{
"version": 1,
"name": "水箱液位",
"scan_ms": 200,
"lines": [
{
"op": "assign",
"target": {"op":"ref","device":"M","addr":520},
"expr": {
"op": "rs",
"id": "rs_lvl",
"args": [
{
"op": "cmp",
"cmp": ">=",
"args": [{"op":"ref","device":"D","addr":620},{"op":"const","value":80}]
},
{
"op": "cmp",
"cmp": "<=",
"args": [{"op":"ref","device":"D","addr":620},{"op":"const","value":20}]
}
]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"M","addr":521},
"expr": {
"op": "cmp",
"cmp": ">=",
"args": [{"op":"ref","device":"D","addr":620},{"op":"const","value":90}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"M","addr":522},
"expr": {
"op": "cmp",
"cmp": "<=",
"args": [{"op":"ref","device":"D","addr":620},{"op":"const","value":10}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":0},
"expr": {
"op": "and",
"args": [
{"op":"ref","device":"M","addr":520},
{"op":"not","args":[{"op":"ref","device":"M","addr":522}]}
]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":1},
"expr": {"op":"ref","device":"M","addr":521}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":20},
"expr": {"op":"ref","device":"M","addr":521}
},
{
"op": "assign",
"target": {"op":"ref","device":"M","addr":530},
"expr": {
"op": "rs",
"id": "rs_low",
"args": [
{"op":"ref","device":"M","addr":522},
{
"op": "and",
"args": [
{"op":"ref","device":"X","addr":21},
{"op":"not","args":[{"op":"ref","device":"M","addr":522}]}
]
}
]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":21},
"expr": {"op":"ref","device":"M","addr":530}
}
]
}要点
- 主泵用启停控制自带回差(80 开 / 20 停),避免液位在临界点抖动时泵反复启停。
- 超低液位要禁开泵:干转几分钟就烧机封,这条比"补水"更重要。
- 报警锁存沿用 B1 例程 4 的结构:启动 = 故障,停止 = 已确认且已恢复。
验证:D620 写 85 → Y0 = 1;写 15 → Y0 = 0、M522 = 1、Y21 = 1;按 X21 且 D620 回到 50 → Y21 = 0。
注意事项
- 液位计断线(0%)→ 一直"超低",补水场合会缺水。断线要用量程外的判断或通信状态区分。
- 补水 / 排水方向搞反:接程序前先确认泵的作用。
- 超高液位只报警不停泵(补水场合):会溢流。