文章目录
第1部分 产品介绍
MKS SERVO42E/57E 闭环步进电机是创客基地为满足市场需求,按工业级标准自主研发的一款产品。具备脉冲接口、RS485接口以及CAN接口,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈,有效防止电机丢步。适合小型机械臂,3D打印机,雕刻机,写字机,非标自动化产品以及电子竞赛等应用。
第2部分 CAN报文格式说明
报文使用标准帧,数据域最大长度为8字节
1.地址(ID)范围00~2047,默认地址为01。其中 00 为广播地址;
2.数据长度(DLC)最大值8,指示数据域字节数。
3.功能码(code)执行相应指令,例如0x30读取编码器值。
4.指令数据或返回数据,详见《CAN指令说明》。
5.校验和CRC为 地址和数据域累加,取低8位。
例如读取编码器值指令:
校验和 CRC = (0x01 + 0x30) & 0xFF = 0x31 & 0xFF = 0x31
注意:使用广播地址发送命令,从机不应答。
Cangaroo读取编码器值示例,如下图所示
第3部分 CAN指令说明
注意1:本章节默认地址为01。
注意2:使用广播地址发送命令,从机不应答。
3.1 读取状态参数指令
1.读取进位制多圈编码器值,功能码0x30
记录上电后(使能或不使能),编码器记录的电机转动范围。
编码器值 记录当前编码器值,范围为00x4000,表示0360°。
进位值 记录编码器进位值,即电机转动圈数。
进位规则:当编码器值大于0x4000,进位值加1
当编码器值小于0,进位值减1
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x13FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFF3FF0。
Cangaroo示例如下:
2.读取累加制多圈编码器值,功能码0x31。
记录上电后(使能或不使能),编码器记录的电机转动范围。
累加规则: 正转一圈,多圈编码器值 +0x4000;
反转一圈,多圈编码器值 -0x4000;
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x000000007FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFFFFF0。
注:按坐标值相对/绝对运动时,使用该编码器值作为坐标。
3.读取电机实时转速,功能码0x32。
实时转单位为 转/分钟。
注:转速单位为RPM, 正转时转速大于0,反转时转速小于0。
4.读取输入累计脉冲数,功能码0x33。
5.读取IO端口状态,功能码0x34。
PEND 1:已到位 0:未到位
ALM 1:未告警 0:已告警
6.读取位置角度误差,功能码0x39。
预期的位置角度减去实际的位置角度得到的差值,单位:051200表示0360°,比如误差为1°时,数值为51200/360°= 142.222,以此类推。
7.读取闭环驱动板的使能状态,功能码0x3A。
enable = 1 已使能
enable = 0 未使能
8.解除堵转状态,功能码0x3D。
当电机发生堵转时,发送该命令可以解除当前堵转状态。
解除堵转后,如果再次发生堵转,仍然会触发堵转保护。
status = 0 解除堵转失败
status = 1 解除堵转成功
注:也可通过 “ EN 电平无效方式” 解除堵转状态。
9.读取堵转标志位,功能码0x3E。
当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。
status = 0 未堵转
status = 1 已堵转
3.2 设置系统参数指令
1.校准电机
功能码0x80。
status = 0 正在校准
status = 1 校准成功
status = 2 校准失败
校准电机仅判断电机转向和编码器关系,即电机顺时针转时,编码器值增加或减少,如电机相线按出厂默认接线,无需校准。
校准时电机会转动 15 度,完成后自动复位重启。
2.设置工作模式
功能码0x82。
mode = X0 脉冲+脉冲 开环 FOC 模式 (X=0 有编码器 X=1 无编码器)
mode = X1 脉冲+方向 开环 FOC 模式 (X=0 有编码器 X=1 无编码器)
mode = 02 脉冲+脉冲 闭环 FOC 模式
mode = 03 脉冲+方向 闭环 FOC 模式(默认)
mode = X4 CAN 总线 开环 FOC 模式 (X=0 有编码器 X=1 无编码器)
mode = 05 CAN 总线 闭环 FOC 模式
status = 0 设置失败
status = 1 设置成功
注 1: 脉冲控制模式,最高输入频率 300KHz
总线控制模式,最高转速 3000RPM
注 2: X=0 有编码器,即电机轴有磁铁,驱动板安装在背后,可以读取编码器值
X=1 无编码器,即电机轴无磁铁, 驱动板可任意安装,不能读取编码器值
3.设置工作电流Ma
功能码0x83。
SERVO42E 最大工作电流 3000mA (默认 1600mA)
SERVO57E 最大工作电流 5200mA (默认 3200mA)
status = 0 设置失败
status = 1 设置成功
4.设置细分值 (默认16细分)
功能码0x84。
micstep 取值范围(10 进制)如下:
0, 2, 4, 8, 16, 32, 64, 128,
5, 10, 20, 25