中国第一汽车股份有限公司技术中心 李一鸣 郑 岩 庞学文
一种车辆标定数据在Targetlink和RTW集成环境下共用的方法
中国第一汽车股份有限公司技术中心 李一鸣 郑 岩 庞学文
汽车电子行业大都采用基于模型的代码自动生成的软件开发技术,但基于原有工作进行二次开发且需要改变代码生成工具时,要保证切换前后模型、数据等文件的一致性。本文使用汽车电子常用的工具和软件环境对标定数据进行离线处理,实现标定数据在C代码生成工具Targetlink和RTW下通用,并对结果进行验证。
标定数据转换;Targetlink;RTW
汽车电子行业中为了保证代码和产品质量,一般都采用基于模型的代码自动生成的软件开发技术[1],通过制定代码生成过程的规范,保证代码质量,降低测试成本。
当前基于模型的产品级代码自动生成平台有Targetlink、Matlab/ Simulink/RTW Embedded Coder(简称RTW)、Scade等,都基于Matlab/Simulink系统仿真模型转化。Targetlink是Dspace公司针对汽车电子领域,基于Simulink/Stateflow模型开发的一套产品级代码生成工具,有着优异的代码转化效率和严格的软件规范。在模型编译过程中要将Simulink模型转换为Targetlink模型来满足其设计要求和规范,使用时要连接专用的软件保护器,在团队开发模式下有一定的局限性。RTW (Real Time Workshop,实时工作仿真平台)是Mathworks公司为Matlab在实时控制应用方面开发的专用工具箱[2]。其做为Matlab软件下的工具,使用成本低,更新速度快,对Simulink的支持好,开发人员无需其它特殊条件即可进行代码编译和生成。
根据项目开发需求,汽车电子开发团队会选择适宜的软件开发环境。但有时新的工作要一定程度的基于原有工作,并需要更换软件集成平台,则必须要保证更换平台前后模型、数据、和相关文件基本一致。工程在Targetlink和RTW集成环境间相互切换时,标定数据由于模型编译和代码生成方式的变化无法通用。
本文就是针对这种情况,找到标定数据在两个软件平台下可以通用的解决方案。由于两个软件平台下的标定数据转换是可逆的,所以本文以Targetlink集成环境向RTW集成环境转换为例,反之方法一致。
汽车电子行业中常用的标定数据存储方式和库文件有多种格式,本文以.par格式文件来保存标定数据,以.a2l格式文件读取和转换数据为例。par格式文件是一种文本格式,是Vector公司开发的CANape软件常用的数据存储格式。a2l格式文件是基于ASAM MCD-2MC(ASAP2)标准的库文件,该标准是针对测量和标定任务开发的,用于规范ASAM MCD系统中间层和控制器数据库之间的接口[3]。
实际应用中为了便于使用者观察数据,a2l文件一般会被处理,将原本的定义显示为易于读取的信息。但是两个平台对a2l文件的处理规则并不完全相同,这样就导致了Targetlink集成的程序保存出的标定数据无法全部被RTW环境下集成的程序直接读取。
本文的解决思路是将标定数据在二个集成环境下的一个相交点上实现数据的交互,实现这个方案需要一下三个主要步骤。
1.1 统一数据格式
由于两个集成环境下的模型同源,导致标定数据差异的原因主要是代码和a2l的生成方式不同。统一数据格式后,就为实现两个平台间数据的交换提供了基础。
标定数据是通过a2l文件从MCU中读取的,而a2l文件一般是被处理过的,所以要获得模型初始定标状态下生成的a2l文件,把标定数据通过初始状态的a2l文件逆转化为模型初始定标的状态。从而去除数值转换关系和部分字符等特殊表示形式,将标定数据都以原始的数值方式存储,避免在后续步骤中出现不识别或识别错误的状况。
标定数据在存储时有多种数据格式可选,如十进制、十六进制、物理值等,其中物理值是数据在MCU的物理层级上保存的数值,在转换时基本不会改变。为了保证数据完全去除a2l文件中的转换关系算法,在数据保存时,需要选择数据类型为物理值。转换示意图如图1所示。
1.2 数值换算
在项目工作中,Targetlink环境下保存出的标定数据与RTW环境下保存出来的数据有着明显的差别,除去表述形式和运算关系不完全相同外,它们的二维数组形式互为转置,即二者的坐标轴也相反。就需要对数据进行处理,将二维的数组进行转置。而且有部分数据仍以字符的形式存在,这些数据转化后很可能无法被RTW环境集成的软件读取,所以需要根据字符对应关系进行逆转换,从字符形式转变为数值形式。
图1 Targetlink平台下数据格式转换示意图
本文使用m语言在Matlab环境下开发了自动运行的数据转置处理脚本。脚本读取par格式数据文件,检索其中的二维数组并进行转置。同时检测数据中字符格式的数据,通过读取其对应关系将数据转变为数值格式。最后将数据以par文件格式进行保存。其逻辑拓扑图如图2所示。
图2 脚本逻辑拓扑图
1.3 读取转换数据
最后要将数据格式转变为RTW平台下定义的格式。使用开发的脚本对转化后的标定数据进行数值处理后,所得的数据格式与RTW平台下的软件读写格式相同,即可以被直接读取。但是在RTW平台下,如果直接使用a2l文件读取数据,读取到的数值会产生错误。原因是标定数据的状态仍处于模型初始定标的状态,该数据只能被模型生成的初始状态的a2l文件所翻译,使用具有换算关系的a2l文件读取数据时,会由于转换关系的不同而导致错误。所以此时需要使用RTW平台模型生成的初始未修改状态的a2l文件来转换标定数据,转换完毕后以物理值的形式存储在par文件中。由于par文件可以保存数据的两种格式,就可以包含着物理值的格式。而后使用RTW平台的a2l文件即可读取保存出的par文件,并加载到工程中。读取转换数据的示意图如图3所示。
图3 RTW平台下数据转化示意图
转换方法针对Targetlink和RTW环境集成的代码,使用CANape和Matlab软件环境完成任务,分别负责数据的读写和运行自动脚本。实现标定数据从MCU中读取,转化,最后写入MCU的过程。为简化转换流程,获得标定数据后,使用CANape软件内对数据操作支持较好的CDM Studio工具对标定数据进行转换。