跳到正文
Learn-LAD
示例库/课堂铃声系统

课堂铃声系统

按下按钮后定时响铃,用脉冲与延时定时器控制响铃时长。

入门 S7-1200 定时器 脉冲 TP

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按一下启动按钮,铃响 10 秒;另外有一个"加时"按钮,按下后 15 秒内不会再响。

程序用两个网络实现:Network 1 决定铃响和 60 秒封锁,Network 2 用加时按钮临时抑制响铃。重点是理解脉冲定时器 TP(响铃时长)和定时封锁(避免连续响铃)的组合。

信号表

信号 类型 含义 作用
start_button I 启动按钮 按一下开始响铃
add_button I 加时/静音按钮 按下后封锁响铃 15 秒
Bell Q 电铃输出 响 10 秒
Tag_1 M 60 秒封锁标志 条件持续 60 秒后置位,阻止响铃
Tag_2 M 15 秒静音标志 加时按钮触发,阻止响铃
IEC_Timer_0_DB TP 响铃定时 10 秒 决定铃响多久
IEC_Timer_0_DB_1 TON 封锁定时 60 秒 长时间按住时封锁
IEC_Timer_0_DB_2 TP 加时定时 15 秒 决定静音多久

工作流程

  1. 按下 start_button → TP 触发,Bell 响 10 秒;
  2. 同一条条件同时启动 60 秒 TON,如果条件(启动按钮未被封锁)持续 60 秒 → Tag_1 置位,封锁响铃;
  3. 任何时候按下 add_button → Tag_2 置位 15 秒,期间 Bell 不响;
  4. Tag_1、Tag_2 通过常闭触点串在响铃条件里,任一为 1 都会打断响铃。

MainOB

Network 1 — 响铃与封锁

Network 1:start_button、Tag_2、Tag_1、Bell、Tag_1

目的:响铃 10 秒,并在长时间触发后封锁。

条件 → 动作:start_button=1 且 Tag_2=0 且 Tag_1=0 时,TP 触发,Bell 输出保持 10 秒;同一条件还接到 60 秒的 TON,持续 60 秒后 Tag_1 置位,把响铃条件切断(Tag_1=1 又会让 TON 复位,形成周期)。

为什么:TP 负责"响多久";TON 负责"连续触发多久后禁止再响";两个封锁标志用常闭触点接入,实现"条件不满足就停"。

注意:start_button 是自复位按钮时,60 秒 TON 需要一直按住才会到时间;如果本意是"响铃后 60 秒内不重复",这个网络并不能实现,需要改成自锁或沿触发(见"变体与扩展")。

逻辑: Bell = TP(IN = start_button AND NOT Tag_2 AND NOT Tag_1, PT = T#10s).Q

Tag_1 = TON(IN = start_button AND NOT Tag_2 AND NOT Tag_1, PT = T#60s).Q

Network 2 — 加时静音 15 秒

Network 2:add_button、Tag_2

目的:按下加时按钮后,让铃静音 15 秒。

条件 → 动作:按下 add_button → TP 触发,Tag_2 输出保持 15 秒(Tag_2 就是 TP 的 Q)。

为什么:Tag_2 的常闭触点接在 Network 1 的响铃条件上,所以 15 秒内 Bell 不会响;TP 让静音时间固定,不依赖按钮是否按住。

注意:TP 触发一次后就固定输出 15 秒,中途再按 add_button 不会重新计时,要等这次结束。

逻辑:Tag_2 = TP(IN = add_button, PT = T#15s).Q

常见问题

  • 按了启动不响:检查 Tag_1/Tag_2 是否还是 1(封锁未解除),或响铃条件是否被断开。
  • 必须一直按住才开始 60 秒封锁:这是当前逻辑的行为;如需"响一次后 60 秒内不重复",见扩展。
  • 响铃时间或静音时间不对:改两个 TP 的 PT(T#10s、T#15s);封锁时间改 TON 的 PT(T#60s)。

变体与扩展

  • 响一次后 60 秒不重复:用 Bell 的下降沿(或任何一次触发)启动 60 秒 TON,把 TON 的 Q 串在启动条件里。
  • 上课铃 / 下课铃:把启动按钮换成时间表触发(如时钟比较指令),TP 的时长照旧。
  • 加音量或时长选择:用不同按钮触发不同 PT 的 TP,或用变量写入 PT。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
BellBool%Q0.0
start_buttonBool%I0.0
add_buttonBool%I0.1
Tag_1Bool%M0.0
Tag_2Bool%M0.1
系统实例 DB(3 个)

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

下一步