What are the G Code commands that affect stepper feedrate?
-
@bearer no voltage drop! During movement:
It is not a clone, so I am really puzzled right now...
-
running unto back emf issues them maybe, 12v might not be enough to reach the desired speed? its certainly not a current issue.
https://www.reprapfirmware.org/ and emf calculator, there is also a section in the wiki linked above
-
After commanding those movements send M122 and report the results.
-
@Phaedrux
I tried increasing the Vin to around 24V but the movements are still slowed. my 24V power supply was pushed to its current limits however (4.8A consumption, and its rated 5A).Here is what I get with M122. Everything looks fine even at 23.5V but the problem persists.
=== Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later Board ID: 08DGM-917NK-F23T0-6J9DL-3SS6K-KW9SH Used output buffers: 2 of 24 (22 max) === RTOS === Static ram: 27980 Dynamic ram: 92936 of which 20 recycled Exception stack ram used: 472 Never used ram: 9664 Tasks: NETWORK(ready,488) HEAT(blocked,1456) MAIN(running,1824) IDLE(ready,80) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:00:54 ago, cause: power up Last software reset at 2020-07-28 12:22, reason: User, spinning module GCodes, available RAM 9872 bytes (slot 2) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN Error status: 0 MCU temperature: min 34.2, current 34.6, max 34.7 Supply voltage: min 23.5, current 23.5, max 23.6, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: ok, SG min/max not available Driver 1: ok, SG min/max not available Driver 2: ok, SG min/max not available Driver 3: ok, SG min/max not available Driver 4: standstill, SG min/max not available Date/time: 2020-07-28 16:13:24 Cache data hit count 94461989 Slowest loop: 9.87ms; fastest: 0.12ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 9 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 0.6ms, write time 0.0ms, max retries 0 === Move === Hiccups: 0(0), FreeDm: 169, MinFreeDm: 165, MaxWait: 16ms Bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves: 10, completed moves: 10, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === AuxDDARing === Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === Heat === Bed heaters = -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is ready with "M122" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty.
-
@jcsb1994 said in What are the G Code commands that affect stepper feedrate?:
all of which are nema17. Is there a setting for max board current? I am worried about increasing the max current for my individual motors, the 17hm15 can't/shouldnt go a lot higher.
So you have two different motor types trying to do a coordinated move together?
They seem to be quite different motor specs. One rated at 900ma and the other at 1700ma. Setting the current to 700ma for the first would be fine but may be too low for the second.
-
@Phaedrux Ok, so I changed my max current values for 1400mA on the 2 bigger motors. But it didn't change anything.
I also had a weird message.
I started by uploading this script with the upload and start button
echo 12345 while true G1 X25 Y25 Z25 U25 F1500 G1 H1 X-25 Y-25 Z-25 U-25 F1500 M122 M0 H1
And made sure the movements were taking significantly more time than a second each.
Then I pressed on pause, and this message appeared:
The Printing paused message seems wrong. there isn't even a line ith these values! is the code being changed when uploaded to the Duet3d??
-
you pressed pause and the duet ran pause.g which by default contain some retraction g-code...
-
@bearer Ha ok thanks I understand.. I didn't see it this way I thought it meant where it paused on the running program.
And if a motor current is limited in such a way that it limits its max speed below the required feedrate, will the other motors slow down even if their current max setup will let them reach the required feedrate?
-
Well there's no way for the firmware to know if back emf or whatever is preventing a motor from behaving as commanded because it's an open loop system, so no, the motion planner shouldn't be slowing down movement because of that.
The reason for asking for the M122 report was to see if there were a number of hiccups being counted, which would be an indication that the internal step rate was being exceeded, which could cause slow down and micro pauses as it tries to keep up. That doesn't look like the case here though.
I'm afraid we'll have to wait until DC42 returns from vacation to be able to really explain what might be going on.
-
we're also missing the microstepping setting and one motor is 0.9deg and the other 1.8deg?
-
@bearer I have tested with 3 motors of the same model (the one at 1.8deg step) and no luck, the moves still take 1.5s each instead of 1 (1.1 maybe with accel/decel). It doesnt seem like having different motor models change something.
here are my config settingsM350 X16 Y16 Z16 U16 E8 I1 ; Configure microstepping with interpolation M92 X101.858 Y50.929 Z101.858 U50.929 ; Set steps per mm
And may be all my settings just in case
; Drives G91 M584 X0 Y1 Z2 U3 E4 ;M584 A0 B1 U2 V3 ; map drives for first band M564 H0 S0 ; can move motors without homing, S0 can ignore axis limits M569 P0 S1 ; Drive 0 goes forwards M569 P1 S1 ; Drive 1 goes forwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S1 ; Drive 3 goes forwards M350 X16 Y16 Z16 U16 E8 I1 ; Configure microstepping with interpolation M92 X101.858 Y50.929 Z101.858 U50.929 ; Set steps per mm M566 X100.00 Y100.00 Z100.00 U100.00 E120.00 ; Set maximum instantaneous speed changes (mm/min) M203 X20000.00 Y20000.00 Z20000.00 U20000.0 E20000.00 ; Set maximum speeds (mm/min) Z wobbles at 800 M201 X1100.00 Y1100.00 Z1100.00 E1100.00 ; Set accelerations (mm/s^2); testing was done at 4500 4500 10 250 M906 X700.00 Y1400.00 Z700.00 U1400.00 E500.00 ; Set motor currents (mA) M84 S0 ; Disable motor idle current reduction ; Axis Limits M208 A0:63 B0:63 U0:63 V0:63 W0:63 X0:63 Y0:63 Z0:63 E0:63 ; Set axis min-maxima G92 X0 Y0 Z0 U0 ; set all position to 0 along axis ; Endstops ;M574 A1 B1 U1 V1 W1 X1 Y1 Z1 E1:1:1:1 S0 ; Set active low for all 8 motors on Jack M574 X1 S1 P"!xstop" ; A min active LOW endstop switch M574 Y1 S1 P"!ystop" ; B min active LOW endstop switch M574 Z1 S1 P"!zstop" ; U min active LOW endstop switch M574 U1 S1 P"!e0stop" ; V max active LOW endstop switch
-
So I guess there is no other known possible error source? Next step is further research and possible help from @dc42 ?
-
@jcsb1994 your config.g is missing a U value in M201 (max acceleration), so likely using the default and slowing all axes in a coordinated move as a result. Send M201 on its own to check setting, and do the same for each of the other motor settings. Testing each axis individually and seeing if one is slow would be the way the sensible way to test this.
Ian
-
@droftarts Good eye.
-
@droftarts said in What are the G Code commands that affect stepper feedrate?:
@jcsb1994 your config.g is missing a U value in M201 (max acceleration), so likely using the default and slowing all axes in a coordinated move as a result.
For the sake of completeness: the default for a movement axis (i.e. not an extruder axis) is 500mm/s².
Also it could be simply tested. In the current setup moving all axes except U should work in the expected amount of time while also moving U axis will slow it down.
-
@droftarts said in What are the G Code commands that affect stepper feedrate?:
@jcsb1994 your config.g is missing a U value in M201 (max acceleration), so likely using the default and slowing all axes in a coordinated move as a result. Send M201 on its own to check setting, and do the same for each of the other motor settings. Testing each axis individually and seeing if one is slow would be the way the sensible way to test this.
Ian
@wilriker said in What are the G Code commands that affect stepper feedrate?:
@droftarts said in What are the G Code commands that affect stepper feedrate?:
@jcsb1994 your config.g is missing a U value in M201 (max acceleration), so likely using the default and slowing all axes in a coordinated move as a result.
For the sake of completeness: the default for a movement axis (i.e. not an extruder axis) is 500mm/s².
Also it could be simply tested. In the current setup moving all axes except U should work in the expected amount of time while also moving U axis will slow it down.
Thank you for your keen replies. I have checked with M201, my M201 U value was at default 500.00 as expected. I set it to 1100.00 in my config.g and checked again with M201 at bootup and it was effectively set to 1100.
But it doesnt seem to be the problem here. It didnt change anything, I double checked all my individual axes and they move normally by themselves. the problem is when I start moving more than one, even X and Y simultaneously start to slow down.
I am wondering if a setting is making the MCU compute too many things for more than 1 motor?
I didnt try it yet, but maybe 1100 as a max acceleration is too low, too? But i wouldnt see why, since the motors are ok when by themselves. Maybe the board has a design flaw or something broken? (how would I be able to check that?) -
@jcsb1994 I looked through your config again and besides the aforementioned missing
M201 Unnn
value there is nothing obvious that would explain this.Can you please do the following:
- Run
M122
(discard the result this is just for resetting various values) - Execute the move with one motor and make sure duration is as expected
- Run
M122
and post the result - Execute the move with how many motors it takes to provoke longer than expected duration
- Run
M122
and post the result together with the actual command
- Run
-
Also I suggest you send M350 without parameters to verify that the microstepping is still set to x16, and M203 without parameters to verify that the speed limits haven't changed from the values in config.g.
-
@jcsb1994 said in What are the G Code commands that affect stepper feedrate?:
A couple more config oddities, but probably doesn't explain the issue:
G91
You set G91 for relative movements. Do you change back to absolute movements at any point, with G90? Try replacing G91 with G90.
M208 A0:63 B0:63 U0:63 V0:63 W0:63 X0:63 Y0:63 Z0:63 E0:63 ; Set axis min-maxima
There's a number of axes there that are not defined. Comment out A, B, V, W and E (E axis doesn't usually have limit).
M92 X101.858 Y50.929 Z101.858 U50.929 ; Set steps per mm
You have defined the extruder, but haven't defined the steps per mm.
I find the positions that the printer stopped at very odd. Did you do some moves before running the script? I suppose it doesn't really matter, as you were using relative moves, but it is outside the bounds set by M208, though you have overridden it with M564.
G1 H1 X-25 Y-25 Z-25 U-25 F1500
In your move script, the H1 is unnecessary, as you're not homing (I think). If you run in absolute positioning (G90), change this toG1 X0 Y0 Z0 U0 F1500
Is this your full config.g? If not, can you post the full config.g.
Ian
-
@wilriker said in What are the G Code commands that affect stepper feedrate?:
M122
Sorry for the late reply, I didnt have access to the board.
Here is the 1st move with the right speed (at the bottom) with M122 run right after it
8/6/2020, 9:42:33 AM M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later Board ID: 08DGM-917NK-F23T0-6J9DL-3SS6K-KW9SH Used output buffers: 3 of 24 (19 max) === RTOS === Static ram: 27980 Dynamic ram: 92936 of which 20 recycled Exception stack ram used: 328 Never used ram: 9808 Tasks: NETWORK(ready,468) HEAT(blocked,1456) MAIN(running,1840) IDLE(ready,80) Owned mutexes: === Platform === Last reset 00:03:49 ago, cause: power up Last software reset at 2020-08-03 10:30, reason: User, spinning module GCodes, available RAM 9872 bytes (slot 2) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN Error status: 0 MCU temperature: min 28.7, current 29.2, max 29.4 Supply voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: standstill, SG min/max not available Driver 1: standstill, SG min/max not available Driver 2: standstill, SG min/max not available Driver 3: standstill, SG min/max not available Driver 4: standstill, SG min/max not available Date/time: 2020-08-06 09:42:33 Cache data hit count 407286085 Slowest loop: 9.95ms; fastest: 0.12ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 0.9ms, write time 0.0ms, max retries 0 === Move === Hiccups: 0(0), FreeDm: 169, MinFreeDm: 168, MaxWait: 33253ms Bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves: 9, completed moves: 9, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === AuxDDARing === Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === Heat === Bed heaters = -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 199.84ms; fastest: 0.09ms Responder states: HTTP(2) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 2 WiFi firmware version 1.23 WiFi MAC address b4:e6:2d:53:14:68 WiFi Vcc 3.45, reset reason Unknown WiFi flash size 4194304, free heap 22880 WiFi IP address 192.168.1.192 WiFi signal strength -64dBm, reconnections 0, sleep mode modem Socket states: 4 0 0 0 0 0 0 0 8/6/2020, 9:42:14 AM G1 H0 Y25 F1500
Here is the slower move with 2 motors (running all 4 would be even slower) and M122 run right after it.
8/6/2020, 9:46:50 AM M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later Board ID: 08DGM-917NK-F23T0-6J9DL-3SS6K-KW9SH Used output buffers: 3 of 24 (19 max) === RTOS === Static ram: 27980 Dynamic ram: 92936 of which 20 recycled Exception stack ram used: 328 Never used ram: 9808 Tasks: NETWORK(ready,468) HEAT(blocked,1456) MAIN(running,1840) IDLE(ready,80) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:08:06 ago, cause: power up Last software reset at 2020-08-03 10:30, reason: User, spinning module GCodes, available RAM 9872 bytes (slot 2) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN Error status: 0 MCU temperature: min 29.0, current 30.4, max 30.6 Supply voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: standstill, SG min/max not available Driver 1: standstill, SG min/max not available Driver 2: standstill, SG min/max not available Driver 3: standstill, SG min/max not available Driver 4: standstill, SG min/max not available Date/time: 2020-08-06 09:46:50 Cache data hit count 864652416 Slowest loop: 22.65ms; fastest: 0.12ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 1.0ms, write time 9.2ms, max retries 0 === Move === Hiccups: 0(0), FreeDm: 169, MinFreeDm: 167, MaxWait: 268218ms Bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves: 10, completed moves: 10, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === AuxDDARing === Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === Heat === Bed heaters = -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 201.82ms; fastest: 0.09ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 3 WiFi firmware version 1.23 WiFi MAC address b4:e6:2d:53:14:68 WiFi Vcc 3.45, reset reason Unknown WiFi flash size 4194304, free heap 23320 WiFi IP address 192.168.1.192 WiFi signal strength -65dBm, reconnections 0, sleep mode modem Socket states: 4 0 0 0 0 0 0 0 8/6/2020, 9:46:44 AM G1 H0 X-25 Y-25 F1500
@dc42
I tested both! They didn't change from config.g8/6/2020, 9:49:22 AM M203 Max speeds (mm/sec): X: 333.3, Y: 333.3, Z: 333.3, U: 333.3, E: 333.3, min. speed 0.50 8/6/2020, 9:48:53 AM M350 Microstepping - X:16(on), Y:16(on), Z:16(on), U:16(on), E:8(on)