bdring / FluidNC

The next generation of motion control firmware
Other
1.47k stars 363 forks source link

Problem: jog commands seem to sometimes trigger `run` state, which breaks subsequent jog commands #725

Closed ipsod closed 1 year ago

ipsod commented 1 year ago

Controller Board

Makerbase Tiny Bee v1.0

Machine Description

fluidnc-v3.6.5-pre2 board only, no motors or switches

Input Circuits

No response

Configuration file

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:

Startup Messages

[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]

User Interface Software

custom

What happened?

I'm using $ri=50.

I'm getting a error:8 ("Command requires idle state") when sending only jog commands. I send only jog commands, never a normal "gcode" command. I also observe that the status report says state is run.

This error often happens when I'm really spamming the jog keys in my sender. However, it sometimes also happens when doing what seems like a very simple motion (ie: jog forward, jog cancel, jog left).

Here is a log of what happened before/during the failure. Lines prepended with (python fstring) {time.time()}<< SerialConn(...) are lines received from serial. Lines prepended with {time.time()}>> are sent to serial. Other lines are just contextual notes.

$$$  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()

Here is the rest of the log, after the error:

======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

Other Information

I can generate some more error logs if you like. Let me know how else I can help.

ipsod commented 1 year ago
Another error log: ``` ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.0098f60\n'====== 1669613703.2001262>> $j=g91x-0.01f60 1669613703.2010846>> $j=g91x-0.01f60 1669613703.2020416>> $j=g91x-0.01f60 1669613703.2094696<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1302, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703209867227====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2107263>> $j=g91x-0.01f60 1669613703.2136009<< SerialConn(1669613685.0) 1669613703.2202148<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1303, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703220657929====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2216742>> $j=g91x-0.01f60 1669613703.2333229<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1304, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703233679684====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2349503>> $j=g91x-0.01f60 1669613703.2463036<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1305, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703246704421====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2472463>> $j=g91x-0.01f60 $$$ MachineServer().jog_stop() 1669613703.261019<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1306, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703261357043====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2620792>> $j=g91x-0.01f60 $$$ send_jog_cancel() 1669613703.2654614<< SerialConn(1669613685.0) 1669613703.272241<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1307, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703272531638====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2868586<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1308, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703287225123====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.292296<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1309, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703292680736====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2939055>> b'\x85' 1669613703.2972727<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1310, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703297612710====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.316961<< SerialConn(1669613685.0) 1669613703.366934<< SerialConn(1669613685.0) 1669613703.386607<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1311, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703387141162====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.3882177<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1312, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703388543987====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.3891356<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1313, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703389572859====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== $$$ END jog_stop() 120 1669613703.4160016<< SerialConn(1669613685.0) $$$ jog_run() $$$ jog_running 1669613703.4201686>> $j=g91x0.0002f60 1669613703.4212048>> $j=g91x0.0004f60 1669613703.4222388>> $j=g91x0.0006f60 1669613703.4232354>> $j=g91x0.0008f60 1669613703.424282>> $j=g91x0.001f60 1669613703.4254835>> $j=g91x0.0012f60 1669613703.4275637<< SerialConn(1669613685.0) 1669613703.4433174<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1315, pos=XYZABC(x=0.0002, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703443757398====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0002f60\n'====== 1669613703.444344<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1316, pos=XYZABC(x=0.0004, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703444752175====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0004f60\n'====== 1669613703.44519<< SerialConn(1669613685.0) ok 1669613703.4453754>> $j=g91x0.0014f60 ======ok====== ======receiving reply to request relative_jog(1317, pos=XYZABC(x=0.0006, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703446428854====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0006f60\n'====== 1669613703.448114<< SerialConn(1669613685.0) ok 1669613703.4482625>> $j=g91x0.0016f60 ======ok====== ======receiving reply to request relative_jog(1318, pos=XYZABC(x=0.0008, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703449384266====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0008f60\n'====== 1669613703.450514>> $j=g91x0.0018f60 1669613703.4513426<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1319, pos=XYZABC(x=0.001, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703452542763====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.001f60\n'====== 1669613703.4535499>> $j=g91x0.002f60 1669613703.4550858>> $j=g91x0.0022f60 1669613703.4556365<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1320, pos=XYZABC(x=0.0012000000000000001, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703456874835====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0012f60\n'====== 1669613703.4579027>> $j=g91x0.0024f60 1669613703.4608324<< SerialConn(1669613685.0) 1669613703.4615428<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1321, pos=XYZABC(x=0.0014, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703462043985====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0014f60\n'====== 1669613703.4629176<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1322, pos=XYZABC(x=0.0016, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703463321048====== 1669613703.463476>> $j=g91x0.0026f60 ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0016f60\n'====== 1669613703.4659696<< SerialConn(1669613685.0) ok 1669613703.4661107>> $j=g91x0.0028f60 ======ok====== ======receiving reply to request relative_jog(1323, pos=XYZABC(x=0.0017999999999999997, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703467149232====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0018f60\n'====== 1669613703.469571>> $j=g91x0.003f60 1669613703.472015<< SerialConn(1669613685.0) 1669613703.4748907<< SerialConn(1669613685.0) 1669613703.4757957<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4766338<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4775577<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4784951<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.479385<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.481944<< SerialConn(1669613685.0) 1669613703.482423<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1329, pos=XYZABC(x=0.0029999999999999996, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703482853197====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.003f60\n'====== 1669613703.484312>> $j=g91x0.0032f60 1669613703.4921036<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1330, pos=XYZABC(x=0.0031999999999999993, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703492577074====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0032f60\n'====== 1669613703.494512>> $j=g91x0.0034f60 1669613703.497458<< SerialConn(1669613685.0) 1669613703.5015671<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1331, pos=XYZABC(x=0.0033999999999999994, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703501862298====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0034f60\n'====== 1669613703.5023794>> $j=g91x0.0036f60 1669613703.5094838<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1332, pos=XYZABC(x=0.003599999999999999, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703509810815====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0036f60\n'====== 1669613703.5113237>> $j=g91x0.0038f60 1669613703.518952<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1333, pos=XYZABC(x=0.003799999999999999, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703519283009====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0038f60\n'====== 1669613703.520938>> $j=g91x0.004f60 1669613703.5228796<< SerialConn(1669613685.0) 1669613703.5278277<< SerialConn(1669613685.0) 1669613703.5297353<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.5393167<< SerialConn(1669613685.0) $$$ MachineServer().jog_stop() !!error_note!! error: jog_stop() join thread FAILED ```
ipsod commented 1 year ago
and another error log: ``` 1669613703.2001262>> $j=g91x-0.01f60 1669613703.2010846>> $j=g91x-0.01f60 1669613703.2020416>> $j=g91x-0.01f60 1669613703.2094696<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1302, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703209867227====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2107263>> $j=g91x-0.01f60 1669613703.2136009<< SerialConn(1669613685.0) 1669613703.2202148<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1303, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703220657929====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2216742>> $j=g91x-0.01f60 1669613703.2333229<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1304, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703233679684====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2349503>> $j=g91x-0.01f60 1669613703.2463036<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1305, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703246704421====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2472463>> $j=g91x-0.01f60 $$$ MachineServer().jog_stop() 1669613703.261019<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1306, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703261357043====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2620792>> $j=g91x-0.01f60 $$$ send_jog_cancel() 1669613703.2654614<< SerialConn(1669613685.0) 1669613703.272241<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1307, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703272531638====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2868586<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1308, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703287225123====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.292296<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1309, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703292680736====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.2939055>> b'\x85' 1669613703.2972727<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1310, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703297612710====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.316961<< SerialConn(1669613685.0) 1669613703.366934<< SerialConn(1669613685.0) 1669613703.386607<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1311, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703387141162====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.3882177<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1312, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703388543987====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== 1669613703.3891356<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1313, pos=XYZABC(x=-0.01, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703389572859====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x-0.01f60\n'====== $$$ END jog_stop() 120 1669613703.4160016<< SerialConn(1669613685.0) $$$ jog_run() $$$ jog_running 1669613703.4201686>> $j=g91x0.0002f60 1669613703.4212048>> $j=g91x0.0004f60 1669613703.4222388>> $j=g91x0.0006f60 1669613703.4232354>> $j=g91x0.0008f60 1669613703.424282>> $j=g91x0.001f60 1669613703.4254835>> $j=g91x0.0012f60 1669613703.4275637<< SerialConn(1669613685.0) 1669613703.4433174<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1315, pos=XYZABC(x=0.0002, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703443757398====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0002f60\n'====== 1669613703.444344<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1316, pos=XYZABC(x=0.0004, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703444752175====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0004f60\n'====== 1669613703.44519<< SerialConn(1669613685.0) ok 1669613703.4453754>> $j=g91x0.0014f60 ======ok====== ======receiving reply to request relative_jog(1317, pos=XYZABC(x=0.0006, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703446428854====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0006f60\n'====== 1669613703.448114<< SerialConn(1669613685.0) ok 1669613703.4482625>> $j=g91x0.0016f60 ======ok====== ======receiving reply to request relative_jog(1318, pos=XYZABC(x=0.0008, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703449384266====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0008f60\n'====== 1669613703.450514>> $j=g91x0.0018f60 1669613703.4513426<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1319, pos=XYZABC(x=0.001, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703452542763====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.001f60\n'====== 1669613703.4535499>> $j=g91x0.002f60 1669613703.4550858>> $j=g91x0.0022f60 1669613703.4556365<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1320, pos=XYZABC(x=0.0012000000000000001, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703456874835====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0012f60\n'====== 1669613703.4579027>> $j=g91x0.0024f60 1669613703.4608324<< SerialConn(1669613685.0) 1669613703.4615428<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1321, pos=XYZABC(x=0.0014, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703462043985====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0014f60\n'====== 1669613703.4629176<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1322, pos=XYZABC(x=0.0016, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703463321048====== 1669613703.463476>> $j=g91x0.0026f60 ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0016f60\n'====== 1669613703.4659696<< SerialConn(1669613685.0) ok 1669613703.4661107>> $j=g91x0.0028f60 ======ok====== ======receiving reply to request relative_jog(1323, pos=XYZABC(x=0.0017999999999999997, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703467149232====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0018f60\n'====== 1669613703.469571>> $j=g91x0.003f60 1669613703.472015<< SerialConn(1669613685.0) 1669613703.4748907<< SerialConn(1669613685.0) 1669613703.4757957<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4766338<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4775577<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.4784951<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.479385<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.481944<< SerialConn(1669613685.0) 1669613703.482423<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1329, pos=XYZABC(x=0.0029999999999999996, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703482853197====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.003f60\n'====== 1669613703.484312>> $j=g91x0.0032f60 1669613703.4921036<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1330, pos=XYZABC(x=0.0031999999999999993, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703492577074====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0032f60\n'====== 1669613703.494512>> $j=g91x0.0034f60 1669613703.497458<< SerialConn(1669613685.0) 1669613703.5015671<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1331, pos=XYZABC(x=0.0033999999999999994, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703501862298====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0034f60\n'====== 1669613703.5023794>> $j=g91x0.0036f60 1669613703.5094838<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1332, pos=XYZABC(x=0.003599999999999999, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703509810815====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0036f60\n'====== 1669613703.5113237>> $j=g91x0.0038f60 1669613703.518952<< SerialConn(1669613685.0) ok ======ok====== ======receiving reply to request relative_jog(1333, pos=XYZABC(x=0.003799999999999999, y=0.0, z=0.0, a=None, b=None, c=None),) T_1669613703519283009====== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0038f60\n'====== 1669613703.520938>> $j=g91x0.004f60 1669613703.5228796<< SerialConn(1669613685.0) 1669613703.5278277<< SerialConn(1669613685.0) 1669613703.5297353<< SerialConn(1669613685.0) error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 1669613703.5393167<< SerialConn(1669613685.0) $$$ MachineServer().jog_stop() !!error_note!! error: jog_stop() join thread FAILED $$$ send_jog_cancel() 1669613704.6358695>> b'\x85' $$$ END jog_stop() 14 $$$ jog_run() $$$ MachineServer().jog_stop() $$$ send_jog_cancel() ```
bdring commented 1 year ago

