面向对象的柴油机多功能仿真软件开发与应用

2021-10-19 09:06陈昊天邓康耀
内燃机工程 2021年5期
关键词:容积计算结果气缸

陈昊天,张 琨,邓康耀,2,王 真,崔 毅,2

(1.上海交通大学 动力机械与工程教育部重点实验室,上海 200240;2.高新船舶与深海开发装备协同创新中心,上海 200240;3.天际汽车科技有限公司,上海 201821)

0 概述

仿真模型和软件在发动机的研究和设计工作中起着十分重要的作用。在发动机基础研究过程中,仿真分析可以获得试验难以测量的参数,更深入地探寻宏观、微观机理和规律;在设计开发过程中,可以预先得知发动机的性能并加以改进,减少对试验的依赖,降低开发成本,显著提高开发效率。

在发动机工作过程仿真方面,国外在20世纪70年代就开发了充满-排空模型(filling and empty model)[1]、一维特征线计算模型[2],到20世纪90年代又开发出了基于有限容积法的模型[3]。在这些模型和算法的基础上,开发了具有图形化界面、通用的商业软件,市场占有率比较高的有美国GAMMA Tech公司的GT-Power、奥地利AVL公司的Boost、英国Ricardo公司的WAVE等。国内也在20世纪80年代开展了发动机性能仿真研究,并不断改进仿真算法以提高计算精度和效率[4-5]。国内虽然在发动机性能仿真算法研究方面基本与国外同步,但是在通用性能软件开发方面与国外仍有较大差距。开发具有自主知识产权的发动机仿真软件,对提升发动机的设计开发水平尤其是非常规用途发动机开发,具有重要的意义。

程序开发的一个难点在于实际问题的抽象化及模型的选择。本文中介绍了一种发动机性能仿真软件的开发思路,将复杂的发动机物理模型抽象成可以编程实现的数学模型,并基于此开展了一种全新的发动机性能仿真软件开发工作;为发动机的关键计算组件提供了多种计算模型,可以使用户根据建模的需求进行选择。另一个难点在于程序要有较多的功能和较好的通用性。本文中建立了一个通用程序架构,可以实现多种性能仿真计算模式,包括稳态下的一维详细计算、容积法计算、实时计算及瞬态计算,且便于开发工作者对其进行修改和扩展。其中,实时计算是相较于当前的商用软件增加的一种计算功能,可应用于发动机控制,如硬件在环系统的开发[6]。除此之外,基于QT开发了软件的前后处理图形界面,为软件的使用提供了极大的便利。

本研究搭建了新颖的性能仿真程序框架并完成了软件开发工作,包含了目前商用软件欠缺的实时计算功能,为发动机性能仿真软件的开发和发展提供了新的思路。

1 软件架构设计

软件的组成主要包含可视化的建模界面、实现多种求解功能的求解程序和可视化的后处理绘图界面三部分。用户需要在界面上从已经建立好的模型库中选择子模型,根据模型的需要键入实际的发动机结构参数等;建模工作完成后,预处理生成接口文件,由求解程序去读取并计算;计算结果输出到设置路径下,然后由后处理界面读取。软件流程示意图如图1所示。

图1 软件执行流程

求解程序是仿真软件的核心,其优劣一定程度上取决于程序框架的好坏。以容积法求解功能为例,介绍求解程序的框架搭建和设计思想。本研究的求解程序基于C++语言开发。

发动机物理模型的主要组件包括环境、增压器、中冷器、进排气容积、气门、气缸等,各个组件之间相互连接组成完整的模型,所以可以采用图论的基本理论把模型抽象成一个有向图[7]。各个组件代表各个节点,组件之间的连接关系代表有向图的边,各个节点之间通过有向边来进行数据的传递,如图2所示。图中,E为环境,K为压气机,T为涡轮,I为中冷器,V为气门,C为气缸,P为容积。

图2 发动机模型有向图

基于这个假设,可以定义两个类,组件类用Component表示,连接类用Link表示。组件类代表有向图的节点,如图3所示。连接类表示有向图的边,如图4所示。组件类中定义几个通用的接口,ReadFromCase() 表示数据的读取;UpdateParameter()表示某个组件的迭代计算,取决于开发者选取的算法,是发动机仿真模型的核心;WriteOutput()表示计算结果的输出和传递。连接类包含了两个指针,分别指向上游和下游的组件,用来表征连接关系。

图3 组件类示意图

图4 连接类示意图

组件类只是一个抽象类,对发动机模型的各个部件,也会写实际的类来继承组件类,如气缸类Cylinder,进排气容积类Volume等。然后根据需求,对组件类中的接口进行重写,如气缸类需要增加燃烧过程计算函数Combustion()等,进排气容积类需要增加传热计算函数Heattransfer()等,增压器类需要增加图谱插值函数Interpolation()等,如图5所示。容积法计算模式下需要写7个子类,如表1所示。为了方便开发者对源程序进行修改或补充(如增加新的计算部件),采用C++设计模式中工厂模式来设计框架,ComponentFactory类为组件工厂类,getComponent()则为创建组件对象的函数。此外,为了提升程序的通用性,发动机特有的参数在界面中输入而不是在程序内部修改。

图5 Component类的继承和工厂模式

在组件类和连接类定义完成之后,要实现不同的计算功能,还需要设定不同功能下程序的算法,如设定需要调用的模型、模型的调用次序及计算终止的判断。以稳态计算为例介绍求解器的执行过程。首先要创建组件类和连接类对应的对象;然后从界面读取输入的参数,进行初始化;完成之后根据设定的迭代步长及选定的算法进行迭代计算,并进行对象之间的数据交互;然后每个循环结束进行收敛判别,全部收敛则结束,否则调整参数重新计算直到收敛。执行过程如图6所示。

表1 组件类的子类

图6 求解程序运算流程

2 软件算法介绍

2.1 子模型的介绍

程序的框架设计好之后,需要将发动机各个组件的计算模型写进其对应的计算单元中。为了满足用户的不同建模需求,发动机关键组件如气缸、进排气道、涡轮增压器等包含了多种计算模型。

气缸模型主要包含燃烧模型和缸内传热模型。燃烧模型包括零维模型[8]、多区模型[9-10]、KIVA耦合计算模型。传热模型采用Woschni模型[11]。

在一维计算模式中,进排气管道流动用一阶拟线性偏微分方程描述,用守恒型的有限体积法离散,求解格式包括一阶ROE格式、二阶TVD格式[12-13]及三阶ENO格式[14]。

管接头计算包括定压模型、压力损失模型和动量守恒边界模型[13,15]。定压模型假定接头处为等压、等熵流场。压力损失模型则考虑了管道接头处的压降。边界处均采用特征线法计算。

对于涡轮增压器,程序中提供了3种计算方法。一种是直接输入涡轮和压气机的脉谱图,利用流量、压比、转速、效率之间的关系,通过拉格朗日插值得到数据点的参数。由于插值函数的存在会限制程序的计算速度,因此提供了另一种快速计算方法,用多项式拟合图谱中的转速线和效率线,然后程序执行过程中直接调用多项式计算数据点的参数。上面两种方法需要提供准确的脉谱图,并且不具有预测性。基于前两种方法存在的局限性,程序中提供了一种基于增压器详细结构参数的预测模型[16]。

在容积法计算模式中,中冷器和进排气容积主要是以一阶微分方程的形式进行热动力参数的计算[17]。在瞬态计算模式下,要考虑曲轴系和涡轮增压器轴的动力学方程[18]。

2.2 不同计算模式的算法对比

软件包含几种主要的计算功能,一维计算、容积法计算及实时计算。不同的计算模式选择的算法会有所区别。针对微分方程的求解方法,一维计算采取四阶龙格库塔法,容积法采用预报校正法,实时计算为了减少迭代次数,采用欧拉法。

针对涡轮增压器的计算方法,一维计算和容积法计算采取脉谱图插值或者预测模型。实时计算为了提升模型的计算速度,采用多项式拟合法,在程序计算过程中避免了插值。

此外,针对多缸机的计算方法,一维计算考虑各缸之间不均性,对每个气缸都进行详细的计算。而实时计算模式下,只对第一缸进行详细计算,其他气缸的计算结果根据发火顺序,对第一缸的计算结果进行相位偏移来获得,从而减少气缸计算过程中内部子函数的执行次数,提升计算速度。

