【CANopen】CANopen协议讲解


前言

CAN通信广泛应用于汽车电子、电机控制等工业领域,最近在使用的电机驱动器支持CANopen协议,本文将对CANopen协议的基础知识进行分析总结,通过CANopen协议实现控制器与驱动器间的通信,并控制电机运动。


一、CANopen介绍

在这里插入图片描述

CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支持网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实现。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实现 CANopen 的设备子协定。
CANopen由非营利组织CiA(CAN in Automation)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。

本文主要介绍的是Cia402协议,其在电机的运动控制方面有着广泛应用。


二、基本概念介绍

  1. COB-ID
    COB-ID是设备之间通过通信的CAN ID,每条报文中都具有COM-ID,其中不仅仅包含了设备ID,还可以表征报文类型。例如客户端发送SDO报文的COB-ID为0x601,其中0x600表征报文类型,0x01表示设备ID,0x600+0x01得到完整COB-ID。

  2. 对象字典
    CANopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典中每一个对象对应于一个16bit索引和8bit子索引(部分对象没有子索引,或者认为子索引为0),其属性包括是否可读以及是否可写,对象字典的长度可以是8bit、16bit和32bit。
    对象字典可以类比STM32的寄存器,对象字典的索引对应寄存器地址,对象字典中的保存的数据就是驱动器的参数配置及状态,例如运动控制模式、当前位置、当前电流值等,可以通过写入对象字典对控制器的控制参数进行配置,也可以通过读取用户字典来获得当前驱动器的状态信息。

  3. SDO通信
    SDO,服务数据对象,用于读写其他节点的对象字典。在SDO通信中,发起数据的读取和写入的设备称为client,被读取和写入对象字典的设备称为server。SDO通信的功能就是向某个设备的对象字典中写入数据,或者读取设备对象字典的值,报文格式为:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    SDO报文需要应答。当客户端发送报文,该报文以0x600+设备ID作为COB-ID,数据段的第0字节表示传输类型,如果是写对象字典请求,第0字节还应表示写入的数据长度,该长度应该与要写入的对象字典数据长度对应。第1、2字节为索引,第1字节中填充索引的低字节,第2字节填充索引的高字节(这和常用的数据记录规则是相反的,记数时通常高字节写在左侧),同时根据CAN协议可知,CAN在发送数据时先发送最高位。第3字节为子索引,后面4个字节用于填充需要写入字典的数据,没有使用到的字节建议填充0。当服务器接受到写字典的SDO报文后,会发送以0x580+设备ID为COB-ID的应答报文,根据回传报文的字节0可以判断通信是否正确。若服务器收到的是读字典请求,则应答SDO报文中的数据段为请求访问的对象字典数据。这里读取和写入用户字典的SDO报文。可类比CAN通信中的数据帧和远程帧。并且SDO支持区块传输,可以传输大量数据。

  4. PDO通信
    PDO,过程数据对象,用于快速访问对象字典,起作用和SDO类似,只是实现方法不同。SDO在每次发送报文时,都需要指定需要读写的对象字典的索引和子索引,以灵活地对任意对象字典进行访问,同时SDO应答报文保证了数据传输的准确性。PDO通信不需要应答,在使用PDO通信之前,需要实现配置PDO通信通道的参数对象和映射对象,其分别决定了PDO通信的参数配置和PDO访问的对象字典,配置好后使能PDO,就可以快速地按照配置好的规则,对指定的对象字典进行读写。可见,与SDO相比,PDO的灵活性较差,每次改变读写的对象字典之前都需要重新对PDO进行配置,但由于其不需要应答,且PDO传输的数据长度最多为8字节,其传输效率更高。PDO的通道配置如下:
    在这里插入图片描述
    由于PDO数据传输是单向的,所以根据传输方向分成了RxPDO和TxPDO,其中RxPDO用于服务端接收客户端的数据,对对象字典进行写入操作,TxPDO用于向服务端向客户端发送数据,读取服务端对象字典的数据。
    上图中RxPDO和TxPDO各具有4个通道,并且每个通道具备独立的通信对象和映射对象。通信对象中存储有通信的配置,如该通道使用的COB-ID、是否为同步传输、禁止时间等,具体可见数据手册。映射对象为通道所访问的对象字典,其存储了1-8个对象字典中的对象,在进行PDO通信时,直接对该通道的映射对象中的对象进行读写操作。映射对象类似指针,指向了最终被读写的对象。注意在使用RxPDO对对象字典进行写入操作时,PDO报文的数据段需要与所配置的映射对象的数据长度相对应。

  5. NMT网络服务
    网络管理系统(NMT)负责初始化、启动及停止网络和网络中的设备,属于主从系统。
    CANopen网络中有且只有一个NMT主机,可配置包括本身在内的CANopen网络。CANopen按照协议规定的状态机执行相应工作。其中,部分为内部自动转换,部分必须由NMT主机发送NMT报文实现转换,状态机转换具体如下图
    在这里插入图片描述
    CANopen设备在上电后会自动进行初始化、复位节点和复位通信的功能,进入预操作状态,需要使用NMT指令使设备进入运行状态,才可以正常工作。NMT报文格式为:
    在这里插入图片描述
    其中Node-ID为0时为广播,对所有总线设备均有效。
    在这里插入图片描述
    不同网络状态下,设备可以进行的操作也不同,如下图。注意在预操作状态下时不能进行PDO通信的。
    在这里插入图片描述

  6. 同步对象
    同步对象(SYNC)是控制多个节点发送与接收之间协调同步的一种特殊机制,用于PDO的同步传输。即当总线上某个设备配置了同步发生器后,其会以指定的时间周期发送同步报文,其他设备根据所收到的同步报文的个数决定是否进行PDO传输。


