English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 7|回复: 0

[车联网/计算机网络] Autosar 的 `ARXML` 配置数据库文件协议

[复制链接]
查看: 7|回复: 0

[车联网/计算机网络] Autosar 的 `ARXML` 配置数据库文件协议

[复制链接]
查看: 7|回复: 0

344

主题

0

回帖

1042

积分

金牌会员

积分
1042
mmmm123

344

主题

0

回帖

1042

积分

金牌会员

积分
1042
2025-2-8 15:39:36 | 显示全部楼层 |阅读模式
序: 缘起 ARXML




概述 : Autosar 的 ARXML 配置数据库文件协议

ARXML 文件


  • ARXML文件: AUTOSAR系统描述文件,后缀*.arxml


  • 实质是一个XML文件,一般通过Autosar标准的XSD进行约束
  • 可用专用工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer…生成。
  • 和XML、DBC文件一样,ARXML是一个通用的配置/数据库文件
所以,这里只需了解ARXML文件的结构(方便在将ARXML导入工具前,能够检查一些基本的错误),无需想着用过多的时间手动生成它(生成的工作,专业工具已经帮你做解决了)。
XML

XML简介


  • XML : 可扩展标记语言(eXtensible Markup Language),是是一种非常灵活的标记语言,没有固定的标签,所有的标签,在符合XML命名规则的基础上,都可以自定义,但是在写标签名的时候一定要有含义。
通常,XML被用于信息的记录和传递。因此,XML经常被用来充当“配置文件”和“数据库”。


  • 一般可通过“Eclipse”和“网页浏览器”等软件工具打开XML文件。
将ARXML文件的后缀名修改为XML,可以通过这些工具打开。
XML 文件数据结构

以下是一个简单Demo
<?xml version="1.0" encoding="utf-8"?><books><!-- 图书信息 -->    <book id="book_1">        <author>张三</author>        <title>XML高级教程</title>        <description>介绍XML和XML实战</description>    </book></books>

  • XML文档是树状结构;


  • 第1行:XML声明。 必须放在第一行,第一列,声明语句之前,不能有任何的空格和注释。定义了XML版本和编码信息。其中,版本永远都是1.0;编码方式一般都使用UTF-8(该编码支持中文标签),编码信息不区分大小写。
  • 第2行:根元素 : <books>。XML有且仅有一个根元素。元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素;
  • 第3行:注释的写法 : <!-- 注释内容 -->,但不能嵌套使用。
  • 第4行:属性 : id="book_1"。属性必有值,值必须使用引号(单引号,双引号)。属性其实是描述标签一些额外的信息,一个标签可以有多个属性。可以将属性看为元素的另一种写法。
  • 第5~7行:表示元素


  • XML中的标签区分大小写,对应的开始标签和结束标签必须大小写一致。
  • 标签命名:普通字符有:字母,数字,-中横线,_下划线,.点号,数字不能作为首字母出现等。大段内容有许多特殊符号内容,使用转义,如下的例子:了看可是ljlkdjlsjd lsksj lsjdlks d]]>
  • XML中的标签是成对的,而且要正确嵌套:标签可以嵌套,但不可以交叉嵌套。
  • 实际的项目当中,第4~8行这部分经常是重复的。
  • 特殊符号使用符号实体:


  • 单引号:用&apos表示
  • 双引号:用&quot表示
  • 空格:用&nbsp表示
  • &符号:用&amp表示
  • >符号:用&gt表示
  • <符号:用&lt表示


  • 如下根元素下,可以存在多个并列的元素:
<?xml version="1.0" encoding="utf-8"?><books><!-- 图书信息 -->    <book id="book_1">        <author>张三</author>        <title>XML高级教程</title>        <description>介绍XML和XML实战</description>    </book>    <book id="book_2">        <author>李四</author>        <title>XML中级教程</title>        <description>介绍XML和XML实战</description>    </book></books>有效的XML


  • XML首先必须是格式良好的,一般使用DTD和XSD(XML Schema)定义语义约束。ARXML文件使用XSD进行约束。
认识DTD

DTD简介


  • DTD全称: Document Type Definition
用于约束XML的文档格式,保证XML是一个有效的XML。定义好接口和格式,方便多个人同时开发。


  • DTD可以分为两种:内部DTD;外部DTD
  • DTD和XML之间的关系:


  • 类(人类)和对象(我)
  • 数据库(表)和行(一条记录)


  • DTD的缺点:


  • DTD约束XML的时候,不能对XML中数据类型做详细的限定。
  • DTD约束有自己的语法,书写时必须遵守DTD的语法;
  • 一个XML文件中只能引入一个DTD约束,而无法通过多个DTD文件来约束同一个XML文件。
