CAN/CANFD
CCP/UDS
Bootloader/OTA
ECU/VCU/FCU
Simulink/ECUCoder
Ethernet
Hardware
Download
上一篇
下一篇
模型版本管理
一. 模型版本管理概述
二. 基于CCP测量变量的模型版本管理
三. 基于CAN通信矩阵的模型版本管理
四. 基于VersionInfomation的模型版本管理
五. 基于UDS服务的模型版本管理
六. 模型版本管理小结
回到顶部
模型版本管理
一. 模型版本管理概述
二. 基于CCP测量变量的模型版本管理
三. 基于CAN通信矩阵的模型版本管理
四. 基于VersionInfomation的模型版本管理
五. 基于UDS服务的模型版本管理
六. 模型版本管理小结
回到顶部
# 模型版本管理 ## 一.模型版本管理概述
与其它嵌入式软件类似,模型软件版本管理贯穿了模型定义、开发、测试、发布、升级维护的全过程,版本管理是保证模型软件质量的一种重要技术手段。与其它嵌入式软件不同的是,模型软件通常并不是以代码文本文件的方式(比如C代码)来存储,而是以特定格式二进制文件的方式(比如Simulink模型)来存储,因此,模型软件版本管理相比其它嵌入式软件版本管理有所不同。 对于RapidECU用户,ECUCoder提供了四种模型软件版本管理的方式,分别是: 1. 基于CCP测量变量的模型软件版本管理。 2. 基于CAN通信矩阵的模型软件版本管理。 3. 基于VersionInfomation的模型软件版本管理。 4. 基于UDS服务的模型软件版本管理。 ## 二.基于CCP测量变量的模型版本管理
基于CCP测量变量的模型软件版本管理是指将模型版本号当作一个CCP测量变量来处理,一个简单示例如下: 某项目使用RapidECU-U34控制器作为控制器硬件,在项目模型的在1s定时任务中添加一个Constant模块(位于Simulink-Sources子库),将模块的采样时间设置为-1,将模块的数据类型设置为uint32,将模块的值设置为23110213(年月日小时设置法)。使用MeaModule模块(位于RapidECU_U34-Calibration子库)观察软件版本号的值,模块的信号名称设置为Model_SoftwareVersion。需要注意的是,Constant模块的值不能超出uint32的范围。 上述示例模型正在U34控制器中运行的MeCa软件如下图所示:  模型软件版本号Model_SoftwareVersion与模型中设置的值一致,均为23110213,代表当前控制器中运行的模型是2023年11月2日13时设置的。 基于CCP测量变量的模型软件版本管理简单易用,只需要在模型中添加一个测量变量即可实现版本管理的功能,因此是一种十分常用的版本管理方式。但是由于需要用到标定软件与A2L文件,因此这种方式往往仅适用于模型开发与模型测试人员,对于产线测试与售后服务人员,这种方式可能并不是很合适。 ## 三.基于CAN通信矩阵的模型版本管理
基于CAN通信矩阵的模型软件版本管理是指将模型版本号当作CAN通信矩阵中的一个信号来处理。显然,这种方式在任何带CAN通信功能的控制器上都可以使用。 基于CAN通信矩阵的模型软件版本管理简单易用,只需要在模型中添加一个CAN通信信号即可实现版本管理的功能,因此是一种十分常用的版本管理方式。这种方式要求定义项目CAN通信矩阵(包括DBC文件)时添加模型软件版本号这个信号,如果前期定义CAN通信矩阵时未定义模型软件版本号,则需要补充模型软件版本号。 ## 四.基于VersionInfomation的模型版本管理
在建模时使用ECUCoder提供的VersionInfomation模块(位于MCUManagement子库中,要求ECUCoder软件版本2.0及以上)可以设置控制器的版本信息,包括零部件号(0xF187,长度16个字符)、软件版本号(0xF189,长度16个字符)、硬件编号(0xF191,长度10个字符)等。 使用VersionInfomation模块的方法是将模块拖到模型顶层,双击模块即可设置控制器版本信息,如下图所示:  设置版本信息时需要遵循以下两点要求: (1)必须以字母打头,之后可以是任意字母、数字或下划线,字母区分大小写。 (2)不允许使用下划线以外的标点符号,不允许使用空格、Tab、回车等,不允许使用中文。 模型设置的控制器版本信息在控制器UDS刷写界面中点击“连接测试”时可以查看,如下图所示,如果查看不到,请先将MeCa软件更新到最新版本。  关于MeCa软件与控制器之间交换控制器版本信息的通信协议请参考[刷写过程的通信协议](https://www.canfd.net/communicationprotocol.html#%E6%B5%8B%E8%AF%95%E9%98%B6%E6%AE%B5),用户也可以参考通信协议开发自己的上位机软件。 基于VersionInfomation模块的模型软件版本管理简单易用,只需要在模块中设置版本号即可实现多种版本管理功能。使用VersionInfomation模块设置版本信息通常需要一定的版本命名规范,该版本信息往往变动较少,因此比较适用于模型发布尤其是量产发布与部署。 ## 五.基于UDS服务的模型版本管理
基于UDS服务的模型软件版本管理是指利用UDS中SID=0x22,SID=0x2E两项服务来进行模型软件版本管理。显然,这种方式只有在带UDS服务的控制器上才可以使用。 0x22/0x2E两项服务涉及大量数据DID,其中与版本管理关联性较强的DID如下表: | DID | 描述 | RapidECU中UDS服务读写权限 | | ------ | ---------------------------- | ------------------- | | 0xF187 | UDS预定义数据,整车厂部件号,uint8×16。 | R/W(同时支持UDS写入与模型写入) | | 0xF189 | UDS预定义数据,整车厂软件版本号,uint8×16。 | R/W(同时支持UDS写入与模型写入) | | 0xF18C | UDS预定义数据,ECU序列号,uint8×15。 | R/W | | 0xF191 | UDS预定义数据,ECU硬件编号,uint8×10。 | R/W | | 0xF197 | UDS预定义数据,系统名称或引擎类型,uint8×10。 | R/W(同时支持UDS写入与模型写入) | 需要注意的是,当使用基于UDS服务的模型软件版本管理时,对于相同的DID(比如0xF189),请保持DID数据内容与VersionInfomation模块设置一致。比如UDS写入的DID=0xF189数据内容为'RapidECUSoftware'时,VersionInfomation模块设置的软件版本号也应该同为'RapidECUSoftware',两者需要一致,否则易引起版本混乱。 基于UDS服务的模型软件版本管理是一种比较通用的版本管理方式,在汽车行业得到了广泛应用。但是由于需要使用到UDS服务,对于短平快的小型项目可能不够易用。 ## 六.模型版本管理小结
本文介绍了了四种模型软件版本管理的方式,分别是: 1. 基于CCP测量变量的模型软件版本管理。 2. 基于CAN通信矩阵的模型软件版本管理。 3. 基于VersionInfomation的模型软件版本管理。 4. 基于UDS服务的模型软件版本管理。 上述四种模型软件版本管理的方式各有优缺点,用户在具体项目中可以根据项目需求灵活选择使用一种或者多种模型软件版本管理方式。