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. Java1.8的HashMap源码解析

    java1.8是现在用的最多的版本,hashmap是现在用的最多的map,今天我们试图分析一下源码. 数据结构 首先我们注意到数据是存放在一个Node数组里面 transient Node<K, ...

  2. 「MoreThanJava」Day2:变量、数据类型和运算符

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  3. 推荐一款ui架构--frozenui

    首页是这样定义的 移动框架 重磅出击 简单易用,轻量快捷,为移动端服务的前端框架 链接地址 http://frozenui.github.io/base.html#layout

  4. Git篇--将代码上传到git完整版

    1.注册github账号. 2.创建个人的github仓库,如图,   或者也可以进入个人中心去创建,   还可以直接点击右上角的“”+“”添加, 3.创建自己的Repository,如图: 4.新建 ...

  5. .net core 服务注册生命周期

    在Asp.Net core中的IServiceCollection容器中注册服务的生命周期分以下3种: 1.Transient 通过AddTransient注册,会在IServiceCollectio ...

  6. Halcon一维测量1D Measuring解析

    一维测量(也叫一维计量或卡尺)的概念非常直观.沿着一个预定的区域(主要是垂直于RIO感兴趣区域的方向) 边缘的位置.这里的边缘为从暗到亮或从亮到暗的过渡. 基于提取的边缘,可以测量零件的尺寸.例如,可 ...

  7. 【XCTF】Cat

    标签:宽字节.PHP.Django.命令执行 解题过程 目录扫描没有发现任何可疑页面. 测试输入许多域名,均没有反应:输入ip地址得到回显. 猜测为命令执行,尝试使用管道符拼接命令. 测试:|.&am ...

  8. sublime text 3+java只编译不输出结果 solution

    文章摘自:https://blog.csdn.net/VincentLuo91/article/details/53007135 版权声明:本文为CSDN博主「vincentluo91」的原创文章,遵 ...

  9. 08 jwt源码剖析

    08 jwt源码剖析 目录 08 jwt源码剖析 1. jwt认证流程 2.jwt创建token 2.1 原理 2.2 jwt校验token 3. jwt使用 4. 源码剖析 总结: JSON Web ...

  10. 【IDEA】创建maven项目,webapp没有被标识,无法识别

    问题描述 新建maven项目模块后,webapp目录未被标识,也就是没有小蓝点的图标显示. 解决方法 点击"File"下的"Project Strucure", ...