{Change Comments ***********************************************************}
{added separate sub call code and warning for not separate, 7/5/88 WFG}
{separate sub calls turned off in this post- 'UseSeparateSubCalls' commented out}
{ncPost3§24 or better}
{added IF ToolChangeAtHome?, & SetHome 9/26/88 WFG}
{added PostScript commands 3/11/89 WFG}
{added PostScript command comments 5/9/89, WFG, use ncPost 3.10Ś9 or better}
{removed run time comments, 5/9/89, WFG}
{added "must be all capital letters when typed in" to Postscript Command comment, 5/17/89, JR}
{added metric, 6/5/89, WFG}
{suppressed first cycle StrtPos for sep subs,7/17/89 WFG}
{last tool now goes to FirstHome when finished, 7/26/89, WFG}
{changed to Sep Sub standard}
{.65, corrected Sep sub problem if 1st cut <> Z step, 9/14/89 WFG, requires ncPost 3.19Ś5}
{.66, added name comment to Prog ID # line, 10/30/89, WFG}
{.67, new prog commands, 11/20/89, WFG}
{*.68, AutoCycles and 3.2 support, 12/4/89, WFG (Good luck on the upgrades to other posts)}
{.69, corrected 2 repeat op/autocycle problems, 12/21/89, WFG}
{1/8/90-2/7/90
Changes to M001.69
Moved DoPostScript command to very beginning of NewTool & SameTool op's, same as FirstOp.
Deleted last line of NewWFO PostScript comment, it no longer applies.
Move DoEndOpPS command in NewTool & end of prog to end of operation outside of Full-up MP.
Restucture to have M01 or M00 in New Tool.
Deleted ProgStop? from end of prog, not neccesary.
Check for ProgStop at beginning AND end of operation does not work, it comes out both places,
only using for end of operation. Reflected in PSComments.
Deleted StopProg sub.
Re-wrote SameTool section for many reasons.
Deleted ClearancePlane3# prog format it is no longer needed.
New sub CheckPass to replace statement in main for SetPass.
Modified WFOStuff sub to include SameTool.
Deleted StrtPos from OpenMP sub and added to main where needed.
Updated to .70 format.
Jim Radcliffe}
{3/15/90
Copied & modified: Fanuc 6M M001.70.3
For: Rollason
Machine: Moore Speacial Jig Grinder
Control: GE 1050
No Z Moves Added SkipZ to Initializations
Negate Y & J in MachSpec.
No Feedrates
Basically stripped it down minimaly as needed.
Some things still unsure of as I am writing this with no manual and only a sample read-out.
Jim Radcliffe}
{4/9/90
Deleted StdLine subroutine and replaced where it was called.
Removed ArcFeed command.
DWB}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB}
{6/3/91, Updated GE 1050 Moore JG M295.71 to .80 format, JR}
{6/3/91
Copied & modified: GE 1050 Moore JG M295.80
For: Unitech Engineered Products, Inc.
Control: Allen Bradley 8400
Machine: Moore Jig Grinder model G-18
Changed G02's to G03's & G03's to G02's in MachSpec.
Modified comments to use semi-colons instead of parentheses.
Jim Radcliffe}
{6/12/91, UnNegated Y & J in MachSpech, also switched back G02 & G03, JR}
{6/14/91
Modified: AB 8400 Moore JG M422.80.1
Changed to not stop on arcs quadrants
Jim Radcliffe}
{6/14/91
Modified: AB 8400 Moore JG M422.80.2
Changed FormatArc sub to unconditional arc information
Jim Radcliffe}
{6/20/91
Modified: AB 8400 Moore JG M422.80.3
For: Unitech Engineered Products, Inc.
Control: Allen-Bradley 8400
Machine: Moore Jig Grinder model G-18
Modified per manual:
Absolute arc centers.
The 3rd axis is a C axis mainly used to keep the U axis perpendicular to the work piece;
added "2-DAN" codes (G50 - G52), similar to CRC, automaticly takes care of the C axis.
**Do not choose cutter center in ncCAM for "2-DAN" to function properly.**
The 4th axis (indexing axis) is an A axis;
3.4 format, modified FORMAT #2 & #3;
added spacing to codes.
The 5th axis is a U axis which is an offset departure of the main spindle centerline and the grinding wheel centerline;
changed B to U for 5thaxis PostScript;
3.5 format, added FORMAT #8 & #9.
Planetary Spindle modes are not supported.
The Plane command has no output as G17 is activated at power-up and no other planes are possible.
Deleted literal F4.0 and added FeedRateC, format 2.2, to ToolPath.
Added Decel info to ToolPath.
Can only have 1 G code per line, fixed all possibilities.
CRC uses T word offset
No Drilling operations, added literal comment to be output to indicate this.
Fixture offsets E01 to E99.
Added ProID1, format 00.
Deleted SubCall command, subs called by calling the subs program number only.
Return From Sub command is M02.
Added Coolant, M07 on M09 off.
Jim Radcliffe}
{6/6/97
Initial: AB 8400 Moore JG M422.80.4
Created: Fanuc 18MB Moore JG M000.89
ForUser: Braden Engineering / US Can
Control: Fanuc 18MB
Machine: Moore 450CP Jig Grinder
Develop: ComPost2 68K 1.0b11, CatalystPPC v3.33C
Comment: Changed processor to be more Fanuc like and Updated!
Jim Radcliffe}
{6/30/97
Initial: Fanuc 18MB Moore JG M000.89
Created: Fanuc 18MB Moore JG M000.89.1
Develop: ComPost2 68K 1.0b11, Virtual Gibbs 3.35 PPC
Comment: Modified per fax and conversation with Bill Riha.
Added block delete before M15.
Changed G50 to G40.1
Changed G51 to G41.1
Changed G52 to G42.1
Added G40.1 to beginning of tools for saftey start.
Changed boolean WireLeft to CRCLeft,
WireLeft was not working no matter how Virtual file is set!
CRC must be on in Virtual for CRCLeft boolean to output correctly.
Added missing label F for feed rates.
Added C axis output to StrtPos line at beginning of operations.
Added Preset C axis output at end of operations.
Jim Radcliffe}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '####.####;0.'
#3 = '*####.####;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '####^##0'
#8 = '###.#####;0.'
#9 = '*###.#####;0.'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Tool#,5) {.72}
FORMAT(NewWFO#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Dwell#,6) {uses D word}
{Special Command Subroutines ***********************************************}
CAxis:
IF CRCLeft?
' C90.'
ELSE
' C270.'
END
RETURN
LastCAxis:
IF LAST CRCLeft?
' C90.'
ELSE
' C270.'
END
RETURN
{Prog Subroutines **********************************************************}
RestoreScale:
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
RETURN
DoSubComment:
IF UseComments? AND SubComment?
'( SUB NUMBER: ' Program# ' )' EOL
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN
PSInit: {reset flags}
NewWFOF
RotateF
OptCyc1F
RETURN
PSStuff: {revised.72}
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqC ' A' FourthDegree# EOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqC ' A' FourthDegree# EOL
FourthCCWF {reset flag}
END
IF FifthCW?
FORMAT(FifthDegree#,8)
SeqC ' U' FifthDegree# EOL
FifthCWF {reset flag}
END
IF FifthCCW?
FORMAT(FifthDegree#,9)
SeqC ' U' FifthDegree# EOL
FifthCCWF {reset flag}
END
RETURN
DoPostScript:
PSInit
EachPS
SeqC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN
StartSub:
OpenSub
SubID EOL
DoSubComment
RETURN
StdSub:
SeqC SubCall CallLab RepLab RepCycs EOL
StartSub
RETURN
FinishSub1: {part 1}
SeqC CRCOffC EOL
RETURN
FinishSubG92: {part 2}
SeqC Preset ShiftRC EOL
SeqC EndSub EOL
CloseSub
SeqC Preset UnshftRC EOL
RETURN
OpenMP:
NewProg
IF WorkFixtureOffsets?
NewWFO
EachWFO
SeqC SetWFO EOL
SeqC SubCall CallLab RepLab OnePart EOL
IncWFO
NextWFO
ELSE
SeqC SubCall CallLab RepLab Parts EOL
END
StartSub
RETURN
CloseMP:
IF WorkFixtureOffsets?
SeqC EndSub EOL
CloseSub
SeqC WFO1 EOL
ELSE
SeqC Preset ShiftPC EOL
SeqC EndSub EOL
CloseSub
SeqC Preset UnshftPC EOL
END
RETURN
FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
MoveXYZC
IF ArcIJFormat?
ArcIJ
ELSE
ArcR
END
RETURN
ToolPath:
ResetCRCNum
EACHFeat
IF PointFeat?
IF AutoCycle?
SeqC MoveSXYC EOL
SeqC SubCall CallLab EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
SeqC MoveSXYZC EOL {.80.01}
END
ELSE
IF RapidFeat?
IF LastFeat?
SeqC CRCOffC RapidC MoveXYZC EOL
ELSE
IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps}
SeqC RapidC MoveXYZC EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqC CRCOnC RapidC MoveXYZC CRCOffsetC EOL
END
END
END
ELSE
IF LineFeat?
IF LastFeat?
SeqC CRCOffC FeedC MoveXYZC FeedRateC EOL
ELSE
IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps}
SeqC FeedC MoveXYZC FeedRateC EOL
ELSE
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC CRCOnC FeedC MoveXYZC FeedRateC CRCOffsetC EOL
DecelMove2
END
SeqC CRCOnC FeedC MoveXYZC DecelFeed CRCOffsetC EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqC CRCOnC FeedC MoveXYZC FeedRateC CRCOffsetC EOL
END
END
END
END
ELSE
IF ArcFeat?
EACHQuadrant
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
END
NEXTFeat
RETURN
WFOStuff:
IF NewWFO?
IF MultipleParts?
'*** WARNING *** DO NOT USE NEWWFO() WITH NCPOST MULTIPLE PARTS' EOL
ELSE
SeqC ' G' NewWFO# EOL
END
ELSE
IF NOT SameTool?
IF NeedWFO1?
SeqC ' G' NewWFO# EOL
END
END
END
RETURN
AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
StartSub
SetSRXYtoSP
SeqC IncValue EOL
RETURN
AutoCycCutSub2: {part 2}
IF CRCLeft?
SeqC ' G41.1' EOL
ELSE
SeqC ' G42.1' EOL
END
ToolPath
SeqC ' G40.1' EOL
SeqC AbsOrInc EOL
SeqC EndSub EOL
CloseSub
SetSRSubXY {restore SR to 1st position value}
SetSRSubMove
RETURN
AutoCycPat:
SetPass2 {position pattern}
ToolPath {call after NewProg for correct sub calls}
SetPass1 {reset}
RETURN
Milling:
IF AutoCycle?
NewProg
AutoCycCutSub1
AutoCycCutSub2
AutoCycPat
ELSE
IF CRCLeft?
SeqC ' G41.1' EOL
ELSE
SeqC ' G42.1' EOL
END
ToolPath
SeqC ' G40.1' EOL
END
RETURN
G92Sub:
StdSub
SeqC AbsOrInc Connect StrtPos EOL
Milling
FinishSub1
FinishSubG92
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
SkipZ
ReverseXZArcs
InitWFONum
SetFlood
UseSeparateSubCalls
SetMaxSeparateSubCalls('50') {?}
SetMaxRPM('10000') {?}
SetMaxFeed('500') {?}
IF PSComment? AND UseComments?
'PostScript:' EOL
' Literals: put between single or double quotes.' EOL
' Separate commands and literals with at least one space.' EOL
' A CR ( RETURN key ) will start a new line.' EOL
' Commands: may be capital and/or lower case letters. Separate commands with a space.' EOL
' EndOP -' EOL
' all literals and commands before an ENDOP command' EOL
' will appear at the beginning of the operation. All ' EOL
' literals and commands after an ENDOP command will appear' EOL
' at the end of the operation. ' EOL
' NewWFO(56), NWFO(56) -' EOL
' The Work Fixture Offset # you specify will be used for all following operations.' EOL
' Do not use with the ncPost multiple part option.' EOL
' 4thAxisCW(12.5), 4ACW(12.5) -' EOL
' generates a + C move of the value you specify' EOL
' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL
' generates a - C move of the value you specify' EOL
' 5thAxisCW(30), 5ACW(30) -' EOL
' generates a + U move of the value you specify' EOL
' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL
' generates a - U move of the value you specify' EOL
END
EachOp {Start of post processing *********************}
IF FirstOperation?
EOR EOL
ProgID1 EOL
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
IF ProgramNameComment?
'( PROGRAM: ' ProgramName$ ' )'
END
IF ProgramComment?
'( ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
'( FORMAT: ' FormatName$ ' )' EOL
END
IF TimeComment?
'( ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
'( OUTPUT IN ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
Plane {no output}
IF MultipleParts? AND AllToolsOnePart?
OpenMP
END
Seq AbsOrInc EOL
DoOpComments
DoPostScript
WFOStuff
SeqC ' G40.1' EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SeqC Rapid StrtPos CAxis EOL
SeqC ' /M15' EOL {grinding head down}
SeqC CoolOn EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqC StrtPos EOL
END
ELSE
IF NewTool?
{Finish off last Operation}
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
SeqC Preset LastCAxis EOL
SeqC CoolOff EOL
SeqC ' M16' EOL {grinding head up}
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF ToolChangeAtHome?
SeqC Rapid Home EOL
END
IF LAST ProgStop?
SeqC ' M00' EOL
ELSE
SeqC ProgStop EOL
END
{Start new Operation}
Seq AbsOrInc EOL
DoOpComments
DoPostScript
WFOStuff
SeqC ' G40.1' EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SeqC Rapid StrtPos CAxis EOL
SeqC ' /M15' EOL {grinding head down}
SeqC CoolOn EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqC StrtPos EOL
END
ELSE
IF SameTool?
SeqC Preset LastCAxis EOL
DoEndOpPS
SeqC CoolOff EOL
SeqC ' M16' EOL {grinding head up}
IF LAST ProgStop?
SeqC ' M00' EOL
END
{Start new Operation}
SeqC AbsOrInc EOL
DoOpComments
DoPostScript
WFOStuff
CheckPass
SeqC Rapid StrtPos CAxis EOL
SeqC ' /M15' EOL {grinding head down}
SeqC CoolOn EOL
END
END
END {common point for all operations}
IF Milling?
IF Repeats?
NewProg
G92Sub
ELSE {no repeat OPs}
Milling
END
SeqC CRCOffC EOL
ELSE
IF Drilling? {I dont think we are going to be using drilling on this machine}
'; Drilling operations are not support in this Processor' EOL
END
END
NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation}
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
SeqC Preset CAxis EOL
SeqC CoolOff EOL
SeqC ' M16' EOL {grinding head up}
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqC Rapid FirstHome EOL
END
IF ProgStop?
SeqC ' M00' EOL
END
IF MultipleParts? AND AllToolsOnePart?
CloseMP
END
SeqC EOP EOL
CloseSub
Post2 {organize Subs into one program}
EOR EOL
Close
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
IF FileBytesComment?
'; FILE LENGTH: ' FileBytes# ' CHARACTERS' EOL
END
IF FileFeetComment?
'; FILE LENGTH: ' FileFeet# ' FEET' EOL
END
IF FileMetersComment?
'; FILE LENGTH: ' FileMeters# ' METERS' EOL
END
Close
END