主题
时序与定时例程
「先开风机、30 秒后再开压缩机」「人走灯延时灭」「按时段自动启停」——这类和时间有关的控制, 用的是定时器块、定时循环、系统时钟。每个例程同样给出块图 + 对应 ddc.json。
返回 例程总览。
这一页的主角
两个时间单位别搞混:主循环扫描周期是毫秒(默认 200);定时循环和定时器时间是秒 (定时循环最快 1 秒,定时器 0.1~86400 秒)。把 30 秒写成 30 毫秒,现象是"延时还没感觉到就动作了"。
例程 1:接通延时(风机先转,30 秒后才允许压缩机)
场景:压缩机启动前必须先建立风/水流,否则容易液击或高压保护。用「接通延时」把"风机已运行满 30 秒"变成允许条件。
软元件
| 软元件 | 作用 |
|---|---|
X0 / X1 | 开机 / 停机按钮 |
Y0 | 风机 |
Y1 | 压缩机允许(中间标志) |
Y2 | 压缩机 |
D100 | 实测温度 |
块图(照着拖即可)
对应的 ddc.json(点「生成 JSON」得到的就是它;也可存成 .ddc.json 导入)
json
{
"version": 1,
"name": "风机先转30秒",
"scan_ms": 200,
"lines": [
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":0},
"expr": {
"op": "rs",
"id": "rs_fan",
"args": [{"op":"ref","device":"X","addr":0},{"op":"ref","device":"X","addr":1}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":1},
"expr": {
"op": "timer",
"mode": "on",
"ti": 30,
"id": "t_on30",
"args": [{"op":"ref","device":"Y","addr":0}]
}
},
{
"op": "assign",
"target": {"op":"ref","device":"Y","addr":2},
"expr": {
"op": "and",
"args": [
{"op":"ref","device":"Y","addr":1},
{
"op": "cmp",
"cmp": ">=",
"args": [{"op":"ref","device":"D","addr":100},{"op":"const","value":26}]
}
]
}
}
]
}要点
- 「接通延时」= 输入为真并持续满设定时间后输出才为真;中途断开重新计时(不是累计)。
- 定时器时间单位是秒(这里填 30),默认 5 秒,范围 0.1~86400。
- 时间孔可以接动态输入(接一个 D 寄存器),运行中改寄存器就能改延时,调试时很方便。
验证:X0 启动 → Y0 立即为 1、Y1 在 30 秒内保持 0;满 30 秒 → Y1 = 1,此时 D100 ≥ 26 则 Y2 = 1;中途 X1 停机 → Y1 立刻回 0,再启动重新等 30 秒。
注意事项
- 时间当成毫秒填(填 30000 想表示 30 秒):实际是 30000 秒 ≈ 8.3 小时,设备看起来"永远不动作"。
- 定时器是有状态块,同一个程序里每颗要有唯一实例标识(这里的 t_on30);重复时校验报「实例标识重复」。
- 重新下发或重新上电后计时重新开始,别指望它记住上次的进度。
其余例程(各自一页)
- 时序与定时例程 2:断开延时(人走灯延时灭 / 停机后风扇延时冷却)
- 时序与定时例程 3:定时脉冲(按固定节奏动作)
- 时序与定时例程 4:定时循环做慢速统计(每 10 秒记一次峰值)
- 时序与定时例程 5:按时段自动启停(系统时钟)
- 时序与定时例程 6:一用一备轮换(每次启动换一台)
相关文档
- 2.1 程序类功能块(主循环 / 定时循环 / 条件判断)
- 2.3 逻辑类功能块(定时器三种模式、脉冲触发、启停控制)
- 2.2 数据类功能块(系统时钟)
- 基础控制例程 / 模拟量与工程量例程
- 3.2 常见问题(数量限制速查)