一、整体框架说明
程序分为两套完全独立、逻辑一致的门控制回路:1号门#Door[0]、2号门#Door[1],共用一套模式、故障计数、脉冲复位逻辑;核心功能:门模式允许开门逻辑 + 门到位反馈检测 + 开关门故障超时报警 + 开关门次数统计 + 故障后计数清零 + 腔体密封联锁。基础常量:Always_On = SM0.0 程序始终导通;腔体任务枚举:Production=90(生产模式)、Standby=80(待机模式)。 二、变量命名规则
变量前缀 | 含义 |
| 腔体当前运行模式(枚举:Standby待机/Production生产) |
| 模式禁止开门标志 |
| 手动开门允许标志 |
| 生产模式开门允许 |
| 开门总允许条件 |
| 门触发开门输出线圈 |
| 门限位开关(关门到位信号) |
| 门执行机构反馈信号 |
| 反馈低位/高位设定阈值 |
| 开门故障/关门故障锁存位 |
| 开门/关门超时计时TON |
| 故障上升沿脉冲(单周期脉冲) |
| 门开关故障累计次数 |
| 腔体整体密封联锁信号(所有门全关到位才导通) |
---
程序段1/2:Door[0]、Door[1] 门主体控制逻辑
1. 开门允许条件回路(开门授权判断)
四条并联支路,任意一条满足则输出Door[x].AllowOpen(允许开门): 支路1:禁止开门模式Chamber.Task == Preset(预设禁止模式) → 置位Door[x].NoModeOpen,此支路不允许开门; 支路2:手动开门模式Chamber.Task == Manual(手动模式) → 置位Door[x].ManualOpen,手动模式允许开门; 支路3:生产模式开门Chamber.Task == Production(生产) 串联 Door[x].ProductionOpe → 生产模式下满足生产开门条件,允许开门; 支路4:待机模式开门Chamber.Task == Standby(待机) → 待机模式直接允许开门;
四条支路汇总输出 Door[x].AllowOpen,作为后续开门动作总使能。 2. 开门输出线圈 Door[x].TModeOpen 驱动逻辑
串联所有前置条件,全部导通才输出开门指令:Door[x].NoModeOpen(非禁止开门)&& Door[x].ManualOpen(手动授权)&& !Door[x].ProductionOpe(非生产闭锁)&& Door[x].AllowOpen(总开门允许)→ 驱动 Door[x].TModeOpen 开门输出,控制门执行机构打开。 3. 开门故障FS锁存逻辑(FS_P[x])
开门输出Door[x].TModeOpen导通 → 启动FS_Time[x]超时计时器; 计时到达(FS_Time[x].Q=1):置位FS_P[x](开门故障锁存); 复位条件:NOT FS_Time[x].IN(开门指令断开),复位R端清除故障锁存;功能:发开门信号后,超时未收到门到位反馈,报开门故障并保持锁存。 4. 关门故障SR锁存逻辑(SR_P[x])
门反馈Door[x].Feedback持续大于阈值0.25 → 启动SR_Time[x]关门超时计时器;计时到达后置位SR_P[x](关门故障锁存);功能:门反馈持续高电平超时,判定关门不到位,锁存关门故障。 5. 门反馈高低阈值区分(区分开/关到位)
Door[x].TModeOpen开门输出导通时: 反馈低于Door[x].LowSet → 置位FS_P[x](开门不到位故障); 反馈高于Door[x].HighSet → 置位SR_P[x](关门不到位故障);作用:通过模拟量反馈值区分门的实际位置,判断是否开关到位。 6. 模式禁止开门复位支路
三条R复位线圈,分别复位对应模式开门标志:
Chamber.Task == PresetChamber.Task == ManualChamber.Task == Production || Standby → R复位Door[x].ProductionOpe;作用:腔体模式切换时,自动清除上一模式的开门授权标志,防止模式冲突误开门。 程序段3:故障锁存位输出映射
SM0.0常通,将内部故障锁存位映射到外部输出:
FS_P[0] → Door[0].FS 0号门开门故障输出;
SR_P[0] → Door[0].SR 0号门关门故障输出;
FS_P[1] → Door[1].FS 1号门开门故障输出;
SR_P[1] → Door[1].SR 1号门关门故障输出;用途:故障信号对外输出,驱动报警灯、HMI故障弹窗。 程序段4:腔体密封联锁 Sealed 逻辑(安全联锁核心)
Sealed = 腔体密封完成信号,只有满足全部门关门到位才导通: 导通条件分两路“或逻辑”:
基础条件:Door[0].LS && Door[1].LS 0、1号门关门限位全部触发; 旁路条件(生产/待机模式允许旁路校验):Door[0].LS && Door[1].LS&& !Door[1].TModeOpen(无开门输出)&& Door[1].AllowOpen(开门授权有效) 安全功能解读
只有两扇门物理关到位(限位LS触发),腔体才判定密封完成Sealed=1; 生产/待机模式下,若门允许开门但未输出开门指令,可旁路校验,保证工艺连续运行;
若任意一扇门未关到位,Sealed=0,可联动屏蔽腔体负压/灭菌/投料等高风险工艺,防止泄漏。 程序段5/6:开门故障上升沿脉冲生成 SYS_Pulse_P
以0门为例,1门逻辑完全一致:输入:FS_Time[x].IN(开门计时启动信号)功能:上升沿单周期脉冲输出Pu_FS[x];作用:开门故障第一次触发时,生成一个扫描周期脉冲,用于故障计数累加。 程序段7/8:关门故障上升沿脉冲生成 SYS_Pulse_P
输入:SR_P[x](关门故障锁存位)上升沿脉冲输出Pu_SR[x];作用:关门故障首次锁存时,单周期脉冲触发故障次数+1。 程序段9:门故障次数累加 ADD_I 整数加法
Pu_SR[0]脉冲到来:Door[0].SRCount = Door[0].SRCount + 1; Pu_SR[1]脉冲到来:Door[1].SRCount = Door[1].SRCount + 1;功能:累计每扇门关门故障发生总次数,用于HMI设备寿命统计、预防性维护提醒。 程序段10:故障清零逻辑 MOVE传送指令
开门故障脉冲Pu_FS[x]触发时,将0赋值给对应门故障计数: Pu_FS[0]Pu_FS[1] → Door[1].SRCount := 0;功能:每次开门故障触发后,自动重置关门故障计数器;逻辑含义:开门动作完成后,清空上一轮关门故障记录,重新统计本次关门是否到位。 ---
完整业务流程闭环(一扇门完整动作流程)
模式判定开门指令输出 满足所有授权条件,输出TModeOpen开门信号;
开门超时监控 开门信号启动TON计时,超时无到位反馈→锁存开门故障FS;
门位置反馈采集 模拟量Feedback区分门开/关到位;
关门超时监控 门反馈持续高电平超时→锁存关门故障SR;
故障脉冲与计数 关门故障首次触发,故障次数+1;开门故障触发,清空关门故障计数;
腔体密封联锁故障对外输出 FS/SR故障位映射至外部输出,实现声光报警、上位机提示。
程序设计亮点与安全逻辑
双门独立隔离 0/1号门控制逻辑完全镜像,互不干扰,便于扩展多门;
双重故障判断 数字量超时计时 + 模拟量反馈阈值,双重校验门是否到位,防止限位开关单点故障;
模式互锁 腔体模式切换自动复位开门标志,禁止错误模式下开门;
设备运维统计 故障次数累计,实现预防性维护;
安全联锁兜底 腔体工艺依赖Sealed密封信号,门未关严禁止高危工艺,满足制药/洁净舱安全规范; 故障自复位计数 每次新开门动作自动清零旧关门故障,区分单次循环故障,便于定位单次工艺异常。
下次我们继续深挖: YJ_FanCtrl功能块 YJ_BVCtrl 关注不迷路,带你从入门到熟练,轻松搞定 Smart 编程!
往期推荐