5.4.1 力矩模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~2 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~2 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F0H |
00H |
02H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F0H |
00H |
02H |
41H |
FBH |
|
|
|
|
|
该指令用于力矩模式控制。
下行帧的寄存器1~2数据:
Byte1:没用到,默认为0
Byte2:电机旋转方向:0:正转; 1:反转
Byte3~ Byte4:电流,取值范围:0~3000(单位:mA)(类型uint16_t)
举个例子:
下行帧数据为:01 10 00 F0 00 02 04 00 00 03 E8 FC 55
上行帧数据为:01 10 00 F0 00 02 41 FB
Byte2:0:正转
Byte3~ Byte4:电流为1000mA
5.4.2 速度模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~3 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~3 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F1H |
00H |
03H |
06H |
Byte1~ Byte6 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F1H |
00H |
03H |
D1H |
FBH |
|
|
|
|
|
该指令用于速度模式控制。
下行帧的寄存器1~3数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte6:速度,取值范围0.1~6000 RPM(float → uint8_t[4])
举个例子:
下行帧数据为:01 10 00 F1 00 03 06 00 64 44 16 00 00 36 7A
上行帧数据为:01 10 00 F1 00 03 D1 FB
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为600.0 RPM,用联合体float→ uint8_t[4]读取为0x44160000
方法可参考:例程00 联合体float 和uint32_t类型互换读取方法
5.4.3 绝对位置模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~4 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F2H |
00H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F2H |
00H |
04H |
60H |
39H |
|
|
|
|
|
该指令用于绝对位置模式控制。
下行帧的寄存器1~4数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte4:速度,取值范围0~6000 RPM(类型uint16_t)
Byte5~ Byte8:绝对位置(注意51200为一圈)(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 F2 00 04 08 00 64 07 D0 00 07 D0 00 05 1E
上行帧数据为:01 10 00 F2 00 04 60 39
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为2000RPM
Byte5~ Byte8:绝对位置为512000
注意:在绝对位置模式控制下,当前位置角度值到设定的绝对位置值后,重复发送上述指令,电机将不会继续运动,除非把绝对位置值改大,或者将当前位置角度清零后,再发。
5.4.4 相对位置模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~4 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F3H |
00H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F3H |
00H |
04H |
31H |
F9H |
|
|
|
|
|
该指令用于相对位置模式控制。
下行帧的寄存器1~4数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte4:速度,取值范围0~6000 RPM(类型uint16_t)
Byte5~ Byte8:绝对位置(注意51200为一圈)(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 F3 00 04 08 00 64 07 D0 00 07 D0 00 F8 DD
上行帧数据为:01 10 00 F3 00 04 31 F9
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为2000RPM
Byte5~ Byte8:绝对位置为512000
注意:在相对位置模式控制下,每次设置新的相对位置,当前位置角度值会一直累加,可重复发送指令,让电机继续运动。
5.4.5 脉冲模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F4H |
00H |
01H |
09H |
F8H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F4H |
00H |
01H |
09H |
F8H |
该指令用于让电机进入脉冲模式控制。说明:EN引脚用于使能脉冲模式控制,STP引脚用于输入脉冲,DIR用于控制电机旋转方向,涉及到的指令有:设置DIR正转电平和设置EN脚有效电平。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 F4 00 01 09 F8
上行帧数据为:01 06 00 F4 00 01 09 F8
进入脉冲模式后,具体的接线可以查看第2章的接线方法。脉冲模式控制简明介绍,请参考4.4.5小节。
5.4.6 脉宽位置模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~6 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F5H |
00H |
06H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F5H |
00H |
06H |
50H |
39H |
|
|
|
|
|
该指令用于脉宽位置模式控制,也就是通过控制STP引脚输入的PWM脉宽(即占空比),来控制电机旋转的位置角度。PWM占空比和旋转的位置角度对应关系由用户自定义。
下行帧的寄存器1~6数据:
Byte1~ Byte2:高电平脉宽最长长度,取值范围:0~50000us(类型uint16_t)
Byte3~ Byte4:高电平脉宽最短长度,取值取值:0~50000us(类型uint16_t)
Byte5~ Byte8:脉宽最长长度对应的位置(注意51200为一圈)(类型int32_t)
Byte9~ Byte12:脉宽最短长度对应的位置(注意51200为一圈)(类型int32_t)
举个例子:
下行帧数据为:01 10 00 F5 00 06 0C 09 C4 01 F4 00 00 64 00 00 00 00 00 17 CA
上行帧数据为:01 10 00 F5 00 06 50 39
Byte1~ Byte2:高电平脉宽最长长度,取值:2500us
Byte3~ Byte4:高电平脉宽最短长度,取值:500us
Byte5~ Byte8:脉宽最长长度对应的位置,取值:25600(旋转半圈)
Byte9~ Byte12:脉宽最短长度对应的位置,取值:0(未旋转)
该例子模仿SG90舵机来定义,PWM的占空比和控制关系如下:
PWM的频率设置为50Hz(即周期为20ms)
高电平时间 占空比 角度
0.5ms 2.5% 0°
1.0ms 5.0% 45°
1.5ms 7.5% 90°
2.0ms 10.0% 135°
2.5ms 12.5% 180°
由PWM的占空比和控制关系可以知道:
当角度为180°时,对应高电平脉宽最长长度,取值为:2.5ms(即2500us)
当角度为0°时,对应高电平脉宽最短长度,取值为:0.5ms(即500us)
由于驱动器的位置值51200为一圈,所以脉宽最长长度对应的位置180°,对应的取值为:25600(旋转半圈)。脉宽最短长度对应的位置0°,对应的取值:0(未旋转)。
进入脉宽位置模式后,具体的接线可以查看第2章的接线方法,具体的控制方法可以参考我们提供的STM32例程:07 脉宽位置模式。
5.4.7 脉宽力矩模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~6 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F6H |
00H |
06H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F6H |
00H |
06H |
A0H |
39H |
|
|
|
|
|
该指令用于脉宽力矩模式控制,也就是通过控制STP引脚输入的PWM脉宽(即占空比),来控制电机旋转的力矩。PWM占空比和旋转的力矩对应关系由用户自定义。
下行帧的寄存器1~6数据:
Byte1~ Byte2:高电平脉宽最长长度,取值范围:0~50000us(类型uint16_t)
Byte3~ Byte4:高电平脉宽最短长度,取值取值:0~50000us(类型uint16_t)
Byte5~ Byte8:脉宽最长长度对应的电流(取值范围:0~3000mA)(类型int32_t)
Byte9~ Byte12:脉宽最短长度对应的电流(取值范围:0~3000mA)(类型int32_t)
举个例子:
下行帧数据为:01 10 00 F6 00 06 0C 0D AC 01 F4 00 00 0B B8 00 00 00 00 DB D1
上行帧数据为:01 10 00 F6 00 06 A0 39
Byte1~ Byte2:高电平脉宽最长长度,取值:3500us
Byte3~ Byte4:高电平脉宽最短长度,取值:500us
Byte5~ Byte8:脉宽最长长度对应的电流,取值:3000mA
Byte9~ Byte12:脉宽最短长度对应的电流,取值:0 mA
该例子自定义PWM的占空比和电流关系如下:
PWM的频率设置为100Hz(即周期为10ms)
高电平时间 占空比 电流
0.5ms 5% 0 mA
1.0ms 10% 500 mA
1.5ms 15% 1000 mA
2.0ms 20% 1500 mA
2.5ms 25% 2000 mA
3.0ms 30% 2500 mA
3.5ms 35% 3000 mA
由PWM的占空比和控制关系可以知道:
当电流为3000 mA时,对应高电平脉宽最长长度,取值为:3.5ms(即3500us)
当角度为0 mA时,对应高电平脉宽最短长度,取值为:0.5ms(即500us)
进入脉宽力矩模式后,具体的接线可以查看第2章的接线方法,具体的控制方法可以参考我们提供的STM32例程:08 脉宽力矩模式控制。
5.4.8 脉宽速度模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~6 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
F7H |
00H |
06H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
F7H |
00H |
06H |
F1H |
F9H |
|
|
|
|
|
该指令用于脉宽速度模式控制,也就是通过控制STP引脚输入的PWM脉宽(即占空比),来控制电机旋转的速度。PWM占空比和旋转的速度对应关系由用户自定义。
下行帧的寄存器1~6数据:
Byte1~ Byte2:高电平脉宽最长长度,取值范围:0~50000us(类型uint16_t)
Byte3~ Byte4:高电平脉宽最短长度,取值取值:0~50000us(类型uint16_t)
Byte5~ Byte8:脉宽最长长度对应的速度(取值范围:0~6000RPM)(类型int32_t)
Byte9~ Byte12:脉宽最短长度对应的速度(取值范围:0~6000RPM)(类型int32_t)
举个例子:
下行帧数据为:01 10 00 F7 00 06 0C 0C E4 01 2C 00 00 0B B8 00 00 00 00 62 26
上行帧数据为:01 10 00 F7 00 06 F1 F9
Byte1~ Byte2:高电平脉宽最长长度,取值:3300us
Byte3~ Byte4:高电平脉宽最短长度,取值:300us
Byte5~ Byte8:脉宽最长长度对应的速度,取值:6000 RPM
Byte9~ Byte12:脉宽最短长度对应的速度,取值:0 RPM
该例子自定义PWM的占空比和速度关系如下:
PWM的频率设置为100Hz(即周期为10ms)
高电平时间 占空比 电流
0.3ms 3% 0 RPM
0.6ms 6% 300 RPM
0.9ms 9% 600 RPM
1.2ms 12% 900 RPM
1.5ms 15% 1200 RPM
1.8ms 18% 1500 RPM
2.1ms 21% 1800 RPM
2.4ms 24% 2100 RPM
2.7ms 27% 2400 RPM
3.0ms 30% 3000 RPM
3.3ms 33% 3000 RPM
由PWM的占空比和控制关系可以知道:
当速度为3000 RPM时,对应高电平脉宽最长长度,取值为:3.3ms(即3300us)
当速度为0 RPM时,对应高电平脉宽最短长度,取值为:0.3ms(即300us)
进入脉宽力矩模式后,具体的接线可以查看第2章的接线方法,具体的控制方法可以参考我们提供的STM32例程:09 脉宽速度模式控制。
5.4.9 将当前的位置角度清零指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F8H |
00H |
01H |
C9H |
FBH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F8H |
00H |
01H |
C9H |
FBH |
该指令用于将当前位置角度、位置误差和累计脉冲数清零。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 F8 00 01 C9 FB
上行帧数据为:01 06 00 F8 00 01 C9 FB
5.4.10 解除堵转保护指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F9H |
00H |
01H |
98H |
3BH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
F9H |
00H |
01H |
98H |
3BH |
该指令用于解除堵转保护(电机发生堵转后,可以使用该指令解除堵转保护)。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 F9 00 01 98 3B
上行帧数据为:01 06 00 F9 00 01 98 3B
5.4.11 电机使能控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FAH |
00H |
00H |
A9H |
FBH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FAH |
00H |
00H |
A9H |
FBH |
该指令用于使能电机,有以下可能:
0:使能电机;1:失能电机
举个例子:
下行帧数据为:01 06 00 FA 00 00 A9 FB
上行帧数据为:01 06 00 FA 00 00 A9 FB
0:使能电机
5.4.12 清除状态(堵转、刹车,失能)指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FBH |
00H |
01H |
39H |
FBH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FBH |
00H |
01H |
39H |
FBH |
该指令可以清除状态(包括:堵转、刹车,失能)。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 FB 00 01 39 FB
上行帧数据为:01 06 00 FB 00 01 39 FB
5.4.13 立即停止(刹车)指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FCH |
00H |
01H |
88H |
3AH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
FCH |
00H |
01H |
88H |
3AH |
该指令可以立即停止(刹车)。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 FC 00 01 88 3A
上行帧数据为:01 06 00 FC 00 01 88 3A
注意:刹停后,请及时清除电机状态,否则电机会严重发烫。
5.4.14 开环速度模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~3 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~3 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
E0H |
00H |
03H |
06H |
Byte1~ Byte6 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
E0H |
00H |
03H |
81H |
FEH |
|
|
|
|
|
该指令用于速度模式控制。
下行帧的寄存器1~3数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte6:速度,取值范围0.1~400 RPM(float → uint8_t[4])
举个例子:
下行帧数据为:01 10 00 E0 00 03 06 00 64 41 70 00 00 86 F9
上行帧数据为:01 10 00 E0 00 03 81 FE
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为15.0 RPM,用联合体float→ uint8_t[4]读取为0x41700000
方法可参考:例程00 联合体float 和uint32_t类型互换读取方法
5.4.15 开环绝对位置模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~4 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
E1H |
00H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
E1H |
00H |
04H |
91H |
FCH |
|
|
|
|
|
该指令用于绝对位置模式控制。
下行帧的寄存器1~4数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte4:速度,取值范围0~400 RPM(类型uint16_t)
Byte5~ Byte8:绝对位置(注意51200为一圈)(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 E1 00 04 08 00 64 00 64 00 00 C8 00 CA 89
上行帧数据为:01 10 00 E1 00 04 91 FC
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为100RPM
Byte5~ Byte8:绝对位置为51200
注意:在绝对位置模式控制下,当前位置角度值到设定的绝对位置值后,重复发送上述指令,电机将不会继续运动,除非把绝对位置值改大,或者将当前位置角度清零后,再发。
5.4.16 开环相对位置模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~4 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
E2H |
00H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
E2H |
00H |
04H |
61H |
FCH |
|
|
|
|
|
该指令用于相对位置模式控制。
下行帧的寄存器1~4数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte4:速度,取值范围0~400 RPM(类型uint16_t)
Byte5~ Byte8:绝对位置(注意51200为一圈)(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 E2 00 04 08 00 64 00 64 00 00 C8 00 CE 8D
上行帧数据为:01 10 00 E2 00 04 61 FC
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为100RPM
Byte5~ Byte8:绝对位置为51200
注意:在相对位置模式控制下,每次设置新的相对位置,当前位置角度值会一直累加,可重复发送指令,让电机继续运动。
5.4.17 开环脉冲模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
E3H |
00H |
01H |
B9H |
FCH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
E3H |
00H |
01H |
B9H |
FCH |
该指令用于让电机进入脉冲模式控制。说明:EN引脚用于使能脉冲模式控制,STP引脚用于输入脉冲,DIR用于控制电机旋转方向,涉及到的指令有:设置DIR正转电平和设置EN脚有效电平。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 E3 00 01 B9 FC
上行帧数据为:01 06 00 E3 00 01 B9 FC
进入脉冲模式后,具体的接线可以查看第2章的接线方法。脉冲模式控制简明介绍,请参考4.4.5小节。
5.4.18 IO启停模式控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~3 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~3 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
E4H |
00H |
03H |
06H |
Byte1~ Byte6 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
E4H |
00H |
03H |
C0H |
3FH |
|
|
|
|
|
该指令用于速度模式控制。
下行帧的寄存器1~3数据:
Byte1:电机旋转方向:0:正转;1:反转
Byte2:加减速度,取值范围0~200,数值越大加减速度越大(0表示直接启动)
Byte3~ Byte6:速度,取值范围0.1~400 RPM(float → uint8_t[4])
举个例子:
下行帧数据为:01 10 00 E4 00 03 06 00 64 42 C8 00 00 47 4D
上行帧数据为:01 10 00 E4 00 03 C0 3F
Byte1:0:正转
Byte2:加减速度为100
Byte3~ Byte4:速度为100.0 RPM,用联合体float→ uint8_t[4]读取为0x42C80000
方法可参考:例程00 联合体float 和uint32_t类型互换读取方法
5.5 回零类指令说明
5.5.1 设置左限位原点位置指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~2 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~2 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
90H |
00H |
02H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
90H |
00H |
02H |
41H |
E5H |
|
|
|
|
|
该指令用于设置回零零点位置。
下行帧的寄存器1~2数据:
Byte1~ Byte4:回零零点位置(类型int32_t)
举个例子:
下行帧数据为:01 10 00 90 00 02 04 00 00 C8 00 AD 03
上行帧数据为:01 10 00 90 00 02 41 E5
Byte1~ Byte4:设置回零零点位置为51200
5.5.2 设置有无限位回零指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~4 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
91H |
00H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
91H |
00H |
04H |
90H |
27H |
|
|
|
|
|
该指令用于设置有无限位回零。
下行帧的寄存器1~4数据:
Byte1:使用无限位回零或有限位回零,
0:左无限位回零
1:右无限位回零
2:左有限位回零
3:右有限位回零
Byte2:电机旋转方向,0:正转;1:反转
Byte3~ Byte6:电机旋转速度:0~6000(单位RPM)
Byte7~ Byte8:限位电流:0~3000(单位mA),注意:限位电流,只对无限位回零有作用,用于检测是否到位
举个例子:
下行帧数据为:01 10 00 91 00 04 08 01 00 00 00 07 D0 0B B8 4E 3B
上行帧数据为:01 10 00 91 00 04 90 27
Byte1:使用无限位回零或有限位回零,1:有限位回零
Byte2:电机旋转方向,0:正转
Byte3~ Byte6:电机旋转速度:2000 RPM
Byte7~ Byte8:限位电流:3000 mA
5.5.3 触发回零指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
92H |
00H |
01H |
E9H |
E7H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
92H |
00H |
01H |
E9H |
E7H |
该指令用于触发回零,回零模式有以下可能:
0:单圈回零(按完整一圈去找到原点信号)
1:就近回零(电机从当前位置开始,朝最近的原点位置移动)
2:多圈回零(找到绝对0点)
举个例子:
下行帧数据为:01 06 00 92 00 01 E9 E7
上行帧数据为:01 06 00 92 00 01 E9 E7
回零模式:1:就近回零
5.5.4 强制中断并退出回零操作指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
93H |
00H |
01H |
B8H |
27H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
93H |
00H |
01H |
B8H |
27H |
该指令用于强制中断并退出回零操作。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 93 00 01 B8 27
上行帧数据为:01 06 00 93 00 01 B8 27
5.5.5 读取回零参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
94H |
00H |
09H |
71H |
E0H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~9 数据 |
CRC16 校验码 | |||
|
1~9 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
12H |
Byte1~ Byte18 |
CRC16_H |
CRC16_L | ||
该指令用于读取回零参数。
Byte1:表示上电自动回零标志,有以下可能:
0:无需上电自动回零
1:上电自动回零
Byte2:表示回零状态,有以下可能:
0:空闲态
1:正在运行
2:回零完成
3:回零失败未找到零点
Byte3~ Byte4:表示限位电流,范围:0~3000(单位:mA)(类型int16_t)
Byte5~ Byte8:表示左限位原点,(类型int32_t)
Byte9~ Byte12:表示超时时间(单位:ms)(类型uint32_t)
Byte13~ Byte16:表示右限位原点,(类型int32_t)
Byte17:没用到,补0即可
Byte18:表示左右限位开关状态,有以下可能:
0:左右限位关闭 1:左右限位开启
举个例子:
下行帧数据为:01 04 00 94 00 09 71 E0
上行帧数据为:01 04 12 00 00 01 2C 00 00 C8 00 00 00 27 10 00 00 C8 00 00 01 4B 93
Byte1:0x0表示上电自动回零标志,0:无需上电自动回零
Byte2:0x0表示回零状态,0:空闲态
Byte3~ Byte4:0x012C表示限位电流,300mA
Byte5~ Byte8:0x0000C8 00表示左限位原点,51200
Byte9~ Byte12:0x00002710表示超时时间,10000ms
Byte13~ Byte16:0x0000C8 00表示右限位原点,51200
Byte17:0x0 无意义
Byte18:0x1表示左右限位开启
5.5.6 修改原点回零超时时间指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~2 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~2 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
95H |
00H |
02H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
95H |
00H |
02H |
51H |
E4H |
|
|
|
|
|
该指令用于修改原点回零超时时间(单位:ms)。
下行帧的寄存器1~2数据:
Byte1~ Byte4:原点回零超时时间(类型int32_t)
举个例子:
下行帧数据为:01 10 00 95 00 02 04 00 00 13 88 37 AA
上行帧数据为:01 10 00 95 00 02 51 E4
点回零超时时间为5000ms
5.5.7 读取回零状态指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
96H |
00H |
01H |
D1H |
E6H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取回零状态。
Byte1:没用到,补0即可
Byte2:表示回零状态,有以下可能:
0:空闲态
1:正在运行
2:回零完成
3:回零失败未找到零点
举个例子:
下行帧数据为:01 04 00 96 00 01 D1 E6
上行帧数据为:01 04 02 00 00 B9 30
Byte2:0x00表示空闲态
5.5.8 设置上电自动回零指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
97H |
00H |
01H |
F9H |
E6H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
97H |
00H |
01H |
F9H |
E6H |
该指令用于设置上电是否自动回零,有以下可能:
0:上电不自动回零
1:上电自动回零
举个例子:
下行帧数据为:01 06 00 97 00 01 F9 E6
上行帧数据为:01 06 00 97 00 01 F9 E6
是否自动回零:1:上电自动回零
5.5.9 设置右限位原点位置指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~2 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~2 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
98H |
00H |
02H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
98H |
00H |
02H |
C0H |
27H |
|
|
|
|
|
该指令用于设置右限位原点位置。
下行帧的寄存器1~2数据:
Byte1~ Byte4:右限位原点位置(类型int32_t)
举个例子:
下行帧数据为:01 10 00 98 00 02 04 00 00 C8 00 AC A5
上行帧数据为:01 10 00 98 00 02 C0 27
Byte1~ Byte4:设置右限位原点位置为51200
5.5.10 设置左右限位开关状态
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
99H |
00H |
01H |
98H |
25H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
99H |
00H |
01H |
98H |
25H |
该指令用于设置左右限位的开关状态,有以下可能:
0:关闭左右限位
1:开启左右限位
举个例子:
下行帧数据为:01 06 00 99 00 01 98 25
上行帧数据为:01 06 00 99 00 01 98 25
左右限位的开关状态:1:开启左右限位,注意开启后位置运动距离受限于左右限位原点
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3176446/ ,如需转载,请注明出处,否则将追究法律责任。