跳到正文
Learn-LAD
示例库/园艺喷淋控制

园艺喷淋控制

启动后四个喷淋区按 15 秒间隔依次喷淋;雨天跳过,检测到人时对应区暂停,60 秒后结束。

进阶 S7-1200 喷淋 定时器 分区 互锁

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

打开喷淋开关后,四个喷淋区按 15 秒间隔依次喷淋;下雨天自动跳过,检测到人时对应区暂停;一个完整循环约 60 秒。

程序用 SR 启停 + 四组延时/脉冲 + 雨感和人体感应互锁,是"分区顺序 + 安全条件"的典型结构。

信号表

信号 类型 含义 作用
Switch_ON / Switch_OFF I 喷淋开/关 启动/停止系统
Rain_Detection_Sensor I 雨感(常闭) 下雨时禁止喷淋
Human_sensor_Zone_1~4 I 各区人体感应(常闭) 有人时该区暂停
Tag_1 M 系统运行标志 SR 保持
Tag_2~5 M 四个区的喷淋窗口 各 15 秒
Tag_6 M 循环结束脉冲 60 秒后持续 1 秒
Sprinkler_Zone_1~4 Q 四个喷淋阀 分区输出

工作流程

  1. Switch_ON → Tag_1 置位并保持(Switch_OFF 复位);
  2. 第 0 秒:1 区喷 15 秒;第 15 秒:2 区;第 30 秒:3 区;第 45 秒:4 区;
  3. 每个区都串入本区的人体感应常闭触点,有人时该区不喷;
  4. 第 60 秒:Tag_6 产生 1 秒脉冲,作为循环结束条件;之后重新开始下一轮。

MainOB

Network 1 — 系统启停(SR)

Network 1:Switch_ON、Rain_Detection_Sensor、Tag_1、Switch_OFF、Tag_1

目的:用开关启停整个喷淋系统。

条件 → 动作:Switch_ON=1 且无雨 → 置位 Tag_1;Switch_OFF=1 → 复位 Tag_1。

为什么:SR 保持让系统在开关松开后继续运行;雨感常闭串在置位条件里,下雨时无法启动。

注意:雨感只在启动时判断;系统运行中下雨,Tag_1 不会自动复位(Network 2 里另有雨感常闭条件)。

逻辑: 置位:Tag_1 = Switch_ON AND NOT Rain_Detection_Sensor

复位:Tag_1 = Switch_OFF

Network 2 — 四区顺序与结束

Network 2:Tag_1、Rain_Detection_Sensor、Tag_6、Human_sensor_Zone_1、Tag_2、Human_sensor_Zone_2、Tag_3、Human_sensor_Zone_3

目的:按 15 秒间隔依次打开四个喷淋区,并在一轮结束后重置。

条件 → 动作:

  • 1 区:Tag_2 = TP(IN = Tag_1 AND NOT Rain AND NOT Tag_6, 15s).Q AND NOT Human_1;
  • 2 区:Tag_3 = TP(IN = TON(IN = 条件, 15s).Q, 15s).Q AND NOT Human_2;
  • 3 区:Tag_4 = TP(IN = TON(IN = 条件, 30s).Q, 15s).Q AND NOT Human_3;
  • 4 区:Tag_5 = TP(IN = TON(IN = 条件, 45s).Q, 15s).Q AND NOT Human_4;
  • 结束:Tag_6 = TP(IN = TON(IN = 条件, 60s).Q, 1s).Q。

为什么:四个区用同一组 TON 做错峰,每个 TP 固定喷 15 秒;Tag_6 在 60 秒时短暂置位,把 Tag_2~5 的条件打断,下一轮重新开始。

注意:人体感应是"该区暂停"而不是"整个系统停止";雨感常闭串在所有区条件里,运行中下雨也会立即停喷。

逻辑(1 区示例): Tag_2 = TP(IN = Tag_1 AND NOT Rain_Detection_Sensor AND NOT Tag_6, PT = T#15s).Q AND NOT Human_sensor_Zone_1

Network 3 — 分区输出

Network 3:Tag_2、Sprinkler_Zone_1、Tag_3、Sprinkler_Zone_2、Tag_4、Sprinkler_Zone_3、Tag_5、Sprinkler_Zone_4

目的:把四个区的窗口映射到喷淋阀。

条件 → 动作:Sprinkler_Zone_N = Tag_{N+1}。

逻辑:Sprinkler_Zone_1 = Tag_2(其余同理)

常见问题

  • 下雨还在喷:检查雨感常闭触点是否正常;运行中下雨应通过常闭条件立即停喷。
  • 某个区不喷:先看该区人体感应是否误动作,再看对应的 TON/TP 延时。
  • 循环不重启:检查 60 秒的 TON 和 1 秒的 Tag_6 脉冲是否正常。

变体与扩展

  • 按湿度喷淋:用土壤湿度传感器替代固定时间,干透才喷。
  • 分区时长可调:把每个 TP 的 PT 改成参数,适配不同植物。
  • 加手动模式:增加手动按钮,直接打开某个区,便于维护。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Human_sensor_Zone_1Bool%I0.0
Human_sensor_Zone_2Bool%I0.1
Human_sensor_Zone_3Bool%I0.2
Human_sensor_Zone_4Bool%I0.3
Rain_Detection_SensorBool%I0.4
Switch_ONBool%I0.5
Switch_OFFBool%I0.6
Sprinkler_Zone_1Bool%Q0.0
Sprinkler_Zone_2Bool%Q0.1
Sprinkler_Zone_3Bool%Q0.2
Sprinkler_Zone_4Bool%Q0.3
Tag_1Bool%M0.0
Tag_2Bool%M0.1
Tag_3Bool%M0.2
Tag_4Bool%M0.3
Tag_5Bool%M0.4
Tag_6Bool%M0.5
系统实例 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_8 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_9 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步