TLDR;

Can you make the most simple example to repeat the problem?

Are you 100% sure you are waiting for an ok before sending a jog command? I notice Bf:0 in a few places.

ipsod commented 1 year ago

I'll try to make a simple example.

ipsod commented 1 year ago

Does 0x85 jog cancel do anything funny regarding the buffer and sending ok messages?

I typically queue up a serial-buffer-full of commands. Before those are planned, while they're just in the serial buffer, I may then send a 0x85 jog cancel, which I understand is processed by a different pipeline. What would happen to those jog commands in the serial buffer? Am I doing it wrong? Should I wait for ok between each message?

MitchBradley commented 1 year ago

The jog cancel character "jumps the queue", bypassing any partial line that has already advanced from the hardware FIFO to the line collection buffer.

You really should send jogs synchronously instead of queuing them up - and you should not send other, non-jog, commands until the job has been completed or canceled.

MitchBradley commented 1 year ago

jog cancel has no relation whatsoever to "ok". ok indicates that a complete line has been received, passed to the GCode parser, and interpreted without error. The result of that interpretation causes the indicated operation - perhaps motion - to be passed on to the planner, where it is aggregated with any previous motion.

The jog cancel character is recognized anywhere, even in the middle of a line, before the line is handed over to the GCode parser. It sends an event to the protocol state machine that results in the cancellation of motion that is already in progress - motion that is typically well past the planner queue. The feedback to the sender is in the form of status reports that show state changes, completely independent of and separate from the "ok" acknowledgement of the line-oriented GCode parser.

ipsod commented 1 year ago

Would this list of timestamps (in microseconds) and commands sent suffice to try and reproduce the error? This sequence is giving the error about half the time, for me. This is not a great jog sequence. It causes jerky motion from failing to keep the buffer queue full, but it brings out the error quickly in my experience, though I don't know where the problem lies, for sure.

sequence of commands that causes failure ``` 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' ```
ipsod commented 1 year ago

@MitchBradley Ok, thank you for the info. I'll try and modify my jog code to comply with that.

ipsod commented 1 year ago

TLDR;

Can you make the most simple example to repeat the problem?

Are you 100% sure you are waiting for an ok before sending a jog command? I notice Bf:0 in a few places.

I've altered my sender to wait for "ok" before sending each subsequent command, and no longer get Bf:0 in my status, but still get the error described in the issue. Here's a cleaned up log that's easier to see what's happening in, and it shows that each command waits for a response.

new error log ``` ======CONNECTED===== 0001114897>> b'\x18' 0001115155>> b'\x0c' ======starting interface===== 0001125546<< Grbl 3.6 [FluidNC v3.6.5-pre2 (wifi) '$' for help] ======LINES_NOT_MATCHED===== =========== 0002122106>> b'$ri=50\n' 0002131879<< [MSG:INFO: Channel auto report interval set to 50 ms] 0002132350<< ok ======receiving reply to request mode_transmit_frequency T_1669684799244296855===== ======RECEIVED GRBL REPLY TO REQUEST: b'$ri=50\n'===== 0002133860>> b'$Alarm/Disable\n' 0002139541<< 0002143213<< [GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0] 0002143688<< ok ======receiving reply to request alarm_disable T_1669684799255603504===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Alarm/Disable\n'===== 0002145047>> b'G10L20 X0Y0Z0\n' 0002157974<< ok ======receiving reply to request set_wpos_zero T_1669684799269993544===== ======RECEIVED GRBL REPLY TO REQUEST: b'G10L20 X0Y0Z0\n'===== 0002159701>> b'$10=2\n' 0002164943<< 0002165249<< ok ======receiving reply to request mode_transmit_wpos T_1669684799277156728===== ======RECEIVED GRBL REPLY TO REQUEST: b'$10=2\n'===== ======test_reboot_mcu()===== $$$ REBOOT_MCU 0002167417>> b'\n$Bye\n' 0002174189<< ok ======LINES_NOT_MATCHED===== ======reset===== 0002175429<< [MSG:INFO: Restarting] 0002175758<< ok ======LINES_NOT_MATCHED===== ======reset===== 0002177957<< ets Jun 8 2016 00:22:57 0002183378<< rst:0xc (SW_CPU_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT) 0002185960<< configsip: 0, SPIWP:0xee 0002191873<< clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 0002194265<< mode:DIO, clock div:1 0002196976<< load:0x3fff0030,len:1184 0002199735<< load:0x40078000,len:12812 0002200767<< load:0x40080400,len:3032 0002203227<< entry 0x400805e4 0002732410<< [MSG:INFO: FluidNC v3.6.5-pre2] 0002737384<< [MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e] 0002751509<< [MSG:INFO: Local filesystem type is spiffs] 0002755825<< [MSG:INFO: Configuration file:config.yaml] 0002761003<< [MSG:INFO: Machine ESP32 Dev Controller V4] 0002764171<< [MSG:INFO: Board ESP32 Dev Controller V4] 0002766772<< [MSG:INFO: SPI not defined] 0002769539<< [MSG:INFO: No SD Card CS Pin] 0002778025<< [MSG:INFO: See http://wiki.fluidnc.com/en/config/sd_card#sdfallbackcs-access-sd-without-a-config-file] 0002786050<< [MSG:INFO: Stepping:RMT Pulse:2us Dsbl Delay:0us Dir Delay:1us Idle Delay:250ms] 0002788727<< [MSG:INFO: Axis count 3] 0002791671<< [MSG:INFO: Axis X (-100.000,0.000)] 0002792330<< [MSG:INFO: Motor0] 0002798050<< [MSG:INFO: stepstick Step:gpio.12 Dir:gpio.13 Disable:gpio.5] 0002800293<< [MSG:INFO: Motor1] 0002803243<< [MSG:INFO: Axis Y (10.000,1010.000)] 0002805995<< [MSG:INFO: Motor0] 0002811554<< [MSG:INFO: stepstick Step:gpio.27 Dir:gpio.14 Disable:gpio.16] 0002814010<< [MSG:INFO: Motor1] 0002816878<< [MSG:INFO: Axis Z (-990.000,10.000)] 0002819388<< [MSG:INFO: Motor0] 0002825061<< [MSG:INFO: stepstick Step:gpio.19 Dir:gpio.23 Disable:gpio.18] 0002827556<< [MSG:INFO: Motor1] 0002830557<< [MSG:INFO: Kinematic system: Cartesian] 0002833514<< [MSG:INFO: Using spindle NoSpindle] 0002836824<< [MSG:INFO: STA SSID is not set] 0002944705<< [MSG:INFO: AP SSID FluidNC IP 192.168.0.1 mask 255.255.255.0 channel 1] 0003498158<< [MSG:INFO: AP started] 0003501111<< [MSG:INFO: WiFi on] 0003518205<< [MSG:INFO: Captive Portal Started] 0003520993<< [MSG:INFO: HTTP started on port 80] 0003524145<< [MSG:INFO: Telnet started on port 23] 0003529362<< Grbl 3.6 [FluidNC v3.6.5-pre2 (wifi) '$' for help] ======receiving reply to request reset T_1669684800641616416===== ======RECEIVED GRBL REPLY TO REQUEST: b'\n$Bye\n'===== 0003531934<< [MSG:INFO: '$H'|'$X' to unlock] 0003785209>> b'$T\n' 0003793147<< State 1 (Alarm) 0003793624<< ok ======receiving reply to request state T_1669684800905521448===== ======RECEIVED GRBL REPLY TO REQUEST: b'$T\n'===== $$$ SHUTTING DOWN: MachineServer $$$ MachineServer().jog_stop() $$$ send_jog_cancel() 0003827573>> b'\x85' $$$ END jog_stop() 100 $$$ stop_track_status() $$$ stop_read_loop() $$$ SerialConn(1669684797.0).disconnect() ======CONNECTED===== 0005903501>> b'\x17' 0005903711>> b'\x0c' 0005907044>> b'\x17' 0005907257>> b'\x17' 0006008092>> b'\x0c' 0006309272>> b'\x17' 0006413778>> b'\x17' 0006414014>> b'\x0c' $$$ SHUTTING DOWN: MachineServer ======CONNECTED===== 0007419676>> b'\x18' 0007419851>> b'\x0c' ======starting interface===== 0007428597<< Grbl 3.6 [FluidNC v3.6.5-pre2 (wifi) '$' for help] ======LINES_NOT_MATCHED===== =========== 0007432586<< [MSG:INFO: '$H'|'$X' to unlock] 0008425595>> b'$ri=50\n' 0008435600<< [MSG:INFO: Channel auto report interval set to 50 ms] 0008436048<< ok ======receiving reply to request mode_transmit_frequency T_1669684805548045509===== ======RECEIVED GRBL REPLY TO REQUEST: b'$ri=50\n'===== 0008438137>> b'$Alarm/Disable\n' 0008443489<< 0008449254<< 0008452291<< [GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0] 0008455054<< [MSG:INFO: Caution: Unlocked] 0008455480<< ok ======receiving reply to request alarm_disable T_1669684805567393982===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Alarm/Disable\n'===== 0008458008>> b'G10L20 X0Y0Z0\n' 0008460181<< 0008470975<< ok ======receiving reply to request set_wpos_zero T_1669684805583010788===== ======RECEIVED GRBL REPLY TO REQUEST: b'G10L20 X0Y0Z0\n'===== 0008472863>> b'$10=2\n' 0008476321<< 0008478928<< ok ======receiving reply to request mode_transmit_wpos T_1669684805590828005===== ======RECEIVED GRBL REPLY TO REQUEST: b'$10=2\n'===== 0008481546>> b'$T\n' 0008488704<< State 0 (Idle) 0008489117<< ok ======receiving reply to request state T_1669684805601105804===== ======RECEIVED GRBL REPLY TO REQUEST: b'$T\n'===== 0008490320>> b'$Commands/List\n' 0008498039<< $FakeLaserMode or $32 0008500487<< $FakeMaxSpindleSpeed or $30 0008503169<< $Report/Interval or $RI 0008505723<< $Startup/Show or $SS 0008506803<< $Settings/Restore or $RST 0008509084<< $GCode/StartupLines or $N 0008511569<< $Build/Info or $I 0008514039<< $System/Sleep or $SLP 0008514822<< $Home/C or $HC 0008516847<< $Home/B or $HB 0008517683<< $Home/A or $HA 0008519560<< $Home/Z or $HZ 0008520275<< $Home/Y or $HY 0008522359<< $Home/X or $HX 0008523269<< $Macros/Run or $RM 0008525476<< $Motors/Init or $MI 0008527853<< $Motor/Enable or $ME 0008528801<< $Motor/Disable or $MD 0008530881<< $Home or $H 0008531785<< $GCode/Offsets or $# 0008533843<< $Settings/Stats or $V 0008536540<< $Settings/Erase or $NVX 0008538982<< $Alarm/Disable or $X 0008539813<< $GCode/Check or $C 0008541881<< $GCode/Modes or $G 0008542805<< $Errors/List or $E 0008544987<< $Alarms/List or $A 0008547449<< $Commands/List or $CMD 0008550231<< $Settings/ListChanged or $SC 0008551215<< $Settings/List or $S 0008553512<< $Limits/Show or $Limits 0008555924<< $GrblNames/List or $L 0008558705<< $GrblSettings/List or $$ 0008559416<< $Jog or $J 0008561181<< $State or $T 0008561928<< $Help or $ 0008564044<< $Config/Dump or $CD 0008564977<< $Xmodem/Send or $XS 0008567217<< $Xmodem/Receive or $XR 0008569630<< $Channel/Info or $CI 0008570498<< $GPIO/Dump or $GD 0008572704<< $WebUI/Help or $ESP 0008575195<< $WebUI/Help or $ESP0 0008576211<< $WebUI/List or $ESP400 0008581083<< $WebUI/Set or $ESP401 =P=position T=type V=value 0008583735<< $Radio/State or $ESP115 =ON|OFF 0008586309<< $SD/Status or $ESP200 0008587326<< $SD/List or $ESP210 0008591971<< $SD/Delete or $ESP215 =file_or_directory_path 0008594575<< $SD/Run or $ESP220 =path 0008595631<< $SD/Show or $ESP221 =path 0008597926<< $LocalFS/Migrate =path 0008600441<< $LocalFS/Restore =path 0008603073<< $LocalFS/Backup =path 0008604096<< $LocalFS/Delete =path 0008605960<< $LocalFS/List =path 0008608922<< $LocalFS/Run or $ESP700 =path 0008611554<< $LocalFS/Show or $ESP701 =path 0008614516<< $LocalFS/Format or $ESP710 =FORMAT 0008617111<< $LocalFS/Size or $ESP720 0008617973<< $Bye =RESTART 0008622403<< $System/Control or $ESP444 =RESTART 0008623404<< $System/Stats or $ESP420 0008625672<< $Firmware/Info or $ESP800 0008628588<< $Notification/Send or $ESP600 =message 0008636948<< $Notification/Setup or $ESP610 =TYPE=NONE|PUSHOVER|EMAIL|LINE T1=token1 T2=token2 TS=settings 0008642513<< $Sta/Setup or $ESP103 =IP=ipaddress MSK=netmask GW=gateway 0008644826<< $System/IP or $ESP111 0008647909<< $WiFi/ListAPs or $ESP410 0008648258<< ok ======receiving reply to request commands_list T_1669684805760262218===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Commands/List\n'===== 0008650323>> b'$Settings/List\n' 0008660488<< $Start/Message=Grbl \V [FluidNC \B (\R) \H] 0008661246<< $Firmware/Build= 0008663404<< $SD/FallbackCS=-1 0008665732<< $Report/Status=2 0008668568<< $Config/Filename=config.yaml 0008669490<< $Message/Level=Info 0008671547<< $Notification/Type=NONE 0008674132<< $Notification/T1= 0008674952<< $Notification/T2= 0008677065<< $Notification/TS= 0008677985<< $Telnet/Enable=ON 0008679895<< $Telnet/Port=23 0008680754<< $HTTP/Enable=ON 0008682792<< $HTTP/Port=80 0008683635<< $WiFi/Mode=STA>AP 0008685461<< $Sta/SSID= 0008687976<< $Sta/Password=****** 0008688809<< $Sta/IPMode=DHCP 0008690855<< $Sta/IP=0.0.0.0 0008691770<< $Sta/Gateway=0.0.0.0 0008693938<< $Sta/Netmask=0.0.0.0 0008696422<< $AP/SSID=FluidNC 0008697268<< $AP/Password=****** 0008699262<< $AP/IP=192.168.0.1 0008700035<< $AP/Channel=1 0008702815<< $Hostname=fluidnc 0008703353<< ok ======receiving reply to request settings_list T_1669684805815343650===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Settings/List\n'===== 0008705094>> b'$Settings/ListChanged\n' 0008712923<< $Report/Status=2 0008715824<< (Passwords not shown) 0008716236<< ok ======receiving reply to request settings_list_changed T_1669684805828169839===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Settings/ListChanged\n'===== 0008717425>> b'$Alarms/List\n' 0008724729<< 0: None 0008725459<< 1: Hard Limit 0008727289<< 2: Soft Limit 0008728000<< 3: Abort Cycle 0008730233<< 4: Probe Fail Initial 0008732885<< 5: Probe Fail Contact 0008733937<< 6: Homing Fail Reset 0008735826<< 7: Homing Fail Door 0008738468<< 8: Homing Fail Pulloff 0008741067<< 9: Homing Fail Approach 0008742055<< 10: Spindle Control 0008744316<< 11: Control Pin Initially On 0008747130<< 12: Ambiguous Switch 0008747570<< ok ======receiving reply to request alarms_list T_1669684805859620017===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Alarms/List\n'===== 0008753941>> b'$Errors/List\n' 0008760483<< 0: No error 0008763195<< 1: Expected GCodecommand letter 0008765857<< 2: Bad GCode number format 0008768510<< 3: Invalid $ statement 0008769120<< 4: Negative value 0008771475<< 5: Setting disabled 0008774169<< 6: Step pulse too short 0008775009<< 7: Failed to read settings 0008777790<< 8: Command requires idle state 0008782885<< 9: GCode cannot be executed in lock or alarm state 0008785599<< 10: Soft limit error 0008786540<< 11: Line too long 0008788565<< 12: Max step rate exceeded 0008791114<< 13: Check door 0008793667<< 14: Startup line too long 0008796529<< 15: Max travel exceeded during jog 0008797701<< 16: Invalid jog command 0008802006<< 17: Laser mode requires PWM output 0008805034<< 18: No Homing/Cycle defined in settings 0008807888<< 19: Single axis homing not allowed 0008810669<< 20: Unsupported GCode command 0008813572<< 21: Gcode modal group violation 0008816150<< 22: Gcode undefined feed rate 0008819246<< 23: Gcode command value not integer 0008821893<< 24: Gcode axis command conflict 0008824600<< 25: Gcode word repeated 0008827108<< 26: Gcode no axis words 0008829868<< 27: Gcode invalid line number 0008832860<< 28: Gcode value word missing 0008835446<< 29: Gcode unsupported coordinate system 0008838234<< 30: Gcode G53 invalid motion mode 0008841074<< 31: Gcode extra axis words 0008843893<< 32: Gcode no axis words in plane 0008846509<< 33: Gcode invalid target 0008849076<< 34: Gcode arc radius error 0008851951<< 35: Gcode no offsets in plane 0008853156<< 36: Gcode unused words 0008855154<< 37: Gcode G43 dynamic axis error 0008858464<< 38: Gcode max value exceeded 0008860701<< 39: P param max exceeded 0008863071<< 40: Check control pins 0008865851<< 60: Failed to mount device 0008866517<< 61: Read failed 0008868921<< 62: Failed to open directory 0008871799<< 63: Directory not found 0008874025<< 64: File empty 0008875066<< 65: File not found 0008877289<< 66: Failed to open file 0008879563<< 67: Device is busy 0008882382<< 68: Failed to delete directory 0008883212<< 69: Failed to delete file 0008885778<< 70: Bluetooth failed to start 0008888753<< 71: WiFi failed to start 0008891232<< 80: Number out of range for setting 0008894062<< 81: Invalid value for setting 0008896671<< 82: Failed to create file 0008899569<< 83: Failed to format filesystem 0008902382<< 90: Failed to send message 0008904910<< 100: Failed to store setting 0008907721<< 101: Failed to get setting status 0008910460<< 110: Authentication failed! 0008912947<< 111: End of line 0008913863<< 112: End of file 0008916145<< 120: Another interface is busy 0008918624<< 130: Jog Cancelled 0008921405<< 150: Bad Pin Specification 0008926861<< 152: Configuration is invalid. Check boot messages for ERR's. 0008927691<< 160: File Upload Failed 0008931795<< 161: File Download Failed 0008932168<< ok ======receiving reply to request errors_list T_1669684806044146085===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Errors/List\n'===== 0008958115>> b'$Config/Dump\n' 0008966407<< board: ESP32 Dev Controller V4 0008969135<< name: ESP32 Dev Controller V4 0008970967<< meta: 0008971913<< stepping: 0008973393<< engine: RMT 0008974375<< idle_ms: 250 0008975397<< pulse_us: 2 0008976817<< dir_delay_us: 1 0008979336<< disable_delay_us: 0 0008980281<< segments: 12 0008981779<< axes: 0008984630<< shared_stepper_disable_pin: NO_PIN 0008987841<< shared_stepper_reset_pin: NO_PIN 0008988291<< x: 0008990495<< steps_per_mm: 200.000 0008993237<< max_rate_mm_per_min: 60.000 0008996493<< acceleration_mm_per_sec2: 120.000 0008998828<< max_travel_mm: 100.000 0009001630<< soft_limits: false 0009002422<< homing: 0009004219<< cycle: 0 0009007171<< allow_single_axis: true 0009009590<< positive_direction: true 0009010285<< mpos_mm: 0.000 0009013063<< feed_mm_per_min: 50.000 0009016334<< seek_mm_per_min: 200.000 0009018609<< settle_ms: 250 0009021055<< seek_scaler: 1.100 0009023583<< feed_scaler: 1.100 0009024677<< motor0: 0009026848<< limit_neg_pin: NO_PIN 0009029498<< limit_pos_pin: NO_PIN 0009032094<< limit_all_pin: NO_PIN 0009034680<< hard_limits: false 0009035931<< pulloff_mm: 1.000 0009037898<< stepstick: 0009040442<< step_pin: gpio.12 0009043205<< direction_pin: gpio.13 0009045926<< disable_pin: gpio.5 0009048413<< ms1_pin: NO_PIN 0009049676<< ms2_pin: NO_PIN 0009051631<< ms3_pin: NO_PIN 0009054282<< reset_pin: NO_PIN 0009054884<< motor1: 0009057381<< limit_neg_pin: NO_PIN 0009060115<< limit_pos_pin: NO_PIN 0009062753<< limit_all_pin: NO_PIN 0009065470<< hard_limits: false 0009068078<< pulloff_mm: 1.000 0009068727<< null_motor: 0009070759<< y: 0009071636<< steps_per_mm: 200.000 0009074221<< max_rate_mm_per_min: 2000.000 0009079236<< acceleration_mm_per_sec2: 2000.000 0009081912<< max_travel_mm: 1000.000 0009082711<< soft_limits: false 0009084823<< homing: 0009085471<< cycle: 2 0009087907<< allow_single_axis: true 0009090733<< positive_direction: false 0009093271<< mpos_mm: 10.000 0009096100<< feed_mm_per_min: 50.000 0009098812<< seek_mm_per_min: 200.000 0009101401<< settle_ms: 250 0009102263<< seek_scaler: 1.100 0009104585<< feed_scaler: 1.100 0009106999<< motor0: 0009109705<< limit_neg_pin: NO_PIN 0009112449<< limit_pos_pin: NO_PIN 0009113368<< limit_all_pin: NO_PIN 0009115691<< hard_limits: false 0009118358<< pulloff_mm: 1.000 0009120829<< stepstick: 0009121748<< step_pin: gpio.27 0009124191<< direction_pin: gpio.14 0009126885<< disable_pin: gpio.16 0009129611<< ms1_pin: NO_PIN 0009132147<< ms2_pin: NO_PIN 0009134794<< ms3_pin: NO_PIN 0009137512<< reset_pin: NO_PIN 0009138127<< motor1: 0009140463<< limit_neg_pin: NO_PIN 0009143185<< limit_pos_pin: NO_PIN 0009145953<< limit_all_pin: NO_PIN 0009148534<< hard_limits: false 0009149433<< pulloff_mm: 1.000 0009151751<< null_motor: 0009152376<< z: 0009154672<< steps_per_mm: 200.000 0009157639<< max_rate_mm_per_min: 2000.000 0009160484<< acceleration_mm_per_sec2: 2000.000 0009163169<< max_travel_mm: 1000.000 0009165573<< soft_limits: false 0009166255<< homing: 0009168255<< cycle: 1 0009171014<< allow_single_axis: true 0009173769<< positive_direction: true 0009176349<< mpos_mm: 10.000 0009179119<< feed_mm_per_min: 50.000 0009181890<< seek_mm_per_min: 200.000 0009182642<< settle_ms: 250 0009184985<< seek_scaler: 1.100 0009187794<< feed_scaler: 1.100 0009188414<< motor0: 0009190673<< limit_neg_pin: NO_PIN 0009193550<< limit_pos_pin: NO_PIN 0009196101<< limit_all_pin: NO_PIN 0009198885<< hard_limits: false 0009201445<< pulloff_mm: 1.000 0009202590<< stepstick: 0009204732<< step_pin: gpio.19 0009207216<< direction_pin: gpio.23 0009209955<< disable_pin: gpio.18 0009212570<< ms1_pin: NO_PIN 0009215262<< ms2_pin: NO_PIN 0009216074<< ms3_pin: NO_PIN 0009218396<< reset_pin: NO_PIN 0009221001<< motor1: 0009223564<< limit_neg_pin: NO_PIN 0009226252<< limit_pos_pin: NO_PIN 0009227194<< limit_all_pin: NO_PIN 0009229536<< hard_limits: false 0009232200<< pulloff_mm: 1.000 0009234654<< null_motor: 0009235758<< kinematics: 0009237368<< Cartesian: 0009237941<< spi: 0009238816<< miso_pin: NO_PIN 0009240853<< mosi_pin: NO_PIN 0009242995<< sck_pin: NO_PIN 0009243562<< sdcard: 0009245711<< cs_pin: NO_PIN 0009246566<< card_detect_pin: NO_PIN 0009248648<< control: 0009251333<< safety_door_pin: NO_PIN 0009252128<< reset_pin: NO_PIN 0009254795<< feed_hold_pin: NO_PIN 0009257143<< cycle_start_pin: NO_PIN 0009259621<< macro0_pin: NO_PIN 0009260437<< macro1_pin: NO_PIN 0009262617<< macro2_pin: NO_PIN 0009265191<< macro3_pin: NO_PIN 0009265752<< coolant: 0009267945<< flood_pin: NO_PIN 0009269127<< mist_pin: NO_PIN 0009270833<< delay_ms: 0 0009271374<< probe: 0009273467<< pin: NO_PIN 0009274618<< check_mode_start: true 0009276345<< macros: 0009277655<< startup_line0: 0009279316<< startup_line1: 0009280172<< macro0: 0009281837<< macro1: 0009282444<< macro2: 0009282950<< macro3: 0009284574<< start: 0009285497<< must_home: true 0009288118<< deactivate_parking: false 0009290432<< check_limits: false 0009291006<< parking: 0009293123<< enable: false 0009293755<< axis: Z 0009296021<< target_mpos_mm: -5.000 0009298736<< rate_mm_per_min: 800.000 0009301520<< pullout_distance_mm: 5.000 0009304340<< pullout_rate_mm_per_min: 250.000 0009305069<< user_outputs: 0009307653<< analog0_pin: NO_PIN 0009309765<< analog1_pin: NO_PIN 0009312415<< analog2_pin: NO_PIN 0009313196<< analog3_pin: NO_PIN 0009315438<< analog0_hz: 5000 0009317971<< analog1_hz: 5000 0009318932<< analog2_hz: 5000 0009320979<< analog3_hz: 5000 0009323495<< digital0_pin: NO_PIN 0009324399<< digital1_pin: NO_PIN 0009326670<< digital2_pin: NO_PIN 0009329262<< digital3_pin: NO_PIN 0009331905<< arc_tolerance_mm: 0.002 0009334678<< junction_deviation_mm: 0.010 0009335522<< verbose_errors: false 0009337717<< report_inches: false 0009340773<< enable_parking_override_control: false 0009343264<< use_line_numbers: false 0009347054<< planner_blocks: 16 0009347668<< NoSpindle: 0009348046<< ok ======receiving reply to request config_dump T_1669684806460180232===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Config/Dump\n'===== $$$ test_jogger() ======pos_before_jog WPos(x=0.0, y=0.0, z=0.0, a=None, b=None, c=None)===== 0009413811>> b'$Alarm/Disable\n' $$$ jog_run() $$$ jog_running $$$ jog_run running 1 WPos(x=0.0, y=0.0, z=0.0, a=None, b=None, c=None) 0009420837<< ok ======receiving reply to request alarm_disable T_1669684806532785104===== ======RECEIVED GRBL REPLY TO REQUEST: b'$Alarm/Disable\n'===== 0009422270>> b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n' 0009431844<< ok ======receiving reply to request relative_jog(27, pos=XYZABC(x=0.0002, y=0.0033333333333333335, z=0.0033333333333333335, a=None, b=None, c=None),) T_1669684806543825343===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n'===== 0009433504>> b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n' 0009435080<< 0009439579<< 0009442495<< ok ======receiving reply to request relative_jog(28, pos=XYZABC(x=0.0004, y=0.006666666666666667, z=0.006666666666666667, a=None, b=None, c=None),) T_1669684806554477090===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n'===== 0009443562>> b'$j=g91x0.0006y0.01z0.01f2829.06345\n' 0009445834<< 0009452502<< 0009452973<< ok ======receiving reply to request relative_jog(29, pos=XYZABC(x=0.0006, y=0.01, z=0.01, a=None, b=None, c=None),) T_1669684806565150006===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0006y0.01z0.01f2829.06345\n'===== 0009454690>> b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n' 0009458029<< 0009463283<< 0009463568<< ok ======receiving reply to request relative_jog(30, pos=XYZABC(x=0.0008, y=0.013333333333333334, z=0.013333333333333334, a=None, b=None, c=None),) T_1669684806575634950===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n'===== 0009464894>> b'$j=g91x0.001y0.01667z0.01667f2829.06345\n' 0009467746<< 0009474056<< 0009475564<< ok ======receiving reply to request relative_jog(31, pos=XYZABC(x=0.001, y=0.016666666666666666, z=0.016666666666666666, a=None, b=None, c=None),) T_1669684806587711953===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.001y0.01667z0.01667f2829.06345\n'===== 0009477770>> b'$j=g91x0.0012y0.02z0.02f2829.06345\n' 0009480103<< 0009486120<< ok ======receiving reply to request relative_jog(32, pos=XYZABC(x=0.0012000000000000001, y=0.02, z=0.02, a=None, b=None, c=None),) T_1669684806598230797===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0012y0.02z0.02f2829.06345\n'===== 0009487140>> b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n' 0009499736<< 0009500205<< ok ======receiving reply to request relative_jog(33, pos=XYZABC(x=0.0014, y=0.023333333333333334, z=0.023333333333333334, a=None, b=None, c=None),) T_1669684806612323891===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n'===== 0009502049>> b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n' 0009504399<< 0009511085<< 0009511513<< ok ======receiving reply to request relative_jog(34, pos=XYZABC(x=0.0016, y=0.02666666666666667, z=0.02666666666666667, a=None, b=None, c=None),) T_1669684806623463933===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n'===== 0009512492>> b'$j=g91x0.0018y0.03z0.03f2829.06345\n' $$$ jog_run running 1 WPos(x=0.005, y=0.095, z=0.095, a=None, b=None, c=None) 0009516132<< 0009522037<< 0009522322<< ok ======receiving reply to request relative_jog(35, pos=XYZABC(x=0.0017999999999999997, y=0.030000000000000002, z=0.030000000000000002, a=None, b=None, c=None),) T_1669684806634255844===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0018y0.03z0.03f2829.06345\n'===== 0009523919>> b'$j=g91x0.002y0.03333z0.03333f2829.06345\n' 0009526761<< 0009533158<< ok ======receiving reply to request relative_jog(36, pos=XYZABC(x=0.0019999999999999996, y=0.03333333333333333, z=0.03333333333333333, a=None, b=None, c=None),) T_1669684806645129847===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.002y0.03333z0.03333f2829.06345\n'===== 0009533986>> b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n' 0009542908<< ok ======receiving reply to request relative_jog(37, pos=XYZABC(x=0.0021999999999999997, y=0.03666666666666667, z=0.03666666666666667, a=None, b=None, c=None),) T_1669684806654899152===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n'===== 0009543808>> b'$j=g91x0.0024y0.04z0.04f2829.06345\n' 0009552152<< ok ======receiving reply to request relative_jog(38, pos=XYZABC(x=0.0023999999999999994, y=0.04, z=0.04, a=None, b=None, c=None),) T_1669684806664103504===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0024y0.04z0.04f2829.06345\n'===== 0009552880>> b'$j=g91x0.0026y0.04333z0.04333f2829.06345\n' 0009561915<< ok ======receiving reply to request relative_jog(39, pos=XYZABC(x=0.0025999999999999994, y=0.043333333333333335, z=0.043333333333333335, a=None, b=None, c=None),) T_1669684806673881849===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0026y0.04333z0.04333f2829.06345\n'===== 0009562962>> b'$j=g91x0.0028y0.04667z0.04667f2829.06345\n' 0009573834<< ok ======receiving reply to request relative_jog(40, pos=XYZABC(x=0.0027999999999999995, y=0.04666666666666667, z=0.04666666666666667, a=None, b=None, c=None),) T_1669684806685913308===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0028y0.04667z0.04667f2829.06345\n'===== 0009575270>> b'$j=g91x0.003y0.05z0.05f2829.06345\n' 0009577676<< 0009584108<< ok ======receiving reply to request relative_jog(41, pos=XYZABC(x=0.0029999999999999996, y=0.05, z=0.05, a=None, b=None, c=None),) T_1669684806696103394===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.003y0.05z0.05f2829.06345\n'===== 0009585671>> b'$j=g91x0.0032y0.05333z0.05333f2829.06345\n' 0009596197<< ok ======receiving reply to request relative_jog(42, pos=XYZABC(x=0.0031999999999999993, y=0.05333333333333334, z=0.05333333333333334, a=None, b=None, c=None),) T_1669684806708200623===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0032y0.05333z0.05333f2829.06345\n'===== 0009597883>> b'$j=g91x0.0034y0.05667z0.05667f2829.06345\n' 0009608203<< ok ======receiving reply to request relative_jog(43, pos=XYZABC(x=0.0033999999999999994, y=0.056666666666666664, z=0.056666666666666664, a=None, b=None, c=None),) T_1669684806720301073===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0034y0.05667z0.05667f2829.06345\n'===== 0009609281>> b'$j=g91x0.0036y0.06z0.06f2829.06345\n' $$$ jog_run running 1 WPos(x=0.02, y=0.295, z=0.295, a=None, b=None, c=None) 0009618451<< ok ======receiving reply to request relative_jog(44, pos=XYZABC(x=0.003599999999999999, y=0.060000000000000005, z=0.060000000000000005, a=None, b=None, c=None),) T_1669684806730490277===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0036y0.06z0.06f2829.06345\n'===== 0009620368>> b'$j=g91x0.0038y0.06333z0.06333f2829.06345\n' 0009627996<< 0009630190<< ok ======receiving reply to request relative_jog(45, pos=XYZABC(x=0.003799999999999999, y=0.06333333333333334, z=0.06333333333333334, a=None, b=None, c=None),) T_1669684806742289060===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0038y0.06333z0.06333f2829.06345\n'===== 0009631290>> b'$j=g91x0.004y0.06667z0.06667f2829.06345\n' 0009639982<< ok ======receiving reply to request relative_jog(46, pos=XYZABC(x=0.003999999999999999, y=0.06666666666666667, z=0.06666666666666667, a=None, b=None, c=None),) T_1669684806752085697===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.004y0.06667z0.06667f2829.06345\n'===== 0009641000>> b'$j=g91x0.0042y0.07z0.07f2829.06345\n' 0009649370<< ok ======receiving reply to request relative_jog(47, pos=XYZABC(x=0.004199999999999999, y=0.07, z=0.07, a=None, b=None, c=None),) T_1669684806761453364===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0042y0.07z0.07f2829.06345\n'===== 0009650623>> b'$j=g91x0.0044y0.07333z0.07333f2829.06345\n' 0009660261<< ok ======receiving reply to request relative_jog(48, pos=XYZABC(x=0.0043999999999999985, y=0.07333333333333333, z=0.07333333333333333, a=None, b=None, c=None),) T_1669684806772363158===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0044y0.07333z0.07333f2829.06345\n'===== 0009661424>> b'$j=g91x0.0046y0.07667z0.07667f2829.06345\n' 0009671247<< ok ======receiving reply to request relative_jog(49, pos=XYZABC(x=0.004599999999999998, y=0.07666666666666667, z=0.07666666666666667, a=None, b=None, c=None),) T_1669684806783441030===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0046y0.07667z0.07667f2829.06345\n'===== 0009672368>> b'$j=g91x0.0048y0.08z0.08f2829.06345\n' 0009679559<< 0009681416<< ok ======receiving reply to request relative_jog(50, pos=XYZABC(x=0.004799999999999999, y=0.08, z=0.08, a=None, b=None, c=None),) T_1669684806793531315===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0048y0.08z0.08f2829.06345\n'===== 0009683439>> b'$j=g91x0.005y0.08333z0.08333f2829.06345\n' 0009693200<< ok ======receiving reply to request relative_jog(51, pos=XYZABC(x=0.004999999999999998, y=0.08333333333333333, z=0.08333333333333333, a=None, b=None, c=None),) T_1669684806805356381===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.005y0.08333z0.08333f2829.06345\n'===== 0009694302>> b'$j=g91x0.0052y0.08667z0.08667f2829.06345\n' 0009704340<< ok ======receiving reply to request relative_jog(52, pos=XYZABC(x=0.005199999999999998, y=0.08666666666666667, z=0.08666666666666667, a=None, b=None, c=None),) T_1669684806816523943===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0052y0.08667z0.08667f2829.06345\n'===== 0009706274>> b'$j=g91x0.0054y0.09z0.09f2829.06345\n' 0009715254<< ok ======receiving reply to request relative_jog(53, pos=XYZABC(x=0.0053999999999999986, y=0.09000000000000001, z=0.09000000000000001, a=None, b=None, c=None),) T_1669684806827366325===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0054y0.09z0.09f2829.06345\n'===== 0009716314>> b'$j=g91x0.0056y0.09333z0.09333f2829.06345\n' $$$ jog_run running 1 WPos(x=0.045, y=0.77, z=0.77, a=None, b=None, c=None) 0009725585<< ok ======receiving reply to request relative_jog(54, pos=XYZABC(x=0.005599999999999999, y=0.09333333333333334, z=0.09333333333333334, a=None, b=None, c=None),) T_1669684806837707812===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0056y0.09333z0.09333f2829.06345\n'===== 0009727472>> b'$j=g91x0.0058y0.09667z0.09667f2829.06345\n' 0009729593<< 0009737246<< ok ======receiving reply to request relative_jog(55, pos=XYZABC(x=0.0058, y=0.09666666666666666, z=0.09666666666666666, a=None, b=None, c=None),) T_1669684806849387627===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0058y0.09667z0.09667f2829.06345\n'===== 0009738351>> b'$j=g91x0.006y0.1z0.1f2829.06345\n' 0009746422<< ok ======receiving reply to request relative_jog(56, pos=XYZABC(x=0.006, y=0.1, z=0.1, a=None, b=None, c=None),) T_1669684806858581649===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.006y0.1z0.1f2829.06345\n'===== 0009748075>> b'$j=g91x0.0062y0.10333z0.10333f2829.06345\n' 0009758381<< ok ======receiving reply to request relative_jog(57, pos=XYZABC(x=0.006200000000000001, y=0.10333333333333333, z=0.10333333333333333, a=None, b=None, c=None),) T_1669684806870529771===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0062y0.10333z0.10333f2829.06345\n'===== 0009759672>> b'$j=g91x0.0064y0.10667z0.10667f2829.06345\n' 0009770154<< ok ======receiving reply to request relative_jog(58, pos=XYZABC(x=0.006400000000000001, y=0.10666666666666667, z=0.10666666666666667, a=None, b=None, c=None),) T_1669684806882111721===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0064y0.10667z0.10667f2829.06345\n'===== 0009770880>> b'$j=g91x0.0066y0.11z0.11f2829.06345\n' 0009780773<< 0009781191<< ok ======receiving reply to request relative_jog(59, pos=XYZABC(x=0.006600000000000001, y=0.11000000000000001, z=0.11000000000000001, a=None, b=None, c=None),) T_1669684806893290498===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0066y0.11z0.11f2829.06345\n'===== 0009782231>> b'$j=g91x0.0068y0.11333z0.11333f2829.06345\n' 0009792429<< ok ======receiving reply to request relative_jog(60, pos=XYZABC(x=0.006800000000000002, y=0.11333333333333333, z=0.11333333333333333, a=None, b=None, c=None),) T_1669684806904564245===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0068y0.11333z0.11333f2829.06345\n'===== 0009794004>> b'$j=g91x0.007y0.11667z0.11667f2829.06345\n' 0009804368<< ok ======receiving reply to request relative_jog(61, pos=XYZABC(x=0.007000000000000003, y=0.11666666666666667, z=0.11666666666666667, a=None, b=None, c=None),) T_1669684806916478180===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.007y0.11667z0.11667f2829.06345\n'===== 0009806452>> b'$j=g91x0.0072y0.12z0.12f2829.06345\n' 0009815291<< ok ======receiving reply to request relative_jog(62, pos=XYZABC(x=0.007200000000000002, y=0.12000000000000001, z=0.12000000000000001, a=None, b=None, c=None),) T_1669684806927390684===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0072y0.12z0.12f2829.06345\n'===== 0009817394>> b'$j=g91x0.0074y0.12333z0.12333f2829.06345\n' $$$ MachineServer().jog_stop() $$$ send_jog_cancel() 0009827782<< ok ======receiving reply to request relative_jog(63, pos=XYZABC(x=0.007400000000000004, y=0.12333333333333334, z=0.12333333333333334, a=None, b=None, c=None),) T_1669684806939872559===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0074y0.12333z0.12333f2829.06345\n'===== 0009831723<< 0009849857>> b'\x85' $$$ END jog_stop() 100 $$$ jog_run() $$$ jog_running 0009852747>> b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n' 0009881849<< 0009912426<< ok ======receiving reply to request relative_jog(65, pos=XYZABC(x=0.0002, y=0.0033333333333333335, z=0.0033333333333333335, a=None, b=None, c=None),) T_1669684807024501811===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0002y0.00333z0.00333f2829.06345\n'===== 0009913746>> b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n' 0009919970<< 0009922549<< ok ======receiving reply to request relative_jog(66, pos=XYZABC(x=0.0004, y=0.006666666666666667, z=0.006666666666666667, a=None, b=None, c=None),) T_1669684807034488605===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0004y0.00667z0.00667f2829.06345\n'===== 0009923339>> b'$j=g91x0.0006y0.01z0.01f2829.06345\n' 0009925294<< 0009932590<< 0009932914<< ok ======receiving reply to request relative_jog(67, pos=XYZABC(x=0.0006, y=0.01, z=0.01, a=None, b=None, c=None),) T_1669684807044818872===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0006y0.01z0.01f2829.06345\n'===== 0009934162>> b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n' 0009936647<< 0009943360<< 0009943650<< ok ======receiving reply to request relative_jog(68, pos=XYZABC(x=0.0008, y=0.013333333333333334, z=0.013333333333333334, a=None, b=None, c=None),) T_1669684807055563738===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0008y0.01333z0.01333f2829.06345\n'===== 0009944522>> b'$j=g91x0.001y0.01667z0.01667f2829.06345\n' 0009949460<< 0009953070<< 0009953368<< ok ======receiving reply to request relative_jog(69, pos=XYZABC(x=0.001, y=0.016666666666666666, z=0.016666666666666666, a=None, b=None, c=None),) T_1669684807065268326===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.001y0.01667z0.01667f2829.06345\n'===== 0009954444>> b'$j=g91x0.0012y0.02z0.02f2829.06345\n' 0009960225<< 0009963122<< ok ======receiving reply to request relative_jog(70, pos=XYZABC(x=0.0012000000000000001, y=0.02, z=0.02, a=None, b=None, c=None),) T_1669684807075215008===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0012y0.02z0.02f2829.06345\n'===== 0009964972>> b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n' 0009974859<< ok ======receiving reply to request relative_jog(71, pos=XYZABC(x=0.0014, y=0.023333333333333334, z=0.023333333333333334, a=None, b=None, c=None),) T_1669684807086907339===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0014y0.02333z0.02333f2829.06345\n'===== 0009976176>> b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n' 0009977796<< 0009982309<< 0009985770<< ok ======receiving reply to request relative_jog(72, pos=XYZABC(x=0.0016, y=0.02666666666666667, z=0.02666666666666667, a=None, b=None, c=None),) T_1669684807097712325===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0016y0.02667z0.02667f2829.06345\n'===== 0009986676>> b'$j=g91x0.0018y0.03z0.03f2829.06345\n' 0009989729<< 0009996149<< 0009996389<< ok ======receiving reply to request relative_jog(73, pos=XYZABC(x=0.0017999999999999997, y=0.030000000000000002, z=0.030000000000000002, a=None, b=None, c=None),) T_1669684807108287554===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0018y0.03z0.03f2829.06345\n'===== 0009997130>> b'$j=g91x0.002y0.03333z0.03333f2829.06345\n' 0010000870<< 0010006154<< ok ======receiving reply to request relative_jog(74, pos=XYZABC(x=0.0019999999999999996, y=0.03333333333333333, z=0.03333333333333333, a=None, b=None, c=None),) T_1669684807118146915===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.002y0.03333z0.03333f2829.06345\n'===== 0010007261>> b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n' 0010017299<< ok ======receiving reply to request relative_jog(75, pos=XYZABC(x=0.0021999999999999997, y=0.03666666666666667, z=0.03666666666666667, a=None, b=None, c=None),) T_1669684807129450516===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0022y0.03667z0.03667f2829.06345\n'===== 0010018778>> b'$j=g91x0.0024y0.04z0.04f2829.06345\n' 0010027329<< ok ======receiving reply to request relative_jog(76, pos=XYZABC(x=0.0023999999999999994, y=0.04, z=0.04, a=None, b=None, c=None),) T_1669684807139445847===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0024y0.04z0.04f2829.06345\n'===== 0010029079>> b'$j=g91x0.0026y0.04333z0.04333f2829.06345\n' 0010038133<< ok ======receiving reply to request relative_jog(77, pos=XYZABC(x=0.0025999999999999994, y=0.043333333333333335, z=0.043333333333333335, a=None, b=None, c=None),) T_1669684807150359666===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0026y0.04333z0.04333f2829.06345\n'===== 0010039830>> b'$j=g91x0.0028y0.04667z0.04667f2829.06345\n' 0010051562<< 0010051892<< ok ======receiving reply to request relative_jog(78, pos=XYZABC(x=0.0027999999999999995, y=0.04666666666666667, z=0.04666666666666667, a=None, b=None, c=None),) T_1669684807164000698===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.0028y0.04667z0.04667f2829.06345\n'===== 0010054139>> b'$j=g91x0.003y0.05z0.05f2829.06345\n' 0010062718<< ok ======receiving reply to request relative_jog(79, pos=XYZABC(x=0.0029999999999999996, y=0.05, z=0.05, a=None, b=None, c=None),) T_1669684807174725416===== ======RECEIVED GRBL REPLY TO REQUEST: b'$j=g91x0.003y0.05z0.05f2829.06345\n'===== 0010064054>> b'$j=g91x0.0032y0.05333z0.05333f2829.06345\n' 0010065680<< 0010071989<< 0010074528<< error:8 !!error_note!! error: RECEIVED ERROR: Command requires idle state MachineServer() 0010081655<< $$$ MachineServer().jog_stop() $$$ send_jog_cancel() $$$ SHUTTING DOWN: MachineServer $$$ MachineServer().jog_stop() $$$ send_jog_cancel() $$$ stop_track_status() $$$ stop_read_loop() $$$ SerialConn(1669684803.1).disconnect() ```
ipsod commented 1 year ago

