开源改变世界!!

问题:运行长程序时钻入工件 #676

推推 grbl 2年前 (2023-02-05) 114次浏览
关闭
3 个任务中的第 1 个
matthewfallshaw 打开了这个问题 2022 年 10 月 20 日 · 15条评论
关闭
3 个任务中的第 1 个

问题:运行长程序时钻入工件#676

matthewfallshaw 打开了这个问题 2022 年 10 月 20 日 · 15条评论

评论

问题:运行长程序时钻入工件 #676

控制板

根控制器

董事会供应商的帮助

  • 是的
  • 不适用

机器描述

Openbuilds / Maker Store Lead CNC V3(高阻模组)

输入电路

没有反应

配置文件

board: Root Controller ISO
name: Lead CNC 1010
stepping:
  engine: I2S_STREAM
  idle_ms: 255
  pulse_us: 4
#  dir_delay_us: 1
#  disable_delay_us: 3

axes:
  shared_stepper_disable_pin: NO_PIN
  shared_stepper_reset_pin: NO_PIN
  x:
    steps_per_mm: 200.000
    max_rate_mm_per_min: 5000.000
    acceleration_mm_per_sec2: 150.000
    max_travel_mm: 730.000
    soft_limits: true
    homing:
      cycle: 2
      allow_single_axis: true
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 50.000
      seek_mm_per_min: 1000.000
      settle_ms: 250
      seek_scaler: 1.100
      feed_scaler: 1.100
    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: GPIO.26:low
      hard_limits: true
      pulloff_mm: 5.000
      standard_stepper:
        step_pin: I2SO.2
        direction_pin: I2SO.1:high
        disable_pin: I2SO.0:high

  y:
    steps_per_mm: 200.000
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 150.000
    max_travel_mm: 810.000
    soft_limits: true
    homing:
      cycle: 2
      allow_single_axis: true
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 50.000
      seek_mm_per_min: 1000.000
      settle_ms: 250
      seek_scaler: 1.100
      feed_scaler: 1.100
    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: GPIO.2:low
      hard_limits: true
      pulloff_mm: 5.000
      standard_stepper:
        step_pin: I2SO.6
        direction_pin: I2SO.5:low
        disable_pin: I2SO.4:high

    motor1:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: GPIO.32:low
      hard_limits: true
      pulloff_mm: 5.000
      standard_stepper:
        step_pin: I2SO.26
        direction_pin: I2SO.25:low
        disable_pin: I2SO.24:high

  z:
    steps_per_mm: 200.000
    max_rate_mm_per_min: 3500.000
    acceleration_mm_per_sec2: 150.000
    max_travel_mm: 210.000
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 50.000
      seek_mm_per_min: 500.000
      settle_ms: 250
      seek_scaler: 1.100
      feed_scaler: 1.100
    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: GPIO.15:low
      limit_all_pin: NO_PIN
      hard_limits: true
      pulloff_mm: 5.000
      standard_stepper:
        step_pin: I2SO.10
        direction_pin: I2SO.9:high
        disable_pin: I2SO.8:high

kinematics:
  Cartesian:

i2so:
  bck_pin: gpio.22
  data_pin: gpio.12
  ws_pin: gpio.21

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  card_detect_pin: NO_PIN
  cs_pin: gpio.5

control:
  safety_door_pin: NO_PIN
  reset_pin: NO_PIN
  feed_hold_pin: gpio.36
  cycle_start_pin: gpio.39
  macro0_pin: gpio.34
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN

coolant:
  flood_pin: i2so.12
  mist_pin: i2so.13
  delay_ms: 0

probe:
  pin: gpio.27
  check_mode_start: true

macros:
  startup_line0:
  startup_line1:
  macro0:
# G21&G54&G17&G94&G90
  macro1:
  macro2:
  macro3:

start:
  must_home: false
  deactivate_parking: false
  check_limits: true

user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: i2so.15
  digital1_pin: NO_PIN
  digital2_pin: NO_PIN
  digital3_pin: NO_PIN


