侯新国+潘昕 冯源
摘要:针对传统用C++语言编写船舶电力系统模型的方法较为复杂的特点,将Simulink仿真与C++语言相结合,建立船舶电力系统基本模型。根据Simulink仿真发电机模块与算法的特点,结合模拟训练中实时性的要求,对基本模型进行改进,构建两种适用于不同算法的船舶电力系统仿真模型。仿真结果表明,定步长算法下的仿真模型可满足模拟训练实时仿真的要求;变步长算法下的仿真模型结合多项式拟合算法,可得到与实时仿真基本相同的结果。因此,两种仿真模型均适合于基于模拟训练的船舶电力系统。
关键词:船舶电力系统;模拟训练;实时仿真
中图分类号:TP183文献标识码:A
1引言
随着信息技术的发展,在船舶上,电力监控系统逐渐取代传统的人工手动控制。船舶装备电力监控系统后,必须对船员进行相应的培训辅导,使其尽快掌握必要的基础知识和实际的操作技能。由于C++语言的通用性,选择由C++语言开发船舶模拟训练系统[1]。然而,对于船舶电力系统实时仿真模型,如果仅用C++语言编写,工作较为繁琐。Matlab中Simulink工具提供了丰富的电力及电气系统元件模型,但是,基于Simulink的仿真属于伪实时仿真,其仿真时间并不与实际时间同步,其原因在于模型的复杂性使得软件无法在设定的时间范围内完成所有仿真过程。而在模拟训练系统中,实时性是非常关键的。因此,本文的重点在于如何将船舶Simulink模型转化为C++代码,并实现仿真的实时性。
文献[2-4]中通过Matlab提供的实时工作工具RTW将Simulink模型直接转化为C++程序,文献[5-6]更进一步,提出采用基于Windows平台的实时性扩展平台RTX。但是,上述文献的基本代码转换方法对模型仿真算法有严格要求,在Simulink两种仿真算法中,RTW和RTX均只支持固定步长仿真算法的模型进行代码转换。而Simulink中已封装的发电机模块,属于刚性系统,采用定步长算法仿真极易报错,从而造成实时仿真无法进行,有学者为了避免这种问题,自己设计和封装发电机模块[7],但建模工作量较大,无法充分利用仿真软件的优势。实际上,在模型中仍旧使用Simulink软件已封装的发电机模块,在采用定步长算法时,在电力系统模型中添加相应模块改进模型,连接半实物仿真机即可实现实时仿真;而当模型采用变步长算法时,添加S-函数模块,并运用多项式拟合技术,同样可得到相应的实时仿真的数据结果,达到实时仿真的效果。
2船舶电力系统基本模型
一个基本的船舶电力系统模型应包括原动机及调速器模型、同步发电机和励磁控制系统模型以及负载模型,其中前三者构成发电机组[8]。其中,调速部分维持系统频率的恒定;励磁部分提供励磁电压,通过无功功率形式,维持发电机端电压恒定。而有功功率即原动机提供的机械功率,它与频率有密切关系,在Matlab的Simulink环境下,建立调速模块模型和励磁模块模型[9],同步发电机模块采用软件自带模型,发电机组仿真模型如图1所示。
根据船舶电力系统模拟训练的功能要求,主要试验包括机组起动停机试验,突加突卸负载试验,三相故障试验。由于仿真中对负载动态特性要求一般,模型中使用三相并联负载。考虑船上容性负载较少,采用功率因数为滞后的负载。模型中还添加电压表、电流表等测量装置,方便观测数据。船舶电力系统基本模型如图2所示[8]。
3基于定步长算法实现实时仿真
3.1船舶电力系统改进模型
在Simulink仿真过程中,仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法,这些方法分为两大类,即可变步长类算法和定步长类算法。可变步长类算法是在解算模型时自动调整步长,并通过减小步长来提高计算精度;而定步长类算法,则在解算模型时补偿是固定不变的。对于一般模型,两种算法下仿真得到的结果和波形图基本一致,但在已建立的基本的电力系统模型中,若采用固定步长仿真,当模型运行后,仿真报错,系统提示在某时刻机组速度控制系统的输入异常。实际上,在速度控制输入端加入示波器,可以很清楚观察出在报错时间点上,转速值由0迅速增加到十万级以上,系统由于步长固定,造成反馈失去作用,系统失稳。分析整个模型,造成输入端数值异常,是由于发电机组作为刚性系统,当机组空载起动时,负载断路器全部断开,在初始阶段转速数值较小,而功率由于积分作用持续变大,而转矩不能突变,而仿真步长采取固定值,造成某时刻转速数值急速增大,而仿真不能通过减小步长来调节反馈,从而造成系统失馈[10]。因此,只需在基本模型中紧邻发电机组添加一个负载模块,使得当模型运行时,柴油机组能够形成闭合回路,提供机组的功率,使得机组功率与转速能够缓慢变化。通过大量试验表明,将负载总功率设定在发电机组总功率的6%以上,船舶电力系统采用固定步长仿真即可正常运行。由于此负载与试验内容没有关联,应尽量取小值,减小对试验结果观测的影响。
3.2实时仿真结果
半实物仿真机MDES的工作原理是在定步长算法下,通过Simulink的RTW工具将模型转化为C++代码,再执行相关C++代码从而实现实时仿真。在半实物仿真系统中,导入改进后的船舶电力系统模型,进行发电机组启动仿真。发电机组特性曲线如图3所示,波形变化合理,实时仿真成功,说明改进模型是可行的。
4基于变步长算法实现实时仿真
变步长算法是在解算模型时自动调整步长,可以通过减小步长来提高计算精度,因此在模型运行时,不会出现固失馈现象。虽然采用变步长算法,模型无法利用RTW工具转化代码,但是在船舶模拟训练中,只考虑固定的几种典型工况。因此运用多项式拟合方法,对仿真模型工况下的特征曲线进行数据拟合,将特征曲线转变为数学表达式,进而转化为C++代码,由于计算机执行C++语言数学表达式的速度较快,延时时间短,因而在理论上可实现实时仿真的效果。endprint
4.1多项式拟合算法推导
将用已知试验数据结合数学方法得到变量之间的近似函数表达式的方法称为数据拟合[11]。在进行数据拟合之前,首先要确定拟合采用的数学表达式。常用的基于Matlab曲线拟合的方法分为多项式拟合和非线性曲线拟合。其中,非线性曲线拟合主要指双曲线和指数形式。文献[12]中指出,多项式曲线拟合的方法可逼近任意一个相对复杂的函数。在本文中选择多项式拟合的方法进行数据拟合。
4.2基于多项式拟合方法的仿真实现
Matlab软件提供了polyfit、polyval等函数求解多项式拟合。在仿真时,利用Toworkspace模块将仿真数据保存到工作空间,再运用相关函数即可。
4.3基于多项式拟合方法的验证
验证主要分为仿真数据的精确性和实时性两方面。同样选择发电机组启动试验,观测发电机组端电压、转速、原动机输出功率和励磁电压的变化情况。精确性方面,在Matlab工作空间中,通过多项式拟合得到的数据曲线如图4所示。根据误差计算公式绘制误差图如图5所示。
通过观察图4,拟合曲线与实际曲线基本重合,图5表明误差较小,拟合程度较高。因而多项式拟合的方法较好表征了仿真数据,精确性较高。
在实时性方面。以VS2012工具为例,在其中运行C++代码表示的上述转速数学表达式。在VC++环境中,可直接利用WindowsAPI中如GetTickCount()等函数,还可利用计算机内部的计时功能编写相关代码等多种方法。在本文中主要利用time.millitm函数编写代码,其可精确到毫秒级别。计算上述10s过程的发电机组各变量变化所用时间,其所耗时间分别为:端电压26ms,转速15ms,原动机输出功率17没事,励磁电压28ms。因而程序计算延时较少,实时性较好。
综合上述两方面的试验,可得知基于多项式拟合方法的仿真结果在精确度和实时性上都是满足要求的,因而该方法是可行的。
比较上述两种算法下的改进模型。结合多项式拟合算法的变步长仿真模型思路较为简单清晰,对C++语言编程能力较低,较适用于模拟训练中观测对象较少的场合,可用于观测在试验中改变工况后发电机组观测对象总体的变化趋势;而基于定步长算法的改进模型可对试验中观测对象在具体时刻的观测值进行分析;同时,在转变C++代码后,通过编写发电机组有关控制参数的代码,可实现在线调参[4,14],从而更好控制模型,在数据的分析方面有一定优势。
5总结
本文针对船舶电力模拟训练系统的要求,应用Simulink仿真软件,首先搭建了船舶电力系统模型,根据仿真实时性的要求,分别构建了两种不同算法下的仿真模型。在定步长算法下的模型实现了实时仿真,在变步长算法下的模型结合多项式拟合的方法得到实时性较好的可靠试验数据。结果表明,两种仿真方法均适合于应用于模拟训练的船舶电力系统仿真研究。通过比较,提出了两种方法各自的特点和具体的应用场合。
参考文献
[1]施伟锋,许晓彦.船舶电力系统建模与控制[M].北京:电子工业出版社,2012
[2]常广辉,全钢,梁述海.RTW实时仿真技术在舰船模拟器中的应用[J].机电设备,2011,28(1):16-19.
[3]邱宝梅,左文英,王凤娟.基于Simulink/RTW的汽车电子控制系统的研究[J].计算机测量与控制,2011,19(5):1086-1088.
[4]马芳芳.基于RTW的船舶电站实时仿真系统的研究[D].大连:大连海事大学,2013.
[5]王伟志,袭著有,王贽.基于RTX实时仿真系统的设计与实现[J].电子设计工程,2013,21(12):17-24.
[6]沈楷,郭建国,卢晓东,等.基于Simulink/RTW的RTX系统仿真建模方法[J].计算机测量与控制,2014,22(2):566-568.
[7]李东辉.船舶柴油发电机组的建模与运行仿真研究[D].大连:大连海事大学,2011.
[8]潘昕,侯新国,夏立,等.船舶电力系统建模与仿真[J].电力科学与工程,2013,29(4):49-53.
[9]薛世龙,叶佳珒.船舶电力系统及其自动控制[M].北京:电子工业出版社,2012.
[10]李志军,杨梅,刘艳萍,等.MATLAB在同步发电机仿真中的初始化问题[J].大电机技术,2003,6:62-66.
[11]陈光,任志良,孙海柱.最小二乘曲线拟合及Matlab实现[J].兵工自动化,2005,24(3):107-108.
[12]吕喜明,李明远.最小二乘曲线拟合的MATLAB实现[J].内蒙古民族大学学报,2009,24(2):125-127.
[13]侯晓波,左文英.基于Simulink与VC混合编程方法的研究与应用[J].计算机应用,2010,29(11):29-32.
[14]娄明山.基于Simulink的工业过程实时仿真研究[D].长沙:中南大学硕士论文,2012.第35卷第1期2016年3月计算技术与自动化ComputingTechnologyandAutomationVol35,No1Mar.2016第35卷第1期2016年3月计算技术与自动化ComputingTechnologyandAutomationVol35,No1Mar.2016endprint