CANopen协议解读

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

一、协议标准

  以官方的CiA 301-4.2.0基础协议为解读学习标准,同时找到了基于CiA 301标准的通用I/O设备标准的CiA 402,是中文翻译版,还有ZLG多年前发布的CANopen轻松入门作为参考学习,话不多说,接下来就开始进行学习记录吧。
  CiA 301中使用的是仲裁域ID为11Bit的标准帧格式,并且发送与接收都是以从机视角来说的,对于多字节数据都是小端模式,即低字节先发送,以下的学习都以此为基础。

二、CANopen报文说明

  对CANopen协议内容理解前需要大概了解CANopen都有哪些类型的报文,可以对CANopen有一个大概的了解,以下列举了CANopen的常用报文:

报文类型 报文说明
NMT CMD(网络管理命令) 由网络主机发出,控制各从机设备工作模式
NMT 心跳报文 由网络从机发出,包括上线通知与定时上报从机工作状态
PDO 过程数据对象,单向传输,无需接收节点回应
SDO 服务数据对象,主要用于参数配置,每一条信息都有回应
Sync 特殊报文的一种,由主机发出,主要用于整个网络的同步传输
Time-Stamp 特殊报文的一种,由主机发出,主要用于整个网络的时间同步
Emergency 特殊报文的一种,当从机发生内部错误,用于通知主机

三、CANopen协议内容

1. ID的理解

  在CANopen中有下面这几种ID,COB-ID、Node-ID,那么这两个ID又是什么呢?和CAN BUS的仲裁域的ID(以下用CAN-ID代替)又有什么关系呢?
  首先,我们知道CAN-ID是CAN BUS控制器做仲裁、优先级判断使用的,CAN-ID越小优先级越高;而COB-ID(Communication Object Identifier)通信对象报文帧ID,我们可以认为COB-ID就是实际使用的CAN-ID。

  Node-ID就是从机节点的编号,在对指定从节点控制时需要使用到,其中PDO与SDO比较特殊(下面会说PDO和SDO,这里知道有这个东西就好),CiA301标准也直接进行了定义,将COB-ID的高4Bit定义为功能码,低7Bit为Node-ID,所以Node-ID的最大数量就是128个各节点,但是由于0不推荐使用,实际节点数量也就127个(1-127)。

  在CANopen协议中,定了一部分重要的COB-ID,下面我就列举比较常用的一些COB-ID,以便日后我查找。

通讯对象 COB-ID
NMT CMD(网络管理命令) 000h
NMT心跳报文 700h + Node-ID(701h - 77Fh)
Sync(同步报文) 080h
Emergency(紧急报文) 080h + Node-ID(081h - 0FFh)
Time stamp(时间戳报文) 100h
TPDO1(发送过程数据对象 1) 180h + Node-ID(181h - 1FFh)
RPDO1(接收过程数据对象 1) 200h + Node-ID(201h - 27Fh)
TPDO2(发送过程数据对象 2) 280h + Node-ID(281h - 2FFh)
RPDO2(接收过程数据对象 2) 300h + Node-ID(301h - 37Fh)
TPDO3(发送过程数据对象 3) 380h + Node-ID(381h - 3FFh)
RPDO3(接收过程数据对象 3) 400h + Node-ID(401h - 47Fh)
TPDO4(发送过程数据对象 4) 480h + Node-ID(481h - 4FFh)
RPDO4(接收过程数据对象 4) 500h + Node-ID(501h - 57Fh)
TPDO4(发送过程数据对象 4) 480h + Node-ID(481h - 4FFh)
SDO server->client(服务数据对象-答) 580h + Node-ID(581h - 5FFh)
SDO client->server(服务数据对象-问) 600h + Node-ID(601h - 67Fh)

2. NMT

  NMT(Network Management)网络管理,为了保证CANopen网络中的可靠、可控,设计了NMT,整个CANopen网络中有且只有一个NMT主机,一个或多个NMT从机,与NMT相关的报文,比较重要的有节点状态控制(仅NMT主机)、节点错误控制、节点守护、节点上线、节点心跳报文,由于节点守护使用的是轮询方式,开销较大,已经不建议使用,所以下面也就不进行介绍了。

(1) 节点状态

  CANopen中的NMT节点的节点状态有6种状态,分别是:

  1. 初始化:在节点上电后,对CAN控制器的初始化操作;
  2. 应用层复位:节点的应用层程序复位;
  3. 通讯复位:节点的CANopen通讯复位;
  4. 预操作状态:节点的预操作状态,表示节点已经完成了初始化、CANopen通讯相关配置可以进行SDO与NMT网络管理操作了,但是处于这个状态的节点不可以进行PDO操作;
  5. 操作状态:此状态可以由节点自主进入或由NMT主机切换进入,在此状态下,可以进行SDO、PDO等数据传输;
  6. 停止状态:此状态由NMT主机切换进入,仅可以进行SDO与NMT网络管理操作。
报文类型 预操作 操作 停止
PDO
SDO
SYNC
TIME
EMCY
Node Ctrl
Err Ctrl

  节点状态切换以及切换回路如下所示:

过程编号 切换触发条件
(1) 设备上电或者复位后自动进入
(2) 初始化完成,自动进入NMT预操作状态
(3) 通过配置自动进入或由NMT服务主机设置操作状态进入
(4),(7) 通过NMT服务主机设置预操作状态进入
(5),(8) 通过NMT服务主机设置停止远程节点进入
(6) 通过NMT服务主机设置启动远程节点进入
(9),(10),(11) 通过NMT服务主机设置复位远程节点进入
(12),(13),(14) 通过NMT服务主机设置远程节点通讯复位进入

  节点状态初始化切换回路如下所示:

过程编号 切换触发条件
(1) 设备上电或者复位后自动进入
(2) 初始化完成,自动进入NMT预操作状态
(12),(13),(14) 通过NMT服务主机设置远程节点通讯复位进入
(9),(10),(11) 通过NMT服务主机设置复位远程节点进入
(15) 初始化完成后自动进入复位应用程序
(16) 复位应用程序完成后自动进入通信复位重置

(2) 节点状态控制

  NMT CMD网络管理命令只能由NMT主机发出,NMT主机可以对NMT从机节点进行初始化状态以外的5种状态配置,NMT节点控制协议如下表:

COB-ID DATA0 DATA1
000h CS Node-ID

  CS就是配置对应节点的状态参数,有以下5种:

CS 说明
00h 启动远程节点,即将远程节点状态设置为操作状态
02h 停止远程节点,即将远程节点状态设置为停止状态
80h 远程节点进入预操作,即将远程节点状态设置为预操作状态
81h 远程节点复位,即将远程节点状态设置为应用层复位状态
82h 远程节点通讯复位,即将远程节点状态设置为通讯复位状态

(3) 节点心跳报文

  节点心跳报文包括两类,一类是节点上线报文与周期上报从节点状态的心跳报文,报文协议如下:

COB-ID DATA0
700h+NodeId STATE

  STATE就是对应节点的状态参数,有以下4种:

STATE 说明
00h 从节点上线
04h 从节点处于停止工作状态
05h 从节点处于操作工作状态
7Fh 从节点处于预操作状态

未完待续…

CANopen协议解读相关推荐

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

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

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

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

  3. CANopen | 移植01 - STM32H743 + Canfestival的移植并让FDCAN1运行CANopen协议

    文章目录 一.前言 二.移植前的准备 三.移植 3.0.移植的目的 3.1.工程的实际硬盘上添加文件夹 3.2.往bsp文件夹放入bsp代码 3.3.往canfestival里放入源代码 3.4.往o ...

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

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

  5. 3gpp协议_3GPP都在干什么(16)?:3GPP中网络切片原理及协议解读

    本文归属于<3GPP在干什么>系列.全文71页PPT.(此系列是春天工作室一大IP(品牌),主要是协议解读.标准化进展梳理,新技术跟踪等). 今年我们会投入较多的时间和精力,重点研究和跟踪 ...

  6. CANopen协议及应用

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

  7. CANopen协议介绍

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

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

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

  9. CANopen协议基础知识

    CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...

最新文章

  1. 实现SSTab单个选项卡代码
  2. python 元组传参 *args 字典传参 **kwargs 的用法
  3. Java 最坑爹的 10 大功能点!
  4. Py之cupy:cupy的简介、安装、使用方法之详细攻略
  5. 前端 --- 关于DOM的介绍
  6. Angular 8正式发布!
  7. ionic 上拉加载更多
  8. Android:自定义标题栏
  9. python 翻译库本地库_利用python爬取并翻译GEO数据库
  10. 26.leetcode160_intersection_of_two_linked_lists
  11. 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
  12. Vue + Element 前端调用后端接口获取微信支付二维码和支付宝支付二维码
  13. CDR服装设计-旗袍款式图
  14. SpringBoot自动装配的魔力
  15. 互联网保险投诉量翻倍 众安与安心财险上榜
  16. win10商店打不开_win10自带的照片查看器打不开的修复方法
  17. 中缀表达式转后缀表达式两位数_什么是圆形磁动势?永磁无刷电机是怎么转起来的?...
  18. 网络营销的多种表现形式
  19. C++高阶 RAII机制(以对象管理资源)
  20. 用计算机浮点数表示法计算,计算机组成原理第4章浮点数运算方法ppt课件

热门文章

  1. 刚读博一,她一作登上Nature子刊!
  2. 本地同城小程序开发需要具备什么功能
  3. c语言坐标反算方位角函数,反三角函数/简易正反算or方位角转度分秒
  4. 蒙太奇服务器维修,蒙太奇服务器多台互连导片方法.pdf
  5. 使用certbot-auto脚本安装Certbot 生成https证书
  6. 画坦克__坦克可移动
  7. 不花里胡哨看电脑主板支持最大内存与频率
  8. GVRP-LNP-VCMP讲解
  9. 备赛全国阳光健身健美大赛训练记录(粗略)
  10. 小学四年级计算机制作月历教案,冀教版信息技术四上第1课《制作月历》教案1.doc...