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| 上升沿触点或边沿检测指令实现。
四、程序结构与调试判读
把上述三段组合起来,就形成本节的核心控制程序。下图展示了从现场信号到三盏灯的逻辑链路,以及定时器、计数器在其中的位置:
程序写完后必须通过调试确认逻辑正确。推荐用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 熄灭。
本节的三类指令并非孤立知识点:位逻辑决定“什么条件组合”,定时器决定“条件要持续多久”,计数器决定“异常累计多少次”。把这三者按现场工艺要求组合,再配合监控表逐点核对中间变量,就能把一段看似复杂的车站信号灯程序拆解成可验证的小段,这也是后续学习更复杂联锁逻辑的基础方法。