Skip to content

综合场景例程 5:从站掉线保护(第三方数据参与控制时的必备保护) ​

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

场景:温度、电量等关键数据来自第三方从站(先在 DTU 功能里配好采集、绑定到 D 寄存器)。从站掉线时 D 里留的是最后一次的值,拿它继续控制等于闭着眼睛开车。

软元件

软元件作用
D701从站通信状态字所在的 D
M700通信异常标志
M500运行需求
Y0设备输出
L2通信指示灯

块图(照着拖即可)

例程 5:从站掉线保护(第三方数据参与控制时的必备保护) 的块图

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

json
{
  "version": 1,
  "name": "从站掉线保护",
  "scan_ms": 200,
  "lines": [
    {
      "op": "if",
      "cond": {
        "op": "cmp",
        "cmp": "!=",
        "args": [{"op":"ref","device":"D","addr":701},{"op":"const","value":0}]
      },
      "then": [
        {
          "op": "assign",
          "target": {"op":"ref","device":"M","addr":700},
          "expr": {"op":"const","value":1}
        }
      ],
      "else": [
        {
          "op": "assign",
          "target": {"op":"ref","device":"M","addr":700},
          "expr": {"op":"const","value":0}
        }
      ]
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"Y","addr":0},
      "expr": {
        "op": "and",
        "args": [
          {"op":"ref","device":"M","addr":500},
          {"op":"not","args":[{"op":"ref","device":"M","addr":700}]}
        ]
      }
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"L","addr":2},
      "expr": {"op":"ref","device":"M","addr":700}
    }
  ]
}

要点

  • 「取通信变量 Dn」读的是 DTU 采集绑定的 D;「从站通信状态 Dn」读的是该从站的状态字,两者配套使用。
  • 阈值以实际读到的为准:先用上位机读一次该状态字(正常时多少、掉线时多少),再把比较块的阈值改成那个数。本例写 ≠ 0 是示意,请按实测值改。
  • 每个参与控制的从站单独判一次,别共用一个"总通信标志"——一个从站掉线不该把所有设备都停掉。

验证:正常时 M700 = 0、Y0 随 M500 动作;拔掉从站通信线(或在 DTU 里停掉该从站)→ 状态字变化 → M700 = 1、Y0 = 0、L2 亮。

注意事项

  • 不判掉线:从站掉线后 D 里是最后一次的值(比如 25℃),程序一直"正常"运行——用第三方数据做控制时最危险的疏漏。
  • 只在画面上报警、输出不停:报警没人看就等于没有。
  • 阈值照抄本页:状态字取值随 DTU 配置而变,先读一次真实值再填。

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