ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 《PDxxS1步进电机闭环驱动器用户手册_V1.0》第五章(5.4-5.5)

《PDxxS1步进电机闭环驱动器用户手册_V1.0》第五章(5.4-5.5)

原创 嵌入式/内核开发 作者:正点原子 时间:2026-07-22 10:18:10 0 删除 编辑

5.4 运动类指令说明

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-30

  • 博文量
    588
  • 访问量
    763804