bdring / FluidNC

The next generation of motion control firmware
Other
1.61k stars 383 forks source link

Problem: G93 timing inaccurate #1372

Open AndreasEpp opened 1 week ago

AndreasEpp commented 1 week ago

Wiki Search Terms

G93, feedrate, inverse

Controller Board

ESP32 WROOM-32

Machine Description

Two naked boards without any periphery connected except two probes to my oscilloscope to measure the timing. One machine is configured with 4 axis and the other one is configured with 1 axis (plus two dummy ones). Both machines have user output pins defined. I toggle these pins at the start and end of the program to measure timing with my oscilloscope.

I have pasted both my config files in the config file section

PXL_20241106_083504564

Input Circuits

Two naked boards without any periphery connected except two probes to my oscilloscope to measure the timing.

Configuration file

#########################################
# first config file
board: ESPDUINO-32
name: PANTS

user_outputs:
  digital0_pin: gpio.2
  digital1_pin: gpio.4

axes:
  shared_stepper_disable_pin: gpio.12:high
  x:
    steps_per_mm: 160
    max_rate_mm_per_min: 10000
    acceleration_mm_per_sec2: 500
    max_travel_mm: 1000
    motor0:
      stepstick:
        direction_pin: gpio.16:low
        step_pin: gpio.26

  y:
    steps_per_mm: 257.777
    max_rate_mm_per_min: 10000
    acceleration_mm_per_sec2: 500
    max_travel_mm: 1000
    motor0:
      stepstick:
        direction_pin: gpio.27
        step_pin: gpio.25

  z:
    steps_per_mm: 257.777
    max_rate_mm_per_min: 10000
    acceleration_mm_per_sec2: 500
    max_travel_mm: 1000
    motor0:
      stepstick:
        direction_pin: gpio.14:low
        step_pin: gpio.17

  a:
    steps_per_mm: 44.444
    max_rate_mm_per_min: 40000
    acceleration_mm_per_sec2: 3000
    motor0:
      stepstick:
        direction_pin: gpio.18
        step_pin: gpio.19

##############################
# second config file
board: Wemos D1 mini
name: Rotodactyl

user_outputs:
  digital0_pin: gpio.2
  digital1_pin: gpio.4

axes:
  shared_stepper_disable_pin: gpio.27:high

  x:
    steps_per_mm: 113.333
    max_rate_mm_per_min: 16900
    acceleration_mm_per_sec2: 500

    motor0:
      limit_all_pin: NO_PIN
      stepstick:
        direction_pin: gpio.32
        step_pin: gpio.25

Startup Messages

#########################
# First startup message #
#########################
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13260
load:0x40080400,len:3028
entry 0x400805e4
[MSG:INFO: uart_channel0 created]
[MSG:RST]
[MSG:INFO: FluidNC v3.9.1 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.7-dirty]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:INFO: Machine PANTS]
[MSG:INFO: Board ESPDUINO-32]
[MSG:INFO: Stepping:RMT Pulse:4us Dsbl Delay:0us Dir Delay:0us Idle Delay:255ms]
[MSG:INFO: User Digital Output: 0 on Pin:gpio.2]
[MSG:INFO: User Digital Output: 1 on Pin:gpio.4]
[MSG:INFO: Axis count 4]
[MSG:INFO: Shared stepper disable gpio.12]
[MSG:INFO: Axis X (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.26 Dir:gpio.16:low Disable:NO_PIN]
[MSG:INFO: Axis Y (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.25 Dir:gpio.27 Disable:NO_PIN]
[MSG:INFO: Axis Z (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.17 Dir:gpio.14:low Disable:NO_PIN]
[MSG:INFO: Axis A (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.19 Dir:gpio.18 Disable:NO_PIN]
[MSG:INFO: Kinematic system: Cartesian]
[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.9 [FluidNC v3.9.1 (wifi) '$' for help]

##########################
# second startup message #
##########################

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13260
load:0x40080400,len:3028
entry 0x400805e4
[MSG:INFO: uart_channel0 created]
[MSG:RST]
[MSG:INFO: FluidNC v3.9.1 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.7-dirty]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:INFO: Machine Rotodactyl]
[MSG:INFO: Board Wemos D1 mini]
[MSG:INFO: Stepping:RMT Pulse:4us Dsbl Delay:0us Dir Delay:0us Idle Delay:255ms]
[MSG:INFO: User Digital Output: 0 on Pin:gpio.2]
[MSG:INFO: User Digital Output: 1 on Pin:gpio.4]
[MSG:INFO: Axis count 3]
[MSG:INFO: Shared stepper disable gpio.27]
[MSG:INFO: Axis X (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:gpio.25 Dir:gpio.32 Disable:NO_PIN]
[MSG:INFO: Axis Y (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO: Axis Z (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO: Kinematic system: Cartesian]
[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.9 [FluidNC v3.9.1 (wifi) '$' for help]

User Interface Software

FluidTerm, custom python program

What happened?

I create two gcode files with the same amount of moves. All moves are G93 inverse feedrate moves and have the same duration. The only difference is that one file has four axes and the other has only one. At the begin and ending of both programs I toggle a user output pin to measure timing between the two controllers with my oscilloscope. I upload the files to the controllers via xmodem and start them with $LocalFS/Run=moco.nc . I send the start command to both controllers via custom python code. The first pulse that indicates the start of the program has a deviation of about 2ms between controller 1 and controller 2. The second pulse has as a deviation of 1.3 seconds between controllers. The whole program runs for 7.1 seconds on controller two, executing 200 moves. Each move should take 41.7ms (1/24 s). All moves should therefore take 8.33s . Controller one finishes correctly in 8.3s.

DS1Z_QuickPrint2

GCode File

first gcode file

G94 G0X0.00Z89.00Y-90.00A100.00 G93 M62 P1 G4 P0.1 M63 P1 G1X0.00Z89.00Y-90.00A100.00F1440.00 G1X0.00Z89.00Y-90.00A100.00F1440.00 G1X0.35Z89.00Y-90.00A100.00F1440.00 G1X0.70Z89.00Y-90.00A100.00F1440.00 G1X1.06Z89.00Y-90.00A100.00F1440.00 G1X1.43Z89.00Y-90.00A100.01F1440.00 G1X1.81Z89.00Y-90.00A100.01F1440.00 G1X2.19Z89.00Y-90.00A100.02F1440.00 G1X2.57Z89.00Y-90.00A100.02F1440.00 G1X2.97Z89.00Y-90.00A100.03F1440.00 G1X3.37Z89.00Y-90.00A100.04F1440.00 G1X3.77Z89.00Y-90.00A100.05F1440.00 G1X4.18Z88.99Y-90.00A100.06F1440.00 G1X4.60Z88.99Y-90.00A100.07F1440.00 G1X5.02Z88.99Y-90.00A100.08F1440.00 G1X5.45Z88.99Y-90.00A100.09F1440.00 G1X5.88Z88.99Y-90.00A100.11F1440.00 G1X6.32Z88.99Y-90.00A100.12F1440.00 G1X6.76Z88.99Y-90.00A100.14F1440.00 G1X7.21Z88.99Y-90.00A100.15F1440.00 G1X7.66Z88.99Y-90.00A100.17F1440.00 G1X8.12Z88.99Y-90.00A100.19F1440.00 G1X8.58Z88.99Y-90.00A100.21F1440.00 G1X9.04Z88.99Y-90.00A100.23F1440.00 G1X9.52Z88.99Y-90.00A100.25F1440.00 G1X9.99Z88.99Y-90.00A100.27F1440.00 G1X10.47Z88.99Y-90.00A100.29F1440.00 G1X10.96Z88.99Y-90.00A100.31F1440.00 G1X11.44Z88.99Y-90.00A100.34F1440.00 G1X11.94Z88.99Y-90.00A100.36F1440.00 G1X12.43Z88.99Y-90.00A100.39F1440.00 G1X12.93Z88.99Y-90.00A100.42F1440.00 G1X13.44Z88.99Y-90.00A100.44F1440.00 G1X13.95Z88.99Y-90.00A100.47F1440.00 G1X14.46Z88.98Y-90.00A100.50F1440.00 G1X14.97Z88.98Y-90.00A100.53F1440.00 G1X15.49Z88.98Y-90.00A100.56F1440.00 G1X16.02Z88.98Y-90.00A100.60F1440.00 G1X16.54Z88.98Y-90.00A100.63F1440.00 G1X17.07Z88.98Y-90.00A100.66F1440.00 G1X17.61Z88.98Y-90.00A100.70F1440.00 G1X18.14Z88.98Y-90.00A100.73F1440.00 G1X18.68Z88.98Y-90.00A100.77F1440.00 G1X19.23Z88.98Y-90.00A100.81F1440.00 G1X19.77Z88.98Y-90.00A100.84F1440.00 G1X20.32Z88.98Y-90.00A100.88F1440.00 G1X20.88Z88.98Y-90.00A100.92F1440.00 G1X21.43Z88.98Y-90.00A100.96F1440.00 G1X21.99Z88.98Y-90.00A101.00F1440.00 G1X22.55Z88.98Y-90.00A101.05F1440.00 G1X23.12Z88.98Y-90.00A101.09F1440.00 G1X23.69Z88.97Y-90.00A101.13F1440.00 G1X24.26Z88.97Y-90.00A101.18F1440.00 G1X24.83Z88.97Y-90.00A101.22F1440.00 G1X25.41Z88.97Y-90.00A101.27F1440.00 G1X25.99Z88.97Y-90.00A101.32F1440.00 G1X26.57Z88.97Y-90.00A101.36F1440.00 G1X27.15Z88.97Y-90.00A101.41F1440.00 G1X27.74Z88.97Y-90.00A101.46F1440.00 G1X28.33Z88.97Y-90.00A101.51F1440.00 G1X28.92Z88.97Y-90.00A101.56F1440.00 G1X29.52Z88.97Y-90.00A101.61F1440.00 G1X30.12Z88.97Y-90.00A101.66F1440.00 G1X30.72Z88.97Y-90.00A101.72F1440.00 G1X31.32Z88.97Y-90.00A101.77F1440.00 G1X31.92Z88.97Y-90.00A101.83F1440.00 G1X32.53Z88.97Y-90.00A101.88F1440.00 G1X33.14Z88.96Y-90.00A101.94F1440.00 G1X33.75Z88.96Y-90.00A101.99F1440.00 G1X34.36Z88.96Y-90.00A102.05F1440.00 G1X34.98Z88.96Y-90.00A102.11F1440.00 G1X35.60Z88.96Y-90.00A102.17F1440.00 G1X36.22Z88.96Y-90.00A102.23F1440.00 G1X36.84Z88.96Y-90.00A102.29F1440.00 G1X37.47Z88.96Y-90.00A102.35F1440.00 G1X38.10Z88.96Y-90.00A102.41F1440.00 G1X38.73Z88.96Y-90.00A102.47F1440.00 G1X39.36Z88.96Y-90.00A102.54F1440.00 G1X39.99Z88.96Y-90.00A102.60F1440.00 G1X40.63Z88.96Y-90.00A102.67F1440.00 G1X41.26Z88.96Y-90.00A102.73F1440.00 G1X41.90Z88.96Y-90.00A102.80F1440.00 G1X42.54Z88.95Y-90.00A102.87F1440.00 G1X43.19Z88.95Y-90.00A102.93F1440.00 G1X43.83Z88.95Y-90.00A103.00F1440.00 G1X44.48Z88.95Y-90.00A103.07F1440.00 G1X45.13Z88.95Y-90.00A103.14F1440.00 G1X45.78Z88.95Y-90.00A103.21F1440.00 G1X46.43Z88.95Y-90.00A103.28F1440.00 G1X47.09Z88.95Y-90.00A103.35F1440.00 G1X47.74Z88.95Y-90.00A103.43F1440.00 G1X48.40Z88.95Y-90.00A103.50F1440.00 G1X49.06Z88.95Y-90.00A103.57F1440.00 G1X49.72Z88.95Y-90.00A103.65F1440.00 G1X50.38Z88.95Y-90.00A103.72F1440.00 G1X51.05Z88.95Y-90.00A103.80F1440.00 G1X51.72Z88.94Y-90.00A103.88F1440.00 G1X52.38Z88.94Y-90.00A103.95F1440.00 G1X53.05Z88.94Y-90.00A104.03F1440.00 G1X53.72Z88.94Y-90.00A104.11F1440.00 G1X54.40Z88.94Y-90.00A104.19F1440.00 G1X55.07Z88.94Y-90.00A104.27F1440.00 G1X55.75Z88.94Y-90.00A104.35F1440.00 G1X56.43Z88.94Y-90.00A104.43F1440.00 G1X57.10Z88.94Y-90.00A104.51F1440.00 G1X57.79Z88.94Y-90.00A104.59F1440.00 G1X58.47Z88.94Y-90.00A104.68F1440.00 G1X59.15Z88.94Y-90.00A104.76F1440.00 G1X59.84Z88.94Y-90.00A104.85F1440.00 G1X60.52Z88.93Y-90.00A104.93F1440.00 G1X61.21Z88.93Y-90.00A105.02F1440.00 G1X61.90Z88.93Y-90.00A105.10F1440.00 G1X62.59Z88.93Y-90.00A105.19F1440.00 G1X63.28Z88.93Y-90.00A105.28F1440.00 G1X63.98Z88.93Y-90.00A105.36F1440.00 G1X64.67Z88.93Y-90.00A105.45F1440.00 G1X65.37Z88.93Y-90.00A105.54F1440.00 G1X66.06Z88.93Y-90.00A105.63F1440.00 G1X66.76Z88.93Y-90.00A105.72F1440.00 G1X67.46Z88.93Y-90.00A105.81F1440.00 G1X68.16Z88.93Y-90.00A105.90F1440.00 G1X68.87Z88.93Y-90.00A106.00F1440.00 G1X69.57Z88.92Y-90.00A106.09F1440.00 G1X70.28Z88.92Y-90.00A106.18F1440.00 G1X70.98Z88.92Y-90.00A106.28F1440.00 G1X71.69Z88.92Y-90.00A106.37F1440.00 G1X72.40Z88.92Y-90.00A106.47F1440.00 G1X73.11Z88.92Y-90.00A106.56F1440.00 G1X73.82Z88.92Y-90.00A106.66F1440.00 G1X74.53Z88.92Y-90.00A106.75F1440.00 G1X75.25Z88.92Y-90.00A106.85F1440.00 G1X75.96Z88.92Y-90.00A106.95F1440.00 G1X76.68Z88.92Y-90.00A107.05F1440.00 G1X77.39Z88.92Y-90.00A107.15F1440.00 G1X78.11Z88.91Y-90.00A107.25F1440.00 G1X78.83Z88.91Y-90.00A107.35F1440.00 G1X79.55Z88.91Y-90.00A107.45F1440.00 G1X80.27Z88.91Y-90.00A107.55F1440.00 G1X81.00Z88.91Y-90.00A107.65F1440.00 G1X81.72Z88.91Y-90.00A107.75F1440.00 G1X82.45Z88.91Y-90.00A107.85F1440.00 G1X83.17Z88.91Y-90.00A107.96F1440.00 G1X83.90Z88.91Y-90.00A108.06F1440.00 G1X84.63Z88.91Y-90.00A108.16F1440.00 G1X85.36Z88.91Y-90.00A108.27F1440.00 G1X86.09Z88.90Y-90.00A108.37F1440.00 G1X86.82Z88.90Y-90.00A108.48F1440.00 G1X87.55Z88.90Y-90.00A108.59F1440.00 G1X88.28Z88.90Y-90.00A108.69F1440.00 G1X89.02Z88.90Y-90.00A108.80F1440.00 G1X89.75Z88.90Y-90.00A108.91F1440.00 G1X90.49Z88.90Y-90.00A109.02F1440.00 G1X91.22Z88.90Y-90.00A109.12F1440.00 G1X91.96Z88.90Y-90.00A109.23F1440.00 G1X92.70Z88.90Y-90.00A109.34F1440.00 G1X93.44Z88.90Y-90.00A109.45F1440.00 G1X94.18Z88.90Y-90.00A109.56F1440.00 G1X94.92Z88.89Y-90.00A109.67F1440.00 G1X95.66Z88.89Y-90.00A109.79F1440.00 G1X96.41Z88.89Y-90.00A109.90F1440.00 G1X97.15Z88.89Y-90.00A110.01F1440.00 G1X97.90Z88.89Y-90.00A110.12F1440.00 G1X98.64Z88.89Y-90.00A110.24F1440.00 G1X99.39Z88.89Y-90.00A110.35F1440.00 G1X100.14Z88.89Y-90.00A110.46F1440.00 G1X100.88Z88.89Y-90.00A110.58F1440.00 G1X101.63Z88.89Y-90.00A110.69F1440.00 G1X102.38Z88.89Y-90.00A110.81F1440.00 G1X103.14Z88.88Y-90.00A110.93F1440.00 G1X103.89Z88.88Y-90.00A111.04F1440.00 G1X104.64Z88.88Y-90.00A111.16F1440.00 G1X105.39Z88.88Y-90.00A111.28F1440.00 G1X106.15Z88.88Y-90.00A111.39F1440.00 G1X106.90Z88.88Y-90.00A111.51F1440.00 G1X107.66Z88.88Y-90.00A111.63F1440.00 G1X108.41Z88.88Y-90.00A111.75F1440.00 G1X109.17Z88.88Y-90.00A111.87F1440.00 G1X109.93Z88.88Y-90.00A111.99F1440.00 G1X110.69Z88.87Y-90.00A112.11F1440.00 G1X111.45Z88.87Y-90.00A112.23F1440.00 G1X112.21Z88.87Y-90.00A112.35F1440.00 G1X112.97Z88.87Y-90.00A112.47F1440.00 G1X113.73Z88.87Y-90.00A112.59F1440.00 G1X114.49Z88.87Y-90.00A112.72F1440.00 G1X115.26Z88.87Y-90.00A112.84F1440.00 G1X116.02Z88.87Y-90.00A112.96F1440.00 G1X116.79Z88.87Y-90.00A113.09F1440.00 G1X117.55Z88.87Y-90.00A113.21F1440.00 G1X118.32Z88.86Y-90.00A113.33F1440.00 G1X119.08Z88.86Y-90.00A113.46F1440.00 G1X119.85Z88.86Y-90.00A113.58F1440.00 G1X120.62Z88.86Y-90.00A113.71F1440.00 G1X121.39Z88.86Y-90.00A113.83F1440.00 G1X122.16Z88.86Y-90.00A113.96F1440.00 G1X122.93Z88.86Y-90.00A114.09F1440.00 G1X123.70Z88.86Y-90.00A114.21F1440.00 G1X124.47Z88.86Y-90.00A114.34F1440.00 G1X125.24Z88.86Y-90.00A114.47F1440.00 G1X126.02Z88.85Y-90.00A114.59F1440.00 G1X126.79Z88.85Y-90.00A114.72F1440.00 M62 P1 G4 P0.1 M63 P1

second gcode file

G94 G0X104.80 G93 M62 P1 G4 P0.1 M63 P1 G1X104.80F1440.00 G1X104.80F1440.00 G1X104.81F1440.00 G1X104.82F1440.00 G1X104.83F1440.00 G1X104.83F1440.00 G1X104.84F1440.00 G1X104.85F1440.00 G1X104.86F1440.00 G1X104.86F1440.00 G1X104.87F1440.00 G1X104.88F1440.00 G1X104.89F1440.00 G1X104.90F1440.00 G1X104.91F1440.00 G1X104.91F1440.00 G1X104.92F1440.00 G1X104.93F1440.00 G1X104.94F1440.00 G1X104.95F1440.00 G1X104.96F1440.00 G1X104.97F1440.00 G1X104.98F1440.00 G1X104.99F1440.00 G1X105.00F1440.00 G1X105.01F1440.00 G1X105.02F1440.00 G1X105.03F1440.00 G1X105.04F1440.00 G1X105.05F1440.00 G1X105.06F1440.00 G1X105.07F1440.00 G1X105.08F1440.00 G1X105.09F1440.00 G1X105.10F1440.00 G1X105.11F1440.00 G1X105.12F1440.00 G1X105.13F1440.00 G1X105.15F1440.00 G1X105.16F1440.00 G1X105.17F1440.00 G1X105.18F1440.00 G1X105.19F1440.00 G1X105.20F1440.00 G1X105.21F1440.00 G1X105.23F1440.00 G1X105.24F1440.00 G1X105.25F1440.00 G1X105.26F1440.00 G1X105.27F1440.00 G1X105.29F1440.00 G1X105.30F1440.00 G1X105.31F1440.00 G1X105.32F1440.00 G1X105.34F1440.00 G1X105.35F1440.00 G1X105.36F1440.00 G1X105.37F1440.00 G1X105.39F1440.00 G1X105.40F1440.00 G1X105.41F1440.00 G1X105.43F1440.00 G1X105.44F1440.00 G1X105.45F1440.00 G1X105.46F1440.00 G1X105.48F1440.00 G1X105.49F1440.00 G1X105.51F1440.00 G1X105.52F1440.00 G1X105.53F1440.00 G1X105.55F1440.00 G1X105.56F1440.00 G1X105.57F1440.00 G1X105.59F1440.00 G1X105.60F1440.00 G1X105.62F1440.00 G1X105.63F1440.00 G1X105.64F1440.00 G1X105.66F1440.00 G1X105.67F1440.00 G1X105.69F1440.00 G1X105.70F1440.00 G1X105.72F1440.00 G1X105.73F1440.00 G1X105.75F1440.00 G1X105.76F1440.00 G1X105.77F1440.00 G1X105.79F1440.00 G1X105.80F1440.00 G1X105.82F1440.00 G1X105.83F1440.00 G1X105.85F1440.00 G1X105.87F1440.00 G1X105.88F1440.00 G1X105.90F1440.00 G1X105.91F1440.00 G1X105.93F1440.00 G1X105.94F1440.00 G1X105.96F1440.00 G1X105.97F1440.00 G1X105.99F1440.00 G1X106.01F1440.00 G1X106.02F1440.00 G1X106.04F1440.00 G1X106.05F1440.00 G1X106.07F1440.00 G1X106.09F1440.00 G1X106.10F1440.00 G1X106.12F1440.00 G1X106.14F1440.00 G1X106.15F1440.00 G1X106.17F1440.00 G1X106.18F1440.00 G1X106.20F1440.00 G1X106.22F1440.00 G1X106.23F1440.00 G1X106.25F1440.00 G1X106.27F1440.00 G1X106.29F1440.00 G1X106.30F1440.00 G1X106.32F1440.00 G1X106.34F1440.00 G1X106.35F1440.00 G1X106.37F1440.00 G1X106.39F1440.00 G1X106.41F1440.00 G1X106.42F1440.00 G1X106.44F1440.00 G1X106.46F1440.00 G1X106.48F1440.00 G1X106.49F1440.00 G1X106.51F1440.00 G1X106.53F1440.00 G1X106.55F1440.00 G1X106.57F1440.00 G1X106.58F1440.00 G1X106.60F1440.00 G1X106.62F1440.00 G1X106.64F1440.00 G1X106.66F1440.00 G1X106.68F1440.00 G1X106.70F1440.00 G1X106.71F1440.00 G1X106.73F1440.00 G1X106.75F1440.00 G1X106.77F1440.00 G1X106.79F1440.00 G1X106.81F1440.00 G1X106.83F1440.00 G1X106.85F1440.00 G1X106.86F1440.00 G1X106.88F1440.00 G1X106.90F1440.00 G1X106.92F1440.00 G1X106.94F1440.00 G1X106.96F1440.00 G1X106.98F1440.00 G1X107.00F1440.00 G1X107.02F1440.00 G1X107.04F1440.00 G1X107.06F1440.00 G1X107.08F1440.00 G1X107.10F1440.00 G1X107.12F1440.00 G1X107.14F1440.00 G1X107.16F1440.00 G1X107.18F1440.00 G1X107.20F1440.00 G1X107.22F1440.00 G1X107.24F1440.00 G1X107.26F1440.00 G1X107.28F1440.00 G1X107.30F1440.00 G1X107.32F1440.00 G1X107.34F1440.00 G1X107.37F1440.00 G1X107.39F1440.00 G1X107.41F1440.00 G1X107.43F1440.00 G1X107.45F1440.00 G1X107.47F1440.00 G1X107.49F1440.00 G1X107.51F1440.00 G1X107.53F1440.00 G1X107.56F1440.00 G1X107.58F1440.00 G1X107.60F1440.00 G1X107.62F1440.00 G1X107.64F1440.00 G1X107.66F1440.00 G1X107.69F1440.00 G1X107.71F1440.00 G1X107.73F1440.00 G1X107.75F1440.00 G1X107.78F1440.00 G1X107.80F1440.00 G1X107.82F1440.00 G1X107.84F1440.00 G1X107.86F1440.00 G1X107.89F1440.00 M62 P1 G4 P0.1 M63 P1

Other Information

I have tested this with version 3.8.4-pre5 and 3.9.1 If both controllers have the same file, they start and finish at the same time.

The overall delay varies with the number of moves.

AndreasEpp commented 1 week ago

I have tested this now with shorter moves (1/60 s, 1/96s, 1/100s, 1/120s). The overall travel is the same, it is just chopped up into more moves (500, 800, 833, 1000) instead of the original 200 moves at 1/24 s. The result is that the shorter the moves, the smaller the delay between controller 1 and 2. The sweetspot seems to be at around 1/100 s with only 20 ms delay between the two controllers. However the overall duration of the program got more inaccurate with ca 8.6s instead of the 8.3 desired. At 1/120 s controller 2 finished even after controller 1 instead of the other way around with all the other tests

AndreasEpp commented 1 week ago

I think I found an explanation:

  1. Some of the lines in the file are identical because the original motion is so slow. => identical lines get skipped because the machine is already at the position.
  2. because of the slow movement the maximum segment time is reached without planning a step, so a step is performed anyway https://github.com/bdring/FluidNC/issues/772#issuecomment-1380580297