{Change Comments ***********************************************************} {9/19/89 Copied and Modified: Dynapath Sys 20M M074.54 For: Augustine Tool Made modifications per Gary Augustine and phone conversation. Moved CoolOn to block containing ZCP2. Moved CRCOffC to block following ZCP3. Deleted all occurances of CRCOffsetC. TF} {5/2/90 Modified: Dynapath 20M (ATD) M304.54 For: Augustine Tool Updated to Version 3.4 per Fanuc 6M M001.71.2 Format. NOTE: Post Processor does not include 3.4 Subroutines and AutoCycles. Changed PeckChipBreaker Cycle to G73 in Mach Spec. Added PostScript OptionalCycle1 to ouput G87 ( Dead Spindle Retract ) for FI-RO Drilling Cycle. Added missing Default Format for Drilling Cycle Addresses R and Q. Added FORMAT for Dwell in Prog. Changed Retract to Retract# in Drilling Cycle IF PeckChipBreaker? = TRUE. Modified to output only one G code per block of output. Modified to not output G codes and M codes on the same block of output. NOTE: Waiting for information from Gary Augustine on how to properly handle Subroutines and Looping. JR} {4/16/91 Copied & modified: Dynapath 20M (ATD) M304.70 For: Gibbs & Associates Machine: Control: Dynapath 10M Updated to Version 4.0 per Fanuc 6M M001.80 Format. Made major modifications per conversation with Dale Bachman at Dynapath Systems, Inc. This processor is conversational for Text and Sub Calls only. Added Flag('1') to check if CRCOn (G41/G42) has been output. CutterRadiusCompensation rules: CRCOn (G41/G42) must only be activated when Feed (G1), CWArc (G2) or CCWArc (G3) are active. Added logic to output FeedC (G1) when it's time to output CRCOn (G41/G42) in StdLine Sub. Control requires CRCOff (G40) DummyMove on line preceeding CRCOn (G41/G42). Added logic to output CRCOff (G40) SPX# SPY# in TurnOnCRC Sub. Rapid (G0) must NOT be output while CRCOn (G41/G42) is active. When RapidFeat, CutterRadiusCompensation and Flag('1') are TRUE: Added logic to output FeedC (G1) MoveXYZC RapidFC (F199.1) where needed in Prog. RapidFC set to output F199.1 in Mach Spec. Control requires CRCOff (G40) DummyMove when cancelling CRCOn (G41/G42). Customer requested that CRCOff (G40) be output after move to clearance plane Added logic to output following code in TurnOffCRC Sub, per Dynapath Rules. SeqLab Incvalue EOL SeqLab CRCOff MoveXY EOL SeqLab AbsValue EOL DWB} {07/29/91 Modified: Dynapath 20M (ATD) M304.80 For: Augustine Tool & Die Added IF Peck? Boolean to ''Q' Retract#' Kim Michelman} {8/15/96, Updated to .856 format, MPK} {Prog Numeric Format Definitions *******************************************} #1 = '#.00' #2 = '###.###;0.' #3 = '*###.###;0.' #4 = '####.####;0.' #5 = '########;0' #6 = '###.#;0' #7 = '00' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(SPX#,4) FORMAT(SPY#,4) FORMAT(Retract#,4) FORMAT(ToolDiameter#,4) {.72} FORMAT(Recall#,5) FORMAT(Tag#,5) FORMAT(CallMasterNum#,5) FORMAT(Program#,5) {.72} FORMAT(Operation#,5) {.72} FORMAT(Tool#,5) {.72} FORMAT(Parts#,5) {.72} FORMAT(Dwell#,6) {.72} FORMAT(NewWFO#,7) {.72} {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 Get$: { For conversational output } IF NOT EmptyLine? '$' END RETURN TurnOnCRC: IF CutterRadiusCompensation? AND NOT Flag?('1') SetFlag('1') SeqLab FeedC EOL SeqLab CRCOff 'X' SPX# 'Y' SPY# EOL END RETURN TurnOffCRC: { Customer requested this to occur after move to ClearancePlane } IF CutterRadiusCompensation? AND Flag?('1') SetFlagF('1') { Flag to turn off CutterRadiusCompensation } SeqLab IncValue EOL SeqLab CRCOff 'X0.Y0.' EOL SeqLab AbsValue EOL END RETURN DoSubComment: NewProg IF UseComments? AND SubComment? SeqLab '(T) SUB NUMBER ' Program# Get$ EOL END RETURN DoOpComments: IF UseComments? SetScale('1') IF OperationIDComment? SeqLab '(T) OPERATION ' Operation# ' ' OperationType$ Get$ EOL END IF OperationComment? SeqLab '(T) ' OperationComment$ Get$ EOL END IF WorkGroupComment? SeqLab '(T) ' WorkGroupComment$ Get$ EOL END IF ToolTypeComment? SeqLab '(T) TOOL# ' Tool# ' ' ToolDiameter# ' ' ToolType$ Get$ EOL END IF ToolComment? SeqLab '(T) ' ToolComment$ Get$ EOL END RestoreScale END RETURN PSInit: {reset flags} NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF RETURN PSStuff: {revised.72} IF FourthCW? FORMAT(FourthDegree#,2) SeqLab 'A' FourthDegree# EOL FourthCWF {reset flag} END IF FourthCCW? FORMAT(FourthDegree#,3) SeqLab 'A' FourthDegree# EOL FourthCCWF {reset flag} END IF FifthCW? FORMAT(FifthDegree#,2) SeqLab 'B' FifthDegree# EOL FifthCWF {reset flag} END IF FifthCCW? FORMAT(FifthDegree#,3) SeqLab 'B' FifthDegree# EOL FifthCCWF {reset flag} END RETURN DoPostScript: PSInit EachPS SeqLab PostScript Get$ EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqLab EndOpPS Get$ EOL {literals} PSStuff {commands} NextPS RETURN EntryMove: IF FeedEntry? SeqLab Feed ZIn FeedEnt EOL ELSE SeqLab RapidC ZIn EOL END RETURN StartSub: OpenSub DoSubComment '>' Tag# EOL RETURN SubWarning: IF NOT FeedConnect? IF AnyZshift? SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) Z CLEARANCE WILL' Get$ EOL SeqLab '(T) CHANGE WITH EACH' Get$ EOL SeqLab '(T) CYCLE OF SUB!' Get$ EOL SeqLab '(T) ' Get$ EOL END END RETURN StdSub: '?' Tag# EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL SeqLab '(6)F?' Tag# 'T' RepsLess1 Get$ EOL StartSub RETURN FinishSub1: {part 1} IF NOT FeedConnect? IF CutterRadiusCompensation? AND Flag?('1') SeqLab FeedC ZCP3C RapidFC EOL TurnOffCRC ELSE SeqLab RapidC ZCP3C EOL END END RETURN FinishSubG92: {part 2} SeqLab Preset ShiftRC EOL '<' Tag# EOL TagDown CloseSub SeqLab Preset UnshftRC EOL RETURN OpenMP: TagUp TagInc IF WorkFixtureOffsets? NewWFO EachWFO SeqLab SetWFO EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL IncWFO NextWFO ELSE '?' Tag# EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL SeqLab '(6)F?' Tag# 'T' PartsLess1 Get$ EOL END StartSub RETURN CloseMP: IF WorkFixtureOffsets? '<' Tag# EOL TagDown CloseSub SeqLab WFO1 EOL ELSE SeqLab Preset ShiftPC EOL '<' Tag# EOL TagDown CloseSub SeqLab Preset UnshftPC EOL END RETURN DoAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF ZMove? AND AbsValue? SetInc ELSE IF NOT ZMove? AND NOT AbsValue? SetAbs END END END RETURN DoDrillAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF SPZMove? AND AbsValue? SetInc ELSE IF NOT SPZMove? AND NOT AbsValue? SetAbs END END END RETURN RestoreAbsOrInc: IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } SetAbs END RETURN FormatArc: DoAbsOrInc IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC ArcIJ RETURN StdLine: {enables CRC on first call, .70} TurnOnCRC IF Decelerate? IF RoomToDecel? DecelMove1 SeqLab DoAbsOrInc FeedC CRCOnC MoveXYZC FeedRateC EOL DecelMove2 END SeqLab DoAbsOrInc FeedC CRCOnC MoveXYZC DecelFeed EOL ELSE IF XMove? OR YMove? OR ZMove? SeqLab DoAbsOrInc FeedC CRCOnC MoveXYZC FeedRateC EOL END END RETURN ToolPath: ResetCRCNum {.72} EACHFeat IF PointFeat? SeqLab DoDrillAbsOrInc MoveSXYC EOL IF AutoCycle? SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} END ELSE IF RapidFeat? IF CutterRadiusCompensation? AND Flag?('1') IF XMove? OR YMove? OR ZMove? SeqLab DoAbsOrInc FeedC MoveXYZC RapidFC EOL END ELSE IF XMove? OR YMove? OR ZMove? SeqLab DoAbsOrInc RapidC MoveXYZC EOL END END ELSE IF LineFeat? IF AutoCycle? {.70} IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} SeqLab DoAbsOrInc FeedC MoveXYZC FeedRateC EOL ELSE StdLine {enables CRC on first call} END ELSE StdLine END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 SeqLab FormatArc ArcFeedC EOL DecelMove2 END SeqLab FormatArc DecelFeed EOL ELSE SeqLab FormatArc ArcFeedC EOL END NEXTQuadrant END END END END NEXTFeat RETURN WFOStuff: IF NewWFO? IF MultipleParts? EOL SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) DO NOT USE' Get$ EOL SeqLab '(T) NEWWFO() WITH' Get$ EOL SeqLab '(T) NCPOST MULTIPLE' Get$ EOL SeqLab '(T) PARTS!' Get$ EOL SeqLab '(T) ' Get$ EOL ELSE 'E' NewWFO# END ELSE IF NOT SameTool? IF NeedWFO1? 'E' NewWFO# END END END RETURN AutoCycCutSub1: {part 1} SaveSubStatus {save tool position} SetPass1 {element cut moves} StartSub SetSRXYtoSP SeqLab IncValue EOL RETURN AutoCycCutSub2: {part 2} ToolPath SeqLab AbsValue EOL IF Repeats? AND FeedConnect? AND ZshiftOnly? ELSE IF CutterRadiusCompensation? AND Flag?('1') SeqLab FeedC ZCP2 ...
kmex