canopen轻松入门
扫描二维码
随时随地手机看文章
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的预定义报文和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 CAN-ID
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节点地址
五.对象字典OD (Object dictionary)CANopen中最核心的概念。
实质:有序的对象组
描述了对应 CANopen 节点的所有参数, 包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做 EDS 文件(电子数据文档Electronic Data Sheet) 。
对于 CANopen 网络中的主节点来说,不需要对CANopen 从节点的每个对象字典项都访问。
CANopen 对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等。
5.1 对象字典概述 用户需要关注的区域是两个区域:通讯对象子协议区和制造商特定子协议区
5.2 通讯对象子协议区:通用通讯对象必须有:1000h to 1029h
5.3 通用通讯对象(General communication objects)
NMT主站(CANopen 主站) 在启动时, 通常都全部或者部分读取所有从站中通用通讯对象中的索引, 所以所有的通用通讯对象都必须在CANopen 从站中实现,使用者也必须熟知这些索引地址与其含义。
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 节点状态: