Skip to content

时序与定时例程 4:定时循环做慢速统计(每 10 秒记一次峰值) ​

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

场景:记录最高/最低温度、统计累计流量这类事不需要每个扫描周期都做。放进定时循环(独立并行跑),既不拖慢主循环,也不用自己算时间。

软元件

软元件作用
D100当前温度
D410历史最高温度
D411历史最低温度

块图(照着拖即可)

例程 4:定时循环做慢速统计(每 10 秒记一次峰值) 的块图

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

json
{
  "version": 1,
  "name": "峰值保持",
  "scan_ms": 200,
  "lines": [],
  "timed_loops": [
    {
      "scan_ms": 10000,
      "lines": [
        {
          "op": "assign",
          "target": {"op":"ref","device":"D","addr":410},
          "expr": {
            "op": "minmax",
            "mode": "max",
            "args": [{"op":"ref","device":"D","addr":410},{"op":"ref","device":"D","addr":100}]
          }
        },
        {
          "op": "assign",
          "target": {"op":"ref","device":"D","addr":411},
          "expr": {
            "op": "minmax",
            "mode": "min",
            "args": [{"op":"ref","device":"D","addr":411},{"op":"ref","device":"D","addr":100}]
          }
        }
      ]
    }
  ]
}

要点

  • 定时循环独立并行,和主循环互不等待:主循环跑实时逻辑,定时循环跑慢速统计。
  • 周期单位秒(这里 10 秒),每个程序最多 3 个定时循环(加主循环共 4 股执行流)。
  • "取最大"把自身作为一路输入就形成峰值保持;要清零就再赋值一次 0。

验证:把 D100 写成 80 → 10 秒内 D410 变成 80;再写 50 → D410 保持 80(峰值保持)、D411 变成 50。

注意事项

  • 定时循环周期单位当成毫秒填(填 10000 想表示 10 秒):实际 10000 秒 ≈ 2.8 小时才跑一次。
  • 超过 3 个定时循环会被校验拦下(报"定时循环最多 3 个")。
  • 定时循环和主循环写同一个寄存器会互相顶:一个寄存器只让一方写。

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