导入到我的 TIA 项目
通过 TiaLink 把本示例的 3 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
门锁只有在"收到上锁命令、监测区无人、且不在解锁窗口内"时才输出上锁;解锁命令会让门锁在 10 秒内保持释放状态;只要检测到人,门锁就不能上锁。
这是个安全联锁类的小例子:命令 + 传感器 + 定时窗口三个条件共同决定门锁输出,非常适合理解"安全条件优先"的写法。
信号表
| 信号 |
类型 |
含义 |
作用 |
Door Lock Command |
I |
上锁命令 |
请求门锁输出 |
Door Unlock Command |
I |
解锁命令 |
触发 10 秒解锁窗口 |
Human_Sensor |
I |
人体传感器 |
检测到人时禁止上锁 |
Door |
Q |
门锁输出 |
上锁线圈 |
Tag_1 |
M |
有人标志 |
直接反映 Human_Sensor |
Tag_2 |
M |
解锁窗口 |
解锁命令后保持 10 秒 |
IEC_Timer_0_DB |
TP |
解锁窗口 10 秒 |
决定解锁保持时长 |
工作流程
- 没有上锁命令时,门锁输出为 0(释放状态);
- 给出
Door Lock Command,且 Human_Sensor=0、Tag_2=0 → Door=1 上锁;
- 给出
Door Unlock Command → Tag_2 输出 10 秒;这 10 秒内 Door 被强制为 0;
- 只要
Human_Sensor=1,Tag_1 就为 1,门锁同样保持释放。
MainOB
Network 2 — 门锁输出条件
目的:把命令和两个安全条件组合成门锁输出。
条件 → 动作:Door Lock Command=1 且 Tag_1=0(无人)且 Tag_2=0(不在解锁窗口)→ Door=1。
为什么:门锁输出没有自锁,是"条件全部成立才输出"的组合逻辑。这样任何安全条件失效(有人或正在解锁),门锁都会立即释放。
注意:Door 是线圈输出而不是保持状态,所以上锁命令若只是按钮点动,门锁只在按钮按住期间通电。实际工程中通常会让上锁命令来自门禁系统并保持,或者给 Door 加自锁——取取决于门锁硬件的控制方式。
逻辑:Door = Door Lock Command AND NOT Tag_1 AND NOT Tag_2
Network 3 — 有人检测
目的:把人体传感器变成"禁止上锁"的条件。
条件 → 动作:Human_Sensor=1 → Tag_1=1。
为什么:单独一层映射让 Network 2 的组合逻辑更整齐;以后若要增加"维修模式""测试模式"等条件,可以在这里继续并联。
逻辑:Tag_1 = Human_Sensor
Network 4 — 解锁窗口 10 秒
目的:收到解锁命令后,保持 10 秒的解锁状态。
条件 → 动作:Door Unlock Command=1 触发 TP → Tag_2 输出保持 10 秒。
为什么:用 TP 保证解锁窗口完整(即使解锁命令只是瞬间脉冲),避免"按一下解锁、马上又锁上"。
注意:TP 触发后固定 10 秒,不会因为再次按解锁按钮而延长;要延长需要等本次脉冲结束。
逻辑:Tag_2 = TP(IN = Door Unlock Command, PT = T#10s).Q
常见问题
- 门锁一直不上锁:按住解锁按钮或有人停留在传感器范围内都会阻止上锁,检查
Tag_1/Tag_2 是否有一个为 1。
- 上锁只持续一瞬间:
Door Lock Command 是点动信号时,输出只在按下期间有效;需要保持命令或给输出加自锁。
- 解锁时间太短/太长:改 TP 的
PT(T#10s)。
变体与扩展
- 上锁自锁:把
Door 改成自锁输出(Door = (Door Lock Command OR Door) AND NOT Tag_1 AND NOT Tag_2),点动命令也能保持上锁。
- 增加安全条件:在 Network 2 的串联链上继续加"门已关闭""无火警"等常闭条件。
- 多门管理:按同样结构复制多个网络,分别管理每扇门的传感器和输出。
变量与数据块
系统实例 DB(1 个)
TIA 自动生成的定时器/计数器实例 DB,导入示例时会一并导入。
IEC_Timer_0_DB 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |