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

汽车   2024-10-10 08:23   上海  

作者 | 不可说

出品 | 汽车电子与软件



#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 : 座椅加热开启时时,且主驾离座时,触发座椅加热关闭。

         

 


软件需求分析结果  
 
软件架构设计如下:


         

 

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


Data Type 信息如下:


   

#04
建  模
 

创建工程 


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

         

 

SWC组件 


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


         

 

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

 

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


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


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

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

         

 

Interface与DataType数据字典建立 


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

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

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


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

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


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



再回过头构建Interface;

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


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

 

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


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

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


数据字典查看 


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


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


Port与Interface关联 


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


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


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

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

 

架构导出 


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


再执行导出,生成Seat_Heat_Composition.ARXML 
 

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

 

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

 
/ END /
         

 

    

汽车电子与软件
每天分享一篇技术文章!
 最新文章