Heid TNC 425 [NPP] MX02 89m


{Change Comments ***********************************************************}

{5/21/96
Copied: Heid TNC 425 [HPM] M972.89m
Created: Heid TNC 425 [PB] M053.89m
For: Fructus/Pharmacia Biosensor
Machine:
Control:
Versions: ncCad 4.33.02/ncCAM 4.33.01/ncPost 4.33.09/Catalyst v3.04.05C/Compost 4.21.37/1.0a
Changes made per Mikael Bagge of Fructus.
Customer requested Coordinate FORMAT changes.
Changed FORMAT#1 from '####0.000' to '####0.###;0' at Prog Numeric Format Definitions.
Changed FORMAT#2 from '###.###;0.' to '##0.###;0' at Prog Numeric Format Definitions.
Changed FORMAT#3 from '*###.###;0.' to '*##0.###;0' at Prog Numeric Format Definitions.
Changed FORMAT#4 from 'Ä…####0.000' to 'Ä…####0.###;+0' at Prog Numeric Format Definitions.
Changed FORMAT#6 from 'Ä…*####0.000' to 'Ä…*####0.###;+0' at Prog Numeric Format Definitions.
Modified literal at ckCRCOff, StartSub, StdSub, FinishSubG92, OpenMP, CloseMP, FormatArc,
ToolPath, AutoCycCutSub2 and ZonlyRep subs, and FirstOperation and NewTool.
Customer requested deletion of padded spaces.
Modified DoL, Space, XYZSpace, DoR0 and DoM subs.
Customer requested deletion of CYCL7 sub.
Deleted sub and 3 calls to same at FirstOperation.
Deleted SetProgNumTo10 sub.
Replaced with SetProgNum command at setup and initializations
Customer requested Tool Comment at Tool Call block.
Added ToolTypeComments sub, called from FirstOperation and NewTool.
Deleted ToolChng block at FirstOperation and NewTool.
Deleted PreTool at FirstOperation and NewTool.
Changed Drill Cycle Labels at IF Drilling.
Changed output blocks at end of Prog.
Including ASCII(3)
DWB}

{2/27/97
Modified: Heid TNC 425 [PB] M053.89m
Created: Heid TNC 425 [PB] M053.89.1m
For: Fructus/Biacore formerly known as Pharmacia Biosensor
Versions: Catalyst v3.30C/ComPost2 MSL 68K
Changes made per Mikael Bagge of Fructus.
Customer requested that subs be output outside of main program, between M2 and END PGM.
UnCommented OpenSub at StartSub.
UnCommented CloseSub at at FinishSubG92, CloseMP, AutoCycCutSub2, ZonlyRepAutoCycle, ZonlyRep
and IF Drilling.
Deleted Post command at end of Prog.
Added CloseSub and Post2 commands between M2 and END PGM at end of Prog.
DWB}

{5/16/97
Modified: Heid TNC 425 [PB] M053.89.1m
Created: Heid TNC 425 [PB] M053.89.2m
For: Fructus/Biacore/NPP
Versions: Catalyst v3.33C/ComPost2 MSL 68K
Changes made per Mikael Bagge of Fructus.
Added missing SetMaxFeed at setup and initializations.
Changed METERS to MILLIMETERS at FirstOperation.
Added SetScale(1) and call to RestoreScale for BLK FORM graphic blocks at start of output.
Used Heidenhain TNC 151 M115.89.3m to make following modifications:
Corrected Drilling Operations for Variable DrillDepths.
Variable DrillDepths requires entire Cycle to redefined at appropriate hole locations.
This means MasterOp and CallMasterOp cannot be supported for these situations.
Deleted contents of DoDrillAbsOrInc sub.
Added DrillCycle sub for redefinition of Cycle.
Called from ToolPath PointFeat.
Added support of Variable DrillDepths at ToolPath PointFeat.
Added SPZMove test at IF Drilling.
Deleted Flag(1) at IF Drilling.
Corrected AutoCycles.
Modified ToolPath PointFeat.
Was outputting CYCL CALL block which applies only to Drilling Cycles.
Was outputting M99 which applies only to Drilling Cycles.
Other modifications:
Changed IF AutoCycle? to IF NOT AbsValue? at EntryMove.
For support of Incremental InFeed.
Updated ZonlyRepAutoCycle.
Added StartPosX# to FORMAT#4 at Prog Numeric Format Definitions.
Added StartPosY# to FORMAT#4 at Prog Numeric Format Definitions.
Changed SPX# to StartPosX# two places at ZonlyRepAutoCycle.
Changed SPY# to StartPosY# two places at ZonlyRepAutoCycle.
Deleted LoadFeat to ZCP3 at end of IF Milling.
NOT ZMove result bypassed output of CoolOff command.
Changed ZCP2PlusIncC to ZCP2PlusInc at ZonlyRep sub.
DWB}

