跳到正文
Learn-LAD
示例库/闪烁指示灯

闪烁指示灯

两个定时器组成的闪烁回路,让指示灯周期性亮灭。

入门 S7-1200 定时器 闪烁 TON TOF

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

这是一个"按住按钮就闪"的指示灯程序:灯亮 1 秒、灭 2 秒,循环往复;松开按钮或按下复位按钮立即停止。

它的核心是 两个定时器串联成一个振荡器:TON 决定"亮多久",TOF 决定"灭多久"。看懂这个例子,以后做闪烁、报警灯、间歇运行都能套用。

信号表

信号 类型 含义 作用
Start PB I 启动按钮 按住期间允许闪烁
Reset PB I 复位按钮(常闭) 按下立即熄灭
Light Q 指示灯 最终输出,亮/灭交替
Tag_1 M 闪烁标志 为 1 时表示"现在处于灭灯阶段"
IEC_Timer_0_DB_1 TON 亮灯定时 1 秒 灯亮满 1 秒后触发
IEC_Timer_0_DB TOF 灭灯定时 2 秒 把灭灯时间保持 2 秒

工作流程

  1. 按住 Start PB → Light 亮,同时 TON 开始 1 秒计时;
  2. 1 秒后 TON 输出,经 TOF 让 Tag_1 置位 → Light 熄灭;
  3. Light 灭后 TON 复位,TOF 继续把 Tag_1 保持 2 秒 → 灯保持灭 2 秒;
  4. 2 秒到,Tag_1 复位 → Light 重新亮,回到第 1 步循环;
  5. 松开 Start PB 或按下 Reset PB → 立即停止。

MainOB

Network 1 — 灯的点亮条件

Network 1:Start PB、Reset PB、Tag_1、Light

目的:决定 Light 什么时候亮。

条件 → 动作:Start PB 按下、Reset PB 未按、Tag_1 为 0 三个条件同时满足时,Light 输出 1。

为什么:Reset PB 接常闭触点,它一动作回路就断开,等于"停止优先";Tag_1 的常闭触点由 Network 2 控制——灯亮满 1 秒后 Tag_1 置位,反过来把灯关掉,这正是闪烁的另半个节拍。

注意:这里没有自锁,必须一直按住 Start PB 灯才会闪。想按一下就持续闪,见"变体与扩展"。

逻辑:Light = Start PB AND NOT Reset PB AND NOT Tag_1

Network 2 — 闪烁节拍

Network 2:Light、Tag_1

目的:用两个定时器生成"亮 1 秒、灭 2 秒"的循环。

条件 → 动作:Light 为 1 时 TON 开始计 1 秒;1 秒到,TON 输出 Q=1;这个信号接着喂给 TOF,TOF 在输入变 0 后仍保持 2 秒。于是 Tag_1 在灯亮 1 秒后置位,并维持到灯灭 2 秒之后才复位。

为什么:TON 负责"亮多久",TOF 负责"灭多久",把 TON 的输出接进 TOF 的输入就形成一个自动循环的振荡器。Tag_1 是中间标志,不直接接灯。

注意:TOF 的 PT 不是"从开始计时到动作",而是"输入断开后再保持多久"——初学最容易记反。

逻辑:Tag_1 = IEC_Timer_0_DB.Q(IN = IEC_Timer_0_DB_1.Q(IN = Light, PT = T#1s), PT = T#2s)

常见问题

  • 灯不亮:确认 Start PB 是否一直按住;Reset PB 是常闭按钮,未接或接线断开也会让灯不亮。
  • 节奏不对:改 TON 的 PT 就改"亮"的时长,改 TOF 的 PT 就改"灭"的时长。
  • 必须按住才闪:这是本程序的原始逻辑,不是故障;需要"按一下持续闪"请看下面的扩展。

变体与扩展

  • 按一下就持续闪:在 Network 1 的 Start PB 上并联 Light 的自锁触点: Light = (Start PB OR Light) AND NOT Reset PB AND NOT Tag_1,再按 Reset PB 停止。
  • 用系统时钟位:博途的时钟存储器字节(如 M0.5 = 1Hz)可以直接闪烁,省掉两个定时器;但本程序能帮你真正理解定时器串联的用法。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Start PBBool%I0.0
Reset PBBool%I0.1
LightBool%Q0.0
Tag_1Bool%M0.0
系统实例 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

下一步