I agree, but comparing this to program O1000, which runs perfectly, it is not much different.
O1000 goes as follows.
O1000
G21 G40 G99 ;
G28 U0 W0 ;
G50 X200. Z300. ;
T1111 ;
G96 S80 M03 ;
G00 Z253. ;
T1111 ;
G00 X50. ;
G01 X32. F.5 ;
G01 Z38. F.15 M08 ;
.....
.....
T0505 ;
M03 S80 ;
G00 X21. Z184.7 F.25 ;
G01 X16.1 F.1 M08 ;
G01 Z103.7 F.25 ;
G00 X21. Z184. ;
G01 X13.3 F.1 ;
G01 Z103.7 X13.5 F.25;
G00 X100. Z253. M05 ;
G28 U0 W0 M09 ;
M30;
%
The FS6 control and others of that period, the axes slides would move the amount of the registered X and Z offset if the offset was applied when calling the tool, as in your case. If the control happened to be in G01 and Feed Per Revolution Mode when the tool was being called, then the axes slides can't move and therefore, the program will appear not to be running.
In the program you have listed in your Post #15, the last Block before the G28 Reference Return is a Linear Interpolation Block (G01 X18.4 Z250.1 F.1); and therefore, the control will be in G01 mode when an attempt to start the program again. At the beginning of that program, Feed Per Revolution Mode has been specified, therefore, the Axes Slides can't move the Offset amount and the program will appear to have stalled.
In Program O1000, the last Block executed before the Reference Return Block is a Rapid Traverse movement (G00 X100. Z253. M05) and therefore, when the program is attempted to be started again, the control is in G00 Mode. In this case, there is no requirement for there to be a specific movement Block, nor for the spindle to be running and therefore, the Axes Slides will move the amount of the registered offset in Rapid Traverse mode, with the program running as normal.
The reason the first program can be made run again by cycling the power to the control, is that there are certain "G" codes that can be set via parameter to default when the control is turned on. In the case of your control, when the control is turned on, one of the default "G" codes is G00.
If you were to add G00 to the first Block in the program, as in the following example
G00 G21 G40 G99
that will fix your problem. However, a better solution is to include G00 in your Tool Call Up Block as in the following:
G00 T1111
When I was teaching clients programming and use of 6T controls, I disliked calling the new tool and its offset at the same time. The reason is that the axes slides would be moving during the Tool Change action. My preferred method was to call the new tool without the offset and then apply the offset during the next movement block as in the following example:
G50 X200. Z300. ;
G00 T1100 ;
G96 S80 M03 ;
G00 Z253. T1111;
In this way, there is no slide movement during the tool call up and the offset is applied seamlessly in the first movement Block.
Try any of the above suggestions and I suspect that you issue will be solved.
Regards,
Bill