I've written a python script that induces this error (on my machine). It's not waiting for "ok" in any sense, but this is just replaying a captured session which did. Note that the error will likely be buried in further output, since the sending part isn't aware of the receiving part. You can find it in the output easily by searching for 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)
MitchBradley commented 1 year ago

The first Run message appears when the X value finally changes from 0.000 to 0.005. In the preceding jog commands, the X offset is smaller - sometimes much smaller - than the size of a machine step (.005). I will keep investigating, but I do not see the point of issuing jogs for less than a step size.

ipsod commented 1 year ago

The first Run message appears when the X value finally changes from 0.000 to 0.005. In the preceding jog commands, the X offset is smaller - sometimes much smaller - than the size of a machine step (.005). I will keep investigating, but I do not see the point of issuing jogs for less than a step size.

Well, the intent is to implement GRBL1.1 jogging with independent speeds on multiple axes, and these really short motions happen when a faster axis is running along with a slower axis. I'm not sure what sort of checks/whatever to implement to avoid that - I guess that all of the shorter motions will be grouped at the beginning/end of a motion, anyhow, so maybe I could just omit them without worrying about how it might effect the rest of the motion.

Are these short commands ignored entirely, or does 0.0025 + 0.0025 = 0.005? Likewise, is 1.0025 == 1.000? Also, is 0.005 machine step a universal constant, or is it specific to my configuration?

MitchBradley commented 1 year ago

200 steps/mm = 0.005 mm/step

ipsod commented 1 year ago

I see. Below are the results of some experiments I did.

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>

partial steps followed by a full step do not (always?) cause error

$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>

Please let me know if there's anything further I can do to move this along.

MitchBradley commented 1 year ago

It is a multi-core synchronization problem. I am working on a fix.

ipsod commented 1 year ago

Great, thank you. Good hunting.