Contact me: hankecnc@gmail.com

通过 IP 网络连接到远程运动控制器 #1072

推推 grbl 3年前 (2023-02-02) 524次浏览
打开
Harvie 打开了这个问题 2018 年 12 月 1 日 · 19条评论
打开

通过 IP 网络连接到远程运动控制器#1072

Harvie 打开了这个问题 2018 年 12 月 1 日 · 19条评论

注释

通过 IP 网络连接到远程运动控制器 #1072
合作者
哈维 评论了 2018 年 12 月 1 日  

GRBL 到 ESP32 有有趣的 wifi 和蓝牙启用端口:
https ://github.com/bdring/Grbl_Esp32

所以我想到,我们可以支持这一点。但后来我发现,pyserial 库已经知道如何使用此 URL 语法(#592)连接到远程串行:

  • socket://localhost:2217(= 纯 TCP 连接)
  • rfc2217://localhost:2217(= rfc2217 连接)
  • spy:///dev/ttyUSB3?raw(= 调试到 STDERR 的串行流量)
  • hwgrep://0451:f432(USB 视频:PID)

更多文档在这里:https ://pyserial.readthedocs.io/en/latest/url_handlers.html

通过 IP 网络连接到远程运动控制器 #1072

我想测试与各种连接选项的兼容性,比如bdring/Grbl_Esp32#60

我还发现 pyserial 有方法可以附加您自己的 URL 处理程序以支持新的串行协议或后端:
protocol_handler_packages.append("my_handlers")

我还将尝试在 pyserial pyserial/pyserial#393中实现一些新的处理程序

通过 IP 网络连接到远程运动控制器 #1072 哈维 补充道 增强 研究和代码清理 需要更多思考的长期想法发件人和串行连接 标签 2018 年 12 月 1 日
通过 IP 网络连接到远程运动控制器 #1072
斯特伦斯 评论了 2019 年 3 月 3 日  

首先感谢您为开发 BCNC 所做的所有工作。

我需要帮助。
我目前正在编写一个应该在 ESP32 上运行的 GRBL 控制器。
这里是项目的链接:https ://github.com/mstrens/grbl_controller_esp32

这个想法是将 ESP32 连接到触摸屏和 SD 卡支持,以控制另一台运行 GRBL 的微型计算机。因此无需连接 PC 即可控制 GRBL。
仍然为了配置 GRBL,如果用户想使用 pc 的键盘发送一些 GRBL 命令,我还想允许用户使用 BCNC 和 telnet 协议(通过 Wifi)。

在 ESP32 站点上,我编写了 telnet 服务器,它似乎可以工作。如果我在我的 windows pc 上打开一个 telnet 会话,我可以在 PC 和 GRBL 之间交换 telnet 消息。

现在,我想用 BCNC 测试它。
我正在运行 Windows 10(64 位)。我刚刚从这个链接https://github.com/vlachoudis/bCNC/releases
下载了 BCNC 的 windows exe 版本 我选择了最新版本 (0.9.14.52)。 安装成功,我可以运行 BCNC。 我仍然无法打开 telnet 会话。 在带有串行参数的窗口中,在“端口”中我输入“rfc2217://192.168.1.5:23 192.168.1.5 是我的 ESP32 的 ip 地址,23 是 ESP32 使用的 telnet 的标准应用端口。 当我尝试打开连接我立即在一个小窗口中收到错误消息。窗口 的标题是“打开串行时出错” 消息是“无效的 URL,协议‘rfc2217’未知”

难道我必须安装一些额外的包(pyserial???)。
这个包是不是包含在我下载的“exe”版本中?
如果我必须安装它,请向我解释如何以及在何处安装。
请注意,我完全不了解 Linux 和 Python

通过 IP 网络连接到远程运动控制器 #1072
合作者作者
哈维 评论了 2019 年 3 月 3 日  

我目前正在编写一个应该在 ESP32 上运行的 GRBL 控制器。

我期待启用 wifi 的 GRBL ……
但为什么不与https://github.com/bdring/Grbl_Esp32一起努力呢?
他们有相同的目标,但没有为 GRBL 使用单独的 uC,他们都在单个 ESP32 芯片上运行……

消息是“无效的 URL,协议‘rfc2217’未知”

尝试升级到最新的 pyserial,例如:pip install --upgrade pyserial
不幸的是,我不得不将非常旧的 pyserial 版本放入 bCNC 安装脚本,因为更新的版本不能在 Windows XP 上运行。我必须弄清楚如何仅在 Windows XP 上强制执行此版本。但是现在你应该能够在安装 bCNC 后升级 pyserial …

这个包是不是包含在我下载的“exe”版本中?

抱歉,.exe 是实验性的。它有旧版本的 pyserial 直接编译为 .exe 并且没有办法升级它。

您应该改为使用 pip 安装 bCNC … 然后您可以升级 pyserial,因为它会在安装 bCNC 时降级。使用 pip 安装 bCNC 和 pyserial 后,您可以使用包含的 .bat 编译新的 .exe,但没有必要。

通过 IP 网络连接到远程运动控制器 #1072

感谢您的快速答复。
我看到了关于在单个 ESP32 上运行 GRBL 的项目。
我仍然不确定单个 ESP32 是否可以处理所有任务(TFT、触摸屏、SD 卡、wifi 等)并在正确的时间保持步进脉冲。
此外,ESP32 没有很多引脚来支持 GRBL + 屏幕/触摸屏/SD 卡中的所有功能。
我想要一个也可以独立运行的解决方案(不连接电脑)。
因此,我选择使用 2 台计算机:

  • 用于运行 GRBL 的 stm32 bluepill
  • 一个 ESP32,用于管理屏幕/触摸屏/SD 卡和(可选)与基于 USB 或 Wifi 的 pc 连接。我使用 ESP 作为 web 服务器来允许上传/删除/列出 SD 卡上的文件,并作为 telnet 服务器来控制 GRBL。
    该项目是开源的,可在上面的链接中找到。
    如果需要,请随意使用其中的一部分。

我刚刚删除了我的 BNC 安装(基于 exe 文件),然后我采用了其他解决方案。
所以我安装了 python 2.7 和 bnc
它安装了

  • bcnc 0.9.14.53
  • 串行 3.0.1
  • 麻木 1.16.2
  • 枕头5.4.1

现在,当我尝试连接时,出现另一个错误:
“远程似乎不支持 RFC2217 或二进制模式 [we-BINARY:False(INACTIVE), we-RFC2217:False(REQUESTED)]”

也许我必须升级。
我明天会尝试。

通过 IP 网络连接到远程运动控制器 #1072

我已经尝试使用您提供的命令升级 pyserial。
升级已完成,但我仍然遇到相同的错误。
注意:在 ESP32 中,我收到一条消息说它已连接到 telnet,但在 bCNC 中并非如此

通过 IP 网络连接到远程运动控制器 #1072
合作者作者
哈维 评论了 2019 年 3 月 3 日  

您确定已在 ESP32 上实施 RFC2217 吗?我认为您应该尝试socket://,这只是普通的 TCP 连接……我认为在您的情况下使用 RFC2217 没有意义。它主要由终端服务器用于传输 rs232 元数据(波特率、dtr pin 等)。您可能根本不需要这个,因为 GRBL 始终是 115200 波特率,因此您可以在 ESP32 中对其进行硬编码,而您根本不必实施 RFC2217 协议,这将为您节省一些复杂性。

通过 IP 网络连接到远程运动控制器 #1072

我尝试了 socket:// 并且现在可以连接了。
我得到例如 GRBL 状态空闲。
仍然不稳定。几秒钟后 ESP32 锁定,BCNC 表示未连接。

我将进一步查看 ESP32 方面的错误。

通过 IP 网络连接到远程运动控制器 #1072

好像没问题
在 ESP32 中,我有一个菜单来选择 GRBL 命令的来源(独立/USB/telnet)。
当 ESP32 连接到 bCNC 但处于独立状态时,我不得不不断清除 ESP32 中的 telnet 输入缓冲区(并丢弃字符);否则一些缓冲区变满并且 ESP32 锁定。
谢谢你的帮助。

通过 IP 网络连接到远程运动控制器 #1072
合作者作者
https://github.com/bdring/Grbl_Esp32
https://github.com/mstrens/grbl_controller_esp32

由于已经有两个项目在做这件事,我认为我们应该就一些基本的身份验证机制达成一致:

我认为 bCNC 可以在连接/重置后立即发送类似这样的内容:

(USER cnc)
(PASS cncpwd)

它会被其他 GRBL 实现忽略,因为它是一个注释,但网络设置可以使用它来防止随机的人弄乱你的 CNC。

通过 IP 网络连接到远程运动控制器 #1072

@Harvie是通过普通 TCP 连接发送的吗?如果是这样,它似乎很弱(但总比没有好)。

通过 IP 网络连接到远程运动控制器 #1072

在我的项目中,我不认为它是真正需要的。
目前它是这样工作的:
ESP32 检查(在主 arduino 循环中)是否存在 telnet 连接并在 TFT 上显示状态。
ESP32 只接受一个连接(如果已经连接则拒绝新连接)。
当 ESP32 处于“独立”或“USB”模式时,它只读取但丢弃来自 telnet 的所有字符。
当用户要使用telnet时,它有:

  • 首先在bCNC端开启telnet交易。TFT 上的 telnet 状态表示 telnet 是否正常。
  • 其次,它必须选择(在 ESP32 菜单上)进入“telnet”模式的选项。
    从这个时候开始,ESP32 只是转发 GRBL 和 bCNC 之间的所有字符。
    要停止“telnet”模式,用户必须在 ESP32 中选择“Stop PC”选项,然后再次进入“Standalone”模式。
    如果用户在没有连接的情况下选择选项“telnet”模式,那么 ESP32 会发出警报并保持“独立”模式。
    我认为随机的人会弄乱 CNC 的风险不大,因为一次只有一个 telnet 连接,用户必须在菜单中选择一个选项才能控制 CNC。
通过 IP 网络连接到远程运动控制器 #1072

仅供参考:
即使在独立模式下,我也接受打开 telnet 连接,因为它允许我将来自 GRBL 的所有消息转发到 telnet 会话(如前所述,传入的 telnet 消息在独立模式下被丢弃)。
目前,我不在 ESP32 TFT 上存储/显示 GRBL 消息
TFT 仅提供 GRBL 状态、WPOS、MPOS 和最后一个错误或警报。
所以我虽然在独立时对调试很有用。

通过 IP 网络连接到远程运动控制器 #1072
合作者作者
哈维 评论了 2019 年 3 月 3 日  

是通过普通 TCP 连接发送的吗?如果是这样,它似乎很弱(但总比没有好)。

它很弱,但他们将来可能会为 Pyserial 添加 TLS 支持。它更多的是为了防止随机事故,而不是完美地保护您的 CNC。但是如果你和你的 CNC 在同一个局域网中,你应该没问题。此外,人们正在研究 QUIC 协议,它可能会直接取代 TCP,并且默认情况下会加密,因此将来可能根本不需要 TLS。

通过 IP 网络连接到远程运动控制器 #1072
迪兰皮尔 评论了 2021 年 12 月 3 日  

@Harvie我一直很喜欢将 Bcnc 用于我的 cnc,但我一直在不断更换微控制器。
我从 arduino Uno 开始,然后转向带有板载 esp 的 arduino mega。现在只使用 Barts 初始项目和他的新项目 FluidNC 转移到 esp32。
https://github.com/bdring/Grbl_Esp32
https://github.com/bdring/FluidNC我使用 Mega 的 GRBL 和 ESP-Link
使用 arduino mega 和wifi取得了巨大的成功
https://github.com/jeelabs/ esp-link
不幸的是,自从我升级到 ESP32 并使用 Barts 项目后,我似乎无法获得好的结果。使用 GRBL_Esp32 似乎工作正常,但在运行时会丢弃部分 gcode。
使用 FluidNC 时,响应时间似乎有很大的延迟,但它似乎保留了数据,但我还没有对此进行足够的测试。
我已经尝试通过我的 wifi 网络连接到它们,并作为接入点直接连接到它们。问题似乎是一样的。我仍然需要尝试使用数据线,看看电缆是否有任何延迟。
任何想法,将不胜感激。
另一种但不是完美的解决方案是能够将文件保存到 sd,然后在 Bcnc 中从 sd 运行它们。

通过 IP 网络连接到远程运动控制器 #1072
味三 评论了 2021 年 12 月 3 日  

运行时丢弃部分 gcode

那是什么意思?某些 GCODE 被忽略,然后它照常运行?

通过 IP 网络连接到远程运动控制器 #1072

它切割了形状,但似乎在奇数间隔的奇数位置错过了步骤,因此零件并不总是在形状的起始路径处完成

通过 IP 网络连接到远程运动控制器 #1072

@dylanpil这个问题似乎更像是一个错误条件,而不是通信问题。我会检查 grbl_ESP32 的未解决问题,据我所知,这可能是 ESP32 电源的问题,因为它有一个不太好的电源可能无法享受的消耗峰值,在这些时刻触发一些随机行为。

通过 IP 网络连接到远程运动控制器 #1072

@misan谢谢,我很乐意解决这个问题,所以我也在尝试与 grbl_ESP32 团队合作。
我的电源是一个不错的 32v,CNC 内置,它连接到 6 件装 cnc 控制器,可以承受 12-36v。
https://github.com/bdring/6-Pack_CNC_Controller
我的电机驱动器也连接到这个电源。
我可以尝试使用单独的体面电源运行它。

通过 IP 网络连接到远程运动控制器 #1072

@dylanpil我的意思是 ESP32 电源电压可能不够稳定,而不是电机的电源。如果可能,请尝试关闭移动电源以查看是否有帮助。

通过 IP 网络连接到远程运动控制器 #1072

@misan我明白你在说什么,一旦我能够测试单独的移动电源,我就会给你反馈。感谢您的指导。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
项目

还没有

发展

没有分支机构或拉取请求

4人参加
通过 IP 网络连接到远程运动控制器 #1072通过 IP 网络连接到远程运动控制器 #1072通过 IP 网络连接到远程运动控制器 #1072通过 IP 网络连接到远程运动控制器 #1072

喜欢 (0)