MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例
第1部分 产品介绍
MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈,有效防止电机丢步。适合小型机械臂,3D打印机,雕刻机,写字机,自动化产品以及电子竞赛等应用。
硬件开源,性价比高!

第2部分 相关资料下载
2.1 Cangaroo
百度网盘:
https://pan.baidu.com/s/1tBCuDIfBAIRMms82FlLdag?pwd=mks1
MKS闭环步进驱动资料 -> 通用工具软件
第3部分 参数配置
3.1 电机参数配置
- 选择控制模式: 菜单 → Mode → SR_vFOC
- 设置波特率: 菜单 → CanRate → 500K
- 设置从机地址: 菜单 → CanID → 01
3.2 Cangaroo设置
-
双击“cangaroo.exe”,运行上位机软件;
-
在cangaroo窗口,选择菜单“Measurement”->“Start Measurement”,如下图所示。

-
在弹出的Measurement Setup窗口,点击“candle0”,如下图所示

-
使用默认参数,不做任何修改,点击“ok”,如下图所示

-
Timestamps 选择“absolute”
不选择“aggregate by ID”
,如下图所示

-
选择菜单“File”->“Save Workspace”,选择保存路径和名称,保存配置。

-
保存完成后,如下图所示

第4部分 读取/设置电机参数
4.1 读取参数指令
以“读取累加制多圈编码器值”为例
发送 31 32
返回 31 00 00 00 00 3E 39 A9
即编码器值为 0x000000003E39
如下图所示

4.2 设置参数指令
以设置电流参数为例(对应屏幕上的“Ma”选项)
发送 83 06 FD 87 设置电流为1789mA (0x6FD = 1789)
返回 83 01 85 表示设置完成
如下图所示

电机屏幕菜单选项“Ma”,可以查看刚设置的电流值,如下图

4.3 读取IO端口状态
端口状态定义如下:

(注:28D/35D/42D只能读取到IN_1端口)
发送 34 35读取IN_1,IN_2,OUT_1,OUT_2端口状态
返回 34 0F 44 (0x0F 的低4位对应4个端口的状态,即4个端口均为高电平)
如下图所示

第5部分 电机限位归零运行
57D电机的拨码开关PIN3,PIN2拨到ON状态。
57D电机,建议把电流设置为3200mA
限位触发电平,限位方向,限位速度可通过屏幕菜单“HmTrig、HmDir、HmSpeed”设置,也可通过串行指令设置(功能码0x90)。
本文使用默认参数。
发送 91 92
返回 91 01 93
电机开始归零运行,屏幕显示“Home…”
此时将IN_1端口置低电平(可以用地线触碰IN_1端口)
电机完成归零,屏幕显示“Home Ok”

电机屏幕显示过程如下图:

第6部分 电机速度模式运行
注意:57D电机,建议把电流设置为3200mA
6.1 速度模式运行和停止
1. 控制电机以速度300RPM, 加速度2运行
发送指令:F6 01 2C 02 26
返回指令:F6 01 F8
如下图1,2所示
2. 控制电机以加速度200停止
发送指令:F6 00 00 C8 BF
开始停止:F6 01 F8
完成停止:F6 02 F9
如下图3,4,5所示

6.2 速度模式参数保存
速度模式保存,即让电机每次上电时,以保存的速度和加速度自动运行。
1. 控制电机以速度300RPM, 加速度2运行
发送指令:F6 01 2C 02 26
返回指令:F6 01 F8
如下图1,2所示
2. 保存速度模式参数
发送指令: FF C8 C8
返回指令1:FF 01 01 保存成功
返回指令2:F6 02 F9 电机停止
保存成功后,电机会停止运行。
如下图3,4,5所示

6.3 速度模式参数擦除
速度模式参数擦除后,电机不再上电时自动运行。
发送指令: FF CA CA
返回指令: FF 01 01
如下图所示

