跳到正文
Learn-LAD
示例库/开关逻辑

开关逻辑

单按钮翻转灯:按一下开、松开后再按一下关。

入门 S7-1200 翻转 自锁 单按钮

导入到我的 TIA 项目

通过 TiaLink 把本示例的 2 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。

TiaLink 设置

默认 http://localhost:8080。也可以在本页地址后加 ?tialink= 临时指定。

TiaLink 启动时若设置了 --api-token,这里要填相同的值;只保存在本机浏览器 localStorage,不会上传。

概述

一个按钮控制一盏灯:按一下灯亮,松开后再按一下灯灭。这是单按钮翻转(Toggle)的又一种实现。

程序用三个网络:灯的启动自锁、松开检测、关闭标志。点表里还有未使用的 Tag_3/Tag_4,与本逻辑无关。

信号表

信号 类型 含义 作用
Switch PB I 单按钮 每次按下翻转灯状态
Light Q 灯输出 翻转目标
Tag_1 M 关闭标志 复位灯的自锁
Tag_2 M 已松开标志 等待下一次按下

工作流程

  1. 灯灭时按下 Switch PB → Light 置位并自锁,灯亮;
  2. 松开按钮 → Tag_2 置位;
  3. 再次按下 → Tag_1 置位;
  4. Tag_1 的常闭触点断开灯的自锁,Light=0;
  5. 之后 Tag_1 保持,灯保持熄灭。

MainOB

Network 1 — 灯的自锁

Network 1:Switch PB、Light、Tag_1、Light

条件 → 动作:按下 Switch PB → Light 置位并自锁;Tag_1=1 时复位。

逻辑:Light = (Switch PB OR Light) AND NOT Tag_1

Network 2 — 检测松开

Network 2:Light、Switch PB、Tag_2、Tag_2

条件 → 动作:Light=1 且按钮松开 → Tag_2 置位并保持。

为什么:确认"手已经离开按钮",下一次按下才被当作关闭动作。

逻辑:Tag_2 = (Light AND NOT Switch PB OR Tag_2)

Network 3 — 关闭标志

Network 3:Tag_2、Switch PB、Tag_1、Tag_1

条件 → 动作:Tag_2=1 且再次按下 → Tag_1 置位并保持。

为什么:Tag_1 复位灯的自锁,同时保持"已关闭"状态。

逻辑:Tag_1 = (Tag_2 AND Switch PB OR Tag_1)

常见问题

  • 按第二次没反应:需要先松开按钮,让 Tag_2 置位。
  • 灯关不掉:检查 Tag_1 是否置位、Tag_2 是否建立。
  • 想循环翻转:当前 Tag_1 没有复位;需要加复位或在关闭后自动清零 Tag_1/Tag_2。

变体与扩展

  • 加复位:用复位按钮清零 Tag_1/Tag_2,恢复可再次翻转。
  • 边沿触发:用 PBox/R_TRIG 检测按下沿,配合状态位翻转,减少对按住时长的依赖。
  • 双按钮:开/关各一个按钮,逻辑会更直观(参考起保停)。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Switch PBBool%I0.0
LightBool%Q0.0
Tag_1Bool%M0.0
Tag_2Bool%M0.1
Tag_3Bool%M0.2
Tag_4Bool%M0.3

下一步