跳到正文
Learn-LAD
示例库/闪烁间隔控制

闪烁间隔控制

两个按钮各自启动一个闪烁灯:一个 2 秒亮/2 秒灭,另一个 5 秒亮/5 秒灭。

入门 S7-1200 闪烁 定时器 间隔

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

两个按钮各控制一盏闪烁灯:light 以 2 秒亮、2 秒灭闪烁;light 2 以 5 秒亮、5 秒灭闪烁。按住按钮期间持续闪烁。

程序用 TP(亮)+ TON(灭) 交替,是调节闪烁间隔最直观的写法。

信号表

信号 类型 含义 作用
PB1 I 启动闪烁 1 按住时 light 闪烁
PB2 I 启动闪烁 2 按住时 light 2 闪烁
light Q 灯 1 2 秒亮 / 2 秒灭
light 2 Q 灯 2 5 秒亮 / 5 秒灭
Tag_1 M 灯 1 灭灯窗口 2 秒
Tag_2 M 灯 2 灭灯窗口 5 秒
定时器 TP/TON 2s×2、5s×2 亮/灭时长

工作流程

  1. 按住 PB1 → light=1 亮 2 秒;
  2. 2 秒后 Tag_1=1,light 灭 2 秒;
  3. Tag_1 结束后 light 重新亮,循环;
  4. PB2 控制 light 2,节奏为 5 秒亮 / 5 秒灭。

MainOB

Network 1 — 2 秒闪烁

Network 1:PB1、Tag_1、light、light、Tag_1

目的:用定时器交替控制灯 1 的亮/灭。

条件 → 动作:PB1=1 且 Tag_1=0 → TP 触发,light=1 持续 2 秒;灯灭后 Tag_1 由 TON 计时 2 秒,期间禁止灯亮;Tag_1 结束后重新点亮。

为什么:TP 控制"亮多久",TON 控制"灭多久";Tag_1 的常闭触点是灭灯互锁。

注意:按钮松开后两个定时器都失去条件,闪烁停止;这是"按住才闪"的设计。

逻辑: light = TP(IN = PB1 AND NOT Tag_1, PT = T#2s).Q

Tag_1 = TON(IN = PB1 AND NOT Tag_1 AND NOT light, PT = T#2s).Q

Network 2 — 5 秒闪烁

Network 2:PB2、Tag_2、light 2、light 2、Tag_2

目的:与 Network 1 相同,只是把亮/灭时间都改成 5 秒。

条件 → 动作:PB2=1 且 Tag_2=0 → light 2=1 亮 5 秒;随后 Tag_2 计时 5 秒,灯灭;循环。

逻辑: light 2 = TP(IN = PB2 AND NOT Tag_2, PT = T#5s).Q

Tag_2 = TON(IN = PB2 AND NOT Tag_2 AND NOT light 2, PT = T#5s).Q

常见问题

  • 不闪:确认按钮是否按住;松开即停止。
  • 亮/灭时间不对:每盏灯有两个定时器,TP 管亮、TON 管灭,两个都要改。
  • 两盏灯互相影响:它们使用独立的标签和定时器,正常不会互相影响;检查变量名是否写错。

变体与扩展

  • 可调间隔:把四个 PT 换成 HMI 变量,现场调整闪烁节奏。
  • 单按钮切换:用翻转逻辑让按一下持续闪烁、再按停止。
  • 同步闪烁:两盏灯共用一个节拍(同一个 TP/TON),保证同时亮灭。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
PB1Bool%I0.0
lightBool%Q0.0
PB2Bool%I0.1
light 2Bool%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

下一步