Skip to content

时序与定时例程 6:一用一备轮换(每次启动换一台) ​

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

场景:两台泵/风机,平时只开一台,每次启动换另一台让磨损均匀;当前这台故障就自动落到另一台。

软元件

软元件作用
X0 / X1开泵 / 停泵请求
M60运行需求
D610轮换标志(0 = 1 号,1 = 2 号)
M61 / M621 号 / 2 号故障
Y0 / Y11 号泵 / 2 号泵

块图(照着拖即可)

例程 6:一用一备轮换(每次启动换一台) 的块图

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

json
{
  "version": 1,
  "name": "一用一备轮换",
  "scan_ms": 200,
  "lines": [
    {
      "op": "assign",
      "target": {"op":"ref","device":"M","addr":60},
      "expr": {
        "op": "rs",
        "id": "rs_run",
        "args": [{"op":"ref","device":"X","addr":0},{"op":"ref","device":"X","addr":1}]
      }
    },
    {
      "op": "if",
      "cond": {"op":"edge","edge":"rise","id":"e_rot","args":[{"op":"ref","device":"M","addr":60}]},
      "then": [
        {
          "op": "assign",
          "target": {"op":"ref","device":"D","addr":610},
          "expr": {
            "op": "arith",
            "a": "-",
            "args": [{"op":"const","value":1},{"op":"ref","device":"D","addr":610}]
          }
        }
      ],
      "else": []
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"Y","addr":0},
      "expr": {
        "op": "and",
        "args": [
          {"op":"ref","device":"M","addr":60},
          {
            "op": "and",
            "args": [
              {
                "op": "cmp",
                "cmp": "==",
                "args": [{"op":"ref","device":"D","addr":610},{"op":"const","value":0}]
              },
              {"op":"not","args":[{"op":"ref","device":"M","addr":61}]}
            ]
          }
        ]
      }
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"Y","addr":1},
      "expr": {
        "op": "and",
        "args": [
          {"op":"ref","device":"M","addr":60},
          {
            "op": "and",
            "args": [
              {
                "op": "cmp",
                "cmp": "==",
                "args": [{"op":"ref","device":"D","addr":610},{"op":"const","value":1}]
              },
              {"op":"not","args":[{"op":"ref","device":"M","addr":62}]}
            ]
          }
        ]
      }
    }
  ]
}

要点

  • 轮换靠 1 - D610 做状态翻转(0↔1),配合「脉冲触发」保证一次启动只翻一次——这就是二分频。
  • 故障只做"屏蔽选中":故障泵不会在这轮被选中,但轮换顺序不变,修好后下次照样轮到它。
  • D610 默认 0;必要上电初始化里赋值一次,保证每次下发后都从 1 号开始。

验证:X0 一次 → Y0 = 1;X1 停止后再 X0 → Y1 = 1;把 M61 置 1(1 号故障)后再启动 → Y1 = 1。

注意事项

  • 不用「脉冲触发」直接翻转:运行期间每个扫描周期翻一次,两台泵以 200 毫秒的频率来回切。
  • 用「或」代替轮换让两台同时启动:那是一用一备变成"双投",压力/流量会翻倍。
  • 故障信号接的是常闭点却当"1 = 故障"用:逻辑反了,故障泵反而被优先选中。

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