钱子俊
(浙江绿城建筑设计有限公司,浙江 杭州 310007)
Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类运算,再配合使用填充柄可以快速将公式复制到相邻单元格,进行批量数学和函数运算,从而大大简化了数据的处理工作。但是以Excel的常用功能函数处理较复杂的迭代运算时,仍需进行大量的人工操作。Excel的VBA宏功能的引入则使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。
本文探讨利用Excel的VBA宏功能,创建一个自定义函数,通过此函数批量计算减压孔板的孔径值,可以减少设计工作量,也为处理建筑给排水专业其他类似计算问题提供了一种解决方案。
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。因此,对于在工作中需要经常使用Excel软件的用户,学用VBA 有助于使工作自动化,提高工作效率。
《自动喷水灭火系统设计规范(GB 50084—2017)》[1](以下简称《新喷规》)第8.0.7条,轻危险级、中危险级场所中各配水管入口的压力均不宜大于0.40 MPa。一般减压孔板前压力H1为已知值,因此,通过此条文可以求得减压孔板的水头损失Hk。
《新喷规》第9.3.3条,减压孔板的水头损失按下式计算:
(1)
(2)
Vk=Q/A
(3)
式中:dk为减压孔板的孔口直径,mm;
Hk为减压孔板的水头损失,10 kPa;
Vk为减压孔板后管道内水的平均流速,m/s;
ξ为减压孔板的局部阻力系数;
A为管道截面积,m2。
从公式可以看出,减压孔板的孔口直径dk和管段管径D对水头损失有较大影响,确定这两个数据对最终的计算结果有重要意义。
《消防给水及消火栓系统技术规范(GB 50974—2014)》[2]第10.3.3条规定,减压孔板的孔口计算内径dk,取值应按减压孔板孔口直径减 1 mm确定。而《新喷规》是按减压孔板的孔口直径确定。两本规范对dk的取值存在矛盾之处,笔者认为,减压孔板的孔口计算内径dk应按《消防给水及消火栓系统技术规范(GB 50974—2014)》的取值方法。因为管道内的连续流动流体在经过孔板时,流体截面急剧收缩,在管壁处产生阻力大,流速降低大,流速低,压力高;而管道中心处流速大,压力低,其结果使流体在径向由孔板中心至边缘形成加速度。在这一径向加速度的影响下,靠近管壁的流体质点流向发生偏转向孔板口处流动,形成流束的局部收缩(图1),由于惯性作用,在管子突然缩小处流动截面并不立即扩大到与小管的截面积相等,而是继续收缩一定距离后才逐渐扩大到整个小管截面。
图1 流体在节流后流速收缩图
陈礼洪等[3]论述了给水管直径D的取值对孔板水头损失计算影响。对计算内径小于公称直径的管(如DN70、DN80),剩余水头减得不够,影响系统均匀配水;对计算内径大于公称直径的管(如DN100、DN125、DN150),所减水压大于剩余水头,影响系统供水的安全。推荐性国家标准《低压流体输送用焊接钢管(GB/T 3091—2008)》计算内径的值也有所不同,见表1。
表1 镀锌钢管计算内径
目前工程设计中,减压孔板的计算主要有两种方法:查表法和计算软件法。
查表法是将各种不同管径、孔板孔径及流速(v通常取1 m/s)代入式(1)和式(2)中,求得相应的Hk,并将所得的Hk编成减压孔板的水头损失表。使用时,只要已知剩余水头H及给水管直径D,就可从表中查得所需孔板孔径d。若水流通过孔板后的实际流速v不等于1 m/s时,则须按式(4)进行修正,并按修正后的剩余水头查表。此法过程繁琐,工作量大,且计算精度不能保证。
(4)
式中:H′为流速为1 m/s的剩余水头,kPa;
H为设计剩余水头,kPa。
计算软件法是利用各种减压孔板计算软件,通过输入管径、流量、减压值,由软件得到计算结果。此方法每次只能输入一个减压值,得到一个结果,对多次运算计算量也较大。但是由于不能看到计算的中间过程,因此对计算结果准确性不能保证。
在工程计算中,减压孔板前压力H1,系统设计流量Q和管段管径D为已知值,而孔板直径dk和减压后压力H2为未知值。在减压孔板的计算中,通过对孔板直径的迭代运算,求得不同孔板直径的水头损失,使得最终的减压后压力H2<40 m。对于设喷淋系统的高层或超高层建筑,由于每层减压前压力值H1不同,计算各层减压孔板时,都需要通过多次迭代,求得孔板直径。
VBA的编程语言,在迭代运算中具有相当大的优势,且能自动判断计算值是否符合预期值。通过编写一个自定义函数,运用DO/Until的循环功能,可求得减压孔板值,再结合Excel的自动填充柄功能,即可实现批量计算减压孔板孔径值。
对减压孔板进行计算的VBA宏程序代码如下:
Public Function Func(H1 As Double, pipe_dn As Integer, Q As Single);定义函数名Func
Dim g As Single, hole_dn As Integer, s As Double, H0 As Double, H2 As Double, V As Double
Dim pi As Double, X As Single
pi = 3.14159265258979
hole_dn = 100
Select Case H1
Case Is > 40
Do
hole_dn = hole_dn - 1
s = (1.75 * (pipe_dn) ^ 2 * (1.1 - (hole_dn - 1) ^ 2 / (pipe_dn) ^ 2) / ((hole_dn - 1) ^ 2 * (1.175 - (hole_dn - 1) ^ 2 / (pipe_dn) ^ 2)) - 1) ^ 2
V = 4000 * Q / (pi * (pipe_dn) ^ 2)
H0 = s * (V) ^ 2 / 2 / 9.81
H2 = H1 - H0
Loop Until H2 < 40;若H2<40则退出循环。
FUNc = hole_dn
Case Is <= 40
FUNc = "不减压"
End Select
End Function
实际操作步骤如下(以Excel 2013版本为例):
第一步:首先新建Excel文件,然后另存为减压孔板计算.xlsm(Excel启用宏的工作簿),点击“开发工具”面板,点击“Visual Basic”按钮。
第二步:在打开的VBA编辑器中,右键“VBAProject”—“插入”—“模块”。
第三步:把上面的VBA宏内容复制到VB编辑器中;
第四步:保存成功后,关闭VB编辑器。至此,在Excel中可调用自定义函数Func。
用《新喷规》附录D的表格值验算计算值是否满足要求。
取H1=61 m,Q=30 L/s,dk=50 mm,dj=100 mm,dk/dj=0.5,查表得ζ=29.5。
Hk=29.5×3.8192/2×9.81=21.92
因此减压后压力H2=61-21.92=39.08 m<40 m,满足减压要求。
将上述H1、dj、Q值分别输入Excel中A1、B1、C1单元格,在D1单元格输入=Func(A1;B1;C1),得到减压孔板孔径为51 mm(计算内径dk=50 mm),与上述验算孔径一致,表明该宏功能符合计算要求。
某超高层住宅项目,地上37层,每层层高均为3.15 m,喷淋系统设3个分区,喷淋1区为1~14 层,喷淋2区为15~29层,喷淋3区为30~37层。
计算出各分区的起始层楼面处的压力值如下,喷淋1区1层地坪处的喷淋压力约为0.85 MPa,喷淋2区15层地坪处的喷淋压力约为1.35 MPa,喷淋3区30层地坪处的喷淋压力约为1.60 MPa。由于每层层高相同,通过起始层的压力值,运用填充柄功能,得到各楼层的减压孔板前压力。在减压孔板孔径的一栏输入如下公式=Func(B1;B2;B3),再利用填充柄功能自动计算得到需要减压的楼层及其减压孔板的孔径规格。计算结果见表2。
表2 减压孔板计算表
注:减压孔板处管道计算管径均为106 mm;喷淋设计流量按30 L/s计。
通过此方法,将原先至少需要进行37次反复运算的操作,变成了一次填充操作,大大减少了工作量,避免了人为计算失误,准确率高。
1) 《消防给水及消火栓系统技术规范(GB 50974—2014)》和《自动喷水灭火系统设计规范(GB 50084—2017)》关于减压孔板计算内径不一致,笔者认为应按《消防给水及消火栓系统技术规范(GB 50974—2014)》的取值方法确定。
2) 运用VBA宏功能,对于减压孔板的多次反复运算,有助于减少重复计算工作量,有利于提高设计质量。
3) VBA宏作为Office的扩展功能,是简化给排水设计计算的利器,为简化建筑给排水计算提供了一种解决思路。