开源改变世界!!

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

推推 grbl 2年前 (2023-02-05) 159次浏览
关闭
ipsod 开了这个issue 2022 年 11 月 28 日 · 17条评论
关闭

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令#725

ipsod 开了这个issue 2022 年 11 月 28 日 · 17条评论

评论

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
益普索 评论了 2022 年 11 月 28 日  

控制板

Makerbase 小蜜蜂 v1.0

机器描述

仅限 fluidnc-v3.6.5-pre2
板,无电机或开关

输入电路

没有反应

配置文件

name: "ESP32 Dev Controller V4"
board: "ESP32 Dev Controller V4"


stepping:
  engine: RMT
  idle_ms: 250
  dir_delay_us: 1
  pulse_us: 2
  disable_delay_us: 0

axes:
  # shared_stepper_disable_pin: gpio.13:low

  x:
    steps_per_mm: 200
    max_rate_mm_per_min: 60
    acceleration_mm_per_sec2: 120
    max_travel_mm: 100
    motor0:
      # limit_neg_pin: gpio.17:low:pu
      stepstick:
        step_pin: gpio.12
        direction_pin: gpio.13
        disable_pin: gpio.5
    motor1:
      null_motor:

  y:
    steps_per_mm: 200
    max_rate_mm_per_min: 2000.0
    acceleration_mm_per_sec2: 2000.0
    max_travel_mm: 1000
    homing:
      cycle: 2
      mpos_mm: 10
      positive_direction: false

    motor0:
      stepstick:
        step_pin: gpio.27
        direction_pin: gpio.14
        disable_pin: gpio.16
    motor1:
      null_motor:

  z:
    steps_per_mm: 200
    max_rate_mm_per_min: 2000.0
    acceleration_mm_per_sec2: 2000.0
    max_travel_mm: 1000
    homing:
      cycle: 1
      mpos_mm: 10
      positive_direction: true

    motor0:
      stepstick:
        step_pin: gpio.19
        direction_pin: gpio.23
        disable_pin: gpio.18
    motor1:
      null_motor:

启动消息

[MSG:INFO: FluidNC v3.6.5-pre2]
[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:INFO: Machine ESP32 Dev Controller V4]
[MSG:INFO: Board ESP32 Dev Controller V4]
[MSG:INFO: SPI not defined]
[MSG:INFO: No SD Card CS Pin]
[MSG:INFO: See http://wiki.fluidnc.com/en/config/sd_card#sdfallbackcs-access-sd-without-a-
config-file]
[MSG:INFO: Stepping:RMT Pulse:2us Dsbl Delay:0us Dir Delay:1us Idle Delay:250ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (-100.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.12 Dir:gpio.13 Disable:gpio.5]
[MSG:INFO:   Motor1]
[MSG:INFO: Axis Y (10.000,1010.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.27 Dir:gpio.14 Disable:gpio.16]
[MSG:INFO:   Motor1]
[MSG:INFO: Axis Z (-990.000,10.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.19 Dir:gpio.23 Disable:gpio.18]
[MSG:INFO:   Motor1]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Using spindle NoSpindle]
[MSG:INFO: STA SSID is not set]
[MSG:INFO: AP SSID FluidNC IP 192.168.0.1 mask 255.255.255.0 channel 1]
[MSG:INFO: AP started]
[MSG:INFO: WiFi on]
[MSG:INFO: Captive Portal Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]

Grbl 3.6 [FluidNC v3.6.5-pre2 (wifi) '$' for help]
[MSG:INFO: '$H'|'$X' to unlock]

用户界面软件

风俗

发生了什么?

我正在使用$ri=50

仅发送点动命令时出现错误:8(“命令需要空闲状态”)。我只发送点动命令,从不发送普通的“gcode”命令。我还观察到状态报告说 state is run

当我真的向发送器中的微动键发送垃圾邮件时,经常会发生此错误。但是,有时在执行看似非常简单的动作时也会发生这种情况(即:向前慢跑、取消慢跑、向左慢跑)。

这是失败之前/期间发生的事情的日志。以 (python fstring) 开头{time.time()}<< SerialConn(...)的行是从串行接收的行。前缀为的行{time.time()}>>被发送到串行。其他行只是上下文注释。

$$$  jog_run()
1669611683.2677522<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3162, pos=XYZABC(x=0.0022, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683268055629======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0022f60\n'======
1669611683.268513<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3163, pos=XYZABC(x=0.002, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683268974042======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.002f60\n'======
1669611683.2694976>> $j=g91x0.001f60
1669611683.2703636<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3164, pos=XYZABC(x=0.0018000000000000002, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683271264174======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0018f60\n'======
1669611683.2720392>> $j=g91x0.0008f2000.8998
$$$  jog_run()
1669611683.3130887<< SerialConn(1669611620.0) <Jog|WPos:-0.420,4.360,0.000|Bf:0,128|FS:60,0>
1669611683.3135746<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3165, pos=XYZABC(x=0.0016000000000000003, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683313796743======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0016f60\n'======
1669611683.3143902<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3166, pos=XYZABC(x=0.0014000000000000004, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683314700851======
1669611683.3147645>> $j=g91x0.0006y-0.00333f2000.8998
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0014f60\n'======
1669611683.3167388<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3167, pos=XYZABC(x=0.0012000000000000003, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683317356350======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0012f60\n'======
1669611683.31819>> $j=g91x0.0004y-0.00667f2000
1669611683.3634114<< SerialConn(1669611620.0) <Jog|WPos:-0.420,4.410,0.000|Bf:0,128|FS:60,0>
1669611683.3642673<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3168, pos=XYZABC(x=0.0010000000000000002, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683364570955======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.001f60\n'======
1669611683.365009<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3169, pos=XYZABC(x=0.0008000000000000003, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683365360238======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0008f2000.8998\n'======
1669611683.365917>> $j=g91x0.0002y-0.01f2000
1669611683.3660903<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3170, pos=XYZABC(x=0.0006000000000000003, y=-0.0033333333333333335, z=0.0, a=None, b=None, c=None),) T_1669611683367070959======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0006y-0.00333f2000.8998\n'======
1669611683.367996>> $j=g91x0y-0.01333f2000
1669611683.3686178>> $j=g91y-0.01667f2000
1669611683.3690596>> $j=g91y-0.02f2000
$$$  jog_run()
1669611683.4065795<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3171, pos=XYZABC(x=0.00040000000000000024, y=-0.006666666666666667, z=0.0, a=None, b=None, c=None),) T_1669611683407238970======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0004y-0.00667f2000\n'======
1669611683.4083142>> $j=g91y-0.02333f2000
$$$  MachineServer().jog_stop()
1669611683.4116912<< SerialConn(1669611620.0) <Jog|WPos:-0.420,4.460,0.000|Bf:0,128|FS:60,0>
1669611683.4445882<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3172, pos=XYZABC(x=0.0002000000000000002, y=-0.01, z=0.0, a=None, b=None, c=None),) T_1669611683445128886======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0002y-0.01f2000\n'======
1669611683.4464364>> $j=g91y-0.02667f2000
$$$  send_jog_cancel()
1669611683.4607875<< SerialConn(1669611620.0) <Jog|WPos:-0.420,4.510,0.000|Bf:0,128|FS:60,0>
1669611683.4747043<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3173, pos=XYZABC(x=2.220446049250313e-19, y=-0.013333333333333334, z=0.0, a=None, b=None, c=None),) T_1669611683475102709======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0y-0.01333f2000\n'======
1669611683.4774525>> b'\x85'
1669611683.5107877<< SerialConn(1669611620.0) <Jog|WPos:-0.415,4.560,0.000|Bf:0,128|FS:0,0>
1669611683.5608554<< SerialConn(1669611620.0) <Jog|WPos:-0.410,4.610,0.000|Bf:0,128|FS:0,0>
1669611683.5760088<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3174, pos=XYZABC(x=0.0, y=-0.016666666666666666, z=0.0, a=None, b=None, c=None),) T_1669611683576373168======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y-0.01667f2000\n'======
1669611683.5771165<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3175, pos=XYZABC(x=0.0, y=-0.02, z=0.0, a=None, b=None, c=None),) T_1669611683577433879======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y-0.02f2000\n'======
1669611683.5779576<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3176, pos=XYZABC(x=0.0, y=-0.023333333333333334, z=0.0, a=None, b=None, c=None),) T_1669611683578329849======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y-0.02333f2000\n'======
1669611683.579076<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3177, pos=XYZABC(x=0.0, y=-0.02666666666666667, z=0.0, a=None, b=None, c=None),) T_1669611683579306853======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y-0.02667f2000\n'======
1669611683.5976195<< SerialConn(1669611620.0) <Idle|WPos:-0.410,4.555,0.000|Bf:15,128|FS:0,0>
$$$  END jog_stop()  120
$$$  jog_run()
$$$  jog_running)
$$$  jog_run()
1669611683.6850147>> $j=g91y0.00333f2000
$$$  jog_run()
1669611683.687858>> $j=g91y0.00667f2000.8998
$$$  jog_run()
1669611683.6894748>> $j=g91x-0.0002y0.01f2000.8998
1669611683.689903>> $j=g91x-0.0004y0.00667f2000.8998
1669611683.6923923<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3179, pos=XYZABC(x=0.0, y=0.0033333333333333335, z=0.0, a=None, b=None, c=None),) T_1669611683692595304======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y0.00333f2000\n'======
1669611683.698327<< SerialConn(1669611620.0) <Jog|WPos:-0.410,4.555,0.000|Bf:15,128|FS:0,0|WCO:2.320,-32.355,3.430>
1669611683.7037847<< SerialConn(1669611620.0) <Idle|WPos:-0.410,4.560,0.000|Bf:15,128|FS:0,0|Ov:100,100,100>
1669611683.7040505<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3180, pos=XYZABC(x=0.0, y=0.006666666666666667, z=0.0, a=None, b=None, c=None),) T_1669611683704192793======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91y0.00667f2000.8998\n'======
1669611683.7045321<< SerialConn(1669611620.0) ok
1669611683.7045636>> $j=g91x-0.0006y0.00333f2000.8998
======ok======
======receiving reply to request relative_jog(3181, pos=XYZABC(x=-0.0002, y=0.01, z=0.0, a=None, b=None, c=None),) T_1669611683705401452======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0002y0.01f2000.8998\n'======
1669611683.7061968>> $j=g91x-0.0008f2000.8998
1669611683.7069116<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3182, pos=XYZABC(x=-0.0004, y=0.006666666666666667, z=0.0, a=None, b=None, c=None),) T_1669611683707179563======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0004y0.00667f2000.8998\n'======
1669611683.7078846>> $j=g91x-0.001y-0.00333f2000.8998
1669611683.7091033<< SerialConn(1669611620.0) <Jog|WPos:-0.410,4.565,0.000|Bf:15,128|FS:0,0>
1669611683.721667<< SerialConn(1669611620.0) <Idle|WPos:-0.410,4.580,0.000|Bf:15,128|FS:0,0>
1669611683.721942<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3183, pos=XYZABC(x=-0.0006, y=0.0033333333333333335, z=0.0, a=None, b=None, c=None),) T_1669611683722067946======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0006y0.00333f2000.8998\n'======
1669611683.7222722<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3184, pos=XYZABC(x=-0.0008, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669611683722383771======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0008f2000.8998\n'======
1669611683.722579<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3185, pos=XYZABC(x=-0.001, y=-0.0033333333333333335, z=0.0, a=None, b=None, c=None),) T_1669611683722815608======
1669611683.7228737>> $j=g91x-0.0012y-0.00667f2000.8998
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.001y-0.00333f2000.8998\n'======
1669611683.7249947>> $j=g91x-0.0014y-0.01f2000.8998
1669611683.7266872>> $j=g91x-0.0016y-0.01333f2000.8998
1669611683.7280002<< SerialConn(1669611620.0) <Run|WPos:-0.410,4.585,0.000|Bf:15,128|FS:0,0>
1669611683.7403746<< SerialConn(1669611620.0) error:8
!!error_note!!  error:  RECEIVED ERROR: Command requires idle state  MachineServer()

这是错误之后日志的其余部分:

======ok======
======receiving reply to request relative_jog(3187, pos=XYZABC(x=-0.0014, y=-0.01, z=0.0, a=None, b=None, c=None),) T_1669611683741348282======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0014y-0.01f2000.8998\n'======
1669611683.7419417<< SerialConn(1669611620.0) ok
======ok======
1669611683.742353>> $j=g91x-0.0018y-0.01667f2000.8998
======receiving reply to request relative_jog(3188, pos=XYZABC(x=-0.0016, y=-0.013333333333333334, z=0.0, a=None, b=None, c=None),) T_1669611683742670631======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0016y-0.01333f2000.8998\n'======
!!error_note!!  error:  _jog_wait_for_ready()   WRONG STATE
!!error_note!!  error:  _jog_wait_for_ready()   WRONG STATE
1669611683.744877<< SerialConn(1669611620.0) <Jog|WPos:-0.415,4.575,0.000|Bf:15,128|FS:0,0>
1669611683.7458942>> $j=g91x-0.002y-0.02f2000.8998
1669611683.7548559<< SerialConn(1669611620.0) <Idle|WPos:-0.415,4.560,0.000|Bf:15,128|FS:0,0>
1669611683.7552912<< SerialConn(1669611620.0) ok
======ok======
======receiving reply to request relative_jog(3189, pos=XYZABC(x=-0.0017999999999999997, y=-0.016666666666666666, z=0.0, a=None, b=None, c=None),) T_1669611683755678654======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0018y-0.01667f2000.8998\n'======
1669611683.7562137<< SerialConn(1669611620.0) ok
1669611683.7564247>> $j=g91x-0.0022y-0.02333f2000.8998
======ok======
======receiving reply to request relative_jog(3190, pos=XYZABC(x=-0.0019999999999999996, y=-0.02, z=0.0, a=None, b=None, c=None),) T_1669611683757138575======
======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.002y-0.02f2000.8998\n'======
1669611683.758382>> $j=g91x-0.0024y-0.02667f2000.8998

其他信息

如果您愿意,我可以生成更多错误日志。让我知道我还能提供什么帮助。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725 ipsod 改了标题 问题: 问题:点动命令有时似乎会触发run状态,这会中断后续的点动命令 2022 年 11 月 28 日
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725 ipsod 改了标题 问题:点动命令有时似乎会触发run状态,这会中断后续的点动命令 问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 2022 年 11 月 28 日
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 28 日  

另一个错误日志:
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 28 日  

和另一个错误日志:
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
所有者

TLDR;

你能举出最简单的例子来重复这个问题吗?

ok您是否 100% 确定在发送点动命令之前正在等待?我注意到Bf:0几个地方。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 29 日  

我将尝试举一个简单的例子。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 29 日  

关于缓冲区和发送消息0x85,jog cancel 有什么有趣的事情吗?ok

我通常将一个充满命令的串行缓冲区排队。在计划这些之前,当它们只是在串行缓冲区中时,我可能会发送一个0x85点动取消,我知道这是由不同的管道处理的。串行缓冲区中的那些点动命令会发生什么?我做错了吗?ok我应该在每条消息之间等待吗?

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

点动取消字符“跳过队列”,绕过任何已经从硬件 FIFO 前进到行收集缓冲区的部分行。

您确实应该同步发送点动,而不是将它们排队 – 并且在作业完成或取消之前,您不应该发送其他非点动命令。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

点动取消与“确定”没有任何关系。ok 表示已经接收到完整的行,传递给 GCode 解析器,并且没有错误地解释。该解释的结果导致指示的操作——可能是动作——被传递给规划器,在那里它与任何先前的动作聚合。

在行被移交给 GCode 解析器之前,在任何地方都可以识别点动取消字符,即使是在行的中间。它向协议状态机发送一个事件,导致取消已经在进行中的运动——通常远远超过规划器队列的运动。对发送者的反馈以显示状态变化的状态报告的形式出现,完全独立于面向行的 GCode 解析器的“ok”确认。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 29 日  

这个时间戳列表(以微秒为单位)和发送的命令是否足以尝试重现错误?对我来说,这个序列大约有一半的时间出错。这不是一个很好的慢跑序列。它会因未能保持缓冲区队列满而导致抖动,但根据我的经验,它会很快引发错误,但我确实不知道问题出在哪里。

导致失败的命令序列
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 29 日  

@MitchBradley好的,谢谢你的信息。我将尝试修改我的慢跑代码以符合该要求。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 29 日  

TLDR;

你能举出最简单的例子来重复这个问题吗?

ok您是否 100% 确定在发送点动命令之前正在等待?我注意到Bf:0几个地方。

我已将我的发件人更改为在发送每个后续命令之前等待“确定”,并且不再进入Bf:0我的状态,但仍然收到问题中描述的错误。这是一个清理后的日志,可以更容易地看到其中发生了什么,它显示每个命令都在等待响应。

新错误日志
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 11 月 30 日  

我写了一个 python 脚本来引发这个错误(在我的机器上)。它在任何意义上都不是在等待“确定”,但这只是重播一个捕获的会话。请注意,错误可能会隐藏在进一步的输出中,因为发送方不知道接收方。您可以通过搜索 轻松在输出中找到它error:

import serial as pyserial
import time
import multiprocessing

def connect(port="/dev/ttyUSB0", baudrate=115200, timeout=0.1):
    serial = pyserial.Serial()
    serial.port = port
    serial.baudrate = baudrate
    serial.timeout = timeout

    serial.open()
    if not serial.is_open:
        raise Exception("could not connect to serial")
    return serial


def timed_send(csv, conn: pyserial.Serial):
    begin = time.time()
    for timestamp, command in csv.items():
        while time.time() - begin < (float(timestamp)/1e6):
            pass
        conn.write(command)
        print(command)


def read_loop(conn: pyserial.Serial):
    while True:
        value = conn.readline().rstrip()
        if value:
            assert isinstance(value, bytes)
            print(f"\t{value}")
            if b'error:' in value:
                raise Exception(value)


timestamps = {
    '0001104424': b'\x18',
    '0001104728': b'\x0c',
    '0002111029': b'$ri=50\n',
    '0002122378': b'$Alarm/Disable\n',
    '0002133496': b'G10L20 X0Y0Z0\n',
    '0002225694': b'$10=2\n',
    '0002234257': b'\n$Bye\n',
    '0003851715': b'$T\n',
    '0003894207': b'\x85',
    '0005971033': b'\x17',
    '0005971358': b'\x0c',
    '0005975080': b'\x17',
    '0005975287': b'\x17',
    '0006076116': b'\x0c',
    '0006377325': b'\x17',
    '0006482553': b'\x17',
    '0006482840': b'\x0c',
    '0007488691': b'\x18',
    '0007488913': b'\x0c',
    '0008497874': b'$ri=50\n',
    '0008508713': b'$Alarm/Disable\n',
    '0008527685': b'G10L20 X0Y0Z0\n',
    '0008541794': b'$10=2\n',
    '0008549644': b'$T\n',
    '0008559413': b'$Commands/List\n',
    '0008719920': b'$Settings/List\n',
    '0008774405': b'$Settings/ListChanged\n',
    '0008787879': b'$Alarms/List\n',
    '0008822019': b'$Errors/List\n',
    '0009009464': b'$Config/Dump\n',
    '0009422404': b'$Alarm/Disable\n',
    '0009430830': b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n',
    '0009442155': b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n',
    '0009452593': b'$j=g91x0.0006y0.01z0.01f2829.06345\n',
    '0009462160': b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n',
    '0009472766': b'$j=g91x0.001y0.01667z0.01667f2829.06345\n',
    '0009483306': b'$j=g91x0.0012y0.02z0.02f2829.06345\n',
    '0009492657': b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n',
    '0009503597': b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n',
    '0009512853': b'$j=g91x0.0018y0.03z0.03f2829.06345\n',
    '0009522771': b'$j=g91x0.002y0.03333z0.03333f2829.06345\n',
    '0009532953': b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n',
    '0009543331': b'$j=g91x0.0024y0.04z0.04f2829.06345\n',
    '0009553657': b'$j=g91x0.0026y0.04333z0.04333f2829.06345\n',
    '0009566061': b'$j=g91x0.0028y0.04667z0.04667f2829.06345\n',
    '0009577291': b'$j=g91x0.003y0.05z0.05f2829.06345\n',
    '0009586751': b'$j=g91x0.0032y0.05333z0.05333f2829.06345\n',
    '0009598614': b'$j=g91x0.0034y0.05667z0.05667f2829.06345\n',
    '0009610146': b'$j=g91x0.0036y0.06z0.06f2829.06345\n',
    '0009620304': b'$j=g91x0.0038y0.06333z0.06333f2829.06345\n',
    '0009631838': b'$j=g91x0.004y0.06667z0.06667f2829.06345\n',
    '0009643195': b'$j=g91x0.0042y0.07z0.07f2829.06345\n',
    '0009653522': b'$j=g91x0.0044y0.07333z0.07333f2829.06345\n',
    '0009666049': b'$j=g91x0.0046y0.07667z0.07667f2829.06345\n',
    '0009675647': b'$j=g91x0.0048y0.08z0.08f2829.06345\n',
    '0009684830': b'$j=g91x0.005y0.08333z0.08333f2829.06345\n',
    '0009696591': b'$j=g91x0.0052y0.08667z0.08667f2829.06345\n',
    '0009708508': b'$j=g91x0.0054y0.09z0.09f2829.06345\n',
    '0009720386': b'$j=g91x0.0056y0.09333z0.09333f2829.06345\n',
    '0009732658': b'$j=g91x0.0058y0.09667z0.09667f2829.06345\n',
    '0009744235': b'$j=g91x0.006y0.1z0.1f2829.06345\n',
    '0009753664': b'$j=g91x0.0062y0.10333z0.10333f2829.06345\n',
    '0009766080': b'$j=g91x0.0064y0.10667z0.10667f2829.06345\n',
    '0009777698': b'$j=g91x0.0066y0.11z0.11f2829.06345\n',
    '0009787161': b'$j=g91x0.0068y0.11333z0.11333f2829.06345\n',
    '0009798596': b'$j=g91x0.007y0.11667z0.11667f2829.06345\n',
    '0009810307': b'$j=g91x0.0072y0.12z0.12f2829.06345\n',
    '0009820800': b'$j=g91x0.0074y0.12333z0.12333f2829.06345\n',
    '0009832646': b'$j=g91x0.0076y0.12667z0.12667f2829.06345\n',
    '0009863908': b'\x85',
    '0009868098': b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n',
    '0009930934': b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n',
    '0009941558': b'$j=g91x0.0006y0.01z0.01f2829.06345\n',
    '0009951801': b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n',
    '0009962073': b'$j=g91x0.001y0.01667z0.01667f2829.06345\n',
    '0009971877': b'$j=g91x0.0012y0.02z0.02f2829.06345\n',
    '0009982339': b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n',
    '0009994157': b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n',
    '0010006050': b'$j=g91x0.0018y0.03z0.03f2829.06345\n',
    '0010017547': b'$j=g91x0.002y0.03333z0.03333f2829.06345\n',
    '0010027719': b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n',
    '0010039530': b'$j=g91x0.0024y0.04z0.04f2829.06345\n',
}


