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语句的拼接,并且在有些时候一些标点符号…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
