ARXML文件解析-1
目录
- 1 摘要
- 2 ARXML文件
-
- 2.1 作用及典型应用场景
- 2.2 ARXML文件的结构树
- 2.3 TAG(XML元素)
- 2.4 ARXML文件关键元素解析
-
- 2.4.1 XML声明与处理指令
- 2.4.2 XML注释
- 2.4.3 XML声明与根元素
-
- 4.4.3.1 `xmlns`(默认命名空间)
- 4.4.3.2 `xmlns:xsi`(XML Schema实例命名空间)
- 4.4.3.3 `xsi:schemaLocation`(XSD文件关联)
- 2.4.4 ADMIN-DATA元素
- 2.4.5 语言相关元素
- 2.4.6 AR-PACKAGE体系结构
- 2.4.7 元素 (`ELEMENT`) 与属性
- 2.4.8 引用机制
- 2.4.9 数据类型定义
- 2.4.10 数据转换框架
- 2.4.11 SHORT-NAME命名规范
- 3 总结
1 摘要
ARXML(AUTOSAR XML)文件 是汽车电子系统开发中的核心配置文件,基于AUTOSAR(汽车开放系统架构)标准定义,用于描述整车电子系统的软件架构、通信配置、资源分配及服务接口。在车载测试、开发等地方有着广泛的应用,因此掌握ARXML文件的作用、语法结构以及用法是非常重要的。
2 ARXML文件
ARXML(AUTOSAR XML)文件 核心作用是为汽车电子控制单元(ECU)的开发、集成和验证提供标准化的数据模型,确保不同供应商、工具链和团队之间的无缝协作。
2.1 作用及典型应用场景
1. 标准化系统描述
ARXML文件以XML格式定义整车电子系统的静态和动态行为,是AUTOSAR方法论中的唯一数据交换格式。
- 统一数据模型:所有AUTOSAR兼容工具(如建模工具、代码生成器、测试工具)均通过ARXML交换数据,避免格式碎片化。
- 跨团队协作:主机厂、Tier1供应商和软件供应商基于同一ARXML文件协同开发,减少沟通成本。
示例:
- OEM提供整车通信矩阵(如CAN/LIN/以太网信号列表)的ARXML文件,供应商据此开发ECU软件。
2. 定义通信协议与网络拓扑
ARXML文件详细描述车内网络的通信协议、ECU连接关系和信号传输规则。
- 通信协议栈配置:定义CAN、LIN、FlexRay、以太网等协议的参数(如波特率、帧格式、PDU封装)。
- 网络拓扑:描述ECU、网关、交换机的物理连接和逻辑通信路径。
- 信号映射:将应用层信号映射到物理总线(如CAN帧或以太网PDU)的具体位置。
示例:
<EcuInstance> <SHORT-NAME>ADAS_ECU</SHORT-NAME> <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS> <IP-ADDRESS>192.168.10.20</IP-ADDRESS></EcuInstance><EthernetFrame> <SHORT-NAME>Camera_Frame</SHORT-NAME> <FRAME-ID>0x2001</FRAME-ID> <PDU-TO-FRAME-MAPPING> <PDU-REF DEST=\"PDU\">/Pdus/Camera_PDU</PDU-REF> </PDU-TO-FRAME-MAPPING></EthernetFrame>
3. 配置ECU软件组件
ARXML文件定义每个ECU的软件架构,包括:
- 软件组件(SWC):描述功能模块的接口(Port)和内部行为(Runnable)。
- 资源分配:CPU内核、内存、外设的分配策略。
- 任务调度:配置Runnable的触发条件(周期/事件)和优先级。
示例:
<SW-COMPONENT-PROTOTYPE> <SHORT-NAME>BrakeControl_SWC</SHORT-NAME> <PORT-PROTOTYPES> <SENDER-PORT>BrakeSignal_Out</SENDER-PORT> <RECEIVER-PORT>WheelSpeed_In</RECEIVER-PORT> </PORT-PROTOTYPES></SW-COMPONENT-PROTOTYPE>
4. 面向服务架构(SOA)支持
针对车载以太网和SOME/IP,ARXML文件定义服务化接口,支持SOA设计:
- 服务接口(Service Interface):声明服务的方法(Method)、事件(Event)、字段(Field)。
- 服务实例化:配置服务在ECU中的端口、IP地址和通信模式(单播/组播)。
- 服务发现:定义服务实例的动态注册与订阅机制。
示例:
<ServiceInterface> <SHORT-NAME>NavigationService</SHORT-NAME> <SERVICE-ID>0x3001</SERVICE-ID> <METHODS> <METHOD> <SHORT-NAME>UpdateRoute</SHORT-NAME> <METHOD-ID>0x01</METHOD-ID> <CALL-TYPE>REQUEST_RESPONSE</CALL-TYPE> </METHOD> </METHODS></ServiceInterface><ServiceInstance> <ENDPOINT-PORT>30490</ENDPOINT-PORT> <MULTICAST-ADDRESS>239.255.10.1</MULTICAST-ADDRESS></ServiceInstance>
5. 数据管理与标定
ARXML文件支持车辆数据的标准化管理:
- 标定参数:定义可标定变量(如发动机MAP图)的地址、数据类型和物理转换规则。
- 诊断配置:配置UDS(ISO 14229)服务的DID(数据标识符)和DTC(故障码)。
- 传感器/执行器接口:描述ECU与物理设备的信号接口(如ADC采样精度、PWM频率)。
示例:
<CALPRM> <SHORT-NAME>Engine_TorqueLimit</SHORT-NAME> <PHYSICAL-TYPE>uint16</PHYSICAL-TYPE> <SCALE>0.1</SCALE> <UNIT>Nm</UNIT> <ADDRESS>0x80001000</ADDRESS> </CALPRM>
6. 自动化代码生成与集成
ARXML文件是AUTOSAR工具链的输入,驱动以下自动化流程:
- RTE代码生成:生成运行时环境(RTE)代码,实现SWC间通信。
- BSW配置:生成基础软件(如通信栈、OS、驱动)的配置代码。
- ECU Extract:从整车ARXML中提取单个ECU的配置,供供应商开发使用。
工具链示例:
- 设计工具:ETAS ISOLAR、Vector PREEvision。
- 代码生成器:EB Tresos、Matlab/Simulink。
- 测试工具:CANoe、dSPACE SystemDesk。
7. 验证与仿真支持
ARXML文件为测试和仿真提供结构化输入:
- 静态验证:检查信号范围、ID唯一性、时序约束的一致性。
- 动态仿真:导入CANoe等工具,模拟ECU节点间的通信行为。
- HIL测试:基于ARXML配置硬件在环(HIL)测试环境。
示例场景:
- 在CANoe中加载ARXML文件,自动解析总线信号,实现车载网络流量监控和故障注入测试。
总结:ARXML的核心价值
2.2 ARXML文件的结构树
ARXML(AUTOSAR XML)文件 是AUTOSHAR(汽车开放系统架构)标准中使用的一种基于XML的文件结构,如下是关键元素示例:
- 根结构:
AR-PACKAGE (根包)├── SHORT-NAME (包名称)├── ELEMENTS (包含所有主要元素)│ ├── AR-PACKAGE (子包,可嵌套)│ ├── ECU-EXTRACT (ECU 提取定义)│ ├── SYSTEM (系统描述)│ ├── ECU-INSTANCE (ECU 实例)│ ├── COMPOSITION (组件组合)│ ├── COMPONENT-PROTOTYPE (组件原型)│ ├── CLIENT-SERVER-INTERFACE (客户端-服务端接口)│ ├── SENDER-RECEIVER-INTERFACE (发送者-接收者接口)│ ├── SOFTWARE-COMPONENT-TYPE (软件组件类型)│ ├── IMPLEMENTATION-DATA-TYPE (实现数据类型)│ ├── APPLICATION-PRIMITIVE-DATA-TYPE (应用原始数据类型)│ ├── APPLICATION-COMPOSITE-DATA-TYPE (应用复合数据类型)│ ├── CONSTANT-SPECIFICATION (常量规范)│ ├── SIGNAL (信号定义)│ ├── SYSTEM-SIGNAL (系统信号)│ ├── SYSTEM-SIGNAL-GROUP (系统信号组)│ ├── DATA-TRANSFORMER (数据转换器)│ └── ... (其他元素)└── ADMIN-DATA (管理数据)
- 主要分支详细解析:
- 软件组件 (Software Component)
SOFTWARE-COMPONENT-TYPE├── SHORT-NAME├── PORTS│ ├── P-PORT-PROTOTYPE (提供端口)│ │ ├── SHORT-NAME│ │ ├── PROVIDED-INTERFACE-TREF (引用接口)│ │ └── ...│ └── R-PORT-PROTOTYPE (需求端口)│ ├── SHORT-NAME│ ├── REQUIRED-INTERFACE-TREF│ └── ...├── INTERNAL-BEHAVIORS (内部行为)│ ├── SHORT-NAME│ ├── EVENTS│ │ ├── INIT-EVENT (初始化事件)│ │ ├── TIMING-EVENT (定时事件)│ │ ├── DATA-RECEIVE-EVENT (数据接收事件)│ │ ├── OPERATION-INVOKED-EVENT (操作调用事件)│ │ └── MODE-SWITCH-EVENT (模式切换事件)│ ├── RUNNABLES (可运行实体)│ │ ├── SHORT-NAME│ │ ├── CAN-BE-INVOKED-CONCURRENTLY (并发调用标志)│ │ ├── MINIMUM-START-INTERVAL (最小启动间隔)│ │ └── ...│ └── ...└── ...
- 数据类型 (Data Types)
IMPLEMENTATION-DATA-TYPE├── SHORT-NAME├── CATEGORY (类型类别: VALUE, ARRAY, RECORD, UNION)├── SW-DATA-DEF-PROPS (软件数据定义属性)│ ├── SW-CALIBRATION-ACCESS (标定访问权限)│ ├── SW-IMPL-POLICY (实现策略)│ └── ...├── SUB-ELEMENTS (子元素,适用于复合类型)│ ├── ARRAY-TYPE (数组类型)│ │ ├── ELEMENT (数组元素)│ │ ├── INDEX-DATA-TYPE (索引数据类型)│ │ └── SIZE-HANDLING (大小处理)│ └── RECORD-TYPE (记录类型)│ ├── ELEMENTS (记录元素)│ └── ...└── ...
-
接口 (Interfaces)
-
客户端-服务端接口 (Client-Server Interface)
CLIENT-SERVER-INTERFACE├── SHORT-NAME├── IS-SERVICE (是否为服务接口)├── OPERATIONS (操作)│ ├── SHORT-NAME│ ├── ARGUMENTS (参数)│ │ ├── DIRECTION (IN, OUT, INOUT)│ │ ├── TYPE-TREF (类型引用)│ │ └── ...│ ├── POSSIBLE-ERROR-REFS (可能的错误引用)│ └── ...└── ...
- 发送者-接收者接口 (Sender-Receiver Interface)
SENDER-RECEIVER-INTERFACE├── SHORT-NAME├── DATA-ELEMENTS (数据元素)│ ├── SHORT-NAME│ ├── TYPE-TREF (类型引用)│ ├── IS-QUEUED (是否排队)│ └── ...└── ...
- 2.4 ECU 配置 (ECU Configuration)
ECU-EXTRACT├── SHORT-NAME├── CONTAINERS (容器)│ ├── ECU-CONFIG (ECU 配置)│ │ ├── SHORT-NAME│ │ ├── ECU-VARIANT (ECU 变体)│ │ ├── MEMORY-MAPPINGS (内存映射)│ │ └── ...│ └── ...├── MODULE-CONFIGS (模块配置)│ ├── COM-CONFIG (通信配置)│ ├── OS-CONFIG (操作系统配置)│ ├── BSW-MODULE-CONFIG (基础软件模块配置)│ └── ...└── ...
- 系统描述 (System Description)
SYSTEM├── SHORT-NAME├── COMMUNICATION (通信)│ ├── SIGNAL-TO-PDU-MAPPINGS (信号到PDU映射)│ ├── PDU-TO-FRAME-MAPPINGS (PDU到帧映射)│ └── ...├── ECUS (ECU实例)│ ├── SHORT-NAME│ ├── COMMUNICATION-CONNECTORS (通信连接器)│ └── ...├── SIGNALS (信号)│ ├── SHORT-NAME│ ├── DATA-TYPE-POLICY (数据类型策略)│ └── ...└── ...
- 典型 ARXML 文件层次结构示例:
AUTOSAR (根元素)├── AR-PACKAGES (包集合)│ ├── AR-PACKAGE (包1, 如ServiceInterfaces)│ │ ├── SHORT-NAME: \"ServiceInterfaces\"│ │ ├── ELEMENTS│ │ │ ├── SERVICE-INTERFACE (服务接口)│ │ │ │ ├── SHORT-NAME: \"VehicleSpeedService\"│ │ │ │ ├── SERVICE-ID: 0x1234│ │ │ │ ├── METHODS (方法)│ │ │ │ │ └── CLIENT-SERVER-OPERATION│ │ │ │ │ ├── SHORT-NAME: \"GetSpeed\"│ │ │ │ │ ├── METHOD-ID: 0x0101│ │ │ │ │ └── CALL-TYPE: \"REQUEST_RESPONSE\"│ │ │ │ └── EVENTS (事件)│ │ │ │ └── EVENT│ │ │ │ ├── SHORT-NAME: \"SpeedUpdate\"│ │ │ │ └── EVENT-ID: 0x0201│ │ │ └── ... (其他服务接口)│ │ └── AR-PACKAGE (子包, 可选)│ ││ ├── AR-PACKAGE (包2, 如DataTypes)│ │ ├── SHORT-NAME: \"DataTypes\"│ │ ├── ELEMENTS│ │ │ ├── IMPLEMENTATION-DATA-TYPE (数据类型)│ │ │ │ ├── SHORT-NAME: \"UInt16\"│ │ │ │ └── BIT-SIZE: 16│ │ │ └── IMPLEMENTATION-DATA-TYPE (结构体)│ │ │ ├── SHORT-NAME: \"EngineStatus\"│ │ │ ├── CATEGORY: \"STRUCTURE\"│ │ │ └── SUB-ELEMENTS (成员)│ ││ ├── AR-PACKAGE (包3, 如ECUs)│ │ ├── SHORT-NAME: \"ECUs\"│ │ ├── ELEMENTS│ │ │ └── ECU-INSTANCE (ECU实例)│ │ │ ├── SHORT-NAME: \"EngineECU\"│ │ │ ├── MAC-ADDRESS: \"00:12:34:56:78:9A\"│ │ │ └── ETHERNET-INTERFACES (以太网接口)│ ││ └── AR-PACKAGE (包4, 如Communication)│ ├── SHORT-NAME: \"Communication\"│ ├── ELEMENTS│ │ ├── ETHERNET-FRAME (以太网帧)│ │ │ ├── SHORT-NAME: \"Speed_Frame\"│ │ │ └── FRAME-ID: 0x1001│ │ ├── I-SIGNAL-I-PDU (PDU)│ │ │ ├── SHORT-NAME: \"Speed_PDU\"│ │ │ └── SIGNAL-TO-PDU-MAPPING (信号映射)│ │ └── I-SIGNAL (信号)│ │ ├── SHORT-NAME: \"Speed_Signal\"│ │ └── LENGTH: 16│ └── ...│└── ... (其他全局配置)
关键结构说明:
- 根节点:
- 包含所有配置的入口,声明命名空间和版本。
ARXML 文件通常包含以下关键命名空间:
http://autosar.org/schema/r4.0(根据版本不同而变化)http://autosar.org/schema/implementationDataTypeshttp://autosar.org/schema/applicationDataTypes
版本信息通常在根元素中指定:
<AUTOSAR xsi:schemaLocation=\"http://autosar.org/schema/r4.0 AUTOSAR_4-0-3.xsd\" xmlns=\"http://autosar.org/schema/r4.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
-
包(AR-PACKAGE):
- 功能划分:按逻辑功能分模块(如服务接口、数据类型、ECU配置)。
- 嵌套支持:包内可嵌套子包(如
ServiceInterfaces包下可定义SOME/IP子包)。
-
元素(ELEMENTS):
- 服务接口(SERVICE-INTERFACE):定义SOME/IP服务的方法、事件、字段。
- 数据类型(IMPLEMENTATION-DATA-TYPE):基础类型(
uint8)或复杂类型(struct)。 - ECU实例(ECU-INSTANCE):描述ECU的硬件属性(MAC地址、IP地址)。
- 通信元素(ETHERNET-FRAME, PDU, SIGNAL):定义以太网帧格式和信号映射。
-
引用机制:
- 通过
标签跨包引用元素(如/DataTypes/UInt16)。
- 通过
示例:服务接口与PDU的引用关系
ServiceInterfaces (包)└── SERVICE-INTERFACE ├── METHOD │ └── INPUT-ARGUMENTS │ └── ARGUMENT │ └── DATA-TYPE-REF -> /DataTypes/UInt16 └── EVENT └── DATA-TYPE-REF -> /DataTypes/UInt16Communication (包)└── I-SIGNAL-I-PDU └── SIGNAL-TO-PDU-MAPPING └── I-SIGNAL-REF -> /Signals/Speed_Signal
设计原则
- 模块化:按功能拆分为独立包(如
Services、Network、ECUs)。 - 唯一标识:所有ID(
SERVICE-ID、METHOD-ID)需全局唯一。 - 可读性:通过
SHORT-NAME和注释说明元素用途。 - 兼容性:版本升级时保留旧字段,避免破坏现有通信。
通过此结构树,可快速定位ARXML文件中的配置模块,理解元素间的层级和引用关系。
2.3 TAG(XML元素)
在ARXML文件中,TAG(XML元素)的类型由AUTOSAR元模型(Meta-Model)严格定义,用于描述汽车电子系统的各个组成部分。以下是ARXML文件中所有常见TAG类型的分类及详细说明,涵盖从顶层结构到具体配置的完整体系:
1. 顶层结构标签
xml xml ...UUID和SHORT-NAME标识xml ...2. 元数据与管理标签
xml ENxml 1.0.0xml 3. 通信与网络相关标签
xml CAN_Clusterxml EngineDataxml RPMxml BrakePressure4. ECU配置与软件组件标签
xml CanDriverxml CanConfigxml 1005. 服务与数据转换标签
xml DiagnosticServicexml SignalEncoderxml CanToEth6. 多语言支持标签
xml Descriptionxml EngineSpeedxml This is a detailed description...7. 引用与依赖标签
xml /Path/To/Elementxml ...8. 特殊用途标签
xml /ECUC/Placeholders/Unassignedxml Calibration.bin关键总结
- 严格分层:ARXML采用树状结构,从
根元素到具体配置逐级展开。 - 工具链依赖:所有TAG需符合AUTOSAR XSD规范,否则工具(如Vector PREEvision)会报错。
- 多语言支持:通过
/和实现国际化。 - 唯一标识:
UUID和SHORT-NAME确保元素可被唯一引用。
如需完整标签列表,请参考对应AUTOSAR版本的官方XSD文件(如AUTOSAR_4-2-2.xsd)。
2.4 ARXML文件关键元素解析
2.4.1 XML声明与处理指令
元素: - XML声明
作用:定义XML文档的基本属性,是每个ARXML文件必须的开头部分
完整语法:
参数详解:
version(必需):指定XML版本,目前只支持\"1.0\"encoding(强烈推荐):字符编码方式,推荐值:UTF-8(推荐):兼容性最佳,支持多语言。UTF-16:大端/小端编码,需声明字节顺序标记(BOM)。ISO-8859-1:仅支持西欧字符。
standalone(可选):定义文档是否依赖外部DTD- 作用:声明XML文档是否依赖外部资源(如DTD、XSD)。
standalone=\"yes\":文档独立,不依赖外部定义。standalone=\"no\":依赖外部资源(如AUTOSAR XSD文件)。- 默认值:若未声明,默认值为
\"no\"。 - ARXML实践:
- AUTOSAR文件通常需引用外部XSD架构,因此建议显式声明
standalone=\"no\"。 - 若省略此属性,工具链可能默认按
\"no\"处理。
使用规范:
- 必须出现在文件第一行
- 前面不能有任何字符(包括空格)
- 在ARXML中必须指定UTF-8编码
注意事项:
- 若声明
encoding=\"UTF-8\",文件必须保存为UTF-8格式(无BOM)。 - 若文件含中文注释或标签,必须使用UTF-8编码,否则解析器会报错或乱码。
2.4.2 XML注释
元素: - 注释
作用:为ARXML文件添加人类可读的解释说明
语法规则:
特殊限制:
- 不能嵌套注释
- 内容中不能包含连续两个连字符\"–\"
- 不能出现在标签内部(如
<tag >)
2.4.3 XML声明与根元素
- 必须声明根元素
,并指定命名空间和XSD验证。 - 命名空间:
xmlns定义AUTOSAR标准的版本(如R4.0、R21-11)。 - XSD引用:
xsi:schemaLocation指向对应的XSD架构文件,用于语法验证。
4.4.3.1 xmlns(默认命名空间)
- 作用:定义XML元素的默认命名空间,确保元素归属明确,所有未显式指定前缀的元素均属于此命名空间。
- ARXML示例:
<AUTOSAR xmlns=\"http://autosar.org/schema/r4.0\"> <AR-PACKAGE>...</AR-PACKAGE></AUTOSAR> - 关键点:
- 命名空间URI(如
http://autosar.org/schema/r4.0)唯一标识AUTOSAR版本。 - 不同AUTOSAR版本需对应不同URI(如R21-11为
http://autosar.org/schema/r4.0)。
- 命名空间URI(如
AUTOSAR命名空间版本对照表:
http://autosar.org/schema/r4.0http://autosar.org/schema/r4.1http://autosar.org/schema/r4.2http://autosar.org/schema/r4.0(同R4.2)4.4.3.2 xmlns:xsi(XML Schema实例命名空间)
- 作用:声明XML Schema实例(XML Schema Instance)的命名空间前缀(通常为
xsi),用于关联XSD文件,启用XML Schema实例功能。 - 示例:
<AUTOSAR xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> </AUTOSAR> - 前缀约定:
xsi是通用前缀,不可自定义。- 用于后续的
schemaLocation属性。
4.4.3.3 xsi:schemaLocation(XSD文件关联)
- 作用:指定命名空间对应的XSD架构文件路径,供解析器验证XML结构,实现语法验证。
- 语法:
xsi:schemaLocation=\"命名空间URI XSD文件路径\"
(多个命名空间可依次列出,用空格分隔) - ARXML示例:
<AUTOSAR xmlns=\"http://autosar.org/schema/r4.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://autosar.org/schema/r4.0 AUTOSAR_4-0-3.xsd\">- 表示
http://autosar.org/schema/r4.0命名空间的XSD文件为AUTOSAR_4-0-3.xsd。
- 表示
- 关键点:
- XSD文件需与XML文件在相同目录,或通过绝对/相对路径指定。
- 若XSD文件未找到,工具链(如Vector PREEvision)会报错。
完整ARXML根元素示例:
<AUTOSAR xmlns=\"http://autosar.org/schema/r4.0\" <!-- 默认命名空间 --> xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://autosar.org/schema/r4.0 AUTOSAR_4-2-2.xsd\" > <AR-PACKAGES> <AR-PACKAGE> <SHORT-NAME>ECU_Config</SHORT-NAME> </AR-PACKAGE> </AR-PACKAGES></AUTOSAR>
2.4.4 ADMIN-DATA元素
元素:
作用:存储文档管理元数据,包含三类核心信息:
- 文档创建和修改历史
- 工具链信息
- 配置管理数据
ADMIN-DATA 的典型结构:
ADMIN-DATA 通过 (Structured Data Group Set)定义多个结构化数据组(),每个组通过 GID(Group ID)标识数据类型,并通过 (Structured Data)存储具体值。
完整结构:
<ADMIN-DATA> <SDGS> <SDG GID=\"Docu\"> <SD>ECU Configuration</SD> </SDG> <SDG GID=\"Revision\"> <SD>4.3.0</SD> </SDG> <SDG GID=\"Created\"> <SD>2023-11-20T09:30:00</SD> <SDG GID=\"By\"> <SD>John.Doe@company.com</SD> </SDG> </SDG> <SDG GID=\"Tool\"> <SD>Vector PREEvision 6.0</SD> <SDG GID=\"Settings\"> <SD>CodeGen=Autosar4.2</SD> </SDG> </SDG> </SDGS></ADMIN-DATA>
SDG参数详解:
GID(必需):分组标识符,常见值:- “Created”:创建时间
- “Modified”:修改记录
- “Tool”:生成工具
- “Revision”:版本号
- “Owner”:所有者
SD:实际数据内容,可以是嵌套结构
常见 GID 类型与用途:
authorAlice BrowncreationDate2023-10-05T08:00:00ZmodifiedDate2023-10-06T09:15:00ZmodifiedHistory2023-10-05: Initial creationtoolETAS ISOLAR-A 4.3.0version1.2.0commentAdded new event for fault codes最佳实践:
- 至少应包含创建时间和工具信息
- 使用ISO 8601格式记录时间戳
- 对重要修改保留历史记录
2.4.5 语言相关元素
元素:
作用:声明文档的默认内容语言
语法用法:
<LANGUAGE>EN</LANGUAGE>
语言代码规范:
- 必须使用ISO 639-1双字母代码
- 常见值:EN(英语)、DE(德语)、JA(日语)、ZH(中文)
元素
作用:声明文档中实际使用的所有语言
语法:
<USED-LANGUAGES> <USED-LANGUAGE>EN</USED-LANGUAGE> <USED-LANGUAGE>DE</USED-LANGUAGE></USED-LANGUAGES>
规则:
- 必须包含
中指定的默认语言 - 按使用频率排序
- 每个语言代码只能出现一次
元素
作用:提供多语言文本内容
完整语法:
<L-10 L=\"EN\" xml:space=\"preserve|default\" xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"> 文本内容</L-10>
参数详解:
L(必需):ISO 639-1语言代码xml:space(可选):空白处理方式- “preserve”:保留所有空白字符
- “default”:按XML规范处理空白
xmlns:xhtml(可选):允许嵌入XHTML标记
与其他多语言标签的对比:
CAN Signal典型应用:
<DESCRIPTION> <L-10 L=\"EN\" xml:space=\"preserve\"> Engine control module (ECM) manages the fundamental engine parameters. </L-10> <L-10 L=\"DE\"> Das Motorsteuergerät (ECM) verwaltet die grundlegenden Motorparameter. </L-10></DESCRIPTION>
2.4.6 AR-PACKAGE体系结构
元素
作用:根元素下的容器,作为所有AR-PACKAGE的根容器,用于组织多个(AUTOSAR包),形成层次化结构。
特性:
- 必须是
元素的直接子元素 - 可以包含多个
- 在模块化ARXML中可能被拆分到多个文件,用于模块化设计(如按功能划分:通信、诊断、ECU配置等)。
元素
作用:AUTOSAR元素的主要组织单元
完整语法:
<AR-PACKAGES> <AR-PACKAGE UUID=\"d8a3f1e0-7b3a-11ed-a1eb-0242ac120002\"> <SHORT-NAME>ServiceInterfaces</SHORT-NAME> <ELEMENTS> </ELEMENTS> <AR-PACKAGE> <SHORT-NAME>SubPackage</SHORT-NAME> ... </AR-PACKAGE> </AR-PACKAGE></AR-PACKAGES>
关键子元素:
UUID:唯一标识符(推荐使用URN格式)SHORT-NAME:包名称(遵循AUTOSAR命名规则)ELEMENTS:包含实际AUTOSAR元素
UUID生成规范:
- 必须符合RFC 4122标准
- 推荐格式:
urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - 生成工具:应使用标准UUID生成算法
2.4.7 元素 (ELEMENT) 与属性
元素表示 AUTOSAR 元模型中的对象(如服务、信号、ECU),通过属性定义其特性。
通用元素结构:
<ELEMENT-TYPE UUID=\"...\"> <SHORT-NAME>ElementName</SHORT-NAME> <PROPERTY-NAME>value</PROPERTY-NAME> <REFERENCE DEST=\"TARGET-TYPE\">/Path/To/Target</REFERENCE></ELEMENT-TYPE>
UUID: 元素的唯一标识符(必填)。SHORT-NAME: 元素名称(必填,同一包内不可重复)。DEST: 引用目标类型(如IMPLEMENTATION-DATA-TYPE)。
常见元素类型:
SERVICE-INTERFACEECU-INSTANCEIMPLEMENTATION-DATA-TYPEI-SIGNAL-I-PDUETHERNET-FRAME2.4.8 引用机制
通过 路径引用 和 UUID 引用 关联不同包中的元素。
1 路径引用:
<DATA-TYPE-REF DEST=\"IMPLEMENTATION-DATA-TYPE\">/DataTypes/UInt16</DATA-TYPE-REF>
- 路径格式:
/Package/SubPackage/ElementName。 DEST: 指定目标元素的元模型类型(必须与目标匹配)。
示例:
<DATA-TYPE-REF DEST=\"IMPLEMENTATION-DATA-TYPE\">/DataTypes/UInt16</DATA-TYPE-REF><PDU-REF DEST=\"I-SIGNAL-I-PDU\">/Pdus/Speed_PDU</PDU-REF><I-SIGNAL-REF DEST=\"I-SIGNAL\">/Signals/Speed_Signal</I-SIGNAL-REF>
规则:
- 路径格式:使用
/分隔包层级,如/DataTypes/UInt16表示根包下的DataTypes包中的UInt16类型。 DEST属性:必须与目标元素的类型严格匹配(如IMPLEMENTATION-DATA-TYPE对应数据类型)。
2 UUID 引用:
<ECU-INSTANCE-REF DEST=\"ECU-INSTANCE\">d8a3f1e0-7b3a-11ed-a1eb-0242ac120002</ECU-INSTANCE-REF>
- 适用场景: 跨文件引用元素。
- 要求: 目标元素必须在同一工程的其他 ARXML 文件中定义。
2.4.9 数据类型定义
通过 IMPLEMENTATION-DATA-TYPE 定义基础或复杂数据类型
基础类型:
<IMPLEMENTATION-DATA-TYPE UUID=\"...\"> <SHORT-NAME>UInt16</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <BIT-SIZE>16</BIT-SIZE></IMPLEMENTATION-DATA-TYPE>
CATEGORY:VALUE(基础类型)、STRUCTURE(结构体)、ARRAY(数组)。
结构体类型:
<IMPLEMENTATION-DATA-TYPE UUID=\"...\"> <SHORT-NAME>EngineStatus</SHORT-NAME> <CATEGORY>STRUCTURE</CATEGORY> <SUB-ELEMENTS> <IMPLEMENTATION-DATA-TYPE-ELEMENT> <SHORT-NAME>RPM</SHORT-NAME> <TYPE-TREF DEST=\"IMPLEMENTATION-DATA-TYPE\">/DataTypes/UInt16</TYPE-TREF> <BYTE-POSITION>0</BYTE-POSITION> </IMPLEMENTATION-DATA-TYPE-ELEMENT> </SUB-ELEMENTS></IMPLEMENTATION-DATA-TYPE>
BYTE-POSITION: 结构体成员的起始字节位置(必须对齐)。
2.4.10 数据转换框架
元素
作用:容器元素,包含所有数据转换定义
结构要求:
<DATA-TRANSFORMATIONS> <DATA-TRANSFORMATION-SET>...</DATA-TRANSFORMATION-SET> </DATA-TRANSFORMATIONS>
位置:通常位于的中
元素
作用:定义一组数据转换规则(如信号编码/解码、单位转换等)
关键点:
UUID:唯一标识该转换集。- 通常用于SOA(面向服务架构)或信号后处理。
子元素:
:转换集名称(如Transformer_Configuration)。:引用具体的转换链(Transformer Chains)。
完整语法:
<DATA-TRANSFORMATION-SET UUID=\"e5f6g7h8-9012-3456-7890-abcdef123456\"> <SHORT-NAME>Transformer_Configuration</SHORT-NAME> <TRANSFORMER-CHAIN-REFS>...</TRANSFORMER-CHAIN-REFS> </DATA-TRANSFORMATION-SET>
关键参数:
UUID:必须全局唯一SHORT-NAME:遵循UpperCamelCase命名惯例
元素
作用:引用一个或多个转换链(Transformer Chains),定义数据转换的执行顺序。
典型子元素:
:指向具体的转换链(通过UUID或路径引用)。
应用场景:
- 例如:将CAN信号转换为以太网信号需要多个步骤(缩放、字节序转换等)。
详细结构:
<TRANSFORMER-CHAIN-REFS> <TRANSFORMER-CHAIN-REF DEST=\"TRANSFORMER-CHAIN\" DEST-NAME=\"SpeedConverterChain\" >/Transformers/SpeedProcessing</TRANSFORMER-CHAIN-REF></TRANSFORMER-CHAIN-REFS>
属性详解:
DEST(必需):目标类型,固定为\"TRANSFORMER-CHAIN\"DEST-NAME(可选):目标元素的SHORT-NAME- 内容:XPath格式的引用路径
2.4.11 SHORT-NAME命名规范
语法要求:
<SHORT-NAME>ValidName</SHORT-NAME>
命名规则:
- 长度限制:1-128个字符
- 允许字符:
- 大写字母(A-Z)
- 小写字母(a-z)
- 数字(0-9)
- 下划线(_)
- 禁止:
- 开头或结尾使用下划线
- 连续两个下划线
- 使用XML保留字符(, &等)
行业惯例:
- 类型定义使用UpperCamelCase:
EngineSpeedType - 实例命名使用lowerCamelCase:
currentSpeed - 常量使用UPPER_SNAKE_CASE:
MAX_SPEED_LIMIT
综合应用示例:
<AUTOSAR xmlns=\"http://autosar.org/schema/r4.0\"> <ADMIN-DATA> <SDGS> <SDG GID=\"Created\"> <SD>2023-11-20T14:30:00Z</SD> <SDG GID=\"By\"> <SD>engineering@auto.com</SD> </SDG> </SDG> <SDG GID=\"Tool\"> <SD>ETAS ISOLAR-A 9.0.1</SD> </SDG> </SDGS> </ADMIN-DATA> <LANGUAGE>EN</LANGUAGE> <USED-LANGUAGES> <USED-LANGUAGE>EN</USED-LANGUAGE> <USED-LANGUAGE>DE</USED-LANGUAGE> </USED-LANGUAGES> <AR-PACKAGES> <AR-PACKAGE UUID=\"urn:uuid:1a2b3c4d-5e6f-7890-1234-56789abcdef0\"> <SHORT-NAME>VehicleData</SHORT-NAME> <DESCRIPTION> <L-10 L=\"EN\">Contains vehicle data transformations</L-10> </DESCRIPTION> <ELEMENTS> <DATA-TRANSFORMATIONS> <DATA-TRANSFORMATION-SET UUID=\"urn:uuid:aa11bb22-cc33-dd44-ee55-ff6677889900\"> <SHORT-NAME>SpeedTransformSet</SHORT-NAME> <TRANSFORMER-CHAIN-REFS> <TRANSFORMER-CHAIN-REF DEST=\"TRANSFORMER-CHAIN\"> /Transformers/KmphToMphChain </TRANSFORMER-CHAIN-REF> </TRANSFORMER-CHAIN-REFS> </DATA-TRANSFORMATION-SET> </DATA-TRANSFORMATIONS> </ELEMENTS> </AR-PACKAGE> </AR-PACKAGES></AUTOSAR>
3 总结
以上对ARXML文件的作用、应用场景以及关键元素进行了详细介绍,希望能对大家学习ARXML文件有所帮助,后续专题会继续对ARXML文件以及以太网通信矩阵进行介绍。


