Dynapath 20M (ATD) M304.85.txt

(20 KB) Pobierz
{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 ...
Zgłoś jeśli naruszono regulamin