CAN(controller Area Network )总线的学习

1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议(数据之间的交互),其目的是为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要

  CAN总线 RS-485
相比之下优点

1 网络各节点之间的数据通信实时性强

2开发周期短

3已形成国际标准的现场总线

4最有前途的现场总线之一

 

特性

RS-485

CAN-bus

单点成本

低廉

稍高

系统成本

较低

总线利用率

网络特性

单主网络

多主网络

数据传输率

容错机制

可靠的错误处理和检错机制

通讯失败率

极低

节点错误的影响

导致整个网络的瘫痪

无任何影响

通讯距离

<1.5km

可达10km(5kbps)

网络调试

困难

非常容易

开发难度

标准Modbus协议

标准CAN-bus协议

后期维护成本

CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块。结构简单。只有2根线与外部相连,并且内部集成了错误探测和管理模块。

CAN总线特点:(1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突;高优先级节点信息在134μs通信; (2) 多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞; (3) 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);(4) CAN总线传输介质可以是双绞线,同轴电缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。

应用举例

CAN总线在工控领域主要使用低速-容错CAN即ISO11898-3标准,在汽车领域常使用500Kbps的高速CAN。CAN系统又分为高速和低速,高速CAN系统采用硬线是动力型,速度:500kbps,控制ECU(电子控制单元,行车电脑,车载电脑)、ABS(防抱死制动系统)等;低速CAN是舒适型,速度:125Kbps,主要控制仪表、防盗等

CAN总线中存在5种错误类型

位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平和送出的电平不同时,则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。

填充错误:在使用位填充方法进行编码的报文中,出现了第6个连续相同的位电平时,将检 测出一个填充错误。

CRC(循环冗余校验码)错误:CRC序列是由发送器CRC计算的结果组成的。接收器以和发送器相同的方法计算CRC。如果计算的结果和接收到的CRC序列不同,则检测出一个CRC错误。

形式错误: 当固定形式的位区中出现一个或多个非法位时,则检测到一个形式错误。

应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。

 
 
 
为了界定故障,在每个总线单元中都设有2个计数:发送出错计数和接收出错计数。这些 计数按照下列规则进行。
(1)接收器检查出错误时,接收器错误计数器加1,除非所有检测错误是发送活动错误标志或超载标志期间的位错误。
(2)接收器在送出错误标志后的第一位检查出显性位时,错误计数器加8。
(3)发送器送出一个错误标志时,发送器错误计数器加8。有两种情况例外:其一是如果发 送器为错误认可,由于未检测到显性位应答或检测到应答错误,并且在送出其认可错误标志时,未检测到显性位;另外一种情况是如果仲裁器件产生填充错误,发送器送出一个隐性位错误标志,而检测到的是显性位。除以上两种情况外,发送器错误计数器计数不改变。
(4)发送器送出一个活动错误标志或超载标志时,检测到位错误,则发送器错误计数器加8。
(5)在送出活动错误标志、认可错误标志或超载错误标志后,任何节点都最多允许连续7个显性位。在检测到第11个连续显性位后,或紧随认可错误标志检测到第8个连续的显性位,以及附加的8个连续的显性位的每个序列后,每个发送器的发送错误计数都加8,并且每个接收器的接收错误计数也加8。
(6)报文成功发送后,发送错误计数减1,除非计数值已经为0。
(7)报文成功发送后,如果接收错误计数处于1~197之间,则其值减1;如果接收错误计数为0,则仍保持为0;如果大于127,则将其值记为119~127之间的某个数值。
(8)当发送错误计数等于或大于128,或接收错误计数等于或大于128时,节点进入错误认,可状态,节点送出一个活动错误标志。
(9)当发送错误计数器大于或等于256时,节点进入总线关闭状态。
(1O)当发送错误计数和接收错误计数均小于或等于127时,错误认可节点再次变为错误激活节点。
(11)在检测到总线上11个连续的隐性位发送128次后,总线关闭节点将变为2个错误计数器均为0的错误激活节点。
(12)当错误计数器数值大于96时,说明总线被严重干扰。

重中之重

can总线在AD中的封装可利用向导TO-来进行绘制

CAN总线的学习的更多相关文章

  1. SPI通信协议(SPI总线)学习

    1.什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写.是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线. ...

  2. CAN总线协议 学习笔记

    1.CAN总线网络 CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻,但是 ...

  3. USB驱动程序之USB总线驱动程序学习笔记

    USB总线驱动程序的作用 1. 识别USB设备 1.1 分配地址 1.2 并告诉USB设备(set address) 1.3 发出命令获取描述符 描述符的信息可以在include\linux\usb\ ...

  4. I2C总线协议学习笔记 (转载)

    1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能有一 ...

  5. 异步消息总线hornetq学习-03客户端连接hornet进行jms消息的收发-非jndi方式连接

    在上节中介绍了通过jndi方式连接到hornetq服务器上,有时候由于某些原因,我们不希望通过jndi方式连接,hornetq也支持这种方式进行 以第2章节的例子为模板,我们编写了另一个获取Conne ...

  6. v3学院带你学习EEPROM读写实验

    一.实验背景在消费者电子电讯和工业电子中看上去不相关的设计里经常有很多相似的地方例如几乎每个系统都包括一些智能控制通常是一个单片的微控制器,通用电路例如LCD驱动器远程I/O,RAM,EEPROM或数 ...

  7. ABP之事件总线(5)

    前面已经对Castle Windsor的基本使用进行了学习,有了这个基础,接下来我们将把我们的事件总线再次向ABP中定义的事件总线靠近.从源码中可以知道在ABP中定义了Dictionary,存放三种类 ...

  8. ABP之事件总线(3)

    承接上一篇时间总线的学习,在上一篇中我们实现了取消显式注册事件的方式,采用使用反射的方式.这样的好处可以解除Publisher和Scriber的显式依赖,但是问题又来了,因为我们只有Publisher ...

  9. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

随机推荐

  1. 计算Pan手势到指定点的角度

    计算Pan手势到指定点的角度 效果图: 源码: // // RootViewController.m // Circle // // Copyright (c) 2014年 Y.X. All righ ...

  2. 快速设置UITableView不同section对应于不同种类的cell

    快速设置UITableView不同section对应于不同种类的cell 本文主要是为了写明如何在UITableView中,一个section对应于一种类型的cell,写起来不凌乱. 在不封装任何类的 ...

  3. 计算机用CMD命令关机建立文件夹 梁华杰

    1:进入CMD BJ 2:关机并取消 3:进入D盘 文件管理 创件文件并删除

  4. 激活老电脑的第二春:内存盘为Chrome浏览器做缓存

    AMD Radeon RAMDisk 4.2.1 正式版 下载地址:http://dl.pconline.com.cn/html_2/1/73/id=7204&pn=0.html 适用于:wi ...

  5. [转] linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程

    分类: linux 2015-03-13 16:24 1572人阅读 评论(0) 收藏 举报linuxprofile关于登录linux时,/etc/profile.~/.bash_profile等几个 ...

  6. jQueryeasyUI+Hibernate+struts2实现商城后台管理之复合类别

    一.在Category.java中添加父类别和子类别两个变量,并生成get/set方法

  7. PhoneGap模仿微信摇一摇功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. POJ 2407 Relatives 欧拉函数题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  9. [转]SQL Server 数据库中的 MD5 和 SHA1

    MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...

  10. MongoDB简易

    一   安装 1.下载 $ brew install mongodb 2.启动 $ mongod --config /usr/local/etc/mongod.conf 3.连接 $ mongo 二 ...