搜索
bottom↓
回复: 133

[分享]几个开源运动控制项目的源码笔记

  [复制链接]

出40入42汤圆

发表于 2018-9-11 17:14:40 | 显示全部楼层 |阅读模式
本帖最后由 落叶知秋 于 2018-9-11 17:17 编辑

编辑说明:标题添加[分享]字样

说明
几个月前发了个帖子:https://www.amobbs.com/thread-5691704-1-1.html
是关于GRBL的源码阅读笔记的,看到还是有坛友回复感兴趣的,这几个月把其他几个我知道的开源运动控制器的源码看了下,
同样的也做了一些简单的笔记,也贴上来,如果有坛友觉得有些微帮助,或是感兴趣交流一番,也很好了。

涉及的开源运动控制项目有:
GRBL - 时间比较早,也可以算是下面3个其他项目的原型,目前也一直在更新,最大的优缺点是,简单
TinyG - 简单的cnc机床控制,机械手控制,S型加减速,最大支持6轴(非联动)
Smoothieware - 3D打印,激光切割,cnc磨床,C++编程风格,SD卡脱机
Marlin - 专攻3D打印,SD卡脱机,v2.0增加了S型加减速

注意
1.楼主自己写的文档都是用xmind软件写的,附件里面有个Marlin旧版本的PDF格式文档,是在网上找的
2.楼主看源码的顺序是:GRBL --> TinyG --> Smoothieware --> Marlin2.0
在看GRBL的时候花的时间比较长,也看的细一些,往后时间就越来越短的,对应项目的笔记也会越来越短,
原因是越看到后面越觉得框架差不多,只不过是功能上增删补漏而已
3.楼主做的笔记主要是针对项目的框架部分,即怎么去阅读整个项目的源码,同时也针对了运动控制部分
做了稍微多一些的笔记,很多细节是基本忽略掉的,如果有兴趣可以一起看代码探讨,哈哈
4.关于Marlin项目是直接看了2.0版本的,不是之前流传甚广的那个1.1版本,附件的PDF文档是写的1.1版本

文档截图
GRBL


TinyG


Smoothieware


Marlin_2.0


附件










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2018-9-11 17:23:19 | 显示全部楼层
谢谢楼主的无私奉献

出0入0汤圆

发表于 2018-9-11 17:41:15 | 显示全部楼层
这个得顶一下。。。

出0入90汤圆

发表于 2018-9-11 17:47:42 | 显示全部楼层
花了挺多时间研究这个得啊,不错嘛

出0入0汤圆

发表于 2018-9-11 18:47:46 来自手机 | 显示全部楼层
这个感兴趣!!只是还没看过,不知难度如何?电机S曲线算法吗?多轴是否支持插补

出0入0汤圆

发表于 2018-9-11 19:21:27 | 显示全部楼层
谢谢楼主!

出40入42汤圆

 楼主| 发表于 2018-9-11 19:48:32 | 显示全部楼层
hkjabcd 发表于 2018-9-11 18:47
这个感兴趣!!只是还没看过,不知难度如何?电机S曲线算法吗?多轴是否支持插补 ...

都支持多轴插补,用的都是DDA插补,轨迹规划S型加减速是TinyG和Marlin2.0支持

出40入42汤圆

 楼主| 发表于 2018-9-11 19:49:20 | 显示全部楼层
honami520 发表于 2018-9-11 17:47
花了挺多时间研究这个得啊,不错嘛

哈哈,谢谢捧场

出0入0汤圆

发表于 2018-9-11 21:02:51 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2018-9-11 21:27:35 | 显示全部楼层

请问,你做的笔记里,有没有关于加减速的,比如:
1、从速度A上升到B速,半途中突然改成降速到C,半途中再突然改成上升速到D,即目标速度可能一直在变化。
2、从位置A向B位置运行,半途中突然修改为C位置,半途中再突然改成D位置,即目标位置,可能一直在变化。

在以上两种情况,均需要保持速度的平滑,即走S形曲线,尤其是情形2 。。。

