4. PLC基本指令与车站信号灯控制实战

地铁车站的信号灯控制看似只是“亮与灭”,但落到PLC程序里,它同时涉及位逻辑判断、时间延迟和计数累计三类基本能力。本节以车站站台“正常指示灯—到站预警灯—故障报警灯”这一典型控制场景为主线,把位逻辑指令、定时器、计数器串成一条可编写、可调试的完整程序链。学完本节,你应当能独立写出一个带延时确认和故障计数的信号灯控制程序,并知道如何用监控表判断它是否按预期工作。

一、位逻辑指令:把“条件”翻译成触点

位逻辑指令处理的是布尔量,核心就是常开触点、常闭触点、线圈以及置位/复位。编写信号灯程序的第一步,是把现场条件写成“什么情况下灯该亮”。以站台正常指示灯 HL1 为例,它的点亮条件可归纳为:车站处于运营模式(M_Operate)、站台门关闭到位(PED_Closed)、无故障报警(NOT Alarm)。用梯形图表达就是三个常开触点串联驱动线圈:

|--[ M_Operate ]--[ PED_Closed ]--[/ Alarm ]----( HL1 )--|

这里 [/ Alarm ] 是常闭触点,表示“报警不存在”这一条件成立。初学者最容易犯的错误是把常闭触点理解成“报警时导通”,实际上常闭触点在变量为0时导通,正好对应“无报警才允许正常灯亮”的逻辑。置位(S)与复位(R)指令则用于需要“保持”的状态,例如报警灯一旦触发就应保持点亮,直到人工确认复位,这时用 (S) HL_Alarm 比用普通线圈更合适,因为普通线圈在每个扫描周期都会被重新赋值,条件消失灯就灭了。

二、定时器:给信号加“确认时间”

车站里很多信号不能一有变化就立刻响应,否则瞬时抖动会造成误报警。定时器的作用就是引入时间确认。以到站预警灯 HL2 为例:列车接近信号(Train_Approach)出现后,预警灯应点亮;但为避免轨道电路瞬时干扰,要求信号持续 2 秒才确认。可选用接通延时定时器 TON:

|--[ Train_Approach ]--------------------( TON T1, PT:=2s )--|
|--[ T1.Q ]----------------------------------( HL2 )---------|

TON 的工作要点是:使能输入为1时开始累计,累计到预设值 PT 后输出 Q 置1;使能输入一旦变0,累计值立即清零、Q 复位。因此它适合“持续满足才动作”的确认场景。与之相对的断开延时定时器 TOF 适合“信号消失后灯再保持一段时间”的场景,例如列车离开后预警灯延时 3 秒熄灭,避免乘客看到灯突然跳变。选择哪种定时器,取决于你要确认的是“出现”还是“消失”。

定时器的预设值要注意时基。若定时器时基为 100 ms,则 2 秒对应 PT=20;若时基为 1 s,则 PT=2。编程时必须核对定时器类型对应的时基,否则会出现“设了2却等了200秒”的低级错误。

三、计数器:把偶发故障累计成报警

故障报警灯 HL3 不应因一次瞬时异常就点亮,而应在短时间内多次异常后报警,这时用计数器 CTU。设站台门异常信号 Door_Fault 每出现一个上升沿计数一次,累计达到 3 次则触发报警:

|--[ Door_Fault ]--------------------( CTU C1, PV:=3 )--|
|--[ C1.Q ]--------------------------( S )--( HL_Alarm )--|
|--[ Reset_Button ]------------------( R )--( C1 )-------|

CTU 在计数输入每个上升沿使当前值加1,达到预设值 PV 时输出 Q 置1;复位输入为1时当前值清零、Q 复位。注意计数输入必须用上升沿触发,否则信号持续为1的整个期间每个扫描周期都会加1,计数会瞬间溢出。实际编程中可用 |P| 上升沿触点或边沿检测指令实现。

四、程序结构与调试判读

把上述三段组合起来,就形成本节的核心控制程序。下图展示了从现场信号到三盏灯的逻辑链路,以及定时器、计数器在其中的位置:

车站信号灯控制逻辑链路 现场输入信号 运营模式 M_Operate 站台门关闭 PED_Closed 列车接近 Train_Approach 门异常 Door_Fault 复位按钮 Reset 逻辑处理 位逻辑:串联/常闭/置位 M_Operate·PED_Closed·/Alarm TON 定时器 T1 PT=2s 持续确认 CTU 计数器 C1 PV=3 上升沿计数 置位/复位保持 报警保持至人工复位 输出灯 HL1 正常灯 HL2 预警灯 HL3 报警灯 监控观察点 T1.ET 累计值 T1.Q 确认输出 C1.CV 当前计数 C1.Q 报警触发 HL1/2/3 线圈状态 扫描周期内 逐项核对

程序写完后必须通过调试确认逻辑正确。推荐用PLC软件的监控表同时观察:T1.ET(定时器累计值)、T1.Q、C1.CV(计数器当前值)、C1.Q 以及三盏灯线圈状态。调试时按以下顺序验证:先强制 Train_Approach=1,观察 T1.ET 是否从0递增、约2秒后 T1.Q 变1、HL2 点亮;再让信号变0,确认 T1.ET 立即清零、HL2 熄灭。随后手动触发 Door_Fault 三次上升沿,观察 C1.CV 依次为1、2、3,第三次后 C1.Q 置1、HL3 保持点亮;最后按复位按钮,确认 C1.CV 归零、HL3 熄灭。

调试小技巧:若发现计数器“一次触发就跳到3”,先检查计数输入是否用了上升沿;若发现预警灯“信号来了却一直不亮”,先看 T1.ET 是否在增长——不增长说明使能条件没满足,增长但不到 PT 说明预设值或时基设错。
安全提醒:涉及站台门、信号机等实际设备的程序,调试阶段应在仿真环境或断开输出负载的条件下进行,禁止在运营时段直接强制现场输出点,以免误动作影响行车与乘客安全。

本节的三类指令并非孤立知识点:位逻辑决定“什么条件组合”,定时器决定“条件要持续多久”,计数器决定“异常累计多少次”。把这三者按现场工艺要求组合,再配合监控表逐点核对中间变量,就能把一段看似复杂的车站信号灯程序拆解成可验证的小段,这也是后续学习更复杂联锁逻辑的基础方法。