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

路灯控制

运动传感器触发路灯点亮 20 秒;持续有运动时进入 1 秒闪烁提示。

进阶 S7-1200 路灯 TP TON 闪烁

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

运动传感器检测到人/车后,路灯点亮 20 秒;如果运动持续超过 20 秒,路灯会进入 1 秒亮、1 秒灭的闪烁状态,直到运动停止。

程序用三个网络分别做"点亮窗口""闪烁节拍"和"输出合并",是TP + TON + 脉冲交替的综合练习。

信号表

信号 类型 含义 作用
Motion_Sensor I 运动传感器 触发路灯
Tag_1 M 点亮窗口 运动后保持 20 秒
Tag_2 M 闪烁节拍 A 1 秒脉冲
Tag_5 M 闪烁节拍 B 1 秒脉冲
Tag_3 / Tag_4 M(Time) 两个 TP 的 ET 计时值,便于监控
Street_Lights Q 路灯输出 常亮或闪烁
PB I 点表中的按钮 程序未使用

工作流程

  1. Motion_Sensor=1 → TP 触发,Tag_1=1 保持 20 秒,路灯常亮;
  2. 同时 TON 开始计 20 秒;
  3. 20 秒后如果运动仍在:Tag_5 与 Tag_2 交替输出 1 秒脉冲 → 路灯以 1 秒节奏闪烁;
  4. 运动消失 → TON 复位,闪烁停止,路灯熄灭。

MainOB

Network 1 — 点亮 20 秒

Network 1:Motion_Sensor、Tag_1

目的:运动触发后让路灯稳定点亮一段时间。

条件 → 动作:Motion_Sensor=1 触发 TP → Tag_1 输出 20 秒。

为什么:TP 适合"触发一次、固定亮一段时间",不要求传感器一直保持。

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

Network 2 — 持续运动时的闪烁节拍

Network 2:Motion_Sensor、Tag_2、Tag_5、Tag_5、Tag_2

目的:运动超过 20 秒后,产生 1 秒亮/1 秒灭的闪烁节拍。

条件 → 动作:TON 到 20 秒后,Tag_5 与 Tag_2 两个 1 秒 TP 交替触发:Tag_5 先亮 1 秒,随后 Tag_2 亮 1 秒,如此循环。

为什么:两个 TP 通过对方的常闭触点互锁,保证不会同时输出;交替的 1 秒脉冲就形成闪烁。Tag_3/Tag_4 是它们的 ET 计时值,可用于 HMI 显示。

注意:闪烁只在"运动持续"时出现;运动一旦消失,TON 复位,整个节拍停止。

逻辑(节选): Tag_5 = TP(IN = TON(IN = Motion_Sensor, PT = T#20s).Q AND NOT Tag_2, PT = T#1s).Q

Tag_2 = TP(IN = TON(IN = Motion_Sensor, PT = T#20s).Q AND NOT Tag_2 AND NOT Tag_5, PT = T#1s).Q

Network 3 — 路灯输出

Network 3:Tag_5、Tag_1、Street_Lights

目的:把常亮窗口和闪烁节拍合并成路灯输出。

条件 → 动作:Tag_1=1(常亮)或 Tag_5=1(闪烁亮)→ Street_Lights=1。

为什么:闪烁只需要"亮"的那半周期参与输出,"灭"的半周期由 Tag_5=0 自然实现。

逻辑:Street_Lights = Tag_5 OR Tag_1

常见问题

  • 路灯不亮:确认传感器是否有信号;Tag_1 的 TP 需要上升沿。
  • 不会闪烁:闪烁要求运动持续超过 20 秒;短时间经过只会常亮 20 秒。
  • 点表里的 PB 没用:这个按钮在程序中未被引用,可忽略或删掉。

变体与扩展

  • 改成光控:用光照传感器替代运动传感器,天黑即亮。
  • 闪烁频率可调:把两个 1 秒 TP 的 PT 换成变量,做 0.5~2 秒可调。
  • 节能模式:无人时降到 30% 亮度(需要模拟量输出或调光模块)。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Motion_SensorBool%I0.1
Street_LightsBool%Q0.0
Tag_1Bool%M0.0
Tag_2Bool%M0.1
Tag_3Time%MD0
Tag_4Time%MD4
PBBool%I0.0
Tag_5Bool%M0.3
系统实例 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_4 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步