ARTICLE · 1218242
Python + canmatrix:Excel 批量转 ARXML,打通 AUTOSAR 通信设计全流程
Python + canmatrix:Excel 批量转 ARXML,打通 AUTOSAR 通信设计全流程做过汽车电子开发的朋友都知道,通讯矩阵的格式转换是家常便饭。DBC 用得多,但随着 AUTOSAR 越来越普及,ARXML 也成了绕不开的格式。相比 DBC 的扁平文本结构,ARXML 是层级分明的 XML,学起来门槛不低。 之前我写过一篇 Excel 转 DBC 的文章,用的是 canmatrix 这个库。很多朋友问:能不能直接转 ARXML?当然可以,canmatrix 同样支持。 今天就来聊聊怎么用 Python + canmatrix 把 Excel 批量转成 ARXML 文件,打通 AUTOSAR 通信设计的第一步。 一句话:不用啃 ARXML 的 XSD 结构,把报文、信号整理清楚,canmatrix 帮你生成标准 ARXML。
1、Excel矩阵:通信矩阵表头与 DBC 转换工具一样,核心信息包括帧 ID、帧名称、周期、信号列表等: 2、工具效果:生成的是 AUTOSAR 标准的 .arxml 文件,可用 Vector 工具链(CANoe、DaVinci)直接打开。 3、ARXML文件效果:生成文件包含完整的 AUTOSAR 分层结构:
整体流程与 Excel 转 DBC 类似,可以分成三步: 第一步:界面功能main.py:命令行入口,选择 Excel 文件、指定 ARXML 输出路径,一键生成。 第二步:解析 Excel获取数据对象excelparse.py:逐行读取 Excel,把表格内容转成程序里的数据对象。 第三步:canmatrix传入数据对象generatearxml.py:把上一步的数据对象转成 canmatrix 能识别的格式,再调用 canmatrix 接口导出 ARXML。
调用 canmatrix 生成 ARXML,与生成 DBC 的整体思路类似: 创建 canmatrix 实体→添加 ECU 节点→添加报文 Frame→添加信号 Signal→导出 ARXML 文件(指定 AUTOSAR 版本) 对应到代码里,整体流程是这样: 
生成ARXML文件结果如下图 
虽然都是通信矩阵格式,ARXML 和 DBC 在结构上有本质差异: 
ARXML 遵循 AUTOSAR 标准,数据分层存储: 
canmatrix 支持导出不同版本的 ARXML: 3.2.x:旧版本 AUTOSAR,老工具链 4.0 - 4.3:新版本 AUTOSAR,主流工具链 4.2.0:推荐版本,兼容性最好 
canmatrix 能帮你不用关注 ARXML 的 XSD 结构细节,实现自动化生成 ARXML 文件,但不是万能的。 Excel 解析需自己写:canmatrix 自带的 convert 功能要求遵循它的 Excel 模板;自定义模板意味着解析逻辑全部要自己处理 数据类型映射:复杂的数据类型约束(Data Constraint)需要额外处理 canmatrix 是通信矩阵处理的瑞士军刀,支持的格式非常全面: .dbc - Vector DBC .dbf - DBF 数据库 .kcd - KCD 格式 .xls(x) - Excel .arxml - AUTOSAR XML .sym - 其他工具格式 .dbc - Vector DBC .arxml - AUTOSAR XML .json - JSON 格式 .yaml - YAML 格式 .xml - Fibex 格式 .scapy - Wireshark 脚本 除了格式转换,canmatrix 还支持: 矩阵整合:识别路由报文信号(CanCluster) DBC 对比:cancompare 功能 数据库合并:多文件整合
Excel 转 ARXML 的核心思路和转 DBC 一样: 解析 Excel 获取数据 构建 canmatrix 对象 调用导出接口生成文件 不同的是 ARXML 遵循 AUTOSAR 标准,结构更复杂、层级更分明。canmatrix 帮你封装了这些复杂度,你只需要关注数据本身。 如果你正在做 AUTOSAR 通信设计,或者需要批量生成 ARXML 文件,不妨试试这个方案。 你们平时 ARXML 都是怎么生成的?有没有遇到什么坑?欢迎评论区交流。
全文完
汽车电子开发 · Python 自动化
01 Excel转ARXML工具
02 工具业务流程
03 调用 canmatrix 接口整体思路


04 ARXML 与 DBC 的核心区别
4.1 文件结构

4.2 ARXML 分层结构

4.3 AUTOSAR 版本选择
















































































