导入到我的 TIA 项目
通过 TiaLink 把本示例的 6 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
两个按钮各控制一盏闪烁灯:light 以 2 秒亮、2 秒灭闪烁;light 2 以 5 秒亮、5 秒灭闪烁。按住按钮期间持续闪烁。
程序用 TP(亮)+ TON(灭) 交替,是调节闪烁间隔最直观的写法。
信号表
| 信号 |
类型 |
含义 |
作用 |
PB1 |
I |
启动闪烁 1 |
按住时 light 闪烁 |
PB2 |
I |
启动闪烁 2 |
按住时 light 2 闪烁 |
light |
Q |
灯 1 |
2 秒亮 / 2 秒灭 |
light 2 |
Q |
灯 2 |
5 秒亮 / 5 秒灭 |
Tag_1 |
M |
灯 1 灭灯窗口 |
2 秒 |
Tag_2 |
M |
灯 2 灭灯窗口 |
5 秒 |
| 定时器 |
TP/TON |
2s×2、5s×2 |
亮/灭时长 |
工作流程
- 按住
PB1 → light=1 亮 2 秒;
- 2 秒后
Tag_1=1,light 灭 2 秒;
Tag_1 结束后 light 重新亮,循环;
PB2 控制 light 2,节奏为 5 秒亮 / 5 秒灭。
MainOB
Network 1 — 2 秒闪烁
目的:用定时器交替控制灯 1 的亮/灭。
条件 → 动作:PB1=1 且 Tag_1=0 → TP 触发,light=1 持续 2 秒;灯灭后 Tag_1 由 TON 计时 2 秒,期间禁止灯亮;Tag_1 结束后重新点亮。
为什么:TP 控制"亮多久",TON 控制"灭多久";Tag_1 的常闭触点是灭灯互锁。
注意:按钮松开后两个定时器都失去条件,闪烁停止;这是"按住才闪"的设计。
逻辑:
light = TP(IN = PB1 AND NOT Tag_1, PT = T#2s).Q
Tag_1 = TON(IN = PB1 AND NOT Tag_1 AND NOT light, PT = T#2s).Q
Network 2 — 5 秒闪烁
目的:与 Network 1 相同,只是把亮/灭时间都改成 5 秒。
条件 → 动作:PB2=1 且 Tag_2=0 → light 2=1 亮 5 秒;随后 Tag_2 计时 5 秒,灯灭;循环。
逻辑:
light 2 = TP(IN = PB2 AND NOT Tag_2, PT = T#5s).Q
Tag_2 = TON(IN = PB2 AND NOT Tag_2 AND NOT light 2, PT = T#5s).Q
常见问题
- 不闪:确认按钮是否按住;松开即停止。
- 亮/灭时间不对:每盏灯有两个定时器,TP 管亮、TON 管灭,两个都要改。
- 两盏灯互相影响:它们使用独立的标签和定时器,正常不会互相影响;检查变量名是否写错。
变体与扩展
- 可调间隔:把四个
PT 换成 HMI 变量,现场调整闪烁节奏。
- 单按钮切换:用翻转逻辑让按一下持续闪烁、再按停止。
- 同步闪烁:两盏灯共用一个节拍(同一个 TP/TON),保证同时亮灭。
变量与数据块
系统实例 DB(4 个)
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 | | |
IEC_Timer_0_DB_3 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |