开源改变世界!!

连接时主轴立即启动 #96

推推 grbl 2年前 (2023-02-10) 92次浏览
关闭
pilant 打开了这个问题 2019 年 3 月 17 日 · 13条评论
关闭

连接时主轴立即启动#96

pilant 打开了这个问题 2019 年 3 月 17 日 · 13条评论

评论

连接时主轴立即启动 #96

我正在尝试使用 OpenCNCPilot v1.5.4.0,但遇到了一些问题。此刻,
当我连接到 COM 端口时,主轴立即启动并且工作台开始
缓慢移动(Y 轴)。

令人费解的是它在我启动应用程序的前几次这样做,然后由于未知原因停止了。当我连接(并打开 ngc 文件)时,主轴不会启动。正确“连接”几次后,现在又回到了启动主轴的状态。
我确实尝试在连接之前打开 ngc 文件,并且主轴在连接时仍然启动。

我尝试运行 Candle 1.1.7(使用 grbl 1.1f),连接时一切正常。所以我不认为它是 grbl 板。

一个可能的线索是我不得不多次启动/停止/中止 OpenCNCPilot,所以可能有一些“东西”遗留在周围导致这个(注册表,配置文件等)

有任何想法吗?(难道我做错了什么?)

连接时主轴立即启动 #96
作者

顺便说一句,我尝试启用“显示状态消息”和“将流量记录到文件”。没有生成任何状态消息,并且日志文件为空。

连接时主轴立即启动 #96
作者

我安装了一个串行端口嗅探器(HDD 软件的免费串行分析器)并且看到了一些非常奇怪的东西。当我启动 Candle(重置原始位置并在探测后抬起工具)时,我得到以下信息:(
写入 grbl)
000138: 2019-03-18 17:56:26.6639570 +0.0048308

18。
000156: 2019-03-18 17:56:28.1296627 +0.0339690

3楼?

(从 grbl 读取)000142
:2019-03-18 17:56:28.0926522 +0.0000088

0D 0A 47 72 62 6C 20 31 2E 31 66 20 5B 27 24 27 ..Grbl 1.1f [‘$’
20 66 6F 72 20 68 65 6C 70 5D 0D 0A 5B 4D 53 47 寻求帮助]..[MSG
3A 27 24 48 27 7C 27 24 58 27 20 74 6F 20 75 6E :’$H’|’$X’ 到 un
6C 6F 63 6B 5D 0D 0A 锁]..
000160: 2019-03-18 17:56:28.1328343 + 0.0000046

3C 41 6C 61 72 6D 7C 4D 50 6F 73 3A 30 2E 30 30 <报警|MPos:0.00
30 2C 30 2E 30 30 30 2C 30 2E 30 30 30 7C 46 53 0,0.000,0.000|FS
2C 3A 30 57 43 4F 3A 31 34 35 2E 36 30 36 :0,0|WCO:145.606
2C 32 2E 38 37 33 2C 2D 32 2E 34 35 31 3E 0D 0A ,2.873,-2.451>..

当我启动 OpenCNCPilot 并连接时,我得到以下信息:(
写入 grbl)
045002: 2019-03-18 17:48:51.5075184 +0.0003475

0A 24 47 0A 0A 24 23 0A.$G..$#。
047935: 2019-03-18 17:48:52.1083452 +0.0011208

3楼?

(从 grbl 读取)
045007:2019-03-18 17:48:51.5085616 +0.0000038

38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 8888888888888888
38 38 38 3C 38 38 3C 38 38 3C 38 38 3C 38 38 38 888<88<88<88<888
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 8888888888888888
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 8888888888888888
38 38 3C 38 38 3C 38 38 3C 38 38 3C 38 38 38 38 88<88<88<88< 8888
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 8888888888888888888888888888888888888888838
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 8<88<88<88888888
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 8888888888888888
并且对第二次写入的响应大致相同。

因此,在 OpenCNCPilot 的情况下,grbl 软件似乎有些“混乱”。两种情况下端口的波特率都是正确的,但我不知道大小、奇偶校验和停止位设置。此外,如果有任何 RS-232 控制信号(DTR、CTS 等)发挥作用。

也许这会有所帮助。

  • 标记
连接时主轴立即启动 #96
作者

我忘了补充,在运行 OpenCNCPilot 后出现奇怪的行为,如果我启动 Candle,清除警报后一切正常。我不知道这个警报的来源。(您可以在蜡烛“嗅探”中看到警报。)

连接时主轴立即启动 #96
所有者

嗨,马克,

感谢您使用分析仪对此进行调查。这是一些非常奇怪的行为。在这方面唯一的区别可能是 OpenCNCPilot 没有设置 DTR 信号,所以 grbl 在连接后不会重置(不知道 Candle 是否也这样做)。你用的是什么板,用的是什么USB串口转换器?你有没有闲置的Arduino?我很想看看它是否也发生了。

马丁

连接时主轴立即启动 #96
德哈罗 评论了 2019 年 3 月 19 日  

嗨,马丁,马克,

在处理另一个 G-Code 流光(GRBL-Plotter)时,我偶然发现了您在跟踪中遇到的这个神奇的“3F”,请参见此处

据我所知,当在串行通信中使用标准 ASCII 编码时,字符 3F(65 dec,’?’)替换了 127 dec 之后的字符。
超出 127 dec 的那些字符的来源是“Jog Cancel”命令,即 0x85。
该命令位于 127(十进制)的神奇边界之外,直到“正常”字符被通常的串行通信例程很好地处理。

也许你,马丁,通过切换到另一种串行通信方案来破坏通信(我想我在其他一些问题上读过这个?但也许我弄错了……)。
但我不得不说,我对 OCP 没有任何问题,对我来说一切都很好(使用 V1.5.4.0)。

Sven(GRBL-Plotter 的)必须将接收代码替换
rxString = serialPort.ReadTo("\r\n");

byte[] rxBuff = new byte[serialPort.BytesToRead]; serialPort.Read(rxBuff, 0, serialPort.BytesToRead);

有关他实现的完整字节处理代码,请参见此处。
在链接线程的顶部,您会看到以前的代码抛出“?” (3F)。

HTH,
哈拉尔

连接时主轴立即启动 #96
作者

Martin,我刚刚查看了Candle源代码,串口配置为8-N-1,没有流控。(因此不会使用 RTS/CTS。)我还有其他一些 Arduino (Uno) 板,但我必须检查代码是否能在裸板上正常工作;一个没有步进驱动器。

查看 OpenCNCPilot 源代码,似乎 SerialPort 类的设置非常标准。虽然我在类参考文档中没有看到任何指示 RtsEnable 属性默认值的内容。