第7部分 电机位置模式1 按脉冲数相对运行
注意:57D电机,建议把电流设置为3200mA
7.1 按脉冲数相对运行
注:1.8度电机,16细分时,3200脉冲电机转1圈
- 先将当前坐标设置为0,方便观察电机运行
发送指令:92 93
返回指令:92 01 94
此时电机屏幕显示角度值0.0,误差0.00err,脉冲数0clk
如下图框1所示 - 电机以速度100RPM,加速度2,正转一圈(3200脉冲)
发送指令:FD 80 64 02 00 0C 80 70
开始运行: FD 01 FF
完成运行: FD 02 00
此时电机屏幕显示角度值360.0,误差0.00err,脉冲数3.2Kclk
如下图框2所示

7.2 中断电机运行
- 电机以速度100RPM,加速度2,正转100圈(320000脉冲)
发送指令:FD 80 64 02 04 E2 00 CA
开始运行:FD 01 FF
如下图框1所示 - 电机以加速度200停止
发送指令:FD 80 00 C8 00 00 00 46
开始停止: FD 01 FF
完成停止:FD 02 00
如下图框2所示

第8部分 电机位置模式2 按坐标值相对运行
注1:1.8度电机,16细分时,3200脉冲电机转1圈
注2:电机转1圈,坐标值变化0x4000,即16384
注3:坐标值会有正负15左右误差
注意:57D电机,建议把电流设置为3200mA
8.1 按坐标值相对运行
-
先将当前坐标设置为0,方便观察电机运行
发送指令:92 93
返回指令:92 01 94
此时电机屏幕显示角度值0.0,误差0.00err,脉冲数0clk
如下图1所示 -
电机以速度300RPM,加速度200,相对运行坐标0x28000(即转10圈)
发送指令:F4 01 2C C8 02 80 00 6C
开始运行:F4 01 F6
完成运行:F4 02 F7
此时电机屏幕显示角度值3.6K,误差0.00err,脉冲数32.0Kclk
如下图2所示 -
读取当前坐标值
发送指令:31 32
返回指令:31 00 00 00 02 80 00 B4
即当前坐标值为0x000000028000,和预定目标一致。
如下图3所示 -
再次让电机以速度300RPM,加速度200,相对运行坐标0x28000(即再转10圈)
发送指令:F4 01 2C C8 02 80 00 6C
开始运行:F4 01 F6
完成运行:F4 02 F7
此时电机屏幕显示角度值7.2K,误差0.00err,脉冲数64.0Kclk
如下图4所示 -
再次读取当前坐标值
发送指令:31 32
返回指令:31 00 00 00 05 00 00 37
即当前坐标值为0x000000050000,和预定目标一致。
如下图5所示

8.2 中断电机运行
-
让电机以速度300RPM,加速度200,相对运行坐标0x7A0000
发送指令:F4 01 2C C8 7A 00 00 64
开始运行:F4 01 F6
如下图框1所示 -
让电机立即停止 (即加速为0)
发送指令:F4 00 00 00 00 00 00 F5
开始停止:F4 01 F6
完成停止:F4 02 F7
如下图框2所示

第9部分 电机位置模式3 按坐标值绝对运行
注1:1.8度电机,16细分时,3200脉冲电机转1圈
注2:电机转1圈,坐标值变化0x4000,即16384
注3:坐标值会有正负15左右误差
注意:57D电机,建议把电流设置为3200mA
9.1 按坐标值绝对运行
-
先将当前坐标设置为0,方便观察电机运行
发送指令:92 93
返回指令:92 01 94此时电机屏幕显示角度值0.0,误差0.00err,脉冲数0clk
如下图1所示 -
电机以速度300RPM,加速度200,绝对运行到坐标0x28000
发送指令:F5 01 2C C8 02 80 00 6D
开始运行: F5 01 F7
完成运行:F5 02 F8
此时电机屏幕显示角度值3.6K,误差0.00err,脉冲数32.0Kclk
如下图2所示 -
读取当前坐标值
发送指令:31 32
返回指令:31 00 00 00 02 80 00 B4
即当前坐标值为0x00000002800,和预定目标一致。
如下图3所示 -
再次让电机以速度300RPM,加速度200,绝对运行到坐标0x28000(因坐标已经是0x28000,所以电机不动)
发送指令:F5 01 2C C8 02 80 00 6D
开始运行:F5 01 F7
完成运行:F5 02 F8
此时电机屏幕仍显示角度值3.6K,误差0.00err,脉冲数32.0Kclk
如下图4所示 -
再次读取当前坐标值
发送指令:31 32
返回指令:31 00 00 00 02 7F FF AD
当前坐标值为0x000000028001 (误差1),即电机没有运行,和预定目标一致。
如下图5所示 -
再次让电机以速度300RPM,加速度200,绝对运行到坐标0
发送指令:F5 01 2C C8 00 00 00 EB
开始运行:F5 01 F7
完成运行:F5 02 F8
此时电机屏幕显示角度值0.0,误差0.00err,脉冲数0clk
即电机回到坐标0点
如下图6所示 -
再次读取当前坐标值
发送指令:31 32
返回指令:31 00 00 00 00 00 01 33
当前坐标为1(误差1),和预定目标一致。
如下图7所示