3 程序应用实例

仿真程序的框架和模型算法编程实现之后,结合前后处理界面,整个软件就可以完成预期的计算功能,但是仍然需要验证软件计算的合理性。以某型中速柴油机为例,介绍软件仿真计算操作过程,并与试验结果进行对比,验证软件计算的精度。柴油机的主要参数如表2所示。

表2 发动机参数

3.1 前处理

在软件的可视化建模界面中,首先选定计算模式,然后根据发动机的实际结构,利用模型库搭建模型。分别采用一维计算模式和容积法计算模式对计算机型进行建模,建好的模型如图7和图8所示。

图7 一维计算模型

图8 容积法计算模型

3.2 计算精度对比

对建好的一维模型和容积法模型进行稳态工况的计算,将计算结果与25%、50%、75%、90%、100%负荷稳态运行工况下的试验数据进行对比,对比结果如图9所示。本文中考虑了几种主要性能参数,包括增压压力、燃油消耗率、最高燃烧压力、涡前排温及涡前压力。其中,容积法计算结果和试验值的最大误差为3.88%,一维计算结果和试验值的最大误差为2.50%。

图9 一维计算和容积法模型精度对比

此外,容积法计算和一维计算可以对进排气压力波进行预测,100%负荷下计算结果如图10所示。压力波均值最大误差为0.43%,满足精度要求。

图10 进排气压力波对比

3.3 计算实时性对比

实时计算即模型一个循环的计算时间小于实际发动机运行时间的计算。将实时率ηREAL-TIME作为衡量程序实时性的指标,其含义就是发动机一个循环实际运行的时间tactul与计算一个循环的时间tcalculate的比值,表达式见式(1)。

(1)

实时率越大,表示程序相对于实际循环的计算速度越快,越能满足实时性的要求。在实际工程中,为了避免数据交互等因素造成的延迟,在满足精度的同时,要尽可能地提高实时率。

本研究中的发动机标定转速为600 r/min,实际发动机一个循环的时间为200 ms。在不同的计算模式下,满足的实时性如表3所示(测试环境为AMD 3550H CPU)。

表3 不同计算模式的实时性对比

可以看出,一维计算的实时率最低,计算速度最慢;实时计算模式的实时率很高,可以很好地满足发动机实时性的要求,因此可以在实时控制上得到很好的应用。

3.4 后处理

在程序计算收敛之后,打开生成的计算结果文件可以在软件的后处理界面进行图形的绘制。以缸压和放热率曲线为例,上述模型的缸压曲线和放热率曲线如图11和图12所示。

图11 缸压曲线绘图

图12 放热率曲线绘图

3.5 与商用软件对比

在目前市面上应用较为广泛的商用软件 GT-Power 上完成柴油机的建模和计算,与本文中所开发的仿真软件进行计算精度的对比,如表4所示。可以看出,本文中开发的性能仿真软件和商用软件相比计算精度基本相当,最大误差均反映在增压器转速,GT-Power误差为1.49%,本研究开发软件为1.40%。

表4 与商用软件的计算精度对比

4 结论

(1) 基于面向对象的软件开发思想设计的通用发动机性能仿真软件框架,可以实现多种稳态和瞬态计算模式(一维、容积法、实时)。

(2) 软件所包含的可视化建模界面、后处理界面可以有效地完成模型搭建工作及计算结果的图形绘制。

(3) 以某型中速柴油机为例,进行了多种稳态工况下的一维、容积法和实时计算。与试验结果对比表明软件有较高的计算精度;实时计算完全能满足实时分析的要求,实时率可以达到3.92;计算精度与商用软件基本相当。

猜你喜欢
容积计算结果气缸
320排CT低剂量容积体部灌注成像强化峰值时间对孤立性周围肺病变诊断价值
怎样求酱油瓶的容积
2014款宾利GT车偶尔加速抖动
一种新型无杆气缸传送一模双件开卷落料模结构
轻型载货汽车制动液贮液罐设计
巧求容积
趣味选路
扇面等式
求离散型随机变量的分布列的几种思维方式
一种发电站专用的电力输送电缆的架设设备