FluidNC can optionally send status reports automatically, so a GCode sender or other user interface agent does not have to issue periodic ‘?’ requests for status or $G
requests for the GCode mode. This can result in lower latency for user interface status updates, and can simplify sender coding by eliminating the need for sending requests at difficult-to-optimize time intervals. The sender must explicitly enable such automatic reports, which apply only to the channel (for example the USB serial connection) of that sender.
When the machine is not moving, reports are sent when some reported value changes. When moving, reports are sent at the time interval that the sender requested.
Automatic reporting is off by default, for compatibility with senders that do not expect it. To turn on automatic reporting, the sender issues the command $Report/Interval=N
, where N is the time interval in milliseconds for motion-state reporting. During motion, the most common change is in the position, so such reports typically update the “DRO” position readouts. N should be chosen to match the characteristics of the user interface engine. Values in the range of 50 to 200 milliseconds typically result in a pleasant user experience - but some UI devices cannot update that fast so larger values might be needed. Values less than 50 milliseconds are probably not useful because of human visual processing time.
$Report/Interval=0
turns off automatic reporting.
If a channel is disconnected and subsequently reconnects, $Report/Interval=N
must be re-issued if the user interface agent wishes to use auto-reporting.
The reports that are send automatically are
<Idle|MPos:0.000,0.000,0.000|FS:0,0|Ov:100,100,100>
. It is in the standard Grbl status report format . In non-motion states, this report will be issued automatically only when some non-position field changes - for example with the state changes or one of the pins change. In motion states, this report will be issued automatically at the requested time intervals.$G
, for example [GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
. This report is sent only when one of its values changes, regardless of motion vs. non-motion.[G92: 10.000, 5.000, 0.000]
. The complete set of offsets is the work coordinate offsets G54..G59, the zero position offsets G28 and G30, the temporary offset G92, and the tool length offset TLO. The complete set of such offsets is send in response to $#
. When auto-reporting is enabled, only the one that changed is automatically reported.When a user interface agent issues $Report/Interval=N
on the channel that connects it to FluidNC, auto-reporting applies only to that channel. Other channels are not affected. Each channel can independently control auto-reporting. Thus a sender that is unaware of auto-reporting could connect on USB serial using the old explicit-? reporting style, while WebUI on a websocket channel could use auto-reporting with some interval, and an LCD display on an I2C or secondary UART channel could use auto-reporting with a different interval.