导入到我的 TIA 项目
通过 TiaLink 把本示例的 4 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
门默认是锁住的;当"启动按钮 + 移动传感器"同时有效并持续 10 秒后,门锁打开,并在条件消失后再保持 5 秒,然后重新锁上。
两个网络的分工很清晰:Network 1 用 TON + TOF 串联做"等 10 秒、再保持 5 秒"的延时;Network 2 把结果取反,变成门锁输出。
信号表
| 信号 |
类型 |
含义 |
作用 |
Start_Button |
I |
启动按钮 |
与传感器一起触发开门 |
Motion_Sensor |
I |
移动传感器 |
检测到人/物体 |
Tag_1 |
M |
开门窗口标志 |
1 = 门锁打开 |
Door_Locked |
Q |
门锁输出 |
默认 1(上锁) |
IEC_Timer_0_DB |
TON |
延时接通 10 秒 |
条件持续 10 秒才动作 |
IEC_Timer_0_DB_1 |
TOF |
延时断开 5 秒 |
条件消失后再保持 5 秒 |
工作流程
Start_Button 与 Motion_Sensor 同时有效;
- 持续 10 秒后,TON 输出 → TOF 输入接通;
- TOF 输出为 1 →
Tag_1=1 → Network 2 输出 Door_Locked=0,门锁打开;
- 条件消失后,TOF 再保持 5 秒,然后
Tag_1 归 0 → Door_Locked=1,门重新锁上。
MainOB
Network 1 — 10 秒延时 + 5 秒保持
目的:生成一个"延迟打开、稍后自动关闭"的开门窗口。
条件 → 动作:Start_Button AND Motion_Sensor 持续 10 秒 → TON 输出;该输出接到 TOF,TOF 让 Tag_1 保持,并在输入消失后继续维持 5 秒。
为什么:TON 解决"必须持续多久才开门",TOF 解决"条件没了还能保持多久"。两者串联就是最常见的"延迟 + 缓释"结构。
注意:TON 要求条件连续成立 10 秒,中途断开就重新计时;这是和 TP(触发后固定输出)最大的区别。
逻辑:Tag_1 = TOF(IN = TON(IN = Start_Button AND Motion_Sensor, PT = T#10s).Q, PT = T#5s).Q
Network 2 — 门锁输出(取反)
目的:把"开门窗口"翻译成门锁的物理输出。
条件 → 动作:Tag_1=1 时 Door_Locked=0(解锁);Tag_1=0 时 Door_Locked=1(上锁)。
为什么:门锁是"失电上锁"(fail-safe)的典型用法:默认锁住,只有逻辑允许时才通电打开,断线或停电都会保持锁门。
注意:原工程的注释里提到 M0.0,但当前逻辑用的是 Start_Button 和 Motion_Sensor;读的时候以实际接线为准。
逻辑:Door_Locked = NOT Tag_1
常见问题
- 门一直不解锁:确认两个输入是否同时有效且持续了 10 秒;TON 中途断开会重新计时。
- 门开得太短:把 TOF 的
PT 从 T#5s 调大。
- 想更快开门:把 TON 的
PT(T#10s)改小。
变体与扩展
- 自动感应门:把
Start_Button 去掉,只留 Motion_Sensor;再把 TON 时间调短。
- 加安全联锁:在 Network 2 里串一个"门区无障碍"信号,保证有人时不会上锁。
- 失败安全:保持
NOT Tag_1 的取反接法,门锁线圈失电时处于锁门状态。
变量与数据块
系统实例 DB(2 个)
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 | | |