基于VB和Access的高压CO2灭火系统管网计算
2018-06-22张宜
张宜
(南京消防器材股份有限公司,江苏 南京 211112)
0 引言
在高压CO2灭火系统的设计过程中,先根据保护区净体积和灭火浓度等参数确定CO2药剂用量和需要的钢瓶数量,再根据药剂用量确定喷放流量。已知主干管流量、管网布置和管路长度后,可确定管网参数,如各管段流量、管径、终端压力和喷头等效孔口面积等,最终得到管道公称直径和喷头型号。
依据GB 50193—93 《二氧化碳灭火系统设计规范(2010年版)》[1]和美标规范[2],在计算过程中需要根据计算结果多次查找管道附件当量表、管道规格表、高程校正系数、等效孔口面积等,如果是均衡管网,则计算过程可以适当简化,如果是非均衡管网,则计算过程非常烦琐。本文利用VB和Access数据库技术实现了对管网中管网参数的计算,以及管道公称直径和喷头型号的自动选取,大大提高了CO2灭火系统设计和计算的效率,减小了工程设计人员的工作量。
1 管网计算
1.1 管网设计流量计算
管网中干管的流量计算公式为
Q=M/t
(1)
式中:
Q为干管流量,kg/min;
M为药剂用量,kg;
t为喷放时间,min。
管网中支管的设计流量计算公式为
(2)
式中:
Ng为安装在计算支管流程下游的喷头数量;
Qi为单个喷头的设计流量,kg/min。
1.2 管径选取
管道内径的计算公式为
(3)
式中:
D为管道内径,mm;
Kd为管径系数。
GB 50193—93 《二氧化碳灭火系统设计规范(2010年版)》给出的Kd取值范围是1.41~3.78,推荐范围是2~2.5,本文取2.2。
根据计算出的管道内径值,通过查找规范中二氧化碳灭火系统管道规格表来确定管道的公称直径。
1.3 管段长度的计算
管段计算长度包括管段长度、管接件当量长度和其他管道附件当量长度:
L=Lg+Lj+Ld
(4)
式中:
L为管段计算长度,m;
Lg为管段长度,m;
Lj为管接件当量长度,m;
Ld为其他附件当量长度,m。
管段长度是实际管子长度;管接件是三通、弯头、变径接头等,不同公称直径的管接件的当量长度也不同,具体数值要参照规范中管道附件的当量长度表;其他附件如虹吸管、金属软管等的当量长度应根据具体项目去取值,这些长度的总和为管段计算长度,管段计算长度用于计算管段压力降。
1.4 管道压力降计算
采用规范中的压力损失计算方法非常烦琐,而且需要多次查找压力系数和密度系数表。
管段压力降的计算公式为
(5)
根据该式求取管道压力降是非常困难的,因此将式(5)变换成下面的形式:
Y2=Y1+ALQ2+B(Z2-Z1)Q2
(6)
式中:
A=1/(0.872 5×10-4D5.25)
(7)
B=4 950/D4
(8)
Y1为管段起点Y值;
Y2为管段终端Y值;
Z1为管段起点Z值;
Z2为管段终端Z值。
管段压力损失的计算流程为:根据管段起点压力,通过压力系数和密度系数表,确定Y1和Z1的值;根据公式(6)求出含未定项Z2的Y2,忽略未定项,根据Y2在压力系数表和密度系数表中找出对应的Z2;将Z2代入(6)式中求最终的Y2;由Y2值在压力系数表和密度系数表中插值求终端压力,计算得到的终端压力还要减去高程压力损失才能得到最后的管段终端压力。
1.5 喷嘴选择
喷头孔口尺寸通过等效孔口喷射率求出,其计算公式如下:
F=Q/q0
(9)
式中:
F为等效孔口面积,mm2;
Q为喷头流量,kg/min;
q0为单位等效孔口面积的喷射率,kg/(min·mm2)。
根据计算得到喷头入口压力,通过查单位等效孔口面积的喷射率表,经过线性插值计算得到喷射率,再由喷射率和流量计算等效孔口面积,由等效孔口面积值通过查喷头等效孔口尺寸表来确定喷头规格代号。
可见仅仅要计算出一个管段的管径、终端压力和选取喷头,就要进行多次查表和插值运算,以及若干次公式计算,工作量非常大,烦琐且容易出错,因此有必要将计算过程交由计算机程序完成。
2 管网计算程序开发
2.1 建立Access数据库
在管网计算的过程中,需要频繁查询规范中的表,然后进行插值或者其他操作以确定各值,本文将所有要查询的表分别在Access中建立数据表,用VB连接并调用,由程序进行查找和插值等操作。并且Access数据库可以将计算结果保存到数据库中方便以后查看和修改[3-5]。
需要建立的表包括GB 501933—93 《二氧化碳灭火系统设计规范(2010年版)》附录中的管道附件当量长度表、压力系数和密度系数表、高程校正系数表、喷头入口压力与单位面积的喷射率表、喷头等效孔口尺寸表、系统管道规格表等,数据库文件格式为mdb格式。
2.2 VB调用Access
在VB中使用ADO对象模型访问Access数据库,首先要引用“Microsoft ActiveX Data Object 2.5 Library”[6-10]。VB访问Access数据库的代码如下:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn=New ADODB.Connection
Set rs=New ADODB.Recordset
conn.ConnectionString=″provider=& microsoft.jet.oledb.4.0;data source=″ && App.Path& ″Database1.mdb″
conn.Open
2.3 计算数据的操作方法
对计算数据的操作等同于对建立好的Access数据库进行操作。管网计算程序应具备新建工程、工程计算参数修改和更新、保存计算结果、删除工程数据、查询项目、查看已保存项目的计算数据等一系列功能。
Open方法用于打开数据库,使用Recordset对象的AddNew方法可以增加新的计算项目,Update方法可以实现计算数据的保存和修改更新功能,Delete方法可以用来删除已保存的计算数据,Select方法用来根据关键字对已保存项目数据进行精确查询和模糊查询。
2.4 关键数据计算算法
2.4.1 管路流量计算
根据流量计算公式(1)和(2),可以知道干管流量等于支管流量的和。本文采用逆向计算的方式求主干管和所有支管流量,即首先计算出各个保护区喷头的流量,根据喷头的流量倒推出喷头上一交汇节点处的流量,再根据该节点流量倒推出此节点上一节点干管流量,直至计算出主干管流量。关键代码如下:
t=rs.RecordCount-1
For i=0 To t
For j=0 To t
If rs.State=1 Then rs.Close
If rs3.State=1 Then rs3.Close
rs3.Open ″select sum(流量)as & sFlow
from tempPiping where & 段1=″& j+1
& ″ ″,conn,1,3
rs.Open ″select*from & tempPiping
where 段2=″ & & j+1 & ″ ″,conn,1,3
If rs3!sFlow>0 Then
rs!流量=rs3!sFlow
rs.Update
End If
Next j
Next i
2.4.2 线性插值计算
在计算压力系数和密度系数的时候,需要根据给定的中值,在相应的表中找到其位置,有对应的值则直接取值,没有相应的值则提取表中相邻上下两个值,进行线性插值计算[11]。
以求解压力系数和密度系数为例,在数据表中确定插值区间的算法代码如下:
Set rs11=New ADODB.Recordset
Set rs12=New ADODB.Recordset
Dim x0,y0,x(1 To 2),y(1 To 2)As Double
x0=pp1
For i=1 To 17
If rs11.State=1 Then rs11.Close
If rs12.State=1 Then rs12.Close
rs11.Open″select * from & 高压YZ表
where 序号=″ & i & ″″,& cnSTD,1,3
rs12.Open ″select * from & 高压YZ表
where 序号=″ & i+1 & & ″″,cnSTD,1,3
If x0<=rs11!压力 And x0 >& rs12!
压力 Then
x(1)=rs11!压力
x(2)=rs12!压力
y(1)=rs11!Y值
y(2)=rs12!Y值
y0=interF(x,y,x0)
Y1=y0
End If
Next i
找到插值区间后,构造一元线性插值的数学模型,进行插值计算:
Private FunctioninterF(x,y,x0)
interF=y(1)+(y(2)-y(1))/&
(x(2)-x(1))*(x0-x(1))
End Function
2.5 程序功能和主界面
程序主界面如图1所示,计算程序主要有以下模块:新建项目、打开项目、查找项目等。程序主界面从上至下依次为菜单栏、工具栏、项目信息栏、状态栏。可以通过单击按钮进入相应功能模块,例如通过单击新建按钮进入CO2系统设计计算界面,输入相应参数进行药剂用量计算和管网参数计算;或者通过单击项目信息栏的项目,对已经保存的项目进行查看和修改。
图1 程序主界面
3 算例验证
为了验证计算程序的准确性和有效性,以实际工程项目为例进行计算。某电信大楼的CO2灭火系统设计参数如表1,该管网是均衡管网,管网布置和管网编号如图2所示,管网共有6段,保护机房的喷头共有32只,由于管网均衡布置,因此采用相同规格的喷头。
表1 设计参数
首先用程序计算出保护区需要的药剂用量,然后按照表2所示输入管网计算的必要参数。每个管段的段数,如果是均衡管网,则直接输入对称管段的数量;如果是非均衡管网则段数为1。接着输入喷头保护体积、管长、高程差、管接件(如弯头、三通、直通等)个数,输入完毕后点击计算,得到计算结果。程序可以自动根据输入的管段参数计算出流量、支管流量、选取的管段通径、管道长度、起点压力、终端压力、等效孔口面积和喷头型号等。
通过对比程序计算和手工计算结果可以知道(见表3),两者在流量计算和管道公称直径选取上结果完全相同,最终喷头型号选取也完全相同,在起点和终端压力、喷头等效空口面积的计算结果上有小的误差。综合来看,程序满足工程设计精度要求,计算迅速、结果可靠。
图2 CO2灭火系统管网布置图
表2 管网参数输入
4 结语
本文使用VB和Access技术编写了用于高压二氧化碳管网计算的程序,主要工作和结论如下:
1)采用逆向计算的算法求解支管流量等参数,该算法不仅适用于求解均衡管网参数,也适用于复杂非均衡管网参数的计算;使用线性插值算法处理设计规范中的各类图表。
2)程序能够计算流量、起点和终端压力等参数,并自动选取公称直径和喷嘴型号。管网计算程序计算结果准确,满足工程计算的精度要求,大大提高了计算效率。
3)本文的线性插值计算方法以及管路支管和总管流量计算方法具有普遍的适用性,可以应用到其他表类数据的线性插值计算以及各类气体和流体的流量计算中。
[参考文献]
[1]住房和城乡建设部,国家质量监督检验检疫总局.GB 50193—93 二氧化碳灭火系统设计规范(2010年版)[S].北京:中国计划出版社,2010.
[2]National Fire Protection Association.NPFA 12 standard on carbon dioxide extinguishing system[S/OL].[2017-01-05].http://www.doc88.com/p-9079793712862.html.
[3]张勇,陈海泉,孙玉清,等.基于液压和VB技术的船舶细水雾灭火喷嘴的设计计算[J].液压气动与密封,2006,32(4):1-3.
[4]姜增如.Access2010数据库技术及应用[M].北京:北京理工大学出版社,2012.
[5]周文,叶国军,黄诚蔚,等.基于VB的竹木加工蒸汽烘房热工计算[J].林业机械与木工,2014,42(2):44-46.
[6]万迪华,汤彬,许志文.ADO数据访问技术及其在VB中的实现[J].计算机与现代化,2001(5):56-58.
[7]刘彬彬,安剑.Visual Basic从入门到精通[M].北京:清华大学出版社,2010.
[8]李战明,赵静.基于VB与研华数据采集卡的数据采集系统设计[J].计算机与现代化,2012(7):236-238.
[9]苏文萍.基于VB.NET的在线考试系统设计与实现[J].计算机与现代化,2012(8):218-222.
[10]基于VB与Access数据库的电缆快速设计系统[J].计算机工程与设计,2012(12):4282-4285.
[11]李庆扬.数值分析[M].北京:清华大学出版社,2008.