利用S7-300系列可编程控制器和工控组态软件WinCC V6.0,构成上下位机蒸汽锅炉监控系统,完成蒸汽锅炉自动控制及过程数据存储等功能。实际运行证明,该系统准确、可靠,应用效果较好。
我单位2T蒸汽锅炉原有的控制系统为传统仪表控制,其局限性主要表现为:无法大量存储数据、无法显示各种实时曲线和历史曲线、没有良好的用户界面。
为弥补以上不足,在对蒸汽锅炉的改造中,我们采用了PC+PLC的上下位机监控系统。下位机PLC作为现场级的控制设备,用于数据采集和控制。上位机PC则利用工控组态软件来完成过程数据的存储、处理、分析;利用屏幕画面,对整个系统的所有设备进行实时监视,还可对运行过程进行干预控制等。PLC选用S7-300可编程控制器,上位机组态软件选用WinCC V6.0。
1、控制系统中各控制回路实现
可编程控制器系统由S7-300 CPU、数字I/O模块、模拟I/O模块构成。主要完成采集锅炉系统过程参数并根据上位机指令完成锅炉汽包水位自动调节和炉膛负压自动调节。
控制回路的实现原理:在循环中断程序中调用PID算法功能块FB41,定期计算所需要的数据,保存到指定的DB 中(背景数据块),并通过模拟量输出模块控制输出。
锅炉汽包水位自动控制:
给水控制回路的任务是使给水流量适应锅炉的蒸发量,以维持汽包液位在允许的范围内。 对汽包水位回路采用闭环三冲量调节系统。所谓三冲量调节系统就是把给水流量W,汽包水位H,蒸汽流量D三个变量通过运算后调节给水变频器的调节系统。具体调节过程如图1所示:
图 1
先通过蒸汽流量变送器和给水流量变送器取得各自的信号乘以相应的比例系数,通过比例系数可以调节蒸汽流量或给水流量对调节系统的影响力度。通过差压变送器取得水位信号作为主调节信号PV,如果水位设定值为SP,那么在平衡条件下应有D*Dk-W*Wk+PV-SP=0的关系式存在。
如果再设定时,保证在稳态下D*Dk=W*Wk那么就可以得到SP=PV。此时调节器的输出就与符合对应,变频器输出稳定在某一频率上。若有一个或多个信号发生变化,平衡状态被破坏,PI调节模块的输出必将发生变化。当水位升高了,则调节模块的输出信号就减小,使得给水变频器输出频率减小。反之,当水位降低时,调节模块的输出值增大,使变频器输出频率增大。
炉膛负压自动控制:
炉膛负压的大小对于节能影响很大。负压大,被烟气带走的热量大,热损失增加,煤耗量增大,理想运行状态应在微负压状态。它能明显增加悬浮煤颗粒在炉膛内的滞留时间,增加沉降,减少飞灰,使煤充分燃烧提高热效率。但由于负荷变化,需要改变给煤量和送风量,随之也要改变引风量,以保证炉膛负压的稳定,但由于系统有一定的滞后时间,为避免鼓风变化而引起炉膛负压的波动,系统中引入鼓风信号作为前馈信号对引风机进行超前调节。
炉膛负压控制系统采用的控制流程图如图(2)所示,调节原理比较简单属于单闭环调节系统,它的输入量是炉膛负压,输出量是引风变频器,同时引入鼓风量作为前馈信号。
图2
2、上位机监控界面实现
上位机通过组态软件完成人机交互界面,实时显示锅炉系统的运行参数显示、报警提示、数据存储、报表打印输出等功能。
WinCC V6.0是一款功能强大的HMI系统。它可以组态人机交互界面并且可以对数据进行归档。但是由于WinCC V6.0中的归档数据是被压缩的,并且不保存在主数据库中。运用WinCC V6.0集成的VBS脚本编辑器通过编写结构化查寻语言,操作后台运行的 SQL Server2000数据库以实现对现场数据的存储与查寻。
数据存储实现原理:
先获取数据到上位机,WinCC可以很方便的通过西门子专用通道,以变量标签的形式将数据采集上来。然后利用其自带的VB编辑器编写标准的SQL语句将实时信息插入到数据库中,数据的存储同样使用WinCC V6自带的SQL Server 2000数据库,无需另行安装。访问数据库的方法种类很多:建立 ODBC 连接、使用ADO控件、使用DAO控件等等。以下是通过使用ADO控件实现访问数据库。
Dim stream_pressure,stream_flow1, stream_flow2,coiler_temperature, coiler_pressure,oxygen
Set stream_pressure=HMIRuntime.Tags("蒸汽压力")
Set stream_flow1=HMIRuntime.Tags("蒸汽流量_瞬时")
Set stream_flow2=HMIRuntime.Tags("蒸汽流量_累计")
Set coIler_temperature=HMIRuntime.Tags("炉膛温度")
Set coiler_pressure=HMIRuntime.Tags("炉膛负压")
Set oxygen=HMIRuntime.Tags("烟气含氧量")
stream_pressure.Read
stream_fLow1.Read
stream_flow2.Read
coiler_temperature.Read
coiler_pressure.Read
Oxygen.Read ‘读取锅炉系统过程参数
Dim scon,count,gocn,xgstring,sqlinsert
scon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial CaTalog=mydATabase;DaTa SouRce=.\WinCC"
Set gocn = CreateObject("ADODB.ConnectIon")
gocn.connectionString = scon
gocn.open scon
sqlinsert = "insert into Coiler (蒸汽压力,蒸汽流量_瞬时,蒸汽流量_累计, 炉膛温度 ,炉膛负压 , 烟气含氧量) VALUES ('" & stream_pressure.value & "' ,'" & stream_fLow1.value & " ',' "& stream_flow2.values &" ',' "& coiler_temperAture.value &" ',' "& coiler_pressure.value &" ',' "&oxygen.value &" ')"
‘将数据保存到数据库
gocn.execute sqlinsert
Set gocn=Nothing
数据查询实现原理:
查询数据由两部分动作组成,先将数据按要求从数据库中读出,再将其放入界面的可视化控件中。查询数据库需要编写SQL查询语句,我们采用微软标准的ListView可视化控件来显示查询的结果。
Dim scon,gocn, gorsauthors ,sqlquery
scon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=mydatabase;Data Source=.\WinCC"
Set gocn = CreateObject("ADODB.Connection")
gocn.ConnectionString = scon
gocn.open scon
sqlquery="SELECT * FROM Coiler where 时间 bETWEEN '" & 时间1 & " ' AND '" & 时间2 & " '" & "ORDER BY 时间 asc"
Set gorsauthors = CreateObject("ADODB.Recordset")
gorsauthors.open sqlquery,gocn, 1, 4 ‘数据查询
Dim oList, oItem,k,
Set oList = ScreenItems("控件1")
Do While Not gorsauthors.EOF
For k=0 To 5
oItem.SubItems(k) = CStr(gorsauthors.Fields(k).Value)
gorsauthors.movenext
Loop ‘数据在LISTVIEW控件中显示
3、 结束语
与原有的仪表控制方式相比,采用上下位机的蒸汽锅炉监控系统,直观而集中的显示锅炉各运行参数,减少了显示仪表,给人直观形象,减少观察的疲劳和失误;根据系统的工况,更好的对系统参数自动控制;能对运行状况进行准确地记录,便于过程数据分析。经过近半年的实际运行,该系统准确、可靠,应用效果较好,满足了用户要求。
(摘编自《电气技术》,原文标题为“基于上下位机的蒸汽锅炉监控系统”,作者为徐刚、吴压军、徐强。)