跳到正文
Learn-LAD
示例库/按钮控制多台设备启停

按钮控制多台设备启停

同一个按钮分步启动三台设备:每按一次启动下一台并停上一台;第三台启动后保持。

进阶 S7-1200 单按钮 顺序 多设备

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

同一个按钮,每按一次就切换一台设备:第一次启动 Machine 1,第二次停 1 号、启 2 号,第三次停 2 号、启 3 号。

程序用一串自锁标志记住"按钮按到第几步",再用这些标志控制三台设备。它是单按钮顺序控制的典型写法,也暴露了"没有复位"时最后一步会卡住的问题。

信号表

信号 类型 含义 作用
Pushbutton I 单按钮 每按一次推进一步
Machine 1/2/3 Q 三台设备 同一时刻只运行一台
Tag_1 M 已松开标志(第 1 步后) 等待第二次按下
Tag_2 M 第 2 步标志 停 1 号、启 2 号
Tag_3 M 已松开标志(第 2 步后) 等待第三次按下
Tag_4 M 第 3 步标志 停 2 号、启 3 号

工作流程

  1. 第 1 次按下 Pushbutton → Machine 1 启动并自锁;
  2. 松开 → Tag_1 置位;
  3. 第 2 次按下 → Tag_2 置位 → Machine 1 停止、Machine 2 启动;
  4. 松开 → Tag_3 置位;
  5. 第 3 次按下 → Tag_4 置位 → Machine 2 停止、Machine 3 启动;
  6. 之后 Tag_4 保持,继续按按钮不会再有变化。

MainOB

Network 1 — 启动 1 号设备

Network 1:Pushbutton、Machine 1、Tag_2、Machine 1

条件 → 动作:按下 Pushbutton → Machine 1 置位并自锁;Tag_2=1 时复位。

逻辑:Machine 1 = (Pushbutton OR Machine 1) AND NOT Tag_2

Network 2 — 记录第 1 次松开

Network 2:Pushbutton、Machine 1、Tag_1、Tag_1

目的:区分"刚启动 1 号"和"已经松开、准备第二次按下"。

条件 → 动作:Pushbutton=0 且 Machine 1=1 → Tag_1 置位并保持。

逻辑:Tag_1 = (NOT Pushbutton AND Machine 1 OR Tag_1)

Network 3 — 推进到第 2 步

Network 3:Tag_1、Pushbutton、Tag_2、Tag_2

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

为什么:Tag_2 同时承担"停 1 号"和"启 2 号"的开关。

逻辑:Tag_2 = (Tag_1 AND Pushbutton OR Tag_2)

Network 4 — 启动 2 号设备

Network 4:Tag_2、Tag_4、Machine 2

条件 → 动作:Tag_2=1 且 Tag_4=0 → Machine 2=1。

逻辑:Machine 2 = Tag_2 AND NOT Tag_4

Network 5 — 记录第 2 次松开

Network 5:Tag_2、Pushbutton、Tag_3、Tag_3

条件 → 动作:Tag_2=1 且 Pushbutton=0 → Tag_3 置位并保持。

逻辑:Tag_3 = (Tag_2 AND NOT Pushbutton OR Tag_3)

Network 6 — 推进到第 3 步

Network 6:Pushbutton、Tag_3、Tag_4、Tag_4

条件 → 动作:Tag_3=1 且按下 Pushbutton → Tag_4 置位并保持。

逻辑:Tag_4 = (Pushbutton AND Tag_3 OR Tag_4)

Network 7 — 启动 3 号设备

Network 7:Tag_4、Machine 3

条件 → 动作:Tag_4=1 → Machine 3=1。

逻辑:Machine 3 = Tag_4

常见问题

  • 按第 4 次没反应:Tag_4 已自锁,程序没有复位网络;需要加复位按钮或让流程循环。
  • 三台设备同时运行:检查 Tag_2/Tag_4 的互锁;正常情况下 Machine 2 = Tag_2 AND NOT Tag_4 会保证只运行一台。
  • 按钮按住不放会怎样:Tag_1/Tag_3 需要松开才置位,按住不会连续推进。

变体与扩展

  • 加复位:增加一个复位按钮,同时清零 Tag_1…Tag_4,流程即可从头再来。
  • 循环切换:第 3 台启动后自动复位所有标志,回到 1 号。
  • 改用计数器:用 CTU 记录按钮次数,按次数映射设备,扩展更多台设备更清晰。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
PushbuttonBool%I0.0
Machine 1Bool%Q0.0
Machine 2Bool%Q0.1
Machine 3Bool%Q0.2
Tag_1Bool%M0.0
Tag_2Bool%M0.1
Tag_3Bool%M0.2
Tag_4Bool%M0.3

下一步