在MBD讲解与实践 1.1 AutoSAR、ASPICE与MBD中,我们提到了一种可以用于描述软件组件的文件类型:Arxml文件。在MBD开发中,无论是否基于AUTOSAR架构,利用Arxml文件可以帮助我们完成从架构到模型这一正向开发流程。首先从认识一个组件的Arxml文件开始,看一下这个文件中包含哪些信息,它又为什么能够对MBD开发产生帮助。
这里我们以上一篇实验中的FDM组件的Arxml文件为例进行分析。打开Arxml文件的方式有很多,首先它是一种文本类的格式,因此用任意文本编辑器就可以打开(VSCode之类的代码软件都是支持的);另外Vector有专门的Arxml文件查看器,只有那些购买了Vector产品的公司才有;最后就是网上的免费开源软件了,如xmlnotepad。
一、Arxml文件解析
将Arxml文件使用XmlNotepad软件打开,可以发现一份SWC的Arxml基本都包含这及部分信息:数据类型定义、组件定义(内部行为定义、端口定义)、接口定义。
1.1 基础数据类型:Base Type
组件里面所用的数据类型,都是由基础数据类型Typedef而来,因此,所有用到的基础数据集类型要在这里定义清晰。
1.2 实现数据类型:Implement Data Type
实现数据类型,就是我们代码里面运行的数据类型,他们都是通过基础数据类型定义而来,在Arxml文件中,实现数据类型描述主要由其对应的基础数据类型(SW_BASE_TYPE)和数据限制(DATA_CONSTR)决定,实现数据类型的名称可以和基础数据类型相同。
1.3 端口:Port
组件本身的描述是通过端口和内部行为描述的,端口和接口的区别在哪呢?博主的理解是,端口是对接口的引用,也就是说在Arxml文件中定义了若干个接口,但是一个组件可能只用到部分接口,那这部分接口就是组件的端口了。端口又分为P-Port(Provide,输出端口)和R-Port(Receive,输入端口)。
1.4 内部行为:Internal Behavior
内部行为主要是Runnable的定义,在一个组件中,一般需要一个初始化Runnable和一个周期执行Runnable,每一个Runnable都会定义它的触发方式(INIT-EVENT或TIMING-EVENT)。
1.5 接口:Interface
任意的接口都可以在这里定义,但我们只需要定义出组件中所用到的接口即可。这里接口的数据类型、描述等要素均有体现。
二、如何生成或修改Arxml文件
根据架构生成Arxml主要有四种方式:
- 以Vector Developer为代表的专业架构设计工具:优点很多,图形化界面、导出Arxml方便、自由定义结构体等数据类型、功能齐全等;唯一的缺点就是贵,小公司可能玩不了。
- 脚本工具生成Arxml:通过Arxml的文件格式,通过脚本实现部分功能,优点是可以根据需求个性化设计、成本较低;缺点是功能可能不是很齐全,开发难度大。
- 在Matlab中先搭建好模型,通过Matlab的AUTOSAR工具箱来生成Arxml,优点是几乎不需要成本;缺点是本末倒置,Arxml文件主要的作用就是规范组件模型的结构,因此Arxml文件只应由软件架构直接生成。
- 手搓Arxml或修改Arxml:根据Arxml的编写规则,手写或修改Arxml,没有成本,但工作量巨大,几乎没有人这样干。
对Arxml的文件格式感兴趣的朋友可以去AUTOSAR的官网下载模板文件。
三、Arxml文件与模型
Matlab对Arxml文件的支持用得最多的就是创建模型及更新模型这两个功能。
3.1 创建模型
2019之后的Matlab版本已经集成了AUTOSAR工具箱,通过arxml.importer和createComponentAsModel这两个函数就可以将通过Arxml文件创建一个空模型了。
3.2 更新模型
文章来源:https://www.toymoban.com/news/detail-753550.html
同样,通过arxml.importer和updateModel这两个函数就可以将通过Arxml文件更新一个已存在的模型,同时不会修改模型里面的其余无关内容。文章来源地址https://www.toymoban.com/news/detail-753550.html
到了这里,关于MBD讲解与实践 1.3 Arxml文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!