导入到我的 TIA 项目
通过 TiaLink 把本示例的 4 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
合上开关后,程序产生两个内部标志:Tag_1 是一个 10 秒脉冲,Tag_2 是开关持续 10 秒后置位的信号。点表里定义了 Lamp 1/Lamp 2,但程序里没有把它们接出来——这是一个"半成品"示例,适合用来练习 TON 与 TP 的区别,以及发现"输出未接"的问题。
信号表
| 信号 |
类型 |
含义 |
作用 |
Switch |
I |
开关 |
触发两个定时器 |
Tag_1 |
M |
10 秒脉冲 |
TP 输出,亮 10 秒后自动灭 |
Tag_2 |
M |
10 秒延时 |
TON 输出,10 秒后保持 |
Lamp 1 / Lamp 2 |
Q |
灯输出 |
点表已定义,程序中未驱动 |
| 定时器 |
TP/TON |
各 10 秒 |
脉冲 / 延时 |
工作流程
Switch=1 → TP 触发,Tag_1=1 保持 10 秒,然后自动归 0;
- 同时 TON 开始计时,10 秒后
Tag_2=1 并保持(只要开关不松开);
- 松开开关,两个定时器都复位。
MainOB
Network 1 — 10 秒脉冲 + 10 秒延时
目的:对比 TP 和 TON 在同一输入下的不同行为。
条件 → 动作:Switch=1 时,Tag_1 输出 10 秒后自动消失;Tag_2 在 10 秒后置位并保持。
为什么:TP 是"触发一次、固定输出一段时间";TON 是"条件持续到时间后保持输出"。两者都设为 10 秒,但结束行为不同。
注意:程序只生成了 Tag_1/Tag_2,没有驱动 Lamp 1/Lamp 2。实际使用时可以把 Tag_1 接到 Lamp 1(亮 10 秒)、Tag_2 接到 Lamp 2(10 秒后常亮),或者直接用定时器驱动灯输出。
逻辑:
Tag_1 = TP(IN = Switch, PT = T#10s).Q
Tag_2 = TON(IN = Switch, PT = T#10s).Q
常见问题
- 灯不亮:点表里有灯,但程序没有驱动;需要补输出映射。
- Tag_1 和 Tag_2 分不清:
Tag_1 10 秒后自动灭(脉冲),Tag_2 10 秒后保持(延时)。
- 松开开关后行为不同:两个定时器都会复位;如果希望保持,需要加自锁。
变体与扩展
- 接上灯输出:
Lamp 1 = Tag_1、Lamp 2 = Tag_2,立刻得到"亮 10 秒"和"10 秒后常亮"两种效果。
- 延时点亮:只保留 TON,用
Tag_2 驱动灯,就是标准的延时开灯。
- 延时熄灭:改用 TOF,做"开关断开后灯继续亮 10 秒"。
变量与数据块
系统实例 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 | | |