开源改变世界!!

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

推推 grbl 2年前 (2022-10-20) 189次浏览 0个评论
关闭
floggy22 打开了这个问题 on 2 May 2020 · 19 条评论
关闭

如果选择 SPINDLE_TYPE_DAC,则停止工作和未定义的运动#390

floggy22 打开了这个问题 on 2 May 2020 · 19 条评论

注释

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

如果我使用
SPINDLE_TYPE_DAC
SPINDLE_TYPE_PWM、
SPINDLE_TYPE_LASER,控制器会显示未定义的行为。

有时它会停止但不会崩溃,有时它不会做出反应或仅朝一个方向移动。在某些情况下,它会显示 grbl 错误 ID23 或 ID33

如果我选择 SPINDLE_TYPE_NONE,它可以完美运行,没有任何问题。它只是一个测试机器,我用 nodemcu32 和 esp32devkit1 试试。两个控制器上的结果相同。

您使用的是什么版本的固件?
Lastest master
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00 ,wp_drv:0x00
模式:DIO,时钟 div:2
负载:0x3fff0018,len:4
负载:0x3fff001c,len:1044
负载:0x40078000,len:8896
负载:0x40080400,len:5828
条目 0x400806ac

[MSG:Grbl_ESP32 Ver 1.2a Date 20200428]
[MSG:Compiled with ESP32 SDK:v3.2.3-14-gd3e562907]
[MSG:Using machine:CNC6]
[MSG:Axis count 3]
[MSG:RMT Steps]
[MSG: Pin:25 上的 DAC 主轴]

Grbl 1.2a [‘$’ 寻求帮助]

问题是否可重复?
是的

我添加了我的 maschine 文件,但它也可以使用 test_drive.h 重复,并设置一个 SPINDLE_TYPE,而不是 NONE。我使用 CNCjs 1.9,22 和 bCNC 0.9.14-dev 进行了测试。我在 eyecatch 块的 config.h 中禁用了所有选项(wifi、蓝牙、sd 卡……)。

gcode_config_maschine_file.zip

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动 floggy22 添加了 漏洞 有些东西不工作标签 on 2 May 2020
如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 on 3 May 2020

我没有看到这些错误,但我注意到一些同步错误。这意味着主轴没有准确地在应该的时候打开/关闭。

我会解决这个问题并继续查看您的问题。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 3 日

我看到你在同一个引脚上有 2 个功能。

#define Y_STEP_PIN                  GPIO_NUM_33
#define SPINDLE_ENABLE_PIN          GPIO_NUM_33

这需要修复。

您可以将响应发送到 $+ 命令吗?这将帮助我复制您的设置。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 3 日

好的,我修复了它,但仍然是一个错误。我尝试 ugs 2.0beta 并获得输出。我认为这与进给率有关。如果我使用相同的 gcode 而不设置主轴类型,它可以工作。

您使用哪些工具进行 gcode 发送?也许我需要更好的工具来调试,这是我的设置中的一个错误。

$+ 输出:
$+
$0=3
$1=250
$2=0
$3=0
$4=0
$5=1
$6=1
$10=3
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23= 3
$24=200.000
$25=2000.000
$26=250
$27=1.000
$30=25000.000
$31=0.000
$32=0
$33=5000.000
$34=0.000
$35=0.000
$36=100.000
$80=0
$81=0
$82=0
=
0
$ 8 =0.000
$91=0.000
$92=0.000
$93=0.000
$94=0.000
$100=400.000
$101=400.000
$ 102 = 400.000
$ 110 = 5000.000 $ 111 =
5000.000 $ 112
= 1800.000 $ 120
= 400.000
$ 121 = 500.000
$ 122 = 600.000
$ 130.000 $ 130.000
$ 131 = 300.000
= 300.000 16 $161=16 $162=16 $170=16 $171=16 $172=16 好

ugs 错误。
[错误] 发送“G01X1.4042Y33.3470”时检测到错误:Guru Meditation Error: Core 0 panic’ed (StoreProhibited)。异常未处理。流媒体已暂停。
[错误] 处理响应时出错<发送“G01X1.4042Y33.3470”时检测到错误:Guru Meditation Error: Core 0 panic’ed (StoreProhibited)。异常未处理。Streaming has been paused.>
Core 0 register dump:
PC : 0x400d90bb PS : 0x00060d30 A0 : 0x800d6468 A1 : 0x3ffb3e80
A2 : 0x00000000 A3 : 0x3ffc1b1c A4 : 0x3ffc1b64 A5 : 0x3ffc1b6c
A6 : 0x00000002 A7 : 0x3ffc105c A8 : 0x3ffc1bb8 A9 : 0x3ffb3e70
A10 : 0x00000823 A11 : 0x40c04700 A12 : 0x0000000e A13 :
0x0000208e A14 : 0x7ff00000 A15 : 0x7ff04700 SAR : 0x00000002 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000020 LBEG : 0x40002390 LEND : 0x4000239f LCOUNT : 0x00000000
Backtrace: 0x400d90bb:0x3ffb3e80 0x400d6465:0x3ffb3ef0 0x400d649b:0x3ffb3f10 0x400d69c3:0x3ffb3f40 0x400d972b:0x3ffb3f60 0x400d5626:0x3ffb3f80 0x400d7c85:0x3ffb3fa0 0x400d7e1a:0x3ffb3fc0 0x4008a145:0x3ffb3fe0
重新启动…

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 3 日

谢谢,我可以使用您的机器定义和设置运行您的文件。我没有收到错误,但我看到了一个解析错误,导致错误值进入 gcode。