三、CIA402状态机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
状态机定义了设别的多种状态以及状态之间的逻辑关系,其中Operation Enable是设备的正常工作状态。状态的改变是通过更改对象字典中0x6040控制字实现的。同时,随着对0x6040进行配置,设备的状态会更新到状态字,其索引为0x6041。所以可以通过PDO或SDO指令,修改控制字的值进行状态变更,并通过读取状态字的数据确定当前所处的状态。当控制字改变后,状态会进行更改并更新状态字。
在这里插入图片描述
在这里插入图片描述


四、例子

以下报文按照“COB-ID /Data”的格式进行展示,设备ID为1

  1. NMT管理,广播进入运行状态
    000 / 0100
  2. SDO读取状态字(index 0x6041 sub-index 0x00)
    601 / 40 41 60 00 00 00 00 00
  3. SDO读取控制字(index 0x6040 sub-index 0x00)
    601 / 40 40 60 00 00 00 00 00
  4. SDO配置控制模式(index 0x6060 sub-index 0x00 数据长度1byte 模式数据4)
    601 / 2f 60 60 00 04 00 00 00
  5. RxPDO2修改目标转矩为1(目标转矩的对象索引已经提前配置到RxPDO2的映射对象中 目标转矩对象数据长度为2byte)
    301 / 01 00

### 回答1: Canopen协议是一种通信协议,用于实现CAN总线控制器之间的通信。Canopen协议详解pdf是一份专门介绍Canopen协议的电子书,它详细讲解了Canopen协议的定义、通信对象、通信过程、应用领域等方面的内容。 该电子书首先介绍了Canopen协议的基本概念和历史背景,然后详细讲解了Canopen协议中的各种通信对象,例如节点、对象字典、数据类型等等,同时还介绍了Canopen协议中的各种通信过程,例如同步传输、异步传输、远程过程调用等等。 Canopen协议详解pdf还介绍了Canopen协议的应用领域,例如工业自动化、机器人控制、医疗设备、交通运输等等,并列举了一些实际应用案例,让读者更好地了解Canopen协议在实际生产中的应用价值。 除了介绍Canopen协议本身外,该电子书还介绍了Canopen工具的使用方法,例如Canopen分析仪、Canopen网络配置工具等等。这对于学习和实践Canopen协议的读者具有非常大的参考价值。 总的来说,Canopen协议详解pdf是一份非常权威和详细的Canopen协议介绍资料,可以帮助读者深入了解Canopen协议的定义、实现和应用,对于从事CAN总线控制器相关工作的工程师、研究人员和学生都具有很高的参考价值。 ### 回答2: Canopen协议是一种用于工业领域的通信协议,它是基于CAN总线技术的一种高级通信协议。该协议是由欧洲机器制造商协会(EUROMAP)和CAN in Automation(CiA)联合制定的,旨在满足各种工业应用领域的通信要求。本文将详细介绍Canopen协议详解 pdf。 Canopen协议采用了多节点通信的架构,每个节点都能够相互通信以及组成网络。该协议在通信速度、通信可靠性以及安全性方面具有很强的优势,它能够为工业领域提供高效率、高稳定性和高安全性的通信服务。 Canopen协议详解 pdf中包括了如下内容: 1. Canopen协议的主要特点,包括多节点通信、高速度通信、高可靠性通信等。 2. Canopen协议的通信方式和协议结构,包括数据帧格式、通信协议、节点地址、报文类型等。 3. Canopen协议的应用领域和应用场景,包括工业控制、机器人控制、自动化生产线、能源管理等。 4. Canopen协议在应用中需要注意的问题和解决方案,包括如何配置节点、如何调试节点、如何诊断节点等。 总体来说,Canopen协议详解 pdf提供了非常详尽的介绍和解释,对于工业自动化和通信领域的从业人员来说,是一份非常宝贵的参考资料。 ### 回答3: CANopen是一种控制器局域网(CAN)的高层协议,它允许硬件和软件的设备相互通信,建立实时的数据通讯。CANopen协议详解pdf是一份介绍CANopen协议的文档,以提供读者更深入的对CANopen协议的理解。 该文档首先介绍了CANopen在汽车和工业领域的应用,以及CANopen网络结构、通讯基本原则等基础知识。随后,详细阐述了CANopen协议中各个对象的定义,如消息传输对象(PDO)、同步对象(SYNC)、过程数据对象(SDO)等,以及状态字(Status Word)的定义。 此外,该文档还介绍了CANopen协议中的网络管理功能,例如心跳、预定义错误处理、故障复位等。最后,该文档还详细讨论了CANopen协议在实际工业应用中的一些案例,以及如何使用CANopen协议与现有的工业网络进行通讯。 综上所述,CANopen协议详解pdf通过多个方面对CANopen协议进行了详细介绍,使读者可以更全面的了解和应用CANopen协议,为工业自动化成果的实现提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值