5,Modbus-RTU指令使用说明
注意事项:
1. 协议设置方法
需要使用modbus协议,方可使用,下面两个方法效果一样:
l 方法1:屏幕菜单à通信协议设置àmodbus
l 方法2:使用“设置协议指令”,设置使用mudbus协议
2. 协议通用性说明
本协议适用于以下两种通信接口版本的设备:
l 串口TTL 版本
l RS485 版本
其中,协议的指令格式与数据内容在2种版本中保持一致,仅在物理层和部分收发规则上存在差异。
3. 串口 TTL 与 RS485 默认通信参数
l 波特率115200、
l 停止位1、
l 数据位8、
l 检验位None
4. 从机地址
l 出厂默认从机地址为 01H
l 文档中示例均以 01H 作为从机地址。
在PDxxS1步进电机闭环驱动器中,会使用到Modbus-rtu协议的04H(读输入寄存器)、06H(写单个寄存器)、10H(写多个寄存器)三个功能码,请看5.1 指令格式说明。
功能码表:
|
指令类型 |
Modbus-rtu 协议功能码 |
Modbus-rtu 寄存器起始地址(实际对应自定义协议的 功能码 ) |
功能说明 |
|
系统指令(0x00 ~ 0x0F) |
06H |
0x01 |
校准编码器 |
|
0x02 |
复位重启 | ||
|
0x0 3 |
恢复出厂设置 | ||
|
0x0 4 |
参数保存 | ||
|
|
| ||
|
读参数指令 (0x20 ~ 0x3F) |
04H |
0x20 |
读取软硬件版本 |
|
0x21 |
读取电机磁链 | ||
|
0x22 |
读取相电阻和相电感 | ||
|
0x23 |
读取相电流 | ||
|
0x24 |
读取总线电压 | ||
|
0x25 |
读取电流环 PID 参数 | ||
|
0x26 |
读取速度环 PID 参数 | ||
|
0x27 |
读取位置环 PID 参数 | ||
|
0x28 |
读取输入累计脉冲值 | ||
|
0x29 |
读取电机实时转速 | ||
|
0x2A |
读取电机实时位置 | ||
|
0x2B |
读取电机位置误差 | ||
|
0x2C |
读取电机运行状态 | ||
|
0x2D |
读取堵转标志 | ||
|
0x2E |
读取堵转电流 | ||
|
0x2F |
读取使能状态 | ||
|
0x30 |
读取到位标志 | ||
|
0x31 |
读取系统参数 | ||
|
0x32 |
读取驱动参数 | ||
|
|
| ||
|
设置参数指令 (0x60 ~ 0x7F) |
06H |
0x60 |
设置从机地址 |
|
0x62 |
设置工作模式 | ||
|
10H |
0x63 |
设置位置环 PID 参数 | |
|
06H |
0x64 |
设置位置环最大力矩限制 | |
|
0x65 |
设置细分 | ||
|
0x66 |
设置目标电流 | ||
|
10H |
0x67 |
设置串口波特率 | |
|
06H |
0x69 |
设置 Modbus 协议 | |
|
0x6A |
设置堵转保护功能 | ||
|
0x6B |
设置堵转电流 | ||
|
0x6D |
设置 DIR 正转电平 | ||
|
0x6E |
设置 EN 脚有效电平 | ||
|
0x70 |
设置按键锁定 | ||
|
0x71 |
设置自动熄屏 | ||
|
0x72 |
设置 IO 启动电平 | ||
|
|
| ||
|
限位回零指令 (0x90 ~ 0x9F) |
10H |
0x90 |
设置回零零点位置 |
|
0x91 |
设置有无限位回零 | ||
|
06H |
0x92 |
触发回零 | |
|
0x93 |
强制中断并退出回零操作 | ||
|
04H |
0x94 |
读取回零参数 | |
|
10H |
0x95 |
修改原点回零超时时间 | |
|
04H |
0x96 |
读取回零状态 | |
|
06H |
设置上电自动回零 | ||
|
10H |
0x98 |
设右限位原点位置 | |
|
06H |
0x99 |
左右限位开关 | |
|
|
| ||
|
运动控制指令 (0xF0 ~ 0xFF) |
10H |
0xE0 |
开环速度模式控制 |
|
0xE1 |
开环绝对位置模式控制 | ||
|
0xE2 |
开环相对位置模式控制 | ||
|
06H |
0xE3 |
开环脉冲模式控制 | |
|
10H |
0xE4 |
IO 启停模式 | |
|
10H |
0xF0 |
力矩模式控制 | |
|
0xF1 |
速度模式控制 | ||
|
0xF2 |
绝对位置模式控制 | ||
|
0xF3 |
相对位置模式控制 | ||
|
06H |
0xF4 |
脉冲模式控制 | |
|
10H |
0xF5 |
脉宽位置模式控制 | |
|
0xF6 |
脉宽力矩模式控制 | ||
|
0xF7 |
脉宽速度模式控制 | ||
|
06H |
0xF8 |
将当前位置角度清零 | |
|
0xF9 |
解除堵转保护 | ||
|
0xFA |
电机使能控制 | ||
|
0xFB |
清除状态(堵转、刹车、失能) | ||
|
0xFC |
立即停止(刹车) | ||
5.1 指令格式说明
Modbus-rtu 04H功能码指令格式,如表5.1.1所示:
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
addr |
04H |
00H |
00H |
00H |
00H |
CRC16_H |
CRC16_L |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 n 数据 |
CRC16 校验码 | ||
|
高字节 |
低字节 |
高 / 低字节 |
高字节 |
低字节 | |||
|
addr |
04H |
00H |
00H |
00H |
… |
CRC16_H |
CRC16_L |
表5.1.1 Modbus-rtu 04H功能码指令格式说明
Modbus-rtu 06H功能码指令格式,如表5.1.2所示:
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
addr |
06H |
00H |
00H |
00H |
00H |
CRC16_H |
CRC16_L |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
addr |
06H |
00H |
00H |
00H |
00H |
CRC16_H |
CRC16_L |
表5.1.2 Modbus-rtu 06H功能码指令格式说明
Modbus-rtu 10H功能码指令格式,如表5.1.3所示:
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1 数据 |
寄存器 ...n 数据 |
CRC16 校验码 | |||||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | |||
|
addr |
10H |
00H |
00H |
00H |
00H |
00H |
00H |
00H |
00H |
00H |
CRC16_H |
CRC16_L |
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
addr |
10H |
00H |
00H |
00H |
00H |
CRC16_H |
CRC16_L |
|
|
|
|
|
表5.1.3 Modbus-rtu 10H功能码指令格式说明
1,从机地址范围:0~255,其中0为广播地址,1~255为从机地址(默认地址为1)
2,功能码:用到的Modbus-rtu协议功能码有:04H、06H、10H
3,寄存器起始:对应自定义协议的功能码(高字节没用到,补0即可)
4,校验码:采用的校验方式是CRC16。
5,时序要求(单条指令内):主机发送指令时,整帧数据(从 0xC5 到 0x5C)必须 连续输出,字节之间不允许超过 1 个字节周期的延时,否则可能导致从机接收失败。
6,时序要求(指令间隔):两条完整指令之间应保持 至少 2ms 的时间间隔,以保证从机有足够时间完成上一条指令的解析与处理。
注意:
l 使用广播地址发送命令,从机均不应答。
l 主机发送的从机地址,如果总线上没有匹配的从机,也不应答。
为了方便大家熟悉和查找相关指令,我们把指令分为了四类:系统类指令、参数类指令、运动类指令、回零类指令。详细的指令描述请看下文。
5.2 系统类指令说明
5.2.1 校准编码器指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
01H |
00H |
01H |
19H |
CAH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
01H |
00H |
01H |
19H |
CAH |
该指令用于校准编码器。注意:校准编码器前,请确保电机是空载状态!!!
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 01 00 01 19 CA
上行帧数据为:01 06 00 01 00 01 19 CA
5.2.2 复位重启指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
02H |
00H |
01H |
E9H |
CAH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
02H |
00H |
01H |
E9H |
CAH |
该指令用于复位重启驱动板,不会修改配置参数。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 02 00 01 E9 CA
上行帧数据为:01 06 00 02 00 01 E9 CA
5.2.3 恢复出厂设置指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
03H |
00H |
01H |
B8H |
0AH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
03H |
00H |
01H |
B8H |
0AH |
该指令用于恢复出厂设置,把配置参数修改为出厂默认值。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 03 00 01 B8 0A
上行帧数据为:01 06 00 03 00 01 B8 0A
5.2.4 参数保存指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
04H |
00H |
01H |
09H |
CBH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
04H |
00H |
01H |
09H |
CBH |
该指令用于保存所有掉电不丢失的配置参数。
寄存器数据没有用到,默认给01H。
举个例子:
下行帧数据为:01 06 00 04 00 01 09 CB
上行帧数据为:01 06 00 04 00 01 09 CB
5.3 参数类指令说明
5.3.1 读取软硬件版本指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
20H |
00H |
01H |
30H |
00H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取驱动器软硬件版本号。
举个例子:
下行帧数据为:01 04 00 20 00 01 30 00
上行帧数据为:01 04 02 0A 0A 3F 97
Byte1:0AH(即十进制10),表示固件版本号为V1.0
Byte2:0AH(即十进制10),表示硬件版本号为V1.0
5.3.2 读取电机磁链指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
21H |
00H |
02H |
21H |
C1H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 2 数据 |
CRC16 校验码 | ||
|
高 / 低字节 |
高 / 低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | ||
该指令用于读取电机磁链(单位mWb)。(float → uint8_t[4])
举个例子:
下行帧数据为:01 04 00 21 00 02 21 C1
上行帧数据为:01 04 04 40 97 0A 3D 98 D9
Byte1~ Byte4:寄存器数据我们做了处理,采用大端序输出。即0x40970A3D表示电机磁链参数为4.72mWb。
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.3 读取相电阻和相电感指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
22H |
00H |
04H |
51H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~4 数据 |
CRC16 校验码 | |||
|
1~4 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
08H |
Byte1~ Byte8 |
CRC16_H |
CRC16_L | ||
该指令用于读取电机相电阻和相电感(含MOS内阻)。(float → uint8_t[4])
Byte1~ Byte4:表示电机相电阻参数(单位Ω)
Byte5~ Byte8:表示电机相电感参数(单位mH)
举个例子:
下行帧数据为:01 04 00 22 00 04 51 C3
上行帧数据为:01 04 08 3F DC D7 D3 40 88 02 D4 79 B4
Byte1~ Byte4:0x3FDCD7D3表示电机相电阻参数为1.725Ω
Byte5~ Byte8:0x408802D4表示电机相电感参数为4.250mH
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.4 读取相电流指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
23H |
00H |
01H |
C0H |
00H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机相电流(单位:mA)。(类型:int16_t)
举个例子:
下行帧数据为:01 04 00 23 00 01 C0 00
上行帧数据为:01 04 02 00 6C B9 1D
Byte1~ Byte2:0x006C表示电机相电流为108mA
5.3.5 读取总线电压指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
24H |
00H |
02H |
31H |
C0H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 2 数据 |
CRC16 校验码 | ||
|
高 / 低字节 |
高 / 低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | ||
该指令用于读取驱动器总线电压(单位:V)。(float → uint8_t[4])
举个例子:
下行帧数据为:01 04 00 24 00 02 31 C0
上行帧数据为:01 04 04 41 BF C7 C0 8C 3C
Byte1~ Byte4:0x41BFC7C0表示驱动器总线电压为23.97V
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.6 读取电流环PID参数指令
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
25H |
00H |
08H |
E0H |
07H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~8 数据 |
CRC16 校验码 | |||
|
1~8 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
10H |
Byte1~ Byte16 |
CRC16_H |
CRC16_L | ||
该指令用于读取电流环PID参数。(float → uint8_t[4])
Byte1~ Byte4:表示Q轴PI参数P
Byte5~ Byte8:表示Q轴PI参数I
Byte9~ Byte12:表示D轴PI参数P
Byte13~ Byte16:表示D轴PI参数I
举个例子:
下行帧数据为:01 04 00 25 00 08 E0 07
上行帧数据为:01 04 10 37 27 C5 AC 35 86 37 BD 37 27 C5 AC 35 86 37 BD BB 15
Byte1~ Byte4: 0x3727C5AC表示Q轴PI参数p为0.00001
Byte5~ Byte8:0x358637BD表示Q轴PI参数I为0.000001
Byte9~ Byte12:0x3727C5AC表示D轴PI参数P为0.00001
Byte13~ Byte16:0x358637BD表示D轴PI参数I为0.000001
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.7 读取速度环PID参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
26H |
00H |
06H |
91H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | |||
|
1~6 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | ||
该指令用于读取速度环PID参数。(类型:uint32_t)
Byte1~ Byte4:表示PID参数P
Byte5~ Byte8:表示PID参数I
Byte9~ Byte12:表示PID参数D
举个例子:
下行帧数据为:01 04 00 26 00 06 91 C3
上行帧数据为:01 04 0C 00 00 00 03 00 00 00 04 00 00 00 00 70 87
Byte1~ Byte4:0x00000004表示Q轴PI参数p为3
Byte5~ Byte8:0x00000004表示Q轴PI参数I为4
Byte9~ Byte12:0x00000000表示D轴PI参数P为0
5.3.8 读取位置环PID参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
27H |
00H |
06H |
C0H |
03H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | |||
|
1~6 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | ||
该指令用于读取位置环PID参数。(类型:uint32_t)
Byte1~ Byte4:表示PID参数P
Byte5~ Byte8:表示PID参数I
Byte9~ Byte12:表示PID参数D
举个例子:
下行帧数据为:01 04 00 27 00 06 C0 03
上行帧数据为:01 04 0C 00 00 01 2C 00 00 00 1E 00 00 01 7C A0 C0
Byte1~ Byte4:0x0000012C表示Q轴PI参数p为300
Byte5~ Byte8:0x0000001E表示Q轴PI参数I为30
Byte9~ Byte12:0x0000017C表示D轴PI参数P为380
5.3.9 读取输入累计脉冲数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
28H |
00H |
02H |
F1H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 2 数据 |
CRC16 校验码 | ||
|
高 / 低字节 |
高 / 低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | ||
该指令用于读取输入累计脉冲数。(类型:uint32_t)
举个例子:
下行帧数据为:01 04 00 28 00 02 F1 C3
上行帧数据为:01 04 04 00 00 C8 00 AC 44
Byte1~ Byte4:0x0000C800表示输入累计脉冲数为51200
5.3.10 读取电机实时转速指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
29H |
00H |
01H |
E0H |
02H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机实时转速(单位:RPM)。(类型:int16_t)
举个例子:
下行帧数据为:01 04 00 29 00 01 E0 02
上行帧数据为:01 04 02 00 1F F8 F8
Byte1~ Byte2:0x001F表示电机实时转速为31RPM
5.3.11 读取电机实时位置指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2AH |
00H |
02H |
50H |
03H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 2 数据 |
CRC16 校验码 | ||
|
高 / 低字节 |
高 / 低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | ||
该指令用于读取电机实时位置(51200代表一圈)。(类型:int32_t)
举个例子:
下行帧数据为:01 04 00 2A 00 02 50 03
上行帧数据为:01 04 04 00 07 D0 00 17 85
Byte1~ Byte4:0x0007D000表示电机实时位置为512000
4.3.12 读取电机位置误差指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2BH |
00H |
02H |
01H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
寄存器 2 数据 |
CRC16 校验码 | ||
|
高 / 低字节 |
高 / 低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | ||
该指令用于读取电机位置误差(51200代表一圈)。(类型:int32_t)
举个例子:
下行帧数据为:01 04 00 2B 00 02 01 C3
上行帧数据为:01 04 04 00 00 00 00 FB 84
Byte1~ Byte4:0x00000000表示电机实时位置为0
5.3.13 读取电机运行状态指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2CH |
00H |
01H |
F0H |
03H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机运行状态。(类型:uint8_t)
Byte1:没用到,补0即可
Byte2:表示电机运行状态,有以下可能:
0:停止状态
1:任务完成状态
2:正在运行
3:过载状态
4:堵转状态
5:欠压状态
举个例子:
下行帧数据为:01 04 00 2C 00 01 F0 03
上行帧数据为:01 04 02 00 01 78 F0
Byte2:0x01表示电机在任务完成状态
5.3.14 读取电机堵转标志指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2DH |
00H |
01H |
A1H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机堵转标志。(类型:uint8_t)
Byte1:没用到,补0即可
Byte2:表示电机堵转标志,有以下可能:
0:未堵转 1:堵转
举个例子:
下行帧数据为:01 04 00 2D 00 01 A1 C3
上行帧数据为:01 04 02 00 00 B9 30
Byte2:0x00表示电机未堵转
5.3.15 读取堵转电流指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2EH |
00H |
01H |
51H |
C3H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取堵转电流(单位:mA)。(类型:int16_t)
举个例子:
下行帧数据为:01 04 00 2E 00 01 51 C3
上行帧数据为:01 04 02 05 DC BB F9
Byte1~ Byte2:0x05DC表示堵转电流1500mA
5.3.16 读取电机使能状态指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
2FH |
00H |
01H |
00H |
03H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机使能状态。(类型:uint8_t)
Byte1:没用到,补0
Byte2:表示电机使能状态,有以下可能:
0:使能电机
1:失能电机
举个例子:
下行帧数据为:01 04 00 2F 00 01 00 03
上行帧数据为:01 04 02 00 00 B9 30
Byte2:0x00表示失能电机
5.3.17 读取电机到位标志指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
30H |
00H |
01H |
31H |
C5H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1 数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 | ||||
|
01H |
04H |
02H |
Byte1 |
Byte2 |
CRC16_H |
CRC16_L | |
该指令用于读取电机到位标志。(类型:uint8_t)
Byte1:没用到,补0
Byte2:表示电机到位标志,有以下可能:
0:未到位
1:到位
举个例子:
下行帧数据为:01 04 00 30 00 01 31 C5
上行帧数据为:01 04 02 00 01 78 F0
Byte2:0x01表示电机到位
5.3.18 读取系统参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
31H |
00H |
14H |
A1H |
CAH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~20 数据 |
CRC16 校验码 | |||
|
1~20 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
28H |
Byte1~ Byte40 |
CRC16_H |
CRC16_L | ||
该指令用于读取系统参数,这部分参数都是只读属性。
上行帧的指令数据:
Byte1~ Byte4:电机总线电压(单位V)(float → uint8_t[4])
Byte5~ Byte6:读取相电流(单位mA)(类型int16_t)
Byte7~ Byte10:电机磁链参数(单位mWb)(float → uint8_t[4])
Byte11~ Byte14:电机相电阻参数(单位Ω)(float → uint8_t[4])
Byte15~ Byte18:电机相电感参数(单位mH)(float → uint8_t[4])
Byte19~ Byte20:读取实时转速(单位RPM)(类型int16_t)
Byte21~ Byte24:读取目标位置(51200代表一圈)(类型int32_t)
Byte25~ Byte28:读取实时位置(51200代表一圈)(类型int32_t)
Byte29~ Byte32:读取位置误差(51200代表一圈)(类型int32_t)
Byte33~ Byte36:读取脉冲数(类型uint32_t)
Byte37:电机使能状态
0:电机使能
1:电机失能
Byte38:电机到位标志,有以下可能:
0:未到位
1:到位
Byte39:电机堵转标志,有以下可能:
0:未堵转
1:堵转
Byte40:地址模式,有以下可能:
0:从机地址模式
1:分组地址模式
举个例子:
下行帧数据为:01 04 00 31 00 14 A1 CA
上行帧数据为:01 04 28 41 C0 00 00 00 0F 40 88 5D 39 3F ED EB 28 40 8D 27 10 00 00 00 07 D0 00 00 07 D0 00 00 00 00 00 00 00 7D 02 00 01 00 00 B6 0E
Byte1~ Byte4:电机总线电压 24.0V
Byte5~ Byte6:读取相电流 15mA
Byte7~ Byte10:电机磁链 4.26mWb
Byte11~ Byte14:电机相电阻 1.86Ω
Byte15~ Byte18:电机相电感 4.41mH
Byte19~ Byte20:读取实时转速 0RPM
Byte21~ Byte24:读取目标位置(51200代表一圈)512000
Byte25~ Byte28:读取实时位置(51200代表一圈)512000
Byte29~ Byte32:读取位置误差(51200代表一圈)0
Byte33~ Byte36:读取脉冲数 32002
Byte37:0:电机使能
Byte38:1:到位
Byte39:0:未堵转
Byte40:0:从机地址模式
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.19 读取驱动参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
04H |
00H |
32H |
00H |
10H |
50H |
09H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
字节数 |
寄存器 1~16 数据 |
CRC16 校验码 | |||
|
1~16 组高 / 低字节 |
高字节 |
低字节 | |||||
|
01H |
04H |
20H |
Byte1~ Byte32 |
CRC16_H |
CRC16_L | ||
该指令用于读取全部配置参数。
上行帧的指令数据:
Byte1:电机工作模式,有以下可能:(类型uint8_t)
0:通信位置模式
1:通信速度模式
2:通信力矩模式
3:脉冲模式
4:脉宽位置模式
5:脉宽速度模式
6:脉宽力矩模式
7:回零模式
Byte2:指令回响状态,有以下可能:
0:正常回响
1:不回响
Byte3~ Byte6 串口波特率(单位bps)(类型uint32_t)
Byte7~ Byte8:CAN波特率(单位Kbps)(类型uint16_t)
Byte9:DIR正转电平,有以下可能:
0:高电平正转
1:低电平正转
Byte10:EN脚有效电平,有以下可能:
0:EN引脚低电平使能
1:EN引脚高电平使能
2:EN引脚保持有效
Byte11~ Byte12:设置的细分(类型uint16_t)
Byte13~ Byte14:位置环最大力矩(单位:mA)(类型int32_t)
Byte15~ Byte18:位置环PID参数P(类型uint32_t)
Byte19~ Byte22:位置环PID参数I(类型uint32_t)
Byte23~ Byte26:位置环PID参数D(类型uint32_t)
Byte27~ Byte28:堵转电流(单位:mA)(类型int16_t)
Byte29:电机堵转保护功能标志
0:关闭堵转保护功能
1:开启堵转保护功能
Byte30:按键上锁状态,有以下可能:
0:解锁
1:上锁
Byte31~ Byte34:速度环PID参数P(类型uint32_t)
Byte35~ Byte38:速度环PID参数I(类型uint32_t)
Byte39~ Byte42:速度环PID参数D(类型uint32_t)
Byte43:自动熄屏状态,有以下可能:
0:关闭自动熄屏
1:开启自动熄屏
Byte44:IO启停电平,有以下可能:
0:低电平启动
1:高电平启动
举个例子:
下行帧数据为:01 04 00 32 00 10 50 09
上行帧数据为:01 04 20 03 00 00 01 C2 00 01 F4 00 01 00 10 0B B8 00 00 01 2C 00 00 00 1E 00 00 01 7C 05 DC 01 00 00 EB A3
Byte1:3:脉冲模式
Byte2:0:正常回响
Byte3~ Byte4:串口波特率为:115200
Byte7~ Byte8:CAN速率为:500K
Byte9:0:高电平正转
Byte10:1:EN引脚高电平使能
Byte11~ Byte12:细分为:16
Byte13~ Byte14:位置环最大力矩:3000
Byte15~ Byte18:PID参数P为300
Byte19~ Byte22:PID参数I为30
Byte23~ Byte26:PID参数D为380
Byte27~ Byte28:堵转电流1500 mA
Byte29:1:开启堵转保护功能
Byte30:0:按键解锁
Byte31:保留(未用到补0)
Byte32:0:关闭自动熄屏
4.3.2小节有介绍:STM32(小端系统)联合体存取float和uint32_t数据简明指南。
5.3.20 设置从机地址指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
60H |
00H |
02H |
08H |
15H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
60H |
00H |
02H |
08H |
15H |
该指令用于设置从机地址(范围:1~255)。注意:总线上不能设置两个一样的从机地址,应答会冲突。 寄存器数据高字节没有用到,默认补00H(后续不再赘述)。
举个例子:
下行帧数据为:01 06 00 60 00 02 08 15
上行帧数据为:01 06 00 60 00 02 08 15
注意:下次再想跟这个从机通信,注意从机地址要改成2了!!!
5.3.21 设置工作模式指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
62H |
00H |
01H |
E9H |
D4H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
62H |
00H |
01H |
E9H |
D4H |
该指令用于设置工作模式,有以下可能:
0x00:通信位置模式
0x01:通信速度模式
0x02:通信力矩模式
0x03:脉冲模式
0x04:脉宽位置模式
0x05:脉宽速度模式
0x06:脉宽力矩模式
0x07:回零模式
举个例子:
下行帧数据为:01 06 00 62 00 01 E9 D4
上行帧数据为:01 06 00 62 00 01 E9 D4
新的工作模式为0x01:通信速度模式
5.3.22 设置位置环PID参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~6 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
63H |
00H |
06H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
63H |
00H |
06H |
B0H |
15H |
|
|
|
|
|
该指令用于设置位置环PID参数。
下行帧的寄存器1~6数据:
Byte1~ Byte4:PID参数P(类型uint32_t)
Byte5~ Byte8:PID参数I(类型uint32_t)
Byte9~ Byte12:PID参数D(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 63 00 06 0C 00 00 01 2C 00 00 00 1E 00 00 01 7C 57 79
上行帧数据为:01 10 00 63 00 06 B0 15
设置的位置PID参数为:
Byte1~ Byte4:0x0000012C表示Q轴PI参数p为300
Byte5~ Byte8:0x0000001E表示Q轴PI参数I为30
Byte9~ Byte12:0x0000017C表示D轴PI参数P为380
5.3.23 设置速度/位置环最大力矩限制指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
64H |
05H |
DCH |
CAH |
DCH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
64H |
05H |
DCH |
CAH |
DCH |
该指令用于设置速度/位置环最大力矩限制(范围:0~3000)(单位:mA)。
举个例子:
下行帧数据为:01 06 00 64 05 DC CA DC
上行帧数据为:01 06 00 64 05 DC CA DC
设置位置环最大力矩限制为0x05DC(即1500mA)
5.3.24 设置细分指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
65H |
00H |
10H |
98H |
19H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
65H |
00H |
10H |
98H |
19H |
该指令用于设置细分(范围:1~256)。
举个例子:
下行帧数据为:01 06 00 65 00 10 98 19
上行帧数据为:01 06 00 65 00 10 98 19
设置细分为16
5.3.25 设置目标电流指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
66H |
05H |
DCH |
6BH |
1CH |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
66H |
05H |
DCH |
6BH |
1CH |
该指令用于设置目标电流(范围:-3000~3000)(单位:mA)。
举个例子:
下行帧数据为:01 06 00 66 05 DC 6B 1C
上行帧数据为:01 06 00 66 05 DC 6B 1C
设置目标电流为0x05DC(即1500mA)
5.3.26 设置串口波特率指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~2 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~2 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
67H |
00H |
02H |
04H |
Byte1~ Byte4 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
67H |
00H |
02H |
F0H |
17H |
|
|
|
|
|
该指令用于设置串口波特率(范围:0~3000000)(默认:115200)(单位bps)。
下行帧的寄存器1~2数据:
Byte1~ Byte4:串口波特率
举个例子:
下行帧数据为:01 10 00 67 00 02 04 00 01 C2 00 B4 C1
上行帧数据为:01 10 00 67 00 02 F0 17
设置串口波特率为115200 bps
5.3.27 设置协议指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
69H |
00H |
01H |
98H |
16H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
69H |
00H |
01H |
98H |
16H |
该指令用于设置使用正点原子自定义协议(默认)、modbus-rtu协议、canopen协议,有以下可能:
0:使用正点原子自定义协议 1:使用modbus-rtu协议 2:使用canopen协议
举个例子:
下行帧数据为:01 06 00 69 00 01 98 16
上行帧数据为:01 06 00 69 00 01 98 16
寄存器数据为1:使用modbus-rtu协议
注意:如果设置为0,那么modbus-rtu协议马上就不能通信了,需要通过屏幕菜单栏设置协议选择modbus;或者用正点原子自定义协议指令设置回来!!!
5.3.28 设置堵转保护功能指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6AH |
00H |
01H |
68H |
16H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6AH |
00H |
01H |
68H |
16H |
该指令用于设置堵转保护功能,有以下可能:
0:关闭堵转保护功能
1:开启堵转保护功能
举个例子:
下行帧数据为:01 06 00 6A 00 01 68 16
上行帧数据为:01 06 00 6A 00 01 68 16
寄存器数据为1:开启堵转保护功能
5.3.29 设置堵转电流指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6BH |
0BH |
B8H |
FFH |
54H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6BH |
0BH |
B8H |
FFH |
54H |
该指令用于设置堵转电流(范围:0~3000)(单位:mA)。
举个例子:
下行帧数据为:01 06 00 6B 0B B8 FF 54
上行帧数据为:01 06 00 6B 0B B8 FF 54
设置堵转电流为3000mA
5.3.30 电机正反转DIR控制指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6DH |
00H |
01H |
D9H |
D7H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6DH |
00H |
01H |
D9H |
D7H |
该指令用于设置DIR引脚控制电机正反转的有效电平(仅用于脉冲模式),有以下可能:
0:DIR引脚高电平正转
1:DIR引脚低电平正转
举个例子:
下行帧数据为:01 06 00 6D 00 01 D9 D7
上行帧数据为:01 06 00 6D 00 01 D9 D7
寄存器数据为1:DIR引脚低电平正转
5.3.31 设置EN引脚有效电平指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6EH |
00H |
01H |
D9H |
D7H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6DH |
00H |
01H |
D9H |
D7H |
该指令设置EN引脚有效电平(仅用于脉冲模式),有以下可能:
0:EN引脚低电平使能
1:EN引脚高电平使能
2:EN引脚保持有效
举个例子:
下行帧数据为:01 06 00 6E 00 01 29 D7
上行帧数据为:01 06 00 6E 00 01 29 D7
寄存器数据为1:EN引脚高电平使能
5.3.32 设置按键锁定指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
70H |
00H |
01H |
49H |
D1H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
6DH |
00H |
01H |
49H |
D1H |
该指令用于设置按键锁定,有以下可能:
0:按键解锁
1:按键上锁
举个例子:
下行帧数据为:01 06 00 70 00 01 49 D1
上行帧数据为:01 06 00 70 00 01 49 D1
寄存器数据为1:按键上锁
注意:如果设置为1,那么按键功能马上失效,需要通过屏幕菜单栏选择恢复出厂设置或者发送设置按键解锁指令,方可恢复按键功能!!!
5.3.33 设置自动熄屏指令
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
71H |
00H |
01H |
18H |
11H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
71H |
00H |
01H |
18H |
11H |
该指令用于设置自动熄屏,长时间无操作会自动熄屏,有以下可能:
0:关闭自动熄屏
1:开启自动熄屏
举个例子:
下行帧数据为:01 06 00 71 00 01 18 11
上行帧数据为:01 06 00 71 00 01 18 11
寄存器数据为1:开启自动熄屏
注意:如果设置为1,那么长时间无操作时会自动熄屏,可通过屏幕菜单栏自动熄屏或恢复出厂设置,也可发送关闭自动熄屏指令,恢复屏幕常亮!!!
5.3.34 设置IO启动电平
|
下行帧 ( 上位机 --> 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
72H |
00H |
01H |
E8H |
11H |
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) | |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数据 |
CRC16 校验码 | |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 | ||
|
01H |
06H |
00H |
72H |
00H |
01H |
E8H |
11H |
该指令用于设置IO启动电平,有以下可能:
0:低电平启动
1:高电平启动
举个例子:
下行帧数据为:01 06 00 72 00 01 E8 11
上行帧数据为:01 06 00 72 00 01 E8 11
寄存器数据为1:高电平启动
5.3.35 设置速度环PID参数指令
|
下行帧 ( 上位机 --> 驱动板 ) | ||||||||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
字节数 |
寄存器 1~6 数据 |
CRC16 校验码 | ||||||
|
高字节 |
低字节 |
高字节 |
低字节 |
1~6 组高 / 低字节 |
高字节 |
低字节 | ||||||
|
01H |
10H |
00H |
73H |
00H |
06H |
0CH |
Byte1~ Byte12 |
CRC16_H |
CRC16_L | |||
|
|
|
|
|
|
| |||||||
|
上行帧 ( 上位机 <-- 驱动板 ) |
|
|
|
|
| |||||||
|
从机地址 |
功能码 |
寄存器起始地址 |
寄存器数量 |
CRC16 校验码 |
|
|
|
|
| |||
|
高字节 |
低字节 |
高字节 |
低字节 |
高字节 |
低字节 |
|
|
|
|
| ||
|
01H |
10H |
00H |
63H |
00H |
06H |
B0H |
15H |
|
|
|
|
|
该指令用于设置位置环PID参数。
下行帧的寄存器1~6数据:
Byte1~ Byte4:PID参数P(类型uint32_t)
Byte5~ Byte8:PID参数I(类型uint32_t)
Byte9~ Byte12:PID参数D(类型uint32_t)
举个例子:
下行帧数据为:01 10 00 73 00 06 0C 00 00 01 2C 00 00 00 1E 00 00 01 7C 5A B5
上行帧数据为:01 10 00 73 00 06 B1 D0
设置的位置PID参数为:
Byte1~ Byte4:0x0000012C表示Q轴PI参数p为300
Byte5~ Byte8:0x0000001E表示Q轴PI参数I为30
Byte9~ Byte12:0x0000017C表示D轴PI参数P为380
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3176232/ ,如需转载,请注明出处,否则将追究法律责任。