CANOpen协议
本帖最后由 李维强-15级 于 2020-9-8 23:16 编辑有关CAN的协议本帖不做讨论,可详见STM32-CAN配置详解。
CANOpen是在CAN通讯之上的一个应用程层协议,本帖会主要讨论该协议的定义,然后把它应用到现在的产品上。
知识点明确:
一、CANOpen是用的标准帧,数据帧来做全部的定义,完全符合帖子 STM32-CAN配置详解的应用。
二、帧的定义如下图
帧ID一共只有11位,被分为两部分,高4位为功能码,低7位为节点地址,帧ID =功能码(4bits)+Node_ID(7bit)
所以在CANOpen协议下,挂载的节点数一共就是128个,那么滤波器的设置则为“标识符掩码”,忽略高4位,匹配低7位即可。
三、PDO&SDO
PDO:发送后,只需判断该帧是否发送成功,无需等待回复
SDO:即轮询的概念,发送后等待对方回复相应的信息
在CANOpen中,PDO&SDO就是所谓的前4位功能码。
SDO标准结构:
600h+Node_ID:主站发往从站
580h+Node_ID:从站回复主站
PDO标准结构:
TPDO:180h+Node_ID RPDO: 200h+Node_ID
280+Node_ID 300h+Node_ID
380+Node_ID 400h+Node_ID
480+Node_ID 500h+Node_ID
从上面的PDO和SDO看来,一个节点最多支持4个TPDO(分别是180h+NodeID、280h +NodeID、380h +NodeID、480h +NodeID)和4个RPDO(分别是200h +NodeID、300h +NodeID、400h +NodeID、500h +NodeID)。每一个PDO都对应一些参数,包括通讯参数和映射参数。
页:
[1]