周立功阅读笔记-CANopen轻松入门基于DS301(一)

周立功阅读笔记-CANopen轻松入门基于DS301(一)

CANopen阅读笔记
4.CANopen的预定义报文和ID分类
5.对象字典OD(Object dictionary)
6.网络管理NMT(Network management)与CANopen主站
7.过程数据对象PDO(Process data object)
8.服务数据对象SDO(Service data object)
9.特殊协议
CAN-OPEN
–NMT主机
—-过程数据对象PDO
——–TPDO(发送PDO):有四种数据对象,详见表4-2
——–RPDO (接收RPDO):有四种数据对象,详见表4-2
—-服务数据对象SDO
–CANopen从机
—-过程数据对象PDO
——–TPDO(发送PDO):有四种数据对象,详见表4-2
——–RPDO (接收RPDO):有四种数据对象,详见表4-2
—-服务数据对象SDO
——–问SDO的CAN帧的ID:600h+node-ID。这里Node-ID节点地址
——–被问节点地址Node-ID:答:SDO的CAN帧就是:580h+node-ID。详见表4-2

周立功阅读笔记-CANopen轻松入门基于DS301(一)_第1张图片

【四.CANopen的预定义报文和ID分类】
4_1 报文传输采用 CAN 标准帧格式。即 11bit 的 ID 域,以尽量减小传输时间。
4_2 需要接收方确认的配置参数一般都是采用快速单字传输。即 1 个报文最多传送 1
个 32 字节的参数变量,避免了分帧引起的实时性降低。
4_3 需要设置一个网络管理主机,NMT 主机一般是 CANopen 网络中具备监控的 PLC 或者 PC。
网络管理中,同一个网络中只允许有一个主节点、一个或多个从节点,并遵循主从模式。
【STM32需要自己写一个主机,自己写一个从机,主机是NMT主机】
NMT 与特殊协议的 CAN-ID 定义,
关键是怎么定义这种结构体,我个人猜测STM32里面的库就把这个弄好了。

读者必须需要记住的是绿色底纹的这些常用的CAN-ID 含义,在研发和应用 CANopen 中,这三类是最为常用的 NMT 与特殊协议报文。

NMT网络管理命令: CiA301 000h
Sync同步报文: CiA301 080h
Emergency紧急报文: CiA301 081h to 0FFh

4_4 过程数据对象(PDO)和服务数据对象(SDO)的报文ID分类
需要传递的配置信息和应用信息,两个重要的对象,即:
【过程数据对象PDO(Process data object)】
【服务数据对象SDO(Service data object)】
这就是CiA301 协议所规定的基础协议——“箩筐”。
【PDO】属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型。CAN数据帧0-8字节 CAN-ID:0-2048
【SDO】(需要确认)属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应 CAN 报文来确认已经接收, 如果超时没有确认,则发送节点将会重新发送原报文。这种通讯方式属于常见的“服务器客户端”的通信模型,即我们通常所说的轮询式。
CAN-ID 称为 COB-ID(通信对象编号):COB-ID:通讯对象的报文帧ID,即 CAN 报文的 11 位 ID。
Node-ID:节点 ID 号,即 CANopen 网络中的节点地址。
每个CANopen节点的输入和输出,所以 PDO 分为 TPDO(发送 PDO)和(接收 RPDO),
发送和接收是以 CANopen 从站节点为参考(如果 CAN 主站就相反)。TPDO和 RPDO 分别有4个数据对象,每种数据对象就是 1 条 CAN 报文封装。
CAN-OPEN
–NMT主机
—-过程数据对象PDO
——–TPDO(发送PDO):有四种数据对象,详见表4-2
——–RPDO (接收RPDO):有四种数据对象,详见表4-2
—-服务数据对象SDO
–CANopen从机
—-过程数据对象PDO
——–TPDO(发送PDO):有四种数据对象,详见表4-2
——–RPDO (接收RPDO):有四种数据对象,详见表4-2
—-服务数据对象SDO
——–问SDO的CAN帧的ID:600h+node-ID。这里Node-ID节点地址

发起通讯的“问”SDO的CAN帧ID就是600h +node-ID, 这里的 Node-ID 是被问的节点地址,而被问的节点应“答”SDO 的 CAN 帧 ID 就是 580h +node-ID。一般在 CANopen 网络中,只有 NMT 主机能发起 SDO 通讯,进行节点参数配置 或者关键性参数的传递。当然从节点也可以对其他从节点发起 SDO 通讯。

五.对象字典OD (Object dictionary)CANopen中最核心的概念。

每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000 到 0xFFFF 之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8 位 的索引值,这个索引值通常被称为子索引,其范围是 0x00 到 0xFF 之间。 每个索引内具体的参数,最大用 32 位的变量来表示,即 Unsigned32,四个字节。 每个 CANopen 设备都有一个对象字典,使用电子数据文档(EDS 文件)来记录这些参 数,而不需要把这些参数记录在纸上。对于 CANopen 网络中的主节点来说,不需要对 CANopen 从节点的每个对象字典项都访问。 CANopen 对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都 描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等, 这样可保证不同厂商的同类型设备兼容。 CANopen 协议的核心描述子协议是 DS301,其包括了 CANopen 协议应用层及通信结构 描述,其它的协议子协议都是对 DS301 协议描述文本的补充与扩展。在不同的应用行业都 会起草一份 CANopen 设备子协议,子协议编号一般是 DS4xx 。

实质:有序的对象组
描述了对应 CANopen 节点的所有参数, 包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做 EDS 文件(电子数据文档Electronic Data Sheet) 。
对于 CANopen 网络中的主节点来说,不需要对CANopen 从节点的每个对象字典项都访问。
CANopen 对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等。
5.1 对象字典概述 用户需要关注的区域是两个区域:通讯对象子协议区和制造商特定子协议区

周立功阅读笔记-CANopen轻松入门基于DS301(一)_第2张图片

5.2 通讯对象子协议区:通用通讯对象必须有:1000h to 1029h

周立功阅读笔记-CANopen轻松入门基于DS301(一)_第3张图片

5.3 通用通讯对象(General communication objects)
由于通用通讯对象十分重要,NMT 主站(CANopen 主站)在启动时,通常都全部或者部分读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen 从站中实现,使用者也必须熟知这些索引地址与其含义。如表 5.3 所示。
周立功阅读笔记-CANopen轻松入门基于DS301(一)_第4张图片
周立功阅读笔记-CANopen轻松入门基于DS301(一)_第5张图片
周立功阅读笔记-CANopen轻松入门基于DS301(一)_第6张图片
5.4 制造商特定子协议(Manufacturer-specific Profile)
RPDO 的通讯参数存放在 1400h to 15FFh
映射参数存放在 1600h to 17FFh 数据存放为2000h 之后厂商自定义区;
TPDO 的通讯参数存放在 1800h to 19FFh 映射参数存放在 1A00h to 1BFFh 数据存放为
2000h 之后厂商自定义区。
5.5标准化设备子协议(Standardized profile area)

六.网络管理NMT(Network management)与CANopen主站
每个 CANopen 从节点的 CANopen 协议栈中,必须具备 NMT 管理的相应代码,
这是节点具备 CANopen 协议的最基本的要素。
NMT 节点状态:
————————————————
版权声明:本文为CSDN博主「Stupid_Gao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34071268/article/details/78470070

你可能感兴趣的:(canopen)