徽州骆驼 · 10月11日

汽车软件架构(CP)建模实践

image.png

01前  言

在汽车软件的开发周期中,首先是需要将模糊的概念转化为清晰、可量化的需求列表,明确软件需实现的功能、性能指标、用户界面要求以及安全标准等。随后,进入软件架构设计阶段,这是将需求转化为实际解决方案的过程。软件架构工程师在此阶段扮演核心角色,基于需求分析的结果,结合行业最佳实践、技术趋势及项目约束条件,构思出软件的整体架构。这包括定义系统的层次结构、组件划分、接口定义、数据流及控制流等关键要素。为了确保架构的灵活性与可扩展性,还会考虑模块化设计、服务化架构等先进理念。

在设计过程中,软件架构工程师会利用专业工具和技术手段,如UML图等来辅助表达设计思想。最终,他们会输出详尽的软件架构描述文档,这些文档不仅包含SWC的详细描述信息,如组件功能、接口协议、依赖关系等,还会以多种形式呈现,以满足不同受众的需求。例如,使用Office文档来撰写详细的架构说明书和进行交流展示;利用ARXML(AUTOSAR XML)文件来定义符合AUTOSAR标准的软件架构,便于在汽车行业生态系统中进行集成与验证等。

02工具准备

本文将使用MATLAB完成AUTOSAR CP(Classical Platform)平台下的软件架构中的SWC(Software Component)的搭建。

建模时,对MATLAB版本和工具包有一定的要求。以下是详细的说明:   

MATLAB版本要求

MATLAB的版本对于支持AUTOSAR建模的功能至关重要。虽然具体的最低版本要求可能随时间变化,但一般来说,较新的MATLAB版本(如MATLAB 2020及以后版本)通常能够提供更好的支持和更多的功能。为了获得最佳的性能和兼容性,建议使用MATLAB的最新版本或至少是一个相对较新的稳定版本。

工具包要求

对于AUTOSAR CP SWC建模,除了MATLAB的基本安装外,还需要特定的工具箱和插件。以下是一些关键的工具包要求:

  1. Simulink:Simulink是MATLAB的一个附加产品,用于建模、仿真和基于模型的设计。对于AUTOSAR建模,Simulink是必不可少的,因为它提供了图形化的建模环境,可以方便地构建和测试系统模型。
  2. AUTOSAR Blockset(或类似名称的工具包):如果老一点版本的MATLAB标准安装中可能不包含专门的AUTOSAR Blockset,但可以通过MATLAB的附加功能管理器或MATLAB Central File Exchange下载并安装相关的AUTOSAR支持工具包。这些工具包通常提供了特定的AUTOSAR相关块和配置选项,以支持AUTOSAR SWC的建模和代码生成。
  3. Embedded Coder:Embedded Coder是MATLAB的一个产品,用于将Simulink模型和MATLAB函数自动转换为优化的C和C++代码。在AUTOSAR SWC建模中,Embedded Coder能够将模型转换为符合AUTOSAR标准的代码,这对于与AUTOSAR兼容的ECU(Electronic Control Unit,电子控制单元)的部署至关重要。
  4. 其他相关工具包:根据具体需求,可能还需要安装其他MATLAB工具包,如Stateflow(用于设计复杂的状态机和流程图)、HDL Coder(用于生成硬件描述语言代码)等。然而,这些工具包对于AUTOSAR CP SWC建模不是必需的,但可能会在某些高级应用场景中提供额外的支持。    

综上所述,为了使用MATLAB进行AUTOSAR CP SWC建模,需要确保安装了最新版本的MATLAB、Simulink以及必要的AUTOSAR支持工具包和Embedded Coder。

03建模输入

SWC的设计属于SWE.2软件架构设计的工作,需要接收来自于SWE.1的软件需求分析输出,再着手SWC的设计。这包括SWC的划分、port&interface接口的定义、参数与数据类型等。

