【CANopen进阶日记】专栏目录
第一章 CAN协议栈详解
第二章 CANopen协议栈详解
第三章 CANopen对象字典工具
文章目录
- 【CANopen进阶日记】专栏目录
- 前言
- 一、对象字典简介
- 二、CANopen协议栈框架
- 三、NMT主从
- 四、SDO客户端服务器
- 五、PDO生产者消费者
- 5.1 RPDO
- 5.2 TPDO同步周期
- 5.3 TPDO同步非周期
- 总结
前言
在这个专栏中,你可以找到大量与CANopen协议有关的知识和技能,包括CANopen协议的基础、如何配置和管理网络、如何使用CANopen对象字典和数据类型等,旨在帮助读者更好地掌握和应用CANopen。
本章介绍了CANopen对象字典工具的基本概念,以及如何使用对象字典工具实现主从机的SDO、PDO通讯。
一、对象字典简介
对象字典就是一个有序的对象组,描述了对应 CANopen 节点的所有参数,包括通讯数据的 存放位置也列入其索引,这个表变成可以传递形式就叫做 EDS 文件。
每个对象采用一个 16 位的索引值来寻址,这个索引值通常被称为索引,其范围在 0x0000 到 0xFFFF 之间为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8 位 的索引值,这个索引值通常被称为子索引,其范围是 0x00 到 0xFF 之间。索引范围及描述如下如所示:
对象索引与子索引在通讯中应用如下表所示:
举一个例子,使用 SDO 消息将值 0x20F0 写入到 ID 为 2 的索引为 1801H,子索引为 3
的对象字典中。
二、CANopen协议栈框架
在阅读以下内容前需要对整体的CANopen协议栈系统先做一个整体的了解:
三、NMT主从
- 主要是心跳生产者和消费者的监测的问题;
- 通过NMT主机也可以控制从节点的状态;
NMT主节点设置监测的节点和心跳包查询时间1000ms:
NMT从节点设置心跳包时间100ms:
四、SDO客户端服务器
注意,CANopen主节点是客户端,CANopen从节点是服务器这里实现了一个CANopen主机控制两个从节点的心跳包时间,即修改0x1017数值:
五、PDO生产者消费者
SDO方式实际上已经可以访问控制任何词典对象,但是由于经典CAN方式,每次只能传输4个字节,并且还要处理应答,所以就有了PDO方式,PDO方式虽然解决了SDO方式痛点,无需应答,但玩法也复杂很多。
重要:使用PDO要先明白一个本质的东西,CANopen是没用硬件过滤的,全靠软件过滤,也就是说发送TPDO发送的消息,所有的接收RPDO设备都可以接收到。
PDO通信里面的异步通信比较简单,难点是后面两个同步周期和同步非周期传输。
5.1 RPDO
RPDO通信案例:
-
CANopen主机词典配置:
-
CANopen从机词典配置:
5.2 TPDO同步周期
- 同步周期方式:
- 同步时间设置:
- 发送5个同步包后开始第1个TPDO2消息,每个两个同步包传输1次数:
5.3 TPDO同步非周期
- 同步非周期方式:
- 传输类型设置非周期:
总结
本章介绍了CANopen对象字典工具的基本概念,以及如何使用对象字典工具实现主从机的SDO、PDO通讯。
关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。