CNCzone.com-The Largest Machinist Community on the net!



Home Page Mark Forums Read Today's Posts My Replies Classifieds Reviews Photo Gallery Web Links Share Files Advertise With Us Ad List
Go Back   CNCzone.com-The Largest Machinist Community on the net! > Machine Controllers Software and Solutions > G-Code Programing


G-Code Programing Discuss G-code programing and problems here!


This forum is sponsored by:

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Ban this user!
Old 11-20-2005, 01:37 AM
 
Join Date: Nov 2005
Location: U.S.A.
Posts: 9
Equinox is on a distinguished road
Macro's for the masses

I run an Okuma MA-600HB "HMC". We do a family of parts so there was alot similarity between each part so the subs became crucial. It's an OSP control so you may see some prepriatary crap. If you use them they should be able to recognize the okuma prepriatary code and remove it. These subs are built to just plug in dia/depth and run. We use the new renishaw so I use common variables for alot of my code. Would be just as easy to do locals.


This one I use to rough angles say,,, for a butt weld blank. It has plug-ins for just about everything you would hope to change. I have a shortend version I will add but hasnt even been simulated.

(--------------------------------------------------------------)

OT4A ( T4 Sub "tornado milling" )
S2037
G0 X0 Y0
Z.1
/M8
CALL OTORNA PSDI=4.410 PFDI=3.670 PTDI=-.750 PSZL=-.483 PFZL=-.4169 PZPR=.0165 PROT=2 PSFR=36.6 PFFR=36.6 PIFR=36.6
CALL OTORNA PSDI=3.670 PFDI=2.571 PTDI=-.750 PSZL=-.4169 PFZL=0 PZPR=.050 PROT=2 PSFR=36.6 PFFR=48.8 PIFR=36.6
CALL OMZ
RTS

(--------------------------------------------------------------)

OTORN ( Tornado milling sub program )

SDIA=PSDI (START DIAMETER)
FDIA=PFDI (FINISH DIAMETER)
TDIA=PTDI (TOOL DIAMETER)
SZL=PSZL (START Z LOCATION)
FZL=PFZL (FINISH Z LOCATION)
ZIPR=PZPR (Z AXIS INCH PER REVOLUTION)
ROT=PROT (ROTATION 2 = CW 3 = CCW)
SFR=PSFR (STARTING FEED RATE)
FFR=PFFR (FINISHING FEED RATE)
IFR=PIFR (INFEED FEED RATE FOR Z AXIS)

VC192=[SZL-FZL]/ZIPR (NUMBER OF REVOLUTIONS)
VC192=ROUND[VC192]
IF[VC192 GE 0]NSC1
VC192=VC192*[-1]
NSC1

VC193=[FZL-SZL]/VC192/4 (Z CHANGE PER 90 DEGREES)

VC194=[[[FDIA-SDIA]/2]/VC192]/4 (RADIUS CHANGE PER 90 DEGREE)

VC195=[SDIA-TDIA]/2 (START RADIUS)

VC196=VC192 (COUNTER)
VC197=SZL (START Z)

VC198=[FFR-SFR]/VC192/4 (FEER RATE CHANGE PER 90 DEGREES)
VC199=SFR (START FEED RATE)

G0X=VC195
G1Z=SZL F=IFR

NL1
IF[ROT EQ 2]NCW
G3 X0 Y=VC195+[VC194*1] R=VC195+[VC194*1] Z=VC197+[VC193*1] F=VC199+[VC198*1]
G3 X=-[VC195+[VC194*2]] Y0 R=VC195+[VC194*2] Z=VC197+[VC193*2] F=VC199+[VC198*2]
G3 X0 Y=-[VC195+[VC194*3]] R=VC195+[VC194*3] Z=VC197+[VC193*3] F=VC199+[VC198*3]
G3 X=VC195+[VC194*4] Y0 R=VC195+[VC194*4] Z=VC197+[VC193*4] F=VC199+[VC198*4]
GOTO NCWS
NCW
G2 X0 Y=-[VC195+[VC194*1]] R=VC195+[VC194*1] Z=VC197+[VC193*1] F=VC199+[VC198*1]
G2 X=-[VC195+[VC194*2]] Y0 R=VC195+[VC194*2] Z=VC197+[VC193*2] F=VC199+[VC198*2]
G2 X0 Y=VC195+[VC194*3] R=VC195+[VC194*3] Z=VC197+[VC193*3] F=VC199+[VC198*3]
G2 X=VC195+[VC194*4] Y0 R=VC195+[VC194*4] Z=VC197+[VC193*4] F=VC199+[VC198*4]
NCWS

VC195=VC195+[VC194*4] VC197=VC197+[VC193*4] VC199=VC199+[VC198*4]
VC196=VC196-1
IF[VC196 EQ 0]NLS
GOTO NL1
NLS
RTS

(--------------------------------------------------------------)






The one not proven. This will allow you to use the sub for finish applications.

CALL OT4A
M30

(--------------------------------------------------------------)

OTORN ( Tornado milling sub program )

(PSD = START DIAMETER)
(PFD = FINISH DIAMETER)
(PTD = TOOL DIAMETER)
(PSZ = START Z LOCATION)
(PFZ = FINISH Z LOCATION)
(PIZ = Z AXIS INCH PER REVOLUTION)
(PRT = ROTATION 2 = CW 3 = CCW)
(PSF = STARTING FEED RATE)
(PFF = FINISHING FEED RATE)
(PIF = INFEED FEED RATE FOR Z AXIS)

PDV=30 (DIVISIONS OF 360 DEGREES)
PSA=0 (START ANGLE)

PNR=[PSZ-PFZ]/PIZ (NUMBER OF REVOLUTIONS)
PNR=ABS[PNR]
PNR=ROUND[PNR]

PIA=360/PDV (ANGLE CHANGE PER 1 DIVISION DEGREE)

PIZ=[PFZ-PSZ]/PNR/PDV (Z CHANGE PER 1 DIVISION DEGREE)

PIR=[[[PFD-PSD]/2]/PNR]/PDV (RADIUS CHANGE PER 1 DIVISION DEGREE)

PFI=0
IF [PSF EQ PFF]NFS
PFI=[[PSF-PFF]/PNR]/PDV (FEED CHANGE PER 1 DIVISION DEGREE)
IF [PFF LT PSF]NFS
PFI=PFI*[-1]
NFS

PA=PSA (START ANGLE)

PR=[PSD+PTD]/2 (START RADIUS)

PF=PSF (START FEED RATE)

PZ=PSZ (START Z VALUE)

IF[PRT EQ 3]NCCW
PRT=2 (DEFAULT TO CLOCKWISE ROTATION IF NO PRT)
PIA=PIA*[-1]
NCCW

G0 X=[PR*COS[PA]] Y=[PR*SIN[PA]]

G1 Z=PSZ F=PIF

LC1=0 (LOOP COUNTER 1)

NLC1 LC1=LC1+1 PR=PR+PIR PA=PA+PIA PF=PF+PFI PZ=PZ+PIZ
G=PRT X=[PR*COS[PA]] Y=[PR*SIN[PA]] Z=PZ R=PR F=PF
IF [LC1 EQ [PDV*PNR]]NLCS1
GOTO NLC1
NLCS1

RTS
(--------------------------------------------------------------)

Sticking with milling here is a good I.D. interp. Same thing with the plug-ins here.

(----------------------------------------------------------------)

OT4 ( T4 Sub )
S2037
G0 X0 Y0
Z1.0
/M8
G1 Z.1 F100
Z-.750 F25
CALL OT4A PRS=.0625 PRF=.440 FR1=33.4 FR2=33.4 FR3=39.4 FR4=45.4 FR5=22.4
CALL OT4B
CALL OT4C
RTS

(--------------------------------------------------------------)

OT4A ( T4 SUB )
( SPIRAL ROUGH ???? ID PRS= PRF= FR1= FR2=)
PDV=32 AI=360/PDV PRI=[PRF-PRS]/PDV FI=[FR1-FR2]/PDV
G1 G41 Y=PRS I1 F50
PX=0 PY=PRS PR=PRS LC=0 AL=90 FIS=FR1+FI
NLC LC=LC+1 PR=PR+PRI AL=AL+AI FIS=FIS-FI
G3 X=[PR*COS[AL]] Y=[PR*SIN[AL]] R=PR F=FIS
IF [LC EQ PDV]NLCS
GOTO NLC
NLCS
PX=0 PY=PRF PR=PRF LC=0 AL=90 FIS=FR2-FI
NLC2 LC=LC+1 AL=AL+AI FIS=FIS+FI
G3 X=[PR*COS[AL]] Y=[PR*SIN[AL]] R=PR F=FIS
IF [LC EQ PDV]NLCS2
GOTO NLC2
NLCS2
X=-[[PRF-PRS]/2] Y=PRS+[PRF-PRS]/2 R=[PRF-PRS]/2 F50
G1 G40 X0 Y0
RTS

(--------------------------------------------------------------)


In the boring department I use alot of Kaiser bars. at least 13 in this family of parts. So I use only one sub and it does all the depths and R points. VC200 is a finish dia and VC88 is a forging location. VC191 is finish depth. Several Items use the same common variables. as this drilling program.V---V

OKAIS ( Global Sub "for all Kaiser bars" )
CALL OTCK
X0 Y0
Z1
/M51
Z.1
G1 Z=-VC200+VC88+.100 F100
VMPC2=1
VMPT=1
G95 Z=-VC191-.003 F.0013
Z=-VC191-.001 F.0001
VMPC2=0
M19 RS=0
G94 G0 Y.004
Z1
M03
CALL OMZ
RTS

(----------------------------------------------------------------)

OG58 ( T58 Global Sub "drilling")
CALL OTCK
X0 Y0
Z1
/M51
Z.1
S737 G1 Z=-VC200+VC88+.150 F100
VMPC2=1
VMPT=1
G95 Z=-VC200+VC88-.250 F.005
Z=-VC200+VC88-VC180 F.008
S847 Z=-VC191-VC180-.010 F.004
G94 G4 F.2
VMPC2=0
CALL OMZ
RTS

(----------------------------------------------------------------)

Im not sure there is interest in macro's so I better stop here before I go blabbing 10k of useless info
Reply With Quote

  #2   Ban this user!
Old 04-03-2006, 04:41 PM
 
Join Date: Feb 2005
Location: U.S.ofA.
Posts: 91
Bear is on a distinguished road

Equinox, Hi
could give example of what to change and where in the id tornado?Ive been saving
these and finally had time to try them out and all I get is 1 full round and no Z
movement.Im new to marcos and dont fully understand,but am working on them.
Thanks
Bear
Reply With Quote

  #3   Ban this user!
Old 06-20-2006, 09:32 AM
broby's Avatar  
Join Date: Apr 2006
Location: Australia
Age: 48
Posts: 578
broby is on a distinguished road

Hello Equinox,
I also have an Okuma MA600 Machining Centre and developed a Helical milling macro many years ago. (Tornado Milling by another name) It would appear that my code solution is some what easier to implement than the above example as I have set up a G Code macro link on the machine to link the library subroutine to G103... refer your manuals if you do not know how to do this... or ask me and I will post instructions for you.

anyway... the library file contains the following code in a file called HELLIMILL.LIB (on the machine)

OHELI
(MILL HELICAL SUBROUTINE)
IF [PD EQ EMPTY ] NALM2
IF [PE EQ EMPTY ] NALM3
IF [PF EQ EMPTY ] NALM4
IF [PP EQ EMPTY ] NALM5
IF [PS EQ EMPTY ] NALM6
IF [PW EQ EMPTY ] NALM7
IF [PZ EQ EMPTY ] NALM8
IF [PR EQ EMPTY ] NALM9
N2 TODR=PD/2 (RADIUS OF MAJOR DIAMETER)
N4 RATE=PS*PE*PF (CALCULATE LINEAR FEEDRATE)
N8 DPTH=PW-PZ (ACTUAL DEPTH OF HOLE)
N10 QTYP=DPTH/PP (QUANTITY OF PASSES REQUIRED TO MILL THREAD)
N12 QTYP=ROUND[QTYP+0.5] (ROUNDUP THE NUMBER OF PASSES)
N14 PTCH=[DPTH/QTYP]*-1 (CALC ACTUAL PITCH REQ)
N16 PASS=0 (COUNTER FOR NUMBER OF PASSES MILLED)
N18 G0 Z=PR (RAPID TO "R" PLANE)
N20 G1 Z=PW F6000. (FEED TO "W" WORKING SURFACE)
N22 G91 G41 DA X=TODR Z0 F=RATE (MOVE FROM CENTRE OF HOLE TO DIAMETER, TURNING ON CUTTER RAD COMP)
NJP1 G3 X0 Y0 I-[TODR] J0 Z=PTCH F=RATE (FULL PITCH)
N24 PASS=PASS+1 (INCREMENT COUNTER)
N26 IF [PASS LT QTYP] NJP1 (JUMP BACK TO NEXT PASS CONDITION)
N28 G3 X0 Y0 I-[TODR] J0 (FULL CIRCLE CLEANUP)
N30 G1 G40 X-[TODR] Z0 F=RATE*5 (BACK TO CENTRE)
N32 G0 G90 Z=PR (CLEAR HOLE)
N34 GOTO NEND
NALM2
VNCOM[1]=1
MSG(MISSING DATA "D")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM3
VNCOM[1]=1
MSG(MISSING DATA "E")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM4
VNCOM[1]=1
MSG(MISSING DATA "F")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM5
VNCOM[1]=1
MSG(MISSING DATA "P")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM6
VNCOM[1]=1
MSG(MISSING DATA "S")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM7
VNCOM[1]=1
MSG(MISSING DATA "W")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM8
VNCOM[1]=1
MSG(MISSING DATA "Z")
M00
NMSG
VNCOM[1]=0
GOTO NEND
NALM9
VNCOM[1]=1
MSG(MISSING DATA "R")
M00
NMSG
VNCOM[1]=0
NEND G90
RTS
%

To use the program, follow the example below

Helical Milling Programming MA600
Definitions:
G103 G Code for the Helical program VIA G-Code Macro setting.
G100 Cancel Subprogram same as using G80 for std drilling cycles
D Hole Diameter
E Number of Flutes on the cutter
F Feed rate per Flute
P Z amount per rev. Pitch, in MM
R Reference Z Height
S RPM of tool
W Top surface of hole (Z).
Z Depth of hole.

Sample program:
Mill a hole 62mm diameter 70mm deep using a 4 flute 40mm diam tip tool.

N1 M3 S1432
N2 M8
N3 G0 Xstartpos Ystartpos
N4 G56 HA Z700
N5 Z20. (reference height)
N6 G103 D62 E4 F0.15 P4. R20. S1432 W0. Z-70.
N7 Xpos Ypos
N8 Xnext Ynext
or
N9 ARC or BHC or LAA...
N10 G100
N11 G0 Z20.
N12 M5
N13 M209
N14 Z700
N15 M6
N16 M1
...

As you might be able to see, the use of the helical milling routine is as simple as drilling a hole! The main tricks to remember when using the G103 command is to not just position at the first point and call the routine, as in like a drilling cycle, and then list the points for the next hole... but to list the first point and all other points on the line after the G103 line and make sure you cancel the cycle with a G100!
I have included comments for most lines to explain what they do... the bulk of the library file is actually taken up with alarm statements to help the user at the machine if any part of the G103 command is missing.
As the macro uses incremental mode for machining the hole, you can position the tool anywhere on the job and call this routine very easily.
I have found this macro to be VERY handy and a very fast way of programming helical milled holes.
Let me know if you find it useful.
Regards
Brian.
Reply With Quote

  #4   Ban this user!
Old 06-22-2006, 12:08 AM
 
Join Date: Nov 2005
Location: U.S.A.
Posts: 9
Equinox is on a distinguished road

Bear,

here is a more updated version of the program. It really breaks the machine down if you dont have newer controls because I make it calculate every 1 degree now so I can use ball nose mills for rough/finish applications. Saved me time using single tool ops.U shouldnt have to change anything is my guess. Best things in life I find is simulators to check your work. I havent run this model yet. Just finished it but maybe only 2 edits to it.

(***********************************************************)

OTORN ( T4 Tornado milling sub program )