假定之前的准备工作均已经完成,“座椅加热”功能的需求与需求分析的结果如下:

主驾座椅加热用户需求Case:

UC 01 : 座椅加热关闭时,手动点击屏幕主驾座椅加热虚拟按键,座椅加热开到2挡;

UC 02 : 座椅加热2挡位时,手动点击屏幕主驾座椅加热虚拟按键,座椅加热开到1挡;

UC 03 : 座椅加热1挡位时,手动点击屏幕主驾座椅加热虚拟按键,座椅加热关闭;

UC 04 : 座椅加热开启时时,且主驾离座时,触发座椅加热关闭。

image.png
软件需求分析结果

软件架构设计如下:
image.png

(为了操作演示,参数分了枚举与整形两类)
image.png

Data Type 信息如下:

image.png

04建  模

创建工程

首先打开matlab ,创建新的Simulink脚本,选择AUTOSAR Blockset工具箱中的Software Architecture模板; 

image.png

SWC组件 

在SWC模型建立的时候,可以建立Composition模块,可以理解为某一类功能的SWC的集合;Seat_Heat_Composition:   

image.png

双击进入,可以进行Composition内的SWC的设计;

image.png

按照SWC设计结果,构建两个Component,SeatHeat_VC_SWC,SeatHeat_AS_SWC

image.png

构建SWC的port与interface,首先直接在SWC边框上鼠标点击即可创建port   
image.png

共计需要六个外部输入、两个外部输出以及两个内部交互信号;

双击port处,对port进行修改命名;

image.png

Interface与DataType数据字典建立 

再对Interface进行模型数据字典的建立;

点击Simulink界面左下角的Interface,如之前没有复用或者已经建立好的数据字典,则需要点击Create Dictionary来创建;  

image.png

再次点击Open Dictionary来打开,点击上方的Data Interface来创建Interface

image.png

创建了一个默认的Interface,里面相关属性需要进一步配置,可以先根据我们的需要,对数据类型进行配置; 

image.png

切换到Data Types tag栏,建立对应的Data Type

image.png

根据架构设计需求,这里定义了一个uint8类型的数据与三个base uint8的枚举类型数据,填写相关关键信息,如枚举量名称、数值、初始值、base类型(枚举值需要)、最大最小值(连续值需要)等;   

image.png

再回过头构建Interface;

修改Interface名称,修改其Element属性,重点是与刚才创建的ADT关联起来;   

image.png

注:如果Interface关联的ADT是枚举类型,不要填写最大值&最小值。

Interface本身也需要配置属性,如接口类型、是否是服务(应该是SOA架构中需要)

image.png

也可以导出数据字典对应的ARXML文件 

image.png

在工作目录下生成对应的Data Type ARXML与interface ARXML文件

image.png

数据字典查看 

返回simulink界面,可以查看interface信息   

image.png

也可以点击模型数据查看刚才建立的Interface与Data Type

image.png

Port与Interface关联 

在模型中点击port,使其高亮,再下方的interface中选择其对应的,右键,点击Assign to Select Port(s)    

image.png

或者,选择port后,直接在属性检查器中选择其对应的Interface

image.png

按照对应关系,完成所有关联map;

返回主界面,将Composition的输入、输出port,连接到架构模型边界  

image.png

架构导出 

先配置下导出ARXML的配置,选择导出单个文件;

image.png

再执行导出,生成Seat_Heat_Composition.ARXML 

image.png

ARXML包含其外部输入port/interface信息,内部port/interface信息,port与SWC map关系、SWC prototype、port prototype、data type等

至此,该ARXML文件便可作为软件架构模型输出,给到软件单元开发工程师进行进一步开发,当然,如果架构模型建立与单元构建同属于一拨人的职责,可以直接在上面工程中继续创建Runnable,并继续开发。 

/ END /

作者:不可说
来源:汽车电子与软件

推荐阅读:

更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。)
推荐阅读
关注数
5697
内容数
431
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息