if __name__ == "__main__":
    conn = connect()
    proc = multiprocessing.Process(target=read_loop, args=[conn], daemon=True)
    proc.start()
    timed_send(timestamps, conn)
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

当 X 值最终从 0.000 变为 0.005 时,会出现第一条运行消息。在前面的点动命令中,X 偏移小于 – 有时小得多 – 小于机器步长 (.005)。我会继续调查,但我不认为发出小于步长的慢跑有什么意义。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 12 月 1 日  

当 X 值最终从 0.000 变为 0.005 时,会出现第一条运行消息。在前面的点动命令中,X 偏移小于 – 有时小得多 – 小于机器步长 (.005)。我会继续调查,但我不认为发出小于步长的慢跑有什么意义。

好吧,目的是在多个轴上以独立速度实现 GRBL1.1 点动,当较快的轴与较慢的轴一起运行时,会发生这些非常短的运动。我不确定要执行什么样的检查/执行什么来避免这种情况 – 我想所有较短的动作都会在动作的开始/结束时分组,无论如何,所以也许我可以忽略它们而不用担心如何它可能会影响运动的其余部分。

这些短命令是完全被忽略了,还是 0.0025 + 0.0025 = 0.005?同样,是 1.0025 == 1.000 吗?另外,0.005 机器步长是一个通用常数,还是特定于我的配置?

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

200 步/mm = 0.005 毫米/步

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者
益普索 评论了 2022 年 12 月 1 日  

我懂了。下面是我做的一些实验的结果。

0.0025 + 0.0025 = 0.005

<Idle|WPos:0.195,2.705,2.705|Bf:15,128|FS:0,0>
$j=g91x0.0025f1000
ok
$j=g91x0.0025f1000
ok
<Jog|WPos:0.195,2.705,2.705|Bf:15,128|FS:0,0>
<Idle|WPos:0.200,2.705,2.705|Bf:15,128|FS:0,0>

0.0005 * 10 = 0.005

$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
<Jog|WPos:0.200,2.705,2.705|Bf:15,128|FS:0,0>
<Idle|WPos:0.205,2.705,2.705|Bf:15,128|FS:0,0>

部分步骤后跟完整步骤不会(总是?)导致错误

$j=g91x0.0005f1000
ok
$j=g91x0.0005f1000
ok
$j=g91x0.005f1000 
ok
<Jog|WPos:0.205,2.705,2.705|Bf:15,128|FS:0,0>
<Idle|WPos:0.210,2.705,2.705|Bf:15,128|FS:0,0|WCO:0.000,0.000,0.000>

请让我知道是否还有什么我可以做的来推动它。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725

这是一个多核同步问题。我正在修复。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725
作者

太好了谢谢。好打猎。

问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725 米奇布拉德利 补充道 已解决等待发布 我们有一个尚未发布的修复程序标签 2022 年 12 月 3 日
问题:点动命令似乎有时会触发run状态,这会破坏后续的点动命令 #725 bdring 关闭此 作为 完成 a0104b7 3个星期前
喜欢 (0)