汽车控制器开发软件的在环测试方法转让专利

申请号 : CN201410333438.1

文献号 : CN105279081B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏洪涛郑鸿云王静

申请人 : 联创汽车电子有限公司

摘要 :

本发明公开了一种汽车控制器开发软件的在环测试方法,包括:取得汽车控制器定点模型源代码封装形成S‑function C文件;对S‑function C文件进行编译生成与S‑function C文件同名的动态链接库文件;将S‑function模块名改为所述动态链接库文件名,生成封装源代码的S‑function模块;将封装源代码的S‑function模块与原始浮点模型放在同一新建模型中添加测试例形成测试模型;仿真测试模型得到S‑function模块代码运行结果和原始浮点模型运行结果,对上述两种输出结果进行减法运算,再对减法后的结果取绝对值,得到S‑function模块代码运行结果相对原始浮点模型运行结果的误差。本发明的在环测试方法避免了依赖第三方工具,节省了成本,操作更加方便,能直接对产品级代码进行测试,结果更具有可信性。

权利要求 :

1.一种汽车控制器开发软件的在环测试方法,其特征是,包括如下步骤:

1)取得汽车控制器定点模型源代码,利用工业标准建模工具MATLAB软件对定点模型源代码进行源代码封装形成S-function C文件;浮点模型是由汽车控制器研发算法所建立的,定点模型是由对浮点模型进行定标处理得到的;

2)在MATLAB环境下利用mex命令对S-function C文件进行编译,生成一个与S-function C文件同名的动态链接库文件;

3)在MATLAB环境下运行S-function模块并将S-function模块名改为所述动态链接库文件名,使S-function模块与动态链接库相关联,更新模型,生成封装源代码的S-function模块;

4)将步骤3)生成封装源代码的S-function模块与原始浮点模型放在同一新建模型中添加测试例,形成测试模型;5)仿真测试模型得到S-function模块代码运行结果和原始浮点模型运行结果,对上述两种运行结果进行减法运算,再对减法后的结果取绝对值,得到S-function模块代码运行结果相对原始浮点模型运行结果的误差,即软件在环测试结果。

说明书 :

汽车控制器开发软件的在环测试方法

技术领域

[0001] 本发明涉及汽车电子领域,特别是涉及一种汽车控制器开发软件的在环测试方法。

背景技术

[0002] 汽车控制器研发算法建模(浮点模型)完成后,对算法模型进行定标处理得到定点模型,然后利用美国迈斯沃克(MathWorks)公司开发的工业标准建模工具MATLAB软件中的自动代码生成工具(Real Time Workshop,RTW)或德国dSPACE公司的自动代码生成工具TargetLink对定点模型进行自动代码生成,对生成的代码需要进行进一步测试,以验证模型到代码的一致性,确定模型的定标是否准确,采用软件在环(Software-in-loop,SIL)测试是一种有效的方式。
[0003] 传统汽车控制器开发软件在环测试方法是利用自动代码生成工具RTW或TargetLink对模型生成S-function封装,进后在MATLAB环境下进行仿真测试。传统的汽车控制器开发软件在环测试方法具有以下缺点:
[0004] 1.方法不够灵活。对使用自动代码生成工具RTW生成的代码和使用TargetLink工具生成的代码,两者不能交互,只能在本工具下使用本工具所生成的代码。
[0005] 2.自动代码生成工具RTW或TargetLink进行S-function封装的代码并不是产品级的代码,不能很好的反映软件在环测试结果。
[0006] 3.自动代码生成工具RTW进行软件在环测试有一定局限性,结果不够准确;TargetLink工具进行软件在环测试步骤比较繁琐,使用TargetLink需要购买许可(license),增加了成本。
[0007] 4.对手工代码无法直接使用工具进行软件在环测试测试。

发明内容

