[分享]几个开源运动控制项目的源码笔记
本帖最后由 落叶知秋 于 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
附件
谢谢楼主的无私奉献 这个得顶一下。。。 花了挺多时间研究这个得啊,不错嘛 这个感兴趣!!只是还没看过,不知难度如何?电机S曲线算法吗?多轴是否支持插补 谢谢楼主! hkjabcd 发表于 2018-9-11 18:47
这个感兴趣!!只是还没看过,不知难度如何?电机S曲线算法吗?多轴是否支持插补 ...
都支持多轴插补,用的都是DDA插补,轨迹规划S型加减速是TinyG和Marlin2.0支持 honami520 发表于 2018-9-11 17:47
花了挺多时间研究这个得啊,不错嘛
哈哈,谢谢捧场 谢谢楼主! 落叶知秋 发表于 2018-9-11 19:49
哈哈,谢谢捧场
请问,你做的笔记里,有没有关于加减速的,比如:
1、从速度A上升到B速,半途中突然改成降速到C,半途中再突然改成上升速到D,即目标速度可能一直在变化。
2、从位置A向B位置运行,半途中突然修改为C位置,半途中再突然改成D位置,即目标位置,可能一直在变化。
在以上两种情况,均需要保持速度的平滑,即走S形曲线,尤其是情形2 。。。
kinsno 发表于 2018-9-11 21:27
请问,你做的笔记里,有没有关于加减速的,比如:
1、从速度A上升到B速,半途中突然改成降速到C,半途中 ...
你说的这个可以算是应用要求吧,就是速度和位置允许无限叠加。。。
楼主位的笔记里面主要是针对那几个开源运动控制器软件框架的分析,
和运动控制部分的数据流和关键实现流程,工艺一般都是G代码解析器来解析,
然后系统通过前瞻、速度规划和DDA插补来实现电机运动。
你提的应用要求,笔记里面没有,但我觉得那几个开源运动控制器都可以实现这个应用需求 落叶知秋 发表于 2018-9-11 21:35
你说的这个可以算是应用要求吧,就是速度和位置允许无限叠加。。。
楼主位的笔记里面主要是针对那几个开 ...
可能是吧,我关注的是算法问题,你关注的是框架问题,哈哈。
这些代码,都是LINUX下的吗,还是单片机框架的?有对应的板子可以玩吗?
kinsno 发表于 2018-9-11 21:38
可能是吧,我关注的是算法问题,你关注的是框架问题,哈哈。
这些代码,都是LINUX下的吗,还是单片机框架 ...
单片机下的,最早是avr,现在基本都已经或正在往arm转 非常感谢,关注学习下 谢谢楼主! 感谢楼主无私奉献! 不错~~~支持 这个要顶一下,谢谢分享 对学习运动控制算法有很大的帮助 mark 3D打印CNC电机控制 mark 开源运动控制 谢谢楼主无私奉献 支持闭环控制吗? 支持闭环控制吗? 支持闭环控制吗? cpumaker 发表于 2018-9-13 00:59
支持闭环控制吗?
不支持,楼主位的几个项目都主要是步进开环控制模式,
有外接编码器的接口,但闭环控制还没有实现 绝大部分的控制器均不支持闭环控制。
伺服驱动器通过接收编码器信号,完成闭环控制。 su33691 发表于 2018-9-13 09:13
绝大部分的控制器均不支持闭环控制。
伺服驱动器通过接收编码器信号,完成闭环控制。 ...
哈哈,这种模式一般被称为“半闭环” 谢楼主分享 我用过很多广数、KND的数控系统,驱动电机的信号均为4个信号8根线。
号称2us一个翻转,250KHZ的频率输出。 su33691 发表于 2018-9-13 10:39
我用过很多广数、KND的数控系统,驱动电机的信号均为4个信号8根线。
号称2us一个翻转,250KHZ的频率输出。 ...
那些系统应该是配伺服电机的吧,而且他们一般的架构不是楼主位的那样的,纯单片机控制,
一般都是DSP+FPGA控制,脉冲频率可以做的很高 落叶知秋 发表于 2018-9-13 11:15
那些系统应该是配伺服电机的吧,而且他们一般的架构不是楼主位的那样的,纯单片机控制,
一般都是DSP+FPG ...
广数、KND的数控系统均不区分步进电机和伺服电机,
4个信号:脉冲,方向,使能,报警。
多谢楼主,先收藏一下,以后有空看 运动控制器 开源,记下了 su33691 发表于 2018-9-13 11:53
广数、KND的数控系统均不区分步进电机和伺服电机,
4个信号:脉冲,方向,使能,报警。
...
这个楼主是知道的,脉冲型驱动器的接收端信号基本就这些,但步进电机控制的脉冲频率不能太高,特别是开环的,脉冲频率高了(转速高了)丢步严重,
所以一般这些面向机床和加工中心的数控系统偏向配伺服电机 落叶知秋 发表于 2018-9-13 12:01
这个楼主是知道的,脉冲型驱动器的接收端信号基本就这些,但步进电机控制的脉冲频率不能太高,特别是开环 ...
你说的这些情况是数控机床编程时要考虑的事。实际上输出的脉冲频率很低。既使步进电机也运行的很好。
此处留名,后续细细研究下 回头有空了好好看看
工作的内容就是运动控制卡,有空看看 哪个速度最快,marlin2.0能跑200k了不 475627406 发表于 2018-9-17 09:24
哪个速度最快,marlin2.0能跑200k了不
这个看用什么芯片吧,脉冲发生的机制大同小异,就看处理器的速度了 谢谢分享 有空好好看看,谢谢分享! 这个必须得顶一下:mark ::几个开源运动控制项目的源码笔记 有空要学习一下,谢谢楼主! 有空看看 谢谢楼主! 硬件平台是什么? 下载看看,纯软件算吗 qq635274216 发表于 2018-9-30 17:22
硬件平台是什么?
大多都支持arduino 8位机能写到这个水平 确实不得不佩服 vermon 发表于 2018-9-30 17:50
大多都支持arduino 8位机能写到这个水平 确实不得不佩服
现在也逐渐转向ARM的32位芯片了 本帖最后由 XTXB 于 2018-11-10 22:12 编辑
楼主用心了,感谢分享!正在玩光驱写字机,咱是菜鸟,看grbl一头雾水,学习了。 简直要膜拜了,很棒,感谢分享. 学习一下,谢谢楼主分享。
谢谢楼主! 这个很厉害。 楼主厉害!下载下来看看 非常感谢楼主! 谢谢楼主分享
谢谢楼主分享 不错,谢谢楼主分享
感谢大佬 还没看代码,不知道移植到C8051上是不是同样的道理啊? PCBBOY1991 发表于 2019-10-5 11:02
还没看代码,不知道移植到C8051上是不是同样的道理啊?
算法部分都通用的,底层改一改吧 落叶知秋 发表于 2019-10-5 14:00
算法部分都通用的,底层改一改吧
好的,谢谢,有空研究一下! 不错不错,MARK Mark 一个 GRBL,记号一下。 谢谢楼主无私分享,必须的顶一下{:victory:} 这个厉害了,要学习一下了 支持一下 学习一下 谢谢楼主,挺厉害的 感谢分享。。。 请教楼主,tinyg的固定频率输出是怎么控制加减速的?类似于PWM的机制吗? nango 发表于 2019-12-21 09:10
请教楼主,tinyg的固定频率输出是怎么控制加减速的?类似于PWM的机制吗?
固定频率就相当于时基,规划加减速的时候就把路径以时基为最小单位离散成运动段
速度快就一个时基发一个脉冲,速度慢就若干个时基发一个脉冲,误差为一个时基 本帖最后由 nango 于 2019-12-25 10:33 编辑
落叶知秋 发表于 2019-12-21 14:32
固定频率就相当于时基,规划加减速的时候就把路径以时基为最小单位离散成运动段
速度快就一个时基发一个 ...
感谢楼主,这么久的帖子还能回复我的问题。我现在的想法是最终能够每个周期(比如1ms)输出各个轴的位置信息,以便放在EC总线上,之前研究了很久GRBL,最后发现GRBL生成脉冲时定时器间隔会变,这样就无法在确定的周期时间点输出各个轴的位置。想利用tinyG的时基固定的特性,固定地在每个周期输出位置,但是现在还么研究透,不知道是否可行,想问问楼主有没有什么建议{:titter:} nango 发表于 2019-12-25 10:31
感谢楼主,这么久的帖子还能回复我的问题。我现在的想法是最终能够每个周期(比如1ms)输出各个轴的位置 ...
总线式的就把stepper部分去掉就好了,然后速度规划部分如果还是在后台处理,那就另外在定时器里面取运动buffer出来,发给总线设备就好了,注意加减速计算的时基要和定时器周期对上
如果加减速换成了在定时器中处理,则参考一下时间分割的方法,算完直接发给总线就好了 感谢楼主,太好了 支持楼主 厉害!!! Thank you !!! 楼主厉害!强贴必须MARK 有没有和我一样的,控制小白(g码是啥都不懂)希望有对应的硬件来学习实操一下。 这个得顶一下。。。 顶!楼主太厉害了! 感谢楼主分享 感谢楼主分享,学习下 很好的资料,非常有用。
正好需要 感谢 正好需要,谢谢 这个厉害了! 感谢楼主的分享 谢谢分享 谢谢楼主的分享 留下脚印,时刻关注。 MARK.
学习一下。 感谢楼主,学习一下 跟着学习一下 谢谢分享 学习一下
页:
[1]
2