1、CAN总线介绍
CAN是一种总线协议,理论上CAN总线是可以接无线多的设备,而对于RM系列电机,虽然手册上说一条CAN总线可以接8个电机,但是一般最多接7个电机,否则会出现失控的情况。接线示意图如下所示。
总线距离长达10KM,并且在两端需要接120Ω电阻,来消除阻抗,CAN总线发送部分分为一下内容:
1.报文:总线上设备每次发出去的全部数据。报文种类共有五种,如下所示:
a、数据帧:用于发送节点向接收 节点传送数据的帧。(本设计的RM电机驱动就使用该方式)
b、远程帧:用于接收节点向具有相同ID的发送节点传送数据的帧。
c、错误帧:用于当检测出错误时向其他节点通知错误的帧。
d、过载帧:用于接收节点通知其尚未做好准备的帧。
e、帧间隔:用于将数据帧及远程帧与前面的帧分隔开来。
2.邮箱:CAN总线有发送、接收两种邮箱。
a、发送邮箱有三个,数据在发送过程中先传入优先级最高的邮箱中,当邮箱满后,数据进入次级邮箱,当检测CAN总线空闲,高优先级邮箱数据进行发送,起到缓存的作用。
b、接收邮箱有两个,但每个邮箱有三层的深度,并且邮箱前面还有过滤器。过滤器作用是读取识别符并且过滤不匹配的报文。
3.帧种类,
4.帧格式
5.标识符
2、单片机通过驱动电调来控制电机
2.1、STM32发送数据到电调
CAN通讯的数据帧仅仅8Byte,电机电流值需要2Byte,所以一个数据帧对应四个电机,出现大于四个电机驱动情况,就需要两个数据帧对电机发送数据。通过查阅C610说明书对CAN通信协议介绍部分可知标识符分别为0X22和0XFF,如下图所示。
对于4~8个电机的情况,前四个电机ID设为0X200,后面几个电机设为0X1FF即可。手册说明如下所示。
2.2、STM32接收到电调数据
为了实现对电机的闭环控制,需要实时对电调反馈的信息进行接收,接收ID方式如下所示。
接着需要对接收数据按说明手册进行解码即可,如下图所示。
3、RM2006电机接线示意图