注释
|
关于我正在尝试做的事情的一些背景知识:我正在努力让 ATC 为我工作。我有一个 AMB FME-W DI 主轴(基本上是旧 1050W Kress 的更新版本,具有 0-10V 速度控制和工厂工具更换器)连接到 Grbl 驱动的 CNC。AMB 工具更换器由 2 条气动管路驱动,一条用于解锁工具,另一条用于弹出工具并清除灰尘。 我有一个 Arduino 位于我的 Grbl 控制器和一对将空气发送到 AMB 主轴的 ATC 的气动螺线管之间。目前,换刀器 Arduino 会观察 Grbl 的主轴速度、主轴反转和冷却液管线(Grbl 的唯一输出),并根据这些决定何时弹出。它工作得很好,但它永远不会是防弹的,因为工具更换系统现在根本无法向 Grbl 或 CNCjs 提供任何反馈。所以像https://www.youtube.com/watch?v=7cLCOPLvp_g这样的事情会发生。 我想找到扩展 CNCjs 的方法,以便能够理智地实施工具更换器并从整个过程中获得合理的用户体验。其中一部分几乎肯定会涉及找到一种从 ATC 控制器向我的 CNCjs 工具更换宏提供反馈的好方法,以便控制器可以说“插槽 5 已满”或“工具尚未弹出”之类的话。由于 CNCjs 宏现在没有任何循环或逻辑结构,并且 CNCjs 没有任何明显的方式与其他非 gcode 设备对话,这应该很有趣。 |
|
太棒了,这个路由器都是由 grbl 驱动的吗? |
路由器都是grbl。在位于 grbl 板和主轴之间的 Arduino 上运行了一些额外的工具更换逻辑和软件。它控制继电器来控制驱动工具更换器的气动螺线管,继电器打开和关闭主轴电源,以及一堆或多或少的可选组件,让我的生活更轻松,比如 LCD 显示器,所以我可以查看它正在运行的 RPM。例如,刀具更换代码包括旨在防止其在主轴旋转时弹出刀具的安全功能。就是几百行代码。 如果有兴趣,我可以将其打包并在某个时候将其开源,但作为示例比作为实际代码使用更有用。 |
|
|
@scottlaird, 非常感谢。我正在改装一台氧燃料数控机床,但它是一台宽 5 米、长 10 米的大机器。 |
|
对于这么大的机器,我会认真考虑像 UCCNC 这样的商业控制。这样一台机器的崩溃可能会以各种方式造成昂贵的代价。CNCjs 非常适合业余爱好者和轻型商业用途,但它在软件方面有很多“移动部件”,其中许多变化很快,因此无法从深入和长期测试中获益。在我的台式 Taig 研磨机上,我有 2 Nm 闭环步进电机,每个步进电机可以拉动 180W。他们的力量足以让我害怕。对于像您的机器一样大而强大的任何东西,我想我会想要紧密集成的软件,从而减少组件之间的通信延迟,并且经过很好的测试。 |
|
我想为我的下一台 VMC 机器使用三相工业伺服电机。我们可以将伺服反馈到 cncjs 或 g2core 吗?我认为反馈有两个部分。一种是伺服驱动器正在运行或处于报警状态等广泛的反馈。另一种是读取和显示实际移动的坐标而不是发送的脉冲…… |
|
这有点偏离了手头的话题;伺服系统与工具更换没有密切关系:-) 一般而言,Grbl 不直接支持伺服系统或任何类型的闭环电机,而且确实没有办法在现有硬件上扩展它。 然而,一些驱动程序可以使伺服系统看起来像步进电机,反之亦然。例如,看看 Leadshine 的 CS-Dxxx 闭环步进驱动器——它们同时支持“步进和方向”接口(基本上,它看起来像步进器)和“cw/ccw”接口(它看起来像伺服) . 同样,Leadshine 的许多伺服驱动器也可以支持步进和方向,因此可能可以用Grbl 驱动它们,但我不知道考虑到它们的成本,这是否有意义。 |
|
我在我的磨机上集成了(驱动器和电机在一个包中)闭环步进器,连接到支持警报输入的 g2core。我以每件约 110 美元的价格买到了它们。他们要么走完全程而不失步,要么进入警报状态。 |
|
谢谢@scottlaird的答案。抱歉在错误的线程中提出问题。顺便说一句,工业伺服器还支持脉冲和方向策略。所以它会开箱即用。唯一关心的是接收对控制器的反馈。我现在将为此开始一个新线程。 |
|
谢谢@MitchBradley分享您的经验。我会考虑的。然而,我的想法是使用像西门子或松下这样的全闭环伺服系统,这将消除许多通往可靠机器的障碍。我们将在新线程上讨论更多,以免破坏工具更换器的主要话题 |
|
CNCjs v1.9.18发布。现在您可以在不丢失所有值的情况下声明全局变量。 这里有些例子:
要检查当前值,您可以使用内联注释来输出全局变量,如下所示: (global=[JSON.stringify(global)])
此处列出了所有受支持的 JavaScript 全局对象。 export const GLOBAL_OBJECTS = {
// Function properties
parseFloat,
parseInt,
// Fundamental objects
Object,
Function,
Boolean,
// Numbers and dates
Number,
Math,
Date,
// Text processing
String,
RegExp,
// Structured data
JSON,
};
|
|
使用新增强的 evaluate-expression library,可以提供与外部库通信的函数接口,因此您可以创建一个对象实例来返回状态或与外部硬件交互。 我会看看是否有机会这样做。命令行选项之类的东西可用于传递带有导出模块的 JavaScript 文件,该文件允许您将宏与底层系统连接起来。 |
|
据我所知,@ahedderich去年他开始了添加自动换刀器支持的工作,拉取请求中所有更改的文件都可以在这里找到: master...ahedderich:tool-changer 大家可以先看看他做了什么,如果可行我会在以后的版本中合并他的代码。 |
|
谢谢。我现在正在连接到我的 CNC 的 Raspberry Pi 上构建 1.9.18。这需要一段时间 :-)。我应该弄清楚如何交叉编译它。 |
|
尽管进行了多次尝试,但我未能在运行我的工厂的 Pi Zero 上完全构建最新版本的 CNCjs。它总是在 build-prod-web 步骤中耗尽内存并死掉。
注意:如果您使用的是 cncjs-1.10 之前的版本,则必须说build-prod-app而不是上面的build-prod-server。
上述流程避免了在树莓派上运行eslint、stylint、test等耗时且冗余的操作。 |


描述
我希望 cncjs 能够支持以下自动换刀场景:
给定一个大致如下所示的 gcode 文件:
假设 CNC 带有 ATC 和适当的换刀宏,cncjs 应该能够:
这仍然不足以提供出色的 ATC 体验——至少,我们需要在铣削开始之前弄清楚如何处理换刀器中的任何刀具,并且我们需要能够处理中途中止通过铣削而不会完全丢失 WRT 工具,但这是一个开始。
版本
你如何安装CNCjs?
数控系统
硬件
操作系统