安瑞范文网

C#MATLAB混合编程在汽车性能仿真平台开发的应用

|来源:网友投稿

摘 要:针对汽车性能仿真中对平台仿真精确度及便捷性的需要,论文提出了界面与算法内核并行开发的模式,基于Winform架构采用C#语言开发人机交互界面,以Simulink模型作为仿真内核,采用C#与MATLAB混合编程技术实现界面与仿真内核的调用和数据的传输。并对软件的架构设计、界面设计以及混合编程中所涉及的数据管理与批量数据传输方法进行了论述。通过软件与仿真内核的计算结果对比,证明了混合编程技术在界面调用仿真内核的过程中能够保证数据的一致性和准确性,能够在发挥MATLAB/Simulink强大仿真功能的基础上充分利用Winform友好的人机交互特性,为汽车性能仿真软件开发提供了新思路。

关键词:汽车性能仿真;C#与MATLAB混合编程;数据管理;批量数据传输

中图分类号:U467.4 文献标识码:A 文章编号:1671-7988(2018)03-88-04

Application of C # Matlab Mixed Programming in the Development of

Simulation Platform for Vehicle Performance

Liu Jiechang, Huang Bingfeng, Luo Yongge, Li Zheng, Sheng Qiao, Yang Yunyun

( 1.Hubei Key Laboratory of Automotive Power Train and Electronics, Hubei University of Automotive Technology,

Hubei Shiyan 442002; 2.Technology Center, Dongfeng Motor Corporation, Hubei Wuhan 430056)

Abstract: In order to meet the need of platform simulation accuracy and convenience in vehicle performance simulation, this paper proposes a parallel development mode of interface and algorithm kernel. Based on Winform architecture, C# language is used to develop human-computer interaction interface, Simulink model is used as the simulation kernel, C# and MATLAB mixed programming technology is used to implement the interface and simulation kernel call and data transmission. And the software architecture design, interface design and mixed programming involved in the data management and batch data transmission methods are discussed. The calculated results by the software and the simulation kernel comparison, proved the mixed programming technology to ensure the consistency and accuracy of data in the process of interface called simulation kernel, which is based on the use of MATLAB/Simulink powerful simulation function to make full use of Winform friendly man-machine interaction characteristics, provides a new idea for the vehicle performance simulation software development.

Keywords: vehicle performance simulation; C# and MATLAB mixed programming; data management; batch data transmission

CLC NO.: U467.4 Document Code: A Article ID: 1671-7988(2018)03-88-04

前言

在汽車V型开发模式中,动力性和经济性计算是整车设计及总成、零部件匹配的重要一环。目前,针对传统车、纯电动、混合动力及燃料电池等车型的计算理论和仿真平台较为完善,其中使用最广的是ADVISOR和AVL Cruise。前者可自由配置计算任务,后者可从汽车建模开始,参数配置精细到零部件,软件的仿真自由度更大,但同时降低了便捷性。企业中,通常需要对大量车型进行动力性经济性指标验证,每次仿真前重新对每一款车型进行细致的参数配置会降低工作效率。为在满足功能的前提下提高仿真便捷性,Excel成为企业中较为普遍的计算平台[1],但其无法避免人工输入导致容易出错且精度不高。本文结合Matlab强大的计算性能和C#友好的人机交互特性,以Simulink为仿真内核,Winform应用窗体为仿真界面,平台继承了ADVISOR和Cruise的仿真对象的通用性、动力总成的可调性、计算指标的可自定义性。并以数据库提取整车参数的方式作为创新点,避免了繁杂的参数设置,实现了工程实用性与功能性的平衡。

1 C#与MATLAB混合编程技术

1.1 C#与Matlab的简介

Microsoft Visual C# 是 Microsoft 专门为. NET 平台而开发的一种强大的、面向对象的语言,可方便快捷的在. NET 公共语言运行库 ( common language runtime, CLR) 上创建Windows应用 程序[2]。C# 简单、功能强大、类型安全,可缩短软件开发周期,但是在数值计算分析和曲线绘图方面的操作繁琐,功能薄弱。

将数据可视化和数值计算功能集成在一起的Matlab软件被广泛地应用于图像处理、控制系统、数学建模等领域,具有强大精准的仿真计算能力。Maltab的函数库种类丰富,且接口设计完善,结构开放易于扩充,但Matlab软件在用户界面上的开发功能比较简单、执行效率低,难以实现底层数据输入输出的管理。Matlab软件在用户界面的功能上的开发还比较简单,执行效率低,难以实现底层的数据输入输出的管理[3]。

