1.CANopen协议简介

从OSI 网络模型的角度来看,CAN总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层),而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件或固件。

同时,CAN只定义物理层和数据链路层,没有规定应用层,本身并不完整,因此需要一个高层协议来定义CAN报文中的11/29位标识符和8字节数据的使用。而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。

CANopen协议是CAN-in-Automation(CiA) 定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲, CANopen 协议被认为是在基于CAN 的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。

在OSI 模型中, CAN标准、CANopen协议之间的关系如图 1‑1所示。

图1‑1  CAN标准、CANopen协议在OSI网络模型中的位置框图

CANopen和CAN报文的关系如图 1‑2所示。

图1‑2  CANopen和CAN报文的关系如所示。

CAN 报文由7个不同的位域组成,而CANopen就是规定其中的仲裁域(11 位标识符) 和数据域(8 字节数据) 的使用情况。

2.CANopen设备结构

CANopen是一个基于CAN串行总线系统和CAL(CAN应用层)的高层协议。 CANopen的核心概念是设备对象字典(OD: ObjectDictionary),CANopen通讯通过对象字典(OD)能够访问驱动器的所有参数。CANopen设备结构如图 2‑1所示。

图2‑1  CANopen设备结构

2.1  CANopen对象字典

CANopen对象字典(Object Dictionary,OD)是CANopen协议最为核心的概念。所谓的“对象字典”,就是一个有序的对象组;每个对象采用一个16位的索引值来寻址。为了访问数据结构中的元素,同时定义了一个8位的子索引,对象字典的结构如表 2‑1所示。

表2‑1  对象字典结构

索引

对象

0000

Not used

0001 - 001F

静态数据类型(标准数据类型,如Boolean,Integer 16)

0020 - 003F

复杂数据类型(预定义由简单类型组合成的结构如PDOCommPar,SDOParameter)

0040 - 005F

制造商规定的复杂数据类型

0060 - 007F

设备子协议规定的静态数据类型

0080 - 009F

设备子协议规定的复杂数据类型

00A0 - 0FFF

Reserved

1000 - 1FFF

通讯子协议区域(如设备类型,错误寄存器,支持的PDO数量)

2000 - 5FFF

制造商特定子协议区域

6000 - 9FFF

标准的设备子协议区域(例如“DSP-401 I/O 模块设备子协议”:Read State 8 Input Lines等)

A000 - FFFF

Reserved

CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。

CANopen对象字典中的项由一系列子协议来描述。子协议描述对象字典中每个对象的功能、名字、索引、子索引、数据类型、读/写属性,以及这个对象是否必需等,从而保证不同厂商的同类型设备兼容。

CANopen协议的核心描述子协议是DS301,包括CANopen协议应用层及通信结构描述,其他子协议都是对DS301协议描述文本的补充与扩展。

CANopen协议包含许多子协议,其主要划分为以下3类:

1)  通信子协议

通信子协议(Communication Profile)描述对象字典的主要形式,以及对象字典中的通信对象和参数。这个子协议适用于所有的CANopen设备,其索引值范围为0x1000~0x1FFF。

2)  制造商自定义子协议

对于在设备子协议中未定义的特殊功能,制造商可以在制造商自定义子协议(Manufacturer-specific Profile)中根据需求定义对象字典项。因此,这个区域对不同厂商来说,相同的对象字典项的定义不一定相同,其索引值范围为0x2000~0x5FFF。

  3)  设备子协议

设备子协议(Device Profile)为各种不同类型设备定义对象字典中的对象,其索引值范围为0x6000~0x9FFF。

2.2  CANopen通信

在CANopen协议中主要定义网络管理对象(NMT)、服务数据对象(SDO)、过程数据对象(PDO)、预定义报文或特殊功能对象4种对象。

2.2.1  网络管理对象

网络管理对象负责层管理、网络管理和ID分配服务,例如,初始化、配置和网络管理。网络管理中,同一个网络中只允许有一个主节点、一个或多个从节点,并遵循主/从模式。

2.2.2  服务数据对象

服务数据对象主要用于主节点对从节点的参数配置。服务确认是SDO最大的特点,为每个消息都生成一个应答,以确保数据传输的准确性。在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端。客户端通过索引和子索引能够访问数据服务器上的对象字典,所以CANopen主节点可以访问从节点的任意对象字典项的参数,并且SDO可以传输任何长度的数据(当数据长度超过4字节时,拆分成多个报文来传输)。

2.2.3  过程数据对象

过程数据对象用来传输实时数据,其传输模型为生产者-消费者模型,数据长度被限制为1~8字节。

PDO通信对象具有如下特点:

1.     PDO通信没有协议规定,PDO数据内容由它的COB-ID定义。

2.     每个PDO在对象字典中用2个对象描述,分别是PDO通信参数和映射参数。

1)  PDO通信参数:定义该设备所使用的COB-ID、传输类型、定时周期。

2)  PDO映射参数:包含一个对象字典中的对象列表,这些对象映射到相应的PDO,其中包括数据的长度。对于生产者和消费者,只有知道这个映射参数,才能够正确地解释PDO的内容。PDO内容是预定义的,如果PDO支持可变PDO映射,那么可以通过SDO进行配置。

3.     PDO具有2种传输方式:同步传输和异步传输。

1)  同步传输:通过接收同步对象实现同步,按触发方式又可分为非周期传输和周期传输。非周期传输由远程帧预触发,或者由设备子协议中规定的对象特定事件预触发。周期传输则通过接收同步对象来实现,可以设置1~240个同步对象触发。

2)  异步传输:由特定事件触发。按触发方式又可分为2种:一种通过发送与PDO的COB-ID相同的远程帧来触发;另一种由设备子协议中规定的对象特定事件来触发(如定时传输、数据变化传输等)。

2.2.4    预定义报文或特殊功能对象

预定义报文或特殊功能对象为CANopen设备提供特定的功能,以方便CANopen主站对从站的管理。在CANopen协议中,已经为特殊的功能预定义了COB-ID。主要有以下几种特殊报文:

1.     同步报文(Sync)

主要实现整个网络的同步传输,每个节点都以该同步报文作为PDO触发参数,因此该同步报文的COB-ID具有比较高的优先级以及最短的传输时间。

2.     时间标识报文(Time Stamp)

为每个节点提供公共的时间参考。

3.     紧急事件报文(Emergency)

当设备内部发生错误时触发该对象,即发送设备内部错误码。

4.     节点/寿命保护报文(Node/Life Guarding)

主节点可通过节点保护方式获取从节点的状态,从节点可通过寿命保护方式获取主节点的状态。

5.     启动报文(Boot up)

从节点初始化完成后向网络中发送该对象,并进入预操作状态。

2.3  CANopen预定义连接集

为了减小简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标识符在预操作状态下可用,通过动态分配可以修改它们。CANopen设备必须向它所支持的通讯对象提供相应的标识符。

CAN-ID分配表是基于11位CAN-ID的标准帧格式,划分为4位功能码和7位节点号,如图 2‑2所示。

图2‑2  预定义连接集ID

Node-ID由系统集成商定义,每个CANopen设备都需要分配一个节点号,节点号的范围是1~127(0不允许被使用)。

预定义连接集定义了4个接收PDO,4个发送PDO,1个SDO(占用2个CAN-ID),1个紧急对象和1个节点错误控制。支持无需确认的NMT模块控制服务、同步和时间标识对象报文。缺省ID分配表如表 2‑2所示。

表2‑2 CANopen预定义主/从连接集CAN标识符分配表

注意:

1)  PDO/SDO 发送/接收是由(slave)CAN节点方观察的。

2)  NMT 错误控制包括节点保护(NodeGuarding),心跳报文(Heartbeat)和Boot-up协议。

3.参考资料

《CANopen:high-level protocol for CAN-bus》

《项目驱动—CAN-bus现场总线基础教程》

CANopen协议介绍相关推荐

  1. canopen 报文格式_CANopen协议介绍

    1.CANopen协议简介 从OSI 网络模型的角度来看,CAN总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层),而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软 ...

  2. RTX5 | STM32H743+CubeMX+RTX5+两路FDCAN驱动+CANopen协议

    一.前言 百度网盘: 链接:https://pan.baidu.com/s/1NEccCy1S-Z5FhcInQOTzfA 提取码:fddg RTX5 | STM32H743+CubeMX+RTX5+ ...

  3. CANopen协议及应用

    文章目录 CANopen协议 CAN总线 CAN报文 CANopen概述 对象字典(Object Dictionary) 概述 通讯对象子协议区 制造商特定子协议 CANopen报文 NMT网络管理 ...

  4. CANopen协议解读

    CANopen协议解读 一.协议标准 二.CANopen报文说明 三.CANopen协议内容 1. ID的理解 2. NMT (1) 节点状态 (2) 节点状态控制 (3) 节点心跳报文 一.协议标准 ...

  5. linux下canopen协议视频,CAN协议与CANOpen协议

    这里详细介绍了CAN协议中数据通信帧每位的含义,有图片,值得一看:https://www.cnblogs.com/pejoicen/p/3986587.html 这里介绍了CanOpen协议,http ...

  6. CanOpen协议的伺服驱动控制

    一.CanOpen的基本介绍: 1.基本介绍: CanOpen在CAN网络7层协议中,处于应用层.CANopen协议是在20世纪90年代末,由CIA组织CAN-in-Automation,(http: ...

  7. CANopen协议本质

    一.CAN总线协议 CAN总线协议规定了ISO七层通信协议模型的物理层和数据链路层.其具体实现都已经被固化到CAN总线控制芯片中,无需软件实现.理论上,CAN总线在速率小于5K时,距离可达10000m ...

  8. 谈谈CANopen协议的机制

    CANopen是基于CAN协议的高级通信协议和设备配置文件规范.该协议是为嵌入式网络应用(如车载网络)开发的.CANopen涵盖了网络编程框架,设备描述,接口定义和应用程序配置文件.CANopen使来 ...

  9. 基于CANOpen协议驱动直流无刷减速电机

    1.硬件连接 硬件连接没什么复杂的,就连接对应的线即可,下面是我画的一个简单的电气连接图 2.上位机配置 上位机主要配置驱动器节点ID,波特率,心跳,CAN驱动.我用的是科亚的上位机和蓝玖的电机.使用 ...

最新文章

  1. 综述:AI系统安全的实用方法介绍
  2. oracle case when及decode的用法
  3. 在Activity的Title中加入进度条
  4. 如何更改 C# Record 构造函数的行为
  5. jpa 查询编写sql_学习编写基本SQL查询
  6. MSSQL自增字段默认值
  7. 英伟达美女工程师:AI从业者要不要读博?要不要自己创业?
  8. WPF动态改变主题颜色
  9. Win10的 IntelliJ idea中log4j2控制台中文乱码的几种处理方法
  10. 两个栈实现队列,两个队列实现栈
  11. 全面解析用户故事地图
  12. 皮尔逊相关系数_皮尔逊相关系数(Person)
  13. 中国互联网大人物直播简史
  14. 计量经济学计算机第1章习题,计量经济学第1章习题.pdf
  15. 深度学习环境安装之显卡驱动程序安装
  16. 【Python】完美解决Pycharm网站无法访问问题
  17. HTML系统学习(1)
  18. import绝对路径问题
  19. LCD1602液晶显示屏用51单片机怎么驱动?(详细笔记附设计源码)
  20. JavaWeb自学笔记,ServletAPI编程常用接口和类

热门文章

  1. php处理抢购类功能的高并发请求,php处理抢购类
  2. 存储-对象存储、文件存储和块存储
  3. IOS APP资源网站汇总
  4. scratch2.0 求救电话问答
  5. Python 变量作用域问题 函数名.变量名
  6. 瑞典皇家理工学院计算机,瑞典皇家理工学院
  7. 华为mate50os鸿蒙,华为Mate50将如期发布,屏下镜头+鸿蒙OS,再见iPhone12
  8. 计算机设备系统包括哪些,计算机硬件系统包括哪些
  9. 一加官方证实保留耳机插孔,全面屏新品命名一加5T
  10. 百事可乐AI人工智能生产过程破光