2. 屏蔽门开闭命令与门状态反馈联锁测试
联锁逻辑设计要点
屏蔽门控制接口在PLC侧通常表现为两组数字量:一组是PLC输出到门控单元的开门命令(DO_Open)与关门命令(DO_Close),另一组是门控单元回送给PLC的全开反馈(DI_OpenLimit)与全关反馈(DI_CloseLimit)。联锁测试的核心不是"命令能发出去",而是验证命令与反馈在时序上的一致性,以及防夹条件能否正确封锁关门命令。
本例采用如下联锁约定(示例参数,实际工程以设计文件为准):
- 开门命令与关门命令互斥,任一时刻只允许一个为1;
- 关门命令的允许条件为:无开门命令、无开门到位反馈、无防夹触发(障碍物检测DI_Obstacle=0)、无门区安全回路断开;
- 开门命令的允许条件为:无关门命令、无全关反馈;
- 命令输出后,若在设定监视时间(示例取8 s)内未收到对应到位反馈,则输出"动作超时"报警,并撤销该命令;
- 防夹触发时立即撤销关门命令,并保持开门命令有效直至障碍清除。
联锁逻辑的梯形图实现
下面给出可直接映射到主流PLC(如西门子S7-1200/1500、三菱FX/Q系列)的梯形图等价逻辑,用结构化文本表达以便阅读。变量均按本例定义,不依赖前例代码。
// ===== 变量声明(示例地址,按实际I/O表替换)=====
// 输入
DI_OpenCmd : BOOL; // I0.0 开门指令
DI_CloseCmd : BOOL; // I0.1 关门指令
DI_OpenLimit : BOOL; // I0.2 门全开到位
DI_CloseLimit : BOOL; // I0.3 门全关到位
DI_Obstacle : BOOL; // I0.4 障碍物/防夹检测(1=有障碍)
DI_SafetyLoop : BOOL; // I0.5 门区安全回路(1=正常)
// 输出
DO_Open : BOOL; // Q0.0 开门命令
DO_Close : BOOL; // Q0.1 关门命令
ALM_Timeout : BOOL; // Q0.2 动作超时报警
ALM_AntiPinch : BOOL; // Q0.3 防夹动作记录
// 内部
TON_Open : TON; // 开门监视定时器
TON_Close : TON; // 关门监视定时器
T_Monitor : TIME := T#8S; // 监视时间示例值
// ===== 1. 防夹联锁:障碍物出现立即撤销关门命令 =====
IF DI_Obstacle THEN
DO_Close := FALSE;
ALM_AntiPinch := TRUE;
END_IF;
// ===== 2. 开门命令输出 =====
DO_Open := DI_OpenCmd
AND NOT DO_Close
AND NOT DI_CloseLimit
AND DI_SafetyLoop;
// ===== 3. 关门命令输出(含防夹封锁)=====
DO_Close := DI_CloseCmd
AND NOT DO_Open
AND NOT DI_OpenLimit
AND NOT DI_Obstacle
AND DI_SafetyLoop;
// ===== 4. 动作监视定时器 =====
TON_Open(IN := DO_Open AND NOT DI_OpenLimit, PT := T_Monitor);
TON_Close(IN := DO_Close AND NOT DI_CloseLimit, PT := T_Monitor);
// ===== 5. 超时报警与命令撤销 =====
IF TON_Open.Q THEN
ALM_Timeout := TRUE;
DO_Open := FALSE;
END_IF;
IF TON_Close.Q THEN
ALM_Timeout := TRUE;
DO_Close := FALSE;
END_IF;
// ===== 6. 报警复位(示例:由复位按钮或上位机写1)=====
IF DI_Reset THEN
ALM_Timeout := FALSE;
ALM_AntiPinch := FALSE;
END_IF;
上述代码中,第2、3段存在"先赋值后又被第5段改写"的顺序依赖,实际梯形图中应把超时撤销放在命令线圈之后作为后续网络,或使用置位/复位指令保证扫描顺序清晰。若使用置位/复位,需在命令条件满足时置位、在超时或防夹时复位,避免同一扫描周期内多次赋值造成歧义。
模拟门状态变化进行验证
联调阶段门控单元可能尚未就位,可用PLC强制表或仿真开关模拟DI_OpenLimit、DI_CloseLimit、DI_Obstacle、DI_SafetyLoop。验证按以下用例逐条执行,每条记录命令输出与反馈的实际状态:
| 用例 | 操作/输入条件 | 预期输出 | 判读依据 |
|---|---|---|---|
| T1 正常开门 | DI_OpenCmd=1,DI_CloseLimit=1,DI_SafetyLoop=1 | DO_Open=1,DO_Close=0 | 开门命令置位,关门命令被互锁封锁 |
| T2 开门到位 | 在T1基础上置DI_OpenLimit=1 | DO_Open保持,TON_Open不动作 | 到位反馈消除监视计时,无超时报警 |
| T3 正常关门 | DI_CloseCmd=1,DI_OpenLimit=1,DI_Obstacle=0 | DO_Close=1,DO_Open=0 | 关门命令置位,开门命令被封锁 |
| T4 关门到位 | 在T3基础上置DI_CloseLimit=1 | DO_Close保持,TON_Close不动作 | 全关反馈有效,无超时 |
| T5 防夹触发 | 关门过程中置DI_Obstacle=1 | DO_Close立即=0,ALM_AntiPinch=1 | 关门命令被撤销,防夹记录置位 |
| T6 开门超时 | DI_OpenCmd=1,DI_OpenLimit保持0超过8 s | 8 s后DO_Open=0,ALM_Timeout=1 | 监视定时器到时,命令撤销并报警 |
| T7 安全回路断开 | DI_SafetyLoop=0 | DO_Open=0,DO_Close=0 | 安全条件不满足,两命令均封锁 |
| T8 命令互斥 | DI_OpenCmd=1且DI_CloseCmd=1同时为1 | DO_Open=0,DO_Close=0(或按设计优先级) | 互锁条件使两命令均不输出,需与设计约定核对 |
结果判读与常见问题
- 命令与反馈不同步:若DO_Open=1但DI_OpenLimit长时间为0,先检查门控单元反馈线是否接反(常开/常闭),再核对监视时间是否过短导致误报。
- 防夹不生效:确认DI_Obstacle在程序中为"1=有障碍"的正逻辑;若现场为常闭触点,需在输入映射时取反,否则防夹条件永远不成立。
- 命令抖动:按钮输入未去抖时,DO_Open可能在单次按下中出现多个扫描周期的通断,应在输入侧增加滤波或使用上升沿触发置位。
- 超时报警无法复位:检查复位逻辑是否在超时条件仍成立时被反复置位,应先撤销命令条件再复位报警。
强制DI_OpenLimit或DI_CloseLimit进行模拟时,务必在测试结束后解除强制并恢复实际接线,否则联调转运行时会出现"门未动但反馈已到位"的假状态,导致联锁失效。