它类似于ESP32 的这个问题。我会找出问题所在以及为什么问题再次发生在我身上。

抱歉这些问题。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 3 日

我仍在尝试处理您的文件。你能告诉我你用来创建gcode的程序吗?你有艺术作品的源文件吗,所以我可以在我的 cam 程序中尝试。

(StoreProhibited) 错误通常意味着 ESP32 试图将某些内容存储在内存中不允许的位置。超出范围的数组或为空的对象可能会发生这种情况。

您可以通过使用 Arduino IDE 编译和上传固件并将回溯信息插入异常解码器来提供帮助。异常解码器将给出导致问题的确切行以及调用函数的位置。

您需要安装异常解码器。这里有一些说明,我不能从我的角度去做,因为它必须从你的编译中使用确切的文件。此外,虽然我的行为很奇怪,但我没有遇到任何崩溃。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 4 日

对于这个文件,我使用https://www.estlcam.de/。我有其他使用 fusion 360 创建的文件和同样的问题。源文件可以在https://svgsilh.com/image/2023449.html找到。
设置主轴类型无时没有发生错误。如果我将我的机器与版本一起使用

#define GRBL_VERSION “1.1f”
#define GRBL_VERSION_BUILD “20200115”

使用同一个文件,一切运行顺利。其他版本我没试过。需要一些时间来设置 Arduino IDE。

顺便说一句,我喜欢你在做什么。是个很棒的软件!!

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 4 日

如果有进行截屏并将日志文件放在最后。也许这有帮助。

screencast.zip
log.txt

堆栈跟踪的结果:

解码堆栈结果
0x400d9157:st_prep_buffer() 在 C:\Users\flogg\AppData\Local\Temp\arduino_build_341637\sketch\stepper.cpp 第 1321 行
0x400d6501:protocol_exec_rt_system() 在 C:\Users\flogg\AppData\Local\Temp\ arduino_build_341637\sketch\protocol.cpp line 513
0x400d6537:protocol_execute_realtime() at C:\Users\flogg\AppData\Local\Temp\arduino_build_341637\sketch\protocol.cpp line 248
0x400d6a5f:protocol_buffer_synchronize() at C:\Users\flogg\ AppData\Local\Temp\arduino_build_341637\sketch\protocol.cpp line 217
0x400d981b: sys_io_control(unsigned char, bool) at C:\Users\flogg\AppData\Local\Temp\arduino_build_341637\sketch\system.cpp line 551
0x400d56c2: mc_reset () 在 C:\Users\flogg\AppData\Local\Temp\arduino_build_341637\sketch\motion_control.cpp 第 430 行
0x400d7d21:在 C:\Users\flogg\AppData\Local\Temp\arduino_build_341637\sketch\serial.cpp 行 205
处执行_realtime_command(无符号字符,无符号字符) 0x400d7eb6:在 C:\Users\flogg\AppData\ Local\Temp\arduino_build_341637\sketch\serial.cpp 第 134 行
0x4008a145:vPortTaskWrapper 在 /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port。第 143 行

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

堆栈跟踪非常有用。我已经看到了一个可能的问题。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

可以尝试以下操作:
在 stepper.c 中,将第 1321 行从:

pl_block->millimeters = mm_remaining;

if (pl_block) pl_block->millimeters = mm_remaining;
如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 4 日

它改变了行为。控制器不再崩溃,但速度会很慢。似乎有什么东西阻碍了交流。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

好的,这是一个很好的线索。代码中有竞争条件。我将不得不映射该部分代码的整个行为以了解正确的修复。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动

你好我有类似的问题所以我也使用了floggy22的gcode文件。
当我使用 SPINDLE_TYPE_PWM 或 SPINDLE_TYPE_LASER 进行编译时,过程会在中间停止或轴移动到限位开关。然后连接离开。
如果我使用 SPINDLE_TYPE_NONE 编译,则 gcode 文件将运行到最后。测试了五次。
制造于尔根

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 4 日

主分支已恢复为工作版本。我们正在努力修复主轴类版本。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 6 日

我想我们找到了问题所在,ESP32 对带有中断的浮点数据类型非常敏感。Grbl 为主轴速度使用一个浮点值。通常人们不使用带小数点的主轴速度。我们已将类型切换为整数,但可能会更改为固定点值,例如将来的毫转数(100.005 RPM)。最终分辨率仍取决于 PWM 信号,在 5,000Hz 时约为 13 位。

我不确定为什么主轴类会引发这个问题,因为它总是浮点数。可能存在等待弹出的稳定性问题。

该代码位于 SpindleClass2 分支中。我仍在进行广泛的测试、评论和重构。我希望在几天内将其合并回来。

感谢您在这个问题上的耐心等待。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 6 日

我做了第一次测试,它有效。明天我尝试测试更多。做得好!!

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 6 日

我只全面测试过无、PWM、激光和 BESC。

VFD 看起来也不错,但我可以提高通信速度。

需要测试继电器和DAC。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 6 日

我对DAC进行了更多测试。我发现,最大输出大约是“m3 s160”。我的主轴最大值为 25000。控制值仅在 0 到 160 之间。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
所有者

婚戒 评论 2020 年 5 月 6 日

DAC 主轴现在应该可以工作了。

如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动 bdring 重新打开了这个 2020 年 5 月 6 日
如果选择 SPINDLE_TYPE_DAC #390 ,则停止工作和未定义的运动
作者

floggy22 评论 2020 年 5 月 6 日

谢谢你。我的测试完成没有错误。

喜欢 (0)

您必须 登录 才能发表评论!