如何看一份DBC文件
什么是DBC文件
DBC是Database Can的缩写,其代表的是CAN的数据库文件,在这个文件中把CAN通讯的信息定义的非常完整清楚,而CAN网络的通讯就是依据这个文件的描述进行的,所以DBC文件的作用非常强大,正是因为有了它才可以使得整个CAN网路的节点控制器无差错的协同同步开发。
DBC文件一般我们在写应用代码时,会参考DBC文件的一些参数,编写他的代码。
一、DBC文件内容
当我们打开一份DBC文件时,主要看 Network nodes下里的网络节点,网络节点分为多个类,如下图,分为SDE、sensor2、sensor3三个类节点。
当点开节点时,会看到类节点下的 TX 与 RX 下的多个messages。
每个message 又包含了多个signals。
二、DBC文件中的重点内容
1. 信号的起始位,bit长度、factory因数、offset偏移量,最大最小值、多路复用
从图中可以看出,factory 是因数,offset 是偏移量,最大最小值、Multiplexing 是多路复用。
1.2 多路复用
如图所示,有5种message,每个message由很多信号组成。
1.2 信号中Length[bit]、factory、offset、minimum、maximum的用法实现以及运算
基于AUTOSAR 实现的部分代码:
void XXXX()
{(void)ProcessDataOfSingleTarget(IPduData, 0,&TargetData.as_Target[0], MsgId);(void)ProcessDataOfSingleTarget(IPduData,188,&TargetData.as_Target[1], MsgId);
}
static boolean ProcessDataOfSingleTarget(const uint8 *IPduData, uint16 offset, TS_RDA_5G3_00_DFPV_Target *target,uint32 MsgId)
{ReadSignalDataFromPdu(IPduData, 36u + offset, 15, SignalEndianness_Little, SignalType_uint16, &SignleTargetData.YPos);ReadSignalDataFromPdu(IPduData, 180u + offset, 8, SignalEndianness_Little, SignalType_uint8, &SignleTargetData.YPosStd);ReadSignalDataFromPdu(IPduData, 65u + offset, 14, SignalEndianness_Little, SignalType_uint16, &SignleTargetData.YVelocity);ReadSignalDataFromPdu(IPduData, 188u + offset, 8, SignalEndianness_Little, SignalType_uint8, &SignleTargetData.YVelocityStd);target->YPos = ConvertToPhysicalValue((float32)SignleTargetData.YPos,(float32) 0.01,(float32)-163.84,(float32)-163.84,(float32) 163.83);target->YPosStd = ConvertToPhysicalValue((float32)SignleTargetData.YPosStd, (float32) 0.1, (float32)0.0,(float32)0.0,(float32) 25);target->YVelocity = ConvertToPhysicalValue((float32)SignleTargetData.YVelocity, (float32) 0.01,(float32)-81.92, (float32)-81.92, (float32) 81.91);target->YVelocityStd = ConvertToPhysicalValue((float32)SignleTargetData.YVelocityStd,(float32) 0.1, (float32)0.0,(float32)0.0,(float32) 15);
}
static float32 GetMin(float32 x, float32 y)
{/* GetMin from x y*/return (x < y) ? x : y;
}static float32 GetMax(float32 x, float32 y)
{/* GetMax from x y*/return (x > y) ? x : y;
}float32 ConvertToPhysicalValue(float32 value, float32 factor, float32 offset, float32 minValue, float32 maxValue)
{// 运算float32 result = (value * factor) + offset;// As in a DBC file, when both the upper and lower bound are equal to 0, we do not take them into account.if ((minValue != (float32)0) || (maxValue != (float32)0)){// Take into account the upper and lower bounds.result = GetMin(result, maxValue);result = GetMax(minValue, result);}return result;
}
tips
factor(系数) 与 offset(偏移量) 定义了物理值(physical,物理量,如vehicle speed,engine speed,water temperature)与原始值(raw,总线上传输的值)的线性转换规则.
转换公式:
physical_value = raw_value * factor + offset
raw_value = ( pysical_value - offset ) / factor
如何看一份DBC文件相关推荐
- CSR867x — 如何看懂一份psr文件
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者:文化人 XX 联系方式: XX 版权声明:原创文章,欢迎 ...
- wow mysql dbc_WoW的DBC文件内容描述-魔兽有爱论坛 - 一个魔兽世界爱好者的聚集地 uiwow.com - Powered by Discuz!...
楼猪也是新手小白,对wow的dbc文件已经学习一段了,分享一点成果: 第一个:WorldSafeLocs.dbc 从字面上理解是游戏中的安全位置数据 位置 : 位于dbc.mpq patch.mpq中 ...
- 关于DBC文件的创建
版权声明:本文为CSDN博主「第55号小白鸭」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixin ...
- ETAS CP AUTOSAR RTA-CAR工具使用教程 -- ISOLAR-A导入dbc文件
ISOLAR-A导入dbc文件 简介:将使用rta-car7演示 1.按图新建工程 2.选中Filesystem Navigator 3.将准备好的dbc文件copy到工程路径下 4.点开绿色的D按钮 ...
- 零基础速成simulink代码生成——结合CANOE的DBC文件CAN报文代码生成 移植到硬件4
零基础速成simulink代码生成--结合CANOE的DBC文件CAN报文代码生成 移植到硬件4 本次我们将讲解如何将代码放到嵌入式硬件上运行,本次例子将dbc文件导入simulink中,生成代码,不 ...
- 各方评论《面向儿童的人工智能北京共识》:这是中国人工智能发展轨迹中的一份关键文件...
近日,智源研究院联合北京大学人工智能研究院.清华大学人工智能研究院.清华大学人工智能国际治理研究院.中科院自动化所.中科院计算所.中科院心理所等高校院所,以及小米.旷视.奇虎360.好未来.爱学习.极 ...
- 美军称五角大楼遭网络袭击 2.4万份敏感文件被盗
美军主管网络安全事务的国防部副部长威廉·林恩14日称,今年3月五角大楼遭受历史上最严重的一次网络袭击,计有2.4万份敏感文件被盗走. 林恩当天在位于华盛顿的美国国防大学发表演讲,正式公布美军第一份&l ...
- vector can通信源码_汽车电子CAN网络dbc文件
CAN网络作为汽车网络已经被广泛使用,随着电子零部件被越来越多的应用到汽车中,零部件之间的通信越来越多,德国vector公司作为行业内的标杆企业,vector公司定义了一套文件规范-----dbc,作 ...
- 一图看懂hadoop分布式文件存储系统HDFS工作原理
一图看懂hadoop分布式文件存储系统HDFS工作原理 转载于:https://www.cnblogs.com/AlexQY/p/9856477.html
- python调用simulink_使用Python从dbc文件中提取simulink建模数据定义
使用dbc文件建模完成CAN通讯是一种比较高效的开发模式,不过在建模的过程中dbc文件中描述的数据需要自己去定义.使用文本编辑工具打开dbc文件可以看到,实际上dbc文件是一个可以进行语义解析的文本. ...
最新文章
- 我哭了,工业界AI项目落地有多难?
- mysql主主复制某张表_MySQL主主复制实战
- Re(正则表达式)库入门
- Javascript验证上传图片大小[前台处理]
- 【回顾】千万级智能推荐系统的架构演进
- 怎么看登陆哪个用户名_面试教材看哪个版本?抽到的版本与备考的不一致怎么办?...
- python: 正则表达式2--元字符与re模块
- 几点预防内存泄露的小建议
- CTRL-Space always toggles Chinese IME (Windows 7、10)
- c语言与西门子plc通讯,西门子PLC四种核心通讯方式汇总学习
- plist序列帧合图导出单独的图片
- 诸葛——如何摆脱APP速死症?
- 牛逼,我用Python做了一个word、PPT水印添加器!还带加密功能!
- Java游戏开发——推箱子
- 穿山甲成长中心——人能尽其才则百事兴
- Python opencv 伪彩色保存的结果和plt.imshow(blur_heatMap_jet)的结果截然相反 Python opencv如何imshow一张图片
- 计蒜客题解——T1769:最大岛屿
- 《外星人就在月球背面》值得一读
- iPhone设置代收 阿里云邮
- 正则校验特殊字符,英文特殊字符和中文特殊字符