拓冰建站拓冰建站
首页 / 资讯中心 / 正文

西门子S7-1500制药洁净空调PLC控制系统详解:温湿度与压差控制实战

前阵子一个做自控集成的朋友问我说他们新接了一个药厂净化车间改造项目设计院给的图纸上写着“洁净走廊对非洁净区保持≥10Pa正压相邻不同级别洁净室压差≥5Pa”温度要求20~24℃相对湿度45%~60%问我在西门子S7-1500上怎么把这些压差梯度、温湿度控制稳定。我翻出前两年做的这套制药厂洁净空调PLC程序从硬件搭配到控制逻辑从FAT调试到验证阶段踩过的坑一次性讲清楚。这是一套典型的西门子S7-1500ET200SP分布式IO方案程序里包含了送排风机联锁、温湿度PID调节、过滤网压差监控、房间压差梯度控制、手自动切换和报警管理等完整功能。准备接药厂洁净空调项目的电气工程师、刚入门PLC想了解实际项目结构的初学者都能从这篇案例里找到可以直接借鉴的东西。1. 制药厂洁净空调到底在控什么1.1 这套项目的工艺需求分解很多做普通厂房暖通空调的工程师第一次接触制药厂洁净空调都会懵。表面看都是“风机盘管空调箱风阀水阀”但真正做起来完全不是一回事。普通空调控的是“舒不舒服”洁净空调控的是“合不合规”。我经手的这个项目是一个固体制剂车间洁净级别按D级设计部分称量室按C级。整个HVAC系统由三台组合式空调机组构成一台负责生产区洁净走廊和称量室一台负责制粒干燥区一台负责洗瓶间和器具间。每台空调箱都是标准的“新风段、初效过滤段、表冷段、加热段、加湿段、风机段、中效过滤段、送风段”结构个别机组还有转轮除湿段或者电加热段。先把控制需求列清楚后面写程序才不会漏温度控制主要控回风温度也就是从车间回到空调箱的那股空气温度设计范围20~24℃。实际执行时夏季设定23℃冬季设定22℃。湿度控制回风相对湿度45%~60%。因为固体制剂对湿度比较敏感湿度太高容易吸潮结块太低会产生静电粉尘。夏季主要靠表冷器除湿冬季靠加湿罐加湿。房间压差核心是梯度控制洁净走廊对非洁净区≥10Pa称量室对洁净走廊≥5Pa洗瓶间对洁净走廊≥5Pa。换气次数D级洁净区换气次数一般按15~20次/h设计具体以设计院的计算书为准。我做程序的时候把这个折算成送风机频率的下限和上限防止误操作把换气次数压到标准以下。过滤器压差初效、中效、高效各等级过滤段前后都有压差变送器压差超过设定值要报警提示更换不能直接停机。联锁逻辑送风机没开排风机不能单独启动风机运行信号丢了水阀、加湿阀要回到关闭位火警信号来了所有风机停机、所有风阀关到火灾模式。1.2 我拿到工艺条件后的控制方案草图拿到这些需求以后我先画了一个控制逻辑草图这个习惯一直保留到现在。草图不需要很精细但要把每个被控对象对应的执行机构、传感器、控制策略画成一张表尤其是确认是单回路还是串级、是调节阀还是开关阀。以一台典型的组合式空调机组为例我列出的点位关系是这样的被控参数传感器位置执行机构控制策略送风温度送风管冷水阀、热水阀、电加热串级内环快速跟随回风温度回风管冷水阀、热水阀、电加热主控对象PID输出到内环回风湿度回风管加湿阀、冷水阀分程控制冬季加湿夏季除湿房间压差房间与走廊排风机变频、排风阀排风跟随送风微调压差送风量送风管送风机变频手动设定上下限保护过滤网压差各过滤段无仅报警越限报警不参与调节这个表做完IO点数也就基本出来了。单台空调箱大概有30个DI、24个DO、12个AI、6个AO再加上各房间压差、温湿度传感器整个车间的点位大概在400点左右。也是在这个基础上我确定了用ET200SP分布式IO放在空调机房再用Profinet连到中心控制室CPU的方案。2. S7-1500加ET200SP的硬件架构是一次性选齐的2.1 为什么没有用S7-1200或者更老的S7-300我在选型的时候没有犹豫太久直接选了S7-1500 CPU 1511-1PN配上几组ET200SP远程IO。之所以不选S7-1200不是说它不能用而是这个项目有几点要求掐住了它的短板。第一个是程序量和数据量。洁净空调的控制逻辑看着简单但把所有联锁、报警、手自动、模式切换、历史数据归档加进去程序块和DB很容易就超过S7-1200的承载舒适区。尤其是GMP验证要求报警记录、操作记录、数据完整性调试过程中往往还要反复加功能。S7-1200的存储空间限制了这种后期增量S7-1500则宽裕得多。第二个是通讯能力。药厂项目通常要把PLC数据送到楼宇中控、EMS或者SCADA系统S7-1500支持PROFINET、Modbus TCP、OPC UA开箱即用。我这次对接的是一个上位机数据采集系统直接用了S7-1500的OPC UA服务器功能省了买通讯网关的费用也少了一层故障点。第三个是PID控制的工程效率。TIA Portal里对S7-1500提供了PID_Compact工艺对象参数自整定功能做得比较实用现场调回路比在S7-300里手动填PID参数快得多。对洁净空调这种多回路、慢过程、需要反复微调的场景这个优点非常实在。至于ET200SP是考虑到车间和空调机房距离较远如果全部把线拉到中央控制柜那铜缆成本和多芯电缆敷设工程量会很难看。ET200SP的模块宽度也比ET200M小很多一个空调机房的控制柜能省出将近三分之一的空间。每个从站我配了一个IM155-6 PN接口模块后面挂数字量输入输出模块、模拟量输入输出模块型号选择上尽量用订货号一致的模块方便备件管理。2.2 ET200SP站搭建和IO地址预分配的几个细节ET200SP安装调试有几个容易踩的坑这里专门说一下。第一个是底座颜色。ET200SP的端子底座有深色和浅色之分浅色底座只能插电子模块深色底座是用来插接口模块和电源模块的。我第一次用的时候没注意把AI模块往深色底座上插结果模块卡不紧通讯时好时坏。后来养成的习惯是每一组底座安装完立刻贴标签写明是“AI/AO/DI/DO/PWR/IM”再往上插模块。第二个是组态顺序必须和物理位置一致。在TIA Portal里组态ET200SP从站模块的槽位顺序必须跟实际安装顺序完全一致否则CPU会报设备故障。我一般先在纸上排好模块清单从IM155-6开始接着是电源模块然后是DI模块、DO模块、AI模块、AO模块最后留一两个备用底座和总线终端。尤其是总线终端盖板一定不能省否则整个从站通讯中断。第三个是供电问题。ET200SP传感器供电需要额外接24V电源如果接线不规范很容易出现模拟量信号跳变或者24V对地短路。我在每个从站的电源端子前面都加了一个小型断路器同时把24V的“M”统一接到等电位排上这样调试时如果出现烧模块或者信号漂移排查起来会快很多。IO地址我没有让TIA Portal自动乱分而是在硬件组态里把每个信号都改成带含义的符号名。比如“AHU1_SA_TEMP”表示一号空调箱送风温度“AHU1_RH_RET”表示一号空调箱回风湿度。这一步看起来麻烦但后面写PLC程序和上位机组态直接引用符号名出问题时用HMI能直接看懂省了不知道多少沟通成本。2.3 Profinet网络和诊断的设计网络结构我按星型加菊花链混合做的CPU的PN口接到中心控制柜的工业交换机上然后交换机分别连接到空调机房里的ET200SP、变频器、上位机电脑。三台空调箱的变频器也走Profinet用西门子G120变频器做总线控制频率给定和反馈读取。这里有一个我后来才补上的重要设计每个ET200SP从站作为Profinet IO设备在TIA Portal的设备网络视图里一定要勾选“以IRT模式运行”吗实际上对暖通空调这种实时性要求不算极端的应用用IRT反而没必要RT模式完全够。我用的就是RT通讯周期默认4ms实际运行很稳定。诊断方面我没有专门做太复杂的程序只用了两个实用功能一是把每个IO设备的状态字读出来在HMI上显示“在线/离线/故障”二是利用S7-1500的PQI数据块把模块通道级诊断信息放到一个DB里方便上位机读取。真正出故障时设备离线会在WinCC里弹报警并且把故障从站名称显示出来维修人员拿着万用表和听诊器直接去现场就行。3. PLC程序架构用FB还是用FC数据怎么进门3.1 程序段的划分与扫描周期设计硬件组态完了接下来就是程序结构。我的习惯是主程序OB1里只放FC调用不写任何具体逻辑。每个功能区域对应一个FC类似“FC100_AHU1_Control”、“FC200_AHU2_Control”、“FC300_CleanRoom_Pressure”、“FC400_Alarm_Management”。这样做的好处有两个第一别人看程序的时候从OB1就能看出整个系统的骨架第二调试时哪块功能有问题直接跳到对应FC不需要在整个程序里到处翻。对于洁净空调这种点位多、联锁多的项目结构清晰比代码技巧重要得多。扫描周期的设计上我用了三个OBOB1主程序执行所有逻辑优先级最低。OB30循环中断设置500ms处理所有PID调节回路。OB40硬件中断处理急停、火警等硬联锁信号。有人问为什么PID不放OB1里。原因是PLC的扫描周期会随着程序量、通讯任务波动如果PID运算时间基准不稳定温度控制会出现莫名其妙的振荡。放到固定循环中断里PID的采样时间严格等于500ms参数整定才有意义。温湿度回路时间常数很大500ms的采样周期完全够用还能减轻CPU负载。3.2 模拟量处理与量程转换的标准化洁净空调程序里模拟量处理是基础中的基础。我在全局库里面写了一个标准的模拟量转换FC“FC_Scale_AI”输入是原始整数、量程上下限输出是工程值和坏质量标志。所有AI模块读进来的值统一先经过这个FC再进控制逻辑。这个FC内部我做了一个输入信号质量判断如果原始值小于模块量程下沿或者高于上沿直接把工程值输出为0.0同时置位一个“信号坏”标志。为什么要这么做因为药厂验证的时候经常有人把传感器拔掉测试报警如果程序里不处理尖值PID会把阀门开到100%等传感器再接回去房间温湿度早就失控了。量程转换的公式很简单[ 工程值 (原始整数 - 0) \times \frac{量程上限 - 量程下限}{27648 - 0} 量程下限 ]S7-1500默认模拟量模块的满量程是0~27648跟S7-300的-27648~27648不一样这一点最容易踩坑。我在模拟量模块组态里全部把测量范围选成“4~20mA0~27648”这样所有信号的数学处理都统一不需要考虑负值方向。数字量输入也做了标准化处理每组DI都加了一个RC滤波加软件延时。我选用的是PLC程序里的定时器做20ms消抖因为现场触点抖动非常常见。比如风机运行反馈触点在接触器吸合的瞬间会连续跳动几百毫秒如果直接进联锁逻辑很容易误触发启动失败报警。用TON延时20ms再进逻辑效果立竿见影。3.3 手自动切换的底层逻辑手自动切换大概是所有自控项目里操作工和维修工争议最多的地方。我在每个控制回路前面都加了一个“手自动切换”的总开关这个开关不是只在HMI上软切换而是还有一个柜门上的硬钥匙开关。维修模式下钥匙切到“手动”HMI上所有自动调节输出被强制屏蔽操作工只能手动给阀位百分比切回“自动”程序自动追踪当前阀位值作为PID初始输出实现无扰切换。无扰切换是很多初学者容易忽略的。PID输出从手动模式的实际阀位开始而不是从0开始否则切换瞬间阀门会猛跳一下风量、水量突变温湿度跟着震荡。我是在FB_PID封装里做了这样一个逻辑手动模式下不断把PID的输出保持为当前实际阀值并让PID积分项初始化到这个值切换自动时输出就是刚才的手动阀位过程平稳得像没切过一样。4. 洁净空调的核心控制逻辑4.1 温湿度串级与分程控制洁净空调的温湿度控制我用的是“回风温湿度主控、送风温度内环、分程输出到水阀/电加热/加湿阀”的三层结构。这里把最重要的思路拆开讲。温度控制的主PID输入是回风温度实际值和设定值输出是一个0~100%的“冷热需求”值。这个需求值再经过一个分程函数映射到冷水阀、热水阀和电加热的输出0%~50%对应热水阀开度从100%降到0%50%~100%对应冷水阀开度从0%升到100%。也就是说当回风温度低于设定1℃时主PID输出45%分程后热水阀还有20%左右的开度当回风温度高于设定1℃时主PID输出55%冷水阀开始打开。中间50%是死区水阀全关。这种分程方式可以避免冷水阀和热水阀同时打开相互抵消调试时非常直观。湿度控制的逻辑稍微复杂一点。夏季湿度高主要靠表冷器除湿。表冷器本身在降温的同时会凝露除湿所以我没有单独为除湿加控制阀而是做了一个“湿度超前修正”当回风湿度超过60%时在湿度PID基础上叠加一个送风温度设定值修正量把送风温度从默认的13℃往下降到10℃左右加强表冷除湿效果。冬季湿度低湿度PID直接控制加湿阀开度加湿量由电加湿罐产生。加湿还有一个安全联锁只有当送风机运行、且送风温度高于10℃时才允许加湿阀动作。否则加湿蒸汽在低温风管里冷凝成水滴吹进风管会滋生细菌这在药厂是绝对不允许的。4.2 房间压差梯度控制的实现方式房间压差是这个项目里验证时检查最严的项目。我先说结论压差控制归根结底是控制送风量和排风量的差值而不是去实时调节房间里的压差传感器。每台空调机组负责的区域我按房间分成几个压差控制区。以生产区为例走廊是基准称量室对走廊必须保持≥5Pa洗瓶间对走廊也必须≥5Pa。实际实现时我把每个房间的排风支管上加装了电动调节阀房间内设置压差变送器压差PID输出直接控制这个排风阀。这里有一个典型问题开门瞬间压差会突然跌到接近0PID如果响应太快会把排风阀猛地关小等门关上以后房间压差又飙高来回震荡。我的处理方式是给压差PID的输出变化速率做限幅单位时间内阀位变化不超过10%同时对压差反馈值做了5秒的移动平均。开门扰动来了控制输出缓慢响应门关上以后慢慢恢复不会产生陷阱式的振荡。送排风机的变频控制我没有直接交给压差PID而是设定了一个送风机频率基础值这个值根据换气次数算出来比如某个区换气次数是18次/h对应的送风机频率在45%左右。运行过程中压差PID只负责微调各房间排风阀送风量基本恒定。这样整体风量稳定各房间压差之间也不会出现相互耦合。4.3 PID参数整定记录与分析这个项目里我把所有PID回路的参数做了记录这里分享一套典型值供读者参考。需要说明的是参数不是抄来的而是通过现场阶跃响应法整定的。温度主回路回风温度→冷热需求参数数值备注比例增益P3.2无单位积分时间TI120s过程滞后大积分不能太弱微分时间TD0关掉微分避免噪声放大采样时间500msOB30中断湿度回路回风湿度→加湿阀/除湿修正参数数值备注比例增益P2.5积分时间TI200s加湿设备响应慢积分时间要长微分时间TD0采样时间500ms压差回路房间压差→排风阀参数数值备注比例增益P1.8积分时间TI60s微分时间TD0输出速率限制10%/s防开门扰动振荡整定方法用的是经典的临界比例度法加手动微调。先把PID的积分和微分全部关掉只留比例增益从小到大逐步增加观察回风温度的阶跃响应曲线直到系统出现等幅振荡记下临界增益和振荡周期。然后按Ziegler-Nichols公式初算P和TI再根据实际曲线微调。实际调下来我发现洁净空调这类大滞后对象纯比例加积分就够了微分几乎用不上。因为回风管到温湿度传感器的距离很长反馈信号本身就带噪声加了微分反而会把噪声放大造成水阀频繁小幅度振荡。5. 从FAT到OQ现场调试遇到的典型问题5.1 调试顺序先单机后联机现场调试我强烈建议按“设备级→回路级→系统级”的顺序推进不要一上来就做整套联调。这个项目当时工期很紧但我还是坚持一条线一条线地调事实证明这个顺序能省下大量返工时间。设备级调试是在FAT阶段完成的。我在工厂里就把每台ET200SP从站通电挨个通道测试DI/DO/AI/AO用短接和信号发生器模拟现场信号确认PLC组态、接线、符号名三者一致。这一步看起来费时间却能把绝大多数接线错误消灭在发货前。到了现场SAT阶段我开始带负载调试。先单独点动每台风机确认旋转方向、电流正常然后手动控制每个电动阀从0%开到100%确认执行器行程没有卡涩再把所有模拟量通道和现场变送器对点用标准仪器比对显示值和实际值。所有单机调完以后才允许做温湿度串级和压差联锁的联调。联调的时候我会提前和工艺工程师约好确认房间没有人员在作业避免突然的风量变化影响洁净区环境。5.2 传感器安装位置引发的振荡问题这个项目里最典型的一个故障是在制粒干燥区。设备调试时回风温度无论怎么整定PID都会出现大约80秒一个周期的振荡振幅上下波动4℃左右。温度波动这么大产品干燥工艺根本没法定车间工艺员急得直跺脚。一开始我怀疑是传感器问题换了两个PT100还是这样。然后怀疑水阀拆开检查发现是好的。后来我爬到空调箱顶上仔细顺着传感器线看才发现回风温度传感器安装位置紧贴在加热段后面距离不到2米。加热段投用的时候局部温度场非常不均匀传感器测到的根本不是混合均匀后的回风温度而是被加热器烤出来的“热点温度”。这属于典型的传感器位置不当造成的控制失真。解决方案是把回风温度传感器移到风机段后、混合段前的位置让传感器前面有一段充分混合的管路。顺便把传感器探头的插入深度调整到了风管中心线附近避免管壁附近温度分层干扰。改完之后同样的PID参数温度曲线立刻变得平滑振荡完全消失。后来我把这条经验写进了项目内部规范风管温湿度传感器的安装位置必须远离加热器、表冷器和阀门至少5倍管径以上测点最好在气流充分混合处。5.3 通讯上碰到的问题整个系统联调阶段我遇到过一次比较麻烦的通讯故障PLC中央控制柜和空调机房那组ET200SP从站偶尔会离线频率大概一天一两次每一次大概持续十几秒后自动恢复。这种“幽灵离线”最难查因为等你到现场看诊断区时故障早就消失了。我花费了一个下午查看诊断缓冲区发现每次离线前都有一个“IO设备存在但组态不一致”的警告。于是怀疑是不是有人在现场动过模块。到空调机房一查果然发现其中一个AI模块前面加装了一个信号隔离器是施工队为了处理一个信号干扰问题自己加上去的但并没有通知我做硬件组态变更。实际原因是新增隔离器之后这个通道的电气特性和其他通道不一致导致ET200SP模块自检时判断参数错误间歇性触发掉站。解决方案是我在TIA Portal里把该AI通道的“诊断中断”功能重新配置并让施工队把所有加装变更都走变更记录流程。这件事也让我对“现场任何改动都必须和程序组态同步”有了更深的认识。另外还有一个经验要分享Profinet网线一定不要和动力电缆走同一个线槽尤其不能平行走线超过3米。我们调试时发生过变频器启动瞬间IO设备瞬间离线的情况最后排查就是网线和变频器输出电缆在桥架里绑在了一起。重新分开走线后问题再没出现过。6. 这类项目做完后我沉淀下来的经验清单6.1 我后来再做同类项目的固定做法做完这套洁净空调项目之后我在自己的技术手册里加了几条规矩后来每次做药厂HVAC都会遵守。第一IO点表是所有工作的起点。点表必须由自控、暖通、工艺三方会签确认后再开始组态中间任何变更走书面变更单。原因很简单点表错了后面所有硬件、程序、上位机全部要跟着返工。第二所有PID回路必做手动输出和自动追踪。哪怕是压差这种看起来简单的回路也必须给操作工留手动介入的余地。药厂验证阶段经常要求模拟故障如果不能手动开关阀门验证就很难做。第三报警和联锁分级处理不能一刀切。报警等级示例处理方式提示过滤器压差高HMI显示提示不做自动动作警告回风温度偏离设定值5℃以上声光报警保持当前输出联锁送风机故障停加湿、关水阀、保排风紧急火警所有风机停风阀切火灾模式第四HMI画面上的设定值、实际值、阀门开度必须放在同一屏幕上配趋势曲线。这看起来理所当然但很多项目现场操作员抱怨不好用就是因为画面设计时只放了数值没有趋势。有一次车间温度异常工艺员靠趋势曲线一眼看出是电加热回滞省了一大段排查时间。6.2 值得保存给初学者的几点提示如果你正准备入行或刚接触这类项目有几点我特别想对你说。第一不要被“制药厂”三个字吓到。洁净空调的PLC程序本质上还是围绕“温度、湿度、压差、风量、联锁”这五个词展开的控制逻辑本身不算难难的是对整个工艺的理解和前面那些容易被忽略的细节。第二一定要学会看PID图和空调箱剖面图。很多电控工程师拿到图纸只关心IO点和设备表其实只有看懂风管怎么走、传感器在哪个位置、水阀控制哪个盘管才能写出稳得住的程序。传感器位置这种看起来是暖通专业的事往往直接影响PLC控制效果。第三PID参数不是一劳永逸的。换季的时候、过滤器用到中后期的时候、车间生产负荷变化的时候回路特性都会变。我给业主留下了一个“PID参数在线调整”权限页专门给有经验的自控工程师开放告诉他们冬天和夏天可能需要微调积分时间这是正常现象。第四程序注释写得清楚不只为了别人更是为了三个月后的自己。我见过太多没有注释的PLC程序当时写的时候思路再清楚等调试到后半程或者做竣工验收资料的时候一样得对着变量表痛苦回忆。现在我在每段程序块开头都写一段“本块功能、关联设备、修改记录、作者日期”这个习惯让售后维护变得轻松很多。最后再分享一个小技巧项目收尾时把每台机组最终确认过的PID参数、量程上下限、传感器安装位置记在竣工图上同时导出一份带符号注释的IO点表存到交付资料包。三年后改造时这些资料的价值不亚于程序本身。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门