注释
尽量确保您的 g 代码块不会太长。意思是,摆脱机器精度和重复语句之外的额外字符。如果这没有改变任何东西,请发送您的代码示例以及您在做什么,以便我们更好地了解问题所在。 |
谢谢,我刚刚阅读了关于我正在使用的 G 代码发送器的问题,这似乎是说其他人有这个问题。你能推荐一个稳定的g代码发送器来感受Grbl吗?我正在使用 Grbl 0.7d |
调试建议:
|
谢谢 dexter,但我以前没有使用过 python。我下载了它并尝试运行,但无法做到这一点。你能指点我一个教程吗? |
不幸的是,我无法读懂您的想法,所以除非您告诉我您遇到了哪个错误(以及您正在尝试使用哪个操作系统和 Python 版本),否则我无法帮助您。 |
@gorbie35: 如果你想排除 GCodeSender 是问题的根源,你可以试试 stream.py 脚本。您将需要安装 Python 和 pySerial,您可以通过 Google 找到它们。您还可以使用许多其他流式 GUI,但我无法为您指出其中一个,因为我已经有一段时间没有使用它们了。 我认为您的问题听起来像我们以前在这里看到的问题。它与 Grbl 如何解析 g 代码行有关。如果行(又名块)太长,超过大约 56 个没有空格的字符,Grbl 将截断该行的其余字符。’Z’ 语句通常在最后,并且是那些丢失的语句。Simen 和我已经讨论过为此创建一个修复程序,但它需要一些时间来完成,因为它需要我们完全重构解析程序。 因此,就像我之前所说的,尝试从您的命令中删除任何超出机器精度的额外数字,例如 X5.000000 到 X5.000,并删除重复的轴命令,这意味着值不会逐行变化。然后重新测试,看看这是否会改变任何东西。请向我们发送 g 代码示例。 另外,也请尝试使用 Grbl 0.8a。它可能还有其他修复程序也可以解决您的问题。 |
好的,抱歉,我对 python 缺乏了解,但我已经下载了 python2.7.3 和 pyserial2.6。我熟悉matlab代码,那么我现在如何在python中运行这段代码? 我也将尝试使用 gcodesender,因为我还没有使用它,然后回复你。 |
所以我有 gcodesender 工作而且它好多了,z 轴没有问题,但是程序在长代码期间随机阶段失去了与 arduino 的连接。是什么原因造成的?看起来确实不是物理连接问题。所以我不知道它是否可以是Windows 7?或者如果它可能是Grbl?Grbl 0.8a 比 0.7d 更稳定吗?0.8a 的默认引脚是什么? |
大多数人一直在使用 0.8a 没有太大问题。引脚排列完全相同。并且没有任何其他已知问题会导致您的问题,所以我认为我们可以排除 Grbl 是源头。通常情况下,这通常是与实际 g 代码有关的用户错误(请向我们发送您发送的内容的样本)、流媒体程序或硬件问题,如电磁干扰或接地不良。 请解释您为使其“工作”所做的工作以及长代码的含义。我们越了解您的问题,就越能提供帮助。 |
我运行的 g 代码每次运行到不同的长度,这让我相信它不是 g 代码,但我将在下面包含其中的一些。整个代码长 9500 行,运行 4 个半小时。我用 PyCAM 生成了代码,然后我自己在 excel 中对其进行了一些修改,并将其保存为 csv 格式。然后我通过 gcodesender 将它发送到 Arduino uno。有时它运行 7000 行,有时它运行 1000 行。我以管理员身份运行 gcodesender,但它仍然没有运行完成。我想调查一下你所说的接地不良?和电磁干扰?什么会导致这些问题以及避免这些问题的良好做法是什么 这是一个代码示例,我认为它的 grbl 格式非常好,但请告诉我你的想法 G0 Z41.000 然后我把它删掉了,并在程序中包含了更多的代码 X30.228 Z30.000 这就是所有代码看起来没有比这更复杂的了。 |
关于“接地不良” – 如果主轴有电噪声,它可能会导致 USB 故障。这些症状与您所经历的相似——在看似随机的点出现间歇性中断,由于显而易见的原因,更长的工作风险更大。 尝试隔离主轴交流电和计算机/电机电源之间的电路。最好的办法是找到 2 个独立的电路(不同的断路器)并分别为主轴供电。如果您要从继电器(M 命令)切换主轴,请使用像 Fotek(在亚马逊上查看)这样的隔离继电器。 我们(合成器)正在研究各种形式的电气隔离来解决这个问题——比如电容器和压敏电阻,但仍在试验中。 |
如果我可以解决“主轴噪音”问题:
最后,我们能否提供您用于将 G 代码发送到 grbl 的实际软件的链接?谷歌的“gcodesender”给出了多个结果…… |
还有一件事要补充。有一个用户遇到奇怪的间歇性问题的案例。事实证明,他的步进驱动器的冷却风扇离电路板和电线太近,以至于磁场会产生错误的步进脉冲。并不是说这可能是你的问题,但只是检查并尝试统治奥尔登和拉杜也提到的一些事情。 另一个问题,你的 4 小时运行时间相当长,比我通常对典型用户的期望要长,而且肯定比我单次操作的时间要长。我会说我最长的时间不超过一个小时。那么,大约需要多长时间才能看到错误?是否一致? |
我会对整个文件非常感兴趣。这对于长时间运行的操作来说是一个很好的测试。您可以通过什么方式发布或提供它? |
大家好,首先感谢您的反馈!非常感激。我的脊柱是三相的,因此与控制装置完全不同。 但我已努力确保信号电缆与其他电子设备清晰,我计划明天进行更多测试。根据上面的描述,我相信我有一个很好的电源。我使用的实际软件的链接如下: https ://github.com/OttoHermansson/GcodeSender/downloads 然后回答 chamnit:错误似乎不一致,有时会在一个小时后发生,有时会在 3 个半小时后发生。然而,由于程序的长期性质,我只进行了 4 次测试运行,所以我需要进行更多测试以获得最终结果。 我有一个问题,我不知道它是否放错了位置,但我认为错误可能是由于 Windows 7 关闭了 USB 端口或检查了端口?这可能吗? PS我可以完整地发布代码,但我不知道最好的方法是什么?它的9000行? |
如果您有一个保管箱,您可以发布文件,然后获取它的公共 URL。Dropbox 是免费的(用于少量使用),而且非常易于使用。感谢您查看这个。我会通过尝试在我的设置上运行它来回报(空气切割,而不是实际切割) |
好的,GCodeSender通过一次只发送一行来进行流控制(并等待另一端回复 CRLF,然后再发送更多)。它是粗略和简陋的,但它适用于 grbl 如何管理串行通信,至少只要一行 GCode 适合 grbl 的串行接收缓冲区(当前设置为 256,而 GCode 要求一行中最多 256 个字符)。 如果存在任何此类复选框,您可以通过转到设备管理器、找到您的 Arduino 端口、转到属性并取消选择“允许 Windows 关闭此设备以节省电源”来消除对 Windows 的怀疑。 |
好的,所以我发现问题是紧急停止和限位开关在某些时候造成了干扰。不知道如何,但是在断开连接的情况下,机器运行良好。 我正忙着重写上面的代码以节省一些时间。但我想知道人们在使用 8 美元的 Grbl 价值还是加速价值?我将其设置为 10 毫米/秒,但我不确定这如何影响电机的扭矩?越高越好还是越低越好? |
(最大)加速度是一个机器参数:取决于电机能够提供的最大扭矩(反过来,它是驱动器可以提供的最大电流的函数)和运动部件的总组合重量(直接影响它们的惯性),您将获得在当前配置中可实现的最大加速度。通常它在您正在使用的 CNC 系统的数据表中给出。 |
csdexter 是正确的。如果您的机器没有数据表,则应将加速度设置为接近步进电机在最坏情况下开始停止运动的点。(通常是 z 轴上下)。我宁愿保守一点,所以你不会有任何惊喜。 此外,不久前,我们讨论了如何处理机械开关中的去抖或噪声。可能最简单的方法是将一个小电容器与开关并联(低通滤波器)。这将消除任何由外部干扰引起的高频电子噪声。如果您有示波器,我建议监控您的限位开关和急停开关是否存在线路中的一些噪音。 |
对于机械开关,可以插入一个去抖动电路来缓解这个问题。10 年前,最好的版本是施密特触发器或由开关控制的 555,这样开关必须在整个 555 周期内“打开”,脉冲才能输出到 MCU。 对于加速部分,如果手动测试,请确保您测试全挥杆(即完全停止然后倒退,而不仅仅是完全停止)。我在车间使用的方法是在机器上安装一个百分表,这样被测轴就靠在它上面产生一些指示;然后将指标归零;然后运行代码将轴从指示器移开,直到达到最大速度,然后制动到零,然后直接返回并最终到达起始位置。我逐渐增加加速度值,直到 TIR 开始上升,这是我开始失步的明显迹象。 根据您使用的特定驱动器和电机,您可能会在 TIR 上升之前看到电机发生共振,因此此时您停止增加加速度值。 |
对于大多数爱好者来说,基于 RC(低通滤波器)的去抖动器将完成这项工作, csdexter 说的加速测试应该可以,但这只是 2012 年 9 月 27 日凌晨 4 点 43 分,Radu – Eosif Mihailescu < 对于机械开关,可以插入一个去抖动电路来 对于加速部分,如果手动测试,请确保您测试 根据您使用的特定驱动器和电机,您可能会看到 — |
我的错,我忘了指定常识性的东西:预先加载您希望在主轴套环/法兰上/上拖曳的最大重量,并在统计上显着的时间运行测试(用简单的英语来说,会意味着至少 1 小时或您希望使用机器完成的最长(时间)工作的 1/3)。 从上面 chamnit 给出的非常健康的 25% 开始,然后再添加 25%,具体取决于您的电机有多热。 |
gorbie35 评论 on 19 Sep 2012
我正在转换一台机器并启动并运行,x 和 y 轴完美移动,但 z 轴有时没有响应。如果我给它一个命令它会很好地响应但是在代码中它似乎会跳过一个命令?z 命令仍然有暂停,但没有任何反应,然后程序按计划进行。谁能给我一些关于寻找什么的建议?
我正在运行带有 2.8Nm 步进电机的 50v 7.2 amp 电源。我的步进控制器具有衰减设置和微步设置以及参考电压。