注释
@bajticzek 不,你没有遗漏什么,它没有实现(IMO 以合乎逻辑的方式)。 |
不知道……如果紧急停止被激活,你根本就不能移动机器。它甚至不应该与外界交流。但我猜中止输入实际上只是为了机器的硬重置,没有别的。那我就自己实现这个功能吧。 |
对于急停和机器安全要求 (EU),您需要一个启动按钮和一个停止按钮,并且要求在断电后机器不会启动。要实现这一点,您需要一个具有启动瞬时按钮的继电器,该按钮可以启用继电器,并且继电器必须自动保持。现在急停有双触点,通常是 NO 和 NC。NC 连接到该自动保持继电器并中断自动保持功能。NO 连接到停止中断。继电器在 12 毫秒后中断 Arduino(继电器通常为 5 毫秒,额外的 7 毫秒来自相应尺寸的额外电容器和二极管)。然后这是 HW 实现和 uniquevocable 可证明它始终有效,SW 很弱,例如慢跑工作总是独立于错误状态并且可以取消错误状态。进一步证明 SW 像预期一样工作并不容易,这涉及检查所有功能的所有源代码和检查优化代码(生成的 asm)……。BR Chris 2019-11-27 16:05 GMT+01:00,Radek Opluštil <notifications@github.com>:
|
我的机器是这样接线的:主电路上有三个继电器。其中一个将 230V 切换到所有电源,另一个是自动保持继电器,第三个与自动保持继电器串联,并通过软件关闭整个机器。实际上,将主电源线插入墙上插座后,机器什么都不做。任何地方都没有通电。按下瞬时摇臂开关后,自动保持继电器激活,主电源继电器激活,机器“启动”。我可以通过软件激活第三个继电器,这会破坏自动保持功能并在 linux 机器断电后优雅地关闭机器。如果发生断电,机器将不正常地关闭并且不会再次启动,直到您再次按下该翘板开关。我的急停按钮配置为两个并联的 NO 开关(我最多可以选择三个开关并选择我想要 NO 还是 NC)。我知道 NO 不是可行的方法,在阅读了一些 wiki 之后,我将反转 grbl Arduino 上的引脚功能,并改为使用两个串联的 NC 开关。但是当 grbl 软件中有一个专用的“中止引脚”输入时,我仍然有一种感觉,如果在 grbl 引导期间该输入保持在活动状态,机器不应该做任何事情。如果不是这样,我将修改源代码以满足我的需要。我已经使用 Arduino 上未使用的引脚来输出 GRBL 的当前状态 – 如果它不处于空闲状态,我无法控制气动工件夹紧,它处于先前状态并且在机器返回空闲状态之前你无法对其进行任何操作. |
@bajticzek对于我的 32 位端口,我修改了主协议循环以在 IMO 中以更好的方式处理这个问题。也许您可以从中得到一些线索——从protocol.c中的第 73 行开始。还有一些其他可配置选项,例如,如果任何限位开关被激活或归位未成功完成,则阻止操作。 |
只是一个技巧: |
对于 estop,我建议连接到 328p 的复位引脚。这保证了微控制器已经死了。但是请注意,您不能更新 328p 的固件,并按照认证要求连接 estop(即 NC 上的低阻抗逻辑高电平、NO 上的低阻抗接地以及连接到公共端的复位)。如果您不关心 UL/CE 合规性,您可以让 NC 线悬空(并让板载上拉保持复位高电平)。如果您确实需要 UL/CE,则需要添加一个与复位连接串联的二极管。 |
你好,我已经将中止开关物理连接到 Arduino 的引脚 A0。在电气上它工作正常(没有弹跳),所有必要的电阻器和盖子都正确接线。GRBL 正确记录了开关的关闭。在任何状态下(慢跑、归位、循环)它都会立即停止并重置。没关系。但在重置后它不关心引脚的状态。我正在使用锁定关闭位置的工业急停开关。所以它在操作开关后保持关闭状态。在释放开关之前,GRBL 应该不能做任何事情,对吧?或者这个(逻辑)行为没有实现?机器可以毫无问题地返回并接收 G 代码,并且在按下并再次按下之前它不关心开关。我错过了什么吗?