Excel VBA技术在船舶交流电力短路计算中的应用

陶冶 1,杨文莲 1,吴俊峰 1,杨松 1,包琳 2,王化群 1

(1.大连海洋大学 信息工程学院,辽宁 大连 116023; 2.大连海洋大学 教学质量监控与保障处,辽宁 大连 116023)

摘要:针对船舶交流电力短路计算中电机、配电板类型多,短路点计算公式复杂、数据量大,打印输出要求高的问题,提出利用Excel VBA技术编写短路计算模块加以解决,主要包括等效设备参数、阻抗、短路电流和功率因数的计算等。结果表明:用本方法可将计算程序与显示输出进行分离,使用Excel的Range对象访问工作表单元格;数据计算由VBA程序单独进行处理,可自动生成短路计算各类表格,允许用户对输出结果进行后期交互式处理,并满足国家船舶交流电力短路计算标准规范要求。实例验证表明,该方法可有效地提高船舶配电电器短路计算的效率。

关键词:船舶交流电力;短路计算;Excel VBA;Range对象

DOI:10.3969/J.ISSN.2095-1388.2015.01.020

文章编号:2095-1388(2015)01-0107-06

中图分类号:U662.6;TP273

    文献标志码:A

收稿日期: 2014-05-06

基金项目: 国家自然科学基金资助项目(61272522);大连海洋大学博士启动基金资助项目(HDBS201402);辽宁省优秀青年骨干教师资助计划项目(2006)

作者简介: 陶冶(1974—), 男, 博士, 副教授。E-mail:taoye@dlou.edu.cn

Abstract: A module using Excel VBA technology for short circuit calculation is established to deal with problems including many types of motor and distribution board, the complexity of short-circuit point formula calculation, large amount of data, and the print output problem. The module is mainly composed of equivalent equipment parameter calculation, impedance calculation, short circuit current and power factor, etc. This method separates the calculation program from the output data display,and uses Excel Range Object to refer specifically to worksheet-cells. VBA program independently processes the data computing, and various kinds of worksheets for short circuit calculation are generated automatically, which allows the user to deal with the output results interactively. It also meets the electric short circuit calculation standard specification requirements of the ship. An example showed that the proposed method effectively improved the efficiency of electrical short circuit calculation for ship power distribution.

Visual Basic for Applications(VBA)是一种使用Visual Basic的宏语言,主要用于扩展Windows的应用程序功能。近年来,随着微软Office办公软件的广泛应用,利用VBA宏语言来实现Excel自动化技术已得到了人们的重视 [1-2]。考虑到国内Excel系统应用具有极其庞大的客户群,而大部分用户均为业余程序员,他们仅需要解决面临的专业问题,而不一定去开发单纯的应用软件,因此,选择VBA非常适合,因它兼具了易用性和高效性。

在船舶营运中,电气短路是常见的故障,过大的短路电流破坏了整个电力系统的稳定性,甚至会造成船舶电气设备过载损坏,引起火灾等严重后果,对船舶的安全具有重要影响,这也是船舶电气系统设计的依据。船舶电力系统多为混合式供电,通常包括主配电板、电力分配电板、应急配电板和照明配电板,电力系统可能涉及上述几种不同的组合类型。此外,电力系统中的发电机组及变压器类型丰富,短路点和开关数量多,进一步增加了计算的复杂性。目前,根据中国《钢质海船入级规范》中的规定,相关部门制定了《中华人民共和国船舶交流电力系统的短路计算国家标准》(GB3321-82) [3],并将其计算结果作为船舶配电电器短路接通、分断能力,以及校验汇流排稳定性的依据。

在实践中,短路计算数学模型十分复杂,计算公式较多,主要包括发电机参数、电力变压器参数、线路阻抗、变压器阻抗、发电机馈送的短路电流、等效发电机参数的计算,以及流经自动开关的短路电流和短路功率因数的计算等,计算量大,出错率高,大多依靠计算机辅助计算(CAD)。在软件系统设计方面,早期的船舶交流电力系统程序多采用基于DOS操作系统下的高级语言进行设计,如BASIC语言 [4]、QBASIC语言或FORTRAN语言 [5];近几年,基于Windows操作系统的代表性研究主要有王焕文等 [6]利用Visual Basic语言以及赵岩等 [7]使用VC++语言设计出的计算软件。利用纯高级程序语言设计对开发人员要求较高,各种输入、输出界面均需要由程序设计人员单独设计,对普通用户而言,需要进一步熟悉和掌握。此外,由于各种待打印表格完全由程序控制输出,用户无法进行后期交互修改,很难进行后期处理,进一步限制了其应用效果。为此,本研究中提出利用VBA完成核心计算,由Excel负责界面输出并实现用户交互性,一次性解决了短路数据计算、表格排版和打印输出等问题,提高了计算效率和后期编辑的灵活性。

1 设计原理

《中华人民共和国船舶交流电力系统的短路计算国家标准》(GB3321-82)作为中国现行的船舶交流电力系统短路计算和短路功率因数计算的国家标准,主要参照了国际电工委员会(IEC)第363号出版物《特别与船用设备中自动开关的额定短路容量有关的短路计算》,计算方法与该出版物中规定的方法是等效的,即利用发电机和电动机短路过程的迭加原理进行计算。其基本思想是将整个交流电力系统分成发电机至汇流排和汇流排至变压器的双级侧两个部分。此外,在计算中还需要考虑发电机、电动机组馈送的短路电流,其中电动机组馈送的短路电流采用了等效电动机方法进行计算,而等效电动机功率等于运行中所有电动机功率之和,短路电流主要包括对称和最大非对称短路电流两类。各部分短路电流计算主要公式如下 [3]

(1) 发电机馈送的短路电流

I acg=1.1/I acog

(1)

(2)

(2) 电动机馈送的短路电流

(3)

或I acM=4I NM

(4)

或I pM=8I NM

(3) 邻近主汇流排处短路时的短路电流

I ac=∑I acg+I acM

(5)

I p=∑I pg+I pM

(6)

(4) 主汇流排外馈电线处短路时的短路电流

I ac=∑I acg

(7)

(8)

(9)

(10)

(5) 短路功率因数计算

(11)

(12)

上述公式各项含义可参见中华人民共和国国家标准GB3321-82中的相关定义和说明。

2 设计目标及组成模型

本研究中提出的软件系统总体设计目标为:对于由不同容量、任意多台发电机组构成的三相交流电力系统,利用VBA程序计算邻近主汇流排处和主汇流排外馈电线处发生短路时的短路电流和功率因数,并自动生成所有Excel计算工作表,允许用户进行交互输入、格式化、输出等后期处理。该短路计算系统的组成模块如图1所示。

图1 短路计算系统的组成模块
Fig.1 Modules of a short circuit calculation system

从图1可见,基于Excel VBA的短路计算系统主要包括4个组成模块:数据输入、Excel、VBA主程序和系统图模块。数据输入模块主要由用户完成发电机、变压器参数、线路和变压器阻抗初始数据的录入,其中,线路和变压器阻抗计算需要由Excel负责处理;Excel模块主要对前述两个对象进行公式计算,并参与等效电动机参数计算;VBA主程序模块是本系统的核心,它负责等效发电机参数、等效电动机参数、A~D点发电机馈送的短路电流及功率因素的计算;系统图模块用于输出电力系统示意图。图1中根据模块的不同功能使用了两种线的箭头。控制流使用虚线箭头,表示该模块并不进行计算,只是对相应的目标模块进行控制。例如,Excel文件处理、Excel打印处理控制流分别指向了计算结果和系统图,它们可对系统输出的数据工作表和示意图进行保存、格式处理和打印操作。计算流使用实线箭头,表示该模块要进行数值计算,并将计算结果传输到目标模块中。

3 应用实例

本研究中采用GB3321-82的计算示例,其电力系统示意图如图2所示。从图2可见,该电力系统由3台不同容量并联运行的发动机组组成,系统为混合供电方式,包含有电力分配电板、应急配电板、照明配电板和变压器T 1等。选定了8个短路点,其编号为A 1、A 2、B 1、B 2、C 1、C 2、D 1、D 2

图2 电力系统示意图
Fig.2 Schematic diagram of a power system

设计模型采用图1所示方法,首页在Excel中启动,为了能够执行VBA程序,需要选择启动“宏”命令,其界面如图3所示。

图3 短路计算系统的启动界面
Fig.3 Startup interface of a short circuit calculation system

在该界面中,用户可以选择分项数据输入,点击1、2选项将弹出数据表单窗口,主要完成发电机和变压器参数的录入;点击3~6项将自动生成Excel工作表,用户可采用交互方式和Excel自动方式完成对变压器和等效电动机的计算;“短路电路和功率因数计算”按钮可在VBA主程序的控制下一次计算所有短路点的短路功率因数,并自动生成全部工作表。

3.1 数据表单

数据表单主要用于输入发电机和变压器初始参数,并将用户输入的数值存入到相应的Excel工作表中,其界面如图4所示。

图4 发电机和变压器初始参数数据输入表单
Fig.4 Initial parameters of generator and transformer data input form

当用户单击图4(a)发动机参数设置窗口中的“添加”按钮时,VBA程序代码如下:

If TextBoxID.Value = "" Then‘输入数据正确性校验

MsgBox "发动机型号不允许为空,请重新填入正确类型!", vbCritical, "填入数值错误"

Exit Sub

Else

……

p = Worksheets("发电机参数").Range("A65536").End(xlUp).Row‘设置单元格范围

‘VBA程序控制发电机参数工作簿单元格填充

Range("c" & p + 1).Value = TextBoxpng.Value‘设置 P Ng单元格的值

Range("d" & p + 1).Value = TextBoxun.Value‘设置 U N单元格的值

Range("e" & p + 1).Value = TextBoxing.Value‘设置 I Ng单元格的值

Range("f" & p + 1).Value = TextBoxf.Value‘设置 f单元格的值

Range("h" & p + 1).Value = TextBoxxd1.Value‘设置 x d′单元格的值

Range("j" & p + 1).Value = TextBoxtd2.Value‘设置 x d″单元格的值

……

上述程序代码中的Range对象用于描述单个或多个Excel单元格构成的区域,文本框对象TextBoxpng到TextBoxtd2代表发电机表单中各项参数对应的文本框。变压器参数设置窗体程序代码与上述程序代码类似,只是将Worksheets名改为“变压器参数”即可。

3.2 阻抗计算

阻抗计算主要分成两类:线路阻抗计算和变压器阻抗计算。其中“线路阻抗计算”工作表需要用户先录入数据,与传统的Excel应用不同,用户仅需要在工作表中按顺序填入电缆的 l 1S 1x 1r 1参数,而VBA负责创建所有工作表、格式化单元格,并控制Excel自动计算线路阻抗,其计算情况如图5(a)所示;点击变压器阻抗(T)按钮后,出现图5(b)所示“变压器阻抗计算”工作表数据录入窗口,其计算过程与线路阻抗计算类似,VBA程序计算公式为

,

,

3.3 发电机馈送的短路电流

计算发动机馈送的短路电流需要调用发电机参数、线路阻抗计算工作表中的相关数据,因此,需要使用Excel工作表集合对象Worksheets,并利用Range对象访问两个工作表的对应单元格,以实现对上述两项参数的引用。图6给出了B 2点短路发电机G 1馈送的短路电流计算结果工作表。该工作表中的所有公式均由VBA负责计算,其主要VBA程序代码如下:

With ActiveSheet‘当前活动输出工作表

.Range("D3") = Worksheets("发电机参数").Range("D" & i).Value / Sqr(3)‘计算 V N

图5 线路阻挠和变压器阻抗计算
Fig.5 Impedance and transformer calculation

图6 B 2点短路发电机G 1馈送的短路电流计算
Fig.6 Current calculation of feedback from generator G 1 with B 2 short circuits

. Range(" D4") = Worksheets("发电机参数"). Range(" G" & i). Value * . Range(" D3") / Worksheets("发电机参数"). Range(" E" & i). Value‘计算 x d

. Range(" D5") = . Range(" D4") + Worksheets("线路阻抗的计算"). Range(" N" & 4 + 2 * ( i - 4)). Value‘计算 x g

. Range(" D6") = Worksheets("发电机参数"). Range(" I" & i) + Worksheets("线路阻抗的计算"). Range(" N" & 5 + 2 * ( i - 4)). Value‘计算 R g

. Range(" D7") = . Range(" D3") / Sqr(. Range(" D6") ^ 2 + . Range(" D5") ^ 2)‘计算 I g

. Range(" D8") = Worksheets("发电机参数"). Range(" H" & i) * . Range(" D3") / Worksheets("发电机参数"). Range(" E" & i)‘计算 x d

……

. Range(" D14") = Sqr(2) * . Range(" D7") * 2.71828 ^ (-20 / (2 * . Range(" D13")))‘计算 I dcg

. Range(" D15") = Sqr(2) * . Range(" D11") + . Range(" D14")‘计算 I pg

3.4 流经自动开关短路电流的计算

流经自动开关短路电流的计算需要访问“等效电动机参数”工作表,与“3.3”节类似,可使用集合对象 Worksheets(“等效发电机参数计算”)引用该工作表,并利用 Range对象应用单元格数据。图7给出 B2点短路流经2 CB1的短路电路及短路功率因数计算结果。

图7 B2点短路流经2CB1的短路电流及短路功率因数计算
Fig.7 Calculation of current and short circuit power factor through 2CB1 at B 2 short circuits

其主要 VBA程序代码如下:

With ActiveSheet

For j = p To 4 Step -1

Sum1 = Sum1 + GolbalEngineNum( j - 3) * Worksheets(" B2" & "点短路发电机" & str1 & "馈送的短路电流"). Range(" D12")

Sum2 = Sum2 + GolbalEngineNum( j - 3) * Worksheets(" B2" & "点短路发电机" & str1 & "馈送的短路电流"). Range(" D15")‘工作表标签命名

