导入到我的 TIA 项目
通过 TiaLink 把本示例的 7 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按启动按钮并检测到工件后,测试台依次触发三路测试输出:test_1 立即运行 10 秒,test_2 等 15 秒后运行 10 秒,test_3 等 30 秒后运行 10 秒。
整个程序只有一个网络,却用三组"延时接通 + 脉冲输出"定时器链并行搭出了一个错峰动作的时序。它是理解"用 TON 做延时、用 TP 做脉冲"的最佳练习。
信号表
| 信号 |
类型 |
含义 |
作用 |
Start_Button |
I |
启动按钮 |
与传感器一起启动测试 |
sensor |
I |
工件传感器 |
检测到工件才允许测试 |
test_1 |
Q |
测试输出 1 |
立即输出 10 秒 |
test_2 |
Q |
测试输出 2 |
15 秒后输出 10 秒 |
test_3 |
Q |
测试输出 3 |
30 秒后输出 10 秒 |
IEC_Timer_0_DB |
TP |
测试 1 脉冲 |
10 秒 |
IEC_Timer_0_DB_1 / _2 |
TON / TP |
测试 2 延时与脉冲 |
15 秒后 10 秒 |
IEC_Timer_0_DB_3 / _4 |
TON / TP |
测试 3 延时与脉冲 |
30 秒后 10 秒 |
工作流程
Start_Button=1 且 sensor=1 → 三个定时器链同时获得条件;
test_1 立即触发 TP,输出 10 秒;
- 第 15 秒时,第二链的 TON 到时间 → 触发 TP,
test_2 输出 10 秒;
- 第 30 秒时,第三链的 TON 到时间 → 触发 TP,
test_3 输出 10 秒;
- 条件一旦断开,三条链全部复位,等待下一次启动。
MainOB
Network 1 — 三路错峰测试时序
目的:在同一个条件下产生三个不同时刻的测试脉冲。
条件 → 动作:
test_1 = TP(IN = Start_Button AND sensor, PT = T#10s).Q:条件一成立马上输出 10 秒;
test_2 = TP(IN = TON(IN = 条件, PT = T#15s).Q, PT = T#10s).Q:先等 15 秒,再输出 10 秒;
test_3 = TP(IN = TON(IN = 条件, PT = T#30s).Q, PT = T#10s).Q:先等 30 秒,再输出 10 秒。
为什么:TON 负责"错峰"(等多久),TP 负责"动作时长"(持续多久)。三条链共用同一个启动条件,结构对称、容易扩展。
注意:TON 要求条件连续保持;条件中途断开,所有链都从头计时。TP 则一旦触发就固定走完脉冲,不受条件影响。
逻辑:
test_1 = TP(IN = Start_Button AND sensor, PT = T#10s).Q
test_2 = TP(IN = TON(IN = Start_Button AND sensor, PT = T#15s).Q, PT = T#10s).Q
test_3 = TP(IN = TON(IN = Start_Button AND sensor, PT = T#30s).Q, PT = T#10s).Q
常见问题
- 只有 test_1 动作:检查启动条件是否在 15/30 秒内断开了;TON 需要持续满足才能走到触发。
- 测试顺序不对:每个 TON 的
PT 决定开始时刻,每个 TP 的 PT 决定动作时长;按需要的时序改这两组时间即可。
- 想加第四路测试:复制一条链,改 TON 的延时和 TP 的时长,接到新的输出。
- 点表里还有
Tag_1(%I0.1):程序没有引用它,可能是调试遗留,不影响测试时序。
变体与扩展
- 顺序互锁:把上一路输出作为下一路链的启动条件,保证严格先后(而不是各自计时)。
- 可配置时序:把 TON/TP 的
PT 换成 HMI 变量,做成可调参数的测试台。
- 减少定时器:如果测试动作能由图序控制,可用一个状态机代替多条并行定时器链。
变量与数据块
系统实例 DB(5 个)
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 | | |
IEC_Timer_0_DB_4 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |