{Change Comments ***********************************************************}
{11/22/93,
Copied and modified: Hitachi Seiki Hicel T011.82
Created: HiTec-Turn 20SII T012.82
For: Nook Industries
Machine: HiTec-Turn 20SII
Control: HiTec-Turn 20SII
Created per conversations with Bill Mrozcka at Nook Industries, sample program and manual.
This Post Processor supports a Single, 10 position Turret with a Single Programmable Spindle C-Axis.
Supports G126/G127 Polar Coordinate Interpolation.
Output is exactly as if it were standard Milling, with one exception:
All XYPlane Flat Milling WorkGroups output 'C' SPY# for Start, and 'C' EPY# for ToolPath.
'G126' = PCIOn; 'G127' = PCIOff.
Deleted support of Y Axis output for C-Axis, modified per Fanuc 16T MS SL25 T007.82.4.
Deleted all output of literal V0.
Deleted YSP and YSPC subs, and calls to same.
Setting CalcSCAng for Non FaceMilling operations.
Deleted MoveSYC at DrillPos sub.
Deleted comparison of YMove for RapidFeat of Polar Coordinate Interpolation.
Deleted MoveYC at Feature and FormatArc subs.
Deleted all literal 'G17, G18 and G19' Plane Commands.
Deleted all literal 'G140' Automatic Nose R Compensation Cancel.
Deleted all literal 'G143' Automatic Nose R Compensation Effective.
Deleted all literal 'G145' Automatic Nose R Compensation Effective.
Deleted all literal 'M44' Rotating Tool Coupling.
Deleted all literal 'M45' Rotating Tool UnCoupling.
Deleted Preset 'S1500 P2' at C-Axis changeover.
Added Warning about lack of Flat Face Drilling support.
Deleted support of 30 position, Automatic Tool Change Magazine.
Deleted PreToolInit sub and call to same.
Deleted GetPreTool sub and call to same.
Changed Tool# to MoverToolNum# at ToolSeqLab sub.
Changed Tool# to MoverToolNum# at DoOpComments sub.
Deleted Tool# from ToolNum sub output.
T address outputs 4 digit value.
First two digits represent MoverToolNum.
Second two digits represent ToolOffset number.
When Offset number equals Tool List number, Offset value output is 00.
Retained support of OptionalCycle1/OptCyc1 PostScript command for BarPuller cycle and PartOff cycle.
BarPuller cycle is activated upon following conditions:
FirstOperation = TRUE.
TurningOp = TRUE.
Drilling = TRUE.
FIFO = TRUE.
CannedCycle = FALSE.
PartOff cycle is activated upon following conditions:
LastOp = TRUE.
TurningOp = TRUE.
ApproachOD = TRUE.
Retained deletion of support of PickOff Spindle, not available.
Modified Canned C-Axis Drilling Cycles.
Modified C-Axis Drilling Cycle G-Codes.
Deleted literal P0.005 Tap Dwell at DoDwell sub.
Modified output of DoRLevel sub.
RPlane is equal to incremental, radial distance from initial StartPoint to RPlane value.
Added SUB# and MUL# to FORMATS.
Deleted XStockMax# and ZStockMax# from FORMATS.
Changed SetMaxRPM from 10000 to 5000 at setup and initializations.
Added literal 'M15' LiveOff Command.
Modifed Canned Lathe Tapping Cycle output.
DWB}
{12/16/97
Converted & Updated: HiTec-Turn 20S-II T012.82
Created: HiTec-Turn 20S-II L679.85
For: Nook Industries
Versions: Catalyst v4.21.16(mac)/ComPost2 MSL 68K
Changes made per Pete Jackson
Converted & Updated to Version 4.2 per Fanuc 10T/6M T001.82.2 Format.
DWB}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '##0.0###;0.0'
#3 = '#######0'
#4 = '##0.0##;0.0'
#5 = '0.0#####;0.0'
#6 = '###0'
#7 = '#'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(MUL#,2) { Non-Canned Threading AutoFinish }
FORMAT(InFeedAngle#,2)
FORMAT(FirstMoveEPX#,2)
FORMAT(FirstMoveEPZ#,2)
FORMAT(Program#,3) {.72}
FORMAT(Operation#,3) {.72}
FORMAT(Tool#,3) {.72}
FORMAT(Dwell#,4) {.72}
FORMAT(FeedIPR#,5)
FORMAT(CalcEPRPM#,6)
FORMAT(RapidF#,7)
{Special Subroutines *******************************************************}
ToolSeqLab: { Called from FirstOperation AND NewTool }
'N' Tool# '00'
RETURN
ToolNum:
OpToolID
IF Equal? Tool# ToolOffset#
'00'
ELSE
LatheOffset
END
RETURN
BarPuller: { Called from FirstOperation with OptCyc1 }
SeqLabC ' M40' EOL { LowGear }
SeqLabC ' G98' EOL { Inches Per Minute }
SeqLabC Rapid StockOn XSP StockOff
IF GreaterThan? ZOpCP# ZStockMax#
ZOpCP
ELSE
ThisOpEntryZCP
END
EOL
SeqLabC StockOn ZSPC EOL
EachFeat
IF LastFeat?
SeqLabC ' M69' EOL { Chuck Open }
SeqLabC ' G04 P3.0' EOL
SeqLabC Feed StockOff ZOpECPC EOL
SeqLabC ' M68' EOL { Chuck Close }
SeqLabC ' G04 P3.0' EOL
SeqLabC Rapid ZOpCP EOL
ELSE
SeqLabC FeedC MoveZC FeedRateC EOL
END
NextFeat
SeqLabC ' G30 U0' EOL { Return to Second Reference Point }
SeqLabC ' G30 W0' EOL
SeqLabC ' M31' EOL { No WorkPiece Check }
SeqLabC ' G04 P0.5' EOL
RETURN
RefReturn: { Called from FirstOperation AND NewTool }
' G30 U0 W0' { Return to Second Reference Point }
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
DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ' '
IF Flag?('2') { OptCyc1 }
'Bar Puller'
ELSE
IF Flag?('3') { OptCyc1 }
'CutOff'
ELSE
OperationType$
END
END
' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ' ' ToolSize$ ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN
PSInit: {reset flags from last Op, .70}
OptCyc1F
RETURN
PSStuff:
RETURN
DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL {literals}
PSStuff {commands}
NextPS
IF OptCyc1?
IF FirstOperation? AND Drilling? AND FIFO? AND NOT CannedCycle?
SetFlag('2') { Bar Puller }
END
IF LastOp? AND ApproachOD?
SetFlag('3') { PartOff Cycle }
END
END
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN
StockOnNoCan:
IF NOT CannedCycle?
StockOn {need stock for SP positioning, if not a canned cycle}
END
RETURN
FeedNoCan:
IF NOT CannedCycle?
FeedC
END
RETURN
FeedRateNoCan:
IF NOT CannedCycle?
FeedRateC
END
RETURN
ApproachSP:
IF ApproachFace?
SeqLabC StockOnNoCan XSPC EOL
SeqLabC StockOff ZOpCPC EOL
StockOnNoCan
IF NotEqual? CycleStartZ# ZOpCP#
SeqLabC FeedNoCan ZSPC FeedRateNoCan EOL
END
ELSE { ODApproach/IDApproach }
SeqLabC StockOnNoCan ZSPC EOL
SeqLabC StockOff XOpCDC EOL
StockOnNoCan
IF NotEqual? CycleStartX# XOpCD#
SeqLabC FeedNoCan XSPC FeedRateNoCan EOL
END
END
RETURN
AppMove:
StockOff ThisOpEntryZCP SpinOn
RETURN
Approach: { NOT FOR TAILSTOCK, .82 }
Rapid RapidF# { RapidF# Forces FeedRate }
IF ApproachOD?
SeqLabC ThisOpEntryXCP AppMove EOL
ELSE
IF ApproachID?
SeqLabC XOpCD AppMove EOL
ELSE {ApproachFace}
SeqLabC StockOnNoCan XSP AppMove EOL
END
END
ApproachSP
RETURN
CheckOffset:
DoEndOpPS
IF LAST ProgStop?
SeqLabC ' M00' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
END
IF NewToolOffset?
SeqLabC ToolNum EOL
END
IF ConstantSurfaceFeed?
CSSOn
IF LAST ConstantSurfaceFeed?
IF NotEqual? MaxRPM# LAST MaxRPM#
SeqLabC Preset MaxRPM EOL
END
IF LAST ProgStop?
' G96' Speed
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
' G96' Speed
END
END
ELSE
SeqLabC Preset MaxRPM EOL
' G96' Speed
END
ELSE
CSSOff
IF LAST ConstantSurfaceFeed?
' G97' Speed
ELSE
IF LAST ProgStop?
' G97' Speed
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
' G97' Speed
END
END
END
END
IF LAST ProgStop?
SeqLabC {SpeedC} SpinOn EOL
SeqLabC CoolOn EOL
ELSE
IF NOT CoolOff? AND LAST CoolOff?
SeqLabC CoolOn EOL
END
END
DoPostScript
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXC MoveZC ArcRC
RETURN
CkCRC: { 4.2 }
IF XMove? OR ZMove? { Approach Length Feature and Multiple Pockets }
IF LastFeat?
CRCOffC { Exit Length Feature }
ELSE
CRCOnC { Entry Length Feature }
END
END
RETURN
ToolPath:
EACHFeat
GetToolTip
IF LastFeat?
IF Drilling?
IF Tap?
SeqLabC SpinOff EOL
SeqLabC ' G04 P2.0' EOL
SeqLabC Speed InverseSpinOn EOL
ELSE
IF Dwell?
SeqLabC ' G04 P' Dwell# EOL
END
END
ELSE
IF CannedCycle?
SeqLab
END
END
END
IF PointFeat?
SeqLabC MoveSXYC EOL
ELSE
IF RapidFeat?
IF LAST ThreadFeat?
Rapid
END
SeqLabC RapidC MoveXC MoveZC EOL
ELSE
IF LineFeat?
SeqLabC CkCRC FeedC MoveXC MoveZC FeedRateC EOL
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqLabC FormatArc FeedRateC EOL
NEXTQuadrant
ELSE
IF ThreadFeat?
SeqLabC ' G32' MoveXC MoveZC ThrdLead EOL
END
END
END
END
END
NEXTFeat
RETURN
CheckRapid:
CRCOffC
IF LAST CannedCycle? OR LAST Threading?
Rapid
ELSE
RapidC
END
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
SetAbs
PosSideLathe
StandardXZArcs
SetMaxRPM('5000')
IF Metric?
SetMaxFeed('12700')
ELSE
SetMaxFeed('500')
END
SetFlagF('2') { BarPullerCycle }
SetFlagF('3') { PartOffCycle }
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: must be all capital letters when typed in.' 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
' OptionalCycle1, OptCyc1 -' EOL
' BarPuller Cycle will be output for First Operation that contains this command.' EOL
' In addition to this, Operation must be of the Lathe FI-FO Drilling Cycle, with' EOL
' Prefer Canned NOT checked in General Info 1 Dialog.' EOL
' CutOff Cycle will be output for Last Operation that contains this command.' EOL
' In addition to this, Operation must be of the Lathe OD Approach Turning type.' EOL
END
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
EOR EOL
ProgID1
IF UseComments? AND ProgramNameComment?
'( ' ProgramName$ ' )'
END
EOL
IF UseComments?
IF ProgramComment?
'( ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
'( FORMAT ' FormatName$ ' )' EOL
END
IF TimeComment?
'( ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
'( OUTPUT IN ABSOLUTE INCHES )' EOL
END
END
RestoreScale
OpenSub
StockOff {.71.2}
SetHome
SeqLab Preset ' S5000' EOL
SeqLab ' G28 U0' EOL { Return to First Reference Point }
SeqLab ' G28 W0' EOL
SeqLab ProgStop EOL
' ' EOL
DoPostScript
DoOpComments
Plane
IF Flag?('2') { OptCyc1 Bar Puller }
ToolSeqLab ToolNum EOL
BarPuller
ELSE
ToolSeqLab ToolNum GearRange EOL
IF ConstantSurfaceFeed?
SeqLabC Preset MaxRPM EOL
SeqLabC CSSOff ' G99 G97' CalcRPM1 CoolOn EOL { FeedRate per Revolution }
ELSE
SeqLabC CSSOff ' G99 G97' Speed CoolOn EOL { FeedRate per Revolution }
END
Approach
END
ELSE
IF NewTool?
{Finish off last Operation}
StockOff {.62}
IF Flag?('2') { OptCyc1 Bar Puller }
SetFlagF('2')
ELSE
CheckRapid
IF LAST ApproachOD?
SeqLabC LAST OpExitXCPC EOL
ELSE
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
END
END
SeqLabC LAST OpExitZCPC EOL
DoEndOpPS
IF LAST ConstantSurfaceFeed?
SeqLabC CSSOff ' G97' RefReturn CalcRPM2 EOL
ELSE
SeqLabC RefReturn EOL
END
IF CWSpindle? AND LAST NOT CWSpindle?
SeqLabC SpinOff EOL
ELSE
IF NOT CWSpindle? AND LAST CWSpindle?
SeqLabC SpinOff EOL
END
END
END
IF LAST ProgStop?
SeqLabC ' M00' EOL
ELSE
SeqLabC ProgStop EOL
END
{Start new Operation}
' ' EOL
DoOpComments
DoPostScript
ToolSeqLab ToolNum
IF Flag?('3') { PartOff Cycle }
' M40' { LowGear/C-Axis Coupling Release }
ELSE
GearRange
END
EOL
IF ConstantSurfaceFeed?
SeqLabC Preset MaxRPM EOL
SeqLabC CSSOff ' G99 G97' CalcRPM1 CoolOn EOL { FeedRate per Revolution }
ELSE
SeqLabC CSSOff ' G99 G97' Speed CoolOn EOL { FeedRate per Revolution }
END
IF Flag?('3') { PartOff Cycle }
SeqLabC ' G04 P1.0 M63' EOL { Unloader Out }
END
Approach
ELSE
IF SameTool? {.62}
{Start new Operation}
StockOff
DoOpComments
IF LAST StraightConnect?
CheckOffset
CheckRapid
SeqLabC StockOnNoCan XSPC ZSPC EOL
ELSE
CheckRapid
IF ApproachOD?
IF LAST ApproachOD?
SeqLabC LAST XOpECDC EOL
ELSE {around}
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC LAST OpExitXCPC EOL
END
ELSE
IF ApproachID?
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC XOpCDC EOL
END
ELSE {ApproachFace}
IF LAST ApproachFace?
SeqLabC LAST ZOpECPC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
ELSE {LAST ApproachID}
SeqLabC LAST XOpECDC EOL
END
SeqLabC LAST OpExitZCPC EOL
END
END
END
CheckOffset
ApproachSP
END
END
END
END {common point for all operations}
IF ConstantSurfaceFeed? AND NOT SameTool?
SeqLabC CSSOn ' G96' Speed EOL
END
IF CannedCycle?
StockOff
IF Roughing?
IF RoughSimple?
StockOn
SetPass1
SeqLabC LCycle
IF ApproachFace?
XatFinZ ' Z' FirstMoveEPZ#
ELSE
XatFinZ FinZ
END
XTapAtZ FeedRate EOL
SimpleRough
ELSE
TagInc
SetPass2
IF RoughContour?
SeqLabC LCycle ' PÅ‚' Tag# ' Q²' Tag# XStkLeft ZStkLeft CutDepth FeedRate EOL
'>' Tag# EOL
SeqLab StepMove StrtPos EOL
ELSE
IF RoughPatternShift?
SeqLabC LCycle ' PÅ‚' Tag# ' Q²' Tag# XStkLeft ZStkLeft XminusU ZminusW NumCuts FeedRate EOL
'>' Tag# EOL
SeqLab Rapid StrtPos EOL
END
END
ToolPath
'<' Tag# EOL
IF AutoFinish?
SeqLabC ' G70' ' PÅ‚' Tag# ' Q²' Tag# EOL
END
SetPass1
TrackXNO# CycleStartX#
TrackZNO# CycleStartZ#
END
ELSE
IF Threading?
IF Chamfer?
SeqLabC ' M23' EOL
END
IF SingleEdgeCut?
SeqLabC LCycle XatFinZ FinZ XTapAtZ ThrdHeight CutDepth ThrdLead ' A' InFeedAngle# CutMethod EOL
IF AutoFinish?
SeqLabC ' G92' XatFinZ FinZ XTapAtZ ThrdLead EOL
END
ELSE
SeqLabC ' G92 X' FirstMoveEPX# FinZ XTapAtZ ThrdLead EOL
SimpleRough
IF AutoFinish?
SeqLabC XatFinZ EOL
END
END
IF Chamfer?
SeqLabC ' M24' EOL
END
ELSE
IF Drilling?
IF Tap?
SeqLabC LCycle ZDepth ' E' FeedIPR# SpinOff EOL
SeqLabC ' G04 P0.5' EOL
SeqLabC LCycle ZSP InverseSpinOn EOL
ELSE
IF PeckChipBreaker?
SeqLabC LCycle ZDepth RLevel Dwell Peck Retract FeedRate EOL
SeqLabC DrillOff EOL
IF AutoFinish?
SeqLabC Feed ZDepth EOL
IF Dwell?
SeqLabC ' G04 P' Dwell# EOL
END
SeqLabC Rapid ZSP EOL
END
END
END
END
END
END
ELSE
IF NOT Flag?('2') { OptCyc1 Bar Puller }
StockOn
SetPass1
ToolPath
IF AutoFinish? { .82.1c }
StockOff
IF Turning?
IF ApproachFace?
SeqLabC RapidC ZOpECPC EOL
ELSE
SeqLabC RapidC XOpECDC EOL
END
ApproachSP
SeqLabC StockOff StrtPosC EOL
ToolPath
ELSE
IF Roughing? AND NOT RoughSimple?
SetPass2
SeqLabC RapidC XSPC ZSPC EOL
SeqLabC StockOff StrtPosC EOL
ToolPath
SetPass1
ELSE
IF Threading?
SeqLabC ' X' MUL# Num#('2') ADD# FinishXRadius# Taper# EOL
SeqLabC ' G32'
IF Taper?
XatFinZ
END
FinZ ThrdLead EOL
SeqLabC Rapid XSP EOL
SeqLabC ZSP EOL
END
END
END
END
END
IF Drilling? AND Tap?
SeqLabC SpinOff EOL
SeqLabC ' G04 P2.0' EOL
SeqLabC Speed SpinOn EOL
END
END
NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation}
StockOff
CRCOffC
IF CannedCycle? OR Threading?
Rapid
ELSE
RapidC
END
IF ApproachOD?
SeqLabC OpExitXCPC EOL
ELSE
IF ApproachID?
SeqLabC XOpECDC EOL
END
END
SeqLabC OpExitZCPC EOL
DoEndOpPS
IF ConstantSurfaceFeed?
SeqLabC CSSOff ' G97' RefReturn ' S' CalcEPRPM# EOL
ELSE
SeqLabC RefReturn EOL
END
IF Flag?('3') { OptCyc1 PartOff Cycle }
SeqLabC ' G04 P1.0 M64' EOL { Unloader Return }
END
IF ProgStop?
SeqLabC ' M00' EOL
ELSE
SeqLabC ProgStop EOL
END
' ' EOL
SeqLabC CoolOff EOL
SeqLabC SpinOff EOL
SeqLabC ' G28 U0 W0' EOL { Return to First Reference Point }
SeqLabC EOP EOL
Post
EOR EOL
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:
Bostomatic SPC II MX42 85Omni Turn GT 75 L631 85 3Bostomatic SPC II CSD MX41 85Bostomatic SPC II CSD MX41 85Omni Turn GT 75 [CMP] L744 85Alchemia II Rozdział 8Do W cyrkulacja oceaniczna II rokTest II III etap VIII OWoUERecht 5 BVerfG IIBudownictwo Ogolne II zaoczne wyklad 13 ppozJęzyk niemiecki dwujęzyczna arkusz IIAngielski II zaliczenieprzetworniki II opracowaneMiBM Zestaw IIProgram wykładu Fizyka II 14 15więcej podobnych podstron