主题
基础控制例程 3:报警指示(常亮 / 慢闪 / 快闪)
这一页只讲这一个例程。母页 b-01-basic-control 里留着例程 1,其余例程各自一页、在那一页的目录里点。
场景:超限、故障要在面板上有明显提示。写 L 可编程灯最简单——一个赋值就能让它自己闪,不用搭定时器。
软元件
| 软元件 | 作用 |
|---|---|
D100 | 实测温度 |
L0 | 面板指示灯(0 灭 / 1 亮 / 2 慢闪 1Hz / 3 快闪 5Hz) |
块图(照着拖即可)
对应的 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":100},{"op":"const","value":80}]
},
"then": [
{
"op": "assign",
"target": {"op":"ref","device":"L","addr":0},
"expr": {"op":"const","value":2}
}
],
"else": [
{
"op": "assign",
"target": {"op":"ref","device":"L","addr":0},
"expr": {"op":"const","value":0}
}
],
"elseif": [
{
"cond": {
"op": "cmp",
"cmp": ">=",
"args": [{"op":"ref","device":"D","addr":100},{"op":"const","value":60}]
},
"then": [
{
"op": "assign",
"target": {"op":"ref","device":"L","addr":0},
"expr": {"op":"const","value":1}
}
]
}
]
}
]
}要点
L是可编程灯,地址和 Y 相同(八进制编号),写 2 / 3 就自己按 1Hz / 5Hz 闪。- 分级指示用「否则如果」串起来,条件从严格到宽松排列:先 80 再 60,顺序反了永远轮不到 80 那一档。
- 定时器块是有状态块(要唯一实例标识),能用 L 灯解决的就别占用定时器名额。
验证:D100 写 50 → L0 = 0;写 70 → L0 = 1(常亮);写 90 → L0 = 2(每秒闪一次)。
注意事项
- L 和 Y 是同一批地址:同一个点既写
Y0又写L0,两边互相顶,行为不可预期。一个点只选一种写法。 - 只有两档频率(1Hz / 5Hz),做不到 0.5Hz 这种自定义频率——那种需求用定时器「脉冲输出」。
- 「否则如果」最多 3 个,不够就拆成多段平铺的「如果」。