导入到我的 TIA 项目
通过 TiaLink 把本示例的 3 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按下启动按钮,秋千开始运行;持续运行 30 秒后触发报警提示;复位按钮用于解除/重置。
程序只有三个网络:启动、30 秒定时、复位。结构简单,但有一个值得注意的写法——Swing start sensor 被当作线圈使用,而它其实是一个 %I 输入地址。
信号表
| 信号 |
类型 |
含义 |
作用 |
PB |
I |
启动按钮 |
触发秋千运行 |
Swing start sensor |
I |
秋千运行标志 |
程序把它当线圈写(注意地址类型) |
Reset button |
I |
复位按钮 |
置位 Tag_1,暂时禁止启动 |
Tag_1 |
M |
复位/禁止标志 |
为 1 时启动条件断开 |
Alarm |
Q |
报警输出 |
运行 30 秒后动作 |
IEC_Timer_0_DB |
TON |
30 秒 |
报警延时 |
工作流程
Tag_1=0 时按下 PB → Swing start sensor=1;
Swing start sensor 持续 30 秒 → Alarm=1;
- 按住
Reset button → Tag_1=1,启动条件被切断,Swing start sensor 变 0,报警随之复位;
- 松开复位按钮,
Tag_1=0,可以再次启动。
MainOB
Network 1 — 启动
目的:在未复位状态下响应启动按钮。
条件 → 动作:PB=1 且 Tag_1=0 → Swing start sensor=1。
为什么:Tag_1 的常闭触点作为"复位/禁止"条件。
注意:Swing start sensor 在点表里是 %I0.0 输入地址,但这里被当线圈写入。在真实 PLC 中写输入地址通常不会驱动现场设备,建议改成 %M 或 %Q 标志。
逻辑:Swing start sensor = PB AND NOT Tag_1
Network 2 — 30 秒报警
目的:秋千运行超时后报警。
条件 → 动作:Swing start sensor=1 持续 30 秒 → Alarm=1。
为什么:用 TON 做运行时长限制;时间到就报警,提醒管理员。
注意:报警依赖 Swing start sensor 保持为 1;松开 PB 后启动标志变 0,报警也会消失。如果要"报警自保持",需要给 Alarm 加自锁。
逻辑:Alarm = TON(IN = Swing start sensor, PT = T#30s).Q
Network 3 — 复位
目的:用复位按钮解除运行/报警。
条件 → 动作:按住 Reset button → Tag_1=1,切断启动条件。
为什么:Tag_1 只作为禁止位,不直接复位报警;报警会随着启动标志消失而复位。
注意:Tag_1 是普通线圈,只在按住复位按钮时有效;松开后系统又允许启动。
逻辑:Tag_1 = Reset button
常见问题
- 按启动没反应:检查
Tag_1 是否为 1(复位按钮被按住或卡住)。
- 报警不出现:需要启动标志持续 30 秒;中途松开按钮会重新计时。
- 写输入地址无效:
Swing start sensor 是 %I,建议改成 %M/%Q 再使用。
变体与扩展
- 报警自保持:给
Alarm 加自锁,按复位按钮清除。
- 运行时间可调:把 TON 的
PT 换成参数。
- 加安全传感器:在启动条件中串入"秋千区域无人"等安全信号。
变量与数据块
系统实例 DB(1 个)
TIA 自动生成的定时器/计数器实例 DB,导入示例时会一并导入。
IEC_Timer_0_DB 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |