李维强-15级 发表于 2020-9-8 10:54:59

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]
查看完整版本: CANOpen协议