(PSD = START DIAMETER)
(PFD = FINISH DIAMETER)
(PTD = TOOL DIAMETER)
(PSZ = START Z LOCATION)
(PFZ = FINISH Z LOCATION)
(PIZ = Z AXIS INCH PER REVOLUTION)
(PRT = ROTATION 2 = CW 3 = CCW)
(PSF = STARTING FEED RATE)
(PFF = FINISHING FEED RATE)
(PIF = INFEED FEED RATE FOR Z AXIS)

PDV=1 (DIVISIONS OF 360 DEGREES)
PSA=0 (START ANGLE)

PNR=[PSZ-PFZ]/PIZ (NUMBER OF REVOLUTIONS)
PNR=ABS[PNR]
PNR=ROUND[PNR]

PIA=360/PDV (ANGLE CHANGE PER 1 DIVISION DEGREE)

PIZ=[PFZ-PSZ]/PNR/PDV (Z CHANGE PER 1 DIVISION DEGREE)

PIR=[[[PFD-PSD]/2]/PNR]/PDV (RADIUS CHANGE PER 1 DIVISION DEGREE)

PFI=0
IF [PSF EQ PFF]NFS
PFI=[[PSF-PFF]/PNR]/PDV (FEED CHANGE PER 1 DIVISION DEGREE)
IF [PFF LT PSF]NFS
PFI=PFI*[-1]
NFS

PA=PSA (START ANGLE)

PR=[PSD+PTD]/2 (START RADIUS)

PF=PSF (START FEED RATE)

PZ=PSZ (START Z VALUE)

IF[PRT EQ 3]NCCW
PRT=2 (DEFAULT TO CLOCKWISE ROTATION IF NO PRT)
PIA=PIA*[-1]
NCCW

G0 X=[PR*COS[PA]] Y=[PR*SIN[PA]]

G1 Z=PSZ F=PIF

LC1=0 (LOOP COUNTER 1)

NLC1 LC1=LC1+1 PR=PR+PIR PA=PA+PIA PF=PF+PFI PZ=PZ+PIZ
G=PRT X=[PR*COS[PA]] Y=[PR*SIN[PA]] Z=PZ R=PR F=PF
IF [LC1 EQ [PDV*PNR]]NLCS1
GOTO NLC1
NLCS1

RTS

(***********************************************************)

Broby,

I just called it OTORN so operators could easily recognize it in the subs. Its actually a vortex milling op. I wasnt able to see how G103 could be used for vortex style milling. I was looking fir Dia changes in the routine and wasnt able to see it calculation. I assume its just a Heli mill op. However I so need to get into the library definded subs. I do appreciate the info. If im wrong its out of ignorance Thanks bro. Also, found a sweet deal on how to get mop linked with what material im using and what speeds and feeds to run per different materials. If you have mop this is the ****. You will see how I make VCs represent MOP AND Materials different feeds and speeds.

PS: this is for OKUMA's only, thats why they rock and others suck!

(***********************************************************)

OMT3 (T3="1.114/1.335 Allied custom spade for seat depth AM200 coat")

NF22
IF[VC[170] NE 1]NF22S
CALL OGM3 PSD1=595 PSD2=500 PSD3=357
$ PFR1=.009 PFR2=.012 PFR3=.001
NF22S

NA105
IF[VC[170] NE 2]NA105S
CALL OGM3 PSD1=??? PSD2=??? PSD3=???
$ PFR1=??? PFR2=??? PFR3=???
NA105S

NF91
IF[VC[170] NE 3]NF91S
CALL OGM3 PSD1=??? PSD2=??? PSD3=???
$ PFR1=??? PFR2=??? PFR3=???
NF91S

RTS

(-----------------------------------------------------------)

OGM3 ( T3 Global main "for all .630 bore's" )

NB3C
IF[VC[3] NE 0]NB3CS
CALL O23
CALL OGS3 PSD1=PSD1 PSD2=PSD2 PSD3=PSD3
$ PFR1=PFR1 PFR2=PFR2 PFR3=PFR3
NB3CS

NB3B
IF[VC[2] NE 0]NB3BS
CALL O22
CALL OGS3 PSD1=PSD1 PSD2=PSD2 PSD3=PSD3
$ PFR1=PFR1 PFR2=PFR2 PFR3=PFR3
NB3BS

