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语句的拼接,并且在有些时候一些标点符号…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
