注释
|
@timryder: 我没有遇到过该设置范围的问题。我有 600 mm/min^2 和 6000 mm/min 最大速度作为我的一台机器的默认值。我总是使用一个包含很多小线段的 g 代码程序来测试机器设置。我想这取决于你的 Grbl 设置,来自 GUI 的流是否保持同步,以及你发送的线段有多小。请发布您的 Grbl 设置。 config.h 文件中还有一些其他调整可以帮助优化 Grbl 以适应您的系统。如果加速度非常高,您可能需要增加每秒的加速度滴答数(例如 120-150 和您的段缓冲区大小为 8 以进行补偿)并将串行波特率增加到 250,000 以帮助增加吞吐量。 |
|
#define DEFAULT_X_STEPS_PER_MM 640.0 帮我一个忙,你能在你的系统上运行这个 Gcode 小片段吗? // G20 G1 X0.2882 Y1.2336 |
|
@timryder: 谢谢。当我今晚回到家时,我会试一试。明天给我打电话提醒我,如果我忘记了。不过,仅从这一点来看,您的设置似乎并不异常。也不是 g 代码,尽管运动非常小,只有 0.001″ 左右。你用你的机器做什么需要这种精度? |
|
@timryder: 工作良好。检查您的 |
|
这种情况发生在空头走势上的事实表明,这是在梯形缩小为三角形时发生的。这是它必须一步从 max +ve accel 到 max -ve accel 的地方。 我知道非常平滑的 S 曲线型加速空间非常小,但是可以使用一些软启动技术吗?我正在考虑一个短的 a/2 段,这也会减少很多机械应力。 至少,至少有一个阶梯梯形而不是三角形似乎是可取的。这会将反转更改为 a->0;0-> -a 而不是 +a -> -a ,即减半。 如果在这些极端更改期间可能存在软件故障,也可能会改进软件。 |
|
@J-Dunn: 它在我这边有效,不确定状态是什么@timryder的机器。我花了很多时间研究 v0.9 的稳定性,并确保考虑到您提到的任何潜在的短移动问题。对于 CNC 铣床将遇到的预期运动范围,Grbl 应该是稳健的。存在一个有效范围,部分原因是浮点数的舍入和整数步长值处理。这是无法避免的。也已经有许多技术可以帮助圆整三角速度剖面峰值等。这就是为什么Grbl v0.9和v0.8之间会有如此大的差异,也是为什么v0.9可以通过复杂的刀具路径实现如此高的速度而不丢步的原因。对我来说,它已经解决了。 至于 S 曲线,S 曲线的前瞻性规划比人们意识到的要复杂得多。这也是 LinuxCNC 仍然没有它的原因之一。TinyG 表示他们进行 S 曲线规划,但它仅在一小段假设范围内起作用,并试图对其余部分进行暴力破解。但是,别担心,我正在做一些特别的事情,我现在还不想放弃。 |
|
好的,谢谢你的解释。如果已经有软化边缘的方法,那就太好了。我正在建造一台相当大的 CNC 路由器机器,这与我将要移动的质量有关。 事实上,这是我最初认为 grbl 不够复杂的原因之一。看起来 v0.9 可能并非如此。 事实上,我怀疑余弦曲线是理论上的理想而不是抛物线 S 曲线。用泰勒级数的两个或三个项来计算可能是可行的,如果不行,则使用查找表。不过在 Arduino 中可能没有空间。 我可能会尝试使用 v0.9,当我的硬件更加完善时,希望我们能有更多关于您的“惊喜”的消息。应该不错。 |
|
我仍然遇到这个问题,但我试图在其他地方查明它……我意识到我给你的 Gcode 部分是我的软件流编写器的输出,直到它停止……所以我需要制作另一个输出完成并礼貌地请您再次使用它。 还@chamnit我很好奇您在开发和调试时使用的实际硬件是什么?乌诺?什么波特?什么发件人或用户界面? 我正在使用我自己的用户界面和我自己的电路板。电路板使用 FT232RL UART 桥接器,但运行 grbl 的 Arduino Duemilonove 也是如此。我已经通过我的通信电路进行了环回测试,并且在任何波特率甚至超高波特率下都出现了 0 次失败。所以我认为它是 grbl 或 UI。我正在使用基本协议。发送命令等待确定,发送另一个。现在我正在使用推荐的 115k 波特。 |
|
@J-Dunn: 质量应该无关紧要。有运行 Grbl 的巨大、沉重的 4’x8′ 木制 CNC。加速就是加速,S 曲线可以说对性能没有帮助。S 曲线运动配置文件实际上以更平滑的过渡来交换高端性能。但是,S 曲线确实有助于减少令人兴奋的共振模式。如果您的机器不是很硬也不是很快,比如拾放机,S 曲线配置文件肯定会有所帮助。对于 CNC 铣床,机器应该已经足够坚硬以考虑切削力,这样共振模式就不是问题了。 @timryder:我使用 Arduino IDE 后端工具(与直接 IDE 编译中使用的相同)编译并以 115200 波特率上传到库存 Arduino Uno。我通常使用 Grbl Python 流式脚本来测试 g 代码程序,因为它最小、可靠且符合规范。我偶尔会使用 GrblPanel 或 UGS 进行测试(bCNC 看起来也不错,但还没有在机器上使用过)。我不使用调试器或 Atmel Studio。我被告知很多次我应该这样做,但我总是在纯文本编辑器中编写代码并在命令行中工作。我想旧习惯很难改掉。 |
|
@J-Dunn:就移植到 Arduino Uno 以外的其他东西而言,您可以通过更改 config.h 中定义的 cpu 映射立即将 Grbl 编译为 Arduino Mega2560。这将为您提供足够的空间来添加东西,但 Mega 并没有更快。浮点运算在这些 8 位控制器上非常昂贵,必须尽可能减少。还有一些 Grbl 到 ARM 的其他端口。一个是 Teensy 3.1,另一个是 Tiva Launchpad,但我不记得他们走了多远。据我了解,移植是相当微不足道的。 |
|
chamnit,我同意刚性,我想尽量减少机械应力和磨损。高刚度与之相反:一些柔性或齿形皮带都有助于减轻机械冲击。 |
|
chamnit 说:“已经有许多技术可以帮助圆整三角速度剖面峰值等。” stepper.c says: 如果情况不再如此,似乎需要更新评论。 代码有很好的文档记录,但 AMASS 的东西看起来需要有点挠头才能理解。一些关于现在如何完成的文章将对遵循代码有很大帮助。;) |
|
@J-Dunn: Grbl 还在不断加速。梯形/三角形峰值圆化发生在其设计的阶梯段生成中。它不会进行真正的舍入,因为那将是一条 S 曲线。 |
|
我有一个与线程无关的问题……我决定更改我的流代码以允许?在 gcode 的流式传输期间也是如此。在这样做的过程中,我注意到当它 barfs 时,GRBL 的状态进入“队列”……为什么?我该如何预防?我应该以不同的方式发送我的流吗? |
|
@timryder:如果不查看您的流代码并了解它在做什么,就不确定。尝试使用新的 v0.9i master。由于诸如此类的原因,它摆脱了 QUEUE 状态。 |
|
v0.9g,h,i 是否还有 A0 A1 A2 Start、Hold、Abort 的映射引脚?它们是被拉低到地并且高输入触发它们还是反转?还有为某处指定的那些引脚启用内部上拉的功能,或者这样做会成为问题吗?我想知道我是否在我的定制板上以某种方式收到噪音,这可能会导致我的问题…… 不过,我会更新到 0.9i,谢谢! |
|
@timryder:一切都一样,除了默认启用可变主轴(D11 和 D12 交换)。您可以在 config.h 中禁用它。在 v0.9i 中,所有输入引脚在使用一些新的 config.h 选项时都是可配置的,如高电平或低电平触发以及启用或禁用内部上拉电阻。默认情况下,启用内部上拉电阻并假设为低电平作为控制引脚的触发器。您可以通过 config.h 将其翻转为高触发器。 |
|
@chamnit谢谢!我实际上并没有在我的系统中使用 Z 轴,我只使用 X 和 Y。我将更改代码以使其工作。 在我的流式传输过程中,我遇到了各种各样的 RUN、IDLE、QUEUE。我可能已经破解了所有问题的外壳,但愿如此。我目前的 C0 C1 C2 只是与电路板的其余部分隔离,它们没有接地,但我正在考虑使用 10k 并将它们拉下来,或者为了我的努力而在固件中一起禁用它们。我得解决它。 |
|
对于速度,你想要多少速度? 2015-03-18 20:29 GMT+01:00,Tim Ryder notifications@github.com:
|
|
我将我的代码库更新到 v0.9i,到目前为止,我已经非常成功地消除了我的问题。尽管在将我的系统推到最大速度并进行各种类型的长短移动的耐力测试中,我遇到了一种奇怪的行为,我认为系统在错误的位置解释了小数位,或者可能将其翻译为 mm 而不是 in .基本上我看到的是机器在 y 轴上正向移动到我信封外的一个非常大的位置..它一到达那里就继续向下移动到正确的位置但是我关闭了电机并让通信继续运行,以免损坏机器,我可以捕获输出日志。 这是我发送命令并记录交换的交易的链接。到目前为止,今天早上这种情况在我身上发生了两次……我的协议再次发送并等待“OK”响应,然后再发送。 http://www.cmt-engineering.com/StrangeOutput.txt 你能看看我并提供任何想法吗? 编辑:我应该注意到我在 Windows 中有另一个线程,它以 250 毫秒的间隔独立于其他任何东西并且无条件地发送“?” 获得状态。 |
|
那么是什么阻止了“?”被插入 G1 字符串的中间,并导致解析器拒绝全部或部分坐标?这些 |
|
@ashellyWindows mscorlib 允许您一次发送一行,并且在同一应用程序中可以发送任意数量的线程。如果我使用“WriteLine”而不是“Write”,那么它会自动处理线程传入的请求并按顺序发送它们永远不允许在现有传输的中间插入。先进先出堆栈。 |
|
@timryder:错误 24 是一个 g 代码块,它有两个使用轴 (XYZ) 字的命令。从你的 g 代码来看,除了 G1 之外别无其他。这让我相信流由于某种原因被搞砸了。 |
|
@chamnit你能想象它发生在我这边吗?也就是说从用户界面?另外,当我显然没有发布其值接近那么高的任何 GCode 时,你对机器在它的信封之外运行有什么看法……如果你查看机器状态,你会发现它正在向上计数到 Y 轴上的 140 英寸。我从来没有在附近的任何地方指挥过。 为了进行测试,我将暂时禁用执行状态查询的线程。你们有没有人已经实现了允许在流式传输期间查询状态的示例代码? |
|
@timryder: 流很可能也在破坏这些值。你可以只放置’?g 代码程序中的字符让 Grbl 在没有额外线程的情况下进行报告。 |
|
如果我将字符串附加一个“?”,它会工作得很好吗? |
|
是的。我在我的待办事项列表中添加了一个“回声”选项,以帮助解决此类问题。 |
|
Echo 的编译时选项会很棒! |
|
认为这是 Sonny 的问题,但继续了解我在这些帖子中看到的代码,也许任何人都可以启发我。我的问题是 GRBL 是否允许在加工时降低进给率?例如 G01 X120,000 F120.0 将需要一分钟才能完成,如果在此期间机器开始摇晃并可能有损坏小工具的风险,我可以发送命令以降低进给速度吗? |
|
@LotusPack:目前还没有,但我确实以一种允许实时覆盖进给率的方式编写了 v0.9。我需要解决一些小细节。这是 v1.0 首次亮相的主要功能。 |
|
先生们。对于我造成的头痛,我深表歉意……我终于发现我所有的问题都是由我在自定义 UI 中使用的日志记录功能引起的,它占用了计算机中太多的 CPU,这会导致它到 barf … grbl 现在运行良好并且没有问题 谢谢你们的支持!很棒的项目。 |


好吧,我正在用我的硬件做一些测试,当我以更高的加速减速率执行许多小的线性运动时,我一直在经历一些 Grbl 的呕吐。我有 120=600 110=1800
通过这些设置和大量改变方向的微小快速运动,grbl 将只是锁定而不响应。我给它发送了一个 gcode,但没有得到任何回应。我必须软重启它。但是,如果我将加速度从 600 降低到 500,它实际上工作得很好。
同样使用相同的 600 加速参数和连续大移动,它也能正常工作。我的应用程序必须有许多小动作。
想法?