G30P9

ND3D
IF[VC[4] NE 0]ND3DS
CALL O44
CALL OGS3 PSD1=PSD1 PSD2=PSD2 PSD3=PSD3
$ PFR1=PFR1 PFR2=PFR2 PFR3=PFR3
ND3DS

ND3A
IF[VC[1] NE 0]ND3AS
CALL O41
CALL OGS3 PSD1=PSD1 PSD2=PSD2 PSD3=PSD3
$ PFR1=PFR1 PFR2=PFR2 PFR3=PFR3
ND3AS

CALL OTEC
RTS

(-----------------------------------------------------------)

OGS3 ( T3 Global sub "for all .630 bore's" )
CALL OTCK
S=PSD1 X0 Y0
Z1
/M51
G1 Z.1 F100
VMPC2=1
VMPT=170
G95 G1 Z=-VC187 F=PFR1
S=PSR2 Z=-VC187-VC186+.01 F=PFR2
S=PSR3 Z=-VC187-VC186 F=PFR3
G4 F.4
VMPC2=0
G0 Z.1
CALL OMZ
RTS

(***********************************************************)


PS: to all the peeps who use the new OTORN because it has calculations every 1 degree it can give pauses in your cycle if your control is outta date. OKUMA has some code to pre calculate but im not sure on funuc. You can also change the local variable
PDV=1
to
PDV=10 or so for faster calculations.

Last edited by Equinox; 06-22-2006 at 01:22 AM.
Reply With Quote

  #5   Ban this user!
Old 06-22-2006, 01:47 AM
 
Join Date: Nov 2005
Location: U.S.A.
Posts: 9
Equinox is on a distinguished road

New socket welds if you do them. More of an Okuma thing also unless u wanna change a lotta verables. Actually thinking about it, wouldnt be to bad. I sue this as a sub and my main looks like

(----------------------------------------------------------------)
N4( T4- .7500 Solid carbide endmill )
(----------------------------------------------------------------)

CALL OTC PT=4 PS=2037 PM=3
T59
CALL OM4G1 PDR1=0 PDR2=.875 PTD=.75 PSR=2037 PSF=2850 PFA=.035
$ PID2=1.335 PIZ2=.630 PIF2=.008 PIFF=.006
$ POD1=2.270 POZ1=.510 POD2=2.270 POZ2=.510
$ POF1=.010 POF2=.010 POFF=.014
CALL OTE
M1

This is the sub
(***********************************************************)

OMT4 (T4=".750 Dia. IMCO Solid Carbide endmill w/multi-layer coat")

NF22
IF[VC[170] NE 1]NF22S
PTD=.750 PSR=2037 PSF=2850 PFA=.035
NF22S

NA105
IF[VC[170] NE 2]NA105S
PTD=.750 PSR=??? PSF=??? PFA=.035
NA105S

NF91
IF[VC[170] NE 3]NF91S
PTD=.750 PSR=??? PSF=??? PFA=.035
PIF1=PIF1*??? PIF2=PIF2*??? PIFF=PIFF*???
POF1=POF1*??? POF2=POF2*??? POFF=POFF*???
NF91S

(-----------------------------------------------------------)

(POFD = O.D. forging DIA.)
(PEA = O.D. entry angle in degrees from the 3 O'clock position of forging's O.D.)
(PTD = tool DIA.)
(PSR = rough RPM)
(PSF = finish RPM)
(PFA = the feed for Z axis infeed, also the X & Y approach and exit)
(PID1 = I.D. of the socket on intake side)
(PID2 = I.D. of the socket on exhaust side)
(PIZ1 = I.D. Z depth of the socket intake side)
(PIZ2 = I.D. Z depth of the socket exhaust side)
(PIF1 = I.D. rough feed rate in IPR, intake side )
(PIF2 = I.D. rough feed rate in IPR, exhaust side )
(PIFF = I.D. finish feed rate in IPR for milling)
(POD1 = O.D. of the socket on intake side)
(POD2 = O.D. of the socket on exhaust side)
(POZ1 = O.D. Z depth of the socket intake side)
(POZ2 = O.D. Z depth of the socket exhaust side)
(POF1 = O.D. rough feed rate in IPR, intake side)
(POF2 = O.D. rough feed rate in IPR, exhaust side)
(POFF = O.D. finish feed rate in IPR for milling)

