Ship power capacity and unit configuration aided design software
-
摘要:目的 电站容量与机组配置是船舶电力系统设计中最重要的一项基础工作,为了提高设计效率和精细化程度,基于C#程序语言开发可扩展的电站容量与机组配置辅助设计软件。方法 首先,应用插件框架,设计并实现本软件的可扩展架构;然后,研究电站容量计算的3种计算方法集成、工况和设备分类按需自定义、系数自动化建议等关键功能的实现方法;最后,通过归纳电站机组配置问题的最优化模型,提出机组自动配置算法。结果 某4 000 t实船验证结果表明:在7种运行工况、搜索42个机组的情况下,机组配置最优模式的求解耗时少于1 s,且最多可以同时给出3种可行的机组配置方案。结论 该一站式设计软件可以代替常规繁琐的人工配置方法,有助于提高船舶电站的设计效率。Abstract:Objectives Ship power capacity and unit configuration design is the most important basic work in ship electrical design. For improving design efficiency and accuracy, an aided design software is presented based on the extensible architecture via C#.Methods First, we use the plug-in framework to set up the extensible architecture. Then, the key functions such as three calculation methods were integrated, the settings were personalized and an automatic parameter provider was achieved. Then, an optimal model for the unit configuration is proposed.Results The software is validated based on a 4 000 ton class ship. Under the conditions of 7 working states and 42 units, the software can provide 3 solutions within less than one second.Conclusions The one-stop software could help relieve the burden of the traditional design method, and improve the design efficiency of ship power stations.
-
Keywords:
- plug-in framework /
- software architecture /
- unit configuration /
- power capacity /
- aided design
-
0. 引 言
电站设计是船舶电力系统设计中最重要的一项基础工作,将直接影响其经济性、可靠性、生命力和维修性,所以电站设计是船舶电气设计水平的直接体现[1-2]。如果电站的设计容量偏大,将可能导致发电机组的负荷率较低(经济性差),且配套电气设备的容量有所增加(成本增加),同时需占用机舱的有限空间;如果设计容量偏小,则可能导致负荷率较高,且功率裕度无法保障短时超载工况,从而导致船舶无法正常运行。
船舶电站设计包括电站容量计算和发电机组配置这2项内容,其中电站容量的理论计算方法较简单,包括概率论方法、昼夜航行图标法、负荷系数法等[3-7]。目前,在工程实践中应用最为广泛的是负荷系数法,虽然某些手册[3]和文献[4-7]中都给出了原则性的参数设置方法,但其适用范围非常宽泛,并没有考虑实际工况,故其参考价值较低。在电站设计过程中,如果没有充分掌握设备性能,将可能造成负荷系数的选择主观性偏高,从而影响电站容量设计的准确性,最终导致实际投运后容量偏大或偏小的不理想工况。
在完成电站容量计算之后,一般由设计人员根据各工况下的电力负荷来估算结果:首先,初步考虑需配置的机组数量和单机功率;然后,根据厂家设备样本进行机组选型;最后,根据选型结果来调整机组的配置数量和单机功率,从而确定合理的配置方案。显而易见,整个设计过程耗时费力、主观性强,同时,在初步明确机组的配置数量和单机功率之后,该方法一般仅针对不同厂家机组的参数、尺寸和价格等因素进行对比选型,这实际上有可能导致最终的机组配置方案未必是最优解。
虽然通过开发软件实现自动化辅助设计是提高设计效率的有效手段[8-12],但目前国内外市场上的船舶电气设计软件大多以电气设备及系统的原理图、接线图、三维放样等辅助设计为主,例如TRIBON,CATIA,SB3DS,SPD等[10-11],而鲜有电站容量计算与机组自动配置等辅助设计功能。李铭志[10]开发了一套船舶电气智能设计系统,可以实现电力负荷计算书的自动生成功能,但仅能计算给定工况下的电力负荷,且其负载均采用图形表示;当负载规模较大时,计算效率将明显降低。王焕文等[12]开发了基于C语言的船舶电力负荷计算软件,但仅支持4种固定工况,且所有参数都需要手动填写,与传统的Excel表格相比,其计算优势并不明显。至于机组配置的辅助设计方法,尚无文献可供参考。
基于此,为了解决船舶电力系统中的电站容量与机组配置一站式辅助设计问题,本文拟开发具备功能可扩展性的辅助设计软件,根据电站容量的计算结果来一站式完成机组配置的自动建议,从而突破常规繁琐的人工配置方式。首先,将介绍基于插件技术的可扩展架构;然后,分析电站容量负荷计算功能的实现方法,以及电站机组配置最优问题的建模和求解方法;最后,将基于某4 000 t民船案例开展有效性验证。
1. 可扩展架构的实现
为了满足船舶电力系统辅助设计的开放性和可扩展性要求,本文将采用基于动态链接库(.dll)的插件框架[13]来实现本软件的可扩展架构。
1.1 可扩展架构的功能设计
按照插件框架的定义,本软件将基于宿主程序和插件程序设计来实现可扩展架构的功能。
宿主程序是插件框架的骨架部分,也是插件程序的宿主。本软件宿主程序的功能为:实现项目管理、插件集成管理、数据库调用、文件输入/输出、界面布局等通用性功能,且在不同的插件程序中都可以调用这些公共服务功能。另外,本文在宿主程序中还设计了3类数据库(标准参数库、设备资料库、用户数据库),用以支撑各插件之间的数据交互,其中标准参数库用于存储辅助设计中的参数标准值,设备资料库用于存储典型电气设备的物理参数,而用户数据库则用于存储用户输入/输出的数据表。
插件程序是按需设计的独立功能模块。本软件设计了电力负荷计算插件程序和数据库管理插件程序,均由人机交互模块和核心算法模块组成,其中电力负荷计算插件程序用于实现电站容量交互计算、机组自动配置等功能,而数据库管理插件程序则用于实现标准参数库、设备资料库等数据库的管理维护。
可扩展的电站容量与机组配置辅助设计软件的总体架构如图1所示。在该软件中,本文将重点解决以下问题:1)采用C#的“接口−反射”机制,实现宿主程序与插件程序的接口功能;2)灵活运用C#的典型控件,实现电力负荷计算插件中电站容量计算的特色功能,主要包括3种负荷计算方法集成、工况及设备分类按需自定义、系数标准化建议;3)采用建模与优化求解的方法,实现电力负荷计算插件中的电站机组自动配置功能。
1.2 可扩展架构的实现方法
C#是一种面向对象的基于.NET框架的程序设计语言,具有可视化操作效果好、运行效率高、语言简洁、功能强大等优点[14]。本文将采用C# 的“接口−反射”机制来实现插件框架,其中接口(interface关键字)机制用于定义插件程序与宿主程序之间的通信方式,而反射(System.Reflection命名空间)机制则用于实现插件程序的动态加载,从而形成即插即用的可扩展架构。
1) 利用接口机制进行接口定义。
在宿主程序中完成了接口定义之后,所有的插件程序都可以继承宿主程序的接口,其遵循的规范为:第一,接口声明将涵盖属性、方法、事件等在内的接口成员,并规范所有继承于该接口的类,同时将其作为区别于其他类的标志;第二,继承于接口的所有派生类,都可以按照自身功能需求对接口声明的所有成员进行个性化实现。
本软件在接口中设计了插件程序必须具备的4个基本特性:(1)1个子窗体,用于显示插件的交互界面;(2)显示状态标识符,用于控制界面的隐藏与开启;(3)窗体标题,用于标识区分不同的插件窗体;(4)插件版本号,用于标识插件版本。
2) 利用反射机制进行插件动态加载。
反射是指应用程序可以访问、查询、修改自身状态和行为的能力,具体来说,通过反射机制可以获得应用程序中每个类型(例如类、结构、委托、接口和枚举等)的成员,包括方法、字段、属性、事件以及构造函数等,还可以获得每个成员的名称、限定符和参数。
本软件可以通过Assembly程序集反射类,来反射获取插件程序(.dll文件)中定义的类,从而据此判断该插件是否满足接口规则,如果满足,则对其进行动态加载。
2. 船舶电站容量计算的功能实现
根据各工况下用电设备的电力负荷情况,即可确定船舶电站容量,这是实现机组配置的基础,也是电站设计的关键。相较于传统的电站容量计算软件[10,12],为了提高计算自动化程度和适用范围,本文将重点改进2项核心功能:1)3种负荷计算方法集成、工况和设备分类按需自定义;2)系数标准化建议。
2.1 3种负荷计算方法集成、工况和设备分类按需自定义
电站容量计算的准确度依赖于用电设备明细是否确定、功率是否确定等负载输入信息,为此,本软件集成了3种计算方法:在输入信息完备的情况下,采用三类负荷法、需要系数法来统计汇总各工况下的总负荷需求;在输入信息不完备的情况下,例如投标估算阶段,则依据基于吨位的经验公式进行估算。
鉴于不同类型船舶的运行工况和设备专业类别都不尽相同,本软件设计了按需自定义的设置模式,既可以选择软件自带的项目,也可以通过文本输入实现自定义。当用户选择不同的负荷计算方法、工况以及设备专业类别时,其对应的交互数据表也将有所不同。为此,本软件采用了动态生成交互界面的方法:采用TabControl控件−TabPage控件−DataGridView控件3层嵌套结构,每个专业类别均对应TabControl控件中的一个TabPage页面,且每个TabPage页面均绑定数据表格DataGridView控件,其中数据表格的表头可以根据不同的计算方法和工况定义进行个性化创建。计算模式、工况定义等参数的设定对话框和用户交互界面如图2所示。
2.2 系数标准化建议
为了方便用户在设计时进行系数选取,同时规范用户系数选取的主观性,本软件设计了系数标准化建议功能,即:在负荷计算的交互界面中增加“设备类型”下拉列,其中设备类型预设为常见的各专业典型设备;同时,在标准参数库中存储这些典型设备在各工况下的负荷系数、同时系数、需要系数、负荷类别建议值等。当用户通过下拉列表选择对应的设备类型时,软件将自动执行标准参数数据库的查询功能,并将查询所得的标准化系数回填至交互界面数据表中,从而自动计算设备在不同工况下的功率需求。对于非典型设备和非典型工况,仍保留用户手动输入的功能。
2.2.1 标准参数库
标准参数库可以通过SQLite数据库实现,本文在宿主程序中实现了SQLite数据库调用函数的封装功能[15],用以在各插件中传参并调用,从而实现代码复用,其具体实现的操作包括:设置连接语句SetConnectionString、创建数据库CreateDB、创建表NewTable、查询表ExecuteQuery、仅读取表ExecuteReader、修改表ExecuteNonQuery、批量存储表ImportToSqliteBatch等,可以满足各插件对数据库操作的需要。
标准参数库中存储了常见典型设备在各工况下的负荷系数、同时系数、需要系数、负荷类别建议值等数据,这些标准化建议值经由专家组讨论确定后才能存入标准参数库,并且可以通过数据库管理插件的交互界面随时维护更新。
2.2.2 系数标准化建议功能
系数标准化建议功能的实现要点为:一是下拉列的用法;二是用户设置“设备类型”之后,随时响应自动查询数据库给出的系数建议。本软件的具体实现方法如下:
1)采用DataGridViewComboBoxColumn控件实现下拉列,其中DataSource属性用于设置该下拉列绑定的数据源,DataPropertyName属性用于设置该下拉列在数据源中对应的列属性名称,DefaultCellStyle.NullValue属性用于设置下拉列的默认选项,HeaderText属性用于设置下拉列的列名。
按照不同的设备专业分类,即可设置“设备类型”下拉列表中的典型设备,以便用户快速选择,如图3所示。首先,采用List<string>数据类型表示“设备类型”下拉列d中的项目;然后,将该下拉列d 添加至当前数据表dgv中,即dgv.Columns.Add(d)。
2)通过CellValueChanged事件对用户设置“设备类型”予以响应,自动查询数据库并给出建议,其中事件绑定采用的委托方式为:
dgv.CellValueChanged += new DataGridViewCellEventHandler(dgv_CellValueChanged)。
基于此,一旦单元格的数值发生改变,即可触发该事件,通过判断列名(if(dgv.Columns[e.ColumnIndex].Name == "设备类型"))即可确定本列数据是否改变,进而根据“设备类型”的列内容查询数据库,并回填结果至交互界面。
3. 船舶电站的机组配置功能
本软件突破了常规繁琐的人工配置方式,基于电站容量的计算结果,即可一站式完成机组配置自动建议,其实现思路为:通过遍历机组库中的所有机组,找到一定约束条件下各工况平均负荷率最高的一组配置。
考虑到船舶电站机组配置的实际约束条件,本软件中机组自动配置方法的6条前提假设为:
1)不计及备用机组,主电站的机组数量不大于4台。
2)考虑到机组并网的平稳性要求,以及实际维护要求,电站配置的机组种类不超过2种。
3)在最大工况下,除了备用机组之外,所有机组均参与投运,且负荷率不低于70%,最大负荷率ηmax设定为0.85~0.9。
4)在所有工况下,以电站运行平均负荷率最高为目标函数。
5)若有应急电站,则仅配置1台应急机组,且不与主发电机组并网。
6)若有仅停泊用电站,则仅配置1台停泊用停泊机组,且不与主发电机组并网。
基于上述假设,由于应急电站机组、仅停泊用停泊机组只在1种工况下运行,所以应急电站机组和仅停泊用停泊机组的配置约束条件为:相应工况下所配置机组的负荷率最高,且不高于指定的最大允许负荷率,这是个单变量约束问题,故本文不再详述。
对于主电站机组的配置方案,则可以将其转化为优化问题进行求解:假设机组I的额定功率为F1,配置N1台;机组II的额定功率为F2,配置N2台;工况i下的负荷为Pi (i=1,2,···,M,其中M为运行工况数量),其中最大负荷值为Pmax,最小负荷值为Pmin;n1i,n2i分别为工况i下机组I和机组II的最优起动台数,则
J=max (1) 式中:J为目标函数;Φ为机组数据库Units中符合用户指定条件的机组。Units存放于设备资料库,涵盖了市场上主要生产厂家的不同功率等级的机组信息,例如型号、功率、电压、频率、功率因数、尺寸、重量、排放等级;柴油机型号、柴油机功率、柴油机转速、柴油机厂家;发电机型号、发电机功率、发电机电压、发电机厂家等信息。
上述最优化问题属于离散型规划问题,其通用求解方法包括割平面法、启发式搜索算法以及枚举法等。对于本文而言,目标函数和约束条件的计算并不复杂,采用枚举法即可满足离线寻优要求,其具体求解过程如下:
1) 寻找机组配置方案的可行解。
按照用户设定的配置机组数量和筛选机组指标,在满足约束条件
0.7 \leqslant \dfrac{{{P_{\max }}}}{{{N_1}{F_1} + {N_2}{F_2}}} \leqslant {\eta _{\max }} ,\left\{ \begin{aligned} &{F_1} \leqslant {F_2} \\& {F_1},{F_2} \in \varPhi \end{aligned} \right. 下,找到可行的机组配置方案,记作Γ(k):[F1(k), F2(k), N1(k), N2(k)],其中k为迭代步数。2) 计算指定配置方案的平均负荷率。
在该机组配置方案Γ(k)下,根据
\mathop {\max }\limits_{{n_{1i}},{n_{2i}}} \left\{ {\dfrac{{{P_i}}}{{{n_{1i}}{F_1} + {n_{2i}}{F_2}}}} \right\} \leqslant {\eta _{\max }} 等约束条件,确定工况i下的最优起动台数n1i(k)和n2i(k),进一步求得该机组配置方案的平均负荷率η(k)。3) 依据平均负荷率的目标函数,得到最优机组配置。
如果平均负荷率η(k)优于最优负荷率ηbest,则令ηbest=η(k),最优配置方案Γbest= Γ(k)。同时,判断遍历是否完成,如果未完成,则令k=k+1,跳转至第1步;否则结束,输出最优机组配置方案Γbest。
基于此,根据多项约束条件来不断缩小可行域,然后对可行域内的机组配置方案的负荷率进行逐一对比,如果平均负荷率变大,则接受;否则维持不变,最终选择符合上述约束条件的最优解,并作为主电站的最优配置方案。
4. 实船验证
本文基于C#语言、SQLite数据库和.NET Framework 2.0 SP2运行环境软件,开发了可扩展的船舶电站容量与机组配置辅助设计Windows窗体程序。本节将以某4 000 t全电力推进船舶为例进行有效性验证,该船电力系统包含7种运行工况,约350余项用电设备。
首先,利用本软件的工况和设备分类定义、用电设备负荷导入、以及系数标准化建议等功能,计算各工况下的总电力负荷,结果如表1所示,软件界面的汇总表如图4所示。
表 1 负荷计算结果Table 1. Load calculation results工况 总负荷值/kW 靠岸工况 583 进出港工况 1 226 作业工况1 5 157 作业工况2 3 831 经济航行工况 2 346 全速航行工况 6 024 应急工况 165 然后,对电站形式参数进行设置,具体如下:单独配置1台应急发电机组,主电站总台数不多于4台,最大允许负荷率不超过0.88,机组频率为50 Hz,其他指标不进行限制,设置界面如图5所示。其中机组参数存储于设备参数库中,涵盖了42种常用机组。
最后,根据用户所选电站形式的参数和总负荷需求,软件系统进行机组配置自动寻优建议,输出电站机组配置建议表,为用户提供3组配置方案,平均负荷率分别为80.17%,75.61%,69.87%,其中最佳方案——方案1的参数如图6所示。
由图6可知,最佳方案为配置1个主电站,包含2台2 940 kW机组和2台760 kW机组,配置1个应急电站,包含1台230 kW机组,其最大负荷率85.69%,最小负荷率为68.58%,平均负荷率为80.17%。经人工离线校核,在给定机组库条件下,该机组配置模式为最优。
需注意的是,在该案例中配置不大于4台主机机组和1台应急机组的预设条件下,且搜索对象为42种常用机组时,本文软件的求解耗时在1 s以内。对于常规的电站设计而言,主流发电机组的厂家数量有限,同一厂家的机组功率分级一般呈离散型分布,加之各项机组指标因素的筛选,所以符合预设条件的机组规模往往小于本案例,因此,本软件可以满足电站设计中离线配置机组的实际工程要求。
5. 结 语
本文研发了可扩展的船舶电站容量与机组配置辅助设计软件,通过将电站容量计算与机组自动配置相结合,实现了船舶电力系统电站一站式设计,并基于某4 000 t民船开展了案例验证。本文提出的辅助设计软件实现了3种计算方法集成、用电设备的负荷系数标准化建议、负荷自动计算以及机组自动配置等功能,有助于提高船舶电站的设计效率和设计精细程度。
-
表 1 负荷计算结果
Table 1 Load calculation results
工况 总负荷值/kW 靠岸工况 583 进出港工况 1 226 作业工况1 5 157 作业工况2 3 831 经济航行工况 2 346 全速航行工况 6 024 应急工况 165 -
[1] 中国船级社. 钢质海船入级与建造规范[S]. 北京: 人民交通出版社, 2015. China Classification Society. Steel ship specification of classification & shipbuilding[S]. Beijing: China Communications Press, 2015 (in Chinese).
[2] 中国船级社. 水面舰艇入级规范[S]. 北京: 人民交通出版社, 2011. China Classification Society. Rules for classification of surface ships[S]. Beijing: China Communications Press, 2011 (in Chinese).
[3] 陈可越. 船舶设计实用手册—电气分册[M]. 北京: 中国交通科技出版社, 2007. CHEN K Y. Practical manual of ship design-electrical fascicle[M]. Beijing: China Communications Technology Press, 2007 (in Chinese).
[4] 张统光. 浅析船舶电站容量确定和计算方法[J]. 中国水运, 2011, 11(2): 106–107. ZHANG T G. Analysis of computation method for ship power capacity[J]. China Water Transport, 2011, 11(2): 106–107 (in Chinese).
[5] 纪明山. 船舶电站容量确定和计算方法[J]. 今日科苑, 2008(18): 60–61. JI M S. Computation method of ship power capacity[J]. Modern Science, 2008(18): 60–61 (in Chinese).
[6] 温光英. 浅谈船舶电站容量及负荷计算的几点经验[J]. 中国高新技术企业, 2015(4): 76–77. WEN G Y. Some experience of ship power capacity and load calculation[J]. China High-Tech Enterprises, 2015(4): 76–77 (in Chinese).
[7] 徐成, 邰能灵. 科学考察船电力负荷计算及分析[J]. 电气自动化, 2016, 38(2): 44–47. XU C, TAI N L. Calculation and analysis of electric power load on scientific research ships[J]. Power System & Automation, 2016, 38(2): 44–47 (in Chinese).
[8] 朱佳文, 肖鹏安. 基于PDM的舰船计算书自动生成技术[J]. 中国舰船研究, 2015, 10(4): 16–21. ZHU J W, XIAO P A. Automatic generation technology of calculation reports during the ship design process based on PDM[J]. Chinese Journal of Ship Research, 2015, 10(4): 16–21 (in Chinese).
[9] 徐欣伟, 叶恒奎, 管延敏. 基于Visual Basic 6.0的螺旋桨设计及性能预报软件[J]. 中国舰船研究, 2011, 6(2): 46–51. XU X W, YE H K, GUAN Y M. Development of propeller design and performance prediction software based on Visual Basic 6.0[J]. Chinese Journal of Ship Research, 2011, 6(2): 46–51 (in Chinese).
[10] 李铭志. 船舶电气智能设计系统关键技术研究及原型实现[D]. 上海: 上海交通大学, 2011. LI M Z. Study on the key technology of knowledge-based ship electricity design system and its implementation[D]. Shanghai: Shanghai Jiao Tong University, 2011 (in Chinese).
[11] 陈辉, 张军. SPD船舶设计软件介绍[C]//2015年CAD/CAM学术交流会议论文集. 南京: 中国造船工程学会, 2015: 160-163. CHEN H, ZHANG J. Introduction of the ship design software SPD[C]//Proceedings of the Conference on 2015 CAD/CAM Academic Meeting. Nanjing: CSNAME, 2015: 160-163 (in Chinese).
[12] 王焕文, 王殿卿. 船舶电力负荷计算软件开发[J]. 中国造船, 2004, 45(增刊 1): 233–237. WANG H W, WANG D Q. Designing of calculating software of ship power loading[J]. Shipbuilding of China, 2004, 45(Supp 1): 233–237 (in Chinese).
[13] 申启杰, 凌捷. 基于C#的插件框架设计和实现[J]. 计算机应用与软件, 2010, 27(1): 148–149, 164. SHEN Q J, LING J. Design and implementation of plug-in framework based on C#[J]. Computer Applications and Software, 2010, 27(1): 148–149, 164 (in Chinese).
[14] 李斌. C#标准教程[M]. 北京: 化学工业出版社, 2011. LI B. C# standard course[M]. Beijing: Chemical Industry Press, 2011 (in Chinese).
[15] System.data.SQlite downloads page[EB/OL]. (2019-10-10)[2019-11-08]. http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki.
-
期刊类型引用(2)
1. 李维波,彭智明,张浩,张茂杰,方华亮. 基于自适应蚁群算法的岛礁混合发电系统电源容量优化方法. 中国舰船研究. 2024(04): 139-147 . 本站查看
2. 严昆. 21万t双燃料散货船轴带发电机容量研究. 船舶与海洋工程. 2022(02): 34-39 . 百度学术
其他类型引用(0)