开源改变世界

我可以添加第 7 和第 8 轴支持吗? #43

推推 grbl 3年前 (2023-02-08) 175次浏览
关闭
pzh11001 开了这个issue 2022 年 7 月 27 日 · 5 条评论
关闭

我可以添加第 7 和第 8 轴支持吗?#43

pzh11001 开了这个issue 2022 年 7 月 27 日 · 5 条评论

评论

我可以添加第 7 和第 8 轴支持吗? #43

查看了部分源码,发现很多地方都有U轴和V轴的定义。我尝试模仿编程,在有ABC轴代码的地方加上U轴和V轴代码,简单完整的模仿ABC轴的宏定义和变量声明。不幸的是,虽然我检查了很多次以确保U轴和V轴代码已添加到所有带有ABC轴代码的地方。编译可以顺利通过,没有任何错误,也可以正常下载到teensy4.1。但是当我尝试用串口助手控制的时候,MCU微机一点反应都没有,电脑USB串口不断的掉线重连。这表明MCU在不断重启。一定有问题。我觉得grblHAL肯定是支持8轴或者9轴同时运行的。我应该怎么办?

我可以添加第 7 和第 8 轴支持吗? #43
作者
pzh11001 评论了 2022 年 7 月 27 日  

我用的是ArduinoIDE1.8.19。就在config.h里设置N_AXIS。如果 axis 大于 6,MCU 会崩溃。只要设置6轴以下即可。一切恢复正常。为什么我添加的代码不起作用。我需要使用 7 个独立轴 而 不是 联动 轴

motor_pins.h 》M5_STEP_PIN #define C_STEP_BIT (1<<M5_STEP_PIN) #define C_DIRECTION_PORT M5_DIRECTION_PORT #define C_DIRECTION_PIN M5_DIRECTION_PIN #define C_DIRECTION_BIT (1<<M5_DIRECTION_PIN) #ifdef M5_LIMIT_PIN #define C_LIMIT_PORT M5_LIM

#define C_LIMIT_PIN M5_LIMIT_PIN
#define C_LIMIT_BIT (1<<M5_LIMIT_PIN)
#endif
#ifdef M5_LIMIT_PIN_MAX
#define C_LIMIT_PORT_MAX M5_LIMIT_PORT_MAX
#define C_LIMIT_PIN_MAX M5_LIMIT_PIN_MAX
#define C_LIMIT_BIT_MAX (1<<M5_LIMIT_PIN_MAX)
#endif
#ifdef M5_ENABLE_PIN
#define C_ENABLE_PORT M5_ENABLE_PORT
#define C_ENABLE_PIN M5_ENABLE_PIN
#define C_ENABLE_BIT (1<<M5_ENABLE_PIN)
#endif
#endif

#ifdef U_AXIS
#ifndef M6_AVAILABLE
#error “U_AXIS pins are not available”
#endif
#define U_STEP_PORT M6_STEP_PORT
#define U_STEP_PIN M6_STEP_PIN
#define U_STEP_BIT (1<<M6_STEP_PIN)
#define U_DIRECTION_PORT M6_DIRECTION_PORT
#define U_DIRECTION_PIN M6_DIRECTION_PIN
#define U_DIRECTION_BIT (1<<M6_DIRECTION_PIN )
#ifdef M6_LIMIT_PIN
#define U_LIMIT_PORT M6_LIMIT_PORT
#define U_LIMIT_PIN M6_LIMIT_PIN
#define U_LIMIT_BIT (1<<M6_LIMIT_PIN)
#endif
#ifdef M6_LIMIT_PIN_MAX
#define U_LIMIT_PORT_MAX M6_LIMIT_PORT_MAX
#define U_LIMIT_LIM_MIT6_PIN
#define U_LIMIT_BIT_MAX (1<<M6_LIMIT_PIN_MAX)
#endif
#ifdef M6_ENABLE_PIN
#define U_ENABLE_PORT M6_ENABLE_PORT
#define U_ENABLE_PIN M6_ENABLE_PIN
#define U_ENABLE_BIT (1<<M6_ENABLE_PIN)
#endif
#endif

