1  初识CAN通信

说起CAN通信,可能很多人都比较陌生,但实际上我们却一直在和它打交道。随着家用汽车的普及,我们开车过程中的每次刹车、每次踩油门,甚至每次的开车门、开车窗,其实都是CAN通信的应用。

公众号dotNet工控上位机:thinger_swj】

2  CAN基础概念

CAN 是Controller Area Network 的缩写,是ISO国际标准化的串行通信协议。1986年,为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,德国电气商博世公司开发了面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。

现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN总线协议是建立在OSI七层参考模型的基础上的,但是它的模型结构只有三层,即物理层、数据链路层和应用层,CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议中的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、CRC校验及优先级判别等工作。

CAN总线有以下特点:

  • 多主工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,而不区分主从,通信方式灵活。

  • 网络上的节点信息会分成多种不同的优先级,可以满足不同的实时性要求。

  • 采用非破坏性位仲裁机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点则不受影响继续传输。

  • 以点对点、一点对多点及全局广播来进行数据传输。

  • 直接通信距离最远可达10KM。

  • 通信速率最高可达1MB/S。

  • 点数实际可达110个。

  • 用短帧结构,每一帧的有效字节数为8个。

  • 每帧信息都有CRC校验及其他检错机制,数据出错率较低。

  • 通信介质可采用双绞线、同轴电缆及光纤,一般采用廉价的双绞线即可。

  • 节点在错误严重的情况下,具有自动关闭总线的功能,切换与总线之间的联系,以使总线上的其他操作不受影响、

3  CAN通信与RS-485通信区别

RS-485总线也是现在工业现场应用非常广泛的总线协议之一,因此我们可以结合RS-485通信来更好地了解CAN通信,具体表现在以下几方面:

  • 通信距离:RS-485总线最大传输距离是1.2KM,CAN总线最大传输距离是10KM。

  • 输速率:RS-485总线传输速率为300-10M bps,CAN总线传输速率为5K-1M bps。

  • 网络结构:RS-485总线网络构成为主从式集散控制系统,CAN总线可以实现点对点、一对多及全局广播的形式来发送接收数据。

  • 网络容量:RS-485总线网络的一条通信最大可接255个节点,CAN总线实际节点可达110个或更多。

  • 通信方式:RS-485总线网络很难实现实时通信,CAN采用非破坏性技术,并结合位仲裁机制,可以大大节省总线冲突裁决时间。

  • 通信可靠性:RS-485总线网络的容错与检错能力较差,CAN总线在错误严重的情况下,具有自动关闭总线的功能。

  • 公众号dotNet工控上位机:thinger_swj】

从0到1:开启CAN通信学习(一)的更多相关文章

  1. 开启CAN通信学习(二)——基于Kvaser的CAN通信案例

    1 案例硬件介绍 Kvaser是瑞典的一家专门提供CAN和LIN总线分析仪及数据记录仪的公司,在CAN产品开发领域已经有近30年的经验,本案例选择的CAN通信硬件型号是Kvaser Leaf Ligh ...

  2. C# 通信学习笔记

    C# 通信学习笔记 DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不 ...

  3. netty4.0 Server和Client的通信

    netty4.0 Server和Client的通信 创建一个maven项目 添加Netty依赖 <dependency> <groupId>io.netty</group ...

  4. 二进制方式部署Kubernetes 1.6.0集群(开启TLS)

    本节内容: Kubernetes简介 环境信息 创建TLS加密通信的证书和密钥 下载和配置 kubectl(kubecontrol) 命令行工具 创建 kubeconfig 文件 创建高可用 etcd ...

  5. IIS6.0服务器完美开启Gzip压缩[转]

    转自:http://seo.qiankoo.com/731 在昨天服务器还没重装之前,这个服务器已经开启了Gzip,去年配置的时候就很波折,因为配置文件在C盘,所以重装后Gzip就没了. 今天理论上第 ...

  6. swift2.0 字符串,数组,字典学习代码

    swift 2.0 改变了一些地方,让swift变得更加完善,这里是一些最基本的初学者的代码,里面涉及到swift学习的最基本的字符串,数组,字典和相关的操作.好了直接看代码吧. class View ...

  7. Android中使用开源框架EventBus3.0实现Fragment之间的通信交互

    1.概述 在之前的博文中简单介绍过如何实现fragment之间的信息交互:<Android中Fragment与Activity之间的交互(两种实现方式)>,今天继续给大家介绍一种可以实现此 ...

  8. C#同步,异步的理解,包括5.0中await和async(学习笔记)

    之前在工作中一直用的是同步线程,就是先进入画面的load事件,然后在里面进行数据库调用的处理.后面又遇到了公司软件中一些比较古老的代码,一开始在那块古老代码中增加机能的时候,我想用到数据库的数据给画面 ...

  9. 《vue.js2.0从入门到放弃》学习之路

    原文地址: Vue.js2.0从入门到放弃---入门实例(一):http://blog.csdn.net/u013182762/article/details/53021374 Vue.js2.0从入 ...

随机推荐

  1. Linux服务搭之 - 消息队列(RabbitMQ)

    本章主要目的是为了后续spring-cloud-bus做准备,讲述在Linux Centos7操作系统中搭建 RabbitMQ… - 什么是RabbitMQ RabbitMQ 是一个使用 Erlang ...

  2. 如何配置-整合ssm框架之配置文件

    ssm整合 一.applicationContext.xml 1.配置数据源 <bean id="dataSource" class="org.springfram ...

  3. 本地连接虚拟机db2V10.5遇到的问题

    在连接虚拟机数据库时发现自己不知道db2的端口号是多少,百度上说50000,60000的都有,所以还是决定自己试一下,并记录下这个过程 # 首先切换到db2inst1的用户 su - db2inst1 ...

  4. css中line-height的理解_介绍line-height实际应用

    一.line-height的定义 css中line-height行高是指文本行基线之间的距离,不同字体,基线位置不同.line-height只影响行内元素和其他行内内容,而不会直接影响块级元素,如果块 ...

  5. 常用API - 包装类、System类

    包装类 概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率. 然而很多情况,会创建对象使用,因为对象可以做更多的功能. 如果想要我们的基本类型像对象一样操作,就可以使用基本类型 ...

  6. Subset POJ - 3977(折半枚举+二分查找)

    题目描述 Given a list of N integers with absolute values no larger than 10 15, find a non empty subset o ...

  7. Linux系统 Centos7 环境基于Docker部署Rocketmq服务

    消息队列 基本概述 MQ,Message Queue,基于TCP协议构建的简单协议,区别于具体的通信协议. 基于通信协议定义和抽象的更高层次的通信模型,一般都是生产者和消费者模型,又或者说服务端和客户 ...

  8. When Lambo with Howdoo

    原文链接:https://howdoo.io/when-lambo/ 为了庆祝即将推出的革命性新社交媒体平台Howdoo以及我们令人惊喜的合作伙伴关系和社区,我们正在发起一项竞赛,以最终回答“When ...

  9. Redux的理解与使用

    一.什么是Redux? Redux是一个第三方状态管理的js库,它不仅仅可以适用于react框架,还可以用于其他的vue,auglar等框架.只不过react的生态中不包括一个状态管理的库而已,所以与 ...

  10. Linux 下载工具推荐: Motrix && qbittorrent

    Linux下载介绍 Linux下其实下载工具还是蛮多的, 命令行的wget,curl,aria2,甚至于apt 但是个人日常使用下还是有图形化界面比较方便易用.大多数教程里推荐的Uget,可能是我也不 ...