如果想要通过写脚本分析ARXML文件中的信息,比如希望将ARXML文件格式转换为DBC,
最基本的就是要解读ARXML文件的格式内容,
ARXML文件格式内容要比DBC复杂的多,我也是到处查了一些其他大咖写的内容,然后总计整理了如下内容,分享给大家。
ARXML全称为AUTOSAR XML,是用XML语言(Extensible Markup Language)描述AUTOSAR模型的一种人机可读的文本格式。ARXML文件在AUTOSAR架构下作为通用配置文件或数据库文件,在数据传输和存储中起到关键作用。
为了便于理解,下面先简单介绍一下AUTOSAR。AUTOSAR全称为Automotive Open System Architecture,即汽车开放系统架构。它是由全球各家汽车制造商、零部件供应商以及各种研究、服务机构共同参与的一种汽车电子系统的合作开发框架,并建立了一个开放的汽车控制器(ECU)标准软件架构。AUTOSAR的目的是通过提升OEM以及供应商之间软件模块的可复用性和可互换性来改进对复杂汽车电子电气架构的管理。为此,AUTOSAR做了以下3件事情:对应用软件与底层软件之间以及应用软件之间的接口进行标准化;给出一个控制器软件参考架构;规范分布式开发流程中的交换格式。
AUTOSAR试图通过对嵌入式控制器和相应执行软件单元的分布式系统的所有相关方面的精确和形式化描述,来实现非常灵活、稳定和可靠的软件工程生命周期。描述范围从对软件组件接口的高级需求到对特定总线消息的某些位的低级约束。AUTOSAR中的各种工作包 (AR-PACKAGE)确定了需要在不同描述中捕获的信息。ARXML Schema支持很多的元素,这些元素被组合起来描述一个系统(System),它们包含在AUTOSAR标签中,以定义ARXML Schema和AUTOSAR版本。
ECU.ARXML创建流程如下:
1)OEM关注的点是系统级的功能和集成,因此OEM端会提供系统级的描述文件,该文件中包含多个ECU的实例,并不包含软件组件部分,只有ECU级的通讯关系,这部分的设计可以基于UML/SysUML建模,也可以使用PREEVISION建模或者是ARtop来建模。
2. 供应商supplier拿到OEM提供的系统级的功能描述文件并导入到工具链中,比如Vector的PREEVISION,加入到系统的虚拟功能总线上,也就是AUTOSAR的 VFB,这样就可以和系统内的其它模块进行通讯,此时,还是系统级的ECU,并没有软件组件部分。
3. 因OEM提供的系统级的功能描述文件中包含了系统部件到ECU的映射,以及信号的映射,供应商基于此,可进行ECU内部硬件结构和接口的设计,并将信号分配给实际的接口,
至此,供应商即完成了ECU.ARXML创建过程。
ARXML文件实质是一个XML文件,一般通过AUTOSAR标准的XSD进行约束,用专用的工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer等生成。ARXML文档中的元素形成了一棵文档树,这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。
3.1 ARXML解读
第一行:文档声明,包含文档版本和文档字符编码;
第二行:根元素,每个文档有且只有一个根元素,元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素。属性:xmls: 引用Schema的约束,xmlns:xsi:声明当前的XML文件是schema一个实例,xsi:schemaLocation:引用schema的位置;
. . .
第三行:顶级包,此元素是添加到文件中的所有AUTOSAR元素的容器。
. . .
第四行:AUTOSAR包,包是AUTOSAR的主要组件,它包含彼此相关的AUTOSAR元素,如软件组件、行为和受支持的数据类型。它由一个名称和称为UUID的全局唯一标识符定义。它也可能包含子包。
文档中重要的AR-PACKAGE释义:
AR-PACKAGE:ECUSystem (Get ECUs)
AR-PACKAGE:ECUExtractVCU (Project description??)
AR-PACKAGE:VehicleTopology (Get Clusters)
AR-PACKAGE:Communication (Get Frames, PDUs and Signals)
AR-PACKAGE:Signal (Dynamic length attributes)
AR-PACKAGE:DataType (Signal Compu-method description)
AR-PACKAGE:SignalGroup (Signal groups description)
AR-PACKAGE:ComponentType (Components (prototypes)??)
AR-PACKAGE:Interface (ECU published signals)
3.2 ARXML中对应CANFD信号关键信息的路径
CAN-CLUSTER -- SHORT-NAME
CAN-CLUSTER -- PHYSICAL-CHANNELS -- PHYSICAL-CHANNEL -- CAN-FRAME-TRIGGERING – IDENTIFIER
CAN-FRAME -- SHORT-NAME
备注:确定Frame Name路径的reference:CAN-CLUSTER -- PHYSICAL-CHANNELS -- PHYSICAL-CHANNEL -- CAN-FRAME-TRIGGERING -- FRAME-REF
CAN-FRAME -- FRAME-LENGTH
I-SIGNAL-I-PDU -- CONTAINED-I-PDU-PROPS -- HEADER-ID-SHORT-HEADER
备注:确定PDU ID路径的reference:CAN-FRAME -- PDU-REF
NM-PDU -- SHORT-NAME 或 I-SIGNAL-I-PDU -- SHORT-NAME
I-SIGNAL-I-PDU -- LENGTH
SYSTEM-SIGNAL – SHORT-NAME
备注:确定Signal Name路径的reference:I-SIGNAL-TO-I-PDU-MAPPING -- I-SIGNAL-REF // I-SIGNAL -- SYSTEM-SIGNAL-REF
SYSTEM-SIGNAL -- L-2
I-SIGNAL-TO-I-PDU-MAPPING -- START-POSITION
I-SIGNAL -- LENGTH
I-SIGNAL-I-PDU -- I-PDU-TIMING-SPECIFICATIONS -- CYCLIC-TIMING -- TIME-PERIOD -- VALUE 或
I-SIGNAL-I-PDU -- I-PDU-TIMING-SPECIFICATIONS -- CYCLIC-TIMING -- TIME-OFFSET -- VALUE
备注:需要通过计算获得所需结果
SW- BASE-TYPE -- BASE-TYPE-ENCODING
备注:确定Date Type路径的reference: I-SIGNAL -- SW-DATA-DEF-PROPS -- BASE-TYPE-REF
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- COMPU-CONST – VT 或
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- COMPU-RATIONAL-COEFFS -- COMPU-NUMERATOR//COMPU-DENOMINATOR -- V
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- LOWER-LIMIT 或
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- UPPER-LIMIT
备注:确定LOWER-LIMIT和UPPER-LIMIT路径的reference: I-SIGNAL -- COMPU-METHOD-REF
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- COMPU-CONST – VT 或
COMPU-METHOD -- COMPU-INTERNAL-TO-PHYS -- COMPU-SCALES -- COMPU-SCALE -- COMPU-RATIONAL-COEFFS -- COMPU-NUMERATOR//COMPU-DENOMINATOR -- V
备注:14、15、16强相关,需要通过一些计算提取所需结果
I-SIGNAL -- INIT-VALUE -- NUMERICAL-VALUE-SPECIFICATION -- VALUE