9.2 中断电机运行
-
让电机以速度300RPM,加速度200,绝对运行坐标0x7A0000
发送指令:F5 01 2C C8 7A 00 00 65
开始运行:F5 01 F7
如下图框1所示 -
让电机立即停止 (即加速为0)
发送指令:F5 00 00 00 00 00 00 F6
开始停止:F5 01 F7
完成停止:F5 02 F8
如下图框2所示

注:本文同样适合后续产品MKS SERVO28D/35D闭环步进电机
下一篇:《MKS SERVO42&57D 闭环步进电机_系列9 上位机通讯示例》
欢迎加入MKS 闭环步进电机技术交流 Q群(948665794)
欢迎光临 创客基地 B站:https://space.bilibili.com/393688975
欢迎光临 创客基地 淘宝店:https://makerbase.taobao.com/
网盘资料下载 https://pan.baidu.com/s/1tBCuDIfBAIRMms82FlLdag?pwd=mks1
相关文章:
MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例
第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&a…...
UnityVR--组件9--视频组件VideoPlayer
目录 前言 参数解释 RenderMode渲染方式 VideoPlayer类中的API 前言 在之前的VR场景中已经使用过VideoPlayer播放视频(Unity.UI的交互(6)-播放视频),不过在VR中设置是有些不同的,这里更详细地说明一下V…...
Java 深拷贝和浅拷贝
Java 中的深拷贝和浅拷贝是针对对象复制而言的。 浅拷贝(Shallow Copy) 当对象进行浅拷贝时,只会复制对象本身和其中的基本数据类型属性,而不会复制引用对象的实际内容。具体而言,浅拷贝只会创建一个新的对象&#x…...
[ruby on rails] docker
docker安装 ubuntu14.04后自带docker安装包,可以直接安装 sudo apt-get updatesudo apt-get install -y docker.io# 安装后启动sudo service docker start查看docker信息 docker infodocker命令 sudo service docker start sudo service docker stop sudo servic…...
网络协议——STP协议是什么?是如何实现的?
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、STP协议是什么 二、为什么需要STP协议 三、STP的实现过程 编辑 1、选举跟桥 2、给非跟桥交换机选举跟端口 3、给每个网段选…...
【C++】智能指针 学习总结 |std::shared_ptr |std::unique_ptr | std::weak_ptr
文章目录 前言一、智能指针介绍二、普通指针和智能指针的比较案例三、std::shared_ptr四、std::unique_ptr五、std::weak_ptr六、std::shared_ptr |std::unique_ptr | std::weak_ptr三大智能指针的区别 前言 参考答案:chatgpt 一、智能指针介绍 智能指针是C的一种…...
iptables防火墙
文章目录 一.linux防火墙基础1.linux 包过滤防火墙概述1.1netfilter1.2 iptables 2.包过滤的工作层次2.1 通信的五元素和四元素 3.iptables 的表、链结构3.1 规则链3.2 默认包括5种规则链3.3 规则表3.4 默认包括4个规则表 二.数据包过滤的匹配流程1.规则表之间的顺序2.规则链之…...
properties、yaml作为配置文件的特点
说明:在软件开发中,经常需要把一些配置写在文件中,如数据库配置、MyBatis配置等。这样,后续如果数据库参数有改动,就可以避免直接对代码做修改,只要修改配置文件中关于数据库的配置。关于配置文件的选择&am…...
JavaSE-03 【流程控制语句】
文章目录 JavaSE-03 【流程控制语句】第一章 流程控制1.1 流程概述1.2 顺序结构 第二章 判断语句2.1 判断语句---if2.2 判断语句---if...else2.3 判断语句---if...else if ... else 第三章 选择语句3.1 选择语句--switch3.2 case的穿透性 第四章 循环语句4.1 循环概述4.2 循环语…...
笔记本电脑的BIOS是怎么保护安全的?
随着攻防技术的不断演进,像BIOS攻击、高级网络代码攻击等手段层出不穷,“受害者”也不仅限于企业级服务器、存储,很多魔爪也开始伸向了拥有商业机密数据的PC。 BIOS是Basic Input/Output System(基本输入/输出系统)的…...
Xubuntu之将rm删除内容移至回收站(一百七十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
STM32F407实现1588v2(ptpd)
硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…...
架构师如何找到自己的商业模式
作为一个架构师,必须要在有限的资源下最大化架构活动所带来的商业价值。对于任何一个架构活动而言,架构师的可用资源,包括商业成本、研发成本、时间成本、迁移成本等等,都是非常有限的。但架构活动就是要在这些限制条件之下&#…...
SQLServer2022安装(Windows),已验证
一、SQLServer2022下载 1、官网下载地址 SQL Server 下载 | Microsoft 2、下载安装包 2.1、选择Developer版本,立即下载。 2.2、打开下载文件夹,双击运行SQL2022-SSEI-Dev.exe 尝试运行SQL2022-SSEI-Dev.exe,会收到以下信息:“…...
facenet, dlib人脸识别,人体检测,云数据库mysql,QQ邮箱,手机验证码,语音播报
目录 部分代码展示: 录入部分 识别部分编辑 活体检测部分编辑 同步到云数据库MySQL 其他操作 部分图片展示: 完整代码加ui链接: 涉及到的一些知识点的文章 部分代码展示: 录入部分 识别部分 活体检测部分 同步到云数…...
Spring Boot 面试题——定时任务
目录 1.什么是 cron 表达式?如何使用?2.Scheduled 注解有什么作用?3.介绍一下 spring-boot-starter-quartz。4.在 Spring Boot 中如何实现定时任务?4.1.使用 Schedule 注解4.2.Quartz 框架 1.什么是 cron 表达式?如何使…...
总建面64万平,配3所幼儿园+54班九年制学校,坪山江岭竹元规划
近日,坪山区城市更新和土地整备局发布,关于《坪山区马峦街道江岭竹元片区城市更新单元规划》已通过深圳市城市规划委员会法定图则委员会审批。现予以公告。 项目位于坪山区马峦街道,南邻南坪快速路,北邻比亚迪路,东西两…...
python3 爬虫相关学习7:使用 BeautifulSoup下载网页图片到本地文件夹
目录 1 一个爬图片pic的代码的例子 1.1 学习的原文章 1.2 原始代码的问题总结 问题1 问题2 问题3 其他问题 1.3 原始代码 2 直接在cmd里 python运行报错 和 处理 2.1 运行报错 2.2 报错原因: 没有提前安装这个bs4 模块 2.3 如何提前知道我的python环境…...
windows平台python脚本执行环境搭建笔记
1.python脚本环境下载 这里是原始发布源: https://www.python.org/downloads/release/python-3114/https://www.python.org/downloads/release/python-3114/安装时记得添加进系统path,这样你可以随时调用python环境。 2.扩展模块的安装 step1.找到py…...
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL 1、if标签的用法2、choose标签的用法3、where标签4、set标签5、trim的用法6、foreach标签7、bind标签 使用过JDBC或者是其他的ORM框架的开发者都知道,在很多操作中都需要去根据具体的条件进行SQL语句的拼接,并且在有些时候一些标点符号…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