{5/16/97
Copied: Heid TNC 425 [PB] M053.89.2m
Created: Heid TNC 425 [NPP] MX02.89m
For: Fructus/NPP
Machine:
Control:
Versions: Catalyst v3.33C/ComPost2 MSL 68K
Changes made per Mikael Bagge of Fructus.
Changed all comments from '()' to ';'.
Added DoM90 sub.
Outputs literal M90, Smoothing Corners command, at end of all contouring blocks.
Called from three places at ToolPath LineFeat.
Called from three places at ToolPath ArcFeat.
Changed SetMaxRPM from 3000 to 6000 at setup and initializations.
Converted to no subs output per LongHand M001.89d Format.
DWB}

{Prog Numeric Format Definitions ****}

#1 = '#.00'
#2 = '####0.###;0'
#3 = '*####0.###;0'
#4 = 'Ä…####0.###;+0'
#5 = '#######0'
#6 = 'Ä…*####0.###;+0'
#7 = '+###0'
#8 = 'Ä…#bbb0.bbbb#'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Dwell#,2)
FORMAT(ABS#,4)
FORMAT(DIV#,4)
FORMAT(ClearancePlane2#,4)
FORMAT(XStockMin#,4)
FORMAT(XStockMax#,4)
FORMAT(YStockMin#,4)
FORMAT(YStockMax#,4)
FORMAT(ZStockMin#,4)
FORMAT(ZStockMax#,4)
FORMAT(HomeX#,4)
FORMAT(HomeY#,4)
FORMAT(StartPosX#,4)
FORMAT(StartPosY#,4)
FORMAT(SPX#,4)
FORMAT(SPY#,4)
FORMAT(SPZ#,4)
FORMAT(EPX#,4)
FORMAT(EPY#,4)
FORMAT(EPZ#,4)
FORMAT(ArcI#,4)
FORMAT(ArcJ#,4)
FORMAT(ZDepth#,4)
FORMAT(RepeatX#,4)
FORMAT(RepeatY#,4)
FORMAT(RepeatZ#,4)
FORMAT(PartShiftX#,4)
FORMAT(PartShiftY#,4)
FORMAT(PartShiftZ#,4)
FORMAT(OriginUnShiftPX#,4)
FORMAT(OriginUnShiftPY#,4)
FORMAT(OriginUnShiftPZ#,4)
FORMAT(OriginUnShiftRX#,4)
FORMAT(OriginUnShiftRY#,4)
FORMAT(OriginUnShiftRZ#,4)
FORMAT(ToolDiameter#,4)
FORMAT(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(TLDia#,4)
FORMAT(TLLength#,4)
FORMAT(Recall#,5)
FORMAT(TLNum#,5)
FORMAT(Program#,5)
FORMAT(Program2#,5)
FORMAT(CallMasterNum#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(NextTool#,5)
FORMAT(Parts#,5)
FORMAT(Peck#,6)
FORMAT(FeedEntry#,7)
FORMAT(ContourFeed2#,7)
FORMAT(PartShiftX#,8)
FORMAT(PartShiftY#,8)
FORMAT(PartShiftZ#,8)

{Special Subs ***********************}

DoL:
' L'
RETURN

DoZL:
DoL
RETURN

Space: { 10 Spaces }
{' '}
RETURN

XYZSpace:
{' '} Space
RETURN

XYSpace:
Space Space
RETURN

ZSpace:
Space Space Space
RETURN

IXYZSpace:
Space
RETURN

IXYSpace:
Space Space
RETURN

IZSpace:
Space Space Space
RETURN

DoR0:
IF NOT Flag?('4') { ArcFeat }
{' '}
END
IF Flag?('1') { CutterRadiusCompensation }
IF CRCleft?
' RL'
ELSE
' RR'
END
ELSE
' R0'
END
RETURN

RF: { RapidF }
' F MAX'
RETURN

DoM:
{' M'}
RETURN

DoM90:
IF NOT EmptyLine?
' M90' { Corner Smoothing }
END
RETURN

ckCRCOff:
IF Flag?('1') { CRCOn }
SetFlagF('1')
SeqLab DoL ' IX+0 IY+0' IXYSpace DoR0 RF DoM EOL
END
RETURN

CheckCoolOn:
IF CoolOff?
DoM
ELSE
CoolOn
END
RETURN

CheckCoolOff:
IF CoolOff?
DoM
ELSE
CoolOff
END
RETURN

{Prog Subroutines ****}

RestoreScale:
IF NOT Metric? { CAM file is in English, tools and tool path }
SetScale('25.4') { change to Metric, this is a Metric post }
ELSE
SetScale('1')
END
RETURN

WFOStuff:
{ NOTE: This Post Processor does not support WorkFixtureOffsets. }
RETURN

DoPartCycleComment:
IF MultipleParts? AND UseComments? AND SubComment?
'; PART NO. ' PartNum# EOL
END
RETURN

DoCycleComment:
IF UseComments? AND SubComment?
'; CYCLE START' 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

ToolTypeComments:
IF ToolTypeComment?
SetScale('1')
' ; ' ToolType$ ' ' ToolDiameter# EOL
RestoreScale
END
RETURN

BadMPWFOReport:
SetStatusOff
' ' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
'Ä„ NOTE: Even though you have elected to Ä„' EOL
'Ä„ process this file using Multiple Ä„' EOL
'Ä„ Parts with Work Fixtures, there exist Ä„' EOL
'Ä„ non-zero values in the invisible, Ä„' EOL
'Ä„ Equally SpacedÉ fields, as follows: Ä„' EOL
'Ä„ Ä„' EOL
'*****************************************' EOL
IF NotEqual? PartShiftX# Num#('0')
' X axis shift = ' PartShiftX# EOL
END
IF NotEqual? PartShiftY# Num#('0')
' Y axis shift = ' PartShiftY# EOL
END
IF NotEqual? PartShiftZ# Num#('0')
' Z axis shift = ' PartShiftZ# EOL
END
'*****************************************' EOL
'Ä„ Ä„' EOL
'Ä„ Please reset these values to zero as Ä„' EOL
'Ä„ they affect the coordinate values Ä„' EOL
'Ä„ output, starting with Part# 2. Ä„' EOL
'Ä„ Thank You. Ä„' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
' ' EOL
SetStatusOn
RETURN

PSInit:
NewWFOF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN

PSStuff:
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqLab ' A' FourthDegree# EOL
FourthCWF
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqLab ' A' FourthDegree# EOL
FourthCCWF
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqLab ' B' FifthDegree# EOL
FifthCWF
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqLab ' B' FifthDegree# EOL
FifthCCWF
END
RETURN

DoPostScript:
PSInit
EachPS
SeqLab PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqLab EndOpPS EOL
PSStuff
NextPS
RETURN

EntryMove:
IF NOT AutoCycle?
LoadFeat Num#('0') Num#('0') FIRST SPZ#
IF ZMove?
SeqLab DoZL ZIn ZSpace DoR0
IF FeedEntry?
Feed {no output}
FeedEnt
ELSE
Rapid {no output}
RF
END
DoM EOL
END
END
RETURN

ACEntryMove:
IF SPZMove?
IF Repeats? AND ZShiftOnly?
SetAbs
END
SeqLab DoZL
IF NOT AbsValue?
' IZ' SPZ# IZSpace
ELSE
MoveSZ ZSpace
END
IF Flag?('1') { CRCOn }
SetFlagF('1')
END
DoR0
IF FeedEntry?
Feed {no output}
FeedEnt
ELSE
Rapid {no output}
RF
END
DoM EOL
IF Repeats? AND ZShiftOnly?
SetInc
END
END
{IF LineFeat? AND ZMove? AND NOT XMove? AND NOT YMove?
Feed {no output}
SeqLab DoZL
IF NOT AbsValue?
' IZ' EPZ# IZSpace
ELSE
MoveZ ZSpace
END
DoR0
' F' ContourFeed2#
DoM EOL
END}
RETURN

ExitMove:
IF FeedConnect?
IF NOT AutoCycle?
IF NOT NoZMoves?
LoadFeat Num#('0') Num#('0') FIRST SPZ#
IF ZMove?
Feed {no output}
SeqLab DoZL ZIn ZSpace
IF Flag?('1') { CRCOn }
SetFlagF('1')
DoR0
SetFlag('1')
ELSE
DoR0
END
FeedEnt DoM EOL
END
END
END
ELSE
SeqLab DoZL PRIME ZCP2 ZSpace
IF Flag?('1') { CRCOn }
SetFlagF('1')
DoR0
SetFlag('1')
ELSE
DoR0
END
IF FIFO?
Feed {no output}
FeedEnt
ELSE
Rapid {no output}
RF
END
DoM EOL
END
ckCRCOff
RETURN

ExitMove2:
DoZL ZCP3 ZSpace
IF Flag?('1') { CRCOn }
SetFlagF('1')
DoR0
SetFlag('1')
ELSE
DoR0
END
IF AutoCycle?
Rapid {no output}
RF
ELSE
IF FIFO?
Feed {no output}
FeedEnt
ELSE
Rapid {no output}
RF
END
END
CheckCoolOff
RETURN

CycleWarning:
{ NOTE: This Post Processor takes care of Z Clearance. }
RETURN

CheckMove:
IF AutoCycle? OR NOT AbsValue?
IF XMove? OR YMove? OR ArcFeat?
' IX' EPX# ' IY' EPY#
IF ZMove?
' IZ' EPZ# IXYZSpace
ELSE
IXYSpace
END
ELSE
IF ZMove?
' IZ' EPZ# IZSpace
END
END
ELSE
IF XMove? OR YMove? OR ArcFeat?
MoveX MoveY
IF ZMove?
MoveZC XYZSpace
ELSE
XYSpace
END
ELSE
IF ZMove?
MoveZC ZSpace
END
END
END
RETURN

FormatArc:
SeqLab ' CC'
IF AutoCycle? OR NOT AbsValue? {implies incremental}
' IX' ArcI# ' IY' ArcJ#
ELSE
ArcIJ
END
EOL
SeqLab ' C' CheckMove
IF ArcCW?
' DR-' CWArc {no output}
ELSE
' DR+' CCWArc {no output}
END
SetFlag('4')
DoR0
SetFlagF('4')
RETURN

ckCRC:
IF CutterRadiusCompensation?
IF LastFeat?
SetFlagF('1') { CRCOff }
ELSE
IF NOT ZMove?
SetFlag('1') { CRCOn }
END
END
END
RETURN

ckCRCNum:
{ Not Supported }
RETURN

FormatLine:
IF ZMove? AND NOT XMove? AND NOT YMove?
DoZL
ELSE
DoL
END
ckCRC CheckMove DoR0
RETURN

DrillCycle:
IF RigidTap?
SeqLab ' CYCL DEF 17.0 FAST GAENGNING' EOL
SeqLab ' CYCL DEF 17.1 AVST ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 17.2 DJUP ' SPZ# EOL
SeqLab ' CYCL DEF 17.3 V.TID 0' EOL
ELSE
IF Tap?
SeqLab ' CYCL DEF 2.0 G€NGBORRNING' EOL
SeqLab ' CYCL DEF 2.1 AVST ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 2.2 DJUP ' SPZ# EOL
SeqLab ' CYCL DEF 2.3 V.TID 0' EOL
SeqLab ' CYCL DEF 2.4' FeedEnt EOL
ELSE
SeqLab ' CYCL DEF 1.0 PECKING' EOL
SeqLab ' CYCL DEF 1.1 SET UP ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 1.2 DEPTH ' SPZ# EOL
SeqLab ' CYCL DEF 1.3 PECKG '
IF Peck?
Peck#
ELSE
SPZ#
END
EOL
SeqLab ' CYCL DEF 1.4 DWELL '
IF Dwell?
Dwell#
ELSE
'0'
END
EOL
SeqLab ' CYCL DEF 1.5' FeedEnt EOL
END
END
RETURN

ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
Rapid {no output}
IF FirstFeat?
IF Repeats?
IF FirstCycle?
SeqLab ' CYCL CALL' XYZSpace ZSpace DoM EOL
ELSE
IF SPZMove?
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
DrillCycle
SeqLab ' CYCL CALL' XYZSpace ZSpace DoM EOL
ELSE
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF ' M99' EOL
END
END
ELSE
SeqLab ' CYCL CALL' XYZSpace ZSpace DoM EOL
END
ELSE
IF SPZMove?
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
DrillCycle
SeqLab ' CYCL CALL' XYZSpace ZSpace DoM EOL
ELSE
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF ' M99' EOL
END
END
TrackZNO# SPZ#
ELSE
IF FirstFeat? AND AutoCycle?
ACEntryMove
END
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
Rapid {no output}
SeqLab FormatLine RF DoM EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
Feed {no output}
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqLab FormatLine FeedRate DoM90 EOL
DecelMove2
END
SeqLab FormatLine DecelFeed DoM90 EOL
ELSE
SeqLab FormatLine FeedRate DoM90 EOL
END
END
ELSE
IF ArcFeat?
SetStatusOff
IF Metric? AND LessThan? ABS# ArcR# Num#('.02')
SetFlag('5')
ELSE
IF NOT Metric? AND LessThan? ABS# ArcR# Num#('.0007874015748031') { .02 Ö 25.4 }
SetFlag('5')
END
END
SetStatusOn
IF Flag?('5')
SeqLab FormatLine FeedRate DoM90 EOL { StdLine }
ELSE
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
FormatArc ArcFeed DoM90 EOL
DecelMove2
END
FormatArc DecelFeed DoM90 EOL
ELSE
FormatArc ArcFeed DoM90 EOL
END
NEXTQuadrant
END
SetFlagF('5')
END
END
END
IF AutoCycle? AND Repeats? AND NOT ZShiftOnly? AND LastFeat?
SetAbs
SetScale('1')
Save# Num#('4') SUB# EPX# CurOriginPosX#
Save# Num#('5') SUB# EPY# CurOriginPosY#
RestoreScale
SetInc
END
END
NEXTFeat
RETURN

AutoCycCutSub1: {part 1}
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
IF Repeats? AND ZShiftOnly?
EntryMove
END
SetInc
RETURN

AutoCycCutSub2: {part 2}
SetAbs
SeqLab DoZL ZCP2 ZSpace DoR0
IF FIFO?
Feed {no output}
FeedEnt
ELSE
Rapid {no output}
RF
END
DoM EOL
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN

Milling:
EntryMove
ToolPath
RETURN

XYZRep:
CycleWarning
FindAnyZMoves
EachRep
DoCycleComment
IF FirstCycle?
EntryMove
ELSE
IF FeedConnect?
IF SPXMove? OR SPYMove?
Feed {no output}
SeqLab DoL MoveSX MoveSY XYSpace DoR0 FeedEnt DoM EOL
END
IF ZShiftOnly?
EntryMove
END
ELSE
IF SPXMove? OR SPYMove?
Rapid {no output}
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
END
IF FeedEntry?
LoadFeat Num#('0') Num#('0') ClearancePlane2#
IF ZMove?
Rapid {no output}
SeqLab DoZL ZCP2 ZSpace DoR0 RF DoM EOL
END
END
EntryMove
END
END
ToolPath
ExitMove
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
Rapid {no output}
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
CycleWarning
EachRep
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
Rapid {no output}
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
SetScale('1')
TrackXNO# ADD# Recall# Num#('4') SPX#
TrackYNO# ADD# Recall# Num#('5') SPY#
RestoreScale
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
Rapid {no output}
SeqLab DoL MoveSX MoveSY XYSpace DoR0 RF DoM EOL
END
AutoCycCutSub1
EachRep
IF NOT FirstCycle?
IF FeedConnect?
SetAbs
DoCycleComment
IF SPXMove? OR SPYMove?
SetInc
Rapid {no output}
SeqLab DoL ' IX' StartPosX# ' IY' StartPosY# XYSpace DoR0 RF DoM EOL
SetAbs
END
ELSE
SetAbs
ExitMove
DoCycleComment
IF SPXMove? OR SPYMove?
SetInc
Rapid {no output}
SeqLab DoL ' IX' StartPosX# ' IY' StartPosY# XYSpace DoR0 RF DoM EOL
SetAbs
END
IF FeedEntry?
Rapid {no output}
SeqLab DoZL ZCP2 ZSpace DoR0 RF DoM EOL
END
END
EntryMove
SetInc
END
EntryMove
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN

DrillStuff:
SeqLab DoZL ZCP2 ZSpace DoR0 RF CheckCoolOn EOL
GetCycle
IF RigidTap?
SeqLab ' CYCL DEF 17.0 FAST GAENGNING' EOL
SeqLab ' CYCL DEF 17.1 AVST ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 17.2 DJUP ' ZDepth# EOL
SeqLab ' CYCL DEF 17.3 V.TID 0' EOL
ELSE
IF Tap?
SeqLab ' CYCL DEF 2.0 G€NGBORRNING' EOL
SeqLab ' CYCL DEF 2.1 AVST ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 2.2 DJUP ' ZDepth# EOL
SeqLab ' CYCL DEF 2.3 V.TID 0' EOL
SeqLab ' CYCL DEF 2.4' FeedEnt EOL
ELSE
SeqLab ' CYCL DEF 1.0 PECKING' EOL
SeqLab ' CYCL DEF 1.1 SET UP ' ClearancePlane2# EOL
SeqLab ' CYCL DEF 1.2 DEPTH ' ZDepth# EOL
SeqLab ' CYCL DEF 1.3 PECKG '
IF Peck?
Peck#
ELSE
SetInc ZDepth# SetAbs
END
EOL
SeqLab ' CYCL DEF 1.4 DWELL '
IF Dwell?
Dwell#
ELSE
'0'
END
EOL
SeqLab ' CYCL DEF 1.5' FeedEnt EOL
END
END
TrackZNO# FIRST SPZ#
RETURN

CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN

SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN

GetStartOfSameTool:
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN

MasterSub:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
IF ToolChangeAtHome?
SetHome
END
Plane {no output}
SeqLab ' TOOL CALL ' Tool# ' Z ' Speed ToolTypeComments EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqLab DoL StrtPos XYSpace DoR0 RF SpinOn EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE

{Finish off last Operation}

Rapid {no output}
SeqLab DoL ZCP1 ZSpace DoR0 RF SpinOff EOL
DoEndOpPS
IF LAST ProgStop?
SeqLab ' STOP M02' EOL
END

{Start new Operation}

Plane {no output}
DoPartCycleComment
DoOpComments
DoPostScript
SeqLab ' TOOL CALL ' Tool# ' Z ' Speed ToolTypeComments EOL
CheckPass
SeqLab DoL StrtPos XYSpace DoR0 RF SpinOn EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqLab ' STOP M02' EOL
END

{Start new Operation}

GetStartOfSameTool
Plane {no output}
SeqLab DoL StrtPos XYSpace DoR0 RF DoM EOL
END
END
END {common point for all operations}
IF Milling?
SeqLab DoZL ZCP2 ZSpace DoR0 RF CheckCoolOn EOL
IF AutoCycle?
IF Repeats?
IF ZShiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
ELSE
NoRepAutoCycle
END
SetPass1
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
END
SeqLab ExitMove2 EOL
ckCRCOff
ELSE
IF Drilling?
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
SetDrillEndOpZ
Rapid {no output}
SeqLab DoZL ZCP3 ZSpace DoR0 RF CheckCoolOff EOL
END
END
RETURN

EndPartSub:
{End of program ************************************************************}

{finish last operation}
Rapid {no output}
SeqLab ' L' SpinOff EOL
DoEndOpPS
IF ProgStop?
SeqLab ' STOP M02' EOL
END
RETURN

DoNewPart:
IF NOT FirstPart?

{Finish off last Part}

IF FullUp?
Rapid {no output}
SeqLab DoL ZCP1 ZSpace DoR0 RF SpinOff EOL
END
{DoEndOpPS}

{Start new Part}

GetStartOfSameTool
SeqLab DoL StrtPos XYSpace DoR0 RF SpinOn EOL
END
RETURN

DoParts:
EachPart
EachOp
IF AllToolsOnePart?
MasterSub
ELSE { OneToolAllParts }
IF GTEqual? Operation# Recall# Num#('1') { Tool First Op }
IF LTEqual? Operation# Recall# Num#('2') { Tool Last Op }
IF Equal? Operation# Recall# Num#('1') { Tool First Op }
DoNewPart
END
MasterSub
END
END
END
NextOp
IF AllToolsOnePart?
EndPartSub
END
NextPart
RETURN

GetToolFirstOp:
Save# Num#('1') Recall# Num#('3')
RETURN

GetToolLastOP:
SetFlag('3')
EachOp
IF Flag?('2')
IF Flag?('3')
IF GTEqual? Operation# Recall# Num#('1')
Save# Num#('2') Operation#
IF LastOp?
SetFlagF('2')
Save# Num#('3') Num#('0')
ELSE
IF NEXT NewTool?
SetFlagF('3')
Save# Num#('3') NEXT Operation#
END
END
END
END
END
NextOp
RETURN

MPLoop:
IF AllToolsOnePart?
DoParts
ELSE { OneToolAllParts }
IF LTEqual? Recall# Num#('1') Recall# Num#('3')
GetToolFirstOp
GetToolLastOP
DoParts
END
END
RETURN

{Start of executable Prog **************************************************}

{setup and initializations}
InitProg
SetAbs
ReverseXZArcs
SetFlood
SetMaxRPM('6000')
IF Metric?
SetMaxFeed('2540')
ELSE
SetMaxFeed('100')
END
SaveProgNum2
SetProgNum('10')
Save# Num#('1') Num#('0') { Current Tool FirstOp# }
Save# Num#('2') Num#('0') { Current Tool LastOp# }
Save# Num#('3') Num#('0') { NewToolOp# }
Save# Num#('4') Num#('0') { XPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('5') Num#('0') { YPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('6') Num#('0') { LastFeat EPX# AbsPosValue for Repeated AutoCycles }
Save# Num#('7') Num#('0') { LastFeat EPY# AbsPosValue for Repeated AutoCycles }
Save# Num#('8') Num#('0') { PeckCycle }
SetFlagF('1') { CRCOff }
SetFlag('2') { MultipleParts OneToolAllParts }
SetFlag('3') { MultipleParts OneToolAllParts }
SetFlagF('4') { ArcFeat }
SetFlagF('5') { OutPut ArcFeat as StdLine when ArcR# LessThan Num#('.02mm') }
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
' 4thAxisCW(12.5), 4ACW(12.5) -' EOL
' generates a + A move of the value you specify' EOL
' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL
' generates a - A move of the value you specify' EOL
' 5thAxisCW(30), 5ACW(30) -' EOL
' generates a + B move of the value you specify' EOL
' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL
' generates a - B move of the value you specify' EOL
END

SeqLab ' BEGIN PGM ' Program2# ' MM' EOL
RestoreScale
SeqLab ' BLK FORM 0.1 Z X' XStockMin# ' Y' YStockMin# ' Z' ZStockMin# EOL
SeqLab ' BLK FORM 0.2 X' XStockMax# ' Y' YStockMax# ' Z' ZStockMax# EOL
SetScale('1')
IF UseComments?
IF ProgramNameComment?
'; PROGRAM: ' ProgramName$ EOL
END
IF ProgramComment?
'; ' ProgramComment$ EOL
END
IF FormatNameComment?
'; FORMAT: ' FormatName$ EOL
END
IF TimeComment?
'; ' Date$ ' AT ' Time$ EOL
END
IF MovesComment?
'; OUTPUT IN ABSOLUTE MILLIMETERS' EOL
END
IF PartsComment?
'; PARTS PROGRAMMED: ' Parts# EOL
END
IF StartToolComment?
'; FIRST TOOL NOT IN SPINDLE' EOL
END
END
OpenSub
RestoreScale
IF MultipleParts?
IF WorkFixtureOffsets?
'NOTE: This Post Processor does not support Work Fixture Offsets for Multiple Parts.' EOL
'Therefore, the output will be controlled by the following values that are' EOL
'already entered in Equally Spaced Offsets Edit Fields:' EOL
'X' PartShiftX# ' Y' PartShiftY# ' Z' PartShiftZ# EOL
'It is recommended that you change your selection to Equally Spaced Offsets.' EOL
END
IF OneToolAllParts?
EachOp
IF FirstOperation?
Save# Num#('3') Operation#
END
NextOp
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
EndPartSub
ELSE
MPLoop
END
ELSE
EachOp
MasterSub
NextOp
EndPartSub
END
SeqLab ' TOOL CALL 0' EOL
SeqLab ' L M2' EOL
SeqLab ' END PGM ' Program2# ' MM' EOL
Post
Close
Retag
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


Wyszukiwarka

Podobne podstrony:
Heid TNC 425 [HPM] M972 89m
Heid TNC 155 [EMC] M612 89m
Heid TNC 155 [Mikron] MV92 89m
Heid TNC 155 Hkrt Z M614 89m
Heid TNC 415 [ABB] M054 89m
Heid TNC 155 [FLV] MW06 89m
Heid TNC 425 [RI] MT39 89 1
Heid TNC 425 [PB] M053 89 2m
Heid TNC 155 Hkrt Y M613 89m
Heid TNC 151A S1[NM] M711 89m
Heid TNC 155 Lagun TC MT19 89m
Heid TNC 155 Mikron TC MT20 89m
Heid TNC 426 [RT] MV46 15m
Heid TNC 351B MD M989 89 5
Heid TNC 151 155 [BS] M891 81 4

więcej podobnych podstron