(-----------------------------------------------------------)

NB4C (intake)
IF[VC[3] NE 0]NB4CS
CALL O23
IF[VC[161] NE 1]NB4CID
CALL OA4ID PEA=0 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID1=PID1 PIZ1=PIZ1 PIF1=PIF1 PIFF=PIFF
NB4CID
IF[VC[171] NE 1]NB4COD
CALL OA4OD PEA=0 POFD=VC92 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD1=POD1 POZ1=POZ1 POF1=POF1 POFF=POFF
NB4COD
CALL OMZ
NB4CS

NB4D (exhaust)
IF[VC[4] NE 0]NB4DS
CALL O24
IF[VC[162] NE 1]NB4DID
CALL OB4ID PEA=0 POFD=VC91 PDR2=PDR2 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID2=PID2 PIZ2=PIZ2 PIF2=PIF2 PIFF=PIFF
NB4DID
IF[VC[172] NE 1]NB4DOD
CALL OB4OD PEA=0 POFD=VC91 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD2=POD2 POZ2=POZ2 POF2=POF2 POFF=POFF
NB4DOD
CALL OMZ
NB4DS

NB4B (intake)
IF[VC[2] NE 0]NB4BS
CALL O22
IF[VC[161] NE 1]NB4BID
CALL OA4ID PEA=180 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID1=PID1 PIZ1=PIZ1 PIF1=PIF1 PIFF=PIFF
NB4BID
IF[VC[171] NE 1]NB4BOD
CALL OA4OD PEA=180 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD1=POD1 POZ1=POZ1 POF1=POF1 POFF=POFF
NB4BOD
CALL OMZ
NB4BS

NB4A (exhaust)
IF[VC[1] NE 0]NB4AS
CALL O21
IF[VC[162] NE 1]NB4AID
CALL OB4ID PEA=180 POFD=VC91 PDR2=PDR2 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID2=PID2 PIZ2=PIZ2 PIF2=PIF2 PIFF=PIFF
NB4AID
IF[VC[172] NE 1]NB4AOD
CALL OB4OD PEA=180 POFD=VC91 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD2=POD2 POZ2=POZ2 POF2=POF2 POFF=POFF
NB4AOD
CALL OMZ
NB4AS

G30 P9

ND4C (exhaust)
IF[VC[3] NE 0]ND4CS
CALL O43
IF[VC[162] NE 1]ND4CID
CALL OB4ID PEA=180 POFD=VC91 PDR2=PDR2 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID2=PID2 PIZ2=PIZ2 PIF2=PIF2 PIFF=PIFF
ND4CID
IF[VC[172] NE 1]ND4COD
CALL OB4OD PEA=180 POFD=VC91 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD2=POD2 POZ2=POZ2 POF2=POF2 POFF=POFF
ND4COD
CALL OMZ
ND4CS

ND4D (intake)
IF[VC[4] NE 0]ND4DS
CALL O44
IF[VC[161] NE 1]ND4DID
CALL OA4ID PEA=180 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID1=PID1 PIZ1=PIZ1 PIF1=PIF1 PIFF=PIFF
ND4DID
IF[VC[171] NE 1]ND4DOD
CALL OA4OD PEA=180 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD1=POD1 POZ1=POZ1 POF1=POF1 POFF=POFF
ND4DOD
CALL OMZ
ND4DS

ND4B (exhaust)
IF[VC[2] NE 0]ND4BS
CALL O42
IF[VC[162] NE 1]ND4BID
CALL OB4ID PEA=0 POFD=VC91 PDR2=PDR2 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID2=PID2 PIZ2=PIZ2 PIF2=PIF2 PIFF=PIFF
ND4BID
IF[VC[172] NE 1]ND4BOD
CALL OB4OD PEA=0 POFD=VC91 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD2=POD2 POZ2=POZ2 POF2=POF2 POFF=POFF
ND4BOD
CALL OMZ
ND4BS

