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语句的拼接,并且在有些时候一些标点符号…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
