![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| G-Code Programing Discuss G-code programing and problems here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
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 |
|
#2
| |||
| |||
| 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 |
|
#3
| ||||
| ||||
| 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. |
|
#4
| |||
| |||
| 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. |
|
#5
| |||
| |||
| 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 (***********************************************************) |
| Sponsored Links |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
| |