ND4A (intake)
IF[VC[1] NE 0]ND4AS
CALL O41
IF[VC[161] NE 1]ND4AID
CALL OA4ID PEA=0 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ PID1=PID1 PIZ1=PIZ1 PIF1=PIF1 PIFF=PIFF
ND4AID
IF[VC[171] NE 1]ND4AOD
CALL OA4OD PEA=0 POFD=VC92 PDR1=PDR1 PTD=PTD PSR=PSR PSF=PSF PFA=PFA
$ POD1=POD1 POZ1=POZ1 POF1=POF1 POFF=POFF
ND4AOD
CALL OMZ
ND4AS

CALL OTEC
RTS

(-----------------------------------------------------------)

OA4ID (intake=VC161)
S=PSR X0 Y0
Z.1
/M8
G1 G95 Z=-PIZ1+.01 F=PFA
G41 X=[PDR1-PTD]/2 I0 J-1
Y=[[PID1-PTD]/2]-[[PDR1-PTD]/2] F=PIF1
G3 X0 Y=[PID1-PTD]/2 R=[PDR1-PTD]/2
J=-[PID1-PTD]/2 Z=-PIZ1
S=PSF J=-[PID1-PTD]/2 F=PIFF
X=-[PDR1-PTD]/2 Y=[[PID1-PTD]/2]-[[PDR1-PTD]/2] Z=-PIZ1+.01 R=[PDR1-PTD]/2 F=PFA
G1 G40 X0 Y0 I0 J-1
G0 Z.1
RTS

(-----------------------------------------------------------)

OB4ID (exhaust=VC162)
S=PSR X0 Y0
Z.1
/M8
G1 G95 Z=-PIZ2+.01 F=PFA
G41 X=[PDR2-PTD]/2 I0 J-1
Y=[[PID2-PTD]/2]-[[PDR2-PTD]/2] F=PIF2
G3 X0 Y=[PID2-PTD]/2 R=[PDR2-PTD]/2
J=-[PID2-PTD]/2 Z=-PIZ2
S=PSF J=-[PID2-PTD]/2 F=PIFF
X=-[PDR2-PTD]/2 Y=[[PID2-PTD]/2]-[[PDR2-PTD]/2] Z=-PIZ2+.01 R=[PDR2-PTD]/2 F=PFA
G1 G40 X0 Y0 I0 J-1
G0 Z.1
RTS

(-----------------------------------------------------------)

OA4OD (intake=VC171)
S=PSR X0 Y0
Z.1
/M8
G11 P=PEA
S=PSR G95 X=[POFD+PTD+.3]/2 Y0
G1 Z=-POZ1+.01 F=PFA
G41 Y.1 I-1 J0
X=[POD1+PTD+.2]/2 F=POF1
G3 X=[POD1+PTD]/2 Y0 R.1 F=POF1*.5
G2 I=-[POD1+PTD]/2 Z=-POZ1 F=POF1
S=PSF I=-[POD1+PTD]/2 F=POFF
G3 X=[POD1+PTD+.2]/2 Y-.1 Z=-POZ1+.01 R.1 F=PFA
G1 G40 X=[POFD+PTD+.3]/2 Y0 I1 J0
G10
G94
CALL OMZ
RTS

(-----------------------------------------------------------)

OB4OD (exhaust=VC172)
S=PSR X0 Y0
Z.1
/M8
G11 P=PEA
S=PSR G95 X=[POFD+PTD+.3]/2 Y0
G1 Z=-POZ2+.01 F=PFA
G41 Y.1 I-1 J0
X=[POD2+PTD+.2]/2 F=POF2
G3 X=[POD2+PTD]/2 Y0 R.1 F=POF2*.5
G2 I=-[POD2+PTD]/2 Z=-POZ2 F=POF2
S=PSF I=-[POD2+PTD]/2 F=POFF
G3 X=[POD2+PTD+.2]/2 Y-.1 Z=-POZ2+.01 R.1 F=PFA
G1 G40 X=[POFD+PTD+.3]/2 Y0 I1 J0
G10
G94
CALL OMZ
RTS

(***********************************************************)
Reply With Quote

Sponsored Links
Reply




Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On





All times are GMT -5. The time now is 08:05 PM.





Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO
Template-Modifications by TMS

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361