首先每个 ECU是一个网络节点,每个网络节点可收发一些 Message,每个Message 由CAN signals构成。每个 CAN signal利用一个或多个连续的2进制位来表示承载的信息。下面就来举个列子简要介绍如何理解 CAN signal的定义。

以节点 IPC中ESP_STATUS 这个CAN message 中的 ESP_VehicleSpeed这个CAN signal 为例,查看 DBC中的定义如下图:

可以看到这个 signal由13 个bit构成,字节序是 Motorola,单位是KPH ,Factor是 0.05625,

无效值是 0x1FFF,最大值是460.69 KPH 。

怎么来理解这个 13bit以及Factor 和最大值呢?

首先可以看 Layout,这个signal 占了2个字节,其中一个占了 8位,另一个占了5位,合在一起正好是 13位,而13 个bit可以表示的无符号范围正好是 0 – 0x1FFF,因此一般把最大的那个范围定做 Invalid Value,如果CAN signal 是这个值,那么此时获取的 CAN signal就是无效的。

那么怎么理解 factor呢?可以把它理解为精度,即每一个 CAN signal的整数值所代表的有单位的数值,即 0表示0 KPH , 1表示 1*0.05625即0.05625KPH ,2表示 2*0.05625即0.1125 KPH ,n表示 n*0.05625 KPH,注意这里的n是十进制数值。因此可以把收到的 CAN signal整数值对应转换为实际数值,自然的可以理解最大值是怎么来的,即 0x1FFF即十进制8191 ,与0.05625相乘得到的 460.69。

如何根据 layout获得相应的CAN signal 数值呢,写代码获取该 CAN signal的数值应该是这样:

(Msg.ESP_VehicleSpeed_0 << 0) + (Msg.ESP_VehicleSpeed_1 << 5)

对CAN signal 的一点理解的更多相关文章

  1. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  2. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  3. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  4. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  5. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  6. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

  7. rt-thread中动态内存分配之小内存管理模块方法的一点理解

    @2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...

  8. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

  9. mycat的schema.xml的个人的一点理解

    官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解 刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件 具体都是干啥用 ...

随机推荐

  1. 关于pycharm中输出的内容不全的解决办法

    很多时候我们会发现有的时候输出的结果特别多的时候,会在最后输出时用...代替,最后输出一个总长度,那要咋么弄咧? import pandas as pd # 设置显示的最大列.宽等参数,消掉打印不完全 ...

  2. Java并发关键字Volatile 详解

    Java并发关键字Volatile 详解 问题引出: 1.Volatile是什么? 2.Volatile有哪些特性? 3.Volatile每个特性的底层实现原理是什么? 相关内容补充: 缓存一致性协议 ...

  3. python接口自动化测试 - configparser配置文件解析器详细使用

    configparser简介 ConfigParser模块已在Python 3中重命名为configparser 该模块定义了ConfigParser类. ConfigParser类实现一种基本的配置 ...

  4. Client API Object Model - Xrm object(3.4)

    Xrm对象是全局可用的,可以在代码中使用,而不必在客户机API中使用执行上下文. Xrm 包括了以下这些namespace Xrm 的官方文档 https://docs.microsoft.com/e ...

  5. Centos与Ubuntu

    共同点 1.两个系统都分别有桌面系统与服务器系统,不过ubuntu的桌面从外观上来看要比centos的漂亮 不同点 1.centos中新建的普通用户是没有sudo权限的,如果想让普通用户拥有sudo权 ...

  6. Linux 安装Jenkins

    1.安装jdk1.8 下载地址:https://github.com/frekele/oracle-java/releases 下载 root@123:~/my_java# wget https:// ...

  7. Spring注解开发系列Ⅴ --- 自动装配&Profile

    自动装配: spring利用依赖注入和DI完成对IOC容器中各个组件的依赖关系赋值.自动装配的优点有: 自动装配可以大大地减少属性和构造器参数的指派. 自动装配也可以在解析对象时更新配置. 自动装配的 ...

  8. Spring boot 学习中代码遇到的几个问题

    1.报一大段红错 此时对象还是能创建成功的,解决方案参考链接https://blog.csdn.net/wanglin199709/article/details/99121487 2.无法创建对象 ...

  9. GO异常 | runnerw.exe: CreateProcess failed with error 21

    背景 今天创建了一个GO项目,写了几行代码 package chapter1 import "fmt" func main() { fmt.Println("hello ...

  10. 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型

    本文源码:GitHub·点这里 || GitEE·点这里 一.文档类型简介 1.Excel文档 Excel一款电子表格软件.直观的界面.出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Ex ...