跳到正文
Learn-LAD
示例库/自动喂鱼系统

自动喂鱼系统

启动按钮 + 料位传感器有效时,三个投喂阀依次打开 5 秒;30 秒后锁定,避免重复投喂。

进阶 S7-1200 喂鱼 定时器 顺序控制

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按住启动按钮并确认料位传感器有效,三个投喂阀依次打开 5 秒;30 秒后系统锁定,避免在同一个启动信号下重复投喂。

程序用 三个 TP 串联 + 一个 TON 锁定,是"多步定量投喂 + 防重复"的小例子。

信号表

信号 类型 含义 作用
Start_button I 启动按钮 按住时允许投喂
Sensor I 料位/位置传感器 确认可以投喂
Valve_1~3 Q 三个投喂阀 依次打开 5 秒
Tag_1 M 投喂使能 启动条件满足时为 1
Tag_2 M 30 秒锁定 锁定期间禁止再次投喂
定时器 TP/TON 5s×3、30s 投喂与锁定

工作流程

  1. Start_button=1 且 Sensor=1 且未锁定 → Tag_1=1;
  2. Valve_1 打开 5 秒;
  3. Valve_1 结束 → Valve_2 打开 5 秒;
  4. Valve_2 结束 → Valve_3 打开 5 秒;
  5. 同时 TON 计 30 秒,到时 Tag_2=1,切断 Tag_1,完成一次投喂;
  6. Tag_2 随 Tag_1 消失后复位;若按钮仍按住,会再开始下一轮。

MainOB

Network 1 — 投喂使能

Network 1:Start_button、Sensor、Tag_2、Tag_1

条件 → 动作:Start_button=1 且 Sensor=1 且 Tag_2=0 → Tag_1=1。

为什么:Tag_2 是 30 秒锁定,防止一次按住按钮就无限投喂;Sensor 确保料仓/投喂机构就绪。

注意:Tag_1 是普通线圈,没有自锁;松开按钮或传感器失效都会停止投喂。

逻辑:Tag_1 = Start_button AND Sensor AND NOT Tag_2

Network 2 — 三个投喂阀顺序动作

Network 2:Tag_1、Valve_1、Valve_1、Valve_2、Valve_1、Valve_2、Valve_3

条件 → 动作:Tag_1=1 时,Valve_1 先开 5 秒;结束后 Valve_2 开 5 秒;再结束 Valve_3 开 5 秒。

为什么:三个 TP 串联,用"上一个阀关闭"作为下一个阀的触发条件,保证严格顺序、不会同时开。

逻辑(节选): Valve_1 = TP(IN = Tag_1, PT = T#5s).Q

Valve_2 = TP(IN = Tag_1 AND NOT Valve_1, PT = T#5s).Q

Valve_3 = TP(IN = Tag_1 AND NOT Valve_1 AND NOT Valve_2, PT = T#5s).Q

Network 3 — 30 秒锁定

Network 3:Tag_1、Tag_2

条件 → 动作:Tag_1=1 持续 30 秒 → TON 输出 Tag_2=1。

为什么:30 秒刚好覆盖三个阀的 15 秒动作,并留出间隔;Tag_2 切断 Tag_1,一次投喂结束。

注意:Tag_2 是 TON 输出,不是自锁;Tag_1 归零后 TON 复位,锁定自动解除。

逻辑:Tag_2 = TON(IN = Tag_1, PT = T#30s).Q

常见问题

  • 不投喂:检查 Start_button、Sensor 是否都为 1,以及 Tag_2 是否还在锁定。
  • 三个阀同时开:检查串联条件里的 NOT Valve_1 / NOT Valve_2。
  • 一直重复投喂:按住按钮会循环;松开按钮或让 Sensor=0 可以停止。

变体与扩展

  • 定时自动投喂:用时钟触发替代按钮,每天固定时间投喂。
  • 投喂量可调:把三个 TP 的 PT 做成参数,控制每个阀的开启时长。
  • 料位报警:Sensor 无效时输出"缺料"报警,而不是静默不投喂。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Start_buttonBool%I0.0
SensorBool%I0.1
Valve_1Bool%Q0.0
Valve_2Bool%Q0.1
Valve_3Bool%Q0.2
Tag_1Bool%M0.0
Tag_2Bool%M0.1
系统实例 DB(4 个)

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

下一步