为保证软件的便捷性和工程实用性并兼顾软件开发周期和成本,利用Matlab提供的API接口和C#COM组件将两者联合,充分发挥各自优势,同时将主程序与仿真内核隔离开来,方便了后续的代码修改和升级。

1.2 混合编程的实现

Matlab软件提供了三种应用程序接口(API)方式[4]:1)调用Matlab模块所生成的动态链接库(DLL)。2)通过引用Matlab COM组件,访问Matlab内置函数。3)利用 Matlab 编译器来创建 C #语言共享库,创建一个能提供方法入口的包装类[5]。其中,方法一的编程接口和编程方式较特殊,需另外学习,降低了开发周期。方法三使用的函数有一定局限性,仅限于数学函数库且无法使用Matlab强大的图形处理功能[6]。而方法二是嵌入式编程,调试简单方便,不需要进行复杂的接口设计,并能执行所有Matlab命令,因此本文选用第二种方式, 结果证明此方法能在缩短开发周期的同时充分发挥Matlab强大函数库的优势。

方法二的调用原理如下:利用.NET 环境的运算库可调用包装(Runtime Callable Wrapperm, RCW),将 COM 组件提供的 COM 接口转换为与.NET 框架兼容的接口,使托管客户端(C#)在调用一个 COM 组件时认为是在自身的环境中调用对象,而不需要处理 COM 特性。通过 RCW,C#可以在.NET 环境下作为一个 COM 应用的客户端访问 COM 组件,提出数据请求。实现步骤如下:

1)添加COM(Matlab Application(Version7.11) Type Library)引用。加入对程序集文件“MWArray.dll”的引用,并加入命名空间:

usingMathWorks.Matlab.NET.Arrays;

using MathWorks.Matlab.NET.Utility

2)在Main函数中添加如下代码:

MLApp.MLAppClass matlab = new MLApp. MLApp Class();

利用Matlab com组件中的函数执行Matlab命令,所调用的函数及功能如下表1所示:

2 软件设计

平台的仿真对象涵盖传统汽车、混合动力、纯电动汽车、燃料电池汽车四大类型。为提高工程实用性,避免繁杂的参数设置,平台需支持Excel格式和数据库格式的参数导入导出功能。平台以C#应用窗体(Winform)作为人机交互界面,以Simulink程序作为仿真内核,并将指标计算的函数封装,通过Matlab的COM组件执行运算。软件架构设计如图1所示:

2.1 流程设计

根据软件的需求定义,采用 “自上而下”的模块式开发流程完成各个子系统架构,模块设计、数据流和接口设计。软件的流程图如图2所示:

2.2 界面设计

指标的仿真分三个过程:1.汽车配置。2.计算指标配置.3.执行运算显示结果。考虑到界面的友好性,将主界面针对过程1和2分为两个窗口。如图3所示。建模部分可从外部导入数据也可手动填写,计算指标根据汽车类型的选择而变化,通过工具栏中的Matlab按钮调用仿真内核开始计算。整个界面主体突出,交互友好,使用方便。

3 批量数据传输

平台的计算对象涉及传统车、纯电动、混合动力、燃料电池汽车,因此仿真内核的参数高达470个。为实现C#与matlab平台的大量数据传输,采用C#类属性反射遍历技术。

反射是C#.NET的一种重要机制,它表示在程序运行时对一个程序集的类型元数據的使用,好比我们可以将一个程序集进行映像,在此映像中我们可以从中获取需要的类型元数据,从而完成相应的功能[7]。

对应某个类的实例化的对象采用遍历反射技术,可以动态地取得类的成员:类、接口、结构、枚举和委托等。建立变量类,通过反射技术访问变量的get、set属性,获取变量名和相应的值,便可进行跨平台传输。关键代码如下:

Type t = tc.GetType();//获得该类的Type

foreach (PropertyInfo pi in t.GetProperties())

{

object value1 = pi.GetValue(tc, null));//用pi.GetValue获得值

string name = pi.Name;

//进行传值操}

4 数据管理

数据管理涉及用户登录,文件新建、打开、保存。历史记录存储、对比等。仿真过程中,车辆的输入参数及结果状态如图4所示。

状态图中的变量定义如下表:

对于非静态变量,每一次状态的转换,都需要实例化一个新的变量类,而变量类中的数据量庞大,结构复杂, C#提供的浅拷贝函数只对顶级对象进行复制,不足以满足克隆全部数据的要求,但深拷贝技术术不仅可以复制对象,还可以复制其子对象。

利用这一技术编写拷贝构造函数,实现基于同一类的其他对象的构造和初始化,从而将同类变量在不同窗体和不同状态之间完整传递。代码应用序列化和反序列化的思路将变量逐个检索并复制。

5 计算分析实例

