ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

制药洁净空调PLC控制:S7-1500选型、编程与调试实战解析

制药洁净空调PLC控制:S7-1500选型、编程与调试实战解析 前两年做制药净化项目的时候一个做设备的朋友问我洁净空调这种系统用S7-1200或者200 SMART就够了吧为什么非得上S7-1500我当时没直接回答等整个项目调试完跟他说了一句如果你以后还想安稳睡觉就老实选1500。这个项目就是制药厂洁净空调PLC程序应用我用西门子S7-1500做了一套完整的净化空调控制系统涵盖了送风机组、排风机组、房间压差梯度、温湿度调节和值班模式切换。这篇文章把我从选型、组态、编程到调试的所有思路和踩过的坑完整拆开讲清楚。1. 制药洁净空调的工艺需求与S7-1500为什么适合1.1 洁净空调管的是什么GMP对控制系统提出的硬指标制药车间的洁净空调和普通办公楼暖通完全是两个世界。普通空调你只需要让人舒服温度别太离谱就行。但制药车间的空调控制对象直接关系到药品质量和GMP认证能不能过。一个固体制剂车间按GMP要求会划分A、B、C、D四个洁净级别每个级别对空气悬浮粒子浓度、沉降菌、浮游菌都有明确限值。比如D级洁净区换气次数要达到15次/小时以上C级要达到25次/小时以上而A级层流区域需要单向流换气次数甚至数百次。这些换气次数靠什么实现全靠送风机把经过初效、中效、高效三级过滤的空气送进房间然后通过回风、排风的配合让房间形成正压或负压梯度。压差梯度是另一个关键指标。GMP要求相邻不同洁净级别的房间压差要大于10Pa同级别不同功能间的压差一般要大于5Pa。控制压差靠什么不是靠某个阀门单独实现而是靠送风量、回风量、排风量三者的动态平衡。这套逻辑如果用普通PLC的开关量思维去写大概率造出来的是一堆又笨又闹心的设备。还有一个非常重要的点制药车间空调运行的可靠性要求极高。生产期间送风机突然停了房间正压消失整个批次的药品都可能报废。我当初选择S7-1500最重要的原因之一就是它的可靠性、诊断能力和通讯能力对制药这种长期连续运行的场景来说不是够用就行而是必须稳。1.2 S7-1500选型的实际考量从CPU到通讯先说结论我这个项目用的是CPU 1515-2 PN。选择理由有三层。第一层是性能和存储。S7-1500全系标配大容量工作存储区我的CPU 1515-2 PN有1MB程序存储和3MB数据存储。你可能会觉得奇怪一个空调程序能有多大实际上当你要做完整的温湿度PID调节、压差控制算法、报警管理、数据归档、与SCADA系统通讯时代码量和DB数据量会迅速膨胀。特别是模拟量处理我做了一个10年的暖通项目光浮点运算和工程值转换的DB结构就远比想象中占空间。S7-1200的存储区在程序复杂后会非常紧张S7-1500则留足了余量。第二层是通讯能力。CPU 1515-2 PN自带两个PROFINET口可以灵活组网。现场变频器送风机、排风机变频器全部走PROFINET分布式IO站走PROFINETHMI屏走PN上位机SCADA也走PN。如果是S7-1200或者200 SMART虽然也能做PROFINET但在带站数量、通讯稳定性和数据吞吐量上和1500有明显差距。特别是现场的Modbus TCP设备、TCP/IP自定义协议设备如果也要接入S7-1500的开放式通讯指令集TCON、TSEND、TRCV用起来顺手很多。第三层是诊断和安全性。S7-1500的集成诊断功能极其强大CPU能直接检测出模块断线、通道短路、电源故障等硬件级问题并在TIA博途里精准显示故障通道号。制药厂的电气维修工通常不是PLC编程高手你给他一段I0.1短路这样的中文诊断信息他能很快处理你要是让他拿万用表一个个通道查那就费劲了。这里补充一个选型小建议CPU选型时注意看固件版本和TIA博途版本的匹配关系。比如CPU 1515-2 PN如果固件是V2.8对应的TIA博途版本至少V16。我身边有朋友在项目中途才发现TIA版本不支持新固件只能重装软件或降级固件非常被动。2. 硬件组态与点位规划一张IO表里的设计哲学2.1 AIO、DIO分配与模拟量信号走向硬件组态是整个系统的骨架。我当时在现场第一件事不是写程序而是把全厂净化空调的IO清单做出来反复核对了两遍。这个项目的硬件配置大概是这样的设备对象信号类型数量模块选型温湿度传感器送风/回风/房间4-20mA模拟量输入12AI 8xU/I/RTD 2/4 线压差传感器过滤器/房间4-20mA模拟量输入10AI 8xU/I/RTD 2/4 线风阀执行器新风/回风/排风阀0-10V模拟量输出6AQ 4xU/I ST变频器送风机/排风机PROFINET通讯2无需硬接线模拟量送风机/排风机运行状态、故障数字量输入4DI 16x24VDC HF消防联动、防冻开关、风机手自动状态数字量输入8DI 16x24VDC HF电加热器、加湿器、杀菌灯控制数字量输出8DQ 16x24VDC/0.5A HF看到这张表我估计有经验的人已经发现了几个关键点。第一模拟量信号我全部选用了4-20mA电流信号而不是0-10V电压信号。原因很简单电流信号在传输距离较长时不受线路压降影响抗干扰能力也更强。洁净空调的传感器分散在风管、吊顶、洁净室内走线距离经常超过30米电压信号在这种距离下会衰减严重。这是很多半路出家的PLC程序员最容易忽略的地方。第二电加热器的控制方式。我在项目里没有用简单的DO开关去控制电加热而是把电加热器分成了两组一组是可控硅调功器模拟量控制0-10V或4-20mA负责精细调节加热量另一组是DO开关只在温度特别低时作为辅助投切。这个设计避免了电加热频繁开关对电网的冲击也提升了温控精度。第三数字量输入中有8个是消防联动、防冻开关、风机手自动状态这种安全类信号。这里有一个极其重要的设计原则安全相关的信号要硬接线进PLC的DI不能只靠通讯。比如消防联动信号我虽然也从消防主机拉了通讯线到SCADA但真正的联锁停机必须通过硬接点进入PLC而且要用常闭逻辑。这个后面程序部分会详细讲。模拟量信号进PLC之后工程值转换在模拟量模块的硬件属性里已经通过缩放完成也可以在程序里用NORM_X和SCALE_X指令做标准化处理。我习惯在程序里做标准化因为后期如果某个传感器量程变了只改DB里的上下限参数就好不需要改硬件组态。2.2 PROFINET网络结构变频器、分布式IO与HMI的组网网络结构我采用的是星型拓扑中央是一台SCALANCE XB208网管型交换机CPU 1515-2 PN通过PN/IE口连交换机交换机下面再带两个分布式IO站ET200SP、两台G120变频器、两台KTP1200触摸屏和一台服务器运行SCADA。这里说一个很多项目容易犯的错误把变频器和PLC直接串在同一根网线或者同一个网段上不做任何分层和隔离。变频器在工作时会产生大量的电磁干扰特别是采用PWM调制的变频器其谐波会通过网线传导到PLC系统轻则偶发通讯丢包重则导致CPU或IO站掉站。我的做法是把交换机做两个VLAN一个VLAN给PLC、IO站、HMI、SCADA另一个VLAN给变频器和其它变频设备。VLAN是二层隔离广播域被切分变频器的实时报文不会在管理网里广播PLC主站和变频器从站之间的PROFINET实时通讯只在同一个VLAN内进行。这个技术看着简单但很多现场做完了才发现有干扰问题再改网络结构麻烦得很。如果项目预算允许我强烈建议用网管型交换机并划分VLAN。如果确实没有网管交换机至少要把变频器和PLC之间用高品质屏蔽网线连接并确保接地可靠尤其是电机电缆、变频器输出电缆和通讯线缆要分开走线相隔至少20cm。3. 核心PLC程序逻辑拆解启停时序、PID与压差控制3.1 启停时序先建压再稳温洁净空调的启停逻辑是整个程序中最重要也最容易出错的部分。很多第一次做净化空调的工程师把启停当成普通风机的启停给信号风机转。但实际生产中的净化空调启动和停止都是一个有严格先后顺序的过程。启动顺序我所在的这个项目是这样的操作员在触摸屏选择自动模式并确认启动指令。PLC先打开新风阀、回风阀适度打开排风阀阀位预设到30%左右。延时5秒启动送风机变频器频率给定20Hz低速运行。送风机运行反馈到达后延时3秒启动排风机变频器频率给定20Hz。风机进入正常运转后系统开始PID调节温湿度逐步调节冷冻水阀、加热阀、加湿阀把送风温度和送风湿度控制到设定值。房间压差PID投入自动调节根据各房间压差实测值微调排风机频率。系统稳定运行预判时间我设置为30分钟无报警后机组从启动过程切换为正常运行状态。这里面的核心逻辑是先建立送风正压再启动排风——这个顺序很重要。如果你先开了排风机房间瞬时形成负压洁净区外面的脏空气就会通过缝隙倒灌进来污染洁净环境。反过来停机时顺序是反的先停排风机再停送风机。如果先停送风机房间正压消失外界空气也会倒灌。在TIA博途里我用了两个S7-GRAPH或者LAD风格的FB块来实现这个顺序控制内部用步号Step加TON延时来推进。我选择用LADSCL混合编程步号切换的逻辑用LAD做因为逻辑清晰、便于电气同事理解模拟量PID调节和压差控制算法用SCL做因为复杂运算写SCL更高效。这里有一个极其重要的经验所有和消防相关的联锁不能只靠程序顺序必须走硬接线。我在设计时把消防联动信号接入DI模块当消防信号有效时程序立即执行一个最高优先级的OB10由硬件中断触发直接把送风机和排风机的启停控制字清零并锁定除非消防信号消除并复位否则禁止启动。同时在变频器侧的端子排还做了独立的硬接线联锁急停串在变频器使能回路里即使PLC宕机消防信号也能直接切断变频器使能。这叫多层保护程序层、硬件层各管一道任何一层失效都不至于导致严重事故。3.2 温湿度PID调节为什么不能用默认参数洁净空调的温度和湿度控制是典型的串级大滞后系统。空气经过表冷器或加热器之后要经过送风管道、末端风管、房间内部最终到达回风口的传感器反馈回来的温度变化会比执行机构的动作滞后几十秒甚至几分钟。这种滞后如果PID参数整定不当极其容易振荡。我程序里使用的控制功能块是TIA博途里自带的PID_Compact工艺对象。这个块功能非常强大支持手动/自动切换、正反作用设置、积分饱和限制、设定值斜坡还能在调试模式下自动进行参数整定。但我的经验是对于洁净空调这种大滞后系统自动整定出来的PID参数往往偏激进直接用可能振荡需要手动调整后再投用。具体我当时的做法是先用PID_Compact的自动整定功能跑一遍得到一组初始参数。然后根据曲线的振荡情况手动调整。比如冷冻水阀的PID我把P比例降到自动整定值的大约50%I积分时间增加到自动整定值的2倍左右D微分时间保留很小或者关掉。加了一个设定值死区当温度误差绝对值小于0.5℃时输出保持不动避免执行机构频繁动作。这个死区对保护冷冻水阀和调节阀的机械寿命非常有帮助。再补充一个细节PID的执行周期。默认情况下PID_Compact如果在OB1里调用每个扫描周期都会执行一次。但冷冻水阀的响应对时间高精度要求不高我把它放在OB35循环中断组织块设定周期500ms里执行。这样CPU在OB1主循环里不用承担频繁的PID运算程序运行也更稳定。在TIA博途里PID_Compact的实例DB可以直接分配工艺对象然后在背景数据块里长期保存参数。我建议整个项目里写一个统一的PID参数管理功能把每组PID的设定值、P、I、D、手动输出值做成HMI可修改的变量。这样调试时就能在触摸屏上直接调参不用频繁连电脑下载程序。3.3 压差梯度控制动态平衡的艺术压差控制是制药洁净空调项目中让很多工程师头疼的问题。这里的难点在于压差受两个因素影响一是送风量、回风量、排风量之间的相对平衡二是房间门的开启和关闭。洁净室的门只要一打开压差就会瞬间波动。如果你把排风机变频器的给定频率严格锁定那么门开了压差就会大幅跌落但如果你让排风机不停的调节那么门开那一下的扰动会导致系统振荡反而更难稳定。我采用的控制思路是两个层次叠加。第一层是静态平衡。系统正常运行时送风机按设定频率运行自动模式下根据总管送风量或总管静压做PID排风机频率由一个主压差控制PID来控制。主压差反馈来自洁净走廊和外部环境或者最核心的房间与参照区的压差传感器设定值是设计图纸要求的10Pa或15Pa。这个PID的输出直接给定排风机变频器的频率。第二层是动态补偿。针对门的开闭扰动我加了一个房间压差低值报警和快开补偿逻辑如果某个关键房间压差持续低于5Pa超过3秒程序会立即将排风机频率减小5%同时把该房间的回风阀开大5%如果压差高于15Pa超过3秒则反向调整。注意这个补偿是短时间脉冲式的不是持续调节等压差恢复后补偿会自动撤销把调节权重新交还给主压差PID。这个控制策略实际运行下来效果很好正常生产时房间压差能稳定在设定值±2Pa以内门开关造成的扰动能在10秒左右恢复。还有一个细节压差传感器本身的安装位置和取压方式。我见过很多项目压差测不准不是因为传感器精度不够而是因为取压管没有正确布置。压差传感器的高压侧应接到洁净室内部或者洁净走廊低压侧接到参照区或者室外取压管要尽量短且管路内不能有积水和倒坡。取压口一定要避开送风口和回风口的直吹区域否则测出来的压差是动压而非静压数值毫无意义。这个坑我在后面的调试章节还会细讲。3.4 报警与联锁把该停的停下来把该响的响起来报警体系设计得好不好直接决定运行人员的幸福感。我见过太多项目报警列表里全是无关痛痒的提示非关键报警成天闪真正重要的故障报警反而被淹没。我按照影响级别把报警分成了三类分别处理报警级别典型内容处理策略提示级压差传感器值异常波动、过滤器阻力接近初值上限的80%只记录不上HMI弹窗预警级房间压差低于设定值3Pa超过10秒温度偏离设定值超过2℃HMI报警提示运行人员关注停机级送风机过载、防冻开关动作、消防联动信号有效、电加热器超温立即联锁停机只有复位后才允许重新启动停机级报警的实现我也用了硬接线和程序双重控制。比如防冻开关这是一个机械式的温度开关安装在表冷器之后、加热器之前的盘管段。如果冬季温度过低开关闭合或者断开取决于型号PLC立即停掉送风机和排风机的运行信号同时关闭新风阀防止冷空气继续进入打开热水阀维持防冻保护。这个动作不能依赖温度传感器的模拟量读数机械防冻开关的可靠性远高于模拟量传感器而且响应速度更快。报警信息在TIA博途里用Program Alarm功能写入HMI报警组每条报警都带时间戳。这一点对制药行业特别重要因为GMP审计要求有完整的报警记录和处置记录。4. 调试阶段的真实排错记录两个让我记忆深刻的坑4.1 压差传感器读数漂移查到最后是取压管的问题这个项目调试到第三天现场反馈一个情况某关键房间的压差传感器数值会缓慢漂移从设定的12.5Pa慢慢涨到18Pa然后又跌回8Pa完全没有规律。我一开始怀疑是传感器质量问题换了传感器问题依旧。然后又怀疑是PLC模拟量模块通道问题换了通道还是不对。最后我到现场用一根透明的塑料管直接从传感器高压口接出来观察了半天发现问题了取压管内有水珠。因为取压管是从风管上方引下来的风管里送的是经过表冷器除湿后的冷空气管道壁温度低于露点空气中的水分在取压管内壁冷凝慢慢凝结成水珠堵塞了取压管导致压力传递不畅。当时处理的办法是把取压管改成从风管侧面或者下方向上接的方式并且取压管在室外段加了一个倾斜的坡度让冷凝水能自然回流到风管里而不是积聚在取压管内。改动之后压差读数稳定下来。这个经历给我一个很深的教训仪表安装的细节往往比仪表本身更影响测量结果。调试的时候如果数据异常先检查取压管、管路、接线再怀疑PLC和传感器。别一上来就换硬件浪费时间还解决不了问题。4.2 PROFINET通讯偶发中断VLAN隔离和SCALANCE的功劳调试过程中还遇到一个更诡异的问题送风机变频器在某个特定频率段大概是45Hz到48Hz区间运行时PLC偶尔会报IO设备闪烁、IO设备不可用过个几秒钟又自动恢复。刚开始我怀疑是变频器电磁干扰已经做过VLAN隔离了怎么还会断用Wireshark抓包分析PNIO通信后发现变频器到了高频率段之后网口的数据包重传率明显上升。排查到最后问题出在变频器柜内的网线端子上。变频器柜的出线口网线没有做好屏蔽层接地而且和变频器主回路动力线捆在了同一个线槽内。到了特定频率段动力线上的电磁干扰被耦合到网线上导致通讯质量下降。处理方案是变频器柜内网线全程改用双层屏蔽网线屏蔽层在柜内一点接地网线和动力线彻底分开走线不在同一个线槽内网线的水晶头换成金属屏蔽头确保屏蔽层从网线一直到设备端都连续。改完之后通讯非常稳定整个项目再也没出现过类似问题。这个案例说明PROFINET的可靠性一半靠设备本身一半靠现场施工的规范程度。很多项目组态没问题程序没问题最后死在现场布线不达标上。4.3 值班模式的预留晚上没人也要保住洁净环境最后一个调试中发现的功能缺失是值班模式的考虑不周。第一次手动调试完成后车间还没正式投产我和工艺工程师商量能不能在夜间不开机组只保留值班模式结果我在程序里搜索了一圈——没有值班模式。这个事儿看起来小实际影响很大。制药车间如果没有生产GMP规范也要求保持一定的正压梯度防止微生物滋生和外界污染进入。你如果直接关风机第二天车间检漏大概率通不过。但如果按正常模式运行能耗又很大。后来我在程序里增加了一个值班模式逻辑夜间或者非生产时段送风机变频器以20Hz低频运行排风机以同样低频运行维持一个较小的换气量。新风阀关小到10%回风阀保持全开。温湿度控制切断只做防冻联锁。房间压差控制不再用PID精细调节而是用一个简单的开关控制压差低于3Pa时排风机频率减小5%压差高于12Pa时排风机频率增加5%。这个值班模式后来又做了几个优化在HMI上把生产模式/值班模式/停止做成三档旋钮程序里根据模式不同调用不同的FB。故障联锁在值班模式下同样有效防冻保护必须全程有效。我觉得这个功能算是一个经验复盘初版设计时工艺工程师没提值班需求我也没想到这个细节。后来的项目我第一个就会问生产时间和非生产时间的机组运行策略是什么这个问题多问一句能避免后面加程序和现场昏天黑地改代码的麻烦。5. 运维视角的补充程序归档、权限管理与后续优化项目交付后运行了一段时间我总结了一些运维层面的经验同样值得分享。第一程序架构的命名规范和注释质量直接影响后期维护。你在调试时会觉得自己的代码一目了然但半年后药厂委托设备维护工程师做年度验证时他们打开你的程序满屏都是FC1、FB1、DB1这种名字注释还几乎为零那基本上等于要骂人。我的习惯是每个块都用有意义的名字并且加中文注释。比如FB_Supply_Fan_Control写送风机控制包含起动时序、变频器给定和停止逻辑DB_PID_Temp_Setpoint写温度PID设定值由HMI修改。所有关键的中间变量如启机允许跳闸保持运行方式全部在符号表里定义成带中文描述的符号名。这样维护人员即使完全不熟悉原编程思路也能通过符号名快速定位。第二权限管理在制药行业是硬需求。GMP对数据完整性有严格的要求S7-1500配合TIA博途可以设置CPU的访问保护级别我分配了三类用户等级操作员可以看到和修改HMI上的设定值、工艺工程师可以下载程序和修改PID参数、管理员可以修改配方、调整权限和做备份。在CPU属性里开启防护等级、访问保护和撕裂保护并且在CPU的运行时设置里打开写保护功能防止误下载导致的中断。对制药行业来说这既是满足合规要求也是保护自己的方式。第三数据归档和审计追踪。S7-1500支持在非易失性存储区记录历史数据但容量有限更适合记录短期的趋势。我的方案是PLC将关键数据房间温湿度、压差、风机频率、报警状态每30秒通过PROFINET传给SCADA服务器由SCADA负责长期归档。这个设计要考虑30秒数据点对SCADA的负载一般没有问题。如果你们厂没有单独SCADA系统也可以考虑S7-1500连接SQL服务器但会增加不少工作量不如用WinCC RT Advanced自带的Logging功能方便。第四程序安全与备份。我经历过一次现场程序丢失的惊魂时刻。当时同事在调试时不小心点了在线下载把一个错误的程序下载到了PLC里覆盖了原程序。虽然当时能通过在线读取恢复但如果CPU也同时断电可能就真的丢了。所以我的习惯是每天下班前做一次PLC程序上传备份存到项目文件夹并按日期命名重大修改前先备份到存储卡再在线下载。S7-1500支持用存储卡做程序备份这块非常重要但常常被忽视。最后想说每个项目都有它的个性。制药洁净空调的设备选型、工艺要求、控制策略都不是完全一样的我这套程序和思路只代表我在这类项目中的实践参考时一定要结合你们自己工厂的工艺特点。如果你正在做同类项目希望这篇文章能帮你少走几步弯路。
返回列表