APP下载

一种手写代码转换为Matlab模型的研究

2018-12-08马培义王烨徐瑞雪王祺明朱成周沛泽

汽车实用技术 2018年22期
关键词:调用手写代码

马培义,王烨,徐瑞雪,王祺明,朱成,周沛泽



一种手写代码转换为Matlab模型的研究

马培义,王烨,徐瑞雪,王祺明,朱成,周沛泽

(安徽江淮汽车集团股份有限公司,安徽 合肥 230601)

文章首先对开发背景进行简单介绍,在此基础上,着重介绍如何实现将手写代码转换为Matlab建模语言,并将生成的代码与底层接口函数进行集成、编译、刷写到TCU中,用CANape标定工具对控制程序进行调试和测试,经对测试结果的分析,验证了该方法功能正确,满足要求,可以应用。

手写代码;接口调用

1 引言

1.1 背景介绍

软件开发初期,为了能够及时地满足软件调试进度,对于输入、输出接口,经常用手写代码实现,当软件需要实现平台化时,根据不同的需求,需要对手写代码进行变更。由此带来的问题有:1)手写代码维护性差;2)手写代码阅读性差;3)无法实现功能模块化。

因此,为了解决手写代码存在的问题,且结合当前软件实现方式,需要将手写代码转换为Matlab建模的方式,实现同样的功能。进而增加软件的可维护性、阅读性以及功能模块化。

2 手写代码转换为Matlab建模方式

2.1 手写代码转换为Matlab建模原则

手写代码转换为Matlab模型需要遵循以下原则:

1)不能打乱当前的软件架构,建议按照AUTOSAR架构进行设计,方面后期的维护;

2)模型搭建需要遵循MAAB建模规范(MathWorks Automotive Advisory Board);

3)软件逻辑搭建需要正确、准确地实现当前手写代码的全部功能。

2.2 软件架构设计

按照上述原则,且为了能够与软件实现无缝连接,设计底层手写代码转换为Matlab建模方式的软件架构如图1所示,包括:1)软件输入接口调用:模拟量/频率量/CAN信号输入;2)信号处理:对采集的各种输入信号进行处理,转化为控制软件内部信号;3)信号输出:将完成处理的信号进行打包,输出到软件功能模块;4)软件功能模块:实现软件功能;5)输出接口:执行软件功能的结果,控制电磁阀或者输出对应的CAN信号。

图1 底层手写代码转换为Matlab建模方式软件架构

2.3 软件接口调用实现

这里将介绍软件输入接口的调用,来说明手写代码如何使用Matlab中实现软件接口的调用。

1)在软件中增加TCU_Input subsystem模块,作为软件输入接口的功能模块。为了提升软件模块的可读性,对该功能模块进行属性编辑,如下图2所示。

图2 输入模块属性编辑

2)在TCU input模块中增加输入量读取逻辑,并从Targetlink模块库中将function增加到Matlab编辑界面,为了保证在生成代码时,所有的输入函数集成到一个文件下,对function声明如图3所示:

图3 function声明

图4 软件接口调用function定义

在Fork2_6_Read模块中增加相应的软件接口逻辑,软件接口function的定义如4所示。其中Step function name中为软件接口函数名称,其他的function name可根据需要进行定义。

至此,已经完成软件输入接口调用的实现,对于信号处理、信号输出等模块,只需要按照手写代码的处理逻辑进行搭建即可。

2.4 软件测试

根据2.2中设计的软件架构,结合2.3中的软件接口调用实现,在Matlab环境中完成模型设计后,将模型转化为TargetLink模型,并编制相应的测试用例,完成MIL测试,若仿真测试结果满足需求,则可以进行代码的生成和集成工作。代码生成后,配置合适的编译环境并编译形成可执行S19文件。在TargetLink环境下基于模型生成A2L文件,为标定做准备。然后,利用刷写调试工具将S19文件下载到TCU中,最后在整车上进行调试。

3 整车调试验证

为了验证上述模型中软件接口调用策略是否正确,利用CANape工具,建立调试环境,对拨叉位置信号进行采集调试。

3.1 调试环境建立

在CANape界面中添加Database,导入生成的A2L文件,形成配置环境。新建适用于测试软件接口调用的界面,将需要检测的输入接口信号以图表或数字形式显示,包括:离合器压力传感器电压值、离合器温度电压值、实际档位电压值、各转速信号原始值。最终形成如图5所示调试界面:

图5 调试界面

3.2 调试结果

输入接口调用的调试,主要是验证集成的输入接口是否与手写代码表现一致,因此,在整车静态时,通过脱开离合器,进行手动挂档测试。

1)拨叉2/6档档位测试:

整车中,手动控制拨叉动作,检查实际拨叉传感器电压值和实际拨叉位置是否与设定值一致。下图6为手动挂档测试结果。

图6 手动挂档测试结果

基于上述测试结果,手写代码转换为Matlab建模方式能够实现控制要求。

4 结论

本论文通过手写代码转换为Matlab建模语言的方法介绍,实现与手写代码功能一致的软件,利用CANape标定工具对生成的软件进行调试,经对测试结果的分析,验证手写代码转换为Matlab建模方法功能正确,结果符合要求,可应用到整车软件中。

[1] 陈然,孙东野,刘永刚.双离合器式自动变速器建模与控制系统仿真[J].重庆大学学报:自然科学版,2010,33(09):1-7.

[2] 赵志国,刁威振,王琪,胡笑天.干式DCT控制系统硬件在环仿真试验台开发[J] .汽车工程, 2012,34(11) 1024-1032.

[3] 刘国强,孙伟,陈德民,郭晓林.基于多传感器技术的双离合器自动变速器控制系统研究[J].计算机测量与控制,2012,20(05):1229 -1231.

[4] 张祥,杨志刚,张彦生.汽车AMT系统的Matlab/Simulink建模与仿真[J].系统仿真学报,2007, 19(14):3339-3343.

Manual Code Integrate Method

Ma Peiyi, Wang Ye, Xu Ruixue, Wang Qiming, Zhu Cheng, Zhou Peize

( Anhui Jianghuai Automobile CO., LTD., Anhui Hefei 230601 )

This paper firstly gives a rough instruction about the background, and give a detailed method about how to translate the manual to Matlab/Simulink model, then generate c# code, and then compile the code to S19 file and using flash -ing tool to download into TCU. At last, use CANape to do the testing, finally analyze the results and get the conclusion that this control software has correct function and meet the requests, can be used in DCT system.

Manual code; Interface callback

B

1671-7988(2018)22-46-03

V217

B

1671-7988(2018)22-46-03

V217

马培义(1989-),男,本科,电控设计工程师,就职于安徽江潍汽车集团股份有限公司。

10.16638/j.cnki.1671-7988.2018.22.015

猜你喜欢

调用手写代码
我手写我心
我手写我意
系统虚拟化环境下客户机系统调用信息捕获与分析①
神秘的代码
一周机构净增(减)仓股前20名
一行代码玩完19亿元卫星
6万字的情书
近期连续上涨7天以上的股
基于属性数据的系统调用过滤方法
网络时代更需要手写的温暖