Given the Marlin Firmware what is the difference between the following lines of code:
The answer is that it depends on the type of firmware you are using.
Let us look at the documentation of
G4 to find that
G4 is valid for all the listed firmware types:
Pause the machine for a period of time.
Furthermore it states that:
- Pnnn Time to wait, in milliseconds (In Teacup, P0, wait until all previous moves are finished)
- Snnn Time to wait, in seconds (Only on Repetier, Marlin, Smoothieware, and RepRapFirmware 1.16 and later)
It clearly shows that the
S parameter (which defines the pause in seconds) is only supported by a few firmware types. Do note that this documentation may not be up-to-date, so it is best to look into the source code or the users manual of the particular firmware you are using.
E.g. if you are using Marlin Firmware,
G4 S20 will pause the machine for 20 seconds while
G4 P2000 will pause the machine for 2000 milliseconds which is 2 seconds. This means that a different time is requested, to have 20 seconds waiting time you could use
To answer your question what the actual difference between the 2 commands is:
G4 refers to dwell. (From what I'm seeing, it can be written as either
Pis the length of dwell time, usually in milliseconds. The parameter
S seems to be invalid, because the only inputs are
P (milliseconds), or
U (undefined). If you have
S20 in your code, it is invalid, whereas
P2000 will cause all axes to remain unmoving for 2 seconds before moving on.
(Note: Not all machines will accept
EDIT: This answer is specific to non-specific g-code, taken from this Source, since the OP did not state any specifics about their firmware type or equipment used.