arc_tolerance_mm: 0.002
junction_deviation_mm: 0.010
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false
planner_blocks: 16

# NoSpindle:
# pwm:
#   pwm_hz: 2000
#   direction_pin: i2so.16
#   output_pin: gpio.25
#   enable_pin: i2so.17
#   disable_with_s0: false
#   s0_with_disable: true
#   spinup_ms: 0
#   spindown_ms: 0
#   tool_num: 0
#   speed_map: 0=0.000% 3500=100.000%
# H2A:
#   uart:
#     txd_pin: gpio.17
#     rxd_pin: gpio.16
#     rts_pin: gpio.4
#     baud: 9600
#     mode: 8N1
#   modbus_id: 1
#   tool_num: 0
#   speed_map: 0=0% 0=15% 24000=100%

# Note that the relay spindle is not real — I'm currently manually controlling a Folinn/Fuling VFD
relay:
  direction_pin: NO_PIN
  output_pin: i2so.14
  enable_pin: NO_PIN
  disable_with_s0: false
  s0_with_disable: true
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speed_map: 0=0.000% 0=100.000% 1=100.000%
  off_on_alarm: false
Laser:
  pwm_hz: 5000
  output_pin: gpio.25
  enable_pin: NO_PIN
  disable_with_s0: false
  s0_with_disable: true
  tool_num: 100
  speed_map: 0=0.000% 1000=100.000%

启动消息