软件对一辆EV汽车进行了动力经济性仿真,配置了车型参数,定制了计算任务。在参数、计算任务均相同的情况下,将采用了混合编程技术的仿真平台计算结果与仿真内核独立运行的结果进行对比,如表3:

结果表明采用C#调用Matlab的混合编程方式对计算结果不会产生影响。并且,良好的人机交互界面使仿真更为简单,同时与Excel数据的交互避免了繁杂的参数设置,增强了工程实用性,说明C#与Matlab混合编程技术在整车动力性经济性仿真中的应用是切实可行的。

6 结论

系统以人机交互界面调用仿真内核的形式将车型及任务配置程序与动力性经济性计算模型隔离开来,通过严格定义

的接口相连,降低了代码耦合性,从而提升了功能扩展性。仿真内核以Simulink作为建模平台,可充分发挥matlab强大的计算性能。界面采用C#winform应用窗体,利用C#COM组件调用matlab运行仿真内核,将matlab强大的仿真性能和c#友好的人机交互界面统一起来,扬长避短,在有限的开发周期内充分发挥两者的优势。

通过C#调用Matlab进行的性能仿真与Matlab单独仿真的计算结果完全一致,证明了本文的方法可行,且为整车性能仿真平台的开发提供了新思路。

参考文献

[1] 谢卫兵. MATLAB在汽车动力性、经济性仿真中的应用[A]. 全国各省区市机械工程学会、云南省机械工程学会.2015年第五届全国地方机械工程学会学术年会暨中国制造2025发展论坛论文集[C].全国各省区市机械工程学会、云南省机械工程学会:2015:18.

[2] 马煜,陈海军.Visual C#.NET案例开发集锦[M].北京:电子工业出版社, 2008.

[3] 柯彪,高跃飞,罗炳华,徐凤军.C#与MATLAB混合编程在内弹道设计中的应用[J].弹箭与制导学报,2013,(05):129-132.

[4] 秦春影,喻晓锋,仝海燕,唐淑萍. C#與Matlab集成方式的比较研究[J].洛阳理工学院学报(自然科学版),2011,21(04):42-46.

[5] 张望.一种基于COM的改进组件创建的研究[D].西南大学,2010.

[6] 杨成,申丽然,李雪耀. Matlab引擎的VC++6.0接口调用及其面向对象编程[J].应用科技,2001,(11):41-44.

[7] 斯梅切尔.C#和.NET2.0实战:平台.语言与框架[M].施凡.人民邮电出版社.2008.168-169.

推荐访问:仿真 混合 性能 编程 开发

热门推荐
  • 中央八项规定内容全文

    中央八项规定内容全文中央八项规定内容全文关于改进工作作风、密切联系群众的八项规定一、要改进调查研究,到基层调研要深入了解真实情况,总结经验、研究问题、解决困难、指导工作,向群众学习、向实践学习,多同群

  • 中国共产党百年四大时

    吴庆军陈红梅张霞[摘要]党的百年庆祝大会上,习近平总书记总结了四个伟大成就,意味着中央已经将党的一百

  • 政治理论学习不够深入

    政治理论学习不够深入整改措施方案三篇政治理论学习不够深入整改措施方案1通过认真回顾自已近年来在工作、生活中的表现,切实感觉到与要求还有一定差距,有必要进行认真查摆自己存在的实际问题和不足,并剖析根源,

  • 全球安全倡议的核心要

    王玏刘军〔提  要〕全球安全倡议是破解人类安全难题、维护世界和平安宁的中国智慧和中国方案,其所包含的

  • 推进全面从严治党工作

    推进全面从严治党工作措施为全面贯彻党的十九大和十九届二中、三中、四中全会精神,深入学习贯彻习近平新时代中国特色社会主义思想和党中央治国理政新理念新思想新战略,认真落实省委X届X次全会和市委X届X次全会

  • 意识形态工作责任制实

    意识形态工作责任制实施细则第一章总则第一条为进一步加强和改进意识形态工作,落实党要管党意识形态原则,明确党组领导班子、领导干部的意识形态工作责任,结合实际,制定本细则。第二条意识形态工作是党的一项极端

  • 中华人民共和国建筑法

    中华人民共和国主席令第四十六号全国人民代表大会常务委员会关于修改《中华人民共和国建筑法》的决定已由中华人民共和国第十一届全国人民代表大会常务委员会第二十次会议于011年4月日通过,现予公布,自011年

  • 2023年度支部委员会会

    支部委员会会议记录1  会议时间:年月日参加人员:基础部全体党员  主持人:xxx记录人:xxx  会议内容:  党支部活动记录  时间:年月日出席人数:缺席人员:  主持人:老师)记录人:  活动