文章 模型库 咨询 方案 工具 课程 资源 规范 会员  
   
订购 | 案例 | 学习资源 | 培训&咨询 | 解决方案 | 模型框架 | 用户组 | 客户专区 | 联系我们
作者:俎涛     
Code Engineer
Communicator
AUTOSAR Engineer
视频&文章
AUTOSAR 建模和ARXML文件生成(基于EA)
作者:俎涛,火龙果软件工程

1. AUTOSAR简介

AUTOSAR,全称为Automotive Open System Architecture,即汽车开放系统架构,它是由全球各家汽车制造商、零部件供应商以及各种研究、服务机构共同参与的一种汽车电子系统的合作开发框架,并建立了一个开放的汽车控制器(ECU)标准软件架构。

AUTOSAR 层次框架把软件分为三层:基础层,中间层和应用层,如下图所示:


  • 应用层:面向用户的功能需求提供应用组件。
  • 中间层:提供支持应用组件的服务和通信机制。
  • 基础层(BSW):封装各种驱动为基础服务。
  • AUTOSAR为基础层和中间层定义了功能和相关的接口,并为应用层组件提供的接口规范和运行的环境支持,如下是AUTOSAR软件架构定义的接口规范:



    基于AUTOSAR架构,可以让系统设计和软件的开发过程更易于分工协作,如下是AUTOSAR希望达到的工作流程:

  • 整车企业定义系统架构,把系统划分为子系统和组件,定义子系统和应用组件的功能和接口。
  • 中间层屏蔽掉底层驱动的差异,应用组件的接口主要关注功能,和RTE的映射可以通过配置完成。
  • 底层技术厂家按照BSW的规范提供BSW,平台厂家通过RTE规范提供VFS的实现。
  • 这样上层应用厂家就可以只关注系统功能定义和应用组件设计,然后把应用组件之间的通信通过RTE的配置对接到BSW,实现应用和驱动的隔离,能够快速的构建应用。
  • 如下是基于AUTOSAR的软件开发过程


    在基于AUTOSAR的系统设计和软件开发过程中,模型起到非常重要的作用。

    在建模的基础上,为了支持不同整车厂和零部件厂商的工作交接,并支持从设计面向开发的代码生成。AUTOSAR还定义了对 能够描述模型、组件、接口标准描述ARXML,这样就需要在工作中能把模型转化为ARXM L文件,如下图所示:


    2. EA对 AUTOSAR建模的支持

    AUTOSAR的实现需要的支持:

  • 建模
  • 仿真
  • 生成ARXML
  • 生成对接BSW和RTE的实现代码。
  • 目前EA可以支持:

  • 建模
  • 仿真
  • 生成ARXML
  • 如下是建模方面需要支持的组件和接口类型:



    说明如下:

    • 软件按照应用功能划分为软件组件(SWC)
    • 每个软件组件都有内部的运行体(Runnable)实现功能
    • 软件组件之间的通信Port,分为2种类型:
      • sender和Receiver(发送者和接收者,支持异步通信)
      • client和server(客户端作为调用者,请求服务端的服务,主要支持同步调用)

    这些通信port 分别需要相应的数据类型和函数提供实现支持。

    作为汽车电子行业主流的建模工具,EA提供系统工程建模语言Sys ML和软件工程建模语言UML支持,并提供了面向AUTOSAR软件架构的建模扩展,具体的模型框架和ARXML生成的支持是由 LiberLiber AUTOSAR Engineering 插件完成的,下面我们就介绍一下这个AUTOSAR插件。

    3. AUTOSAR Engineering概览

    AUTOSAR Engineering是EA的AUTOSAR插件,支持:

  • AUTOSAR 数据类型定义
  • AUTOSAR数据建模
  • AUTOSAR组件和端口建模
  • AUTOSAR行为建模
  • AUTOSAR逻辑架构建模
  • 生成AUTOSAR 组件为ARXML文件
  • 导入ARXML文件为AUTOSAR组件
  • 如下是一个AUTOSAR Engineering的模型样例:



    这个模型样例有什么呢?



    各个包的内容说明如下:

    内容
    Global Model Library 全局模型库,包含:autosar 数据类型,端口类型定义和 视图定义。
    Autosar DataTypes AUTOSAR的数据类型定义。
    Port type Definitions 端口类型定义,用于组件之间的通信接口建模。包括 数量类型和计量单位。
    Viewpoint Definitions 视点定义,提供各种模型视点:需求视点、架构视点、结构视点、行为视点。


    各个包的内容说明如下:

    内容
    System Model 系统模型,以座椅控制为例。
    Requirements 客户提出的需求。
    Behavioral Elements 行为元素,例如用例模型。
    Structure Elements 本系统的各种模型视点:需求视点、架构视点、结构分解视点、组件分配视点,行为视点,行为分配视点。

    4. AUTOSAR Engineering模型解析

    4.1 数据类型建模(Data Type Modeling)

    使用 LieberLieber AUTOSAR Engineer可以为AUTOSAR模型定义不同的数据类型,这些数据类型可以被导出到ARXML 文件,支持如下的数据类型:

    • 通用基本类型 (Generic Base Type)
    • 数据类型(Data Type)
      • 值(Value)
      • 数组(Array)
      • 数据结构(Data Structure)
    • 端口类型定义(Port Type Definition)

    一般而言,这些数据类型定义被存储在EA模型的 全局库里,对于组件接口,它也可以和AUTOSAR组件一起存储这些元素(也就是在一个结构元素的文件夹 里面,作为一个抽象层次的包的结构的一部分),读者可以快速浏览示例模型,了解如何组织这样的模型。

    4.1.1 通用基本类型(Generic Base Types)

    通用基本类型(Generic Base Type)用于定义基本的原始数据类型 ,例如: int,doubule 等。在ARXML中,它被生成到一个 SW-BASE-TYPE XML结构中。

    例如:



    4.1.2 数据类型(Data Types)

    AUTOSAR的数据类型 通常被用于 指定 数值、数组和结构体,数据类型元素有一个组标签值用来定义附加的属性,在EA中,可以打开标签值窗口来访问标签值。

    数值(Value)

    数值(Value)采用AUTOSAR Data Type元素建模,然后设置 Category Tagged Value为"Value"。下面的图显示了一个数值的定义,数值"UInt8" has an AUTOSAR-Usage 依赖 对 一个AUTOSAR base type来指定,这个值基于"uint8" SW-BASE-TYPE。如下是图例:



    数组(Arrays)

    Arrays的建模通过把一个AUTOSAR Data Type的 Category Tagged Value 设置为 "Array"来完成,为了指定array元素有哪些数据类型,一个 AUTOSAR Data Type元素实例被嵌入到Data Type元素,Array 的大小通过嵌入的数据元素的Multiplicity属性设置被指定,下面的例子显示一个大小为8个Uint8类型元素的array, 如下是图例:





    数据结构(Data Structures)

    Data Structures 通过把AUTOSAR Data Type 元素的 Category Tagged Value 设置为 "Structure"来建模,Structure元素被建模为AUTOSAR Data元素(创建 AUTOSAR Data类型元素的实例)。

    如下是图例:



    说明:一个Structure元素内部可以包括多个value 元素。

    如下是Structure元素的Category Tagged Value设置属性框:



    4.1.3 端口类型定义(Port Type Definition)

    port类型定义建模为interface元素(在AUTOSAR Data Modeling toolbox 被提供),对于每一个AUTOSAR的Port 类型,一个对应的interface 元素被定义,不是所有的可能的port 类型都可以导出为ARXML文件,如下的图显示如何使用 AUTOSAR Engineer定义一个 Sender-Receiver 和一个Client-Server port类型。

    对于Client-Server-Interfaces使用EA功能定义Operation.

    对于Sender-Receiver-Interfaces定义数据元素 然后创建Part- Association连接(具有黑色菱形)来指定数据元素是Sender-Receiver-Interface的组成部分。

    如下是示例:

    Interface定义1:



    Interface定义2:



    4.2 VFB-模型(VFB-Models)

    为了创建一个具有组件的VFB模型 ,Component被建模为AUTOSAR Component Classifier的实例。

    1. 使用toolbox或者从Project Browser拖动一个AUTOSAR Component Classifier 到一个AUTOSAR Diagram 上,然后选择 Create/Paste as Instance (AUTOSAR Component)。

    2. 在属性框上设置Component的name。

    3. 使用 Component的Characteristic tagged 值设置Component的特征。这里你可以选择2个不同的component type (被AUTOSAR VFB规范定义的)。



    在你的Component创建后,继续添加 Interface.

    如果没有有效的Component Classifier ,使用 AUTOSAR Type Definition Diagram定义 Data Type。

    4.2.1 添加接口(Adding Interfaces)

    为了添加一个interface到一个component,需要使用不同的AUTOSAR Port元素(这些元素在 LieberLieber AUTOSAR Engineer toolbox 中可以找到)。在port的选项中设置name 和type(property type)。设置在一个Port的 Tagged Value中可以设置方向和一个port 是否是一个service Port :



    添加链接(Adding Connections)

    为了连接2个Port,使用 AUTOSAR Flow Connection连接器。你也可以使用EA的Quick Linker连接2个port 或者在一步中创建一个新的port和一个connection(通过创建一个connector 在 一个已经存在的port 和一个component)。LieberLieber AUTOSAR Engineer 将通过自动的设置name 、port type 和 新的port的方向帮助你。

    Port方向的定义(Port Direction Determination)

    为了能够正确的设置port的方向,你必须添加一个 UML Compose 或者一个 SysML Part Association 连接(具有黑色的菱形 ) 来定义你的组件的层次结构。这些将定义“这个component 是另一个元素的sub-element ” 并且工具能够设置正确的方向。如下的图显示了一个组件的从此定义的例子(分解视图)。



    结果(Result)

    如下的图显示了一个具有Component、interface连接(架构视图)的AUTOSAR Diagram,在图中,“显示元素 Stereotype”的选项没有生效。



    4.2.2 行为模型(Behavior Modeling)

    AUTOSAR 组件的行为 被建模在一个AUTOSAR 行为图上。在创建了一个AUTOSAR 组件后,可以添加一个AUTOSAR 行为元素 作为容器用于行为建模。

    1. 添加一个AUTOSAR 行为元素到你的AUTOSAR 图上。

    2. 重命名元素。

    3. 添加一个Part Association 连接从行为元素 到AUTOSAR组件元素来表示:行为元素是组建的一部分。

    4. 在EA的行为元素上下文菜单选择 : New Diagram -> Add Diagram...,你可以添加一个AUTOSAR行为子图。

    5. 在AUTOSAR的行为图上,使用Runnable和Inter-Runnable-Variables等元素建模内部行为,

    Behavior -支持多个实例化

    每个AUTOSAR行为元素有一个标签值 用于设置 是否元素可以备实例化多次。

    Runnable-可以被并发调用

    如果一个Runnable可以并发调用,你可以使用提供的标签值去设置这个特性。如果一个Runnable可以被并发调用,在顶部右上角的箭头符号会被蓝色填充,否则它不会被蓝色填充。

    4.3 图的类型

    AUTOSAR Engineer 提供三种不同的图的类型:

  • AUTOSAR Type Definition Diagram(AUTOSAR类型定义图)
  • AUTOSAR Diagram(AUTOSAR图)
  • AUTOSAR Behavior Diagram(AUTOSAR行为图)
  • 4.3.1 创建一个AUTOSAR 工程图(Autosar Engineer diagram)

    为了创建AUTOSAR 工程图,使用EA添加一个新的图。在新的图的对话框里,选择LieberLieber Autosar Engineer technology然后选择图的类型。



    4.3.2 AUTOSAR类型定义图(AUTOSAR Type Definition Diagram)

    AUTOSAR Type Definiton Diagram (ardd) 被用于定义data和interface类型。这类似于在能够创建instance前创建class。当你必须定义interface和data类型的时候使用这种图。

    如下是示例:



    当你打开一个AUTOSAR Type Definition Diagram , AUTOSAR Data Modeling 工具箱自动打开。这个工具箱包含所有必须的元素和连接用于定义AUTOSAR数据和接口类型。

    4.3.3 AUTOSAR 图(AUTOSAR Diagram)

    所有的结构化VFB-模型 被建模为AUTOSAR Diagram。当你想要创建具有port 和内部连接的AUTOSAR 组件的结构化的VFB model 图的时候,使用这种图。

    如下是图示:



    当你打开一个AUTOSAR Diagram的时候,AUTOSAR Component 和port 工具箱 自动打开。这个工具箱包含了所有必须的元素和连接来定义具有port 和内部连接的AUTOSAR Component。

    4.3.4 AUTOSAR 行为图(AUTOSAR Behavior Diagram)

    AUTOSAR 行为图(arbeh)被用于建模AUTOSAR Component的行为。通常,这个图显示Runnable、 Inter-Runnable-Variables 和Triggers。

    如下是示例:



    当你打开一个AUTOSAR Behavior Diagram的时候,AUTOSAR Behavior 工具箱自动打开,这个工具箱包含了所有必须的元素、连接用于定义AUTOSAR 组件的内部行为。

    5. 在EA中如何建立AUTOSAR模型

    5.1 EA对AUTOSAR建模支持的特性(Feature)

    EA支持如下的AUTOSAR建模特性:

  • 通过一个 UML2的扩展支持 AUTOSAR VFB 4 建模语言 (component types,interfaces, runables, ...) 。
  • 支持Port类型定义的用户建模,可以在一个新的连接port上设置:自动命名、类型和方向。
  • 快速linker支持。
  • 在一个模型库中可以进行UML和SysML混合建模。
  • 可以集成到一个AUTOSAR工具链的ARXML导出功能。
  • 5.1.1 EA的LieberLieber AUTOSAR Engineer工具箱

    LieberLieber AUTOSAR Engineer提供三个工具箱:

  • AUTOSAR Data Modeling 工具箱
  • AUTOSAR Components and Ports 工具箱
  • AUTOSAR Behavior 工具箱
  • 这些工具箱包含创建AUTOSAR模型的元素和连接。

    5.1.2 AUTOSAR Data Modeling工具箱

    AUTOSAR Data Modeling 包含用于创建AUTOSAR的data 和interface 的元素。

       名字  用法
    AUTOSAR Base Type Create AUTOSAR base types (e.g. uint8, uint16 etc.). Elements of that kind are generated to a SW-BASE-TYPE element in ARXML.
    AUTOSAR Client Server Interface Defines a Client-Server Interface. Such a Client-Server-Interface is used as the Port-Type for a Client-Server-Port.
    AUTOSAR Compu Method Defines an AUTOSAT Compu Method.
    AUTOSAR Data Element The AUTOSAR Data Element is an instance (Property) of an AUTOSAR Data Type. You can use this element to model internal data attributes of AUTOSAR Data Elements.
    AUTOSAR Data Type AUTOSAR Data Type elements are used to define AUTOSAR data types like Values, Arrays, Structures or Type References. You can set the type with the element tagged values.
    AUTOSAR Mode Switch Interface Defines a Mode-Switch-Interface. This interface type is used for a Mode Switch Port.
    AUTOSAR NV Data Interface Defines a Non-Volatile-Data-Interface. This interface type is used for a NV Data Port.
    AUTOSAR Parameter Interface Defines a Parameter-Interface. This interface type is used for a Parameter Port.
    AUTOSAR Sender Receiver Interface Defines a Sender-Receiver-Interface. This interface type is used for a Sender Receiver Port.
    AUTOSAR Trigger Interface Defines a Trigger-Interface. This interface type is used for a Trigger Port.
    Part Association This connector is used to define a is-part-of relation between interface types and data elements, resp. Data Types.
    QuantityKind Defines a quantity kind, resp. a physical dimension according to the SysML-standard.
    Unit Defines a physical unit according to the SysML-standard.
    AUTOSAR Usage This connector is used to express dependencies between data type element. Have a look into the section about Data Type Modeling for details when to use this conector.

    5.1.3 AUTOSAR Components and Ports 工具箱

    AUTOSAR Components and Ports 工具箱包含建模具有port和内部连接的AUTOSAR组件的元素。你可以设置port方向,并通过标签来标记一个port为一个service port。

       名字  用法
    AUTOSAR Component Defines AUTOSAR Components. The component type is set by a tagged value.
    AUTOSAR Client Server Port Defines a Client-Server-Port for a component.
    AUTOSAR Sender Receiver Port Defines a Sender-Receiver-Port for a component.
    AUTOSAR Mode Switch Port Defines a Mode-Switch-Port for a component.
    AUTOSAR NV Data Port Defines a Non-Volatile-Data-Port for a component.
    AUTOSAR Parameter Port Defines a Parameter-Port for a component.
    AUTOSAR Trigger Port Defines a Trigger-Port for a component.
    AUTOSAR Flow Connection Use this connector to connect two connected ports.

    5.1.4 AUTOSAR Behavior 工具箱

    包含建模AUTOSAR组件内部行为的元素,例如:Runnables和Inter-Runnable-Variable。并不是所有的元素都导出到ARXML文件。

       名字  用法
    AUTOSAR Artifact Defines artifacts like .h and .c files in an enar autosar model.
    AUTOSAR Behavior Container used in a AUTOSAR component to contain all behavior elements. This element is based on the structured Activity and you can use the EA-functionality of the Composite Diagram to enable a double-click navigation to the sub-diagram.
    AUTOSAR Control Flow Connects AUTOSAR Events to AUTOSAR Runnables.
    AUTOSAR Data Element Currently unused and reserved for future extensions
    AUTOSAR Dependency Connector used to express dependencies to other model elements.
    AUTOSAR Event Defines AUTOSAR element events (e.g. time events to start a runnable)
    AUTOSAR Inter Runnable Variable Defines Inter-Runnable-Variables.
    AUTOSAR Object Flow This connection is used to connect Runnables and Inter Runnable Variables or Component Ports and AUTOSAR Runnable Ports.
    AUTOSAR Runnable Use this elements to define Runnables as part of the Component Behavior.
    AUTOSAR Runnable Port The Runnable Ports define an interface of a Runnable. They are connected by an AUTOSAR Object Flow connector with a AUTOSAR Component port.
    AUTOSAR Software Component Implementation This element is used to represent a SW Component Implementation.
    AUTOSAR Initialization This connector is used to specify complex data type initializations.

    5.2 如何把AUTOSAR模型导出ARXML文件

    从一个AUTOSAR Engineer模型可以创建一个AUTOSAR ARXML文件,以便给其他的AUTOSAR工具使用。这有三种类型的ARXML导出形式:

  • 选择多个Component组件导出为一个ARXML文件。
  • 导出一个没有数据类型的Component到ARXML文件。
  • 导出一个具有所有引用的数据类型的Component到ARXML文件。
  • 如下是在EA中的AUTOSAR Enginee 菜单导出ARXML的界面截图:



    5.2.1 选择多个Component组件导出为一个ARXML文件

    1. 扩展菜单? LieberLieber AUTOSAR Engineer ? Export selected components to ARXML

    2. 选择要导出的Component



    3. 选择的组件及其所有的引用将被导出为 ARXML 文件。

    5.2.2 导出一个没有数据类型的Component到ARXML文件

    导出只有一个组件(没有数据类型)到ARXML的操作方法:

    在项目浏览器中选择AUTOSAR Component

    1. 上下文菜单(从选择的元素)选择:Extensions → LieberLieber AUTOSAR Engineer → Export to ARXML with all Referenced Elements

    5.2.3 导出一个具有所有引用的数据类型的Component到ARXML文件

    导出一个component (有所有引用数据类型)到具的ARXML文件的操作方法如下:

    1. 在 项目浏览器选择AUTOSAR component元素。

    2. 选择要导出的元素,选择【上下文菜单: Extensions → LieberLieber AUTOSAR Engineer → Export to ARXML】。

    如下是基于AUTOSAR模型生成的arxml文件



    如果您希望了解更多信息:

    • 欢迎访问建模者频道 http://modeler.org.cn/
    • 也欢迎直接联系我们 teacher@uml.net.cn ,010-62670969

    下载 pdf版: AUTOSAR 建模和ARXML文件生成(基于EA)

    本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp

    了解和购买,请参考: LieberLieber AUTOSAR Engineer

    作者简介:

    俎涛,火龙果软件工程创始人,2001年创立了火龙果软件工程,2004年创立了IBM Rational用户组。1998年,曾作为骨干参与国家重点研究课题《面向特定领域基于组件的软件复用》,有幸比较深入的学习和使用的UML进行领域建模、提炼可复用组件和架构。在后来的研发项目中,一直采用模型进行分析设计,积累了一些心得和经验。20年来一直专注于MBSE,熟悉 UML、Sys ML、ArchiMate、BPMN、UPDM、DataModel等建模语言和规范,在以往的经历中,最大的感触是汇聚了很多精英人才的软件工程和系统工程领域居然几十年都是一种凌乱迷蒙的状态,从自己的经历所得,觉得清晰的模型,才是拨开工程迷雾的关键所在,所以不断研究和应用各种建模技术,并从自己的工程实践中提炼经验,形成对于自己可持续的方法论,例如《MBSE 从方法到实践指南》 《基于模型的三维研发管理》 《基于模型的需求管理》 《模型驱动的架构设计》 《基于模型的质量管理》 《基于模型的人员能力管理》 《iProcess过程改进方法》,目前正在作为产品经理和架构师,进行MBSE(基于模型的系统工程)平台的研发,希望建立要给基于模型的工程解决方案,后续会不断写些文章,希望能给同行一些借鉴。