As a detailed example of group code usage, in the ROUTER.$PP you will notice a line which reads "G92;B;G#2#1=PRESET".
The ;G switch on this code will set the current group number to 2 when the text statement "PRESET" is processed.
This second group definition is used for PRESET and several other codes because of the modal nature of X, Y, and Z values. Modal values only output when the value changes. ROUTER.$PP is configured so that X,Y, and Z are modal and will only output when necessary.
This creates a problem when issuing a G92, because the machine tool controller must have both X and Y to honor a G92 request.
Example of incorrect output:
Line from 0,0 to 2,2 : "N7 G01 X2 Y2" output to the NC file
Text "PRESET" : "G92" stored in PB buffer
Point at 2,3 : "N8 G92 Y3" output to the NC file (ERROR!)
The default postprocessor (ROUTER.$PP) is set up to handle this problem with a different group definition for G92 output. The G92 code will switch the group number to 2 for non-modal output of X, Y, and Z.
Below the PRESET entry in the $PP file, there is a line that reads:
SEQNO#PB#XNON#YNON#ZNON#PA=$POINT2.1
This line defines group 2 output for points. The only difference in group 2 point output and group 1 ($POINT1.1) output is that group 2 is non-modal, and will always output values to the NC file.
With ROUTER.$PP the above example will generate the correct NC code:
Line from 0,0 to 2,2 : "N7 G01 X2 Y2" output to the NC file
Text "PRESET" : group switched to 2, "G92" stored in PB buffer