$ss
<Idle|MPos:350.000,400.000,0.000|FS:0,0>
[MSG:INFO: FluidNC v3.6.3]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:DBG: Running after-parse tasks]
[MSG:DBG: Checking configuration]
[MSG:INFO: Machine Lead CNC 1010]
[MSG:INFO: Board Root Controller ISO]
[MSG:INFO: I2SO BCK:gpio.22 WS:gpio.21 DATA:gpio.12]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cs_pin:gpio.5 detect:NO_PIN]
[MSG:INFO: Stepping:I2S_stream Pulse:4us Dsbl Delay:0us Dir Delay:0us Idle Delay:255ms]
[MSG:INFO: User Digital Output:0 on Pin:I2SO.15]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (0.000,730.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.2 Dir:I2SO.1 Disable:I2SO.0]
[MSG:INFO:  X All Limit gpio.26:low]
[MSG:DBG:  X All Limit 0]
[MSG:INFO: Axis Y (0.000,810.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.6 Dir:I2SO.5:low Disable:I2SO.4]
[MSG:INFO:  Y All Limit gpio.2:low]
[MSG:DBG:  Y All Limit 0]
[MSG:INFO:   Motor1]
[MSG:INFO:     standard_stepper Step:I2SO.26 Dir:I2SO.25:low Disable:I2SO.24]
[MSG:INFO:  Y2 All Limit gpio.32:low]
[MSG:DBG:  Y2 All Limit 0]
[MSG:INFO: Axis Z (-210.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.10 Dir:I2SO.9 Disable:I2SO.8]
[MSG:INFO:  Z Pos Limit gpio.15:low]
[MSG:DBG:  Z Pos Limit 0]
[MSG:INFO: feed_hold_pin gpio.36]
[MSG:INFO: cycle_start_pin gpio.39]
[MSG:INFO: macro0_pin gpio.34]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Relay Spindle Ena:NO_PIN Out:I2SO.14 Dir:NO_PIN]
[MSG:INFO: Laser Ena:NO_PIN Out:gpio.25 Freq:5000Hz Period:8191]
[MSG:INFO: Using spindle Relay]
[MSG:INFO: Flood coolant I2SO.12]
[MSG:INFO: Mist coolant I2SO.13]
[MSG:INFO: Probe Pin: gpio.27]
[MSG:INFO: Connecting to STA SSID:blacknode]
[MSG:INFO: Connecting.]
[MSG:INFO: Connected - IP is 192.168.1.9]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
[MSG:INFO: SSDP Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]
ok

用户界面软件

发件人

发生了什么?

在长G0行程移动过程中,机器两次陷入工件。
最近在以下 GCODE 中,来自较长文件的第 24881 行(完整文件可用):

X73.206 Y733.347 Z-6.009
X73.221 Y733.374 Z-5.914
X73.23 Y733.391 Z-5.815
X73.233 Y733.397 Z-5.715
G0 Z5

……所有这些都运行良好,然后:

X69.401 Y-5.541

从上面的行来看,它仍然处于G0模态,这是一个很长的移动到表格的前端。在大约 470 的 Y 值处,这大约是行程移动的三分之一,在我按下急停按钮之前,它至少下降到 Z-30。

紧随本节之后的 GCODE,以防有帮助:

Z-3.5
G1 Z-4.5 F500
Z-6.5
G3 X73.508 Y-5.158 I1.67 J4.309
G1 X73.123 Y-5.024
X72.981 Y-4.971
X72.739 Y-4.869
X72.642 Y-4.832
X72.546 Y-4.806
X72.45 Y-4.79
X72.354 Y-4.784
X72.258 Y-4.787
X72.161 Y-4.798

上一次发生这种情况也是在一次长途G0旅行中。它直接向下坠落,远到足以让夹头撞击工件,然后它拖过一个 L 形移动,这可能是它执行了应该在行程移动之后进行的移动。

其他信息

我已经毫无问题地运行了几个短程序。

Z轴牢固不打滑。它是向下行驶,而不是滑倒。 我可以为该程序提供 gcode,但可以从中收集到一个快速摘要:
问题:运行长程序时钻入工件 #676

问题:运行长程序时钻入工件 #676

不幸的是,我一直无法检查机器状态,因为我两次都按下了急停按钮,控制器就关闭了。

我已经在 Root CNC Discord 上描述了这些问题。他们是一个非常乐于助人的团体,但没有想法并建议我来这里。

任何帮助是极大的赞赏。
与此同时,我将尝试通过 WebUI 上传未来的程序,以切断与图片发送者的任何通信。

问题:运行长程序时钻入工件 #676
赞助作者
马修福肖 评论了 2022 年 10 月 21 日  

为了以防万一,我经常在重启时或重启后的第一个命令上看到乱码。

请参阅此通过 fluidterm 连接的示例:

pi@leadcnc:~/source/fluidterm $ python3 fluidterm.py 

--- Available ports:
---  1: /dev/ttyAMA0         'ttyAMA0'
---  2: /dev/ttyUSB0         'USB Serial'
--- Enter port index or full name: 2
--- Fluidterm on /dev/ttyUSB0  115200,8,N,1 ---
--- Quit: Ctrl+] or Ctrl+Q | Menu: Ctrl+T | Help: Ctrl+T followed by 'H' ---
$SD/list pwd=adminj^@L^LH)xH^H^@N*^N
[MSG:DBG: Bad GCode: J^@L^LHXH^H^@N*^N$SD/LISTPWD=ADMIN]
error:2

……以及这个通过 gSender 连接的例子:

gSender - [Grbl]
Connected to /dev/ttyUSB0 with a baud rate of 115200
[MSG:DBG: Bad GCode: ^B^BJ^L^Y^F^H@B^L^HN9LH^H^HJG^T]
error:1 (Expected command letter)
[MSG:DBG: Macro 0]
[MSG:ERR: Macro can only be used in idle state]
[MSG:INFO: Check door]
[MSG:DBG: Spin down only]
[MSG:INFO: Safety door closed.  Issue cycle start to resume]

来自 gSender 的另一个例子:

