导入到我的 TIA 项目
通过 TiaLink 把本示例的 10 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按一下启动按钮,咖啡机按固定时序完成一个制作循环:先出咖啡 5 秒,再抽水 10 秒、加奶 8 秒、搅拌 5 秒;所有动作结束后自动复位,等待下一次启动。
Network 1 是启动自锁,Network 2 用四组并行定时器链排出一条出料时序,并用一个"全部完成"的探测把流程收尾。它是"顺序控制 + 并行时间轴"的典型写法。
信号表
| 信号 |
类型 |
含义 |
作用 |
Start button |
I |
启动按钮 |
启动一个制作循环 |
Tag_1 |
M |
运行标志 |
自锁;所有动作的总使能 |
Tag_2 |
M |
结束标志 |
3 秒脉冲,复位 Tag_1 |
Coffee dispenser |
Q |
咖啡出口 |
5 秒 |
Water valve/pump |
Q |
水阀/水泵 |
第 5 秒起 10 秒 |
Milk dispenser |
Q |
奶出口 |
第 15 秒起 8 秒 |
Stirrer motor |
Q |
搅拌电机 |
第 21 秒起 5 秒 |
| 定时器 |
TON/TP |
8 个 |
负责各步延时与动作时长 |
工作流程
- 按
Start button → Tag_1 置位并自锁;
- 第 0~5 秒:
Coffee dispenser 出咖啡;
- 第 5~15 秒:
Water valve/pump 抽水;
- 第 15
23 秒:Milk dispenser 加奶;第 2126 秒 Stirrer motor 搅拌(与加奶部分重叠);
- 所有输出都停止后,
Tag_2 输出 3 秒脉冲 → 复位 Tag_1;若启动按钮仍按住则开始下一轮。
MainOB
Network 1 — 启动自锁与结束复位
目的:记住"正在制作",并在流程结束后自动解锁。
条件 → 动作:按下 Start button → Tag_1 置位;Tag_1 自己的触点与按钮并联保持。只要 Tag_2=1(结束脉冲),Tag_1 立即复位。
为什么:这是标准的起保停自锁,Tag_2 的常闭触点串在回路里充当"自动停止"条件——流程完成后不需要人工按停止。
注意:Tag_2 是脉冲(保持 3 秒后自动消失),所以复位后如果启动按钮还按着,Tag_1 会再次置位、循环重新开始。
逻辑:Tag_1 = (Start button OR Tag_1) AND NOT Tag_2
Network 2 — 出料时序与收尾
目的:在 Tag_1 有效期间按时序驱动四个执行机构,并在全部完成后产生结束脉冲。
条件 → 动作:四条链以 Tag_1 为共同条件,分别用 TON 延时后触发 TP:
Coffee dispenser:立即输出 5 秒;
Water valve/pump:5 秒后输出 10 秒;
Milk dispenser:15 秒后输出 8 秒;
Stirrer motor:21 秒后输出 5 秒。
当 Tag_1=1 且四个输出全部为 0 时,最后一个 TP 延时 3 秒 → Tag_2 脉冲,触发 Network 1 复位。
为什么:每条链都是"TON 定时 → TP 定长",参数一目了然;收尾用"所有输出都停止"作为完成条件,而不是死等一个总时长,这样即使个别动作时间调整,结束判断依然正确。
注意:TP 的脉冲时长固定,条件中途断开不会缩短它;要立即中断整个流程,需要复位 Tag_1(当前程序没有急停/取消输入)。
逻辑(节选):
Coffee dispenser = TP(IN = Tag_1, PT = T#5s).Q
Water valve/pump = TP(IN = TON(IN = Tag_1, PT = T#5s).Q, PT = T#10s).Q
Tag_2 = TP(IN = Tag_1 AND NOT Coffee dispenser AND NOT Water valve/pump AND NOT Milk dispenser AND NOT Stirrer motor, PT = T#3s).Q
常见问题
- 某一台设备不动:对照它的 TON 延时检查时间轴;每个动作都由"延时 + 脉冲"两段组成。
- 流程结束后自动重复:
Tag_2 复位 Tag_1 后,如果启动按钮仍被按住就会重新启动;松开按钮即可单次运行。
- 想取消制作:当前没有取消输入;可以加一个停止按钮,把它的常闭触点串进 Network 1。
变体与扩展
- 加急停/取消:在 Network 1 的自锁回路上串一个停止按钮。
- 配方化:把各个 TON/TP 的
PT 换成配方变量,做不同饮品。
- 加液位/温度联锁:把传感器条件串进对应输出,实现缺料保护。
变量与数据块
系统实例 DB(8 个)
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 | | |
IEC_Timer_0_DB_7 实例 DB(IEC_TIMER)
| 名称 | 数据类型 | 起始值 | 注释 |
| Static |
| PT | Time | | |
| ET | Time | | |
| IN | Bool | | |
| Q | Bool | | |