Skip to content

基础控制例程 5:多条件联动(与 / 或 / 非) ​

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

场景:本地或远程任一处都能启动,任一故障都要停机,故障汇总成一个"总故障"指示。与或非是每个程序都会用到的胶水。

软元件

软元件作用
M0本地启动命令
M1远程(云端 / 触摸屏)启动命令
M21 号设备故障
M32 号设备故障
Y0设备
Y20总故障指示

块图(照着拖即可)

例程 5:多条件联动(与 / 或 / 非) 的块图

对应的 ddc.json(点「生成 JSON」得到的就是它;也可存成 .ddc.json 导入)

json
{
  "version": 1,
  "name": "多条件联动",
  "scan_ms": 200,
  "lines": [
    {
      "op": "assign",
      "target": {"op":"ref","device":"Y","addr":0},
      "expr": {
        "op": "and",
        "args": [
          {
            "op": "or",
            "args": [{"op":"ref","device":"M","addr":0},{"op":"ref","device":"M","addr":1}]
          },
          {"op":"not","args":[{"op":"ref","device":"M","addr":2}]}
        ]
      }
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"Y","addr":20},
      "expr": {"op":"or","args":[{"op":"ref","device":"M","addr":2},{"op":"ref","device":"M","addr":3}]}
    }
  ]
}

要点

  • 或 = 任一满足(启动命令),与 = 全部满足(要运行:有命令且无故障),非 = 取反(故障 1 → 允许 0)。
  • 停机条件多于一个时继续往「或」里并,或再套一层:不要把所有条件堆在一行里,看不清也难改。
  • 汇总指示(总故障、总运行)单独用一条赋值算出来,屏和云端都读它,避免各处重复判断。

验证:M0 或 M1 任一为 1 且 M2 = 0 → Y0 = 1;M2 置 1 → Y0 = 0 且 Y20 = 1。

注意事项

  • 嵌套超过 3 层时「生成 JSON」可能报「程序嵌套太深」——拆成几条赋值,先算中间结果再合并。
  • 把故障信号定义成"正常=1"容易绕晕:统一约定 1 = 故障,要用"无故障"的地方再套「非」。
  • 远程启动命令来自云端时,要确认通信中断时的默认值(见 B5 例程 5),别让一个残留的 1 一直开着设备。

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