#ifdef V_AXIS
#ifndef M7_AVAILABLE
#error “V_AXIS pins are not available”
#endif
#define V_STEP_PORT M7_STEP_PORT
#define V_STEP_PIN M7_STEP_PIN
#define V_STEP_BIT (1<<M7_STEP_PIN)
#define V_DIRECTION_PORT M7_DIRECTION_PORT
#define V_DIRECTION_PIN M7_DIRECTION_PIN
#define V_DIRECTION_BIT (1<<M7_DIRECTION_PIN )
#ifdef M7_LIMIT_PIN
#define V_LIMIT_PORT M7_LIMIT_PORT
#define V_LIMIT_PIN M7_LIMIT_PIN
#define V_LIMIT_BIT (1<<M7_LIMIT_PIN)
#endif
#ifdef M7_LIMIT_PIN_MAX
#define V_LIMIT_PORT_MAX M7_LIMIT_PORT_MAX
#define V_LIMIT_LIM_PIN_M7_PIN
#define V_LIMIT_BIT_MAX (1<<M7_LIMIT_PIN_MAX)
#endif
#ifdef M7_ENABLE_PIN
#define V_ENABLE_PORT M7_ENABLE_PORT
#define V_ENABLE_PIN M7_ENABLE_PIN
#define V_ENABLE_BIT (1<<M7_ENABLE_PIN)
#endif
#endif

《my_machine_map.h》:
#define BOARD_NAME “myboard”
#define HAS_IOPORTS

#define X_STEP_PIN (0u)
#define X_DIRECTION_PIN (1u)
#define X_ENABLE_PIN (24u)
#define X_LIMIT_PIN (23u)

#define Y_STEP_PIN (2u)
#define Y_DIRECTION_PIN (3u)
#define Y_ENABLE_PIN (25u)
#define Y_LIMIT_PIN (22u)

#define Z_STEP_PIN (4u)
#define Z_DIRECTION_PIN (5u)
#define Z_ENABLE_PIN (26u)
#define Z_LIMIT_PIN (21u)

#define M3_AVAILABLE
#define M3_STEP_PIN (6u)
#define M3_DIRECTION_PIN (7u)
#define M3_ENABLE_PIN (27u)
#define M3_LIMIT_PIN (20u)

#define M4_AVAILABLE
#define M4_STEP_PIN (8u)
#define M4_DIRECTION_PIN (9u)
#define M4_ENABLE_PIN (28u)
#define M4_LIMIT_PIN (19u)

#define M5_AVAILABLE
#define M5_STEP_PIN (10u)
#define M5_DIRECTION_PIN (11u)
#define M5_ENABLE_PIN (29u)
#define M5_LIMIT_PIN (18u)

#define M6_AVAILABLE
#define M6_STEP_PIN (41u)
#define M6_DIRECTION_PIN (40u) #define M6_ENABLE_PIN
(39u)
#define M6_LIMIT_PIN (38u)

#define M7_AVAILABLE
#define M7_STEP_PIN (37u)
#define M7_DIRECTION_PIN (36u)
#define M7_ENABLE_PIN (35u)
#define M7_LIMIT_PIN (34u)

我可以添加第 7 和第 8 轴支持吗? #43
贡献者

我觉得grblHAL肯定是支持8轴或者9轴同时运行的。

8轴应该比较容易添加,因为一个字节用于保存步长和方向输出等信息。9(或更多)需要两个字节并会触发更重大的变化?

我应该怎么办?

调试?对 U 和 V 的支持对我来说是工作(缓慢)的进展,可能存在必须解决的设置/参数存储分配等问题。遗憾的是 Teensy 不容易调试,我自己会使用 Nucleo STM32F756 板进行调试,因为它有很多引脚。

对于 iMXRT1062:如果您有 UART <> USB 分线板,您可以将调试输出添加到 UART 通道或将主输出流切换到该通道。可以在grbl/config.h ( DEBUGOUT) 中启用调试输出,写入是通过debug_write().

我可以添加第 7 和第 8 轴支持吗? #43
作者

我觉得grblHAL肯定是支持8轴或者9轴同时运行的。

8轴应该比较容易添加,因为一个字节用于保存步长和方向输出等信息。9(或更多)需要两个字节并会触发更重大的变化?

我应该怎么办?

调试?对 U 和 V 的支持对我来说是工作(缓慢)的进展,可能存在必须解决的设置/参数存储分配等问题。遗憾的是 Teensy 不容易调试,我自己会使用 Nucleo STM32F756 板进行调试,因为它有很多引脚。

对于 iMXRT1062:如果您有 UART <> USB 分线板,您可以将调试输出添加到 UART 通道或将主输出流切换到该通道。可以在grbl/config.h ( DEBUGOUT) 中启用调试输出,写入是通过debug_write().

我懂了。非常感谢。我想我需要准备一个 UART 转 USB 设备。连接到 teensy4.1 的 uart1。

我可以添加第 7 和第 8 轴支持吗? #43
作者

终于找到问题所在,《nvc.h》文件中的起始宏定义太小了。扩容后grbHALL不会死机,可以正常运行。接下来,7轴和8轴电机还是不转,但是指令“?” grblhal的已经能正确显示坐标了,我已经知道哪里出问题了。应该尽快解决!

再次感谢你的帮助!