MKS SERVO42E&57E 闭环步进电机_系列2 串口(RS485)指令说明


第1部分 产品介绍

MKS SERVO42E/57E 闭环步进电机是创客基地为满足市场需求,按工业级标准自主研发的一款产品。具备脉冲接口、RS485接口以及CAN接口,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈,有效防止电机丢步。适合小型机械臂,3D打印机,雕刻机,写字机,非标自动化产品以及电子竞赛等应用。

在这里插入图片描述

第2部分 串行数据格式说明

在这里插入图片描述

1.下行帧头FA,上行帧头FB。
2.从机地址(addr)范围00~255,默认地址为01。
其中 00 为广播地址;
地址01~10可在显示屏菜单UartAddr选项设置;
大于10的地址需通过串口指令设置。
3.功能码(code)执行相应指令,例如0x80执行校准指令。
4.指令数据或返回数据,详见《串口指令说明》。
5.CRC校验码为 CHECKSUM 8bit
例如 指令“FA 01 80 00 CRC”
CRC = (0xFA + 0x01 + 0x80 + 0x00) & 0xFF = 0x17B & 0xFF = 0x7B
6.上位机发指令时,单条指令(FA … CRC)字节之间的时序必须连续,不能有超过一个字节延时,否则下位机可能接收指令失败。

注意:使用广播地址或分组地址发送命令,从机不应答。

第3部分 串行指令说明

注意:使用广播地址或分组地址发送命令,从机不应答。

3.1 读取参数指令

1.发送FA 01 30 CRC,读取进位制多圈编码器值。
注:编码器单圈值范围 0~0x4000
返回FB 01 30,int32_t类型进位值,uint16_t类型当前编码器值和校验码CRC。
记录上电后(使能或不使能),编码器记录的电机转动范围。
低16位记录当前编码器值,范围为00x4000,表示0360°。
高32位记录编码器进位值,即圈数。
进位规则:当编码器值大于0x4000,进位值加1
当编码器值小于0,进位值减1
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x13FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFF3FF0。

2.发送FA 01 31 CRC,读取累加制多圈编码器值。
注:编码器单圈值范围 0~0x4000
返回FB 01 31,int48_t类型多圈编码器值和校验码CRC。
记录上电后(使能或不使能),编码器记录的电机转动范围。
累加规则: 正转一圈,多圈编码器值 +0x4000;
反转一圈,多圈编码器值 -0x4000;
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x000000007FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFFFFF0。
注:按坐标值相对/绝对运动时,使用该编码器值作为坐标。

3.发送FA 01 32 CRC,读取电机实时转速。
返回FB 01 32, int16_t类型电机实时转速和校验码CRC。
注:转速单位为RPM, 正转时转速大于0,反转时转速小于0。
4.发送FA 01 33 CRC,读取输入累计脉冲数。
返回FB 01 33,int32_t类型的输入累计脉冲数和校验码CRC。

5.发送FA 01 34 CRC,读取IO端口状态。
返回FB 01 34,uint8_t类型的端口状态和校验码CRC。
在这里插入图片描述

PEND 1:已到位 0:未到位
ALM 1:未告警 0:已告警

6.发送FA 01 39 CRC,读取位置角度误差。
返回FB 01 39,int32_t类型的位置角度误差和校验码CRC,也就是你想要控制的位置角度减去电机的实时角度位置得到的差值,单位:051200表示0360°,比如误差为1°时,数值为51200/360°= 142.22,以此类推。

7.发送FA 01 3A CRC,读取闭环驱动板的使能状态。
返回FB 01 3A,uint8_t类型的闭环驱动板的使能状态和校验码CRC,也就是En引脚的使能状态。用串口控制时,可以通过该命令获取驱动板的使能状态。
已使能 :返回FB 01 3A 01 37
没使能 :返回FB 01 3A 00 36

8.发送FA 01 3D CRC,解除堵转状态。
当电机发生堵转时,发送该命令可以解除当前堵转状态。
解除堵转后,如果再次发生堵转,仍然会触发堵转保护。
解除成功 :返回 FB 01 3D 01 3A
解除失败 :返回 FB 01 3D 00 39
注:也可通过 “EN电平无效方式”解除堵转状态。

9.发送FA 01 3E CRC,读取堵转标志位。
返回FB 01 3E,uint8_t的堵转标志和校验码CRC,当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。
堵转 :返回 FB 01 3E 01 3B
没堵转 :返回 FB 01 3E 00 3A

3.2 设置系统参数指令

1.校准电机
校准仅判断电机转向和编码器关系,即电机顺时针转时,编码器值增加或减少,如电机相线按出厂默认接线,无需校准。
发送FA 01 80 00 CRC校准电机。
比如:
发送FA 01 80 00 7B,校准电机。
校准中…, 返回 FB 01 80 00 7C;
校准成功,返回 FB 01 80 01 7D;
校准失败,返回 FB 01 80 02 7E。

注:校准时电机会转动15度,完成后自动复位重启。

2.设置工作模式
发送FA 01 82 __ CRC,设置工作模式。
X0 脉冲+脉冲 开环FOC模式 (X=0 有编码器 X=1 无编码器)
X1 脉冲+方向 开环FOC模式 (X=0 有编码器 X=1 无编码器)
02 脉冲+脉冲 闭环FOC模式
03 脉冲+方向 闭环FOC模式(默认)
X4 RS485总线 开环FOC模式 (X=0 有编码器 X=1 无编码器)
05 RS485总线 闭环FOC模式
比如:
发送FA 01 82 05 82,RS485总线 闭环模式。
设置成功,返回 FB 01 82 01 7F;
设置失败,返回 FB 01 82 00 7E。
注1:脉冲控制模式,最高输入频率300KHz
总线控制模式,最高转速3000RPM
注2:X=0 有编码器,即电机轴有磁铁,驱动板安装在背后,可以读取编码器值
X=1 无编码器,即电机轴无磁铁,驱动板可任意安装,不能读取编码器值

3.设置工作电流
发送FA 01 83 __ CRC,设置电流值。
在这里插入图片描述

SERVO42E 最大工作电流 3000mA (默认1600mA)
SERVO57E 最大工作电流 5200mA (默认3200mA)
比如:
发送FA 01 83 02 30 B0,设置电流560mA。
设置成功,返回 FB 01 83 01 80;
设置失败,返回 FB 01 83 00 7F。

4.设置细分值
发送FA 01 84 MS CRC,设置细分值。(默认16细分)
MS取值范围(10进制)如下:
0,2,4,8,16,32,64,128,
5,10,20,25,40,50,100,200
注:0对应256细分
比如:
发送FA 01 84 10 8F,设置为16细分
发送FA 01 84 0A 89,设置为10细分
发送FA 01 84 00 7F,设置为256细分
以此类推…
设置成功,返回 FB 01 84 01 81
设置失败,返回 FB 01 84 00 80

5.设置En 引脚有效电平
发送FA 01 85 __ CRC,设置En 引脚有效电平。
00 对应低电平使能(L)(默认值)
01 对应高电平使能(H)
02 对应一直使能(Hold)
比如:
发送FA 01 85 00 80,设置为低电平使能。
设置成功,返回 FB 01 85 01 82;
设置失败,返回 FB 01 85 00 81。
注1:设置成功后,延迟100ms才能接收脉冲信号。
注2:仅对脉冲控制模式有效。

6.设置电机旋转方向
发送FA 01 86 __

<think>好的,用户想查找关于上位机控制步进电机的教程、示例和代码。首先,我需要回忆提供的引用内容,看看是否有相关资源。引用1和引用2提到了MKS SERVO系列闭环步进电机的上位机通讯示例,特别是百度网盘链接可能有相关资料。引用3则提供了Python控制K210的代码示例。 用户可能需要具体的步骤,比如如何通过串口配置参数,如何编写上位机软件,或者如何与电机通信。需要确认引用中的资料是否包含这些内容。引用1和2提到了串口参数配置和接线示意图,这些对硬件连接很重要。引用3的代码虽然针对K210,但可能对编程部分有帮助。 接下来,我应该分步骤指导用户:硬件准备、软件配置、代码示例。同时,需要指出引用中的资源链接,特别是百度网盘可能有更详细的教程和示例代码。另外,需要注意不同型号的电机可能有不同的通讯协议,比如MODBUS-RTU,需要确保代码兼容。 可能用户还关心如何测试和调试,或者常见问题解决,但当前引用中没有提到这些。因此,回答应集中在现有资料上,引导用户查阅提供的链接和示例代码。同时,生成的相关问题可以涉及通讯协议、参数配置、不同编程语言实现等,帮助用户深入探索。</think>### 上位机控制步进电机教程及示例代码 #### 一、硬件准备与通讯协议 1. **电机型号选择** MKS SERVO系列闭环步进电机(如42E/57E/D系列)支持通过串口RS485/CAN)与上位机通信,支持MODBUS-RTU协议[^1][^2]。 2. **接线示意图** 需按照引用中的电机接线示意图连接电源、编码器和通讯接口,确保串口参数(波特率、数据位、校验位)与上位机配置一致[^1][^2]。 #### 二、上位机软件配置 1. **串口参数设置** 在软件中配置串口号、波特率(默认115200)、数据位(8位)、停止位(1位)和校验位(无校验)[^1]。 2. **指令格式** 通过MODBUS-RTU协议发送控制指令,例如设置目标位置、启停命令。指令示例: ```python # 发送目标位置指令(示例格式) command = bytes.fromhex("01 06 00 7A 00 64 78 47") # 设备地址01,向寄存器00 7A写入0064(十进制100) ``` #### 三、代码示例 1. **Python控制K210步进电机** 引用3提供了K210通过PWM控制步进电机的基础代码: ```python from machine import Timer, PWM tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM) motor = PWM(tim, freq=4000, duty=50, pin=10) # 频率影响转速,占空比控制扭矩 ``` 2. **上位机通信扩展** 若需通过串口接收上位机指令,可结合`UART`模块: ```python from machine import UART uart = UART(1, 115200) # 初始化串口 while True: if uart.any(): data = uart.read() # 读取上位机指令 # 解析指令并调整电机参数(如频率、方向) ``` #### 四、详细资源获取 - **MKS上位机教程**:引用1和2提供了百度网盘链接,包含上位机软件、通讯协议文档和配置示例[^1]。 - **MODBUS-RTU协议规范**:需参考电机手册中的寄存器地址定义,例如位置控制寄存器地址为`0x007A`[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值