ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

博途V16+WinCC 7.5实现洁净空调控制系统:结构化编程与PID控制全解析

博途V16+WinCC 7.5实现洁净空调控制系统:结构化编程与PID控制全解析 做工业自动化这几年我越来越觉得洁净空调控制系统是最适合拿来练手结构化编程的一类项目——工艺逻辑清晰、控制回路完整、上位机要求又高一套走下来基本把博途V16和WinCC 7.5的核心操作都摸透了。今天要分享的这套项目文件就是用WinCC 7.5做上位机组态、博途V16写PLC程序的完整洁净空调控制系统从电气IO分配、FC/FB分块、PID温湿度控制到上位机画面、报警归档、用户管理全部是实际工程里能直接挪用的思路。不管你是刚接触工控的新人还是想从所有逻辑全堆在OB1里的写法升级到结构化编程的同行这套项目都能给你一个相对完整的参考样板。这套系统按制药车间洁净室的典型需求来设计核心控制对象是空调机组AHU包含温湿度控制、压差控制、风量调节、过滤器压差监测、风机联锁、防火阀联动等常见环节。控制层采用博途V16编写S7-1500 PLC程序监控层采用WinCC 7.5做画面组态和报警归档。程序按功能拆分为多个FC和FB上位机画面按流程和功能分区数据和报警统一管理。下面我把整个项目的设计和实现过程拆开讲顺便把调试中踩过的坑也一并记录下。1. 项目整体架构与控制需求拆解1.1 为什么选WinCC 7.5 博途V16这个组合先说选型。工程项目里用WinCC 7.5配合博途V16里的S7-1500是当前比较主流的组合。WinCC 7.5本身就是西门子面向中大型SCADA场景的上位机组态软件画面能力、报警归档、趋势曲线、用户权限管理都做得很成熟尤其在制药、食品、水处理这些要过验证、要留审计追踪的行业里WinCC的归档结构是很多人认的。博途V16则统一了PLC编程、HMI组态和驱动配置S7-1500的指令处理和扩展能力比老S7-300强一大截在线诊断、Trace功能、仿真调试都顺滑很多。这个组合能解决一个实际问题绝大多数中小型洁净空调项目不需要上很重的MES或SCADA平台但又不能像单机设备那样只挂个触摸屏了事。WinCC 7.5做车间级监控博途V16里的S7-1500做逻辑控制中间走以太网S7通信方案成熟、资料好找、后续维护的人也好招。如果你以前只做过博途精智触摸屏的组合换成WinCC后会感觉自由度明显提升——报警记录可以独立做报表查询操作记录能追溯多台空调机组也能在同一个工程里统一管理。1.2 洁净空调控制系统的控制需求到底有哪些洁净空调和普通舒适性空调最大的区别是它服务的对象往往对空气有严格的洁净度、温湿度、压差要求。典型的制药洁净车间温度要控制在22℃±2℃相对湿度要维持在45%~60%RH洁净级别可能是万级甚至百级换气次数十几二十次每小时而且不同等级房间之间要保持5Pa以上的正压差。这些指标听着就几条落到PLC控制逻辑上会拆出很多细活。首先是温湿度控制。洁净空调一般不搞开了就送风、热了就制冷的简单逻辑而是典型的三段式处理表冷段降温除湿、加热段升温、加湿段加湿。夏季工况要先制冷把空气降到露点以下析出水分再加热到送风温度冬季工况要先加热再加湿。这就要程序能根据室内温湿度和季节特征切换控制模式不能一套PID走到黑。其次是压差控制。洁净室正压靠送风量和回风/排风量的差值建立起来。送风机送进来多少风排风机抽走多少风回风阀、排风阀开多大都会影响房间压差。常见的做法是送风机变频维持恒定送风量排风机变频或排风阀跟踪室内压差。这一块控制搞不好门一开压差就崩车间就报警所以联调和参数整定要特别仔细。再有就是风量和设备联锁。送风机、排风机要有启停顺序防火阀动作后要立刻停风机空调箱内设初效、中效、高效过滤器过滤器前后压差超过设定值要报警提示更换。冬季有防冻保护电加热段要等风机确认运行后才能送电防止干烧。这些安全联锁是洁净空调控制系统的底线写程序时优先度要排在温湿度调节前面。1.3 结构化编程在这个项目里是怎么落地的说到结构化编程很多刚入门的朋友会觉得是个很虚的概念。其实说白了就是不要把所有逻辑都堆在一个OB里而是按功能拆成独立的程序块每个程序块只管一件事接口定义清楚数据放在专门的数据块里。这套项目里我按功能拆了温度控制FB、湿度控制FB、压差控制FB、风机控制FB、风阀控制FB、报警处理FC、手自动切换FC、模拟量处理FC等若干块每个块都有独立的输入输出接口和静态变量区。这样拆分的好处一是调试方便哪个回路有问题直接进那个FB看逻辑不用在一坨网络里翻半天二是复用性强同型号的第二台空调机组直接复制FB换个背景DB就行三是可维护性好工艺人员来问为什么压差波动大你可以明确告诉他去查压差控制FB里的PID参数而不是大家一起看几十个网络。后面我会详细讲这些FB具体怎么设计接口、内部怎么写。2. 博途V16侧的程序结构从硬件组态到FB分块2.1 硬件组态与IO点梳理整套系统我按一台组合式空调机组来配置选的是S7-1500系列CPU具体型号用的是CPU 1511-1 PN带一个PROFINET口直接和WinCC通信。数字量输入主要接风机运行反馈、风机故障、手自动模式、防火阀状态、过滤网压差开关、水流开关、加湿器运行状态。数字量输出主要接送风机/排风机启停、电加热分级接触器、加湿器开关、声光报警器。模拟量输入接送风温湿度、回风温湿度、室内温湿度、送风管压力、室内外压差、初效/中效/高效过滤器压差、冷冻水阀反馈。模拟量输出接冷冻水阀开度给定、加湿阀开度给定、送风机/排风机变频器频率给定、新风阀/回风阀/排风阀开度给定。IO点梳理有个我个人的习惯先把所有点位做成Excel表列清楚IO地址、信号类型、量程范围、工程单位、报警上下限然后再去TIA Portal里建PLC变量表。直接对着Excel建一是变量名不容易乱二是数据类型统一不会错三是后面对应WinCC变量时省一半时间。这个项目的PLC变量表基本就是Excel点位表照搬过来的PLC侧变量名和WinCC侧保持一致后面通信建变量时直接批量复制。2.2 模拟量处理与工程量转换洁净空调控制里到处都是模拟量温湿度、压差、风压、阀位反馈这些都是4-20mA或0-10V信号进AI模块的。S7-1500的AI模块转换后的原始值范围是0到27648但我们程序里要用的物理量是22.5℃45.3%RH120Pa这种所以必须做工程量转换。我习惯在程序里单独建一个模拟量处理FC把所有AI通道的原始值统一转成工程量浮点数。TIA Portal里用NORM_X和SCALE_X两个指令配合做最方便NORM_X把0~27648归一化到0.0~1.0SCALE_X再按量程下限和上限标定到实际物理量。以回风温度为例量程是0~50℃NORM_X的MIN填0、MAX填27648SCALE_X的MIN填0.0、MAX填50.0输出的浮点数就是实际温度值。转换完的数据统一存到模拟量输入DB里后续所有FB直接用这个DB里的工程量不要再拿原始值到处换算。这里有个容易犯的错温湿度传感器如果是4-20mA量程下限对应的其实是4mA而不是0mA但S7-1500的AI模块默认把4mA对应到020mA对应到27648所以只要量程MIN/MAX填传感器的实际量程就行。如果某些传感器坏线会回到0mA程序里要做一个断线判断——原始值低于一定阈值比如低于200认为通道故障此时不要参与控制也不要触发虚假报警。我在模拟量处理FC里统一做了这个判断故障状态放到一个状态字里报警画面和逻辑控制都会引用。2.3 核心FB功能块的接口设计FB接口设计是结构化编程的关键。拿温度控制FB举例我给它定义的输入接口有使能信号BOOL、设定值REAL、实际值REAL、PID参数组比例增益、积分时间、微分时间、手自动切换BOOL、手动输出值REAL。输出接口有PID输出值REAL、模式状态INT、偏差REAL。静态变量区里存PID内部状态、积分累加值、上次输出值、执行时间戳等。背景DB则为这个FB的每一次调用单独分配存储空间。这样的接口设计有一个实际好处温度控制FB不管是用在送风段还是回风段只要输入输出一致就能复用只是背景DB不同、PID参数不同。我在这个项目里把温度控制FB同时用于送风温度控制和回风温度控制两个实例参数完全分开整定。写FB时要注意用IN_OUT接口传背景数据以外的大结构体用TEMP定义临时变量用STAT保存需要掉电保持的中间状态这三个变量类型用错是新手最容易出问题的地方。程序里组织逻辑时OB1只做总调度调用自动/手动切换FC、调用各个FB、调用报警处理FCOB35里放PID周期执行。OB1别写具体控制逻辑控制逻辑全部下沉到FB/FC里。这样万一工艺调整只动对应FB不用碰主程序也不影响其他部分。3. 洁净空调最核心的控制逻辑温湿度、压差与联锁3.1 温度控制冷冻水阀PID与夏季/冬季模式切换温度控制是洁净空调系统里最重要的回路直接决定车间能不能达标。这套项目里温度控制分成两部分夏季以降温和除湿为主冬季以加热为主过渡季节自动判断。程序里我写了一个工况模式判断FC输入室内温度、室内湿度、室外温度输出当前工况模式夏季制冷、冬季加热、过渡季通风。判断逻辑不复杂室外温度高于某个阈值且室内温度偏高判为夏季模式室外温度低于某个阈值且室内温度偏低判为冬季模式中间区域为过渡季。夏季模式下冷冻水阀由表冷段出风温度PID控制目标值设为12℃~14℃左右具体取决于除湿需求让空气先降温析湿表冷段出口的冷空气再到加热段由电加热补温到送风温度设定值。冬季模式下冷冻水阀关闭或处于最小防冻开度加热段按回风温度PID控制加湿段按回风湿度控制。过渡季则是通风为主调节新风比。PID参数整定是个很吃经验的环节。温度回路我一般先把积分时间放很大、微分关掉只留比例系数从2开始试看曲线稳定后逐步加积分、微调比例。冷冻水阀回路响应快积分时间可以从300秒量级开始电加热段温升快但滞后小比例系数要小一点防止超调加湿回路滞后大积分时间要长。整定时用博途的Trace功能看曲线比盯着变量表有效率得多这个后面细说。3.2 湿度控制加湿器与除湿逻辑的典型误区湿度控制的本质是控制空气中水蒸气的含量。除湿主要靠表冷段把空气冷到露点以下让水分析出来所以夏季除湿是跟着温度控制走的——冷冻水阀开大出风温度低含湿量自然低。加湿则在冬季或干燥季节进行用电极式加湿器或干蒸汽加湿器把蒸汽喷到送风管道里。程序里湿度控制FB的输入是回风湿度输出是加湿阀开度或加湿器启停控制模式同样受工况模式约束。这里有个典型误区很多人以为湿度PID和温度PID一样直接怼一个PID调节加湿阀就行。实际上加湿过程大滞后、大惯性湿度的测量点在回风管加湿点在送风管中间隔着整个房间纯PID很容易震荡。更稳妥的做法是用分程限幅的思路加湿阀在湿度低于设定值时按偏差比例开启设定一个最小开度起步值防止小幅偏差反复启停偏差小到死区内就保持当前开度不变。等湿度稳定一段时间后再根据偏差微调。对于要求不高的场合加湿器甚至可以用开关量两段控制——低于下限开高于上限关配合回差简单可靠。我当时这个项目里加湿控制采用的是PI控制加积分分离偏差小于0.5%RH时积分项清零只保留比例带很窄的比例输出防止干加湿过头。这个思路对大多数洁净空调项目都合适比标准PID直接怼上去稳定得多。3.3 压差与风量调节变频器与风阀的配合洁净室压差控制是另一条容易出问题的回路。压差测点一般装在洁净室与走廊之间控制目标是维持10Pa到15Pa的正压。系统里送风机变频、排风机变频新风阀和排风阀都是可调的这就形成了一个多输入多输出的系统处理不好会互相干扰。我的做法是分主次控制送风机按送风管静压恒定控制保证送风量稳定也就是先保证换气次数。排风机变频器则接收压差控制FB的输出通过调节排风量来维持室内外压差。新风阀在启动时开到设定位置运行中基本不动回风阀和排风阀配合保证风量平衡。这样压差回路只控制一台排风机变频器送风回路只控制一台送风机变频器两个回路之间的耦合被拉开整定难度大大降低。压差PID的积分时间也要拉长因为它本质上是房间压力就是个大容量、慢响应对象。压力波动大时不要把P调太大否则风口一开一关就震荡反而更难稳定。另外要注意压差变送器的取样管路如果堵了或者有水汽凝结数值会跳变现场一定要加装防堵装置程序里也要做压差突变的合理性判断——比如设定值15Pa反馈突然变成200Pa多半是管路问题而不是真实压差。3.4 安全联锁防火阀、风机、水泵的启停顺序安全联锁这块是整个项目里优先级最高的部分一定要放在温度PID、压差PID之前执行保证任何情况下设备安全优先。系统启动时执行严格的启动顺序先确认无火灾报警信号、防火阀全开到位、空调箱检修门关到位然后启动送风机确认送风机运行反馈后延时打开新风阀和回风阀再启动排风机。停止时顺序相反先停排风机再关送风机然后关闭风阀。这样保证整个停机过程中洁净室始终保持正压室内气流方向不会反转。冬季防冻也是联锁里重要的一条。我加了防冻开关检测表冷器出风温度低于5℃时报警低于2℃时联锁停风机并关闭新风阀、打开冷冻水阀保持水流通。电加热段必须检测到风压差或风机运行反馈才允许投入防止无风干烧。加湿器同样要有送风机运行确认并且加湿段要有限流保护。这些联锁逻辑我全部集中放在一个安全联锁FC里在每个FB执行之前统一调用一遍任何联锁条件不满足对应的设备输出就会被强制断开。这里提醒一句联锁逻辑写完后要做一次完整的逻辑仿真把所有故障状态模拟一遍确保没有任何逻辑漏洞。现场调试时如果时间紧联锁测试往往容易被压缩但这一项绝对不能省。4. WinCC 7.5上位机组态画面、变量与报警的完整方案4.1 上位机画面架构设计WinCC 7.5的画面组态我遵循总览-分机-详情三层结构。总览画面放整个车间的平面示意图每台空调机组用色块表示运行状态绿色运行、红色故障、灰色停机点击图标跳转到对应机组详情画面。机组详情画面放空调机组原理图包含送风机、表冷器、加热器、加湿器、各级过滤器、新风阀、回风阀、排风阀等设备图形每个设备旁边显示关键运行参数阀门用动画箭头表示开度方向。画面设计时有个原则操作人员不盯电脑的人也要能一眼看出问题。所以每个设备图形的颜色、闪烁、隐藏动画我都设置了明确的规则——正常绿色、报警黄色闪烁、故障红色闪烁、停机灰色。参数显示用静态文本I/O域组合数值超限时I/O域背景色会变。页面切换按钮统一放在顶部导航栏至少包含总览、机组详情、趋势曲线、报警记录、用户管理五个页面。4.2 变量连接与通信配置WinCC 7.5和S7-1500通信在WinCC里新建连接时选SIMATIC S7-1500驱动填入PLC的IP地址、机架号和插槽号。S7-1500默认机架号填0、插槽号填1不能照老S7-300那样填4这是很多人第一次连不上S7-1500的原因。另外在博途项目里需要把CPU属性里的允许来自远程对象的PUT/GET通信访问勾上否则WinCC的连接测试会超时。这一条是很多教程里不提但实际调试必踩的坑。变量建立我用的是批量导入思路先在博途里把PLC变量表导成Excel整理好之后在WinCC变量管理里通过Excel批量生成避免一个一个手敲。变量的数据类型必须和PLC侧严格一致温度湿度压力全是REAL阀门状态是BOOL设备状态字是WORD类型不匹配在运行时不会报错但数值会完全不对排查起来很痛苦。WinCC画面里引用变量后建议启动运行前用变量连接状态对象先测试一遍通信确保每个变量都能读到值再细调画面。4.3 报警记录和趋势曲线报警是WinCC相对触摸屏的一个明显优势。触摸屏报警最多在HMI里翻翻WinCC的报警记录可以做归档查询、按时间过滤、按文本过滤、导出报表。这套项目里我分了三个报警优先级高优先级是安全联锁类报警比如火警、防冻报警、风机故障需要操作员立即处理中优先级是工艺报警比如温湿度超限、过滤器压差偏高低优先级是提示类比如参数超限预警、设备保养提醒。每类报警在WinCC里配置不同的声音、闪烁、确认策略。报警变量怎么和PLC侧配合我的做法是PLC侧在每个FB里处理完报警条件后直接置位对应的报警信息DB位WinCC通过变量触发报警。这样报警逻辑在PLC里有完整记录符合制药项目审计追踪的要求。WinCC报警控件里要设置自动确认延时和颜色规则防止操作员漏掉关键报警。趋势曲线同样是WinCC的强项。我在趋势画面里配置了几个曲线窗口温度趋势回风温度设定值、湿度趋势回风湿度设定值、压差趋势室内外压差设定值、PID输出趋势冷冻水阀开度、加热输出等。曲线窗口的采样周期我设置为1秒归档周期设置为5秒这样既能看到动态响应又不会产生过大的归档文件。WinCC的曲线能和报警记录联动点击报警条目能直接定位到对应时间点的曲线画面调试和追溯都方便。5. 实操过程回顾与调试经验5.1 从空项目到仿真运行的操作流程这套项目不是纸面设计是真正从零到一调出来的。先搭电气原理图把IO表整理好再在博途V16里做硬件组态建PLC变量表然后按照前面讲的模块划分依次编写FC/FB编译通过后下载到PLC最后做WinCC组态和通信调试。整个流程走下来最重要的节点其实是在PLC能编译通过到现场联动调试之间的仿真验证阶段。博途V16自带的PLCSIM仿真软件可以模拟S7-1500运行PLC程序虽然没有真实IO但是逻辑、FB调用、PID运算、数据块读写都能完整验证。我在上电前用PLCSIM把整个程序跑了一遍写好模拟量输入值测试各个FB的输出是否按预期动作。比如手动给一个温度偏高的模拟值看冷冻水阀PID输出是否增大给一个压差偏低的模拟值看排风机频率是否下降。这一轮仿真把大部分逻辑错误挡在了现场之前省下的时间绝对可观。WinCC和PLCSIM联动调试也是可行的——WinCC连接PLCSIM里的虚拟PLC通过仿真IC协议通信画面、报警、变量更新都能测出来。这样人还没到现场上位机画面已经能完整演示了。我建议所有做这类项目的人有条件的话一定先做一轮仿真联调再进现场你会感谢自己这个决定的。5.2 常见问题与排查技巧调试洁净空调项目我积累了几条经验通信问题是优先排查项。WinCC连不上PLC先确认网络能Ping通再检查PLC属性里的PUT/GET访问是否勾选最后看WinCC连接参数里的机架号和插槽号。S7-1500默认Slot是1不是4这个90%的新人都会踩坑。模拟量跳变十有八九是信号问题。我遇到过现场由于接线端子松动导致的温度值来回跳不查接线先调PID属于浪费时间。每次做模拟量调校前先确认信号源本身稳定用万用表量4-20mA电流看看电流本身有没有跳动再决定是不是要改程序里的滤波参数。PID振荡要分清是参数问题还是对象问题。冷冻水阀PID输出频繁震荡可能是比例增益偏大也可能是阀门选型太大小开度就造成大流量变化甚至可能存在水系统气阻。遇到振荡先检查阀门特性和管道气阻再动PID参数否则参数调到地老天荒也调不稳。压差波动别急着调PID。排风机频繁升降频先看看压差变送器取样管是不是被堵了取样口是不是有积灰管路是不是有冷凝水。我遇到过取样管有冷凝水导致的压差波动疏通管路后很稳之前调了两天PID都没解决。防冻开关误报也是常见坑。防冻开关装在表冷器后冬季如果新风阀开度过大或风机未运行冷风直接吹过防冻开关就会误动。程序里要对防冻报警做延时确认处理比如持续5秒报警才触发联锁防止瞬时干扰导致整个系统停机。5.3 个人心得结构化编程的收益与代价关于结构化编程说几句实在话。一开始拆分FB、定义接口确实比把所有逻辑写在一个OB里慢尤其是独自一个人做小项目的时候会觉得就这么点东西一把梭算了。但这个项目做了三个空调机组用了同一个温度控制FB、湿度控制FB、压差控制FB之后收益体现得特别明显——第二台机组基本就是复制粘贴加参数改改编程工作量可能只有第一台的30%而且因为第一台南逻辑已经验证过后面几乎不用再调试核心回路。就算不是多机组项目结构化编程带来的可读性、可维护性也能在你需要修改工艺或者排查问题时快速回馈你。做现场调试本来就容易急躁如果程序还乱得跟毛线团一样那真是雪上加霜。相反功能块清晰、变量命名规范、注释到位调试时心态都会好很多。再说一点这个项目文件本身就是一套学习材料最好的打开方式是按我的章节顺序走一遍——先看IO点表再看FB接口和内部逻辑然后用PLCSIM仿真最后对照WinCC画面一起看。特别是PID参数和工况模式切换逻辑把这两个点看透了洁净空调项目的核心就算掌握了。后面有条件你还可以在这个基础上扩展多空调机组联动、能耗统计、远程监控这些功能底子打得好后续做什么都不费劲。
返回列表