出40入42汤圆

 楼主| 发表于 2018-9-11 21:35:53 | 显示全部楼层
kinsno 发表于 2018-9-11 21:27
请问,你做的笔记里,有没有关于加减速的,比如:
1、从速度A上升到B速,半途中突然改成降速到C,半途中 ...

你说的这个可以算是应用要求吧,就是速度和位置允许无限叠加。。。

楼主位的笔记里面主要是针对那几个开源运动控制器软件框架的分析,
和运动控制部分的数据流和关键实现流程,工艺一般都是G代码解析器来解析,
然后系统通过前瞻、速度规划和DDA插补来实现电机运动。

你提的应用要求,笔记里面没有,但我觉得那几个开源运动控制器都可以实现这个应用需求

出0入0汤圆

发表于 2018-9-11 21:38:17 | 显示全部楼层
落叶知秋 发表于 2018-9-11 21:35
你说的这个可以算是应用要求吧,就是速度和位置允许无限叠加。。。

楼主位的笔记里面主要是针对那几个开 ...

可能是吧,我关注的是算法问题,你关注的是框架问题,哈哈。
这些代码,都是LINUX下的吗,还是单片机框架的?有对应的板子可以玩吗?




出40入42汤圆

 楼主| 发表于 2018-9-11 21:49:43 来自手机 | 显示全部楼层
kinsno 发表于 2018-9-11 21:38
可能是吧,我关注的是算法问题,你关注的是框架问题,哈哈。
这些代码,都是LINUX下的吗,还是单片机框架 ...

单片机下的,最早是avr,现在基本都已经或正在往arm转

出0入0汤圆

发表于 2018-9-11 22:30:48 | 显示全部楼层
非常感谢,关注学习下

出0入0汤圆

发表于 2018-9-11 23:50:53 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2018-9-12 00:03:12 | 显示全部楼层
感谢楼主无私奉献!

出0入0汤圆

发表于 2018-9-12 08:54:57 | 显示全部楼层
不错~~~支持

出0入0汤圆

发表于 2018-9-12 08:59:40 | 显示全部楼层
这个要顶一下,谢谢分享

出255入0汤圆

发表于 2018-9-12 09:41:50 | 显示全部楼层
对学习运动控制算法有很大的帮助

出0入0汤圆

发表于 2018-9-12 10:09:13 | 显示全部楼层
mark 3D打印CNC电机控制

出0入0汤圆

发表于 2018-9-12 10:16:33 | 显示全部楼层
mark 开源运动控制

出0入0汤圆

发表于 2018-9-12 23:57:34 | 显示全部楼层
谢谢楼主无私奉献

出55入66汤圆

发表于 2018-9-13 00:59:03 来自手机 | 显示全部楼层
支持闭环控制吗?

出55入66汤圆

发表于 2018-9-13 00:59:03 来自手机 | 显示全部楼层
支持闭环控制吗?

出55入66汤圆

发表于 2018-9-13 00:59:03 来自手机 | 显示全部楼层
支持闭环控制吗?

出40入42汤圆

 楼主| 发表于 2018-9-13 08:35:38 | 显示全部楼层
cpumaker 发表于 2018-9-13 00:59
支持闭环控制吗?

不支持,楼主位的几个项目都主要是步进开环控制模式,
有外接编码器的接口,但闭环控制还没有实现

出0入0汤圆

发表于 2018-9-13 09:13:40 | 显示全部楼层
绝大部分的控制器均不支持闭环控制。
伺服驱动器通过接收编码器信号,完成闭环控制。

出40入42汤圆

 楼主| 发表于 2018-9-13 09:17:45 | 显示全部楼层
su33691 发表于 2018-9-13 09:13
绝大部分的控制器均不支持闭环控制。
伺服驱动器通过接收编码器信号,完成闭环控制。 ...

哈哈,这种模式一般被称为“半闭环”

出0入0汤圆

发表于 2018-9-13 09:20:23 | 显示全部楼层
谢楼主分享

出0入0汤圆

发表于 2018-9-13 10:39:35 | 显示全部楼层
我用过很多广数、KND的数控系统,驱动电机的信号均为4个信号8根线。
号称2us一个翻转,250KHZ的频率输出。

出40入42汤圆

 楼主| 发表于 2018-9-13 11:15:10 | 显示全部楼层
su33691 发表于 2018-9-13 10:39
我用过很多广数、KND的数控系统,驱动电机的信号均为4个信号8根线。
号称2us一个翻转,250KHZ的频率输出。 ...

那些系统应该是配伺服电机的吧,而且他们一般的架构不是楼主位的那样的,纯单片机控制,
一般都是DSP+FPGA控制,脉冲频率可以做的很高

出0入0汤圆

发表于 2018-9-13 11:53:48 | 显示全部楼层
落叶知秋 发表于 2018-9-13 11:15
那些系统应该是配伺服电机的吧,而且他们一般的架构不是楼主位的那样的,纯单片机控制,
一般都是DSP+FPG ...

广数、KND的数控系统均不区分步进电机和伺服电机,
4个信号:脉冲,方向,使能,报警。

出0入0汤圆

发表于 2018-9-13 11:58:25 | 显示全部楼层
多谢楼主,先收藏一下,以后有空看

出30入54汤圆

发表于 2018-9-13 11:58:37 | 显示全部楼层
运动控制器 开源,记下了

出40入42汤圆

 楼主| 发表于 2018-9-13 12:01:24 | 显示全部楼层
su33691 发表于 2018-9-13 11:53
广数、KND的数控系统均不区分步进电机和伺服电机,
4个信号:脉冲,方向,使能,报警。
...

这个楼主是知道的,脉冲型驱动器的接收端信号基本就这些,但步进电机控制的脉冲频率不能太高,特别是开环的,脉冲频率高了(转速高了)丢步严重,
所以一般这些面向机床和加工中心的数控系统偏向配伺服电机

出0入0汤圆

发表于 2018-9-13 12:10:23 | 显示全部楼层
落叶知秋 发表于 2018-9-13 12:01
这个楼主是知道的,脉冲型驱动器的接收端信号基本就这些,但步进电机控制的脉冲频率不能太高,特别是开环 ...

你说的这些情况是数控机床编程时要考虑的事。实际上输出的脉冲频率很低。既使步进电机也运行的很好。

出0入0汤圆

发表于 2018-9-13 12:59:48 | 显示全部楼层
此处留名,后续细细研究下

出0入0汤圆

发表于 2018-9-13 13:47:28 | 显示全部楼层
回头有空了  好好看看

出0入0汤圆

发表于 2018-9-14 13:00:39 来自手机 | 显示全部楼层
工作的内容就是运动控制卡,有空看看

出0入4汤圆

发表于 2018-9-17 09:24:44 来自手机 | 显示全部楼层
哪个速度最快,marlin2.0能跑200k了不

出40入42汤圆

 楼主| 发表于 2018-9-17 10:09:37 | 显示全部楼层
475627406 发表于 2018-9-17 09:24
哪个速度最快,marlin2.0能跑200k了不

这个看用什么芯片吧,脉冲发生的机制大同小异,就看处理器的速度了

出0入0汤圆

发表于 2018-9-17 12:28:52 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-9-17 22:21:15 | 显示全部楼层
有空好好看看,谢谢分享!

出0入0汤圆

发表于 2018-9-27 10:45:04 | 显示全部楼层
这个必须得顶一下:mark ::几个开源运动控制项目的源码笔记

出0入4汤圆

发表于 2018-9-27 13:41:19 | 显示全部楼层
有空要学习一下,谢谢楼主!

出0入0汤圆

发表于 2018-9-27 14:39:19 | 显示全部楼层
有空看看

出0入0汤圆

发表于 2018-9-27 15:55:35 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2018-9-30 17:22:25 | 显示全部楼层
硬件平台是什么?

出0入0汤圆

发表于 2018-9-30 17:41:56 | 显示全部楼层
下载看看,纯软件算吗

出0入4汤圆

