导入到我的 TIA 项目
通过 TiaLink 把本示例的 4 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按一次启动按钮,泵先抽水 20 秒,然后排水阀打开 10 秒;停止按钮随时可以中止。
程序由两个网络组成:Network 1 记住"已经启动"(起保停自锁),Network 2 用两个脉冲定时器把"抽水 → 排水"串成顺序动作。这是"自锁 + 脉冲定时器做顺序"的最小完整例子。
信号表
| 信号 |
类型 |
含义 |
作用 |
PB_start |
I |
启动按钮 |
按一下启动流程 |
PB_stop |
I |
停止按钮(常闭) |
任何时候中止 |
Tag_1 |
M |
运行标志 |
Network 1 自锁;Network 2 的总使能 |
Tag_2 |
M(Time) |
抽水计时值 |
TP1 的 ET 输出(已抽水时间),地址 %MD0 |
Tag_3 |
M(Time) |
排水计时值 |
TP2 的 ET 输出(已排水时间),地址 %MD4 |
Pump |
Q |
抽水泵 |
抽水 20 秒 |
Drain valve |
Q |
排水阀 |
排水 10 秒 |
IEC_Timer_0_DB |
TP |
脉冲定时器 20 秒 |
抽水时长 |
IEC_Timer_0_DB_1 |
TP |
脉冲定时器 10 秒 |
排水时长 |
工作流程
- 按
PB_start → Tag_1 置位并自锁;
Tag_1=1 触发 20 秒脉冲定时器 → Pump 抽水 20 秒,已计时值写入 Tag_2;
- 20 秒脉冲结束,
Pump 停;Pump 的常闭触点接通,触发 10 秒定时器 → Drain valve 排水 10 秒,已计时值写入 Tag_3;
- 排水结束,流程完成;按
PB_stop 可在任意时刻清零 Tag_1,两个输出立即断开。
MainOB
Network 1 — 起动、自锁与停止优先
目的:记住"已经启动"这个状态,并保证停止随时生效。
条件 → 动作:按下 PB_start,Tag_1 置位;松开后,Tag_1 自己的常开触点与 PB_start 并联把回路保持住,所以 Tag_1 一直是 1,直到 PB_stop 动作。
为什么:这就是典型的"起保停"自锁。PB_stop 用常闭触点串在回路里:按下它(或按钮接线断开)回路立即断开,属于停止优先、失效安全的接法。
注意:Tag_1 是内部标志,不直接驱动输出;真正的输出在 Network 2,由它当"总开关"。
逻辑:Tag_1 = (PB_start OR Tag_1) AND NOT PB_stop
Network 2 — 抽水 20 秒,再排水 10 秒
目的:在 Tag_1 有效期间完成抽水和排水的定时输出。
条件 → 动作:
Pump = TP(20s, IN = Tag_1).Q AND NOT PB_stop:Tag_1 变 1 后泵立即启动,TP 输出保持 20 秒,所以泵抽水 20 秒后自动停;
Drain valve = TP(10s, IN = Tag_1 AND NOT Pump).Q AND NOT PB_stop:泵停后 Pump 的常闭触点接通,触发第二个 TP,排水阀打开 10 秒后自动关。
为什么:TP 是"脉冲定时器"——触发一次后输出固定保持 PT 那么久,不需要条件一直为 1(这一点和 TON 不同)。这里用 Pump 的常闭触点把"抽水结束"变成"排水开始"的触发条件,形成顺序链。两个定时器的 ET 分别写到 Tag_2/Tag_3,方便监控或做进度显示。
注意:TP 触发后,即使输入一直保持为 1 也不会重新开始;必须等脉冲结束、输入变 0 再变 1。所以流程跑完一轮后要重新按 PB_start(先停止再启动)才会再来一轮。
逻辑:
Pump = IEC_Timer_0_DB.Q(IN = Tag_1, PT = T#20s) AND NOT PB_stop
Drain valve = IEC_Timer_0_DB_1.Q(IN = Tag_1 AND NOT Pump, PT = T#10s) AND NOT PB_stop
常见问题
- 按了启动泵不动:先确认
PB_stop 的常闭触点是否处于接通状态(按钮按下或接线断开都会断开回路)。
- 一轮结束后不自动重复:TP 需要新的触发沿;要循环请参考下面的扩展。
- 想改时间:直接改两个 TP 的
PT,注意博途时间格式是 T#20s / T#10s。
变体与扩展
- 循环抽排:在排水结束时自动把
Tag_1 复位再置位一次(例如用排水 TP 输出 Q 的下降沿触发),就能持续循环。
- 进度显示:把
Tag_2/Tag_3 接到 HMI 上即可显示已抽水/已排水时间。
- 多段顺序:按照同样的思路继续串联 TP,就能做"抽水 → 静置 → 排水 → …"的多步流程。
变量与数据块
系统实例 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 | | |