文章目录
前言
提示:这里可以添加本文要记录的大概内容:
上一篇文章已经介绍了canfestival代码移植部分,本篇主要介绍CANopen协议簇中NMT、PDO子协议功能测试。
提示:以下是本篇文章正文内容,下面案例可供参考
一、NMT功能测试
树莓派pico作为子站,使用CAN报文分析作为主站,模拟发送主站NMT网络管理报文。
1. 节点上线报文
复位树莓派pico,在CAN报文分析仪上位机上可以看见接收到CAN ID为0x701的节点上线报文:
2. NMT节点切换报文
CAN报文分析仪模拟CANopen主站,发送节点状态切换报文,树莓派pico子站能够根据切换报文,进入对应的CANopen状态。
树莓派pico复位后进入 pre-operational 状态:
NMT网络管理报文的CAN ID 均为0x000,第一个字节是切换命令,第二个子接是从站的Node -ID。
1. 启动报文
发送启动报文后,从节点会进入操作状态。
报文为:
CAN ID | 切换命令 | 从站Node ID |
---|---|---|
0x000 | 0x01 | 0x01 |
CAN 报文分析仪发送报文如下:
树莓派pico 从站状态切换:
2. 停止报文
发送停止报文后,从节点会进入停止状态。
报文为:
CAN ID | 切换命令 | 从站Node ID |
---|---|---|
0x000 | 0x02 | 0x01 |
CAN 报文分析仪发送报文如下:
树莓派pico状态切换:
3. 进入预操作状态
发送进入预操作状态报文后,从节点会进入预操作状态。
报文为:
CAN ID | 切换命令 | 从站Node ID |
---|---|---|
0x000 | 0x80 | 0x01 |
CAN 分析仪发送报文如下:
树莓派pico状态切换:
4. 复位节点通讯
发送复位节点通信指令后,会让从节点CANopen初始化。
报文:
CAN ID | 切换命令 | 从站Node ID |
---|---|---|
0x000 | 0x82 | 0x01 |
CAN 分析仪发送报文如下:
树莓派pico状态切换:
3. 心跳报文
重新配置对象字典文件,打开心跳报文功能:
配置对象字典0x1017,心跳时间1000ms。
从站发送心跳报文:
CAN ID | 节点状态 |
---|---|
0x701 | ![]() |
节点状态为预操作:
节点状态运行:
二、PDO功能测试
树莓派pcio 对象字典中配置一个TPDO和RPDO,其中TPDO传输模式为循环同步模式,CAN分析仪模拟主站功能,周期50ms发送同步帧。
1 TPDO报文
CAN分析仪发送报文如下:
树莓派pico发送tpdo报文:
1 RPDO报文
树莓派pico对象字典中rpdo 的cob id 为0x201,CAN分析仪发送报文如下:
树莓派pico 接收到PDO,打印信息如下:
总结
树莓派pico NMT 和PDO测试正常,已经基本具备CANopen子站功能。
canfesvial移植工作基本完成,后续针对具体项目会做一些应用开发。
感谢各位读者,共勉之。