导入到我的 TIA 项目
通过 TiaLink 把本示例的 9 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按下启动按钮,三段输送机按 10 秒、15 秒、25 秒错峰启动,运行一段时间后在第 40 秒自动停止。
程序用自锁 + 一个自动停止脉冲 + 三组定时器链实现一条会自己停下来的输送线,是"顺序启动 + 自动收尾"的典型结构。
信号表
| 信号 |
类型 |
含义 |
作用 |
Start_PB |
I |
启动按钮 |
启动整条线 |
Stop |
I |
停止按钮(常闭) |
随时停止 |
Tag_1 |
M |
运行标志 |
自锁;三组定时器的总使能 |
Tag_2 |
M |
自动停止脉冲 |
40 秒后复位 Tag_1 |
M1 / M2 / M3 |
Q |
三段输送机 |
分别延时启动 |
IEC_Timer_0_DB |
TP |
M1 运行 10 秒 |
第 0 秒启动 |
IEC_Timer_0_DB_2 / _1 |
TON / TP |
M2 延时 15 秒、运行 20 秒 |
第 15 秒启动 |
IEC_Timer_0_DB_5 / _3 |
TON / TP |
M3 延时 25 秒、运行 15 秒 |
第 25 秒启动 |
IEC_Timer_0_DB_6 / _4 |
TON / TP |
40 秒后产生 1 秒停止脉冲 |
自动收尾 |
工作流程
- 按
Start_PB → Tag_1 自锁,三组定时器同时开始计时;
- 第 0 秒:
M1 启动,运行 10 秒;
- 第 15 秒:
M2 启动,运行 20 秒(到第 35 秒);
- 第 25 秒:
M3 启动,运行 15 秒(到第 40 秒,与 M2 有 10 秒重叠);
- 第 40 秒:TON 到时间 → 1 秒 TP →
Tag_2=1 复位 Tag_1,全部停止。
MainOB
Network 1 — 启动自锁与自动停止
目的:启动整条线,并允许手动停止或自动停止。
条件 → 动作:Start_PB 置位 Tag_1 并自锁;Stop 常闭或 Tag_2 脉冲都会复位 Tag_1。
为什么:Tag_1 是总使能;Stop 是人工停止,Tag_2 是程序运行完的自动停止——两个停止条件并联(都通过常闭触点串联)让流程既能手动停也能自动停。
逻辑:Tag_1 = (Start_PB OR Tag_1) AND NOT Stop AND NOT Tag_2
Network 2 — 三段错峰与收尾
目的:控制三段输送机的启动时刻、运行时长,并在最后自动停止。
条件 → 动作:
M1 = TP(IN = Tag_1, PT = 10s).Q:立即启动 10 秒;
M2 = TP(IN = TON(IN = Tag_1, PT = 15s).Q, PT = 20s).Q:15 秒后启动 20 秒;
M3 = TP(IN = TON(IN = Tag_1, PT = 25s).Q, PT = 15s).Q:25 秒后启动 15 秒;
Tag_2 = TP(IN = TON(IN = Tag_1, PT = 40s).Q, PT = 1s).Q:40 秒后产生 1 秒停止脉冲。
为什么:每条输送机都是"TON 定时 → TP 定长",时间轴彼此独立,因此可以重叠运行。收尾用 40 秒的 TON 加 1 秒 TP,让 Tag_1 复位得干净利落。
注意:Tag_2 只需要 1 秒就足以复位自锁;如果 Start_PB 一直被按住,复位后又会马上启动。点表里还有一个未使用的 Tag_3,与本逻辑无关。
逻辑(节选):
M2 = TP(IN = TON(IN = Tag_1, PT = T#15s).Q, PT = T#20s).Q
Tag_2 = TP(IN = TON(IN = Tag_1, PT = T#40s).Q, PT = T#1s).Q
常见问题
- 某段输送机不启动:检查它的 TON 延时是否小于总运行时间;延时超过 40 秒就永远等不到。
- 停不下来:检查
Stop 常闭触点是否被断开,以及 Tag_2 的 1 秒脉冲是否正常。
- 想改运行时间:总时长由 40 秒的 TON 决定,各段启动时刻由各自的 TON 决定,运行时长由各自的 TP 决定。
变体与扩展
- 逆序停止:把三段的停止时间也做成独立延时,形成"先启后停"的顺序。
- 加联锁:后段输送机启动前,确认前段已经运行(串入前段的常开触点)。
- 按物料检测启停:把定时启动换成传感器触发,做到"有料才转"。
变量与数据块
系统实例 DB(7 个)
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 | | |
IEC_Timer_0_DB_5 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |
IEC_Timer_0_DB_6 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |