跳到正文
Learn-LAD
示例库/液位泵启停控制

液位泵启停控制

低液位触发 20 秒后置位水泵,高液位触发 30 秒后复位;演示 S/R 与液位联锁。

进阶 S7-1200 液位 泵 置位复位 定时器

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按一下启动按钮后,液位控制生效:低液位持续 20 秒 → 置位水泵;高液位持续 30 秒 → 复位水泵。

程序用自锁 + 两个 TP + 置位/复位线圈实现带延时确认的液位控制,避免液面波动导致水泵频繁启停。

信号表

信号 类型 含义 作用
PB I 启动按钮 启动液位控制(自锁)
Tag_1 M 控制使能 自锁,总开关
Low level sensor I 低液位传感器 低液位时动作
High level sensor I 高液位传感器 高液位时动作
Pump motor Q 水泵 置位启动 / 复位停止
IEC_Timer_0_DB TP 低液位确认 20 秒 启动延时
IEC_Timer_0_DB_1 TP 高液位确认 30 秒 停止延时

工作流程

  1. 按下 PB → Tag_1 置位并自锁,液位控制生效;
  2. 低液位持续 20 秒且高液位为 0 → 置位 Pump motor,水泵启动;
  3. 高液位持续 30 秒且低液位为 0 → 复位 Pump motor,水泵停止;
  4. 两个条件都通过 Tag_1 使能,按下停止/复位(当前程序没有)才能整体停用。

MainOB

Network 1 — 控制使能

Network 1:PB、Tag_1、Tag_1

目的:用一个按钮启用液位控制。

条件 → 动作:按下 PB → Tag_1 置位并自锁。

为什么:标准自锁。它保证只有"同意自动控制"时才响应液位。

注意:Tag_1 没有复位条件,启用后一直有效;实际项目应加停止按钮。

逻辑:Tag_1 = (PB OR Tag_1)

Network 2 — 低液位启泵 / 高液位停泵

Network 2:Tag_1、Low level sensor、High level sensor、Pump motor、High level sensor、Low level sensor、Pump motor

目的:用带延时的置位/复位控制水泵。

条件 → 动作:

  • 置位:Tag_1=1 且低液位=1,持续 20 秒(TP),且高液位=0 → Pump motor 置位(S);
  • 复位:Tag_1=1 且高液位=1,持续 30 秒(TP),且低液位=0 → Pump motor 复位(R)。

为什么:用 S/R 线圈代替普通线圈,可以让"启泵"和"停泵"分别由不同条件控制;两个 TP 做延时确认,滤掉液面抖动。

注意:两个 TP 的输出在同一个扫描周期里先执行置位、再执行复位;如果两个条件同时成立(液位传感器故障),复位优先,水泵会停。

逻辑: 置位:Pump motor = TP(IN = Tag_1 AND Low level sensor, PT = T#20s).Q AND NOT High level sensor

复位:Pump motor = TP(IN = Tag_1 AND High level sensor AND NOT Low level sensor, PT = T#30s).Q

常见问题

  • 水泵不启动:检查 Tag_1 是否已自锁、低液位是否持续 20 秒、高液位是否为 0。
  • 水泵不停止:高液位需要持续 30 秒,并且低液位必须为 0;检查传感器状态。
  • 频繁启停:说明延时确认时间太短,适当加长两个 TP 的 PT。

变体与扩展

  • 加停止按钮:在 Network 1 的自锁回路上串常闭停止触点。
  • 改自动/手动:加一个手自动切换位,手动时直接按钮控制泵。
  • 加故障保护:如果高低液位同时为 1,输出报警并停泵。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
PBBool%I0.0
Low level sensorBool%I0.1
High level sensorBool%I0.2
Pump motorBool%Q0.0
Tag_1Bool%M0.0
系统实例 DB(2 个)

TIA 自动生成的定时器/计数器实例 DB,导入示例时会一并导入。

IEC_Timer_0_DB 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_1 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步