Skip to content

模拟量与工程量例程 2:限幅 + 取整(夹住异常值再写进 D) ​

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

场景:传感器断线、干扰会出现离谱的读数,不能让它进控制逻辑;显示用的 D 寄存器也不适合放小数。

软元件

软元件作用
D110换算后的温度(带小数)
D120限幅后的温度
D130取整后的温度(可直接显示 / 比较)

块图(照着拖即可)

例程 2:限幅 + 取整(夹住异常值再写进 D) 的块图

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

json
{
  "version": 1,
  "name": "限幅取整",
  "scan_ms": 200,
  "lines": [
    {
      "op": "assign",
      "target": {"op":"ref","device":"D","addr":120},
      "expr": {
        "op": "limit",
        "args": [
          {"op":"ref","device":"D","addr":110},
          {"op":"const","value":-40},
          {"op":"const","value":70}
        ]
      }
    },
    {
      "op": "assign",
      "target": {"op":"ref","device":"D","addr":130},
      "expr": {"op":"bitget","bit":null,"args":[{"op":"ref","device":"D","addr":120}]}
    }
  ]
}

要点

  • 限值运算把输入夹在上下限之间。它同时是断线保护:断线算出 -71℃ 会被夹成 -40,控制逻辑不会拿到荒唐的值。
  • 「取位」块除了取位还能取整数部分(BIT 选"整数部分"),这是把带小数的计算结果写进 D 寄存器的标准做法。
  • 限幅上下限要和量程一致(这里 -40~70),否则会把真实的超量程情况隐藏掉。

验证:D110 = 15.5 → D120 = 15.5、D130 = 15;D110 = -71 → D120 = -40;D110 = 95 → D120 = 70。

注意事项

  • 取整会丢掉小数(0.5℃ 分辨率没了)。要保留小数就别取整,直接用带小数的中间值比较。
  • 限幅上下限填成 0~100 而量程是 -40~70:负数被抬成 0,低温报警永远不会触发。
  • 把限幅后的值写回同一个 D100(源和目的同地址):下一轮读到的是被夹过的值,原始读数再也读不回来。

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