• 【DBC专题】-8-经典CAN2.0 DBC快速切换为CANFD DBC


    目录

    1 Classical CAN2.0 DBC快速切换为CANFD DBC

    1.1 Classical CAN2.0 DBC的模板文件内容

    1.2 CANFD DBC的模板文件内容

    1.3 基于Classical CAN2.0 DBC快速切换/修改为CANFD DBC

    1.4 基于CANFD DBC快速切换/修改为Classical CAN2.0 DBC

    END


    优质博文推荐阅读(单击下方链接,即可跳转):

    1、Vector工具链

    2、CAN Matrix DBC

    3、CAN Matrix Arxml

    1 Classical CAN2.0 DBC快速切换为CANFD DBC

    一个DBCClassical CAN2.0 DBC还是CANFD DBC取决于它使用的Template模板:常见的Classical CAN2.0 DBC使用的“CANTemplate.dbc”模板;CANFD DBC使用的“CAN_FD Template.dbc”模板。

    现在我们来看一下两个Classical CAN2.0 DBCCANFD DBCTemplate模板差异。

    1.1 Classical CAN2.0 DBC的模板文件内容

    VERSION ""
    
    
    NS_ : 
    	NS_DESC_
    	CM_
    	BA_DEF_
    	BA_
    	VAL_
    	CAT_DEF_
    	CAT_
    	FILTER
    	BA_DEF_DEF_
    	EV_DATA_
    	ENVVAR_DATA_
    	SGTYPE_
    	SGTYPE_VAL_
    	BA_DEF_SGTYPE_
    	BA_SGTYPE_
    	SIG_TYPE_REF_
    	VAL_TABLE_
    	SIG_GROUP_
    	SIG_VALTYPE_
    	SIGTYPE_VALTYPE_
    	BO_TX_BU_
    	BA_DEF_REL_
    	BA_REL_
    	BA_DEF_DEF_REL_
    	BU_SG_REL_
    	BU_EV_REL_
    	BU_BO_REL_
    	SG_MUL_VAL_
    
    BS_:
    
    BU_:
    
    
    
    
    BA_DEF_  "BusType" STRING ;
    BA_DEF_DEF_  "BusType" "CAN";
    

    1.2 CANFD DBC的模板文件内容

    VERSION ""
    
    
    NS_ : 
    	NS_DESC_
    	CM_
    	BA_DEF_
    	BA_
    	VAL_
    	CAT_DEF_
    	CAT_
    	FILTER
    	BA_DEF_DEF_
    	EV_DATA_
    	ENVVAR_DATA_
    	SGTYPE_
    	SGTYPE_VAL_
    	BA_DEF_SGTYPE_
    	BA_SGTYPE_
    	SIG_TYPE_REF_
    	VAL_TABLE_
    	SIG_GROUP_
    	SIG_VALTYPE_
    	SIGTYPE_VALTYPE_
    	BO_TX_BU_
    	BA_DEF_REL_
    	BA_REL_
    	BA_DEF_DEF_REL_
    	BU_SG_REL_
    	BU_EV_REL_
    	BU_BO_REL_
    	SG_MUL_VAL_
    
    BS_:
    
    BU_:
    
    
    
    
    BA_DEF_ BO_  "CANFD_BRS" ENUM  "0","1";
    BA_DEF_  "DBName" STRING ;
    BA_DEF_  "BusType" STRING ;
    BA_DEF_ BU_  "NodeLayerModules" STRING ;
    BA_DEF_ BU_  "ECU" STRING ;
    BA_DEF_ BU_  "CANoeJitterMax" INT 0 0;
    BA_DEF_ BU_  "CANoeJitterMin" INT 0 0;
    BA_DEF_ BU_  "CANoeDrift" INT 0 0;
    BA_DEF_ BU_  "CANoeStartDelay" INT 0 0;
    BA_DEF_ BO_  "VFrameFormat" ENUM  "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD";
    BA_DEF_DEF_  "CANFD_BRS" "1";
    BA_DEF_DEF_  "DBName" "";
    BA_DEF_DEF_  "BusType" "";
    BA_DEF_DEF_  "NodeLayerModules" "";
    BA_DEF_DEF_  "ECU" "";
    BA_DEF_DEF_  "CANoeJitterMax" 0;
    BA_DEF_DEF_  "CANoeJitterMin" 0;
    BA_DEF_DEF_  "CANoeDrift" 0;
    BA_DEF_DEF_  "CANoeStartDelay" 0;
    BA_DEF_DEF_  "VFrameFormat" "StandardCAN";
    BA_ "BusType" "CAN FD";
    BA_ "DBName" "CANFD";
    

    1.3 基于Classical CAN2.0 DBC快速切换/修改为CANFD DBC

    通过1.1和1.2章节的对比您可以清楚的发现,Classical CAN2.0 DBCCANFD DBC二者Template模板的差异在DBC文件内容的末尾。

    文本编辑工具(记事本,Notepad++…)打开Classical CAN2.0 DBC,找到“BA_DEF_DEF_  "BusType" "CAN";”标签,用下列标签手动替换,并保存DBC文件。这样一个Classical CAN2.0 DBC就能快速变成一个CANFD DBC

    BA_DEF_ BO_  "CANFD_BRS" ENUM  "0","1";
    BA_DEF_  "DBName" STRING ;
    BA_DEF_ BU_  "NodeLayerModules" STRING ;
    BA_DEF_ BU_  "ECU" STRING ;
    BA_DEF_ BU_  "CANoeJitterMax" INT 0 0;
    BA_DEF_ BU_  "CANoeJitterMin" INT 0 0;
    BA_DEF_ BU_  "CANoeDrift" INT 0 0;
    BA_DEF_ BU_  "CANoeStartDelay" INT 0 0;
    BA_DEF_ BO_  "VFrameFormat" ENUM  "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD";
    BA_DEF_DEF_  "CANFD_BRS" "1";
    BA_DEF_DEF_  "DBName" "";
    BA_DEF_DEF_  "BusType" "";
    BA_DEF_DEF_  "NodeLayerModules" "";
    BA_DEF_DEF_  "ECU" "";
    BA_DEF_DEF_  "CANoeJitterMax" 0;
    BA_DEF_DEF_  "CANoeJitterMin" 0;
    BA_DEF_DEF_  "CANoeDrift" 0;
    BA_DEF_DEF_  "CANoeStartDelay" 0;
    BA_DEF_DEF_  "VFrameFormat" "StandardCAN";
    BA_ "BusType" "CAN FD";
    BA_ "DBName" "CANFD";
    

    1.4 基于CANFD DBC快速切换/修改为Classical CAN2.0 DBC

    将1.3章节反过来,一个CANFD DBC就能快速变成一个Classical CAN2.0 DBC。但要注意,DLC大于8的Message,以及帧类型(CANFD标准帧和CANFD扩展帧)的调整:

    • 一个CANFD DBC中既有CANFD帧,也有经典CAN帧,“CANFD扩展帧和标准帧帧类型调整为“经典CAN扩展帧和标准帧”,需要避免“CANFD扩展帧和标准帧的CANID”与“经典CAN扩展帧和标准帧的CANID”一样的情况
    • 对于DLC大于8的“CANFD扩展帧和标准帧”调整为“经典CAN帧扩展帧和标准帧”,需要拆分成多个经典CAN帧(拆分后,各帧分配一个独有的ID)
    • CANFD帧独有的Attribute属性需要被删除。

    推荐阅读(单击下方文字即可跳转至对应博文):

    《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

    《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

    《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...

    END

    获取更多“汽车电子资讯”和“工具链使用”,

    请关注“汽车电子助手”,做您的好助手。

     

  • 相关阅读:
    Elasticsearch:在 Elastic 中访问机器学习模型
    用c语言实现静态通讯录
    C语言——栈
    Web 开发相关概念
    2022年中科磐云——服务器内部信息获取 解析flag
    mysql高级语句
    数据库与Socket学习
    第十四届中国深圳创新创业大赛坪山预选赛区暨2022年“坪山高新区杯”创新创业大赛获奖名单的通知
    Apache Doris 系列: 基础篇-Stream Load
    SAP FI 项目号 系统状态CRTD是活动的 BS013
  • 原文地址:https://blog.csdn.net/qfmzhu/article/details/126950687