发表于 2018-9-30 17:50:01 | 显示全部楼层
qq635274216 发表于 2018-9-30 17:22
硬件平台是什么?

大多都支持arduino   8位机能写到这个水平 确实不得不佩服

出40入42汤圆

 楼主| 发表于 2018-9-30 19:21:07 | 显示全部楼层
vermon 发表于 2018-9-30 17:50
大多都支持arduino   8位机能写到这个水平 确实不得不佩服

现在也逐渐转向ARM的32位芯片了

出0入0汤圆

发表于 2018-11-10 22:09:10 | 显示全部楼层
本帖最后由 XTXB 于 2018-11-10 22:12 编辑

楼主用心了,感谢分享!正在玩光驱写字机,咱是菜鸟,看grbl一头雾水,学习了。

出0入0汤圆

发表于 2018-11-10 23:11:18 | 显示全部楼层
简直要膜拜了,很棒,感谢分享.

出0入0汤圆

发表于 2018-11-11 21:53:18 来自手机 | 显示全部楼层
学习一下,谢谢楼主分享。

出0入0汤圆

发表于 2018-11-12 07:53:17 | 显示全部楼层

谢谢楼主!

出0入0汤圆

发表于 2018-11-13 09:43:29 | 显示全部楼层
这个很厉害。

出0入0汤圆

发表于 2018-11-13 19:27:37 | 显示全部楼层
楼主厉害!下载下来看看

出0入0汤圆

发表于 2018-12-18 10:17:42 | 显示全部楼层
非常感谢楼主!

出0入0汤圆

发表于 2018-12-18 10:44:17 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2018-12-18 11:07:42 | 显示全部楼层

谢谢楼主分享

出0入0汤圆

发表于 2018-12-18 13:03:13 | 显示全部楼层
不错,谢谢楼主分享

出0入0汤圆

发表于 2019-5-14 18:53:25 | 显示全部楼层
感谢大佬

出0入0汤圆

发表于 2019-10-5 11:02:58 | 显示全部楼层
还没看代码,不知道移植到C8051上是不是同样的道理啊?

出40入42汤圆

 楼主| 发表于 2019-10-5 14:00:28 来自手机 | 显示全部楼层
PCBBOY1991 发表于 2019-10-5 11:02
还没看代码,不知道移植到C8051上是不是同样的道理啊?

算法部分都通用的,底层改一改吧

出0入0汤圆

发表于 2019-10-5 14:41:59 | 显示全部楼层
落叶知秋 发表于 2019-10-5 14:00
算法部分都通用的,底层改一改吧

好的,谢谢,有空研究一下!

出0入0汤圆

发表于 2019-10-5 14:53:28 | 显示全部楼层
不错不错,MARK

出0入45汤圆

发表于 2019-10-5 18:59:18 来自手机 | 显示全部楼层
Mark 一个

出0入0汤圆

发表于 2019-10-5 22:13:16 | 显示全部楼层
GRBL,记号一下。

出0入0汤圆

发表于 2019-10-7 15:47:29 | 显示全部楼层
谢谢楼主无私分享,必须的顶一下

出0入0汤圆

发表于 2019-10-7 21:05:55 | 显示全部楼层
这个厉害了,要学习一下了

出0入0汤圆

发表于 2019-10-8 10:58:50 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2019-10-8 12:10:37 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2019-10-8 17:07:36 | 显示全部楼层
谢谢楼主,挺厉害的

出0入0汤圆

发表于 2019-10-8 20:18:55 来自手机 | 显示全部楼层
感谢分享。。。

出0入0汤圆

发表于 2019-12-21 09:10:40 | 显示全部楼层
请教楼主,tinyg的固定频率输出是怎么控制加减速的?类似于PWM的机制吗?

出40入42汤圆

 楼主| 发表于 2019-12-21 14:32:58 来自手机 | 显示全部楼层
nango 发表于 2019-12-21 09:10
请教楼主,tinyg的固定频率输出是怎么控制加减速的?类似于PWM的机制吗?

