这几年陆陆续续做过几个医药洁净车间的空调自控项目,每次都有新坑,也每次都把200smart PLC的潜力再挖一遍。上个月刚完成一个中药提取洁净车间的空调箱(AHU)改造,项目不大,控制点不到40个,但吃药周期、温湿度精度、压差梯度全部卡得严,程序调下来也踩了不少有意思的坑。这次就把这套200smart在空调箱程序中的应用经验整理出来,涵盖硬件选型、工艺逻辑、程序实现和调试避坑,给同行参考,也给自己留个复盘记录。
这套内容适合正在做或准备做洁净室自控的电气工程师、自控工程师,也适合暖通专业想了解控制逻辑的同事。项目本身是典型的恒温恒湿带正压控制的组合式空调箱,用一台S7-200 SMART SR40加一个模拟量扩展模块搞定,下位机是200smart,上位机用触摸屏做人机交互,变频器和传感器走模拟量信号。200smart在这个场景里的优势非常明显:性价比高、模拟量处理靠谱、PID指令完整、Modbus RTU通信简单,一个中小型空调箱项目完全够用,不用上到S7-1200甚至S7-1500。
1. 项目整体设计与硬件选型思路
1.1 医药洁净室空调箱到底要控什么
很多刚入行的朋友以为空调箱控制就是“温度低了加热、温度高了制冷”,真正做过洁净室项目就知道完全不是这么回事。医药洁净室的空调箱(AHU)本质上是给洁净区提供达标空气的中心设备,核心任务有三个:保证温湿度在工艺规定范围内,保证洁净度达到对应的洁净等级,保证房间之间的压差梯度正确。
以我这次做的中药提取洁净车间为例,洁净级别按 D 级(十万级)要求,主要房间的温度控制范围是18到26摄氏度,相对湿度控制在45%到60%RH,房间相对走廊的正压差要求大于10Pa,走廊相对室外正压差大于5Pa。这种要求下,空调箱的空气处理流程就比较典型:新风经过初效过滤后与回风混合,经过表冷段降温除湿,再经过加热段升温调温,然后经过加湿段调节湿度,由送风机送入中效过滤段,最终通过风管送到各个洁净房间。
程序上要控制的执行器包括:新风阀、回风阀、排风阀(开关量控制风阀开关),冷冻水电动调节阀(模拟量控制开度,用来降温和除湿),热水电动调节阀(模拟量控制开度,用来加热调温),电极加湿器(模拟量控制加湿量),送风机变频器(模拟量控制频率),排风机变频器(模拟量控制频率),再加上初效滤网压差报警、中效滤网压差报警、风机运行状态、手自动状态、故障信号这些开关量输入输出。
1.2 为什么选200smart而不是别的PLC
这个项目我选了S7-200 SMART SR40(40点数字量PLC)加一个EM AE08(8通道模拟量输入)和一个EM AQ04(4通道模拟量输出)扩展模块。选型逻辑很简单:现场点位不多不少,模拟量通道大约需要6个AI和3个AO,数字量约15个DI和10个DO,SR40本身有24DI/16DO,扩展一个8AI和4AO绰绰有余。
对比选项其实考虑过1200和国产PLC。1200肯定更强,但价格翻倍,且这类项目甲方一般要求“满足GMP验证、稳定、调试周期短”,1200的优势在这个规模下发挥不出来。国产PLC部分品牌价格确实低,但PID指令库和模拟量处理细节需要花时间磨合,在工期紧急的情况下我宁可选择自己熟悉且现场验证过的方案。200smart在这类中小型空调箱项目里刚好卡在甜点位置:价格适中,指令库完整,MicroWIN SMART编程软件免费,调试方便,而且后期甲方设备科的人也很容易上手维护。
还有个实际考虑是通信。这个项目触摸屏选的是昆仑通态TPC系列,200smart可以通过RS485口走Modbus RTU协议和触摸屏通信,不需要额外的通信模块。将来如果要做上位机监控或者接到楼宇自控系统,200smart也支持Modbus TCP,通过以太网口可以直接对接,扩展性足够。
1.3 传感器和执行器的选型要点
控制逻辑再漂亮,传感器不准、执行器响应慢,一切都白搭。温度和湿度传感器我选的是壁挂式温湿度变送器,输出4到20mA,温度量程0到50摄氏度,湿度量程0到100%RH,装在回风管道上。为什么要装在回风而不是送风?因为回风温湿度更接近洁净房间内的实际环境状态,而且空调箱内部送风段的温湿度因为刚经过表冷器或加热器,局部不均匀,测量代表性反而差。
压差变送器选了量程0到100Pa的微差压变送器,4到20mA输出,分别检测洁净室与走廊的压差、初效过滤器和中效过滤器前后的压差。需要提醒一句:洁净室压差变送器的取压管路一定要用硅胶管并保持通畅,管路内如果有冷凝水或者堵塞,压差值会完全失真,这是调试时经常忽略的问题。
风阀执行器选的是弹簧复位执行器,开关量控制,断电自动回到关闭位置,这个对洁净室很重要——停机时新风阀、排风阀必须自动关严,防止污染空气倒灌。电动调节阀选的是等百分比流量特性的二通阀,配4到20mA输入信号,用来控制冷冻水和热水流量。等百分比特性在小开度时调节精度更好,适合PID控制。
2. 核心工艺控制逻辑深度拆解
2.1 温湿度控制的“解耦”思路
空调箱程序里最核心的逻辑是温湿度控制,因为温度和湿度在空气处理过程中互相影响,直接两个PID回路独立工作会产生严重的耦合震荡。
先看空气处理过程的物理特性:当回风温度偏高时,PID输出开大冷冻水阀,表冷器降温的同时也在除湿,会导致湿度下降;当湿度偏高时,PID输出加大冷冻水阀除湿,又会导致温度下降。如果温度和湿度两个回路各自独立调整冷冻水阀,就会出现“你开大我关小,我开大你关小”的打架局面,阀门来回震荡,温湿度永远稳不住。
实际项目中我采用的处理策略是“湿度优先,温度补偿”:
- 表冷段(冷冻水阀)默认由温度PID控制,用于降温;但当湿度超过设定值上限时,湿度PID把冷冻水阀开度强制拉大,以除湿为主,即使这会导致温度过低,后续再通过加热段补偿。
- 加热段(热水阀)由温度PID控制,但它的设定值不是固定的,而是根据冷冻水阀的开度做动态补偿——冷冻水阀开得越大,说明除湿需求越大,加热设定值相应提高,把降温除湿带来的温度降低补回来。
这种解耦逻辑在程序里的实现方式就是让湿度PID的输出作为冷冻水阀PID输出的一个叠加修正项,同时让冷冻水阀的实际开度参与热水阀设定值计算。简单说,程序不是把两个PID回路孤立对待,而是让它们通过中间变量互相联系。
2.2 压差控制的三种方式对比
洁净室压差控制是医药项目的关键,直接关系药品生产环境和人员安全。一般做法有三种:定风量控制、变频控制、余风量控制。
定风量控制最简单——送风和排风的风阀开度固定,通过手动调节平衡阀来建立压差。这种方式只适合风量不变化的场合,一旦过滤器阻力增加或者风阀位置漂移,压差就会慢慢跑偏,而且无法在线调节。这个项目甲方特意要求动态控制,所以没有用这种方式。
变频控制是目前最常见的方式,做法是用压差变送器检测房间与走廊的实际压差值,和设定值比较,PID输出调节排风机变频器频率,改变排风量,从而维持房间正压。送风机频率可以恒定在某个工作点,也可以根据送风管静压自动微调。这个项目中我采用的就是变频控制,把排风机作为压差调节的执行机构,响应速度快,效果也稳定。
余风量控制是更高级的方式,需要分别测量送风量和排风量,保持送风量和排风量的差值恒定,从而稳定压差。理论上精度最高,但需要风速传感器和精确的风量计算,成本明显更高,200smart做这个也没有问题,但传感器精度和风管直管段条件往往限制实际效果。对这个项目来说,压差PID变频控制精度已经能稳定在正负2Pa以内,完全满足要求。
2.3 风机启停顺控和保护逻辑
空调箱程序里开机、停机顺序不能随意,必须遵循工艺安全要求。开机顺序是:先开送风机,再开排风机,然后开冷冻水阀和热水阀,最后开加湿器;停机顺序正好反过来,先关加湿器,再关水阀,然后停排风机,最后停送风机。为什么送风机必须最后停?因为停送风机后,洁净房间就失去了正压保护,如果排风机还在运行,外部空气会倒灌进入洁净区,这是严重的安全事故。
保护逻辑里有一个关键点:送风机运行反馈必须纳入程序判断。启动送风机后,程序要在规定时间(我一般设10秒)内检测到风机运行反馈信号,如果检测不到,就判断风机启动失败,自动停止后续所有设备动作并触发报警。这个反馈信号来自变频器的运行状态继电器输出,而不是接触器辅助触点,确保反映的是真正变频器驱动电机运行的状态。
防冻保护在北方项目尤为重要。表冷器位于空调箱最前端,冬季如果新风阀没关严或者停机时阀体没关到位,盘管有冻裂风险。程序里处理方式是:在冬季模式(通过触摸屏设定)下,如果检测到表冷器出风温度低于5摄氏度,程序自动开启冷冻水阀到30%开度,让管内水流动起来,防止冻结。同时报警提示运维人员检查。
3. 程序组态与关键模块实现
3.1 模拟量采集与工程量换算的标准化写法
200smart读取模拟量通道的原始值范围是0到27648(对应0到20mA),4到20mA信号对应的原始值范围是5530到27648。很多新手直接把AIW原始值当成工程量用,这是大忌。程序里必须做标准化转换。
我习惯写一个统一的模拟量处理子程序,把所有4到20mA信号的工程量换算集中处理。核心公式是:
工程量 = (原始值 - 5530) * (量程上限 - 量程下限) / (27648 - 5530) + 量程下限以温度变送器为例,量程0到50摄氏度,当AIW原始值为16400时:
工程量 = (16400 - 5530) * (50 - 0) / (27648 - 5530) + 0 = 10870 * 50 / 22118 = 24.57摄氏度在STL里可以这样写标准化程序块(以温度AIW0为例):
// 读取模拟量原始值 LDW AIW0 ITD DTR // 减去零点偏移5530(对应4mA) MOVR VD100, AC0 -DR 5530.0 // 量程换算:除以量程跨度22118,再乘以工程量程50 MOVR AC0, VD100 /R 22118.0 *R 50.0 // 如果信号断线或小于零点,输出0 MOVR VD100, VD200 // VD200为实际温度工程量值当然,实际工程中这种计算用梯形图也能实现,STL的好处是写在一屏之内,移植方便。所有AI通道都走统一模式,后续维护替换传感器时只需要改量程常量和通道号,不用动整体逻辑。
3.2 200smart的PID回路组态与参数整定
200smart的PID功能有两种使用方式:一是用MicroWIN SMART软件里的PID向导生成指令块,二是在程序中直接调用PID指令并手动填写参数表。向导方式对小项目更友好,它会自动分配V存储区并生成页面,方便得很。
PID向导配置时需要设定回路给定值范围、过程变量范围、输出类型和大小。温度回路给定值范围设0.0到50.0摄氏度,过程变量即温度工程量值也设0到50;输出类型选模拟量,输出范围是0到27648(对应0到20mA),这样可以直接驱动后面的模拟量输出模块。PID参数初始值可以设增益(Kc)1.5到2.5,积分时间(Ti)120到300秒,微分时间(Td)0。空调箱温控回路属于大惯性、小滞后的系统,微分基本不用,用PI即可。
调试时PID参数整定可以说是整个项目最磨人的环节。我调试温湿度回路的实际经验是:先纯比例试探,增益从1.0开始,观察曲线振荡情况,如果振荡周期长且振幅衰减慢,说明增益偏大,逐步降低增益;如果响应太慢、偏差长时间存在,说明增益偏小。通过几次试凑找到临界增益后再投入积分,积分时间从300秒开始逐渐减小,观察消除余差的速度,直到出现缓慢等幅振荡后再把积分时间回调20%到30%。
有一个必须重点提醒的坑:200smart的PID输出是0到27648的数值,但电动调节阀的4到20mA信号对应是5530到27648范围。如果直接把PID输出值送给AQW(模拟量输出),阀门在PID输出小于5530时根本没有动作,这是“死区”,会导致温湿度出现莫名其妙的偏差。正确做法是对PID输出做偏置处理:如果PID输出小于5530,就输出5530;如果大于27648,则限制在27648。也就是说把0到5530这段映射为实际输出的5530(阀门最小开度信号)。我在程序中加了一个输出限幅子程序,专门处理这个问题,调完之后的控制效果明显改善。
3.3 压差PID的整定和普通温度PID不太一样
压差控制回路的PID整定和温度回路有很大区别,核心原因是执行器(排风机变频器)和检测点(房间压差)之间的滞后时间很短,但压差对风量变化非常敏感,容易产生高频抖动。
压差PID的增益要设得很小,一般0.3到0.8之间;积分时间也要比温度回路短,一般30到90秒;微分仍然不用。如果增益设大了,最典型的症状是排风机频率以极快的速度上下波动,房间压差像心电图上的一样来回跳动,不但稳不住,变频器和风机也会加速疲劳。
另一个细节是压差PID的采样周期不能太短,一般500毫秒左右即可。压差信号本身有微小波动,采样周期太短反而让PID把噪音当成真实偏差来调整,造成不必要的修正动作。可以在程序中加一个简单的滤波处理,比如连续采样4次取平均值参与PID计算,效果会比所谓的高性能滤波器更合适这个场景,而且不增加额外库依赖。
3.4 Modbus RTU通信与触摸屏联调
触摸屏和200smart的通信,项目里走的是RS485口的Modbus RTU协议。在200smart程序中需要初始化一个Modbus通信端口,设置从站地址(本项目设为1)、波特率9600、数据格式8位数据位无校验1位停止位,这些都要和触摸屏侧完全一致。右侧栏有个常见坑:使用Modbus RTU从站功能时,200smart的端口0默认是PPI协议,必须在程序中使用MBUS_INIT指令初始化才能切换为Modbus协议,否则触摸屏永远连不上。
Modbus地址映射也要提前规划好。程序中的V存储区地址和Modbus地址存在对应关系:VW0对应Modbus地址40001,VW2对应40002,以此类推。但注意,实际使用时触摸屏组态软件里填的地址往往需要偏移一位,有些触摸屏软件显示的寄存器地址是从40001开始,但实际对应VW0需要地址填40001的十进制格式,有的软件自动加减1,最好先在现场用一小块地址测试通再大规模组态,不然整个画面做完发现变量全部错位,工作量就大了。
触摸屏画面我做了四页:主页面(温湿度压差实时值和主要设备状态)、参数设置页(温湿度设定值、压差设定值、手自动选择)、报警页面(故障报警和历史报警记录)、PID参数页(各回路参数在线调整)。其中PID参数页非常重要,因为现场调试时经常要在触摸屏上快速调整PID参数而不用开电脑连PLC,效率高很多。
4. 调试过程与典型问题排查
4.1 温湿度失控的四个真实案例
先说一个温度下不来的问题。系统调试时发现回风温度一直比设定值高3到4摄氏度,冷冻水阀已经开到最大还是没有效果。排查过程先看冷冻水阀的实际开度反馈,触摸屏显示100%,但是跑到空调箱现场看阀杆,发现阀门只开了一半。原因是对等百分比阀门的接线有误,模拟量输出的正负端子接反了,导致阀门实际开度和信号方向不一致,程序认为开到了100%,实际只开了零点对应附近的近半位置。这种情况如果是模拟量正反作用设置错误也会出现类似情况,处理方法是先确认AO通道的接线极性,然后在PID设置里确认输出形式,不能盲目调PID参数。
第二个是湿度长期偏高。检查发现除湿用的冷冻水阀PID输出已经较大,但表冷器出风温度还在15摄氏度以上。用温度计实测表冷器进水温度,发现冷冻水供水温度偏高,超过12摄氏度,这是冷冻水系统侧的问题,不是PLC程序能解决的。空调箱把情况反馈给暖通专业,协调冷冻机房降低供水温度后,湿度控制才恢复正常。这个案例说明一个问题:PLC程序只能执行控制策略,工艺侧的硬件条件必须满足基本设计要求,控制回路才能起作用。
第三个是温度周期性波动,周期大约15到20分钟。这是PID参数不匹配的典型症状,增益偏大导致输出过冲,系统出现持续振荡。从趋势曲线可以清晰看到温度在设定值上下往复。处理办法是按照前面讲的纯比例试凑法重新整定PID参数,把增益从2.5降到1.2,积分时间从120秒提高到240秒,波动就消失了。
第四个问题最有意思:白天生产时段温湿度控制精度达标,但夜间处于值班模式时温度波动特别大。排查后发现问题出在夜间回风量大幅减少,而新风比例不变,室外低温空气经过表冷器和加热器后温度波动被放大。后来在程序里增加了“日夜模式”切换,夜间降低送风机频率的同时调整新风阀开度到最小位置,减少了室外新风引入量,温湿度稳定性明显改善。
4.2 压差波动老稳不住,问题往往不在程序
压差异常波动是最让人头疼的问题,因为看起来像是控制没调好,实际上各种外部因素叠加。最常见的因素是洁净室门频繁开启,门一开,压差迅速掉到接近零,关门后PID需要重新把压差拉回来,如果PID参数调得偏激进,就会矫枉过正,出现超调。
还有一次压差怎么都调不出来,排风机频率已经升到50Hz满频运行,房间压差还是不到5Pa。仔细检查发现是排风管道上的电动密闭阀没打开。因为排风机在运行,但阀门叶片卡死在关闭位置,排风根本排不出去,虽然风机在耗电但风量没建立起来。把风阀执行器换成更大的扭矩型号并重新调整限位开关位置后,压差在几分钟内就稳定到了设定值。
另外提醒一个压差信号的细节:压差变送器的高压端和低压端不能接反。正压差控制时,高压端接洁净室内,低压端接走廊。接反的话,PLC读到的压差值是负的,PID输出方向完全相反,排风机频率一直往零方向降,更不可能建立正压。
4.3 模拟量干扰问题一例
调试过程中温度信号偶尔跳变,最大能跳到超出正常值10摄氏度以上,持续时间一两秒又恢复正常。这个现象非常隐蔽,从趋势上看就是一根根毛刺。我排查了变送器本身、分线端子、PLC模拟量输入模块,都没有问题。最后发现干扰源来自变频器的输出电缆——送风机变频器和温度变送器的信号电缆在同一电缆桥架内并行走线,距离不超过20厘米,变频器输出侧的高次谐波通过空间耦合干扰了4到20mA的模拟量信号。
解决办法是:把模拟量信号电缆全部更换为屏蔽双绞线,并将屏蔽层在PLC侧单端接地;同时要求施工方将变频器输出动力电缆和模拟量信号电缆分开至少30厘米敷设,各自走独立的线槽。整改后再没有出现过信号跳变。这是项目中很典型也很容易被忽略的问题,尤其是现场为了节省桥架空间把强弱电信号绑扎在一起,后续调试一定出事。
4.4 常见问题速查表
为了方便现场运维复查,我整理了一张高频问题速查表,基本覆盖了这类项目最常见的故障点:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 温湿度长期下不来 | 冷冻水供水温度偏高 | 检查冷冻机房供水温度 |
| 温度周期性波动 | PID增益偏大或积分时间偏短 | 查看趋势曲线,重新整定参数 |
| 湿度一直高但温度正常 | 表冷器除湿能力不足 | 检查冷冻水阀实际开度和表冷器进风温度 |
| 压差稳不住且排风机频繁波动 | PID增益偏大 | 减小增益,增大积分时间 |
| 压差始终偏低 | 排风阀未打开或送风量不足 | 现场检查风阀开度状态 |
| 模拟量信号毛刺跳变 | 变频干扰或屏蔽接地不良 | 检查信号电缆敷设和屏蔽层接地 |
| 触摸屏连不上PLC | 通信参数不一致或端口协议未切换 | 检查Modbus初始化指令和参数 |
| 停机后房间为负压 | 排风机没有先于送风机停止 | 检查程序停机顺序逻辑 |
5. 运行维护经验与几点个人体会
项目交付后运行了将近两个月,甲方的反馈整体满意,期间出现过一次因为初效过滤器阻力过大导致的送风量下降问题,是因为没有及时更换初效滤网。程序里的滤网压差报警功能在触摸屏和现场声光报警器上都动作了,运维人员有足够时间响应。这也印证了为什么洁净室空调箱程序里必须做滤网压差监测——如果不做,过滤器阻力慢慢增大,最开始只是风量略降,等到风量明显不足时,洁净区的压差、换气次数全都超标,生产只能停线,损失就大了。
一个想重点强调的维护细节:传感器必须定期校验。医药洁净室涉及生产环境合规,温湿度传感器、压差变送器的准确性非常关键。仪表投入使用半年后,漂移问题会逐渐显现,最好是每半年或一年做一次标准校准,温湿度传感器可以用标准温湿度发生器校验,压差变送器可以用微压压力泵校验。程序再准,传感器偏了,一切都是空中楼阁。
另外就是程序的备份和文档管理。这次项目我在最终交付时做了三件事:第一,把程序注释从“简化版”补全到可以直接交付给甲方设备科的水平,每个关键逻辑块都写了工艺说明;第二,把所有PID参数、设定值范围、报警阈值整理成一张参数清单表,附在竣工资料里,后续如果甲方人员调整参数也有依据可查;第三,把整个程序导出了一份带注释版本的PDF存档,就算将来电脑重装或者软件版本升级打不开原程序,至少还保留一份完整的逻辑文档可以照着重建。
最后分享一个实用小技巧:200smart的PID向导会自动生成一个PID指令块,很多项目直接调用向导块就能满足需求,但空调箱这类多回路、带输出偏置和限制的场景,实际中我更建议用200smart“PID 2.0”指令库或者直接手写PID算法。原因就是向导块输出逻辑相对固定,灵活性不够。手写PID虽然初始工作量略大,但能完全按照项目需求定制输出限幅、抗积分饱和、手自动切换这些功能,调试起来反而顺畅。我在配电柜里调试时习惯把手动输出值直接写到触摸屏上,这样不用每次开电脑连PLC改程序,现场反复试阀门开度时特别方便。
空调箱自控这块,硬件门槛不高,真正拉开差距的是控制逻辑的合理性和细节处理。这次用200smart把一套完整的恒温恒湿正压控制系统落地,从选型、编程到调试全程走下来,最大的收获是:PLC只是一个工具,真正值钱的是对工艺的理解和对细节的执着,这些经验往往都是靠一个一个项目踩坑踩出来的。