1. 恒温恒湿空调箱方案的整体思路与架构设计
做恒温恒湿控制,说实话,市面上能选的方案很多,但能落地、好维护、成本又可控的组合,我这几年做下来,最顺手的还是“西门子S7-200 SMART PLC + MCGS昆仑通态触摸屏”这一套。特别是中小型项目,比如制药车间的洁净空调、电子车间的恒温恒湿间、档案库房和精密实验室,这套搭配几乎成了标配。
先说明一下这套系统到底在干什么。恒温恒湿空调箱,本质上就是一台“能精确控制送风温度和湿度的空气处理机组”。它通过对回风或送风状态的实时检测,经过PLC内部的PID运算,去控制电加热器、电极加湿器、冷水二通阀(或者直接膨胀阀)、送风机这些执行机构,最终把房间里的温度和湿度维持在一个工艺允许的波动范围内。
我遇到过很多刚入门的同行,拿到这个项目第一反应就是“温度一个PID,湿度一个PID,两边一写就完事了”。真这么简单,就不会有那么多调了几个星期还稳不住的现场了。温度控制和湿度控制是强耦合的,比如夏天表冷器一开,温度降下来的同时湿度也被除掉了;冬天一加热,相对湿度立马往下掉。所以你写程序之前,脑子里必须先把“除湿和制冷共用表冷器”“加湿和加热可能同时动作”这种物理逻辑理清楚,再去写代码。
这套系统我一般分成三层看:
- 设备层:送风机、回风机、电加热器、加湿器、冷水阀、新风阀、回风阀、初效/中效过滤器压差开关,还有温湿度传感器。
- 控制层:西门子S7-200 SMART PLC,负责逻辑控制、PID运算、联锁保护、手自动切换,是整个系统的“大脑”。
- 监控层:MCGS触摸屏,负责参数设定、状态监控、历史曲线、报警记录、手动操作。
为什么用S7-200 SMART而不是S7-1200?说白了还是成本和易用性的平衡。S7-200 SMART自带以太网口,本体集成模拟量输入,中小型空调箱的IO点数一般也就三四十个,200 SMART完全够用,价格比1200便宜不少,编程软件STEP 7-MicroWIN SMART也免费,对中小型项目来说,性价比确实高。
MCGS昆仑通态触摸屏在这个组合里也很有优势。它对S7-200 SMART的驱动支持非常成熟,通过以太网直接走S7协议(也就是大家常说的“西门子TCP/IP”驱动),不需要额外配置网关或者OPC服务器,组态软件McgsPro或者嵌入版的组态环境都是中文界面,上手快,以后客户自己换画面也好维护。
2. 硬件选型与IO分配实操
2.1 控制柜与PLC选型
接下来说硬件。恒温恒湿空调箱的控制柜,我一般建议做成户外型或室内型独立电控柜,柜内带主断路器、开关电源、接触器、热继电器、中间继电器、保险端子这些。PLC我常用的配置是S7-200 SMART CPU SR30,为什么用继电器输出的SR而不用晶体管输出的ST,原因很简单:空调箱的执行器比如接触器线圈、加湿器控制信号,绝大多数是AC220V或者DC24V的开关量,继电器输出可以直接带小负载,隔离也省了。
这里有个细节,SR30本体自带16路数字量输入和12路数字量输出,如果项目里风机多、阀门多、报警点多,12路输出是不够的,我一般会加一块EM DR16扩展模块(8DI+8DO),或者直接用SR40(24DI+16DO)。选型原则就一句话:IO点数预留15%~20%的余量,别卡着刚刚好,后期业主加个压差报警、加个防火阀反馈,你才发现没点用了,那就很被动。
模拟量这一块,S7-200 SMART本体的模拟量输入通道在CPU SR30上是没有的,所以要加模拟量扩展模块。温度湿度变送器输出4~20mA的,我一般配EM AE04(4路模拟量输入)或者是SB AE01信号板(1路模拟量输入)。如果手头项目模拟量比较多,比如还要接压差变送器、流量计,那就直接上EM AE08,8路输入一步到位。
2.2 传感器与执行器选型
恒温恒湿空调箱最关键的两个测量值就是温度和湿度。温度传感器我用得最普遍的是PT100铂电阻,配合温度变送器输出4~20mA,量程一般设-20~80℃,精度0.5%FS就够。湿度传感器用高分子湿敏电容式的温湿度变送器,输出4~20mA,量程0~100%RH。这里要提醒一句,湿度传感器一定要买带不锈钢烧结防护罩的那种,装在空调箱回风道上或者风管里,不然风速一吹,数值会跳得厉害。
执行器选型也很关键:
- 电加热器:常见的是不锈钢电加热管,三相380V,功率根据风量和温升计算,一般通过接触器分级控制,或者用可控硅调功模块做连续调节。用接触器分级控温便宜,但温度波动大;用可控硅连续调节,温度和湿度都比较稳定,建议对控制精度要求高的场合用可控硅调功。
- 加湿器:常用电极式加湿器,通过控制加湿电流或者接触器的启停来调节加湿量。电极加湿器响应快,但水质影响电极寿命,维护量稍大。
- 冷水阀:一般是二通电动调节阀,配0~10V或者4~20mA的控制信号,阀体按照表冷器的冷水量选型,我这里一般选等百分比流量特性的阀门,温控线性度会好很多。
- 风机:送风机和回风机,功率大一点的用星三角启动或者变频器控制,小功率的直接接触器启停。新风阀和回风阀一般用开关型风阀执行器,或者0~10V调节型执行器,看工艺要求。
2.3 IO分配规划表
我做一个项目,第一件事永远是先出IO分配表,再动笔写程序。不然后期改地址改到你怀疑人生。下面是我最近一个项目的IO分配表,大家可以参考:
| 地址 | 信号名称 | 类型 | 说明 |
|---|---|---|---|
| I0.0 | 送风机运行反馈 | DI | 接触器辅助触点 |
| I0.1 | 送风机故障 | DI | 热继电器常闭 |
| I0.2 | 加湿器运行反馈 | DI | 加湿器触点 |
| I0.3 | 初效过滤器压差报警 | DI | 压差开关常闭 |
| I0.4 | 中效过滤器压差报警 | DI | 压差开关常闭 |
| I0.5 | 防火阀状态 | DI | 常闭触点,断开报警 |
| I0.6 | 手自动切换 | DI | 柜门/触摸屏联锁 |
| I0.7 | 急停 | DI | 常闭 |
| AIW0 | 回风温度 | AI | 4~20mA,-20~80℃ |
| AIW2 | 回风湿度 | AI | 4~20mA,0~100%RH |
| AIW4 | 送风温度 | AI | 4~20mA,-20~80℃ |
| Q0.0 | 送风机启动 | DO | 接触器控制 |
| Q0.1 | 回风机启动 | DO | 接触器控制 |
| Q0.2 | 电加热1段 | DO | 接触器控制 |
| Q0.3 | 电加热2段 | DO | 接触器控制 |
| Q0.4 | 加湿器启动 | DO | 接触器控制 |
| AQW0 | 表冷器冷水阀开度 | AO | 4~20mA,0~100% |
这里面的AIW地址,S7-200 SMART是默认从AIW0开始顺排的,和模块插槽位置没关系,但用了软件组态以后地址就是固定的,不要自己瞎改。
3. PLC程序实现:PID调节与控制逻辑
3.1 模拟量标定与数值处理
S7-200 SMART读模拟量,4~20mA对应的数字量是0~27648(这是SMART和1200/1500的区别,1200是0~27648,200 SMART也是一样),注意不是0~32000,很多从老200转过来的同行会在这踩坑。0~20mA才是0~32000。所以如果变送器输出4~20mA,你在程序里做量程转换的时候:
温度工程量 = (AIW原始值 / 27648.0) × (量程上限 - 量程下限) + 量程下限
举个例子:温度变送器量程-20~80℃,AIW读到13824,那温度就是:
(13824 / 27648) × 100 - 20 = 30℃
湿度变送器量程0~100%RH,读到13824,湿度就是50%RH。
这里我建议在PLC里把工程量转换封装成两个子程序,一个提温度,一个提湿度,里面用浮点运算,别用整数运算,不然精度根本不够,PID算出来也像抽风一样跳。
3.2 PID向导配置
S7-200 SMART的编程软件STEP 7-MicroWIN SMART自带PID向导,用起来比老的Micro/WIN顺手很多,但也需要认真理解里面的几个参数。
我一般这样配:
- PID回路:温度回路(Loop0)和湿度回路(Loop1)两个独立的PID。
- 设定值:触摸屏上的SV(温度设定值,如23.0℃),通过变量传入。
- 过程值PV:经过标定后的实际温度(浮点数)。
- 输出值Output:PID输出指令输出的是一个0~1之间的实数(归一化值),再通过量程转换映射到0~100或者0~27648,决定模拟量输出给冷水阀的信号或可控硅调功器的信号。
向导生成PID子程序以后,要记得在主程序里用SM0.0(常ON)调用PIDx_CTRL,而且在调用前必须初始化模拟量输入值,因为向导生成的回路表Deadband、Gain这些参数都是默认的,要在初始化段里重新赋值。
PID的回路表地址我一般是VB1000往后分配,用向导自带的符号表去引用,不要自己随便定义地址,不然跟向导冲突了,在线监控的时候数据错乱会让人崩溃。
3.3 温度湿度控制策略:双回路解耦
这是整个程序的核心,也是我调试现场最有心得的部分。恒温恒湿空调箱的控制策略,我总结一句话:温度为主回路,湿度为辅回路,制冷除湿共用表冷器,加热加湿根据季节自动切换。
具体逻辑是这样的:
- 当回风温度高于设定值(夏天工况):表冷器冷水阀PID自动调节开度,阀门开大,送风温度下降,同时表冷器翅片温度低,空气中的水蒸气在翅片表面凝结成冷凝水排走,也就是“降温除湿”。这时候如果湿度还不够低,说明表冷器水温不够低或者风量太大,单靠温度PID联动就行。
- 当回风温度低于设定值(冬天工况):电加热器PID自动调节输出,把空气加热到设定温度。这时候湿度传感器测量的相对湿度会明显下降,湿度回路检测到低于设定值,就启动加湿器,往风管里喷蒸汽,把湿度补回来。
- 当温度接近设定而湿度偏高:这时候主要是除湿需求,但单纯开表冷器会把温度也拉低,所以程序里要有一个“再加热”的辅助策略,也就是表冷器先除湿,温度低了以后电加热再补温,保证送风温度不往下掉。这个逻辑在过渡季节特别重要,不然你湿度拉下来了,温度也跌到18℃以下,业主肯定来找你麻烦。
用S7-200 SMART实现这个逻辑,我的做法是:
在PID向导生成两个回路(温度回路Loop0和湿度回路Loop1)的基础上,再加一段“工况判断”的前置逻辑。比如:
- 回风温度与设定温度的偏差大于+1℃,认为处于制冷工况,温度PID输出直接给冷水阀;
- 回风温度与设定温度的偏差小于-1℃,认为处于加热工况,温度PID输出映射到电加热调功器。
这里有个关键点,S7-200 SMART的PID是单输出回路,它不管你的执行机构是加热还是制冷,它只知道PV偏高了输出就变大。所以你必须自己在程序里做“正作用/反作用”的判断和切换。我的写法是:
温度PID的模式选择变量(Temp_Mode),0表示制冷模式,1表示加热模式。在制冷模式,PID输出(0~100)直接作为冷水阀开度给定;在加热模式,把“100 - PID输出”作为电加热给定,同时把PID设定值取反或者把PV取反,保证PID方向正确。这个思路听起来绕,但是理解了PID方向就很好办。
湿度回路也类似,但执行器就两个:加湿器(加湿方向)和表冷器(除湿方向)。我一般在程序里加了一个“湿度正反作用”切换位:当PV湿度高于设定值2%RH以上,就认为需要除湿,湿度PID的输出叠加到冷水阀开度上(和温度PID的输出做MAX取大);当PV湿度低于设定值,就认为需要加湿,湿度PID输出直接控制加湿器启停或比例调节。
这个“MAX取大”策略是我调试了很多项目总结出来的一个土办法,虽然没有理论书上说的那么严谨,但实际效果非常稳。因为它保证了在夏季工况,温度PID要开的冷水阀和湿度PID要开的冷水阀,只要任何一个需求大,阀就开到那个值,温度和湿度两个回路不会互相打架。
3.4 联锁保护与手自动逻辑
恒温恒湿空调程序不能只写PID,联锁保护做得不好,设备烧起来那是真出大事。
我程序里必带的保护:
- 送风机启动信号发出后,延迟10秒检测送风机运行反馈,如果没反馈,说明风机没起来,立即停掉电加热和加湿器,防止干烧。
- 防火阀(或排烟防火阀)反馈断开,立即停止所有加热加湿设备,只允许风机继续运行(或者按消防要求联动停机)。
- 初效/中效过滤器压差报警:只报警不跳机,提醒清洗更换滤网。
- 电加热器过温保护:电加热管内部带温度开关,串联在接触器控制回路里,这个不用进PLC,硬件上就一路断掉。
- 冬季防冻保护:新风温度低于5℃时,新风阀开度自动调小或者停止新风,防止表冷器冻裂,这个用AIW读取室外温度,程序里判断。
手自动逻辑我一般这样设计。触摸屏上有“本地/远程”切换开关,打到“本地”模式,操作员可以在触摸屏上手动启停风机、加热、加湿,这个模式主要给调试和检修用;打到“远程”模式,PLC自动按照PID调节运行,触摸屏只显示参数和设定值。手动模式一定要做“互锁连锁”,比如手动开启加热器时,如果风机没开,PLC应该拒绝执行,并在报警栏提示“风机未启动,禁止加热”,防止调试人员误操作。
4. MCGS触摸屏组态开发:从通讯到画面
4.1 MCGS与S7-200 SMART的通讯设置
MCGS昆仑通态触摸屏和S7-200 SMART通讯,我选的是以太网方式,简单可靠,一个交换机就搞定。在MCGS组态环境里,设备窗口新建一个“西门子S7-200 SMART”驱动,IP地址填PLC的IP(比如192.168.0.10),本地IP填触摸屏自己的IP(比如192.168.0.11),注意两个IP必须在一个网段,而且不能冲突。
这里特别提醒一下,S7-200 SMART的以太网口默认IP是192.168.0.1,PLC侧有几个坑:
- PLC的程序里如果没有启用“允许来自远程客户端的PUT/GET访问”,MCGS是连不上的。要在STEP 7-MicroWIN SMART的“系统块”里把“允许”勾上,然后下载进去。很多新手连不上,80%都是这个设置没开。
- PLC和触摸屏之间的通讯不要用交换机连到办公网络,尤其是和公司内部网络混在一起,IP冲突或者广播风暴会搞得你现场调试怀疑人生。我都是用一个独立的工业交换机,最多再加一台笔记本调试口。
- MCGS驱动里寄存器地址的填写格式有些讲究。S7-200 SMART的变量,比如VB100,在MCGS里要写成“VB100”,MW0写“MW0”,QW0写“QW0”;如果是位变量,比如Q0.0,写成“Q0.0”。这里寄存器类型和地址一定要选对,AW(模拟量字)、DW(双字)、实数RW,错了读出来的数就是乱的。
4.2 画面设计与变量规划
MCGS的画面设计,我习惯按“主监控画面—参数设定—报警记录—历史曲线—手动操作”五个页面来做。
主监控画面放一台空调箱的示意图,把风机、表冷器、加热器、加湿器、风阀这些用图元画出来,旁边配温度湿度实测值、设备运行指示(红绿状态)、PID输出百分比。这样操作工一眼就能看到设备整体状态,不用去翻密密麻麻的表格。
参数设定画面是业主最常用的,在这个页面里放温度设定值SV、湿度设定值SV、PID参数(Kp、Ti、Td)、PID输出上限下限、温度报警上下限、湿度报警上下限。所有参数通过MCGS“输入框”控件关联到PLC的V存储区变量。注意这里PID参数如果允许操作工随便改,风险很大,我一般会加权限,把PID参数放在“工程师密码”权限组下面,操作员只能改温度和湿度设定值。
历史曲线画面,MCGS本身有“历史曲线”构件,设置好数据源和存盘周期,就能画温湿度的实时曲线和历史曲线。这个对调试验收特别有用,业主看到一条平稳的直线,比你说一百句“系统很稳定”都管用。
手动操作画面是调试神器。我做了一个表格,把每个设备的“手动启动/停止”按钮、运行状态反馈、故障复位按钮全部放在一页。调试的时候,我就在触摸屏上手动点开风机,看反馈,再开加热,测试联锁是否生效,省去了带笔记本到现场反复插网线的麻烦。
4.3 报警与数据记录
MCGS报警功能我用得也比较多。在实时数据库里定义温度高低报警、湿度高低报警、设备故障报警这些“开关型”变量,组态报警显示构件,可以实现报警时间、报警值、恢复时间的记录和查询。
这里有个实用技巧:报警触发尽量在PLC里做,不要完全依赖触摸屏。因为PLC的报警是独立运行的,即使触摸屏死机或者通讯断开,PLC照样能保护设备,但触摸屏上触发报警就不行。所以我的做法是:PLC里做好所有联锁和报警判断,输出一个“报警汇总”位变量,MCGS只负责显示这个汇总位和详细报警值。
数据记录方面,MCGS能把温湿度历史数据存到U盘或者通过FTP上传到上位机。做过GMP验证项目的朋友应该知道,这个追溯功能有多重要。审计时要你调出三个月前某一天的温湿度曲线,如果MCGS里没做数据记录,那真是欲哭无泪。
5. 现场调试与常见问题排查
5.1 模拟量读数不对
这个问题我在现场遇到最多。温度显示100℃、湿度显示0%,或者数值乱跳。排查步骤我建议按顺序来:
- 先看传感器接线是不是接对了。4~20mA两线制变送器,正极接模块的AI+,负极接AI-,AI-和电源负极有没有共地,很多变送器要求24V负和信号负共地,接法错了信号就是乱的。
- 再用万用表量电流。在线串一个万用表,看实际电流值是多少。比如室温25℃,变送器量程-20~80℃,电流应该是8mA左右((25+20)/100×16+4=11.2mA,哎这个我算一下,25℃对应(25-(-20))/100 = 0.45,0.45×16+4=11.2mA)。如果电流对,那就是PLC侧标定有问题。
- 查看PLC程序里模拟量地址是不是选对了。S7-200 SMART扩展模块的模拟量地址和CPU组态顺序有关,在软件“系统块”里能看到实际地址分配,别和以前老200的固定地址搞混。
- 检查程序里是否做了滤波。S7-200 SMART的模拟量滤波器在系统块里可以设置模拟量滤波强度,工业现场干扰大的时候,把滤波打开能明显解决数值乱跳,但注意滤波会给PID带延迟,温度回路这种大惯性对象没问题。
5.2 PID参数整定
PID参数整定,我从来不用什么复杂的自整定公式。恒温恒湿空调箱属于大惯性、纯滞后对象,温度回路的整定我用的就是“先比例,后积分,微分基本不碰”的方法。
温度PID实操步骤:
- 把所有积分时间和微分时间先设成0,纯比例。
- P值从5%开始(Kp=1.0左右),给一个设定值扰动,观察温度波动。
- 如果温度长时间到不了设定值,有静差,逐步增大P,直到出现持续的等幅振荡,记录此时P值,然后把P往回退一半。
- 加上积分时间,I从300秒开始往下降,每降一次观察温度是否产生超调,如果超调大了,I回调一点。
- 微分时间D一般设0,空调箱这种对象用D容易引入噪声,实在要用也就5~10秒,别贪。
湿度PID的整定比温度麻烦,因为加湿器的输出是“启停式”的。如果是可连续调节的加湿器(比如可控硅调节的电极加湿器),PID整定方法和温度类似;如果是启停式加湿器,我用的是“宜缓不宜急”的脉宽调节策略,把PID输出转换成0~100,再映射到加湿器运行占空比,比如输出30%,就是运行3秒停7秒。这样湿度波动明显减小,也减少加湿器频繁启停对电极寿命的影响。
这里要特别提醒,湿度PID的采样周期别设太短。加湿器喷出的蒸汽到回风湿度传感器感受到,中间隔着风管,滞后可能有一两分钟。采样周期太短,PID会一直积分过头,湿度过冲得厉害。我一般把湿度PID手动采样周期设在5~10秒。S7-200 SMART向导里PID是可以设置采样时间的,别用默认的1秒。
5.3 通讯掉线或数据不刷新
MCGS触摸屏和PLC通讯掉线,这个故障现象很典型:屏幕左下方一个红叉,或者数值变成“####”。排查顺序:
- 先ping一下,用笔记本接到和触摸屏同一个交换机,ping PLC的IP,能通说明物理链路没问题,那就查MCGS驱动设置。
- 检查PLC侧“允许远程PUT/GET访问”是不是勾上了,没勾直接导致握手失败。
- 检查MCGS里PLC的设备地址是不是填成了“0”或者默认值。S7-200 SMART驱动,站号默认是0,你可以不用改,但如果你PLC侧把MPI地址改了,两边对不上也是连不上。
- 看PLC程序里是不是有地方把通讯用到的变量块(比如V区地址)当成普通数据区乱写了。S7-200 SMART和MCGS通讯,默认读写V区,如果你程序里对这些V区地址做了大量频繁的运算或覆盖,可能会影响通讯刷新速度,但这种一般只是刷新慢,不会掉线。
5.4 温度正常但湿度一直偏高
这个故障十有八九出在“风量”或者“冷源”上。我遇到过好几次,业主说除湿除不下来,我过去一看,表冷器阀门已经开到100%,但手摸表冷器进出水管,温差很小,一问才知道冷冻水供水温度有15℃,这哪是冷冻水,这都快成冷却水了。除湿是需要低水温的,一般7~12℃冷冻水,表冷器翅片温度低于空气露点,水汽才能凝结下来。冷源水温过高,除湿能力就是不行,这不是程序能解决的,要跟暖通专业沟通。
还有一种是新风比的问题。新风比太大,室外湿负荷一直往房间里面带,除湿速度跟不上。这种我一般建议把新风阀自动调节功能加上,或者限制新风阀最小开度,程序里根据室内湿度动态调节新风阀开度,湿度高时减小新风量,湿度低时恢复正常,对节能也有好处。
6. 实操心得与注意事项
这套“西门子S7-200 SMART + MCGS昆仑通态”的恒温恒湿空调箱系统,我从第一个项目做到现在,大概也交付了二十来套了。最深的体会就是:控制方案本身并不难,难的是对整个空调系统工艺的理解、对现场细节的把控、以及对调试过程的耐心。
几个实用心得分享给大家:
- 模拟量标定的浮点运算一定要用浮点,不要省那个扫描周期。整数运算的误差在PID里会被放大,尤其是湿度这种非线性对象。
- 调试的时候,笔记本上用STEP 7-MicroWIN SMART在线监控,同时把MCGS的画面开着,两个窗口对着看,PID的输出、PV曲线的变化一目了然,比你看那些干巴巴的数据快得多。
- 给业主做培训的时候,把触摸屏的密码分级讲清楚,操作员只给一级权限,工程师才给二级权限,不然哪天电工师傅手痒把PID参数改了,第二天温湿度飘成什么样,你都不知道怎么回事。
- 现场一定要留好IO分配表和图纸。很多项目交付完半年,业主打电话说“设备不启动了”、“湿度报警了”,你翻一下图纸和IO分配表,远程就能猜个八九不离十,省得再跑一趟。
最后分享一个小技巧:MCCS触摸屏调试助手,在线模拟模式特别好用。你可以在组态电脑上先用“模拟运行”功能把工程跑起来,直接在电脑屏幕上看着画面调试PLC程序,不用一遍遍往触摸屏里下载程序。等确认逻辑没问题了,最后再下载到触摸屏,能省不少时间,尤其是改个文字、挪个按钮这种小修改,模拟运行一刷新就看到了,比我早期做项目时“每改一次下载一次”的效率高了一倍不止。
做项目永远会碰到新问题,但只要把“工艺理解—逻辑设计—通讯调试—PID整定”这条主线走通,不管用什么品牌的PLC和触摸屏,思路都是一样的。希望大家看完这篇,能少走点我当年走过的弯路。