MKS SERVO4257D 闭环步进电机_系列5 CAN指令说明
第1部分 产品介绍
MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈,有效防止电机丢步。适合小型机械臂,3D打印机,雕刻机,写字机,自动化产品以及电子竞赛等应用。
硬件开源,性价比高!
第2部分 CAN报文格式说明
报文使用标准帧,数据域最大长度为8字节
- 地址(ID)范围00~2047,默认地址为01。
其中 00 为广播地址;
地址01~10可在显示屏菜单CanID选项设置;
大于10的地址需通过串行指令设置。 - 数据长度(DLC)最大值8,指示数据域字节数。
- 功能码(code)执行相应指令,例如0x30读取编码器值。
- 指令数据或返回数据,详见《CAN指令说明》。
- 校验和CRC为 地址和数据域累加,取低8位。
例如读取编码器值指令:
校验和 CRC = (0x01 + 0x30) & 0xFF = 0x31 & 0xFF = 0x31
注意:使用广播地址发送命令,从机不应答。
第3部分 CAN指令说明
注1:本章节默认地址为01。
注2:使用广播地址发送命令,从机不应答。
3.1 读取参数指令
1. 读取进位制多圈编码器值
功能码0x30
记录上电后(使能或不使能),编码器记录的电机转动范围。
编码器值: 记录当前编码器值,范围为0 ~ 0x4000,表示0~360°。
进位值 : 记录编码器进位值,即电机转动圈数。
进位规则:当编码器值大于0x4000,进位值加1
当编码器值小于0,进位值减1
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x13FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFF3FF0。
2. 读取累加制多圈编码器值
功能码0x31
记录上电后(使能或不使能),编码器记录的电机转动范围。
累加规则:
正转一圈,多圈编码器值 +0x4000;
反转一圈,多圈编码器值 -0x4000;
例如:
当前编码器值为0x3FF0,正转一圈后(+0x4000),多圈编码器值为0x000000007FF0。
当前编码器值为0x3FF0,反转一圈后(-0x4000),多圈编码器值为0xFFFFFFFFFFF0。
注:按坐标值相对/绝对运动时,使用该编码器值作为坐标。
3. 读取电机实时转速
功能码0x32
实时转单位为 转/分钟。
注:转速单位为RPM, 正转时转速大于0,反转时转速小于0。
4. 读取输入累计脉冲数
功能码0x33
5. 读取IO端口状态
功能码0x34
6. 读取位置角度误差
功能码0x39
预期的位置角度减去实际的位置角度得到的差值,单位:0 ~ 65535表示0~360°,比如误差为1°时,数值为65536/360°= 182.444,以此类推。
7. 读取闭环驱动板的使能状态
功能码0x3A
enable = 1 已使能
enable = 0 未使能
8. 读取单圈上电自动回零状态
功能码0x3B
9. 解除堵转状态
功能码0x3D
当电机发生堵转时,发送该命令可以解除当前堵转状态。
解除堵转后,如果再次发生堵转,仍然会触发堵转保护。
10. 读取堵转标志位
功能码0x3E
当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。
3.2 设置系统参数指令
1. 校准编码器 (对应屏幕上的“Cal”选项)
功能码0x80
校准编码器前,请确保电机没带负载!!!建议校准好以后再装进机器。
注:校准完成后,驱动板会自动复位重启。
2. 设置工作模式 (对应屏幕上的“Mode”选项)
功能码0x82
3. 设置工作电流Ma (对应屏幕上的“Ma”选项)
功能码0x83
注:
开环模式 工作电流不变,恒定为value
闭环模式 工作电流不变,恒定为value
FOC模式 工作电流可变,最大值为value
4. 设置任意细分 (对应屏幕上的“MStep”选项)
功能码0x84
5. 设置En 引脚有效电平 (对应屏幕上的“En”选项)
功能码0x85
6. 设置电机旋转正方向 (对应屏幕上的“Dir”选项)
功能码0x86
注:此参数只对脉冲接口有效,串行接口电机转向只受指令控制。
7. 设置自动熄屏功能 (对应屏幕上的“AutoSDD”选项)
功能码0x87
8. 设置堵转保护功能 (对应屏幕上的“Protect”选项)
功能码0x88
注:堵转保护后,可以通过Enter按键或CAN指令解除堵转保护状态。
9. 设置细分插补功能 (对应屏幕上的“MPlyer”选项)
功能码0x89
10. 设置CAN接口比特率 (对应屏幕上的“CanRate”选项)
功能码0x8A
11. 设置从机地址 (对应屏幕上的“CanID”选项)
功能码0x8B
注1:地址范围00~0x7FF,00为广播地址,01为默认地址。
注2:设置大于10的地址,也会在CanID选项末尾显示。
12. 设置从机是否应答 (对应屏幕上的“CanRSP”选项)
功能码0x8C
注:设置从机无应答后,可以通过功能码“F1”查询电机运行状态。
13. 设置按键是否锁定
功能码0x8F
14. 设置分组地址
功能码0x8D
发送 01 FD 01 2C 64 00 00 0C 80 1B 电机1 转1圈
发送 00 FD 01 2C 64 00 00 0C 80 1A 电机1-6 转1圈
发送 50 FD 01 2C 64 00 00 0C 80 6A 电机1-3 转1圈
发送 51 FD 01 2C 64 00 00 0C 80 6B 电机4-6 转1圈
注意:使用分组地址发送命令,从机不应答。
3.3 设置限位指令
1. 设置限位相关参数
(对应屏幕“HmTrig、HmDir、HmSpeed”选项)
功能码0x90
2. 限位归零指令
功能码0x91
该指令可以控制电机以设定的方向,速度回到限位开关位置。
注意:如果限位开关已经处于闭合状态,电机会往homeDir反方向转动,直到限位开关断开,然后再归零。
3. 直接归零指令
功能码0x92
该指令可以直接设置当前位置为零点。
3.4 设置单圈回零参数指令
1. 设置单圈回零相关参数
(对应屏幕“0_Mode、Set 0、0_Speed、0_Dir”选项)
功能码0x9A
3.5 恢复默认参数指令
1. 恢复默认参数 (对应屏幕上的“Restore”选项)
功能码0x3F
注1:恢复默认参数后,驱动板自动重启,需重新校准电机。
注2:先按住“Next”键,再上电,待LED灯亮,也可恢复默认参数。
3.6 读取版本信息(对应屏幕上的“About”选项)
功能码0x40
第4部分 CAN控制电机运行说明
注意:本章节指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
4.1 曲线加减速参数说明
转速单位(RPM)说明:Revolutions Per Minute的缩写,即转每分钟。
曲线加减速控制电机运行,涉及到速度(speed)和加速度(acc)两个参数,下面分别说明:
1. 速度参数 speed
速度参数speed 取值范围0 – 3000 (RPM),数值越大,电机转速越快。
控制模式和最大速度如下表:
如果设置的速度超过了控制模式的最大速度,电机以该控制模式的最大速度运行。
注意:速度值以16/32/64细分标定,其他细分的速度需以16细分作为基准计算,
比如设定 speed = 1200
8细分时,转速 2400(RPM)
16/32/64细分时,转速 1200(RPM)
128细分时,转速 150(RPM)
2. 加速度参数 acc
加速度参数acc取值范围0 – 255,数值越大,电机 加/减 速越快。
当acc=0时,电机不做加减速,直接以设定的速度speed运行。
① 加速阶段
假设 t1 时刻,当前速度为Vt1 (Vt1 < speed)
t2 时刻,速度为Vt2
t2 – t1 = (256-acc)* 50 (uS)
则Vt2 计算如下:
Vt2 = Vt1 + 1 (Vt2 <= speed)
例如,设定acc=236,speed=3000,电机从静止开始加速,时间t和电机速度关系如下
即经过3000ms后,电机从静止加速到3000RPM。
当acc=255时,电机从静止加速到3000速,需要150ms。
② 减速阶段
假设 t1 时刻,当前速度为Vt1 (Vt1 > speed)
t2 时刻,当前速度为Vt2
t2 – t1 = (256-acc)* 50 (uS)
则Vt2 计算如下:
Vt2 = Vt1 - 1 (Vt2 >= speed)
4.2 电机查询/使能指令
1. 查询串行控制模式下电机运行状态
功能码0xF1
注意:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
2. 修改串行控制模式下驱动板的使能状态
功能码0xF3
在SR_OPEN/SR_CLOSE/SR_vFOC控制模式下,驱动板的使能状态不再受En引脚的电平控制,而是利用该命令进行控制。
4.3 速度控制模式指令
速度控制模式下,可以控制电机以设定的加速度和速度一直运行。
1. 速度控制模式运行指令
功能码0xF6
注1:可以通过菜单 “CanRSP”或指令“8C”设置是否返回运行状态。
注2:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
2. 速度控制模式停止指令
功能码0xF6
注意:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
3. 速度控制模式参数“保存/清除”指令
功能码0xFF
注1:可以让电机每次上电都直接按照保存的方向,速度和加速度一直转动。
也就是说,如果你想要电机一上电就以一定的速度/加速度运行,你可以先发送速度控制模式运行指令,让电机按想要的方向/速度/加速度运行,接着利用该命令保存参数,重新上电后,电机就会按照保存的参数运行了。如果不想上电自动运行了,发送清除指令即可。
注2:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
4.4 位置控制模式1 按脉冲数相对运动
位置控制模式下,可以控制电机以设定的加速度和速度,运行到指定的位置。
1. 位置控制模式1 运行指令
功能码0xFD
注:可以通过菜单 “CanRSP”或指令“8C”设置是否返回运行状态。
2. 位置控制模式1 停止指令
功能码0xFD
注意:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
4.5 位置控制模式2 按坐标值相对运动
注1:坐标值即为累加制多圈编码器值。
注2:该控制模式下,坐标值会有+15左右误差!建议以 “64细分”运行,以减小误差。
位置控制模式2,可以控制电机以设定的加速度和速度,根据坐标值相对运行到指定的位置。
1. 位置控制模式2 运行指令
功能码0xF4
注:可以通过菜单 “CanRSP”或指令“8C”设置是否返回运行状态。
2. 位置控制模式2 停止指令
功能码0xF4
注意:本指令只在“SR_OPEN/SR_CLOSE/SR_vFOC”模式下有效。
4.6 位置控制模式3 按坐标值绝对运动
注1:坐标值即为累加制多圈编码器值。
注2:该控制模式下,坐标值会有+15左右误差!建议以 “64细分”运行,以减小误差。
位置控制模式3,可以控制电机以设定的加速度和速度,根据坐标值绝对运行到指定的位置。
1. 位置控制模式3 运行指令
功能码0xF5
注:可以通过菜单 “CanRSP”或指令“8C”设置是否返回运行状态。
2. 位置控制模式3 停止指令
功能码0xF5
注意:本指令只在“SR_OPEN/SR_CLOSE/SR_VFOC”模式下有效。
注:本文同样适合后续产品MKS SERVO28D/35D闭环步进电机
欢迎加入MKS 闭环步进电机技术交流 Q群(948665794)
下一篇:《MKS SERVO42&57D 闭环步进电机_系列6 串口(RS485)通讯示例》
相关文章:

MKS SERVO4257D 闭环步进电机_系列5 CAN指令说明
第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&am…...

安捷伦E4440A(Agilent) e4440a 3HZ-26.5G频谱分析仪
Agilent E4440A、Keysight E4440A、HP E4440A频谱分析仪,3 Hz - 26.5 GHz(PSA 系列) Agilent / Keysight PSA 系列 E4440A 高性能频谱分析仪提供强大的一键式测量、多功能功能集和前沿技术,可满足您的项目和需求。选项可供您选…...
华为OD机试真题 Java 实现【最长子字符串的长度】【2022Q4 100分】,附详细解题思路
一、题目描述 给你一个字符串s,字符串s首尾相连组成一个环形,请你在环形中找出‘o’字符出现了偶数次最长子字符串的长度。 二、输入描述 输入一串小写字母组成的字符串。 三、输出描述 输出一个整数。 四、解题思路 题目要求在给定的环形字符串中找出字符’o’出现了…...

【iOS】--对象的底层结构
源码 先转一下源码 //#import <Foundation/Foundation.h> #import <objc/runtime.h>interface LGPerson : NSObject property (nonatomic, strong) NSString *KCName; endimplementation LGPersonendint main(int argc, const char * argv[]) {autoreleasepool {…...
高并发内存池设计_内存池
高并发内存池设计 1. 常用的内存操作函数2. 高性能内存池设计_弊端解决之道弊端一弊端二弊端三弊端四3. 弊端解决之道内存管理维度分析内存管理组件选型4. 高并发内存管理最佳实践内存池技术内存池如何解决弊端?高并发时内存池如何实现?5. 高效内存池设计和实现实现思路 (分而…...

给编程初学者的一封信
提醒:以下内容仅做参考,具体请自行设计。 随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论 一、自学编程需要注意什么? 要有足够的时间、精力等…...

【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】(Matlab代码时候)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

数据在内存中的存储(超详细讲解)
目录 浮点数家族 浮点数类型在内存中的存储 一.为什么说整型和浮点数在内存中存储方式不同(证明) 二.浮点数的存储规则 浮点数在计算机内部的表示方法 1.对于M的存储和取出规则 2.对于E的存储和取出时的规则 对前面代码结果进行解释: …...
log4cplus使用示例
1、l4jlog.h封装头文件 #pragma once#include <iostream> #include <log4cplus/logger.h> #include <log4cplus/loggingmacros.h> #include <log4cplus/fileappender.h> #include <log4cplus/layout.h> #include <log4cplus/configurator.h&…...

人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用
如:天空 coco包含pascal voc 的所有类别,并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言,有些图片并没有标注信息,或者有错误标注信息。…...
learnOpenGL-深度测试
深度测试:OpenGL将一个片段的深度值与深度缓冲的内容进行对比。执行一个深度测试,测试通过则深度缓冲将会更新为新的深度值。测试失败则片段被丢弃。 深度测试片段着色器及模版测试之后执行。 片段着色器中内置变量gl_FragCoord的z值即为深度值。 提前深…...

阿里云服务器数据盘是什么?系统盘和数据盘区别
阿里云服务器系统盘和数据盘有什么区别?系统盘类似Windows电脑的C盘,数据盘相当于其他盘符,数据盘可以有多个而系统盘只能有一个,数据盘可有可无而云服务器系统盘是必须要有的。阿里云服务器网来详细说下阿里云服务器数据盘和系统…...

linux常用命令精选
参考文章: Top 60 Linux Interview Questions and Answers - howtouselinux 在管理和维护Linux系统时,有一些常用的命令可以帮助您进行系统初始化和配置。这些命令涵盖了各种任务,包括系统设置、用户管理、软件安装和网络配置等。 本文将为…...

人体行为足力特征分析及其应用研究_kaic
第一章 绪论 随着社会现代化的发展和科技的不断进步,我国航天事业蓬勃发展,与此同时产生了很多亟待解决的难题,康复医疗成为航天医学和康复领域的重要课题之一。载人航天实践证明,失重对航天员生理功能有很大影响,这不…...

javascript基础二十七:说说 JavaScript 数字精度丢失的问题,解决方案?
一、场景复现 一个经典的面试题 0.1 0.2 0.3 // false 为什么是false呢? 先看下面这个比喻 比如一个数 130.33333333… 这是一个除不尽的运算,3会一直无限循环,数学可以表示,但是计算机要存储,方便下次再使用,但…...

重塑工作场所:后疫情时代组织韧性的8个策略
经济寒冬来临,倒挂的收益率曲线、持续上升的利率以及层出不穷的裁员公告等等,让经济学家们得出一个结论:全球经济正在衰退。然而,经济下行周期可能是卓越公司改变其命运的最佳时机。有研究表明,相对于非经济衰退时期&a…...
TCP协议为什么要三次握手而不是两次?
TCP(Transmission Control Protocol,传输控制协议)的历史可以追溯到1970年代初期,最初的版本是RFC 793,后来经过多次更新和改进,包括RFC 1122、RFC 1323、RFC 2018、RFC 2581、RFC 2873、RFC 3168和RFC 461…...

使用Vuex进行状态管理
在Vue.js应用程序中,状态管理是一个重要的主题。当应用程序变得复杂,组件之间的状态共享和通信变得困难,这时候使用Vuex就会变得十分有用。Vuex是一个专门为Vue.js设计的状态管理库,它提供了一个集中式的状态管理方案,…...

【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)
目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 本文对当前公交企业调度系统进行了分析,建立了公交排班的数学模型。本文基于数据挖掘分析的结果上,使用截面客流量数据对模型进行约束,得出了公交客流出行的空间分布规律。再以…...

IMX6ULL裸机篇之I2C实验-硬件原理图
一. I2C 实验简介 I2C实验,我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C,读取 AP3216C 的传感器数据。 AP3216C是一个三合一的环境光传感器,ALSPSIRLED,ALS是环境光,PS是接近传感器,IR是红外L…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...