跳到正文
Learn-LAD
示例库/泵送与搅拌流程

泵送与搅拌流程

按住启动:泵1 运行 30 秒 → 阀1/阀2 各 2 秒 → 搅拌 30 秒 → 泵2 30 秒。

进阶 S7-1200 泵 搅拌 顺序控制

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按住启动按钮,流程按顺序执行:泵 1 运行 30 秒 → 阀 1 开 2 秒 → 阀 2 开 2 秒 → 搅拌 30 秒 → 泵 2 运行 30 秒。

程序用 一串 TON + TP 把五个动作排成严格顺序,是"多步工艺流程"的经典写法。

信号表

信号 类型 含义 作用
start_b I 启动按钮 按住时流程有效
Tag_1 M 流程使能 直接反映启动按钮
pump 1 Q 进料泵 0~30 秒
valve 1 Q 阀 1 30~32 秒
valve 2 Q 阀 2 32~34 秒
mixer Q 搅拌器 34~64 秒
pump 2 Q 出料泵 64~94 秒

工作流程

  1. 按住 start_b → Tag_1=1;
  2. 第 0~30 秒:pump 1 运行;
  3. 第 30~32 秒:valve 1 打开;
  4. 第 32~34 秒:valve 2 打开;
  5. 第 34~64 秒:mixer 搅拌;
  6. 第 64~94 秒:pump 2 运行;
  7. 松开按钮,流程立即中断。

MainOB

Network 1 — 流程使能

Network 1:start_b、Tag_1

条件 → 动作:按住 start_b → Tag_1=1。

为什么:所有步骤都以 Tag_1 为条件;这是简化写法,实际设备通常用自锁或启停按钮。

注意:没有自锁,必须按住按钮才能走完 94 秒流程。

逻辑:Tag_1 = start_b

Network 2 — 五步顺序流程

Network 2:Tag_1、pump 1、valve 1、valve 2、mixer、pump 2

目的:用"前一步结束 → 下一步开始"的方式串联五个动作。

条件 → 动作:

  • pump 1 = TP(IN = Tag_1, 30s).Q:立即运行 30 秒;
  • valve 1 = TP(IN = TON(IN = Tag_1, 30s).Q, 2s).Q:30 秒后开 2 秒;
  • valve 2 = TP(IN = TON(IN = Tag_1, 32s).Q, 2s).Q:32 秒后开 2 秒;
  • mixer = TP(IN = TON(IN = Tag_1, 34s).Q, 30s).Q:34 秒后搅拌 30 秒;
  • pump 2 = TP(IN = TON(IN = Tag_1, 64s).Q, 30s).Q:64 秒后出料 30 秒。

为什么:每个动作由一个 TON 决定"何时开始"、一个 TP 决定"持续多久";时间点首尾相接,流程自动推进。

注意:所有 TON 都要求 Tag_1 持续为 1;中途松开按钮,当前 TP 会走完,但后续步骤不会开始。

逻辑(节选): valve 1 = TP(IN = TON(IN = Tag_1, PT = T#30s).Q, PT = T#2s).Q

mixer = TP(IN = TON(IN = Tag_1, PT = T#34s).Q, PT = T#30s).Q

常见问题

  • 流程走不完:确认按钮是否一直按住;松开后后续步骤不会启动。
  • 某一步不动作:检查它的 TON 时间点是否被前一步覆盖,以及 TP 是否已经触发过(需要新的上升沿)。
  • 想改某段时长:改对应 TP 的 PT;改开始时刻则改它前面的 TON。

变体与扩展

  • 加自锁:按一次走完全程,按停止按钮中断。
  • 加液位/温度联锁:在对应步骤中串入传感器条件。
  • 配方化:把每个 TON/TP 的 PT 做成参数,适配不同批次。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
start_bBool%I0.0
pump 1Bool%Q0.0
pump 2Bool%Q0.1
valve 1Bool%Q0.2
valve 2Bool%Q0.3
Tag_1Bool%M0.0
mixerBool%Q0.4
系统实例 DB(9 个)

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
IEC_Timer_0_DB_2 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_3 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_4 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_5 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_6 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_7 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_8 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步