对话
嗯,你一直很忙。:) 分解和分析有很多变化,但我确实喜欢将运行时命令移动到新模块中的想法。在我们把它整合进去之前,我想真正地研究一下所有的东西。 不过有一条评论,您已将所有双精度数更改为浮点数。据我了解,AVR 编译器会自动将这些更改为在编译时浮动。但是,就向功能更强大的处理器的可移植性而言,我认为将需要更高精度的更关键的计算保持为双精度可能是个好主意,但我们可能必须首先弄清楚哪个变量需要这些更准确的值,例如弧计算。(也就是说,如果你还没有这样做的话):) |
是的,一定要慢慢来。有了这么多变化,我几乎可以肯定你会发现一些东西 顺便说一句:至于 GUI grbl feeder,你见过https://github.com/winder/Universal-G-Code-Sender吗?它就像一个魅力。但显然 Mac 上的 rxtx 存在问题,您必须在其中创建一个特殊目录 /var/something …它写在 Universal-G-Code-Sender 网站上 |
所以我在我的 Mac 上试了一下,我必须做几件事才能让它工作。在 Makefile 中,将编译器更改为“COMPILER=gcc.exe”并从构建语句中删除“–gc-sections”编译器标志。(出于某种原因,我的 Mac 无法识别这一点。)我运行了可执行文件并得到了 Grbl 提示符。它似乎运行良好,但唯一的问题似乎是它不响应任何运行时命令。 所以,我一直在考虑为什么这会有用,因为这增加了另一个(主要)维护的东西,你需要做的就是将你的 Arduino 连接到你的 USB 端口,看看 Grbl 是如何响应的。但现在我知道你要用它做什么,为界面创建预览器绝对是一个方便的工具。我也喜欢它如何使用 Grbl 的所有实际代码并将其包装到模拟器中。 我想我危言耸听的一面想要确保仿真器真正输出与 Arduino完全相同的输出。如果没有,那么用户可以模拟他们的代码来验证它是否一切正常,然后在对他们的设置进行物理运行后发现他们的部分被搞砸了。 对我来说,我认为如果我们能够从该仿真器的步进脉冲中获取数据以便能够在没有示波器(在某些方面受到限制)的情况下处理和查看它,那就太好了。或跟踪有多少处理器使用……话又说回来,为什么硬件仿真器不能同样有效?快速搜索后,似乎有一对夫妇在那里,但我还没有看到他们能做什么。 |
啊,现在我想我知道你所说的“功能更强大的处理器”是什么意思了:其他微控制器? 刚注意到,我的 pullrequest 不能自动合并,尽管我试图处理你最近的提交。如果有帮助,我可以重新调整它。 |
是的,我自己研究了一下 avr 仿真器,发现它们速度很慢(远低于实时)并且设置和操作起来很麻烦,尤其是串行通信。 |
有趣的。也许模拟器会及时变得更好,但你在这里拥有的东西肯定会为你陈述的想法工作。另外,我不得不说你的方法非常巧妙。 所以有几点和问题。 这里最主要的是我看不到这对用户有用,至少目前是这样,但作为开发工具显然是有用的。所以,也许我们应该在 sim 文件夹中放置一个自述文件来说明它的开发和实验用途,或者为 GrblSim 制作另一个官方 Grbl 组 repo(Simen,有什么评论吗?)。 其次,我认为模拟器需要完全脱离主要的 Grbl 代码库。浮点变化对我来说很好,typedefs 也会解决这个问题,但是你在 stepper.c 中添加了一个函数来获取步进器时间。相反,我们可以使用步进器的计时器通过虚拟函数调用自身来为模拟器独立计算它们。也许,这就是我们如何使用这些虚拟函数提取我们需要的所有数据;即步进脉冲数据。 那么,您如何看待这种与外部 UI 程序的接口?模拟器会通过标准输出或某些文本文件输出(步骤、位置、状态)数据吗?它会在某种预定义的数据结构中吗? |
好的,README 是个好主意。 我将修复所有讨论的更改的提交,并尝试为自动合并重新设置基准。 |
我只是尝试运行它,它从不打印任何步进器位置,似乎它永远不会调用步进器中断,我错过了什么? |
这是测试版。有很多工作要做和解决,但这更像是一个概念验证,而不是其他任何事情。如果您对它应该做什么有任何建议,我们非常欢迎。 |
稍后我肯定会更好地了解它,它的实现方式似乎也可以用作一种简单的方式来移植到其他 mcu 而无需更改 avr 主线 |
langwadt:步进器位置打印到 stderr。我不知道在 Mac 或 Linux 上默认情况下它去哪里,在 Windows 上它只是去控制台。您还必须将打印步进器位置的时间步长作为第一个(也是唯一的)参数(例如 0.01)。省略此参数意味着 time_step= 0.0,当前被解释为“不打印任何信息”。但是有一个错误会导致每个块末尾的位置都被打印出来,比如 |
这可能非常有用!我正处于家庭暑假期间,所以这就是我目前有时间提供的所有反馈:-) |
@jgeisler0303:延斯。只是跟进。你在哪里?我很好奇,因为它很酷。 |
对不起,我最近没有发表评论。不过,我一直在阅读这些问题。在寒冷季节之前真的很忙我的房子,晚上光线不足迫使我今年停下来。尚未实施任何讨论的更改,但也没有忘记。很紧急吗?我肯定会回到它,因为我仍然希望它也能为 java Universial-GCode-Sender 的可视化扩展提供动力。 |
没有!不急。就是想。:) |
@jgeisler0303:我正在努力改进规划器和步进驱动程序,我认为这会非常方便。您有时间更新其中的一些代码以便我开始使用吗?它不一定是完美的。我只需要指出正确的方向。谢谢! |
没关系!我让它工作了。它非常简单(而且很棒)。:) |
听起来还不错。我仍然计划尽快让它与您的最新边缘一起使用。如果我能以任何其他方式帮助您,请告诉我。我想我在某个地方有一个 MATLAB 脚本可以读取 grbl-sim 输出并绘制它。 我试着跟上这些问题。它的嗡嗡声。你如何管理这个?你还有固定的工作还是只是不睡觉?你真的应该得到一枚勋章什么的! |
PS:你可能已经想通了,所以以防万一:
|
哈哈。睡觉?谁需要睡觉?:) 我很幸运,最近有很多空闲时间和我在读研究生的未婚妻一起工作。当她在学习时,我在 Grbl 上工作。谁知道空闲时间什么时候会停止,因此需要努力完成这些工作。 无论如何,一直专注于修复/升级步进算法,所以最近几天我没能玩它。主要是因为它无法模拟 AVR 在步骤中断期间的实际处理时间,但我想当规划器获得相同处理时我会使用它。 |
@jgeisler0303为什么不使用文件实际实现 NVS(EEPROM),而不是让用户始终将 $* 添加到他们的测试 G 代码的开头?我的意思是,您已经挂钩/替换了 eeprom.c 函数,为什么不一路走下去让它变得有用 |
@csdexter这听起来像是合乎逻辑的下一步。我真的让它运行起来很简单,然后停止了开发。 很高兴听到你克隆了它。我得看看你的叉子。你适应最新的grbl edge了吗? |
@jgeisler0303我没有克隆你的模拟器,而是开发了一个完整的 HAL 来更容易地移植到其他架构。第一个 HAL 实现用于 AVR,第二个用于主机(即您编译的 POSIX 机器),我广泛使用它来调试和观察代码的工作方式。所有的功劳都归功于你激发了这个想法——这比让 simulavr 工作然后以传统方式调试代码 (gdb & Co.) 容易很多很多倍。 我的 EEPROM 代码(在主机 HAL 中)在这里,“本地”(AVR) 版本在这里。 出于战略原因,我的叉子有点落后于此处的官方代码:我打算以不同于此处实施方式的方式实施一些事情。 |
刚刚重新启动了使用最新的 grbl 边缘运行的模拟器。它不需要修改原始文件,但会在编译时通过注入包含侵入 planner.c 和 protocol.c(请参阅 makefile)。 |
太棒了,延斯!这真的很酷。我将继续合并它,并在 sim 目录中添加一个自述文件,让人们知道它是什么。我有几个星期没有工作了,因为我正在努力让我的工作室最终建立起来,但我确实有一个让计划者更有效率的想法。它基于你大约一年前的想法。我已经充实了一些内容,希望得到您的意见。它现在在基于 Matlab 的模拟器中。我可以寄给你吗? |
哇,感谢合并。现在我真的有理由整理代码了:-) 我想到的另一条路是编写一个 Java GUI 来查看
|
模拟器在我的(非常新鲜的)前端中可以很好地预览: |
好的! |
C++、VS2010 |
开源? |
还没有,缺少太多功能(即使是我自己使用的),比如慢跑、长度传感器…… |
不幸的是,Windows …… |
您好, 如果你正在考虑开源,你可以使用 QT 来 谢谢, JKSoft 在 2013-01-28 10:29 写道:
|
不错! |
我对Linux一无所知.. |
JKSoft 在 2013-01-28 10:51 写道:
问候, PS: I used QT only one time and someone told me he was able to compile |
@JKSoft : Very sweet! I’m glad you got the simulator integrated without too much difficulty (I hope). We were hoping that someone would take up the new code and apply in a new cool way, as most of us are quite busy recently to keep working at this. As for QT, I think if you can share your C++ source on Github, that in my mind would be good enough to get people who do know QT or Java to see how you installed it into your GUI frontend. Good commenting goes a long way. This would definitely help everyone I think. |
各位维护者,
我终于设法通过评论完成了 grbl 模拟器并对其进行了测试。这些变化可能看起来很大,但 grbl 实际上只在一个地方发生变化:execute_runtime 被移动到一个单独的模块,这样我就可以为模拟器覆盖它。所有其他 grbl 文件仅更改为使用 float 声明而不是 double(我没有找到一种非侵入性的方法来告诉 gcc 像 avrgcc 那样编译 double)。
模拟器的其余部分位于新目录“sim”中。模拟器尽可能多地使用 grbl 中的代码,并且应该在不触及 grbl 的情况下对 grbl 进行许多更改。
它是通过在“sim”目录中调用“make all”来构建的(当时仅支持 Windows 上的 MinGW,但所有其他平台都应该是直截了当的,因为它都是纯 c 语言)。
grbl_sim 从 stdin 获取命令,直到遇到 EOF。它像 grbl 一样响应,并在 stdout 上提供有关新创建的块的信息。在 stderr 上,它提供有关步进器位置的信息。这可以通过命令行参数(只是一个浮点数)来配置,该参数告诉模拟器打印信息的时间步长。
模拟步进器,以便缓冲区始终最大程度地充满,除非调用 plan_synchronize。
你怎么说?