CAN与CANOpen(一)基本概念 
CAN与CANOpen(二)报文格式 
CAN与CANOpen(三)错误处理
CAN与CANOpen(四)CANOpen对象字典 
CAN与CANOpen(五)PDO和SDO
CAN与CANOpen(六)网络管理和CAN FD

CAN(Controller Area Network, 控制器局域网络)是由博世开发的一种现场总线,首先应用在汽车领域。由于它的低成本和可靠性,现在被广泛应用在工业测控和工业自动化领域。由于工作的关系,自己接触CAN比较多所以总结一下分享给大家。

  1. 参考
  1. http://www.can-cia.org/
  2. http://www.canopensolutions.com/
  3. CAN Specification 2.0, Part A
  4. CAN Specification 2.0, Part B
  5. CANopen 协议介绍
  6. CiA Draft Standard 301

2.    CAN与CANOpen的关系

下面是CAN协议与OSI网络模型的一个对比。CAN的物理层分了三层分别是MDI,PMA和PLS,数据链路层分了两层:MAC与LLC。这五层就是最原始的CAN协议,标准是ISO11898。也就是说CAN协议一开始是没有应用层的。后来有一种叫CANOpen的基于CAN的应用层协议被开发出来,标准是CiA301。

在实际开发CAN器件的时候不一定要用CANOpen,你可以根据自己的需要定制自己的应用层协议。

1CANCANOpen的关系

下面会分别介绍CAN和CANOpen的内容。最后会介绍一下CAN的最新发展CAN FD。

  1. CAN的基础知识

本文对于CAN的介绍主要集中在数据链路层,对于物理层涉及很少。对于物理层感兴趣的读者可以访问[1]

3.1    显性与隐形

显性(Dominant)与隐性(Recessive)是总线上最基本的两个状态,也可以表示为“0”与“1”。在物理上它有两条线的压差表示。在隐形的时候,两条线的电压相同,压差为0。当压差超过一定的阈值的时候,总线的状态就变为显性。

2显性与隐性

为什么叫显性和隐形?

假设在总线上挂了2个器件1,2.器件1将总线设为显性,而同时器件2将总线设为隐形。最终总线的状态会呈现为显性。所以当总线上的所有器件都为隐形时,总线的状态才为隐形。如果有一个器件为显性,则总线为显性

3 CAN总线

3. 2   冲突裁决

当总线上的几个器件同时发送数据的时候,CAN总线必须决定哪个器件可以发送,而其他的器件必须等待。冲突裁决是CAN协议最重要的一个特性,也是CAN总线做的最漂亮的地方,用很小的成本就解决了这个问题。

总线上的每一个CAN器件都会有一个唯一的ID。ID的大小决定了器件的优先级。ID越小优先级越高。如果几个器件同时发送数据,ID小的优先发送。以下图为例,总线上有A,B,C三个器件。A首先发送数据。当总线上有器件发送数据时,其他器件只能处于监听模式,所以B,C虽然有发送数据的需求但是只能等待A发送结束。当A发送结束之后,B,C同时发送,但是B的ID更小,B优先发送。B发送结束之后C才可以发送

4冲突处理与Node ID


下面说明一下当几个器件同时发送时CAN总线是如何做裁决的。

以下图为例。总线上有器件A,B,C,D。A,B,C同时发出SOF位为显性。而D为隐形,当它发现总线上的状态与自己的状态不一致时,D就进入监听状态。A,B,C继续发送数据。发送到ID的第5位时A,C为显性,B为隐形。B检测到总线的状态于自己的状态不一致,进入监听状态。A,C继续发送数据。这也说明B的ID比A,C要大。当发送到ID的第1位时A为隐形,C为显性,A进入监听状态。C继续发送。最终ID最小的C发送成功,A,B只能等待C发送完成之后再进行发送。然后A会发送成功,B等待,最后才是B发送。从上面的裁决过程可以看出,对于C来说,它的数据发送没有因为冲突而产生延迟。

冲突处理细节

CAN与CANOpen(一)相关推荐

  1. canopen服务器协议,CANopen

    CAN應用層和CANopen CANopen 概述 CANopen是附加了一套设备子协议的高层(第7层)CAN通信协议.作为一种标准化.高度可配置的嵌入式网络解决方案,它广泛应用于实时工业应用.机器人 ...

  2. CANopen笔记1

    CAN现场总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层) ,而这两层一般已被CAN硬件完全实现了.由于没有规定应用层,本身并不完整,需要一个高层协议来定义CAN报文中的11/29 ...

  3. canopen服务器协议,ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件

    ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件是一款基于CAN的一种高层协议,是一种具有灵活配置功能的标准嵌入式网络.它的任务是控制和监测所有NMT从站的NMT状态.通常,CA ...

  4. canopen和1939区别_CAN 和 CANopen的区别和联系

    1.CAN与CANopen的共同点与不同点: CAN只定义了物理层与链路层,而没有定义用户层,用户可根据自己的需要定义一些网络上的通信约定:  CANopen是在CAN的基础上定义了用户层,即规定了用 ...

  5. 【转】CANOPEN总线的相关问题点整理分享*****

    CANopen 是一个基于 CAN(控制局域网)串行总线系统和 CAL(CAN 应用层)的高层协议.CANopen 通讯协议 CiA DS-301 包括周期和事件驱动型通讯,不仅能够将总线负载减少到最 ...

  6. 嵌入式CANopen协议从入门到落地产品(更新2021.9.8)

    一.前言 我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅.只看CANopen协议的理论是很枯燥,而且根本看不会.我认为掌握CANope ...

  7. CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave1.od 3.2.Slave1.c 四.CAN盒子(收发器) 4.1.通过SDO方式修改CANopen从站的心跳时间 一.前言 ...

  8. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)

    文章目录 一.前言 二.实验目的 三.对象字典 3.1.找到工程里的对象字典文件 3.2.创建映射变量 四.STM32代码 4.1.Slave1.c 4.2.main.c 五.CAN盒子(收发器) 5 ...

  9. CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave.od 3.2.Slave1.c 四.CAN盒子(收发器) 五.细节补充 5.1.Slave1.od文件的作用 一.前言 通过修 ...

  10. CANopen | 拓展知识 - CANopen,CAN总线与OSI模型的关系

    一.前言 CAN总线定义OSI模型的物理层与数据链路层. CANopen协议使用了OSI模型的应用层与传输层. 二.CANopen and the OSI reference model 国外原文的地 ...

最新文章

  1. jQuery命名空间,插件开发
  2. JavaScript对象的几种创建方式?
  3. linux下挂载移动硬盘
  4. 第1章-什么是深度学习(笔记)
  5. 云溪怎么导入dxf_dwg怎么转换成dxf文件?超详细图文教程分享
  6. tensorflow2.0学习(一)
  7. chainmaker 交易执行失败也会打包到区块 落盘
  8. 计算机cpu结构实物图片,cpu内部结构显微图/cpu内部结构放大图
  9. android pc游戏模拟器哪个好用,哪个电脑手游模拟器好用 安卓手游模拟器测试对比排行榜...
  10. html显示网上图片不显示不出来,网页图片显示不出来,教您网页不显示图片怎么办...
  11. ios苹果签名多少钱?苹果企业签名是最便宜的吗
  12. 柜台收取西联汇款经验(网友分享)
  13. go语言安装插件报错cannot find package golang.org/x/tools/go/buildutil
  14. 成功解决:curl: (7) Failed connect to github-production-release-asset-2e65be.s3.amazonaws.com:443; 拒绝连接
  15. vue 强制刷新子组件
  16. Jenkins部署Git项目
  17. 10月2号陪同学买笔记本的经历
  18. 免费好物API分享大全
  19. PDF的简单应用查找、保存、查看
  20. 【-Flutter/Dart 语法补遗-】 sync* 和 async* 、yield 和yield* 、async 和 await

热门文章

  1. 【坑2】maven通过nexus私服服务器下载jar包提示无权限Authentication failed for http://localhost:8081/repository/maven-pub
  2. 数据库管理工具——SQuirreL SQL Client使用入门
  3. Django SVG 名字空间
  4. 使用TFS2010管理敏捷项目生命周期-系列指南5 TFS 故事墙(Story Wall)-看板(Dashboard)-Workbrench使用
  5. 第六章 Linux实际操作——实用指令
  6. 微软自带dns服务器,微软改进Windows 10加密DNS服务器配置(DoH) 现在设置起来更方便...
  7. 证明威尔逊(Wilson)定理及其逆定理
  8. 如何用Python求解微分方程组
  9. Linux命令行下载OneDrive分享链接中的文件
  10. System.Web.Security