I will look into G50, it would really help to see a basic example of this code being used in text.
This does not work because the 0T control uses G92 for a different function. Over the years Fanuc kept updating their G code standard to allow new features and operations. So like said above I must look into G50.
G50 is not a case of Fanuc updating their G codes over time, G50 is part of the conventional G Code list since day dot.
G50, in relation to a Lathe Control, has the same function as that you're use to, as G92 has for a Mill Control; both are used to set the Work Coordinate System. In addition, G50 with the Lathe Control, is used to clamp the Maximum RPM when Constant Surface Speed Control (G96) is used. This is useful when machining a part that is out of balance, an asymmetrical casting for example. When facing such a part, where the tool is starting from a large diameter and machining into X0.0, when Constant Surface Speed is in mode, the Control will continually vary the RPM of the spindle to maintain the CSS that has been programmed. For example, if a Surface Speed of 200 Metres per Minute were to be programmed, at a start diameter of 150mm, the Spindle Speed would be 424 RPM. When the tool gets to a diameter of 1mm during the facing operation, the RPM would be, in theory, 63,662. Of course, when the machine is not capable of the calculated RPM, it will rev out to the maximum capable for the machine. The lower, maximum RPM of the machine may still be way too high for an out of balance workpiece and it could put the machine and operator in danger of damage and injury respectively. Accordingly, G50, used in conjunction with an "S" code, will clamp the Maximum RPM of the spindle to the "S" Code value specified. For example, G50 S1000 will limit the maximum Spindle RPM to 1000 in CSS Mode.
There are some Control makes that used the same basic G Code System for both Lathe and Mill Controls; Cincinnati is one that springs to mind. Fanuc supply their controls to a myriad of Machine Tool Builders and one of three "G" code systems can be used by parameter setting; these "G" Code Systems are designated System A, B and C. System "A" is the most common default and uses G50 in place of G92, for setting the Work Coordinate System, G Code Systems B and C use G codes that are a closer match to those you're familiar with when using the 3M control.
In the example code you listed in your first Post; copied following:
G0 X-22.0 Y-10.0 Z-1.0 (RAPID TO OFFSET);
G92 X0 Y0 Z0 (SET CURRENT POINT AS NEW ORIGIN);
(REST OF PROGRAM)
I assume that the G0 X-22.0 Y-10.0 Z-1.0 block would have been executed in Incremental Mode (G91) to a point X-22.0 Y-10.0 Z-1.0 away from the Reference Return position for each axis. With Lathe Control that uses G50 to set the Work Coordinate System (G Code System A), G90 and G91 are not available to set Absolute and Incremental Mode respectively. Instead, U and W are used to specify an Incremental move in the X and Z axis respectively. Therefore, to translate your above Code for use with G Code System "A" and G50 to set the Work Coodinate System, it will be as follows:
G28 U0.0 W0.0 (PROGRAMMATICALLY REFERENCE RETURN THE X AND Z Axis)
G0 U-22.0 W-1.0 (RAPID TO OFFSET);
G50 X0 Y0 Z0 (SET CURRENT POINT AS NEW ORIGIN);
(REST OF PROGRAM)
When using G50 (or G92 when G Code System B or C is set via parameter) care needs to be taken that the G50 X_ _ Z_ _ is specified at the same location each time. The above code, using the G28 Block to Reference Return the Axes will ensure that is the case.
The very early 0T controls didn't have a Work Shift option and G50 had to be used to set the Work Coordinate System and those that did, because G10 is an Option, that feature for changing the Work Shift was frequently unavailable.
On the early OT controls, by setting parameter bit 10.7 to "1", the Work Coordinate System is set when a Manual Reference Return is performed (normally when the Control is first turned on). When this bit is set to "1", values set in parameter 708 and 709 are used to set the Work Coordinate System for X and Z respectively. Obviously, care needs to be taken that the Z parameter (709) is changed to correspond to the change of the Z Zero position of a new job.
If, for example, the values of 250.25 and 300.6 were to be registered in parameters 708 and 709 respectively and parameter bit 10.7 set to "1", executing a Manual Reference Return, would be the same as executing the following in either MDI or in a program:
G28 U0.0 W0.0
G50 X250.25 Z300.6
Regards,
Bill