导入到我的 TIA 项目
通过 TiaLink 把本示例的 4 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
按下启动按钮,磨豆机运行 30 秒后自动停止;如果启动按钮在磨豆机停止后仍被按下,蜂鸣器会提示(并把提示保持 5 秒);停止按钮可以抑制蜂鸣提示。
程序把"定时运行"和"结束提示"分开写在两个网络里,是学习 TP 脉冲定时器 + TOF 延时断开 的典型例子。
信号表
| 信号 |
类型 |
含义 |
作用 |
Start button |
I |
启动按钮 |
触发研磨和提示 |
Stop button |
I |
停止/静音按钮 |
置位 Tag_1 抑制蜂鸣 |
Grinder motor |
Q |
磨豆机输出 |
运行 30 秒 |
Buzzer |
Q |
蜂鸣器 |
提示音,保持 5 秒 |
Tag_1 |
M |
静音标志 |
按下停止按钮后为 1 |
IEC_Timer_0_DB |
TP |
研磨定时 30 秒 |
决定磨豆机运行时长 |
IEC_Timer_0_DB_1 |
TOF |
蜂鸣保持 5 秒 |
输入消失后继续响 5 秒 |
工作流程
- 按下
Start button → TP 触发,Grinder motor 运行 30 秒;
- 30 秒脉冲结束,磨豆机自动停止;
- 如果此时
Start button 仍被按下、且磨豆机已停、且 Tag_1=0,TOF 触发 → Buzzer 响;输入消失后还会保持 5 秒;
- 按下
Stop button → Tag_1=1,蜂鸣条件被切断。
MainOB
Network 1 — 研磨 30 秒 + 结束提示
目的:控制磨豆机定时运行,并在停止后给出提示音。
条件 → 动作:按下 Start button → TP 输出 30 秒,驱动 Grinder motor;(Start button AND NOT Grinder motor AND NOT Tag_1) → TOF 输出,驱动 Buzzer。
为什么:TP 适合"按一次、运行固定时长"(不要求按钮保持);TOF 适合"输入消失后再响一会儿"的提示音。两个输出互不影响,分别由自己的定时器驱动。
注意:蜂鸣条件里用了 NOT Grinder motor,所以磨豆机运行期间不会响;要听到提示,需要在磨豆机停止后仍按住启动按钮。如果本意是"研磨结束自动响一声",应把条件改成磨豆机的下降沿(见"变体与扩展")。
逻辑:
Grinder motor = TP(IN = Start button, PT = T#30s).Q
Buzzer = TOF(IN = Start button AND NOT Grinder motor AND NOT Tag_1, PT = T#5s).Q
Network 2 — 停止按钮静音
目的:按下停止按钮后,禁止蜂鸣提示。
条件 → 动作:按下 Stop button → Tag_1=1;松开后 Tag_1 归 0(直接线圈,没有自锁)。
为什么:Tag_1 的常闭触点串在蜂鸣条件里,所以按住停止按钮期间不会响;这里只做静音,不停磨豆机——磨豆机只由 30 秒 TP 控制。
注意:Tag_1 不是自锁,仅在按住 Stop button 时有效。如果希望"按一次永久静音",需要给 Tag_1 加自锁。
逻辑:Tag_1 = Stop button
常见问题
- 磨豆机不转:确认
Start button 有信号;TP 触发后即使松开也会走完 30 秒,但必须先按一下。
- 蜂鸣器不响:需要"磨豆机已停 + 启动按钮仍按住 + 未按停止"三个条件;正常操作中很少同时满足,这是原程序的写法特点。
- 想改时长:研磨时长改 TP 的
PT(T#30s),提示保持时间改 TOF 的 PT(T#5s)。
变体与扩展
- 研磨结束自动响一声:用
Grinder motor 的下降沿(NBox/F_TRIG)触发一个 2 秒 TP 驱动 Buzzer,不再要求按住启动按钮。
- 静音自锁:把
Tag_1 改成 Tag_1 = Stop button OR Tag_1,再增加一个复位按钮。
- 设定时间可调:把 TP 的
PT 换成变量(如 GrindTime),从 HMI 或参数设置里修改。
变量与数据块
系统实例 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 | | |