开源改变世界

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

推推 grbl 3年前 (2023-02-02) 135次浏览
打开
13 个任务中的第 4 个
andrewismoody 打开了这个问题 2018 年 1 月 5 日 · 29条评论
打开
13 个任务中的第 4 个

支持 Grbl 控制器中的发送响应流协议以进行故障排除#252

andrewismoody 打开了这个问题 2018 年 1 月 5 日 · 29条评论

注释

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

描述

查看代码,GrblController 似乎被硬编码为字符计数流协议。我编译了 Grbl 以在我的 Arduino 上启用 Echo 命令,但事实证明这在字符计数模式下是无用的,因为 Echo 与最近发送的命令不对应(如预期的那样)。希望能够在 Grbl 的字符计数和发送响应协议之间切换。这里的总体思路是将发送的命令与来自 Grbl 的回显响应进行比较,以确定是否发生任何数据损坏。理想情况下,这可以与软件中的特殊模式(故障排除模式?)结合使用,以自动比较发送和接收的 gcode 并在不匹配时提醒用户。

版本

  • CNCjs:1.9.12
  • 节点.js:6.12.3
  • NPM:5.6.0
  • 树莓派 4.9.35-v7+ #1014
  • Grbl v1.1 [已启用 REPORT_ECHO_LINE_RECEIVED]

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • Grbl
  • 冰沙
  • TinyG/g2核心

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux
  • 树莓派
支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

