[三菱] CANOpen通信协议1

[复制链接]
查看14662 | 回复0 | 2024-6-21 18:27:18 | 显示全部楼层 |阅读模式
在《CANOpen对象字的理解》中,分享了如何去理解对象字这个概念,那么CANOpen通信协议是如何实现不同的设备之间通信呢?

主站读取2号站的温度传感器问题(对象字主索引为0x1000,子索引为0x00),需要如何通知2号站?如何发数据报文?

发送报文:

CAN ID:0x602

CAN Data: 0x40 0x00 0x10 0x00 0x00 0x00 0x00 0x00

如果温度是个32位数据,值为0x12345678,

回复报文:

CAN ID:0x582

CAN Data: 0x43 0x00 0x10 0x00 0x78 0x56 0x34 0x12

上面的发送和回复报文,就是一个SDO通信,下面分析发送和回复报文。

发送报文解析:

0x602: CAN ID,就是发送的CAN报文的ID,0x600 + NodeID,NodeID表示设备的节点ID,2号站的NodeID就是2

0x40:表示读数据

0x00 0x10:对象字的主索引

0x00:对象字的子索引

0x00 0x00 0x00 0x00:因为是读,所以默认都是写0

回复报文解析:

0x582: CAN ID,就是回复的CAN报文的ID,0x580 + NodeID,NodeID表示设备的节点ID,2号站的NodeID就是2

0x43:表示数据的有效字节数为4个字节

0x00 0x10:对象字的主索引

0x00:对象字的子索引

0x78 0x56 0x34 0x12:温度的值

本例子只是对CANOpen报文协议的一个基础认知,后续会具体分享报文协议。
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则