跳到正文
Learn-LAD
示例库/延时灯控制

延时灯控制

开关接通后产生 10 秒脉冲和 10 秒延时两个标志;点表里的灯输出未在块中驱动。

入门 S7-1200 延时 定时器 骨架

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

合上开关后,程序产生两个内部标志:Tag_1 是一个 10 秒脉冲,Tag_2 是开关持续 10 秒后置位的信号。点表里定义了 Lamp 1/Lamp 2,但程序里没有把它们接出来——这是一个"半成品"示例,适合用来练习 TON 与 TP 的区别,以及发现"输出未接"的问题。

信号表

信号 类型 含义 作用
Switch I 开关 触发两个定时器
Tag_1 M 10 秒脉冲 TP 输出,亮 10 秒后自动灭
Tag_2 M 10 秒延时 TON 输出,10 秒后保持
Lamp 1 / Lamp 2 Q 灯输出 点表已定义,程序中未驱动
定时器 TP/TON 各 10 秒 脉冲 / 延时

工作流程

  1. Switch=1 → TP 触发,Tag_1=1 保持 10 秒,然后自动归 0;
  2. 同时 TON 开始计时,10 秒后 Tag_2=1 并保持(只要开关不松开);
  3. 松开开关,两个定时器都复位。

MainOB

Network 1 — 10 秒脉冲 + 10 秒延时

Network 1:Switch、Tag_1、Tag_2

目的:对比 TP 和 TON 在同一输入下的不同行为。

条件 → 动作:Switch=1 时,Tag_1 输出 10 秒后自动消失;Tag_2 在 10 秒后置位并保持。

为什么:TP 是"触发一次、固定输出一段时间";TON 是"条件持续到时间后保持输出"。两者都设为 10 秒,但结束行为不同。

注意:程序只生成了 Tag_1/Tag_2,没有驱动 Lamp 1/Lamp 2。实际使用时可以把 Tag_1 接到 Lamp 1(亮 10 秒)、Tag_2 接到 Lamp 2(10 秒后常亮),或者直接用定时器驱动灯输出。

逻辑: Tag_1 = TP(IN = Switch, PT = T#10s).Q

Tag_2 = TON(IN = Switch, PT = T#10s).Q

常见问题

  • 灯不亮:点表里有灯,但程序没有驱动;需要补输出映射。
  • Tag_1 和 Tag_2 分不清:Tag_1 10 秒后自动灭(脉冲),Tag_2 10 秒后保持(延时)。
  • 松开开关后行为不同:两个定时器都会复位;如果希望保持,需要加自锁。

变体与扩展

  • 接上灯输出:Lamp 1 = Tag_1、Lamp 2 = Tag_2,立刻得到"亮 10 秒"和"10 秒后常亮"两种效果。
  • 延时点亮:只保留 TON,用 Tag_2 驱动灯,就是标准的延时开灯。
  • 延时熄灭:改用 TOF,做"开关断开后灯继续亮 10 秒"。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
SwitchBool%I0.0
Lamp 1Bool%Q0.0
Lamp 2Bool%Q0.1
Tag_1Bool%M0.0
Tag_2Bool%M0.1
系统实例 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

下一步