@MichaelGrigg
version 1.1f really complicates things, but here you go.
Status Reporting
When a ? character is sent to Grbl (no additional line feed or carriage return character required), it will immediately respond with something like <Idle,MPos:0.000,0.000,0.000,WPos:0.000,0.000,0.000> to report its state and current position. The ? is always picked-off and removed from the serial receive buffer whenever Grbl detects one. So, these can be sent at any time. Also, to make it a little easier for GUIs to pick up on status reports, they are always encased by <> chevrons.
Developers can use this data to provide an on-screen position digital-read-out (DRO) for the user and/or to show the user a 3D position in a virtual workspace. We recommend querying Grbl for a ? real-time status report at no more than 5Hz. 10Hz may be possible, but at some point, there are diminishing returns and you are taxing Grblâs CPU more by asking it to generate and send a lot of position data.
Grblâs status report is fairly simply in organization. It always starts with a word describing the machine state like IDLE (descriptions of these are available elsewhere in the Wiki). The following data values are usually in the order listed below and separated by commas, but may not be in the exact order or printed at all. Report output depends on the userâs $10 status report mask setting.
⢠MPos:0.000,0.000,0.000 : Machine position listed as X,Y,Z coordinates. Units (mm or inch) depends on $13 Grbl unit reporting setting.
⢠WPos:0.000,0.000,0.000 : Work position listed as X,Y,Z coordinates. Units (mm or inch) depends on $13 Grbl unit reporting setting.
⢠Buf:0 : Number of motions queued in Grblâs planner buffer.
⢠RX:0 : Number of characters queued in Grblâs serial RX receive buffer
Input Pin State:
Pn:XYZPDHRS indicates which input pins Grbl has detected as âtriggeredâ.
Pin state is evaluated every time a status report is generated. All input pin inversions are appropriately applied to determine âtriggeredâ states.
Each letter of XYZPDHRS denotes a particular âtriggeredâ input pin.
X Y Z XYZ limit pins, respectively
P the probe pin.
D H R S the door, hold, soft-reset, and cycle-start pins, respectively.
Example: Pn:PZ indicates the probe and z-limit pins are âtriggeredâ.
Note: A may be added in later versions for an A-axis limit pin.
Assume input pin letters are presented in no particular order.
One or more âtriggeredâ pin letter(s) will always be present with a Pn: data field.
This data field will not appear if:
It is disabled in the config.h file. No $ mask setting available.
No input pins are detected as triggered.
âŚOverride Values:
Ov:100,100,100 indicates current override values in percent of programmed values for feed, rapids, and spindle speed, respectively.
Override maximum, minimum, and increment sizes are all configurable within config.h. Assume that a user or OEM will alter these based on customized use-cases. Recommend not hard-coding these values into a GUI, but rather just show the actual override values and generic increment buttons.
Override values donât change often during a job once set and only requires intermittent refreshing. This data field appears:
After 10 or 20 (configurable 1-255) status reports, depending on is in a motion state or not.
If an override value has changed, this data field will appear immediately in the next report. However, if WCO: is present, this data field will be delayed one report.
In the second report after a reset/power-cycle.
This data field will not appear if:
It is disabled in the config.h file. No $ mask setting available.
The override refresh counter is in-between intermittent reports.
WCO: exists in current report during refresh. Automatically set to try again on next report.
âŚAccessory State:
A:SFM indicates the current state of accessory machine components, such as the spindle and coolant.
Due to the new toggle overrides, these machine components may not be running according to the g-code program. This data is provided to ensure the user knows exactly what Grbl is doing at any given time.
Each letter after A: denotes a particular state. When it appears, the state is enabled. When it does not appear, the state is disabled.
S indicates spindle is enabled in the CW direction. This does not appear with C .
C indicates spindle is enabled in the CCW direction. This does not appear with S .
F indicates flood coolant is enabled.
M indicates mist coolant is enabled.
Assume accessory state letters are presented in no particular order.
This data field appears:
- When any accessory state is enabled.
- Only with the override values field in the same message. Any accessory state change will trigger the accessory state and override values fields to be shown on the next report.
This data field will not appear if:
- No accessory state is active.
- It is disabled in the config.h file. No
$
mask setting available.
- If override refresh counter is in-between intermittent reports.
WCO:
exists in current report during refresh. Automatically set to try again