[0008] 本发明要解决的技术问题是提供一种对定点模型源代码录入形式无限制能直接对产品级代码进行测试的汽车控制器开发软件在环测试方法。所述产品级代码是指能直接应用于产品的源代码。
[0009] 为解决上述技术问题,本发明的汽车控制器开发软件的在环测试方法,包括以下步骤:
[0010] 1)取得汽车控制器定点模型源代码,利用工业标准建模工具MATLAB软件对定点模型源代码进行源代码封装形成S-function C文件;
[0011] 2)在MATLAB环境下利用mex命令对S-function C文件进行编译,生成一个与S-function C文件同名的动态链接库文件;
[0012] 3)在MATLAB环境下运行S-function模块并将S-function模块名改为所述动态链接库文件名,使S-function模块与动态链接库相关联,更新模型,生成封装源代码的S-function模块;
[0013] 4)将步骤3)生成封装源代码的S-function模块与原始浮点模型放在同一新建模型中添加测试例,形成测试模型;新建模型是新建的工程;利用MATLAB软件建模的时候首先要打开一个空白的模型,这就相当于一个新建的模型,然后再在这个空白的模型中加入必要的模型以实现某一特定的功能。
[0014] 5)仿真测试模型得到S-function模块代码运行结果和原始浮点模型运行结果,对上述两种运行结果进行减法运算,再对减法后的结果取绝对值,得到S-function模块代码运行结果相对原始浮点模型运行结果的误差。
[0015] 本发明的汽车控制器研发在环测试方法对定点模型源代码录入形式无限制(手写或自动生成均可)能直接对产品级代码进行测试的汽车控制器开发软件在环测试方法采用本发明后,只需在MATLAB环境下对测试模型进行仿真,即能得到S-function模块代码运行结果相对原始浮点模型运行结果的误差,得到仿真波形和数据。本发明的在环测试方法避免了依赖第三方工具,节省了成本,操作更加方便,能直接对产品级代码进行测试,结果更具有可信性。

附图说明

[0016] 下面结合附图与具体实施方式对本发明作进一步详细的说明:
[0017] 图1是本发明的流程示意图,以自动生成代码为例。

具体实施方式

[0018] 本发明提供一种汽车控制器开发软件的在环测试方法,包括以下步骤:
[0019] 1)取得手动录入或软件自动生成的汽车控制器定点模型源代码,利用工业标准建模工具MATLAB软件对定点模型源代码进行源代码封装形成S-function C文件;以C源代码封装为例,其过程如下:
[0020] ①利用美国迈斯沃克(MathWorks)公司开发的工业标准建模工具MATLAB软件实现对C源代码的封装。在MATLAB的Simulink模块库下打开S-function模块的C文件模板”Basic C-MEX Template”,并另存为到工作路径下。
[0021] ②在S-function C文件下,修改代码中的S_FUNCTION_NAME与该C文件名一致。
[0022] ③在S-function C文件中的”#include”位置把要封装的源代码的C文件、头文件包含进来,格式为”#include<头文件名/C文件名>”。
[0023] ④在S-function C文件中的初始化函数mdlInitializeSizes()中定义输入输出个数和数据类型,如定义两个int16形式的输入端口代码如下:
[0024]
[0025] ⑤在S-function C文件中的模型输出函数mdlOutputs()中定义S-function的输入输出端口与外部变量的对应关系,首先把S-function的输入信号赋给源代码中的输入全局变量,然后调用源代码中主函数,最后把源代码中的输出全局变量的值赋给S-function的输出信号,至此S-function C文件封装完毕。
[0026] 2)在MATLAB环境下利用mex命令对S-function C文件进行编译,生成一个与S-function C文件同名的动态链接库文件.mexw32;该文件用于S-function模块的生成和模型仿真。.mexw32是动态链接库文件的后缀名。
[0027] 3)在MATLAB环境下运行S-function模块并将S-function模块名改为所述动态链接库文件名,使S-function模块与动态链接库相关联,更新模型,生成封装源代码的S-function模块;该模块调用S-function C文件同名的动态链接库文件,用于后面的建模仿真。
[0028] 4)将步骤3)生成封装源代码的S-function模块与原始浮点模型放在同一新建模型中添加测试例,形成测试模型;添加的测试例根据测试需求设置,例如接口、信宿等模块。
[0029] 5)仿真测试模型得到S-function模块代码运行结果和原始浮点模型运行结果,利用MATLAB库中加减法模块Add对上述两种运行结果进行减法运算,再利用MATLAB库中的取绝对值模块abs对减法后的结果取绝对值,得到S-function模块代码运行结果相对原始浮点模型运行结果的误差,即软件在环测试结果。若两者误差小于等于设计需求则完成汽车控制器开发软件研发,若两者误差大于设计需求则进行调试修改后再次进行本发明在环测试。
[0030] 以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。