凌晨两点,手机震动,车间值班电话:HMI上压差报警图标闪红,灌装间对走廊的压差从-10Pa一路掉到-3Pa,湿度也飙过75%,空调系统不知道什么时候自己切到了值班模式,而生产班次明明还没结束。这种半夜被环境监控系统叫醒的体验,搞过医药洁净室空调控制的同行应该都不陌生。
这标题写的是“用PLC玩转五种模式”,但真正玩过的人都知道,难的不是把五种模式写进程序,而是让这五种模式在正确的时间、用正确的姿态出现,并且在切换时不出任何幺蛾子。洁净室空调和普通舒适性空调最大的区别,就是它永远处于“需要证明自己可靠”的状态:温度湿度压差换气次数,每一项都在审计追踪范围内。下面把我这几年做医药洁净室HVAC控制系统的思路、写程序的路子、调试踩过的坑,从头到尾整理一遍。
1. 洁净室空调控制真正需要盯住的几个物理量
1.1 四个硬指标:洁净度、换气次数、压差、温湿度
很多人以为洁净室空调系统是把空气“过滤干净”就行,实际上洁净度这个最终结果,靠的是高效过滤器、气流组织、换气次数和压差梯度共同作用。过滤器的效率是物理保证,但空调控制系统的任务,是保证足够的风量持续通过过滤器、形成合理的气流方向、维持车间与周围环境的压力梯度。控制不好,过滤器再高级也白搭。
- 换气次数:D级洁净室一般要求15次/小时以上,C级25~30次/小时,B级40~60次/小时。这个数值直接决定送风量,也是自净能力的根本来源。
- 压差梯度:洁净区对非洁净区一般要≥10Pa,相邻不同级别洁净室之间通常也要保持5~10Pa的正压差。它的意义是:即使门开了一条缝,气流也只能从高级别流向低级别,而不是反过来。
- 温湿度:常见设计范围是温度18~26℃、相对湿度45%~60%,具体以产品工艺要求为准。温湿度不仅要控制在范围内,还要控制波动幅度,因为很多药品对温度和水分敏感。
- 自净时间:车间受到污染或停机后,恢复正常洁净度的时间通常要求不超过15~30分钟,这个指标靠大风量置换来保证。
所以空调控制系统的核心工作可以概括成一句话:在保证换气次数和压差梯度的前提下,把温湿度稳定在工艺窗口内,并在模式切换时不让任何一个指标超出限值。
1.2 自净能力是整个控制系统的最终考核
自净能力是洁净室区别于普通空调房的独特指标,也是验证阶段最容易被检查的一项。测试方法一般是:人为让房间污染(比如打开门失压、关闭送风一段时间),然后开启自净模式,用粒子计数器连续监测,记录恢复到设定洁净级别所需时间。
这意味着PLC程序里不能只是“打开风机就完了”,还要考虑风量是否补足、压差是否先建立起来、新风阀和排风阀的开度是否匹配。自净模式下如果只加大送风而不调整排风,房间会憋成正压过高,反而影响自净效果。这些都是模式设计时要一起考虑的。
1.3 为什么这活儿更适合PLC而不是普通DDC
医药洁净室项目里也见过用DDC做控制的,但我个人更倾向PLC方案,原因很实际:
第一,可靠性。PLC的工作环境适应能力明显更强,机房有时候又热又潮,还有变频器群带来的电磁干扰,PLC在这方面皮实得多。
第二,开放性和扩展性。洁净室空调的点位动辄几十上百个,还要经常和消防系统、门禁系统、MES系统对接,PLC支持Modbus RTU/TCP、Profinet、EtherNet/IP这些常用工业协议,组网灵活。DDC往往绑定自家生态,做跨系统联调的时候很被动。
第三,程序逻辑的表达能力强。五种模式切换、联锁保护、消毒时序、防冻逻辑这些东西,用PLC的梯形图、结构化文本、功能块图都能表达得很清楚,尤其是状态机概念,在ST里写起来非常顺手。DDC虽然在暖通PID上有传统优势,但遇到多模式仲裁这种复杂逻辑就有点吃力了。
第四,数据完整性和审计追踪。医药行业非常吃这一套,PLC通过OPC UA或Modbus把数据抛给上位机,再由组态软件完成趋势记录、事件日志、操作员权限管理,比DDC那一套完整得多。
2. 五种模式的职能划分与切换仲裁
2.1 五种模式各管哪一段
所谓“五种模式”,其实是根据洁净室的不同运行阶段,把控制目标分成五个场景。每个阶段的风量策略、温湿度设定、压差目标、报警阈值都不一样。先用一张表说清楚:
| 模式 | 适用场景 | 核心目标 | 主要策略 |
|---|---|---|---|
| 生产模式 | 正常生产期间 | 维持全部设计参数 | 全风量运行,温湿度精确控制,恒定压差 |
| 值班模式 | 非生产时段 | 保持正压、节能 | 降低换气次数,放宽温湿度报警限,维持最小正压 |
| 自净模式 | 开机前、检修后、消毒后 | 快速恢复洁净度 | 大新风量高速置换,短时提高换气次数 |
| 消毒模式 | 周期性消毒/熏蒸 | 密闭保持消毒剂浓度 | 关新风、关排风、循环风运行,门禁联动 |
| 紧急模式 | 火灾、风机故障、停电等 | 防污染扩散、防设备损坏 | 按消防策略停机、联锁动作,顺序恢复 |
生产模式没什么好说的,就是全速运行。真正容易出问题的是值班模式和消毒模式。
值班模式是为了节能设计的。非生产时间里,如果还保持全风量运行,一台大空调机组的电费非常可观。通常做法是把送风机频率降下来,换气次数从正常的15次/小时降到6~8次/小时,这样压差梯度还能维持住,能耗却降一大截。但这里有个隐蔽问题:温湿度会跟着漂。风量小了,房间热负荷的扰动相对变大,夏天温度可能压不住;所以值班模式里温湿度报警限一定要放宽,否则半夜全是误报。
消毒模式更特殊。汽化过氧化氢或甲醛熏蒸期间,为了让消毒剂在密闭空间里保持有效浓度,空调系统需要切换成循环风状态——新风阀关、排风阀关、回风阀开,风机低频运转加速消毒剂扩散。这时候房间正压关系完全改变,所以门禁必须联锁,人不能进去。消毒结束后不能直接切生产,要先切到自净模式做置换洗气,这是很多新工程师容易漏掉的一环。
2.2 模式切换的优先级和安全条件
五种模式不能“谁请求谁就切”,必须有一个仲裁顺序。不然就会出现半夜系统自动从生产切到值班这种事故。
我的做法是在PLC里维护一个模式请求寄存器,所有切换指令(来自HMI按钮、上位机联动、消防干接点、定时器)都先写进对应位,再由仲裁逻辑统一决定谁生效。仲裁优先级从高到低这样排:
- 紧急模式:消防信号、风机严重故障、防冻开关动作,一旦触发,立即无条件进入,其他所有请求全部屏蔽。
- 消毒模式:车间正在消毒,绝对不允许切回生产或值班。
- 生产模式:生产请求优先于值班。
- 自净模式:一般由消毒完成或开机序列自动触发。
- 值班模式:优先级最低,没生产、没消毒、没紧急情况时才允许进入。
单有优先级还不够,模式切换必须满足安全条件。比如从生产切值班,送风机频率不能从45Hz瞬间掉到20Hz,必须设一个斜坡速率,一般控制在2~5Hz/s;风阀开关也不能和风机变频同时乱动,要先让新风阀和排风阀到位,再调频率。这些“切换前检查”“切换中过渡”“切换后确认”三步如果缺了,现场必然会出现压差瞬间翻正、温湿度短暂超限的问题。
2.3 模式切换失败时的兜底处理
程序里必须定义“切换失败”这种状态。比如从消毒模式切到自净模式时,如果新风阀打开没到位或者排风机没反馈运行,系统不能傻站着,而要停在过渡态,在HMI上显示“切换失败:排风机未启动”,同时报警提示操作员。等故障解除后,允许工程师手动重试。
模式切换记录一定要做成日志存在上位机。谁在什么时候把系统从A模式切到B模式、原因是什么、切换用了多长时间、切换过程中关键参数有没有超限,这些信息在后续偏差调查里太重要了。
3. 硬件选型与控制网络搭建
3.1 传感器和执行器的选型要点
控制系统再聪明,信号源头不准就全盘皆输。传感器选型有几个细节值得留意:
- 温湿度传感器:房间传感器要避开送风口直吹和局部热源;回风管内的传感器代表整间房间的平均状态,采样代表性更好。精度方面温度±0.3℃、湿度±2%RH基本够用,输出用4-20mA或RS485都行。我的习惯是风管温湿度用RS485,房间温湿度用4-20mA,因为后者直接接AI模块,故障诊断最简单。
- 压差传感器:房间对走廊的压差,量程选0~50Pa或0~100Pa就够了;过滤器阻力用0~500Pa或0~1000Pa。量程太大,小压差变化根本读不出来。取压管里的积水是现场最常见的误差来源,硅胶管要从高处往下坡敷设,让冷凝水能流走而不是堵在管子里。
- 风量测量:我一般用均压管加差压变送器,装在送风机出口直管段。这玩意校准很关键,风管直管段不够时误差能到20%以上,建议做一次风速矩阵标定,把PLC读数换算成真实风量。
- 电动调节阀:冷热水阀和蒸汽阀一定要确认失电状态下的位置——蒸汽加热阀和热水阀一般选失电关闭,防止失电时持续加热;冷冻水阀也要失电关闭。执行器信号4-20mA或0-10V都行,但反馈信号类型要和命令信号保持一致。
- 变频器:没必要开内置PID,用PLC做外部PID监控更方便,模式切换的统一逻辑也都留在PLC里。变频器要设置好加减速时间,防止风道压力突变导致风管喘振。
3.2 控制柜与通讯组网
一台中等规模空调机组的I/O点位大概在50~80个之间,配置大致如下:数字量输入十几路(手自动状态、运行反馈、故障、风阀到位、门开关、消防信号),数字量输出几路(启停、使能、声光报警),模拟量输入十几路(温湿度、压差、风量、阀位反馈),模拟量输出几路(变频器给定、电动阀指令)。
这里特别想说消防联动的接线。火灾信号不能只走通讯总线,就算PLC支持读消防主机数据,也必须拉消防干接点硬线进PLC的DI点,并且从消防信号柜单独接一路硬线直接控制风机接触器回路。真正发生火灾时,即使PLC出故障或上位机卡死,硬线也要能把风机停下来。这是底线。
通讯网络方面,PLC和触摸屏/上位机走以太网,智能仪表(过氧化氢浓度传感器、电量表)走RS485到串口服务器再进PLC。上位机的趋势记录周期建议设到1秒,事件记录要带毫秒时间戳,这个后面验证和审查都用得上。
抗干扰是调试期最头疼的问题。变频器的动力电缆和传感器信号线不能同槽敷设,距离尽量拉开0.3米以上;模拟量信号用屏蔽电缆,屏蔽层单端接地。有一次项目现场温度信号跳得厉害,最后发现是和变频器输出线走了同一个金属线槽,把线重新分开后信号立刻干净了。
4. PLC程序实现的路子:状态机与关键控制回路
4.1 状态机编程思路
五种模式本质上是同一个设备在不同阶段的不同控制目标,所以在程序里我习惯用一个模式状态机来串联全局逻辑。定义一个枚举变量,比如MODE_INIT、MODE_PRODUCTION、MODE_STANDBY、MODE_SELFCLEAN、MODE_DECON、MODE_EMERGENCY,后面所有控制回路都根据当前模式选择不同的设定值和使能条件。
核心架子类似这样:
// 模式请求位 IF R_TRIG(modereq_decon) AND NOT emergency_active THEN mode_request := MODE_DECON; END_IF; // 仲裁逻辑 IF emergency_active THEN mode := MODE_EMERGENCY; ELSIF mode_request = MODE_DECON AND decon_allowed THEN mode := MODE_DECON; ELSIF mode_request = MODE_PRODUCTION AND production_allowed THEN mode := MODE_PRODUCTION; ELSIF mode_request = MODE_SELFCLEAN AND selfclean_allowed THEN mode := MODE_SELFCLEAN; ELSIF mode_request = MODE_STANDBY THEN mode := MODE_STANDBY; ELSE mode := MODE_INIT; END_IF;但实际项目里我不会直接这样“裸写”切换,而是要加三层保护:模式请求必须用上升沿而不是电平,防止请求信号一直存在导致反复切换;切换前先查安全条件表(风机反馈、风阀到位、互锁信号);切换过程中进入过渡子状态,运行对应开阀/关阀/变频斜坡动作,动作完成后再确认切换到新状态。这么做之后,半夜的报警电话能少一半。
4.2 温湿度控制的串级PID
温湿度是最直观的调节目标,但控制起来有个耦合问题。夏季处理湿热空气,新风经过表冷器降温除湿后,温度已经低于送风要求,后面还要再热;如果只控温度不管湿度,房间相对湿度可能会飘起来。所以实际项目里我倾向于“湿度优先”的策略:湿度超上限时,优先开大冷冻水阀加强除湿,同时通过再热阀补偿温度,防止室温被拉得太低。
温度回路我喜欢做成串级PID:
主回路:房间温度传感器 → PID → 送风温度设定值
副回路:送风温度传感器 → PID → 冷/热水阀开度
串级的好处是抗扰动能力强。门外开关、太阳晒顶、设备散热这类扰动先反映在送风温度上,副回路马上就把它抵消掉,主回路的输出不会大幅波动。整定顺序是先整定副回路,再整定主回路;副回路P从1~3起步、I从60秒开始试,主回路P从1.5左右起步、I从180秒开始试。给到现场之后,再去根据温度趋势微调参数。
要注重PID在模式切换时的无扰切换问题。模式一变,阀门执行器和变频器输出如果瞬间跳变,压力、温度全部会冲一下。我的解决办法是:模式切换指令发出后,先把PID输出跟踪到当前阀位的开度值,再慢慢按斜坡调整到新模式的设定点。这样切换过程对环境的扰动小很多。
4.3 压差控制的前馈加反馈
压差控制看似简单——一个PID调排风机变频器,维持房间对走廊的设定压差——但实际动态过程很容易超调,尤其是模式切换期间。
我常用的做法是“前馈+反馈”组合。送风机频率变化时,立即按比例前馈到排风机的频率给定,比如送风频率每变1Hz,排风频率同步变0.8~0.9Hz,先把风量平衡稳住,再由压差PID做精细修正。这个前馈系数要现场试出来,靠理论计算往往不准。
开门瞬间压差掉零是正常现象,不能让它触发报警。我会给压差异常报警加15~30秒的延时,门关闭后压差PID快速积分回复。有些项目会在门上加磁开关信号,门开期间压差控制挂起,门关后再恢复,效果也很稳。
多房间联动时,相邻房间的模式切换会互相影响。比如灌装间从生产切消毒,排风量一改,走廊和其他房间的压差会被扰动。这时候上位机要能提前知道相邻房间的状态,把模式切换的时序列出来,避免同一时间多个房间同时做大动作。
4.4 消毒和自净模式的时序
消毒模式必须做成阶段时序,不能一个“消毒”状态到底。我把消毒模式内部又分成四个子阶段:
- 预调节:把房间温湿度转到消毒剂要求的范围,很多VHP工艺对相对湿度有要求,这个阶段要提前让空调把湿度拉低位。
- 消毒执行:空调切循环风,新风阀关、排风阀关、循环风阀开,风机低频运行,等待外部消毒设备完成消毒并计时。
- 置换洗气:消毒结束信号返回后,空调自动切到全新风模式,新风阀开、排风阀开、风机高速运行,用大量新鲜空气把残留消毒剂吹走,直到过氧化氢浓度传感器数值低于安全限值。
- 完成恢复:浓度达标后,发出“消毒完成”提示,系统自动进入自净模式或等待人工切换回生产模式。
这个时序里,最关键的是“消毒进行中”的状态显示和硬警示。洁净室门禁要联锁,在HMI上看到消毒模式运行中,任何人都不应该能通过普通权限解除门禁。万一消毒过程中风机故障,系统要自动启动应急排风逻辑,防止消毒剂浓度过高造成危险。
关于过氧化氢浓度传感器,建议用RS485通讯读取,但消毒期间PLC的CPU负载可能很高,通讯轮询周期要适当放慢,避免耽误其他逻辑。
4.5 安全联锁和防冻逻辑
最后说说那些“平时用不到,用不到就要命”的逻辑。
防冻保护在北方项目里是必须认真对待的。冬季如果停机组,表冷器里的水不流动,外界低温一冻,盘管可能直接冻裂,损失一台表冷器就是一辆车的价格。我的做法是:冬季停机模式下,循环泵保持运行,冷冻/热水阀保持一个最小防冻开度(比如20%),让水在盘管里循环;同时管路上加防冻开关,低于设定值直接触发紧急模式报警。如果说得更保守一点,还可以在系统停机时把表冷器水排空。具体选哪种方案,看项目所在地区的气候和厂房是否有人值守。
风机联锁也很重要:送风机没运行,电加热器和加湿器绝对不能允许启动,防止干烧和湿膜过热。排风机故障时如果送风机还在全速送风,房间正压会急剧升高,此时要么降送风机频率,要么直接联锁停机。绝大多数紧急模式告警,本质都是这些联动条件没兜住。
防火阀信号直接进硬线联锁,PLC里同步记录火警事件。火灾信号触发后,不只是停在紧急模式,还要触发HMI声光报警和上位机弹窗。恢复生产前,必须由工程师手动复位紧急状态,不允许远程一键恢复。
5. 调试验证和运维阶段踩过的坑
5.1 调试前和调试中的顺序
调试最忌讳上来就对PID参数,或者直接试模式切换。我的顺序是:
- 先把I/O点表逐点校对一遍,用信号发生器在端子处模拟4mA、12mA、20mA信号,确认PLC读数和实物仪表读数是同一个值。这一步能筛掉大部分接线错误。
- 单设备点动。每个风阀、水阀、变频器、风机分别手动操作,确认开向、关向、反馈位置都对。电动阀如果有机械限位,要确认行程匹配。
- 再回路联动。把变频器设成PLC自动控制,手操给定30Hz、40Hz、50Hz,看频率反馈、电流、风量三者对应关系。
- 然后才是PID整定和模式切换测试。整个周期大约要两周,如果一个项目压缩到三天就现场投用,那后面必然后患无穷。
调试期间最容易忽视的是冬季防冻和夏季除湿这对相反工况。如果项目交付在春末,你可能根本测不到冬季工况,这时候一定要和业主沟通,把防冻逻辑逐一演示:把防冻开关触点温度顶上去触发,看系统是不是进入保护。验证不到位,冬天就等着半夜水管爆裂。
5.2 PID整定和模式切换振动
模式切换时的风量突变是造成环境参数大幅波动的主要来源。有一次调试某无菌灌装间,从生产模式切值班模式,温度一下子从21℃跳到17℃,湿度更是冲过70%。原因分析下来,一是切换时风机频率斜坡速率设得太快,二是PID无扰跟踪没处理好,调节阀从PID自动输出瞬间跳到了初始化值。
解决办法是把频率斜坡改成阶梯式平滑过渡,同时把PID输出跟踪打开,让调节阀开度在切换前后保持连续。这个坑在很多项目里都会出现,建议在出厂前跑一遍从生产到值班、从值班到生产的往返切换,看趋势曲线来调整过渡参数。
还有一个常见问题是压差控制的过冲。从值班切回生产时,送风量一下提上去,如果排风前馈跟不上,房间正压会冲到30~40Pa再慢慢回落到10Pa,这一冲一落期间粒子计数器很可能报警。处理方式除了前面说的前馈系数,还可以给压差PID设定值设一个过渡斜坡,让它按0.5Pa/秒的速度逼近目标值,而不是一步到位。
5.3 验证阶段容易忽视的项目
验证不只是写文档,很多实际测试项目非常考验控制系统的细节能力。
- 自净测试:污染房间后开启自净模式,记录粒子浓度下降曲线,看恢复到设定级别的时间。这个测试对风机能力和气流组织的验收最有说服力。
- 门开关影响测试:有人进出洁净室时,压差波动幅度和恢复时间能不能接受。恢复太慢就说明压差回路动态不够。
- 消毒模式全流程演练:从预调节到消毒执行再到置换洗气,整个过程要确保浓度传感器联锁正确、门禁可靠锁止、时间记录完整。
- 停电与恢复测试:模拟总电断电后系统状态,重点看恢复供电时是不是所有风机同时启动——如果是,冲击电流可能直接把现场跳闸。
这台设备的所有关键数据,推荐设成循环记录存到上位机或者独立存储,保存周期至少按一个验证周期来设计,具体要求按项目的实际文件管理规程走。我的习惯是趋势数据24小时不覆盖,事件数据三年起存,反正现在硬盘便宜,千万别省这个钱。
5.4 运维阶段的实用建议
系统交付之后,真正决定口碑的是运维体验。
第一,HMI上要把五种模式的当前状态、切换原因、下一步预计动作全部显示出来。操作工不一定懂PLC,但看到“消毒模式-置换洗气剩余12分钟”这种信息,就清楚系统在干什么。
第二,模式切换记录要留痕迹,而且不能只有时间戳,要包括触发源。是按钮按的还是MES指令,是消防信号还是值班定时器,一一记录。后续偏差调查里,这条日志能省很多扯皮。
第三,值班模式不建议把湿度和防冻保护全关掉。有些厂为了省电,值班期间连加湿都停掉,冬天室内湿度掉到10%以下,静电打坏电子产品、彩钢板摩擦起静电、湿度恢复后又有微生物风险,这些隐性成本得不偿失。
第四,运维人员手里必须有一套人工应急流程。虽然PLC可靠性很高,但真遇到控制器死机、现场柜断电这种极端情况,运维至少要知道怎么手动启动送风机维持最小通风、怎么开关风阀保护车间压差,这套流程写在纸面上贴在控制柜里。
6. 这套方案做下来后的几点体会
医药洁净室空调的“五种模式”,说起来是编程问题,做起来其实是工艺问题和工程问题。模式之间的切换仲裁、安全联锁、无扰过渡、异常恢复,这些边缘逻辑才决定一套系统到底好不好用。很多项目验收时“静态指标”全过,一到动态切换就原形毕露,问题不在算法,而在细节。
我自己踩过最大的坑就是轻视了模式切换对压差和温湿度的扰动。后来养成一个习惯,任何模式切换都要做往返测试,看趋势曲线,确认参数在规定时间内恢复并稳定。上位机旁边的墙上我建议贴一张模式状态图,让每个操作员都能一眼看出当前系统在干什么、应该怎么切换、什么情况下不能切换。这个图比厚厚一本操作手册有用得多。
如果你正在做或者准备做这套系统,我希望这篇分享能让你少走一点弯路。最后再啰嗦一句:给传感器做一次认真的一次性校准,给模式切换做一百次反复测试,比在办公室里推演一百遍公式都值。