主题
模拟量与工程量例程 6:运行小时累计与保养提醒(保持寄存器)
这一页只讲这一个例程。母页 b-03-analog-scaling 里留着例程 1,其余例程各自一页、在那一页的目录里点。
场景:统计风机/泵累计运行小时,到保养周期(如 2000 小时)给出提醒——设备自带的"运行小时表"。
软元件
| 软元件 | 作用 |
|---|---|
Y0 | 设备运行(1 = 运行) |
X20 | 复位按钮(保养后清零) |
D300 | 累计小时(精确到 0.1 小时) |
D301 | 保持寄存器(断电续计) |
M300 | 保养提醒 |
L1 | 保养灯 |
块图(照着拖即可)
对应的 ddc.json(点「生成 JSON」得到的就是它;也可存成 .ddc.json 导入)
json
{
"version": 1,
"name": "运行小时累计",
"scan_ms": 200,
"lines": [
{
"op": "assign",
"target": {"op":"ref","device":"D","addr":300},
"expr": {
"op": "runtime",
"unit": "hour",
"id": "rt1",
"hold": 301,
"args": [{"op":"ref","device":"Y","addr":0},{"op":"ref","device":"X","addr":20}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"M","addr":300},
"expr": {
"op": "cmp",
"cmp": ">=",
"args": [{"op":"ref","device":"D","addr":300},{"op":"const","value":2000}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"L","addr":1},
"expr": {"op":"ref","device":"M","addr":300}
}
]
}要点
- 保持寄存器是断电续计的关键:填了它,断电或重启后累计值能读回来接着计;填 0 表示不保持。推荐 D200~D512。
- 单位可选小时(精确到 0.1 小时)、分、秒。
- 每个程序最多 6 个累计时间块,多设备各配一个时先数够不够。
验证:Y0 置 1,等一段时间读 D300(单位小时,短时间只有零点几);把 D300 写成 2000 → M300 = 1、L1 亮;X20 置 1 → D300 归零。
注意事项
- 不填保持寄存器:重新下发或断电后累计清零,保养提醒永远到不了。
- 保持寄存器选在别处也在写的地址:值被覆盖,累计乱跳。
- 复位按钮没取边沿:按着不放的期间一直在复位,累计永远停在 0——需要"只复位一次"时给 X20 加「脉冲触发」。