跳到正文
Learn-LAD
示例库/道闸控制

道闸控制

车辆检测后道闸抬杆 20 秒(必要时再延长 5 秒);演示自锁 + 脉冲定时。

进阶 S7-1200 道闸 定时器 自锁 互锁

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

车辆被传感器检测到后,道闸抬起 20 秒;如果 20 秒后车辆仍在传感器上,再延长 5 秒,然后落杆。

程序用自锁记住"有车",用两个定时器控制抬杆窗口,是自锁 + 脉冲定时 + 延长逻辑的组合练习。

信号表

信号 类型 含义 作用
Sensor I 车辆检测传感器 检测到车时动作
Tag_1 M 有车标志 传感器触发后自锁
Tag_2 M 抬杆窗口 20 秒 第一次抬杆时间
Tag_3 M 延长窗口 5 秒 车未离开时延长
Barrier Q 道闸输出 抬杆
IEC_Timer_0_DB TP 抬杆 20 秒 第一次窗口
IEC_Timer_0_DB_1 TON 20 秒判断 车是否仍在
IEC_Timer_0_DB_2 TP 延长 5 秒 第二次窗口

工作流程

  1. Sensor=1 → Tag_1 置位并自锁;
  2. Tag_1 触发 20 秒 TP → Tag_2=1,Barrier=1 抬杆;
  3. 20 秒后 Tag_2=0;同时 TON 也已到 20 秒,如果 Sensor 仍为 1 → 触发 5 秒 TP → Tag_3=1,道闸继续抬着;
  4. 5 秒后 Tag_3=0,Barrier 落杆;Tag_1 仍保持为 1(见下方注意)。

MainOB

Network 1 — 有车自锁

Network 1:Sensor、Tag_1、Tag_1

目的:记住"检测到过车辆"。

条件 → 动作:Sensor=1 → Tag_1 置位;自身触点保持。

为什么:车辆经过传感器可能只是瞬间,自锁保证后续定时器有稳定的触发条件。

注意:Tag_1 没有复位条件,会一直保持为 1——这会导致第二辆车无法再次触发抬杆(见 Network 2 的说明)。

逻辑:Tag_1 = (Sensor OR Tag_1)

Network 2 — 抬杆 20 秒

Network 2:Tag_1、Tag_2

目的:产生第一次抬杆窗口。

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

为什么:TP 触发一次就固定输出 20 秒,不要求 Tag_1 一直变化。

注意:TP 需要上升沿;Tag_1 保持为 1 时 TP 不会再次触发。也就是说,这个程序只能对第一辆车有效;实际道闸应在车离开后复位 Tag_1(或用传感器下降沿重新触发)。

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

Network 3 — 道闸输出

Network 3:Tag_2、Tag_3、Barrier

目的:把两个时间窗口合并成抬杆输出。

条件 → 动作:Tag_2=1 或 Tag_3=1 → Barrier=1。

为什么:第一次窗口和延长窗口是"或"关系,任意一个有效就抬杆。

逻辑:Barrier = Tag_2 OR Tag_3

Network 4 — 延长 5 秒

Network 4:Tag_1、Sensor、Tag_3

目的:20 秒后车还没走,就再抬 5 秒。

条件 → 动作:Tag_1=1 且 TON 已计时 20 秒,且 Sensor 仍为 1 → 触发 TP → Tag_3=1 保持 5 秒。

为什么:用"20 秒后仍在检测"作为延长条件;TP 保证延长窗口固定 5 秒。

注意:如果 20 秒时车已经离开(Sensor=0),延长不会触发,道闸直接落杆。

逻辑:Tag_3 = TP(IN = TON(IN = Tag_1, PT = T#20s).Q AND Sensor, PT = T#5s).Q

常见问题

  • 第二辆车不抬杆:Tag_1 自锁后没有复位,TP 不会再触发;需要在车离开时复位 Tag_1,或用传感器下降沿触发。
  • 一直不落杆:检查 Tag_2/Tag_3 是否还在脉冲时间内。
  • 想改抬杆时长:改 TP 的 PT(20 秒 / 5 秒)。

变体与扩展

  • 车离开复位:用 Sensor 的下降沿复位 Tag_1,让每次来车都能重新触发。
  • 加地感/防砸:在落杆条件中串"车已离开"信号,避免砸车。
  • 常开道闸:高峰时段用一个模式位强制 Barrier=1,忽略定时逻辑。

变量与数据块

变量表:Default tag table

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

下一步