请注意,这只是一个概述,实际的 CANopen 对象字典可能在不同设备之间有所差异。上述表格给出了一些主要范围,而具体的对象定义和数据结构将根据设备制造商和设备类型而有所不同。
通信子协议区,如上图1000h 到 1FFFh这个区域。也就是通信接口(或通信对象)协议区。
Index Range | Description |
---|---|
1000h to 1029h | General communication objects 通用通讯对象 |
1200h to 12FFh | SDO parameter objects 参数对象 |
1300h to 13FFh | CANopen safety objects 安全对象 |
1400h to 1BFFh | PDO parameter objects PDO参数对象 |
1F00h to 1F11h | SDO manager objects SDO管理对象 |
1F20h to 1F27h | Configuration manager objects 配置管理对象 |
1F50h to 1F54h | Program control object 程序控制对象 |
1F80h to 1F89h | NMT master objects 网络管理主机对象 |
子协议也划分了几个区域,需要用到的时候配置即可。(本小结摘抄自电子发烧友文章https://www.elecfans.com/d/1153559.html,详细的子协议配置包括对象字典生成可以到这里看)
CANopen 通信对象和服务数据对象(SDO)
CANopen 通信对象(Communication Objects)是在CANopen网络中用于在设备之间交换信息的基本元素。这些对象包括用于控制、状态、过程数据等的不同类型。
服务数据对象(SDO)是CANopen中一种特殊的通信对象,用于通过网络读取或写入设备参数。SDO提供了一种机制,使得可以直接访问设备对象字典中的数据。SDO通常用于配置、诊断和管理CANopen设备。
1. SDO 的工作原理和消息结构
SDO工作原理:
步骤 | 描述 |
---|---|
1. 请求(Client to Server) | SDO客户端向SDO服务器发送请求,请求可以是读或写。请求消息包括目标设备的节点ID、索引和子索引、数据类型等。 |
2. 响应(Server to Client) | SDO服务器接收到请求后,执行相应的操作。响应消息包括确认信息、实际数据(如果是读请求)等。 |
SDO消息的组成方式根据CANopen协议的规范,以及设备制造商的具体实现而有所不同。然而,通常情况下,SDO消息可以分为两个主要部分:SDO头部和SDO数据区。
SDO头部包含了消息的基本信息,如命令类型、目标设备的索引和子索引等。以下是SDO头部的一些可能的字段:COB-ID(CAN Object Identifier)、Command specifier(命令标识符)、Index 和 Sub-Index、Data Type。SDO数据区包含了具体的数据,具体内容取决于SDO的类型(读或写)。在写请求中,这部分包括要写入设备的数据,在读响应中,这部分包括从设备读取的数据。
这些字段的二进制表示按照CANopen协议规范进行编码和解码。通常,不同的协议规范和设备实现可