十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

博途V16与WinCC 7.5在洁净空调控制系统中的工程实践

博途V16与WinCC 7.5在洁净空调控制系统中的工程实践 去年在做一个电子洁净车间暖通改造项目时正好把西门子这两个工具凑到一起用PLC 侧用博途 V16 写 S7-1500 的程序上位机用 WinCC 7.5 做监控画面。整套系统做完之后我最大的感受是洁净空调控制系统比普通舒适性空调要麻烦得多但恰恰是这个复杂度让它成为学习结构化编程和上位机组态最好的练手项目之一。这篇文章就围绕这个洁净空调项目文件展开把控制需求、程序架构、WinCC 组态思路以及踩过的坑都梳理出来给正在研究 WinCC7.5 和博途 V16 的朋友做一个参考。1. 洁净空调系统控制的现场难点与 WinCC/博途选型逻辑1.1 洁净空调到底在“控”什么很多人以为洁净空调就是“把空气过滤干净”这句话只说对了一半。从自动化控制角度看洁净空调的核心是维持房间的洁净度等级而洁净度是由送风量、压差、温湿度、过滤效率共同决定的。一个典型的洁净空调系统空气要经过新风混合段、初效过滤段、表冷/加热段、加湿段、风机段、中效过滤段、送风段最后通过高效送风口进入洁净室回风再回到空调机组循环。控制对象大致分四类温湿度夏季靠表冷器降温除湿冬季靠加热器升温湿度不够时开启加湿阀。洁净车间对温湿度波动要求往往很严比如 ±1℃ 和 ±5% RH。压差洁净室相对走廊要保持正压不同等级洁净室之间要有合理的压差梯度通常 5~10Pa。风量/换气次数通过风机变频调节送风量保证洁净室的换气次数。过滤器状态初效、中效、高效过滤器前后压差超过设定值说明滤网堵塞需要报警更换。这些环节彼此耦合风机频率变了房间压差会跟着变表冷器阀门开度变了送风温度会变进而影响房间温度。没有结构化编程思路控制逻辑很容易写成一团乱麻。1.2 为什么选博途 V16 写逻辑、WinCC 7.5 做上位通常我做这类项目有两种路线一种是博途里集成 WinCC Unified 或者精简系列 HMI一种是用独立 SCADA 即 SIMATIC WinCC 7.5。洁净空调系统点数不算特别多但要求历史趋势、报警记录、报表导出功能齐全而且后期可能有多个车间集中监控的需求所以我倾向于 WinCC 7.5。博途 V16 负责 S7-1500 PLC 程序包括所有模拟量处理、PID 控制、联锁逻辑和通信配置。WinCC 7.5 则专注于画面、归档、报警和用户权限。两个软件在同一台工程师站上可以共存安装时注意版本兼容就行。这个组合的好处是S7-1500 的循环周期短、PID 指令成熟适合空调这种调控速度不快的对象WinCC 7.5 支持大量外部变量历史归档放在 SQL Server 里做报表很方便项目后期如果增加工位机只需要在 WinCC 里增加客户端授权不用再动 PLC 程序。所以我最终选定的架构是S7-1500 PLC 博途 V16 编程 WinCC 7.5 上位机通过工业以太网通信。2. 博途 V16 中结构化编程的骨架功能块划分、UDT 与数据区规划2.1 按设备类型划分 FB/FC而不是按页面划分很多初学者拿到控制要求第一反应是按画面分写一个“送风机页面”、一个“冷阀页面”、一个“加湿页面”。这个思路在点少时还能凑合点一多就麻烦同一个设备在多个画面被引用逻辑重复改一处漏一处。我在这套洁净空调项目里用的是按设备类型划分功能块的办法。核心 FB 大致如下FB_SupplyFan送风机控制包括启停、变频调速、故障联锁、运行状态反馈。FB_ReturnFan回风机或排风机控制逻辑与送风机类似但多了与送风机联动。FB_Valve冷/热水阀控制支持手自动、PID 给定、阀位反馈。FB_Humidifier加湿阀控制。FB_StaticPressure房间压差调节多房间压差巡检。FB_AlarmGroup过滤器压差报警、风机故障报警汇总。每个 FB 都有独立的背景数据块参数化之后可以反复调用。比如项目里有四台空气处理机组我只需要把FB_SupplyFan调用四遍分别指定不同的背景 DB 和 I/O 地址即可。程序结构非常清晰WinCC 侧做变量连接时也容易对应。2.2 全局 DB 与背景 DB 的边界结构化编程最容易乱的就是数据块。我的习惯是分成三类全局 DB存放跨设备共享的数据比如用户命令、模式选择、季节状态、联动字。背景 DB每个 FB 调用时自动生成的实例数据比如当前阀位、运行时间、累计次数。通信 DB专门给 WinCC 上位机读取的数据块里面只放 HMI 需要看到的变量。通信 DB 的存在很重要。很多人直接把 FB 的背景 DB 交给上位机读取WinCC 变量就散落在几十个 DB 里组态时要点半天而且背景 DB 里的内部变量全部暴露出来既不安全也不直观。我在项目里单独建了一个DB_HMI_WinCC把所有 WinCC 需要的变量集中映射变量名和上位机点表一一对应。2.3 模拟量采集的 UDT 封装洁净空调系统里的模拟量非常多温湿度、压差、阀位、频率、电流。如果不做统一封装每个模拟量要单独建报警上下限、工程量转换、滤波、断线检测程序量会非常臃肿。我定义了一个UDT_AnalogInput包含了以下元素RawValue原始值EngValue工程量转换后的实际值HiHi / Hi / Lo / LoLo四限报警设定值AlarmEnable报警使能位DeadBand死区防止信号抖动频繁报警FilterTime滤波时间常数BrokenWire断线/超量程标志。然后模拟量采集 FB 只处理 UDT 里的数据WinCC 读取通信 DB 时直接取EngValue和报警位就行。这个办法特别适合洁净空调这种大量重复 I/O 的项目写一次后面所有机组都能复用。3. 从博途 V16 到 WinCC 7.5 的变量交接通信配置与点表设计3.1 通信链路选型普通 S7 连接还是 OPC UAS7-1500 和 WinCC 7.5 通信有几种方式。最传统的是 WinCC 的 SIMATIC S7-1500 通道直接建 TCP/IP 连接配置简单实时性高。另一种是走 OPC UAWinCC 7.5 支持 OPC UA 客户端S7-1500 侧开启服务器功能即可。我在这个项目里用了普通 S7 连接原因是调试直观变量刷新快。但如果你遇到 WinCC 7.5 访问 S7-1500 优化 DB 异常的情况OPC UA 往往是更省事的备选方案。关于优化 DB 的问题后面第 7 章我会专门讲。通信规划上需要注意几个点PLC 和 WinCC 工程师站要在同一个网段最好设置固定 IPWinCC 中建立连接时机架号和插槽号要正确匹配 S7-1500 的配置如果有多台 PLC建议在 WinCC 里按区域命名连接比如AHU_1、AHU_2别叫PLC_1、PLC_2这种没有业务含义的名字。3.2 点表命名规范和批量导入做 WinCC 组态最枯燥的环节就是变量建立。如果 PLC 程序里的变量名不规范到 WinCC 里会变成一场灾难。我在博途 V16 里一开始就定了点表规范例如数字量输入DI_SupplyFan_Fault、DI_ReturnFan_RunStatus数字量输出DO_SupplyFan_Start、DO_ReturnFan_Start模拟量输入AI_Room_Pressure、AI_Temp_SupplyAir、AI_Humi_SupplyAir模拟量输出AO_ColdValve_Open、AO_HumidValve_Open。WinCC 7.5 支持从 Excel 或文本批量导入变量在变量管理器中先导出 CSV 模板然后把点表填进去最后再导入。这样可以避免手工一个一个建变量也方便后期核对。3.3 WinCC 项目模板与版本匹配陷阱WinCC 7.5 有好几个 Update 版本我用的是 WinCC 7.5 SP2。项目文件在别人电脑上打开前最好先确认 WinCC 版本一致否则会出现“项目版本过高”或“数据库连接失败”的提示。网上能搜到的“wincc7.5 项目模板”非常多但大多数模板只是画面布局和变量库不能直接套用到洁淨空调。我更建议把模板理解为一种项目预设置包括画面分辨率、变量前缀、归档周期、报警类别、用户权限组。做新项目时从模板复制能把大量重复工作省下来。4. WinCC 7.5 画面组态中的洁净室关键监控对象4.1 主监控画面的信息密度怎么排WinCC 画面设计不是把变量丢上去就完事。洁净空调操作员关心的是几个核心信息每台机组运行状态、送风温湿度、关键房间压差、过滤器报警、手自动状态。我把主画面分成三块中间是系统工艺流程图显示新风、表冷器、风机、过滤器、房间等设备用不同颜色区分运行、停止、故障左侧是设备操作区包括送风机启停、阀门手自动切换、给定值设定底部是报警滚动条和当前用户信息。这里有个经验现场操作员更习惯“先看到状态再点击操作”。所以画面上默认只允许点击进入操作面板不要直接把所有设定值裸露在主画面防止误操作。4.2 温湿度趋势、历史归档与生产报表WinCC 7.5 的趋势控件功能很强可以同时显示多个变量并且支持时间轴缩放。我把送风温度、回风温度、房间温湿度、压差都加入了在线趋势归档周期设 5 秒历史数据存入 SQL Server。报表方面有人喜欢用 WinCC 自带的 Report Designer也有人直接让操作员通过 Excel 导出历史数据。我在项目里做了一个“日报表”按钮点击后自动生成当天温湿度最大值、最小值和平均值用 VBS 脚本把数据写入 Excel 文件放在指定共享目录。这个功能很受甲方欢迎因为验证洁净车间环境参数时纸质记录是必须的。4.3 报警分级和弹窗联动洁净空调的报警要分清主次我把报警分成三级一级报警送风机故障、排风机故障、火灾联动这类报警需要立刻停机或联动音响应急促二级报警温湿度越限、房间压差异常提醒操作员关注但不至于停机三级报警过滤器压差偏高、通信故障之类提示维护保养。WinCC 7.5 的报警记录组件负责收集 PLC 发的报警触发条件画面里的报警控件显示报警文本、时间和确认状态。还可以做报警弹窗联动某些二级报警出现时自动弹出对应机组的操作画面帮助值班员快速定位。这个效果很好但别所有报警都弹窗否则操作员会关弹窗关到手软。5. 洁净空调控制的核心逻辑温湿度 PID 串级、季节切换与风机联锁5.1 夏季/冬季工况切换洁净空调的工况切换是控制逻辑里最容易出问题的地方。夏天要求表冷器阀门动作冬天要求加热器阀门动作过渡季节还要考虑利用新风自然冷却。我的做法是在 PLC 里设置一个运行模式字由三个要素决定手动选择、室外温度、回风温度。如果不是手动强制程序会按室外温度自动判断室外温度高于 26℃判定为夏季模式室外温度低于 18℃判定为冬季模式介于中间时保持上一次有效模式防止反复切换。这个判断放在OB100初始化或定时中断里而不是每次扫描都去算。工况切换还有一个重要动作切换时所有阀门要回到初始位置PID 输出要清零防止积分饱和引起冲击。5.2 温湿度串级 PID 与手/自动状态处理洁净空调温度控制我用了串级 PID副环控制送风温度主环控制房间温度。夏季时表冷器阀门开度由副环输出决定房间温度作为主环给定修正送风温度设定值。湿度控制相对滞后加湿阀用单回路 PID冬季湿度不够时自动开启加湿。PID 参数整定上送风温度副环比例带设窄一些响应快房间温度主环比例带宽一些避免超调。手动模式要特别小心操作员把阀门切到手动之后PID 输出必须跟随实际阀位反馈这样切回自动时才不会发生阀门突跳。模拟量阀位控制我用的输出是 0~100% 开度对应 WinCC 里的AO_ColdValve_Open。实际电动调节阀需要 4~20mA 信号PLC 输出模块直接把百分比线性转换成电流信号。5.3 风机启停顺序和压差报警联锁洁净空调不允许随意启停。开机顺序有严格要求先开送风机再开回风机/排风机最后开冷热源阀。关机顺序相反。这个顺序如果做不好洁净室会瞬间产生负压或气流倒灌。我在 PLC 里写了一个设备联锁字每个设备都有运行前置条件。比如送风机启动条件包括无急停信号、无火灾信号、初效过滤器压差不超限。这些条件都满足后WinCC 点击“启动”按钮才会有效。房间压差控制跟风机频率联动如果压差偏低首先检查风机频率是否够、送风量是否不足、排风阀开度是否太大。程序里压差 PID 和风机频率 PID 不能同时抢同一个执行机构我通常把压差作为外环风机频率作为内环形成另一个串级回路。6. 学习型项目文件怎么用目录结构、环境安装与模板复用6.1 项目文件该有的骨架这套洁净空调项目文件如果拿来做学习模板我建议重点关注它的目录组织方式。一个完整项目不要只给一个.ap17或.ap16项目文件而是应该包含以下内容01_项目说明工艺流程图、控制点表、联锁逻辑说明02_PLC程序博途 V16 项目文件03_WinCC项目WinCC 7.5 项目文件04_变量映射表PLC 变量与 WinCC 变量的对应表一般用 Excel05_操作手册给现场操作员看的操作说明06_备份归档PLC 程序备份、WinCC 项目备份、数据库备份。我见过很多项目交接时只给一个项目文件等调试人员换了一拨后面的人根本看不懂。目录清晰的项目文件本身就是工程经验的沉淀。6.2 WinCC 7.5 安装和个人电脑跑项目的准备关于 WinCC 7.5 安装网上搜“wincc7.5 安装教程”能找到很多但要注意版本兼容。我的安装步骤是先安装 SQL Server通常 WinCC 安装介质里自带版本要与 WinCC 匹配再安装 WinCC 7.5选择“单用户系统”安装完成后把当前 Windows 用户加到SIMATIC HMI和SQLServer相关用户组关闭 Windows 防火墙或放行相关端口否则 WinCC 客户端连不上服务器运行项目前先启动 WinCC 项目管理器确认项目激活无报错。个人电脑上跑这个洁净空调项目不一定需要真实 PLC。可以装博途 V16 的 PLCSIM用来模拟 S7-1500再配合 WinCC 7.5 做变量连接实现软仿真。不过要注意PLCSIM 里模拟的是 PLC 地址WinCC 里连接设置要指向 PLCSIM 的虚拟接口不能直接用普通 TCP/IP 连接。6.3 如何把洁净空调模板迁移到其他暖通项目我在项目文件里特意把洁净空调的专用逻辑和通用逻辑分开。比如FB_SupplyFan、FB_Valve这类属于通用设备块可以直接复制到组合式空调、新风机组、排风系统项目里。而压差梯度控制、洁净等级判断这些属于洁净室专用逻辑迁移到舒适性空调时要删掉。迁移时还有几个地方要改变量点表前缀从CleanRoom改成新项目名称WinCC 画面里的设备编号、房间编号全部替换报警文本重新梳理PID 参数要重新整定不同空调箱的尺寸、风量、盘管能力完全不一样。模板复用不是复制粘贴而是要理解模板里每个块的作用然后按新项目需求增删。7. 联调和现场排查实录7.1 PLCSIM 仿真联调时的变量断连博途 V16 里用 PLCSIM 和 WinCC 7.5 联调时最常遇到的现象是变量全部变成“未连接”或灰色。这个时候先别急着怀疑通信设置先检查 PLCSIM 是否真正进入了 RUN 状态再看 WinCC 变量管理里的连接是否显示绿色箭头。还有一个细节如果 WinCC 项目在仿真前已经用真实 PLC 地址运行过切换回 PLCSIM 后需要重新选择连接路径。我习惯在 WinCC 里把仿真连接和真实连接分别建好用“连接名称”区分调试时手动切换。7.2 DB 块优化访问与 WinCC 地址错位S7-1500 默认的 DB 是“优化访问”这个方式在博途内部很好用变量名直观但 WinCC 7.5 通过 S7 协议访问时容易出问题WinCC 里看到的地址往往是空的或者错位的。我踩过这个坑之后总结了两个办法如果坚持用优化 DB那上位机走 OPC UA把 S7-1500 的 OPC UA 服务器功能打开WinCC 里建 OPC UA 连接这种方式能识别变量名如果想沿用传统 S7 连接把需要 WinCC 读取的 DB 块属性里的“优化模块访问”取消勾选让变量分配绝对地址。最好一开始就规划好哪个 DB 给上位机读单独建一个非优化的通信 DB。否则程序做完再改调试工作量非常大。7.3 PID 调节中的毛刺与积分饱和处理在线调试温湿度 PID 时最容易遇到的问题有两个模拟量毛刺和积分饱和。模拟量毛刺主要来自变频器干扰或接线问题。我在程序里加了滤波处理也就是前面 UDT 里的FilterTime一般取 1~3 秒。滤波器时间太长会让 PID 响应迟钝太短又滤不掉高频干扰洁净空调系统建议先设 2 秒试。积分饱和则表现为阀门长期保持 100% 开度即使温度已经接近设定值阀门也不会回关。原因是偏差一直存在PID 积分项过度累积。我在 PID 指令前做了输出限幅并且把积分部分做成条件积分当阀门到上限且偏差未反向时冻结积分输出等偏差反向再放开。这些细节在现场是慢慢试出来的逻辑上看似简单但不写进去冬夏季节切换时肯定会出问题。这套项目文件沉淀下来之后我自己又把它改成了通用空调箱模板后续新项目直接从这套基础开始改省了不少时间。如果你正在学 WinCC7.5 和博途 V16 的结合应用我建议先不要急着追求花哨画面把设备功能块、通信 DB、点表对应关系这三个东西理顺再去做上位机组态思路会清晰很多。最后再分享一个调试心得做洁净空调联调时务必准备一台手持温湿度计和微压差计现场实测值永远是判断 WinCC 画面数据是否准确的终极依据。
返回列表