gSender - [Grbl]
Connected to /dev/ttyUSB0 with a baud rate of 115200
[MSG:DBG: Bad GCode: XJ^NZ]
error:2 (Bad number format)
[MSG:DBG: Macro 3]
ok
[MSG:DBG: Macro 1]
[MSG:DBG: Macro 1]
[MSG:DBG: Macro 3]
[MSG:DBG: Macro 3]
client $bye
[MSG:DBG: Bad GCode: NNXN9LH^H^L^HHJ8^N^N^N$BYE]
error:2 (Bad number format)
client $bye
[MSG:INFO: Restarting]

(那是我在连接、发布$bye和获取更多垃圾时看到一些垃圾,然后$bye立即再次发布并且命令正常工作。)

问题:运行长程序时钻入工件 #676

I2S_STREAM 模式在过去引起了一些问题。I2S_STATIC 似乎更可靠。

问题:运行长程序时钻入工件 #676

问题发生的频率如何?大多数时候,还是很少?不经常发生的问题可能很难调试。

问题:运行长程序时钻入工件 #676
赞助作者

I2S_STREAM 模式在过去引起了一些问题。I2S_STATIC 似乎更可靠。

我很高兴尝试切换到 I2S_STATIC。
(我乐意尝试,这个父母是在追逐我的好奇心,而不是反对尝试 – 请随意忽略它!阅读了两个系统的文档后,我猜想如果这是问题所在症状是抖动,而不是……中止G0X 和 Y 上的行程并激活原本空闲的 Z 轴以将 35mm+ 插入工作台。如果你愿意满足我的好奇心,你能指出可能发生的事情会导致this to be relevant?(……也许你不认为它可能是相关的,只是作为一个有用的评论顺便提一下;如果是这样,那么谢谢你!)

问题发生的频率如何?大多数时候,还是很少?不经常发生的问题可能很难调试。

它恰好发生了两次。这正是我在此控制器上运行长(>100 行)程序的两次。

在接下来的几个小时内没有任何进一步的回复我会尝试:

  1. 切换到 I2S_STATIC;和
  2. 运行与上次导致 SD 卡崩溃的程序相同,没有连接其他任何东西(gSender、fluidterm)。
问题:运行长程序时钻入工件 #676

我在黑暗中使用 I2S_STREAM 与 I2S_STATIC 进行拍摄。我需要一个可重现的测试用例来解决这个问题。我暂时没有什么好主意。

问题:运行长程序时钻入工件 #676

Root Controller 看起来像一个不错的硬件,但由于我没有可以玩的东西,所以深度调试并不容易。I2S_STATIC 似乎不太容易触发移位寄存器链上的信号完整性问题,但这也是猜测。我们有一些关于 MKS Tinybee 问题的报告,这些问题在您切换到 I2S_STATIC 时得到解决。信号完整性是我的猜测,但我也没有 Tinybee,所以我无法证明这一点。我现在对各种不同的板感到疯狂,它们似乎都有不同的奇怪故障。

问题:运行长程序时钻入工件 #676
赞助作者

它是可重复的,尽管这次它没有发生在完全相同的地方。

与上次潜水相同的程序,但这次从 WebUI/SD 卡运行,步进/引擎切换到 I2S_STATIC。它再次潜入桌面,但这次是在上次触发它的大行程移动之前一点。WebUI 控制台输出
,带有可视化效果。该工作表第二个选项卡上的完整 GCODE。

其他想法:
Root 控制器正在驱动 DM556 步进电机控制器。坠机后至少 10 米,我想检查它们的温度(我把它们放在一个没有安装任何强制对流的外壳中)。Z 轴的温度为 46°C (115°F)……这似乎比我想要的要热,但低于 70°C 规格。

嗯……我不知道还有什么要检查的。

问题:运行长程序时钻入工件 #676
赞助作者

第二次跳水在顶部,第三次跳水在底部:
问题:运行长程序时钻入工件 #676

问题:运行长程序时钻入工件 #676
赞助作者
马修福肖 评论了 2022 年 10 月 23 日  

刚刚发生第四次暴跌,我的猜测是 fluidnc 没有责任,但我非常感谢你的意见,@MitchBradley(或其他任何人)。

这次我没有按 E-stop。我用身体抓住了 Z 轴(通过防尘套……“安全地”),我相信它没有动力并且在自身重量的作用下掉落。然后我通过 VFD 控制面板停止了主轴,然后点击控制>feed_hold_pin 按钮(但我很确定 Z 步进器仍然没有动力)。大概 30 秒后,一切都没有动,Z 轴步进器的保持扭矩已经恢复(不确定何时在那个窗口中)。我检查了其他步进器,它们也通电并保持不动。

所以,新理论(这是一个糟糕的理论,但这是我拥有的最好的理论):
有什么东西导致我的步进电机(所有的?至少我的 Z 轴)在 5 到 20 秒的范围内失去动力。Root controller / fluidnc 不知道这已经发生,所以一直发送移动脉冲,而 Z 轴在其自身重量下下落。然后步进器重新启动并恢复运动,但机器处于非常不同的物理状态,所以……见上面的第一张附图,我迟到了急停,夹头正在做最好让我的工件着火.
这个理论合理吗?步进脉冲是否“哑火”,fluidnc 控制器甚至不知道步进驱动器是否已通电?
可能导致电机关闭然后恢复的(在我看来)最合理的候选者是过热……果然 X 和(双)Y 步进电机本身处于 80-85°C……但是 Z(一个肯定断电的)只读取 40°C(这是导致我将其标记为错误理论的主要原因,也许 85°C 对于步进电机来说不是很热?)DM556 电机驱动器都是读数约为 35°C,而为四个步进驱动器供电的 36V、350W Meanwell 电源读数为 40°C(从其金属外壳,以一定角度测量,使用激光温度枪……对它的准确性的信心很低阅读 — 它感觉更热,但完全不像踏步机)。
(我是否未指定该电源?它是 350W,与 Maker Store (AU) 卖给我的 24V 电源相同,但电机规格显示为3.6V × 3A(最大电流;2.1A RMS),并且4 × 3A总和超过350W / 36V = 9.7A.我已经将 DM556 驱动器上的电流限制为 2.8A……但应该是3A × 3.6V / 36V = 0.3A,或者类似的东西……这看起来很疯狂——那些电机肯定运行得更多3A × 3.6V = 10.8W!?)

自上次运行以来我改变的事情:

  1. 我在我的 X 轴和 Z 轴之间交换了 DM556 步进驱动器,这样如果是驱动程序负责,错误就会出现在我的 X 轴上而不是 Z 轴上。
  2. 我跑时打开了我的两个围栏门,以限制热量积聚。
  3. 我使用的是 Fusion 360 OpenbuildsGRBL 后处理器,而不是我上次使用的 grblHAL 后处理器。

(我仍然通过 WebUI 从 SD 运行,没有连接 gSender 或其他发件人。)

使用此设置,它成功运行了一个 30 分钟的程序,我手动将其分成两部分,而不是通过 56 分钟的程序失败了 85.43%。(在我看来,这个证据似乎支持过热理论——我在坠机前坚持了更长时间,因为任何过热的东西都有更多的时间冷却,并且在门打开时更好的对流。)

可能相关的机器规格详细信息:

外壳 1:
Fuling / Folinn VFD
4 × DM556 步进驱动器,均设置为 2.8A 的电流限制
电源线噪声滤波器

外壳 2:
Root 控制器
36V 350W Meanwell 电源为步进驱动器供电
24V 350W Meanwell 电源为 Root 控制器供电

步进电机

问题:运行长程序时钻入工件 #676 matthewfallshaw 更改了标题 问题:在长行程移动期间潜入工件 问题:运行长程序时钻入工件 2022 年 10 月 23 日
问题:运行长程序时钻入工件 #676
赞助作者

现在关闭这个问题,因为我最好的理论表明这不是一个 fluidnc 问题。
(如果我用完机电线索,我会重新打开。)

但如果有人有任何建议,我将非常感激听到他们!
(感谢您之前的建议,@MitchBradley)