Next j

. Range(" D3") = Sum1‘计算∑ I acg

. Range(" D4") = Sum2‘计算∑ I pg

. Range(" D5") = Sum3‘计算 I acM

. Range(" D6") = Sum4‘计算 I pM

……

. Range(" D11") = (( Worksheets("等效电动机参数"). Range(" D15") * (( Worksheets("等效发电机参数计算"). Range(" D16")) ^ 2 + ( Worksheets("等效发电机参数计算"). Range(" D14")) ^ 2) + Worksheets("等效发电机参数计算"). Range(" D16") * (( Worksheets("等效电动机参数"). Range(" D15")) ^ 2 + ( Worksheets("等效电动机参数"). Range(" D14")) ^ 2))) / (( Worksheets("等效发电机参数计算"). Range(" D16") + Worksheets("等效电动机参数"). Range(" D15")) ^ 2 + ( Worksheets("等效发电机参数计算"). Range(" D14") + Worksheets("等效电动机参数"). Range(" D14")) ^ 2)‘计算 R Kb

. Range(" D12")=. Range(" D11")/ Sqr((. Range(" D11")) ^2+(. Range(" D10")) ^2)‘计算 cos φ K

……

End With

3.5 计算结果及选用配电器汇总

“短路计算结果和选用的配电电器数据汇总表”工作表可对各个短路点计算的功率因数进行汇总并显示给用户,用户可根据计算结果选用合适的配电电器。各个短路点短路功率因数即可由 VBA程序统一进行汇总,也可按短路点分别处理。例如,对 B2短路点的对称短路电流、最大非对称短路电流和电路功率因数单独汇总的 VBA程序代码如下:

Worksheets("短路计算结果和选用的配电电器数据汇总表"). Range(" D" & p + 1 + 1) = . Range(" D8")‘对称短路电流

Worksheets("短路计算结果和选用的配电电器数据汇总表"). Range(" E" & p + 1 + 1) = . Range(" D9")‘最大非对称短路电流

Worksheets("短路计算结果和选用的配电电器数据汇总表"). Range(" F" & p + 1 + 1) = . Range(" D12")‘电路功率因数

其他各个短路点原理与 B2点类似,所有短路点汇总结果如图8所示。

图8 所有短路点计算结果汇总
Fig.8 Summary at all short circuit points

4 结语

本研究中结合《中华人民共和国船舶交流电力系统的短路计算国家标准》( GB3321-82)中的相关规定,考虑到短路计算涉及表格众多、计算复杂、耦合度高的缺陷,研究了 Excel VBA技术在短路计算中的应用,其主要优势可将短路计算程序和用户输出显示进行分离,前者由 VBA主程序负责,以完成短路电流和电路功率因数的复杂计算,并自动生成所有的数据表(工作表);后者允许用户利用 Excel强大的单元格格式化和打印输出功能对系统输入输出进行后期处理。 Excel本身具有易用性和广泛性,大大提高了系统应用的效率,非常适合中小船舶设计建造企业在成本受限的情况下,快速进行电力系统设计的要求。另外,短路点计算结果汇总表中尚缺乏配电电器数据库的支持,不利于用户对可行方案进行备选,这也是后续研究的重点。

参考文献:

[1 ] 张光发,刘玉君,纪卓尚.基于 Excel- VBA的大型船舶纵向下水计算通用程序设计 [J].大连理工大学学报,2012,52(1):47-53.

[2 ] 刘寅东,邓波. VBA技术在船舶结构规范法设计软件中的应用 [J].船舶,2007(4):61-63.

[3 ] 中华人民共和国国家标准局.中华人民共和国国家标准——船舶交流电力系统的短路计算 GB3321-82 [M].北京:中国标准出版社, 1982:719-734.

[4 ] 杨国清.船舶交流电力系统短路计算程序 [J].船海工程,1985(1):32-37.

[5 ] 杨月容.船舶交流电力系统短路计算程序 [J].江苏船舶,2001,18(5):27-31.

[6 ] 王焕文,刘土光.船舶交流电力系统短路计算软件开发 [J].船舶工程,2004,26(4):61-63.

[7 ] 赵岩.船舶电力系统短路电流计算方法研究 [D].哈尔滨:哈尔滨工程大学,2009.

Application of Excel VBA technology in short

circuit calculation of ship power

TAO Ye 1, YANG Wen-lian 1, WU Jun-feng 1, YANG Song 1, BAO Lin 2, WANG Hua-qun 1

(1. College of Information Engineering, Dalian Ocean University, Dalian 116023, China; 2. Department of Teaching Quality Monitoring and Assurance, Dalian Ocean University, Dalian 116023, China)

Key wordsmarine alternating current power; short circuit calculation; Excel VBA; Range Object