【CANopen】CANopen总线讲解


STM32全部教程【STM32】标准库与HAL库对照学习系列教程大全

一、前言

前面讲解了CAN总线的一些基础内容,这里来讲解一些在CAN总线的基础上提供的CANopen协议

CAN总线协议讲解与应用:【STM32】标准库与HAL库对照学习教程十四–CAN总线


二、CANopen概述

CANopen 是在 CAL 基础上开发的,使用了 CAL 通讯和服务协议子集,提供了分布式控制系统的一种实现方案。CANopen是CAN的一种应用层协议
CANopen 的核心概念是设备对象字典(OD:Object Dictionary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。

注:对象字典不是 CAL 的一部分,而是在 CANopen 中实现的。

CANopen协议是免许可证的,任何组织和个人都可以开发支持CANopen协议的设备而不用支付版税

2.1 CANopen网络模型

在这里插入图片描述

2.2 CANopen常见规范

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

三、CANopen对象字典

对象字典(OD)英文名Object Dictionary,你可以理解为C语言中的数据地址,或者设备的地址,CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。
所有的参数、参数值和功能都是通过16位索引值(index)和8位子索引(sub-index)组成的地址来访问和存取。如下表所示。

名称IndexSub_IndexBits属性含义
Controlword60400010RW设备状态控制字
Modes of Operation60600008RW工作模式
Target_position607A0020W目标位置

每个CANopen设备都有一个对象字典,使用电子数据文档(EDS:Electronic Data Sheet文件)来记录这些参数,而不需要把这些参数记录在纸上。

对象字典中描述通讯参数部分对所有CANopen设备都是一样的。其通用结构如下图所示。
在这里插入图片描述


四、CANopen通讯标识符

在我们学CAN通信的时候,知道我们靠设备ID识别不同种类的设备,CANopen里对ID进行了细化与规定,CANopen中的通信标识符(ID)叫做CAN-ID,通常把 CAN-ID 称为 COB-ID(通信对象编号)。

  • 每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符。

  • COB_ID越小报文优先级别越高。CANopen的COB_ID范围从0-77F。

  • COB_ID包括功能段(FUNCTION)地址段(NODE-ID)

如下图所示:
在这里插入图片描述

Node-ID由系统集成商定义。Node-ID范围是1~127(0不允许被使用)


五、CANopen协议概述

5.1 CANOpen协议报文分类

  • NMT 网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。
  • SDO 服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。
  • PDO 过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。
  • EMCY 紧急报文,作用是传输设备的故障信息。主站和从站都会发送。
  • SYNC 同步报文,作用是同步数据,用来同步从站的TPDO数据。一般由主站发送。比如从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。这个在后续的文章中详细阐述。
  • NODE GUARDING 节点保护报文,作用是主站请求从站的状态,主站询问,从站应答。这种模式逐渐已被淘汰,因为太占CAN总线网络带宽。
  • HeartBeat 心跳报文,作用是设备主动发送心跳,表示自己在线。主站和从站都可以发送。

5.2 CANopen状态机

CANOpen节点共包括:初始化、预操作、操作、停止这四个状态。状态机可以通过NMT服务相互切换,如下图所示。
在这里插入图片描述
在这里插入图片描述

5.3 CANopen数据帧格式

CANopen的数据帧格式如下图所示。
在这里插入图片描述
每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符,DLC表示传输多少个字节数据,Data表示传输的数据,最多8个字节。


六、NMT管理报文

  • 只有 NMT-Master 节点能够传送 NMT Module Control 报文。所有从节点必须支持 NMT 模块控制服务。
  • NMT Module Control 报文不需要应答。NMT 报文格式如下:
    在这里插入图片描述
    当Node-ID=0x0000时,则所有的NMT从站设备被寻址。CS是命令字,取值及含义如下:
    在这里插入图片描述

七、NODE GUARDING 节点保护报文

通过节点保护报文,NMT主节点可以监视每个从节点的当前状态

  • 主节点周期性的发送报文去询问从节点的状态,从节点收到主节点的问询后将自己的状态回复给主节点,在设定的时间内如果主节点没有收到从节点的信息或信息错误都会判断从节点通讯故障。
  • 主节点发送远程帧(只有COB-ID,无数据)
    在这里插入图片描述
    Bit7为触发位,在每次节点保护应答中交替“0”和“1”,在第一次节点保护时置0。
    在这里插入图片描述

注意:带*号的需要支持扩展BOOT-UP的节点才提供,状态0从不在节点保护中出现,因
为从节点在初始化状态中是不会应答报文的


八、HeartBeat 心跳报文

一个节点还可被配置为产生周期性的被称作心跳报文(Heartbeat)的报文,从节点周期将该报文发送给消费者,消费者可以通过报文中的状态值得知从节点的状态。结构如下图所示。
在这里插入图片描述
注:
1、心跳报文(HeartBeat)的消费者通常是主节点,它为每一个心跳节点设置一个超时时间,当超时是采取相应的动作。
2、一个节点不能同时使用节点保护报文和心跳报文。


九、BOOT-UP 节点启动报文

从节点(NMT-slave)发布Boot-UP报文通知主节点(NMT-Master)它已经从初始化状态(initialising)进入预准备(pre-operational)状态。如下图所示。
在这里插入图片描述


十、EMCY 紧急报文

紧急报文当设备内部出现的致命错误触发,以最高优先级发送到其它设备。适用于中断类型
的错误报警信号。一个紧急报文包含8个字节,报文格式如下:
在这里插入图片描述
Byte0-1,16 进制的应急错误代码如下表所示。应急错误代码中‘xx’部分由相应的设备子协议定义。
在这里插入图片描述
Byte2 错误寄存器:错误寄存器(Error Register)在设备的对象字典(索引 0x1001)中,下表说明了错误寄存器的位定义。设备可以将内部错误映射到这个状态字节中,并可以快速查看当前错误。

BitIndex
0通用的(generic)
1电流(current )
2电压(voltage)
3温度(temperature)
4通信(communication)
5设备配置文件特性(device profile specific)
6Reserved(=0)
7制造商特性(manufacturer specific )

十一、SDO 服务数据对象报文

  • 主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如用来修改速度环、位置环的PID参数,PDO配置参数等。
  • 通过使用索引和子索引SDO使客户机能够访问设备对象字典中的对象。
  • 通常情况下传输的数据长度不超过4个字节,当数据长度超过4个字节是分拆成几个报文。
  • 议是确认服务类型:每个消息生成一个应答。SDO请求和应答报文总是包含8个字节。

SDO中的COB-ID定义规则如下:
在这里插入图片描述

SDO读报文如下:
在这里插入图片描述
命令字:0x40
在这里插入图片描述
在这里插入图片描述
SDO写报文如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SDO通讯失败,从站回复报文如下:
在这里插入图片描述
后4个字节是被称为是中止代码,通过中止代码能得知出错的原因。中止代码如下:
在这里插入图片描述


十二、PDO 过程数据对象报文

  • 用来传输实时数据,数据从一个生产者传到一个或多个消费者。1个PDO1次最多传输8个字节的数据
  • 每个PDO在对象字典中用2个对象描述:
    • PDO通讯参数:包含COB_ID,传输类型,禁止时间,定时器周期。
    • PDO映射参数:包含对象字典中对象列表,这些对象映射到PDO里,包含数据长度。生产者和消费者根据映射的地址解释PDO内容。
  • 报文内容是预定义的(或者在网络启动时由主配置)

12.1 PDO参数

  • 发送PDO通讯参数(1800h-19FFh)和接收PDO通讯参数(1400h-15FFh)
  • PDO通讯参数说明了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据
  • PDO禁止时间:两个连续PDO传输的最小间隔时间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。禁止时间由16位无符号整数定义,单位为1ms
  • PDO定时周期:当超过定时时间后一个PDO可以被触发,周期有16位无符号数定义,单位1ms

12.2 PDO的COB-ID

在这里插入图片描述

12.3 PDO的传输类型

  • 同步(通过接收SYNC对象实现同步)
    • 非周期:由远程帧预触发传送,或者由设备子协议规定中的对象特定事件预触发传送
    • 周期:传送在每1到240个SYNC消息后触发。
  • 异步
    由设备协议中规定的对象特定事件触发传送。

图表如下:
在这里插入图片描述

12.4 PDO映射

  • 说明了PDO中所包含的通讯对象,决定了发送或接收的数据内容
  • 传输映射(1A00h-1BFFh)
  • 接收映射(1600h-17FFh)

12.5 PDO报文

在这里插入图片描述


十三、SYNC 同步报文

同步报文的CAN-ID固定是0x80,数据长度是0或1。同步报文是生产者消费者模型,由主站发出,同步从站的TPDO。
在这里插入图片描述

  • 通讯循环周期:索引1006h,规定了同步帧的循环周期
  • 同步窗口时间:索引1007h,约束了同步帧发送后从节点发送PDO的时效,即在这个时间内发送的PDO才有效超过时间的PDO将被丢弃

同步报文的数据帧如下:
在这里插入图片描述
同步报文的作用:

  • 同步报文用于控制TPDO(如实际位置,状态字)的发送;
  • 同步报文用于控制RPDO(如目标位置)的激活;
  • 同步报文用于同步各个节点的时钟。

传输类型:

  • 0非循环
  • 1-240的传输类型就是指经过多少个同步报文后,发送TPDO
    在这里插入图片描述
    伺服周期性同步位置模式(CSP)原理:
  • 伺服工作在7号插补模式,上位控制器完成位置指令规划,然后将规划好的目标位置607A以周期性同步的方式发送给伺服驱动器。控制器发送目标位置的周期必须是伺服驱动器位置环周期的整数倍。
  • 控制器周期性的发送同步报文,比如1mS,2mS或者4mS等,驱动器主动通过微调自身控制环频率将控制环(电流环、速度环、位置环)和同步信号同步,从而实现多个驱动器同步工作。
  • 控制器发送RPDO给各个驱动器,比如目标位置,在下一个同步报文到来后,驱动器将指令激活,所有的驱动器同时更新指令,从而实现同步。
  • 在运行同步工作模式的时候,SDO和TPDO也是允许的,但是发送的时机是需要检测的。因为RPDO是最重要的数据,必须优先保证RPDO的接收,然后在空闲时间才可以发送SDO和TPDO。一个比较合理的排列是:同步周期里面,前半时间用于SDO以及TPDO的发送,后半时间用于RPDO的接收。
  • 驱动器接收到设定位置后与当前位置比较,并依据控制器的周期与伺服位置环周期的倍数进行线性或非线性插值,将插值作为每个位置环周期的“设定位置”。

在这里插入图片描述

  • 17
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: CanOpen 是一种通信总线标准,通常用于工业控制领域。它是一个基于 CAN 协议的开放式系统,旨在提供一个简单而灵活的方法来控制多种不同的设备。 CanOpen 具有易于实现和使用的特点,因此在工业控制领域非常受欢迎。 ### 回答2: CANopen是一种基于CAN(Controller Area Network)总线技术的通信协议。CAN总线是一种高可靠性、实时性强的通信总线,广泛应用于工业自动化领域。而CANopen是在CAN总线的基础上,进一步定义了一套标准的通信协议与通信对象,用于实现各种设备之间的通信与数据交换。 CANopen采用了分布式的通信结构,可以支持多个设备同时进行通信。它基于对象字典的概念,将数据以对象的形式进行封装,通过特定的CANopen消息分组传输。每个设备都有自己的对象字典,用于管理和描述设备的功能和状态。通过读取和写入对象字典中的数据,设备之间可以实现信息的交互。 CANopen协议还定义了一些标准的网络管理和设备配置功能,包括设备的连接与断开、节点的心跳检测、数据的同步等。这些功能使得CANopen系统能够更加稳定、可靠地运行。 CANopen广泛应用于工业机械、自动化设备、仪器仪表等领域,可以实现设备的远程监控与控制。它具有高实时性、抗干扰能力强、数据传输可靠等特点,广受工业领域的认可和采用。 总之,CANopen是一种基于CAN总线技术的通信协议,通过定义标准的通信协议与通信对象,实现设备之间的数据交换与通信。它在工业自动化领域得到广泛应用,并具有高可靠性、实时性强等特点。 ### 回答3: CANopen是一种用于工业自动化领域的通信协议和总线系统。它基于CAN(Controller Area Network)总线技术,被广泛应用于机械设备、汽车、电子设备等领域。 CANopen总线系统具有以下特点:首先,它是一种开放的、标准化的协议,由国际CANopen联盟(CAN in Automation)进行维护和开发。这意味着CANopen的规范和文档可供公众免费获取,任何厂家和开发者都可以基于这些规范进行开发和生产,从而实现设备之间的互操作性。 其次,CANopen总线系统具有高度的可扩展性和灵活性。它提供了一套丰富的对象字典,包括了设备的参数、状态、控制等信息,通过这些对象字典,可以实现对设备的配置和监控,同时也可以进行数据的交换和通信。因此,CANopen总线系统可以满足不同设备、不同应用场景下的通信需求。 此外,CANopen总线还具有实时性和高可靠性的特点。CAN总线本身就具备实时性,而CANopen协议在其基础上给予了更高的实时性保证。它采用了事件驱动的通信方式,支持多种通信对象和通信机制,可以进行精确的数据传输和同步控制,适用于对实时性要求较高的应用。 总的来说,CANopen总线技术具有开放性、高扩展性、灵活性、实时性和可靠性等优点,因此在工业自动化领域得到了广泛应用,为设备之间的通信和控制提供了可靠的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修成真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值