如果您想进行快速测试,这里有一种方法可以修改 CNCjs 服务器代码,而无需进行完全重新编译。找到文件 cncjs/dist/cnc/app/index.js,保存一个副本以便轻松恢复,然后使用文本编辑器对其进行编辑。根据您的安装方式,该文件可能位于您的主目录下或 /usr/local/lib/node_modules 下。搜索此行的第一次出现

        this.sender = new _Sender2.default(_Sender.SP_TYPE_CHAR_COUNTING, {

在 v1.9.13 中,在 Raspberry Pi 上,它的行 #16855。

将 SP_TYPE_CHAR_COUNTING 更改为 SP_TYPE_SEND_RESPONSE,保存文件,然后重新启动 bin/cnc 进程。

您也可以进行更广泛的编辑,但需要注意的是您必须使用老式 Javascript 而不是 ES6 进行编码。

我最近经常使用这种技术——直接编辑 index.js,因为在 Raspberry Pi 上使用 npm 重新编译在最好的情况下需要几分钟,而在最坏的情况下有时需要几个小时。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
作者
安德鲁斯穆迪 评论了 2018 年 1 月 6 日  

杰出的!我会试一试。显然,我不擅长 Node 开发,因为我没有在控制器中看到实现 SP_TYPE_SEND_RESPONSE 的位置。谢谢你的提醒。

编辑:哈。因为它在 Sender 类中。为时已晚再调度这个?

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

这个应用程序的编码学习曲线非常陡峭。45 年来,我一直在使用 C 和许多其他语言进行编程,要跟上 JavaScript 开发的当前状态,这真是一个艰难的过程。您不仅要使用 JS 编程,还必须应对 Node、NPM、Babel、lodash、jQuery、bootstrap、webpack 和许多其他库——更不用说 eslint、stylint、coveralls 和 Travis CI 等辅助服务了。您必须每 5 分钟将思维齿轮切换到不同的知识领域。已经到了你必须生活和呼吸工业强度的 JS 开发才能祈祷跟上的地步。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

我切换到 SP_TYPE_SEND_RESPONSE 只是为了确保它基本有效;毫不奇怪,确实如此。我没有对任何东西进行压力测试。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

太棒了,这似乎确实有效。现在运行一个作业并比较日志以查看数据损坏发生的位置。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

你为什么怀疑数据损坏?您是否看到奇怪的错误报告或不正确的机器运动?

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

没有明显原因的随机切割失败。我怀疑它没有将工具头放在正确的位置。我没有从 Grbl 那里得到错误,所以它并不重要,但足以让事情无缘无故地变得不稳定。之前我有很多问题,以至于 Grbl 会抛出错误,但铁氧体磁芯、消除 USB 集线器、在不同电路上为主轴供电似乎都显着改善了这一点。尽管如此,仍在与一些未知问题作斗争,并且想确定数据损坏是否仍然困扰着我。wiki 中的故障排除部分主要是我之前遇到的麻烦的结果。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

我每年冬天都有同样的问题。这是接地不良或接地不当的问题(例如创建了接地回路)。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
作者
安德鲁斯穆迪 评论了 2018 年 1 月 6 日  

我同意你的看法,只是我将每个组件连接到一个公共接地块并将该接地连接到插座接地。这包括将机器底盘和主轴底盘接地。任何接地点都不应存在环路或电位差。除非我完全误解了什么。当我为主轴电源安装一个继电器时,我第一次意识到我的接地回路问题,但由于 Arduino 和底盘之间的接地电位差过大而无法使其跳闸。所有组件的接地块和公共接地点解决了这个问题,所以我认为它应该已经消除了任何其他相关问题。

编辑:此外,这些问题是去年夏天开始的,而不是冬天。这不是很明显,但足以浪费一些库存并打破一两个。

第二次编辑:我怀疑我在切割时可能会在库存中产生一些静电,这些静电不会消散到地面。我刚刚想到,这可能也是您所暗示的。需要调查库存到机器底盘接地。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

试运行(没有库存,但主轴/电机功率全)并使用这个简单的 powershell 脚本解析出任何不匹配的行。唯一返回的是评论(这是预期的)。接下来要尝试使用实时剪辑。无论问题是什么,我都可能完全误诊了。

Param (
[String] $LogPath = ".\cnc-out-0.log"
)
Write-Host "Reading log file '$LogPath'"
$log = get-content $LogPath
Write-Host "Finding Matches"
$Result = $log|Select-string "\< \[echo\: [^$]|l >"|Select-Object -ExpandProperty Line|%{ if ($_.Contains(">")) { $_.Split(">")[1].Trim() } else { $_.Substring($_.LastIndexOf(":") + 1).Trim("]").Trim() } }|Group
Write-Host "Collating results"
$Result|?{$_.Count % 2 -ne 0 }
支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

哇,听起来是个烦人的问题。

让我想起了我遇到过的最有趣的问题之一,我称之为“范德格拉夫实验室长凳案例”。

我负责 Sun 的“SPARCstation 1”计算机(以及此后几乎所有 SPARC 机器)的引导固件。当那台机器还处于原型阶段时,我们有一个可以随机重启的单元;所有其他单位都完美无缺地工作。每个人都责怪固件,除了固件总是受到指责之外没有别的原因,所以解决问题的责任就落在了我身上。

调试问题需要数周时间。长话短说:该装置位于实验室工作台上,由价值数千美元的惠普可编程电源供电。其他单位只有普通的开关电源。我终于发现,台式电源有时会在 5V 关闭约一毫秒。繁荣,重启。

但是为什么会出错呢?实验台有一个镀铬的圆柱形脚凳。杆没有用螺栓固定在金属侧支架上,而是放在这些支架上的圆孔中。酒吧和侧面之间有油漆。人们会坐在长凳上,将脚放在吧台上,想都没想,就用他们的胶底鞋在吧台上旋转。橡胶鞋底、绝缘金属物体和机械能的结合,本质上就是一台范德格拉夫发电机!最终,静电棒上的静电荷会累积起来,直到它以弧形穿过油漆到达工作台两侧,然后沿着电源的电源线放电,此时电源会使其 5V 输出出现故障。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

愿意为我们提供一张您的设置照片吗?

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
作者
安德鲁斯穆迪 评论了 2018 年 1 月 6 日  

https://drive.google.com/open?id=1Dt0ZE8MRZyabtatIjuH29l7l_axmCCLi2Q
电缆管理有点尴尬,但我没有故意将任何电缆绑在一起以确保没有任何感应副作用。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
贡献者
米奇布拉德利 评论了 2018 年 1 月 6 日  

我会尝试什么:

  • 保持信号接地与机箱接地完全分开。
  • 将所有机箱接地线连接回电气箱。
  • 不要将限位开关接地直接连接到机器底盘。您甚至可能需要光隔离限位开关。
  • 给每个限位开关一个单独的公共回给 Arduino。
  • 光电隔离主轴继电器。我使用的是 SSR-40DA 固态继电器,其内置控制输入是光耦合的。
  • 我的第一个尝试是不将步进框架连接回驱动板。如果您使用屏蔽电缆进行步进接线,请在驱动器端连接屏蔽层,而不是在电机端连接屏蔽层。
  • 考虑步进电机电源间歇性限流的可能性。

在这种情况下进行有效接地需要考虑接地电流需要流向何处,并为其提供一条不干扰其他电路的路径。仅仅将所有事情都集中在一个点上并不总是能做到这一点。有时您必须制作由小值电阻器连接在一起的“接地岛”。电阻器防止岛之间的大电位,但也通过使一些路径“不是最小电阻路径”来“引导”接地电流。

如果我在重复您已经知道的要点,我们深表歉意。

祝你好运。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
作者
安德鲁斯穆迪 评论了 2018 年 1 月 6 日  

这些似乎都是非常好的建议,而且大部分都在我的脑海中。我读过很多关于在地面上使用电阻器的文章,更常见的是使用限位开关。当我 4 年前开始这次冒险时,我只是想要一台低成本的业余数控机床来做一些项目。我没想到甚至不想设计机器本身。这一切都变得非常累人,我每次都需要获得大量的额外知识才能削减一些东西。一边抱怨:

当你说:

给每个限位开关一个单独的公共回给 Arduino。

你的意思是将开关的开路腿接回 Arduino 接地引脚吗?

我认为你的意思是 Arduino 和步进驱动器应该共享一个接地块,该接地块与底盘接地块有电阻连接,然后连接到接线盒。

此外,我认为你建议我将步进电机屏蔽接地到驱动器接地(或者这应该是一个单独的接地块,与驱动器/Arduino 接地块有电阻连接?

我目前正在将限位开关屏蔽接地到底盘接地块——这是否也应该与驱动器/Arduino 块一起使用?

对电阻尺寸有什么建议吗?

我非常有信心电机功率没有限流,因为我已经确保安培数高于电机总消耗安培数。

编辑:我的意思是感谢您对我的问题感兴趣并提出建议。我真的很感谢反馈!

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

我刚刚完成了一个完整的剪切通道,没有任何问题,并且日志没有显示任何不匹配的回声响应。
这部分我还有 4 道要切,明天我会一个接一个地完成。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
合作者

不确定您是否阅读过此 Wiki:https ://github.com/gnea/grbl/wiki/Wiring-Limit-Switches

除了上拉电阻外,将 100nF 电容器连接到 GND 可能有助于噪声过滤。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

谢谢,切顿。我读过,但我实际上并没有使用限位开关,只是归位开关。我真的不明白。
我想我在这里关注错误的细节。我不希望嘈杂的归位开关会影响工具头在切割过程中失去其位置。
似乎我需要决定哪个更便宜:电子工程学位或高质量的预制数控机床。
似乎“hobby grade cnc”意味着这台机器将成为你的爱好,而你想要切割的任何东西都是你永远无法实现的白日梦。
我想我会看看我是否可以将这些电阻电路拼凑在一起,看看是否可以提高可靠性。感谢大家的投入。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

我同意,DIY CNC 是一种热爱劳动,强调“劳动”。专业人士获得报酬以使事情“正常工作”是有原因的。也就是说,商业质量的结果是可能的。我使用 GRBL/CNCjs 驱动的廉价激光雕刻机在我的产品上放置徽标,并使用 g2core/CNCjs 驱动 Taig 铣床对我的产品进行基本成型。

事实证明,我确实拥有电子工程学位 :-) 我会为您画一张显示物理连接性的图表。给我几个小时来处理其他事情,然后我会张贴图纸。

从噪声敏感性的角度来看,上图中显示的布线绝对糟糕。承诺的图表将显示应该如何完成。

限位开关和归位开关是一回事 – 归位只是两端之一的限制。

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252

Here’s a swag at how things should be wired. Let me know if this makes sense.

CNCMachineWiring.pdf

支持 Grbl 控制器中的发送响应流协议以进行故障排除 #252
Author
喜欢 (0)