西门子S7-1500与WinCC在烟气脱硫自动化中的实战应用
在工业自动化项目中,PLC与上位机监控系统的集成是实现复杂工艺流程自动化的核心。近期在参与一个烟气处理系统的改造项目时,需要为“除硫”工艺段设计一套完整的自动控制方案,核心设备便是西门子S7-1500系列PLC和WinCC上位监控软件。从硬件组态、控制逻辑编写到人机界面设计与数据归档,整个过程涉及大量工程细节。本文将以此为例,系统性地拆解一个完整的“除硫自动设备”应用实例,涵盖从项目规划、硬件选型、TIA Portal编程到WinCC组态的全流程,并提供可复用的代码块、画面模板和常见问题排查清单,旨在为自动化工程师和初学者提供一个可直接参考的实战指南。
1. 项目背景与工艺需求分析
在深入技术细节之前,必须明确控制对象和工艺目标。本例中的“除硫自动设备”通常指烟气脱硫(FGD)系统中的关键子系统,例如石灰石-石膏湿法脱硫中的吸收塔循环泵、氧化风机、石膏排出泵等设备的联动控制。
1.1 工艺简述与自动化目标
除硫工艺的核心是通过碱性浆液(如石灰石浆液)与烟气中的二氧化硫进行化学反应,从而去除硫氧化物。自动化系统需要实现以下目标:
- 顺序启停控制:设备间存在严格的启停顺序,例如必须先启动循环泵,才能启动对应的氧化风机,以避免设备空转或背压过高。
- 闭环调节控制:根据烟气入口的SO₂浓度、烟气流量以及浆液pH值,实时调节石灰石浆液的供给量(通过调节浆液泵频率或调节阀开度)。
- 联锁与保护:设备需要完善的联锁保护,如浆液箱液位低时连锁停泵,电机轴承温度高时报警并连锁停机。
- 数据监控与归档:在上位机(WinCC)上实时显示所有工艺参数(压力、温度、流量、pH值)、设备状态(运行/停止/故障),并记录历史数据用于工艺分析和报表生成。
- 报警管理:系统能及时捕捉工艺越限和设备故障,产生声光报警并记录报警事件。
1.2 系统架构设计
基于上述需求,我们设计如下系统架构:
- 控制层:采用一台西门子S7-1500系列PLC(如CPU 1515-2 PN)作为主控制器。其高性能和强大的通信能力足以处理复杂的模拟量运算和逻辑联锁。
- IO层:通过ET200MP分布式I/O站扩展数字量输入/输出模块(DI/DO)和模拟量输入/输出模块(AI/AO),用于连接现场的电机、阀门、传感器(pH计、流量计、压力变送器)。
- 驱动层:关键泵和风机采用西门子G120系列变频器控制,通过PROFINET网络与PLC集成,实现频率给定、状态反馈和故障读取。
- 监控层:在一台工业计算机上安装西门子WinCC Runtime Advanced或Professional,通过以太网与S7-1500 PLC通信,构建人机交互界面。
- 网络:整个系统基于工业以太网(PROFINET)构建,实现控制器、HMI、驱动器和远程I/O之间的高速数据交换。
2. 环境准备与软件配置
在开始编程和组态前,需要搭建统一的工程平台。
2.1 软件清单与版本说明
- TIA Portal(博途):这是西门子新一代全集成自动化软件,是编程和组态的核心。本文示例基于 TIA Portal V17。请确保安装时选择了以下软件包:
- STEP 7 Professional (用于S7-1500 PLC编程)
- WinCC Advanced 或 Professional (用于组态PC站上的WinCC Runtime)
- PLC硬件:CPU 1515-2 PN (固件版本 V2.9)
- 仿真环境:可使用 PLCSIM Advanced 对PLC程序进行高级仿真,或使用普通PLCSIM配合WinCC连接仿真。
重要提示:不同版本的TIA Portal在界面和功能上可能有细微差别。请根据实际项目使用的硬件固件版本选择合适的TIA Portal版本。本文的代码和配置思路通用,但具体操作路径需根据实际软件版本调整。
2.2 TIA Portal项目结构创建
- 打开TIA Portal,点击“创建新项目”,命名为“FGD_Desulfurization_Auto”。
- 在项目视图中,添加新设备:
- 控制器:选择正确的S7-1500 CPU型号(如
CPU 1515-2 PN)。 - HMI:添加一个“PC系统” -> “WinCC Runtime Advanced”,并选择对应的版本。这将创建一个与PLC关联的HMI站点。
- 控制器:选择正确的S7-1500 CPU型号(如
- 网络视图:将HMI_1与PLC_1通过以太网接口拖拽连接,建立HMI连接。系统会自动生成一个名为“HMI_连接_1”的连接。
3. PLC程序设计:从硬件组态到控制逻辑
PLC程序是自动化的“大脑”,其结构清晰和稳定可靠至关重要。
3.1 硬件组态与设备参数设置
在“设备视图”中完成PLC和I/O模块的组态。
- 添加IO模块:在CPU右侧的插槽中,依次添加实际的DI、DO、AI、AO模块。例如,添加一个
DI16x24VDC模块和一个AI8xU/I模块。 - 分配设备名称和IP地址:这是PROFINET网络正常通信的基础。为CPU和每个IO设备分配唯一的设备名称(如“plc-main”、“et200mp-01”)和IP地址(如PLC: 192.168.0.1)。
- 配置模拟量模块:双击AI模块,在“模块参数”中,为每个通道设置测量类型(如“电流4-20mA”)和测量范围(如“4-20mA对应0-100.0 pH”)。这样PLC会自动将采集到的原始值(如27648)转换为工程值(如10.5 pH)。
3.2 数据块(DB)规划:创建工艺数据模型
良好的数据规划是程序可读性和可维护性的关键。建议为不同类型的数据创建不同的全局数据块(DB)。
DB_Device_Status:设备状态数据块。DB_Process_Params:工艺参数数据块。DB_Control_Cmd:控制命令数据块(由HMI或上级系统下发)。DB_Alarm:报警数据块。
以 DB_Process_Params 为例,其结构可定义如下:
在TIA Portal中,你可以在DB的“声明视图”中直接以表格形式添加这些变量,并设置数据类型和初始值。
3.3 编写控制程序:组织块(OB)、函数(FC)与函数块(FB)
采用模块化编程思想。
- 主循环组织块(OB1):调用各个功能子程序。PASCAL// OB1: MainCALL “FC_Device_Control” // 设备控制CALL “FC_PID_Control” // 闭环调节CALL “FC_Alarm_Processing” // 报警处理CALL “FC_Data_Exchange_HMI” // HMI数据交换
- 设备控制函数(FC_Device_Control):实现循环泵、氧化风机等设备的启停逻辑和联锁。PASCAL// FC_Device_Control 中的一段逻辑(循环泵启动允许)#bPump_StartPermissive := #bSystem_Auto AND // 系统处于自动模式NOT “DI_Pump_Fault” AND // 无故障信号“DI_Absorber_Level_High” AND // 吸收塔液位正常(高信号)#rpH_Value_LowLimit; // pH值不低于低限// 启动命令(来自HMI或顺序控制)IF #bPump_StartCmd AND #bPump_StartPermissive THEN“DO_Pump_Run” := TRUE;END_IF;
- PID控制函数块(FB_PID_Control):使用集成的
PID_Compact工艺对象来控制浆液调节阀,稳定pH值。- 在工艺对象中添加“PID_Compact”控制器,命名为“PID_pH_Control”。
- 在背景数据块中配置输入(
pH_Value)、设定值(pH_Setpoint)、输出(Valve_Opening)等参数。 - 在循环中断OB(如OB30)中调用
PID_pH_Control,确保固定周期执行。
3.4 仿真测试
在下载到真实硬件前,务必使用PLCSIM进行仿真测试。
- 在TIA Portal中启动仿真。
- 将项目下载到仿真PLC。
- 切换到“在线”模式,监视和修改数据块中的变量值(如强制
pH_Value),观察设备输出位和PID输出是否按逻辑变化。
4. WinCC上位机画面组态
WinCC作为“眼睛”和“窗口”,需要直观展示工艺并提供可靠的操作接口。
4.1 连接与变量管理
- 确认HMI连接:在HMI设备的“连接”设置中,检查与S7-1500的连接(
HMI_连接_1)是否正常,PLC的IP地址是否正确。 - 创建外部变量:在WinCC的“变量管理”中,通过已建立的连接,直接从PLC的DB块中拖拽变量到HMI变量表。例如,将
DB_Process_Params.pH_Value拖过来,会自动创建名为pH_Value的HMI变量,与PLC变量实时同步。
4.2 工艺画面设计
- 主流程画面:使用管道、泵、阀门、塔罐等标准图库对象,绘制除硫工艺的P&ID流程图。将动态对象(如泵)与HMI变量连接。
- 泵状态显示:将一个“圆”的“背景颜色”动画连接到泵的运行变量。使用“布尔型”动画,定义
0为灰色(停止),1为绿色(运行)。 - 阀门开度显示:将一个“管道”对象的“宽度”动画连接到阀门开度变量(
0-100%对应0-50像素)。 - 数据显示:使用“IO域”连接至
pH_Value、Absorber_Level等变量,用于显示实时值。
- 泵状态显示:将一个“圆”的“背景颜色”动画连接到泵的运行变量。使用“布尔型”动画,定义
- 操作面板:为每个重要设备(如循环泵)创建一个弹出式“操作面板”画面。面板上包含:
- 设备名称、运行/停止/故障状态指示灯。
- “手动/自动”模式切换开关。
- “启动”、“停止”按钮(在手动模式下生效)。
- 相关工艺参数显示(如电流、温度)。
- 将该操作面板制作成“Faceplate”(面板),在流程图上泵的旁边插入一个“面板实例”,关联到具体的设备变量,实现一键弹出操作。
4.3 报警与用户管理
- 报警组态:
- 在“报警管理”中创建自定义报警类别,如“工艺报警”、“设备故障”。
- 添加离散量报警:当
DB_Alarm.bPumpFault为1时,触发“循环泵A故障”报警,文本中可包含%1(泵位号)等参数。 - 添加模拟量报警:为
pH_Value设置上下限报警(如高报9.5,高高报10.0;低报4.5,低低报4.0)。 - 在画面中添加“报警视图”控件,显示当前和历史报警。
- 用户管理:
- 在“用户管理”中创建不同权限的用户组,如“操作员”、“工程师”、“管理员”。
- 为关键操作(如模式切换、参数修改)设置“权限”属性,只有“工程师”及以上权限才能操作。
4.4 数据归档与趋势显示
- 归档组态:在“归档管理”中创建过程值归档。将需要记录的变量(如
pH_Value,SO2_Inlet)添加到归档中,设置归档周期(如1秒)和存储位置。 - 趋势画面:新建一个画面,添加“趋势视图”控件。为该控件分配刚才创建的过程值归档,即可在画面中显示实时及历史趋势曲线,方便工艺分析。
5. 系统集成调试与常见问题排查
将PLC程序下载到实体CPU,WinCC项目下载到工控机,进行联调。
5.1 下载与连接
- PLC下载:使用网线连接PC与PLC,在TIA Portal中搜索到目标设备后,下载硬件配置和软件。
- WinCC下载:在TIA Portal的HMI设备中,选择“下载到设备”,将编译后的WinCC项目传送到工控机并启动运行。
- 连接测试:在WinCC运行后,检查连接状态。可以在PLC的在线诊断中查看HMI连接是否建立。
5.2 常见问题与解决方案
| 问题现象 | 可能原因 | 排查思路与解决方案 |
|---|---|---|
| WinCC与PLC无法通信 | 1. IP地址不在同一网段。 2. 防火墙或安全软件阻止。 3. PLC设备名称与组态不一致。 |
1. 检查PC和PLC的IP地址、子网掩码。 2. 暂时关闭防火墙测试。 3. 在TIA Portal网络视图中,使用“在线与诊断”功能,为PLC分配正确的设备名称。 |
| 画面上变量显示“####” | 1. 通信中断。 2. 变量地址错误或PLC中不存在。 3. 数据类型不匹配。 |
1. 检查通信连接状态。 2. 核对WinCC变量表中的PLC变量地址是否与DB块中完全一致。 3. 检查变量数据类型(如PLC是Real,HMI也应是32位浮点数)。 |
| 设备不按逻辑动作 | 1. 联锁条件不满足。 2. PLC程序扫描周期问题。 3. 输入/输出模块故障或地址错误。 |
1. 在线监控PLC程序,查看启动允许信号#bPump_StartPermissive是否为TRUE。2. 检查程序是否在正确的OB中调用。 3. 使用PLC的强制表,强制相关输入点,观察输出点是否响应。 |
| PID调节效果差或振荡 | 1. PID参数(P、I、D)不合适。 2. 采样周期设置不当。 3. 阀门或执行机构存在死区或滞后。 |
1. 使用PID_Compact的自整定功能,或根据工艺特性手动微调。2. 确保调用PID的OB循环中断时间稳定且合适。 3. 检查现场阀门定位是否准确,反馈是否及时。 |
| WinCC报警不产生或记录 | 1. 报警未启用或类别错误。 2. 报警变量未触发或触发时间太短。 3. 归档未启动。 |
1. 检查报警属性中的“启用”选项和报警类别设置。 2. 在线监控报警变量,确认其触发状态能保持到WinCC扫描到。 3. 检查WinCC的“报警记录”和“变量记录”运行系统是否启动。 |
6. 工程最佳实践与进阶建议
一个可维护、可扩展的自动化项目,需要在初期就考虑以下方面。
6.1 编程规范
- 命名规范:采用统一的命名规则,如变量前缀(
b表示Bool,r表示Real,i表示Int)、DB块名、FC/FB名应具有描述性(如FB_Valve_Control)。 - 注释与文档:在每个程序块、网络段添加详细注释,说明功能、作者、修改记录。使用TIA Portal的“任务卡”->“文档”功能维护项目文档。
- 模块化与复用:将通用功能封装成FC或FB(如电机控制、阀门控制、模拟量缩放),通过输入输出参数调用,提高代码复用率。
6.2 系统可靠性设计
- 心跳检测:在PLC与WinCC之间建立“心跳”信号,用于监控通信状态。可以在PLC中创建一个周期性翻转的Bool变量,在WinCC中检测其变化,超时则提示“通信故障”。
- 初始化与模式管理:系统上电或模式切换时,应有明确的初始化程序,将设备置于安全状态(如所有输出置0,PID切换为手动)。
- 故障安全:重要的联锁信号应使用常闭(NC)触点接入PLC,这样断线时会产生故障信号,触发停机保护。
6.3 WinCC性能与维护
- 画面优化:避免在一个画面中放置过多动态对象或复杂脚本,可分割为多个画面,使用“画面窗口”动态加载。
- 归档策略:根据数据重要性设置不同的归档周期。关键工艺参数(如pH值)1秒归档,一般状态参数可10秒或1分钟归档。定期备份和清理历史数据。
- 用户权限细化:严格区分操作员和工程师权限。参数修改、配方下载等高级操作必须由工程师执行并记录操作日志。
通过以上从需求分析到系统上电调试的完整流程,一个基于西门子S7-1500和WinCC的除硫自动设备控制系统就搭建完成了。这套框架不仅适用于烟气脱硫,也适用于水处理、化工、制药等行业的流程控制项目。关键在于深入理解工艺,进行合理的软硬件规划,并遵循模块化、规范化的工程方法进行开发。在实际项目中,可能还会涉及与第三方设备(如分析仪)的通信(Modbus TCP)、与厂级MES系统的数据对接等更复杂的内容,但掌握了本文所述的核心架构与开发方法,这些扩展都将有坚实的基础。