内部的 DOCTYPE 声明


  • 内部DTD的定义,语法如下:
    a)
    b) 元素声明语法:
<!ELEMENT 元素名 (子元素[,子元素...])>c) 数量词:
+:表示元素出现至少出现一次?:表示元素出现0次或1次*:表示元素出现任意次。举例<!ELEMENT books (book*)>d) 属性声明语法:


  • 属性类型:CDATA,表示字符数据(character data)
  • 默认值:
#REQUIRED,表示必须出现#IMPLIED,表示不是必须出现

  • 带内部DTD的完整XML
<?xml version="1.0" encoding="utf-8"?><!-- 声明内部DTD --><!DOCTYPE books [  <!ELEMENT books (book+)>  <!ELEMENT book  (author, title, description)>  <!ATTLIST book id CDATA #REQUIRED >  <!ELEMENT author (#PCDATA)>  <!ELEMENT title (#PCDATA)>  <!ELEMENT description (#PCDATA)>]><books><!-- 图书信息 -->    <book id="book_1">        <author>张三</author>        <title>XML高级教程</title>        <description>介绍XML和XML实战</description>    </book>    <book id="book_2">        <author>李四</author>        <title>XML中级教程</title>        <description>介绍XML和XML实战</description>    </book></books>外部的 DOCTYPE 声明


  • 创建一各独立的外部DTD文件,内容如下:
<?xml version="1.0" encoding="utf-8"?><!—声明内部DTD-->  <!ELEMENT books (book+)>  <!ELEMENT book (author, title, description)>  <!ATTLIST book id CDATA #REQUIRED >  <!ELEMENT author (#PCDATA)>  <!ELEMENT title (#PCDATA)>  <!ELEMENT description (#PCDATA)>

  • 在XML中引入外部DTD文件,完整的语法如下:
<!DOCTYPE 根元素 SYSTEM "文件名">

  • 带外部DTD的完整XML
<?xml version="1.0" encoding="utf-8"?><!-- 声明外部DTD --><!DOCTYPE books SYSTEM "books.dtd"><books><!-- 图书信息 -->    <book id="book_1">        <author>张三</author>        <title>XML高级教程</title>        <description>介绍XML和XML实战</description>    </book>    <book id="book_2">        <author>李四</author>        <title>XML中级教程</title>        <description>介绍XML和XML实战</description>    </book></books>认识XSD

XSD简介


  • XSD全称:XML结构定义(XML Schema Definition),是DTD的替代者。
  • 不仅可以定义XML文档的结构,还可以规范XML文档的内容。XSD本身也是XML文档。
  • XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多:


  • 定义可出现在文档中的元素;
  • 定义可出现在文档中的属性;
  • 定义哪个元素是子元素;
  • 定义子元素的次序;
  • 定义子元素的数目;
  • 定义元素是否为空,或者是否可包含文本;
  • 定义元素的数据类型;
  • 定义元素和属性的默认值以及固定值。
  • 允许开发这自定义数据类型
  • 可读性强
  • 可针对未来需求进行扩展
  • 一个XML中可以引入N个Schema进行约束。
  • 书写的时候,它遵守XML的语法规则,它的文件扩展名XSD。
XSD举例


  • 这一章节仅做了解,无需过多深入。知道XML和XSD的之间的关系就行。
  • book.xsd文件
<?xml version="1.0" encoding="utf-8"><!--        Schema文件中使用W3C对Schema文件的约束信息        不管是XML还是XSD文件,都需要被约束        在根标签上使用xmls属性(xmlns="http://www.w3.org/2001/XMLSchema")引用W3C的约束        在schema中使用        targetNamespace定义当前schema被xml引用是的名称(名称空间);        targetNamespace="http://www.example.org/book"定义当前的schema的名称为:http://www.example.org/book值,这个值可以随便写,用来标识约束文件--><schema xmlns="http://www.w3.org/2001/XMLSchema"        targetNamespace="http://www.example.org/book"        xmlns:tns="http://www.example.org/book"        elementFormDefault="qualified">        <!--        在Schema文件中使用element标签来定义xml中可以书写的标签名                -->    <element name="books">                <!--                在books中的子标签,需要在Schema中定义的books的标签内部嵌入element来定义。                简单标签:如果一个标签没有子标签,也没有属性,这个标签是一个简单标签。                复杂标签:如果标签拥有属性或者拥有子标签,那么这个标签就是一个复杂标签。                                在element标签中                complexType来声明当前element定义的那个标签是一个复杂标签                simpleType来声明当前element定义的那个标签是一个简单标签                                -->                <complexType>                    <!--在complexType使用sequence定义子标签之间的顺序-->                        <sequence>                            <element name="book">                                    <complexType>                                            <sequence>                                                     <element name="name" type="string"></element>                                                     <element name="price" type="double"></element>                                                     <element name="author" type="string"></element>                                                                                                         </sequence>                                                                                </complexType>                                </element>                                                </sequence>                </complexType>                    </element></schema>

  • book.xml文件
<?xml version="1.0" encoding="utf-8"><!--        在根标签上使用xmls属性(xmlns="http://www.example.org/book")引用Schema的约束        当引用多个约束时,需要在xmlns后追加        xmlns:context="***"        xmlns:p="***"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        声明当前的XML文件是schema一个实例(当前这是一个自定义的xml文件,是被某个schema文件约束)        xsi:schemaLocation="http://www.example.org/book book.xsd"引用schema的位置,其中的“http://www.example.org/book”要与XSD中的targetNamespace里的字符串保持一致--><books        xmlns="http://www.example.org/book"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.example.org/book book.xsd">    <book>            <name>XML高级教程</name>            <price>59</price>            <author>张三</author>                        </book></books>应用场景

CASE: 创建一个Classic CAN(经典CAN2.0)的系统描述ARXML文件

参考文献


0 序言


  • AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件(.arxml)和ECU摘录的通信内容


  • 它支持架构版本4.0.3、4.1.2、4.2.1、4.2.2和4.3.0。
  • AUTOSAR系统描述(ARXML)文件是基于XML的文件格式,描述网络通信的元素基于AUTOSAR系统模板。
  • 其界面如下:

1 创建一个AUTOSAR系统描述


  • 双击“AUTOSAR Explorer 2.0”快捷方式(见图1-1),打开“AUTOSAR System Description Network Explorer”(见图1-2)。

图1-1

图1-2


  • 在菜单栏中,依次选择 File --> New File …(见图1-3),弹出“Create New File”对话框。接着在该对话框中选择项目需要的“Autosar格式版本”和“物理层的通信方式”,单击“OK” (见图1-4)。

图1-3

图1-4
注意:

  • 创建完成后,就无法再修改“Autosar格式版本”。
  • 根据所选类型创建一个具有通信Cluster和物理通道的AUTOSAR系统描述文件(见图1-5)。单击“保存”按钮,选择合适的路径,并命名这个描述文件(见图1-6)。

图1-5

图1-6
2 物理层命名以及创建ECU


  • 完成第1章后,重新打开Test_CAN.arxml(见图2-1),选中通信Cluster,在其右侧的属性视图中,重命名这个Cluster,并设置这个CAN通信的波特率(见图2-2)。

图2-1

图2-2


  • 创建ECU方法,有两种:


  • 菜单栏中,依次选择“Edit”à“Create Ecu…”(见图2-3);
  • 工具栏中,单击“Create ECU”(见图2-4)。

图2-3

图2-4


  • 弹出“New ECU”对话框(见图2-5)。

图2-5


  • 重命名ECU,单击“OK”(见图2-6)。

图2-6


  • 完成后的效果如下(见图2-7):

图2-7
3 新建一个Frame


  • 创建Frame方法,有三种:


  • +先在“导航栏”中选择“Frames”,然后在主视图中鼠标右键,在上下文中选择“Create Frame…”(见图3-1);


图3-1


  • 依次在菜单栏中选择“Edit-->“Create Frame…”(见图3-2);

图3-2


  • 工具栏中,单击“Create Frame”(见图3-3)。

图3-3


  • 弹出“Edit Frame”对话框(见图3-4)。


  • “Edit Frame”对话框修改如下(见图3-5)。

图3-5


  • 注意:


  • 1、“Edit Frame”对话框中的“Name”,可以理解为“DBC中Message名称”;
  • 2、“Edit Frame”对话框中的“Length”表示帧的数据域长度,单位Byte;
  • 3、“Edit Frame”对话框中的“ID”表示CAN_ID,十六进制表示;
  • 4、“Edit Frame”对话框中的“Addressing Mode”有:Standard(标准帧)和Extended(扩展帧)两个选项,表示“帧类型”,可以理解为“DBC中Message里的Type”;
  • 5、“Edit Frame”对话框中的“CAN FD Supported”选项:不勾选,表示是经典CAN2.0帧;勾选,表示是CAN FD帧;
  • 6、“Edit Frame”对话框中的“Sender/Receiver Relations”用来定义该Frame帧的发送和接收ECU。图3-6表示该Frame帧的发送节点是OBC;图3-7表示该Frame帧的接收节点是OBC。

图3-6

图3-7


  • 完成后的效果如下(见图3-8) ,按照此方法可以添加其它的Frame帧:

图3-8
4 新建一个PDU(协议数据单元)


  • PDU的概念在DBC中是没有的。
  • PDU(Protoco> +Data Unit:协议数据单元)代表在帧上传输的数据单元


  • 它包含在协议栈中交换的有效负载和控制信息。
  • 根据PDU的应用和AUTOSAR格式版本,AUTOSAR模型可以区分不同类型的PDU。
  • 实际的使用:将Signal信号映射的PDU当中。


  • 接着图3-5,在PDU-Frame-Mapping中,选择“Signal-I-PDU” (见图4-1),弹出“Edit Signal-I-PDU”对话框,根据需要编辑相关的信息(见图4-2)。

图4-1


  • 注意:常用的有以下PDU。


  • Signal-I-PDU:
  • N-PDU: 网络层PDU。由传输协议模块用于分段I-PDU;
  • NM-PDU:
  • XCP-PDU:
  • General-Purpose-I-PDU(XCP):
  • multiplexed I-PDU: I-PDU在两个COM I-PDU中组装在IpduM模块中, 将Signal-I-PDU映射到静态和动态段。


  • DCM-I-PDU:

图4-2


  • 注意:


  • “Edit Signal-I-PDU”中的信息一般默认不修改。
5 新建一个signal


  • 接着图3-5,在Mapped Signals中,选择“Signal” (见图5-1),弹出“Edit Signal”对话框(见图5-2)。

图5-1

图5-2


  • 根据需要编辑相关的信息(见图5-3,图5-4,图5-5,图5-6)。

图5-3

图5-4

图5-5

图5-6


  • 注意:


  • “Edit Signal”对话框中的“Name”,可以理解为“DBC中Signal名称”;
  • “Edit Signal”对话框中的“Length”,表示信号的长度,单位Bit;
    +“Edit Signal”对话框中的“Data Type Policy”,对于每个ISignal,都有一个DataTypePolicy定义,在大多数情况下将确定信息源。
    +“Edit Signal”对话框中的“Position[Bit]”,表示信号的起始位;
    +“Edit Signal”对话框中的“Update Bit”,表示信号的更新位;
    +“Edit Signal”对话框中的“Byte Order”,表示信号的字节顺序:Intel,Motorola,Opaque;
    +“Edit Signal”对话框中的“Transfer Property”,表示信号的触发方式:Pending,Triggered,TriggeredOnChange,TriggeredWithoutRepetition,TriggeredOnChangeWithoutRepetition。相关的解释参加AUTOSAR COM标准;
    +“Edit Signal”对话框中的“Sender/Receiver Relations”,表示该信号是接收信号,还是发送信号,或者及不接收也发不发送;
    +“Edit Signal”对话框中的“Base Type”,定义了信号的一种编码:数据类型名称,符号类型(是否有符号),长度。当多个信号表示的物理含义相同,且信号长度相同时,可以在下拉框中选择相同的Base Type;
    +“Edit Signal”对话框中的“Computation Method”,描述了将信号传输的原始值转换为物理值的转换规则,信号的范围,信号的单位,无效信号的定义


  • 完成后的效果如下(见图5-7),按照此方法可以添加其它的Signal信号:

图5-7
自此一个AUTOSAR的系统描述ARXML文件就生成好了。
ARXML 开源项目

Y 推荐文献


  • Github 相关项目

https://canmatrix.readthedocs.io/en/latest/installation.html
Converting Can (Controller Area Network) Database Formats .arxml .dbc .dbf .kcd ...

A set of python modules for working with AUTOSAR XML files
主要用例是使Python能够生成ARXML文件,以便在其他(商业)AUTOSAR工具链中导入。它还对解析AUTOSAR XML文件提供了一些支持。

基于Vue+Node JS的纯前端/ARXML可视化项目
This tool aims to visualize ARXML files in human readable form with easy search operations.
X 参考文献

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

344

主题

0

回帖

1042

积分

金牌会员

积分
1042

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-10 15:29 , Processed in 1.580767 second(s), 30 queries .

Powered by 智能设备

©2025

|网站地图