哈拉尔德,“?” 被 Candle(和 grbl 1.1f)用作棋盘查询命令。(参见维基:https ://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands )在上面的蜡烛嗅探中,这是响应“?”的“警报”信息。查看链接,GRBL-Plotter 日志窗口似乎是将 0x85 转换为 0x3F 的地方。(嗅探器跟踪显示流中的真实 0x85。)

  • 标记
连接时主轴立即启动 #96
作者

Martin,板子是啄木鸟数控板,采用CH340 USB转串口芯片。

顺便说一句,我刚刚尝试使用 Arduino IDE 和 PuTTY 使用 CON 端口连接到电路板,但都没有启动主轴。我能够毫无问题地将 G 代码命令发送到电路板。(他们确实工作了:-)

  • 标记
连接时主轴立即启动 #96

嗨马克,
好的,谢谢你的解释。
我必须承认,我并没有深入研究跟踪,只是被值本身触发了。

哈拉尔德

连接时主轴立即启动 #96
作者

一些更多的信息。查看 Woodpecker 原理图,CH340 提供 TxD 和 RxD(正如预期的那样),但也提供 DTR。所有这些都连接到 ATMEGA328P 芯片。然而,值得注意的是 DTR 用于切换 RST 引脚。

在 port.Open() 调用处设置断点,我启动了 OpenCNCPilot。正如预期的那样,当我尝试连接 com 端口时,我遇到了断点。查看字段和属性,我没有发现任何意外情况。当我从断点继续时,主轴启动了。

一时兴起,我重新启动了程序,并决定在遇到断点后将 DtrEnable 设置为 true。(在调用 port.Open() 之前。)在这种情况下,主轴没有启动,我可以正常使用该程序。

查看 Candle 用于可移植性的 Qt,QSerialPort 似乎默认设置 RTS 和 DTR。我不确定 Arduino IDE 和 PuTTY 的作用。

因此,似乎与操作系统(在我的例子中是 Windows 7 Ultimate)、com 端口和啄木鸟板有一些交互。由于我的 RS-232 分线盒不能与 CH340 一起使用,我可能必须将示波器(我没有逻辑分析仪 :-) 连接到 Woodpecker 上的 DTR/RST 引脚以查看实际情况在。

同样未知的是为什么程序不“工作”(主轴开始转动),然后开始“工作”(主轴没有开始转动),然后又回到“不工作”。

  • 马克,还在摸不着头脑
连接时主轴立即启动 #96
所有者

是的,DTR 通常连接到复位。Arduino IDE 也设置了这个,PuTTY 也可以配置为设置它(不知道默认值)。

我的猜测是 grbl 在未连接时收到一些垃圾,当 OpenCNCPilot 启动时,它会发送一些换行符,使其执行收到的任何内容。所有其他发送者通过重置板来刷新 rx 缓冲区。这可能是 CH340 的一些怪癖?(不知道为什么它总是启用主轴而不是一些随机动作)。

如果你擅长焊接,你可以尝试在 AtMega 的(grbl 的)RX 引脚上添加一个上拉电阻,这样如果 CH340 的 TX 输出为三态,它就不会对 EMI 敏感。

我想我会添加一个选项来启用 D​​TR(当然默认情况下是关闭的),这在我看来是最简单的修复方法。

连接时主轴立即启动 #96

嗨马克!

…还有 DTR。所有这些都连接到 ATMEGA328P 芯片。然而,值得注意的是 DTR 用于切换 RST 引脚。

您确定 CH340 的 DTR直接连接到 AtMega328 的其中一个引脚吗?
“普通型”在 CH340 和 328(C6,图纸左下角)之间串联了一个电容器。
该电容器在 328 处的 RST 上发出尖峰信号,但会阻止稳定信号。

我找到了啄木鸟板的示意图。这个串联电容器按预期实现。

哈拉尔德

连接时主轴立即启动 #96
作者

马丁,奇怪的是我似乎是唯一一个看到这个的人;除非有其他东西(注册表设置?)在工作。无论如何,我认为设置中的“DTR”复选框是一个不错的选择。(在您确定要如何解决此问题之前,我将只使用修改后的代码。)

Harald,CH340 的 DTR 线确实通过隔直电容器 (C6) 连接到 328。我不确定如何获得技术支持。(我从事软件和模拟/数字硬件已经 40 多年了,但我意识到它对很多人来说真的很陌生:-)

我知道啄木鸟示意图的两个版本。一个日期为 2016 年 10 月,另一个日期为 2018 年 10 月。不记得我在本地复制它们时找到它们的确切位置。

解决了这个问题后,我所要做的就是弄清楚为什么即使在应用高度图后工具也没有切穿 PCB 铜。它总是一些东西 :-P

  • 标记
连接时主轴立即启动 #96

嗨,马克,
好吧,好吧,我明白了……:-) 这类东西对我来说并不陌生,我在电子行业工作了 40 多年 :)
我只指出了似乎相关的主题在给定的问题领域对我来说。

也许我应该简短地解释一下为什么我对您的问题感兴趣:
我的 CNC 控制器中有两个 Aduino。一个给 GRBL 1.1 它的家,另一个根据两个拇指操纵杆的投掷产生步进脉冲,以将路由器头定位在 X、Y 和 Z(遗憾的是,操纵杆和 OCP 之间没有逻辑连接,它们彼此不认识) .

当我开始使用我的 CNC 路由器时,我决定将控制器部分构建到标准 PC 外壳中。
所以我无法进一步访问两个 Arduinos 的 USB 端口,这很不酷,因为我发现我的控制器软件之间的通信在当时使用 SerialComCNC),只有在我第一次启动 PC 并随后为 Arduinos 供电时才有效。在封闭的 PC 外壳中没有机会。那些 Arduinos 有 FT232 芯片。
令人高兴的是,带有 CH340 的 Arduinos 对电源排序没有这样的限制,所以我更换了 Arduinos,从此没有问题。

我配备 CH340 的 GRBL Arduino 可以正常使用不同的控制软件:
OpenCNCPilot、SerialComCNC、GRBL-Plotter、Estlcam

啊,是的,要完整:
我在 Win 8.1 和 Win 10 下使用 GRBL 1.1f 和 CH340 以及不同版本的 OpenCNCPilot 的 Arduinos 工作配置。
所以在我看来,配备 OCP 和 CH340 的板之间没有明显的不兼容(尽管事实上这个话题时不时地出现在 OCP 的问题中)。

嗯,没有预期的那么短……;)

无论如何,请在 Martin 推出 DTR 选项时通知我们……
Harald