导入到我的 TIA 项目
通过 TiaLink 把本示例的 2 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。
概述
同一个按钮,按一下电机启动,再按一下停止——这就是"单按钮翻转(Toggle)"。
程序用两个中间标志 Tag_1/Tag_2 区分"当前是按下来启动"还是"按下来停止",再用自锁保持电机状态。它是按钮复用和状态判断的经典练习。
信号表
| 信号 |
类型 |
含义 |
作用 |
PB |
I |
单按钮 |
按一下翻转一次 |
Motor |
Q |
电机输出 |
翻转的目标状态 |
Tag_1 |
M |
启动脉冲 |
电机停止时按下按钮产生 |
Tag_2 |
M |
停止脉冲 |
电机运行时按下按钮产生 |
工作流程
- 电机停止(
Motor=0)时按下 PB → Tag_1=1(Tag_2=0);
- Network 2 中
Tag_1 置位 Motor,松开按钮后由 Motor 自锁;
- 电机运行(
Motor=1)时再按 PB → Tag_2=1(Tag_1=0);
Tag_2 的常闭触点断开自锁回路,Motor 复位;松开按钮,等待下一次。
MainOB
Network 1 — 按状态分流
目的:根据电机当前状态,决定这次按钮是"启动"还是"停止"。
条件 → 动作:
PB=1 且 Motor=0 → Tag_1=1(启动脉冲);
PB=1 且 Motor=1 → Tag_2=1(停止脉冲)。
为什么:用 Motor 的常开/常闭触点把同一个按钮分成两路,互不干扰。Tag_1/Tag_2 只在按住按钮期间为 1,不需要自锁。
注意:Motor 既是输出线圈,又作为条件触点使用——这是允许的,读图时注意它在不同网络里的角色。
逻辑:
Tag_1 = PB AND NOT Motor
Tag_2 = PB AND Motor
Network 2 — 翻转保持
目的:用启动/停止脉冲控制电机的自锁与复位。
条件 → 动作:Tag_1=1 置位 Motor;Motor 自身触点保持;Tag_2=1 时常闭触点断开,Motor 复位。
为什么:(Tag_1 OR Motor) AND NOT Tag_2 是"启动优先、停止覆盖"的翻转结构;两个脉冲不会同时为 1(由 Network 1 的状态判断保证)。
注意:按住按钮不放时,Tag_2 会一直为 1,电机保持停止;要再次启动,必须先松开按钮。
逻辑:Motor = (Tag_1 OR Motor) AND NOT Tag_2
常见问题
- 按了没反应:确认按钮是否真的产生了 0→1 的变化,以及
Motor 的当前状态是否与预期一致。
- 一直无法启动:可能上次停止后按钮没松开,
Tag_2 仍为 1;松开再按。
- 想要"按一下就翻转"更稳的写法:用上升沿指令(
PBox/R_TRIG)产生单次脉冲,再配合一个状态位取反。
变体与扩展
- 边沿触发版:
PBox 检测按钮上升沿,用一个 Tag 位做 XOR 翻转,减少对按钮按住时长的依赖。
- 多档控制:用计数器记录按钮次数,实现"按一下开、两下关、三下自动"等多档逻辑。
- 加停止/急停:在 Network 2 的自锁回路上串常闭停止触点,保证安全优先。