CAN总线多帧发送方式

要了解CAN总线多帧数据的发送,首先我们要知道我们发送的数据帧是属于拓展帧还是标准帧,再说多帧发送方式方法,网上资源有很多关于拓展帧和标准帧区别,以及多帧发送的方式方法,为了我方便查阅,我还是打算自己做个笔记,方便我以后查阅。

首先了解下CAN报文的报文结构


1. 拓展帧与标准帧

CAN接口兼容规范它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。

一、扩展帧的仲裁域有29位,可以出现2^29中报文,且在数据链路上是有间隙的(对操作者透明),帧ID的范围是0000 0000-1FFF FFFF。(PS:目的就是构造29位的CAN ID,可以实现更加庞大的ID群,妈妈再也不用担心ID不够用了!)

二、标准帧的仲裁域是连续的11位,可以出现2^11种报文,也就是帧ID的范围是000-7FF;

三、控制帧中的DLC(数据长度)完全相同,但保留位不同,标准帧IDE、R0,扩展帧R1、R0,必须以显性电平发送(由数据链路层操作),对程序员透明;

四、 总结: 其它的都一模一样,所以,其实CAN标准帧和扩展帧只是在帧ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。 ★★★

CAN的扩展帧,是为了解决CAN标准帧的11位标识符不够用的情况。所以,才有扩展帧。
对于汽车的CAN来说,每一个CAN,都给一个CAN标识符,如果设备的数量超过了11位能表示的范围,那就采用CAN扩展帧。反之,采用标准帧就够了
。★★★

注意:这里的帧ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级(帧ID值越小,优先级越高,最小是0x00000000)。
标准帧:(0x12)

扩展帧:(0x1314)

CAN标准帧格式

CAN 标准帧信息为11个字节(3 + 8),包括两部分:信息和数据部分。前3个字节为信息部分。

字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。

字节2、3为报文识别码,11位有效。

字节4~11为数据帧的实际数据,远程帧时无效。

CAN扩展帧格式

CAN 扩展帧信息为13个字节(5 + 8),包括两部分,信息和数据部分。前5个字节为信息部分

字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在数据帧时实际的数据长度。

字节2~5为报文识别码,其高29位有效。

字节6~13数据帧的实际数据,远程帧时无效

CAN协议的一个最大特点是对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。
同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

了解了CAN的标准帧和扩展帧,再来说CAN总线多帧发送方式

1939协议支持多帧数据发送即数据超过8个的帧发送

用户可以通过ID来识别当前帧是否为多帧发送(连续帧),如果是多帧发送ID,举例:1C EC F4 56 其中 F4和56为目标地址和源地址,重点关注1C和EC,通过ID的这两个字节来判断是否为连续帧。

当通过ID判断该帧为连续帧后,开始解析这一帧的数据。举例:10 0D 00 02 FF 00 06 00,其中10为控制字,0D 00为整个消息的字节数 低位在前,02为数据包个数,即这个连续帧数据包含2个标准帧组成,FF 保留 默认即为FF,00 06 00 消息的参数组编号 即 这个消息识别码 用户可以通过这个消息识别码来确定如何来解析这组数据。那么,这帧数据最后表示含义即为:我要向你发送一个 消息参数组编号为(00 06 00),总字节数为(0D),帧数为(02)的一个连续帧。

数据的拆包与重组:

消息过长是指无法用单个CAN数据帧装载全部的数据(例如:数据域长于8个字节的消息)
过长的数据被认为是一个9字节及以上的字符串参数组。第一个数据传送包 包含序列编号1和字符串的头7个字节,其中的7个字节跟随序列编号2存放在另一个CAN数据帧中,再随后的7个字节与编号3一起,直到原始信息中所有的字节都被存放到CAN数据帧中并被传送。
传送的每个数据包(除了传送队列中的最后一个数据包)都装载着数据中的7个字节。而最后一个数据包的8个字节包含:数据包的序列编号和参数组至少一个字节的数据,余下未使用的字节全部用FF 或者00 代替补全

图中拓展帧-数据帧的帧ID是:18ECFF00, 18EBFF00;
18ECFF00是起始帧, 后面的8个字节也代表具体的意思。
18EBFF00是数据内容帧
18代表CANId的前两位(不确定),EC代表连续始帧,FF 00是CANId的后两位

图中数据帧标准帧的帧ID是000000F1,F1是CANID的后两位。

CAN总线多帧发送方式相关推荐

  1. 【计算机网络】数据链路层 : 后退 N 帧协议 GBN ( 滑动窗口 | 发送窗口长度 | “发送方“ 累计确认、超时机制 | “接收方“ 按序接收、确认帧发送机制 | 计算示例 )★

    文章目录 一. 滑动窗口协议引入 二. 后退 N 帧协议 ( GBN ) 滑动窗口 三. 后退 N 帧协议 ( GBN ) 运行过程 四. 后退 N 帧协议 ( GBN ) 发送方数据分类 五. 后退 ...

  2. STM32F103标准库开发----CAN总线通信实验----发送和接收

    STM32F103标准库开发----目录 STM32F103标准库开发----CAN总线通信实验----基本原理 STM32F103标准库开发----CAN总线通信实验----初始化/波特率 STM3 ...

  3. LIN总线协议详解2(LIN总线报文帧结构)

    目录 一.LIN总线报文帧结构 (Message Frame ) 1.报文整体机构 2.同步间隔段(Break Field) 3.同步段(Sync Byte Field) 4.受保护 ID 段(Pro ...

  4. Exchange 发送方式(Send As)和代表发送(Send on behalf)的区别

    我们都知道Exchange上可以对某个邮箱设置发送方式和代表发送.发送方式也就是我们通常所说的代理发送.下面分别介绍一下这两种方式的区别和如何设置. 一.代理方式(Send on behalf) 1. ...

  5. 最近发现系统rabbitmq丢消息比较严重,于是想了些方案来查找原因,给将消息发送方式添加确认机制。 我们在本地模拟了wms发送打标消息的场景. 1. 有事务 2. 先发点对点队列, 再发订

    最近发现系统rabbitmq丢消息比较严重,于是想了些方案来查找原因,给将消息发送方式添加确认机制. 我们在本地模拟了wms发送打标消息的场景. 1. 有事务 2. 先发点对点队列, 再发订阅队列 3 ...

  6. rocketMQ的消息介绍、发送方式和消费方式

    rocketMQ中消息有以下几种 普通消息:消息队列中没有特性的消息 顺序消息:严格按照顺序发布和消费的消息,先发布的消息一定会先被消费,可以分为 全局顺序消息:所有消息严格按照先入先出的顺序来发布和 ...

  7. RocketMQ—Producer(三)发送方式和消息类型

    一:发送方式讲解 RocketMQ版提供三种方式来发送消息:同步(Sync)发送.异步(Async)发送和单向(Oneway)发送. 我们会介绍每种发送方式的原理.应用场景.代码差异,以及三种发送方式 ...

  8. 工程仪器振弦传感器无线采集仪的采集数据发送方式及在线监测系统

    工程仪器多通道振弦传感器无线采集仪的采集数据发送方式 每次设备启动后会将采集到的传感器数据进行内部存储,并在设置好的时间间隔将数据发送出去,通过修改"数据发送方式"参数,监测数据可 ...

  9. 邮件的发送方式有哪几种?

    邮件营销一直以来以其成本低廉,效果可评估的特点备受广大商家和网络营销从业者的青睐,邮件发送方式一般有三种. 第一种就是通过专业的EDM(Sendcloud,Submail,umail,sg)邮件营销平 ...

最新文章

  1. 2008php多版本共存,lnmp安装多版本PHP共存的方法详解
  2. 你应该将应用迁移到Spring 4的五个原因
  3. Round Robin 算法
  4. CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
  5. 草稿 断开式连接 1204
  6. 开机启动项_开机时出现“checking media presence”
  7. java web乱码问题_Java Web中文乱码问题解决
  8. idea gui插件_「Java」 - 自写IntelliJ IDEA插件
  9. java 每隔一小时运行_每隔一小时执行一次 Full GC 分析排查
  10. request如何获取请求路径方法
  11. Lua 斗地主算法实现
  12. 腾讯地图踩坑记之选点组件
  13. 什么软件可以把真人照片卡通化、动漫化?
  14. FFmpeg屏幕录制
  15. Mac电脑上如何关闭屏幕时间
  16. 5.基于Abp的DDD框架
  17. 标题: 连接到服务器 ------------------------------ 无法连接到 DESKTOP-TGC5ASS\HAHA。 ----------------------------
  18. 【云原生】4.2 DevOps 精讲篇
  19. flutter 国际化flutter使用 intl插件,provider状态保存
  20. unity导入FBX模型

热门文章

  1. rubymine 序列号,RubyMine功能
  2. C语言之结构体和共同体——结构体的定义和使用
  3. linux文件名,Linux教程 概述Linux正规文件名
  4. Kickstarter是一个全球众筹平台
  5. 横竖屏显示 图片分辨率
  6. C语言实现简单的状态机
  7. CSS基础知识(高级技术)
  8. 软件工程——需求分析(生存周期),需求规格说明书,数据流图
  9. 155-PHP stripos函数
  10. 零基础python入门密歇根大学安娜堡分校_零基础:Python入门,看这篇就够了~ 王磊...