Skip to content

综合场景例程 3:水箱液位(双泵 + 高低报警 + 报警锁存) ​

这一页只讲这一个例程。母页 b-05-integrated-scenarios 里留着例程 1,其余例程各自一页、在那一页的目录里点。

场景:水箱补水/排水:液位到高值开泵、低值停泵(回差),超高/超低单独报警,低液位报警要锁存并人工确认。

软元件

软元件作用
D620液位(%)
M520主泵运行(80 开 / 20 停)
M521 / M522超高(≥90)/ 超低(≤10)
M530低液位报警锁存
X21确认按钮
Y0 / Y1主泵 / 备用泵
Y20 / Y21高 / 低液位报警

块图(照着拖即可)

例程 3:水箱液位(双泵 + 高低报警 + 报警锁存) 的块图

对应的 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%)→ 一直"超低",补水场合会缺水。断线要用量程外的判断或通信状态区分。
  • 补水 / 排水方向搞反:接程序前先确认泵的作用。
  • 超高液位只报警不停泵(补水场合):会溢流。

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研