前言

提示:这里可以添加本文要记录的大概内容:
上一篇文章已经介绍了canfestival代码移植部分,本篇主要介绍CANopen协议簇中NMT、PDO子协议功能测试。
测试硬件


提示:以下是本篇文章正文内容,下面案例可供参考

一、NMT功能测试

树莓派pico作为子站,使用CAN报文分析作为主站,模拟发送主站NMT网络管理报文。

1. 节点上线报文

复位树莓派pico,在CAN报文分析仪上位机上可以看见接收到CAN ID为0x701的节点上线报文:节点上线报文

2. NMT节点切换报文

CAN报文分析仪模拟CANopen主站,发送节点状态切换报文,树莓派pico子站能够根据切换报文,进入对应的CANopen状态。
CANopen 状态
树莓派pico复位后进入 pre-operational 状态:
树莓派pico 复位后状态
NMT网络管理报文的CAN ID 均为0x000,第一个字节是切换命令,第二个子接是从站的Node -ID。

1. 启动报文

发送启动报文后,从节点会进入操作状态。
报文为:

CAN ID 切换命令 从站Node ID
0x000 0x01 0x01

CAN 报文分析仪发送报文如下:
CAN分析仪启动报文发送
树莓派pico 从站状态切换:
从节点进入操作状态

2. 停止报文

发送停止报文后,从节点会进入停止状态。
报文为:

CAN ID 切换命令 从站Node ID
0x000 0x02 0x01

CAN 报文分析仪发送报文如下:
发送报文
树莓派pico状态切换:

树莓派pico状态切换

3. 进入预操作状态

发送进入预操作状态报文后,从节点会进入预操作状态。
报文为:

CAN ID 切换命令 从站Node ID
0x000 0x80 0x01

CAN 分析仪发送报文如下:

发送报文
树莓派pico状态切换:
树莓派pico状态切换

4. 复位节点通讯

发送复位节点通信指令后,会让从节点CANopen初始化。
报文:

CAN ID 切换命令 从站Node ID
0x000 0x82 0x01

CAN 分析仪发送报文如下:
发送报文
树莓派pico状态切换:
树莓派pico

3. 心跳报文

重新配置对象字典文件,打开心跳报文功能:
OD 0x1017
配置对象字典0x1017,心跳时间1000ms。
从站发送心跳报文:

CAN ID 节点状态
0x701 节点状态

节点状态为预操作:

节点心跳报文
节点状态运行:
节点运行

二、PDO功能测试

树莓派pcio 对象字典中配置一个TPDO和RPDO,其中TPDO传输模式为循环同步模式,CAN分析仪模拟主站功能,周期50ms发送同步帧。

1 TPDO报文

CAN分析仪发送报文如下:
同步帧
树莓派pico发送tpdo报文:
tpdo

1 RPDO报文

树莓派pico对象字典中rpdo 的cob id 为0x201,CAN分析仪发送报文如下:

发送报文

树莓派pico 接收到PDO,打印信息如下:
rpdo

总结

树莓派pico NMT 和PDO测试正常,已经基本具备CANopen子站功能。

canfesvial移植工作基本完成,后续针对具体项目会做一些应用开发。

感谢各位读者,共勉之。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