导入到我的 TIA 项目
通过 TiaLink 把本示例的 5 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
每个楼层一个按钮、一盏灯:按下按钮点亮对应楼层的灯,松开后延时 10 秒自动熄灭。
三个网络结构完全相同,都是"按钮 + TOF 延时断开 + 灯"的最简组合。点表里还定义了 L4,但程序只实现了三层。
信号表
| 信号 |
类型 |
含义 |
作用 |
S1 / S2 / S3 |
I |
各楼层按钮 |
按下点亮对应楼层灯 |
L1 / L2 / L3 |
Q |
各楼层灯 |
按钮松开后延时 10 秒熄灭 |
IEC_Timer_0_DB / _1 / _2 |
TOF |
各 10 秒 |
延时断开 |
L4 |
Q |
第 4 层灯 |
点表已定义,程序未使用 |
工作流程
- 按下
S1 → L1 立即点亮;
- 松开
S1 → TOF 开始计时 10 秒,L1 继续亮;
- 10 秒到 →
L1 自动熄灭;
S2/S3 对 L2/L3 同理。
MainOB
Network 1 — 一层灯
目的:按钮控制一层灯的延时熄灭。
条件 → 动作:S1=1 时 L1=1;S1 变 0 后 TOF 继续输出 10 秒,然后 L1=0。
为什么:TOF 是"延时断开"——输入为 1 时输出立即为 1,输入变 0 后输出保持 PT 那么久。正好符合"人走后再亮一会儿"的楼梯灯需求。
注意:TOF 的 PT 是"松开后还亮多久",不是"按下后多久亮";这一点和 TON 正好相反。
逻辑:L1 = TOF(IN = S1, PT = T#10s).Q
Network 2 — 二层灯
目的:与一层完全相同的延时熄灭逻辑。
条件 → 动作:S2=1 → L2=1;S2 变 0 后保持 10 秒再熄灭。
逻辑:L2 = TOF(IN = S2, PT = T#10s).Q
Network 3 — 三层灯
目的:与一层完全相同的延时熄灭逻辑。
条件 → 动作:S3=1 → L3=1;S3 变 0 后保持 10 秒再熄灭。
逻辑:L3 = TOF(IN = S3, PT = T#10s).Q
常见问题
- 灯不亮:确认按钮信号和对应的 TOF 实例是否正常。
- 熄灭太快/太慢:改 TOF 的
PT(T#10s)。
- 第四层没有灯:点表里有
L4,但程序没有实现第四层;需要复制一个网络并接 S4。
变体与扩展
- 加第四层:复制 Network 3,把
S3/L3 换成 S4/L4(点表已就绪)。
- 统一延时:把三个 TOF 的
PT 改成同一个变量,便于集中调整。
- 改成 TON 延时点亮:如果需求是"按下后延迟亮"而不是"延时灭",把 TOF 换成 TON 即可。
变量与数据块
系统实例 DB(3 个)
TIA 自动生成的定时器/计数器实例 DB,导入示例时会一并导入。
IEC_Timer_0_DB 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |
IEC_Timer_0_DB_1 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |
IEC_Timer_0_DB_2 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |