CANopen协议解读

一、协议标准

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

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

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

(3) 节点心跳报文

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

COB-IDDATA0
700h+NodeIdSTATE

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

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

未完待续…

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CANopen协议文档是描述CANopen协议的一份文件,用于指导CANopen网络的设计、配置和实施。CANopen协议是基于CAN总线的开放式通信协议,用于在工业自动化和机器控制系统中实现设备之间的通信。 CANopen协议文档主要包括以下内容: 1. 协议介绍:文档会对CANopen协议的发展背景、目的和重要性进行介绍,以便读者理解该协议的应用领域和价值。 2. 协议结构:文档会详细描述CANopen协议的结构和层次,包括物理层、数据链路层、网络层和应用层。每个层级的功能和特点会被解释和说明,以便读者了解协议的组成部分和通信流程。 3. 对象字典:文档会列出CANopen协议中使用的对象字典,并解释每个对象的作用和属性。对象字典是CANopen协议中的核心概念,用于定义设备的功能和参数,读者可以根据文档中的说明进行对象字典的配置和应用。 4. 通信机制:文档会介绍CANopen协议中的通信机制,包括消息传输、节点控制和网络管理等方面。读者可以通过文档了解CANopen协议的通信规则和操作方法。 5. 应用示例:文档会提供一些实际应用场景的示例,以便读者理解CANopen协议在不同领域的应用方式和效果。 总之,CANopen协议文档是一份详细的指南,用于向读者介绍CANopen协议的基本概念、实现方法和应用技巧。通过阅读和理解这份文档,读者可以更好地使用和应用CANopen协议,实现设备之间的高效通信和协同工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值