固定频率就相当于时基,规划加减速的时候就把路径以时基为最小单位离散成运动段
速度快就一个时基发一个脉冲,速度慢就若干个时基发一个脉冲,误差为一个时基

出0入0汤圆

发表于 2019-12-25 10:31:42 | 显示全部楼层
本帖最后由 nango 于 2019-12-25 10:33 编辑
落叶知秋 发表于 2019-12-21 14:32
固定频率就相当于时基,规划加减速的时候就把路径以时基为最小单位离散成运动段
速度快就一个时基发一个 ...


感谢楼主,这么久的帖子还能回复我的问题。我现在的想法是最终能够每个周期(比如1ms)输出各个轴的位置信息,以便放在EC总线上,之前研究了很久GRBL,最后发现GRBL生成脉冲时定时器间隔会变,这样就无法在确定的周期时间点输出各个轴的位置。想利用tinyG的时基固定的特性,固定地在每个周期输出位置,但是现在还么研究透,不知道是否可行,想问问楼主有没有什么建议

出40入42汤圆

 楼主| 发表于 2019-12-25 11:20:42 | 显示全部楼层
nango 发表于 2019-12-25 10:31
感谢楼主,这么久的帖子还能回复我的问题。我现在的想法是最终能够每个周期(比如1ms)输出各个轴的位置 ...

总线式的就把stepper部分去掉就好了,然后速度规划部分如果还是在后台处理,那就另外在定时器里面取运动buffer出来,发给总线设备就好了,注意加减速计算的时基要和定时器周期对上
如果加减速换成了在定时器中处理,则参考一下时间分割的方法,算完直接发给总线就好了

出10入12汤圆

发表于 2019-12-25 12:46:30 | 显示全部楼层
感谢楼主,太好了

出0入0汤圆

发表于 2020-2-28 10:13:05 | 显示全部楼层
支持楼主 厉害!!!

出0入0汤圆

发表于 2020-3-3 23:07:11 | 显示全部楼层
Thank you !!!

出0入0汤圆

发表于 2020-3-30 04:35:16 | 显示全部楼层
楼主厉害!强贴必须MARK

出0入0汤圆

发表于 2020-3-30 07:43:59 | 显示全部楼层
有没有和我一样的,控制小白(g码是啥都不懂)希望有对应的硬件来学习实操一下。

出0入0汤圆

发表于 2020-3-30 21:53:10 | 显示全部楼层
这个得顶一下。。。

出0入0汤圆

发表于 2020-4-30 15:40:06 | 显示全部楼层
顶!楼主太厉害了!

出0入0汤圆

发表于 2020-7-17 10:22:43 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-7-21 16:39:46 | 显示全部楼层
感谢楼主分享,学习下

出0入0汤圆

发表于 2020-7-22 09:13:13 | 显示全部楼层
很好的资料,非常有用。

出0入0汤圆

发表于 2020-7-25 11:34:55 | 显示全部楼层
正好需要 感谢

出0入0汤圆

发表于 2020-7-26 09:31:50 | 显示全部楼层
正好需要,谢谢

出10入95汤圆

发表于 2020-7-28 07:04:32 来自手机 | 显示全部楼层
这个厉害了!

出0入0汤圆

发表于 2020-8-7 10:15:42 | 显示全部楼层
感谢楼主的分享

出0入0汤圆

发表于 2020-8-9 14:22:12 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-8-9 22:35:17 | 显示全部楼层
谢谢楼主的分享

出0入4汤圆

发表于 2020-9-18 11:00:18 | 显示全部楼层
留下脚印,时刻关注。

出0入0汤圆

发表于 2020-9-18 13:42:44 | 显示全部楼层
MARK.


学习一下。

出0入0汤圆

发表于 2020-10-5 16:41:11 | 显示全部楼层
感谢楼主,学习一下

出0入0汤圆

发表于 2020-10-5 16:50:30 | 显示全部楼层
跟着学习一下

出0入0汤圆

发表于 2020-10-30 17:03:57 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-11-1 06:46:45 来自手机 | 显示全部楼层
学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 04:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表