各位大侠,小弟有几个问题想咨询一下,
N140 DEFINE _TNR AS _IVAR[0] ; T-Nr. des Werkzeuges
N150 DEFINE _DNR AS _IVAR[1] ; D-Nr. des Werkzeuges
N160 DEFINE _PLNR AS _IVAR[2] ; Platz-Nr. des Werkzeuges
AS _IVAR 从机床什么地方可以找到?
; 030220 V05.20 X-Drehpunktkoordinaten aus RC_TO_LOC[n,13] KHH
; Z-Drehpunktkoordinaten aus RC_TO_LOC[n,14]
030220是什么意思,n的值如何确定?
以下是整个程序:
;
;PROGRAM NAME: R_ROT_B
;VERSION: 05.34d 2006/05/02
;CREATION ON: 1999/12/15
;AUTHOR: HE
;MACHINE TYPE: HG M050.70507/508
;CONTROL TYPE: 840D 06.xx
;USER INTERFACE (GUI): HMI/EASYMASK
;---------------------------------------------------------------
; 05.34d 2006/05/02 S2/S3 Drehzahlpruefung integriert! HE
; 05.34c 050705 Zuweisung _BSOLL nach Pruefung Platznummer HE
; 05.34b 050615 Z-Vorschub aus $MA_MAX_AX_VELO[Z] HE
; 05.34a May 12, 2005
; Div. Laufzeit-Optimierungen durchgefⁿhrt HE
; 05.34 2004/12/14 B-Achse am Werkstueck schwenken bei
; kleiner Winkelaenderung DE
; 05.33 2004/12/10 X-Achse auf Endlage DE
; 05.32 2004/11/19 angepasst f. Drehrichtung B-Achse HG DE
; 05.31 KONSOLE: EINRECHNUNG EINBAULAENGE DE
; 05.30 2004/09/22 Drehung um Werkzeugbezugspunkt moeglich
; Lokale Variablen als Felder und symbolische Adressierung
; und Satznummerierung geaendert.
; HSC-Schleifspindelrevolver integriert
; Optimierungen bzgl. lokalem Speicherbedarf HE
; 030401 V05.21 Positioniervorschub fuer B-Achse KHH
; Auskommentierte Zeilen entfernt
; 030220 V05.20 X-Drehpunktkoordinaten aus RC_TO_LOC[n,13] KHH
; Z-Drehpunktkoordinaten aus RC_TO_LOC[n,14]
; 030210 V05.10 Berechnung Rotation durch Zyklus R_DELTAROT KHH
; 020920 V05.00 WKZ-Platznr. als Uebergabewert KHH
; 020422 V04.10 Verwendung von MAKRO-Namen KHH
; 020418 V04.00 Konsolenmaschine (RC_[470]=0) bei
; Berechnung von _PX und _PZ integriert KHH
; 020306 V03.11 Drehstaehle Schwenken zulassen KHH
; TRANS X0 Z0 eingefuegt
; 020228 V03.10 Z-Achse in Endlage wenn B-Achse fahren KHH
; 010727 V03.00 Indexzaehlung beginnt bei 1 KHH
; WKZ-Platznummer aus $TC_TPC1[_TNR]
; Variable WKZ-Belegung moeglich!!
; 001010 V01.02 Pruefung B1-Achstyp eingefuegt ($AA_TYP[B1]) KHH
; 000210 V01.01 POSA[B] eingefuegt KHH
; 991215 V01-00: Anpassungen an neue RPS-Zyklen KHH
;---------------------------------------------------------------
; U_ALPHA = Werkzeug-Schwenkwinkel
; U_PLNR = Platznummer des Werkzeuges
; bei Werteingabe =0 oder falscher Platz wird Platz
; autom. gesucht!
; U_FCT = Funktionsanwahl (VSC)
; 0 = Drehung um B-Achsedrehpunkt (Standard)
; 1 = Drehung um Werkzeugbezugspunkt
; 2 = Drehung um Werkzeugbezugspunkt bei kleiner
; Winkelaenderung (f. Konizitaetskorrektur)
;===============================================================
N100 PROC R_ROT_B(REAL U_ALPHA,INT U_PLNR,INT U_FCT) PREPRO ;DISPLOF
N120 DEF INT _IVAR[4]=REP(-99999),_PG24
N130 DEF REAL _RVAR[15]=REP(-9999.9999)
N140 DEFINE _TNR AS _IVAR[0] ; T-Nr. des Werkzeuges
N150 DEFINE _DNR AS _IVAR[1] ; D-Nr. des Werkzeuges
N160 DEFINE _PLNR AS _IVAR[2] ; Platz-Nr. des Werkzeuges
N170 DEFINE _DELTAX AS _RVAR[0] ; X-NV-Korrektur
N180 DEFINE _DELTAZ AS _RVAR[1] ; Z-NV-Korrektur
N190 DEFINE _RADX AS _RVAR[2] ; X-Weg Werkzeugspitze
N200 DEFINE _RADZ AS _RVAR[3] ; Z-Weg Werkzeugspitze
N210 DEFINE _RAD AS _RVAR[4] ; Flugkreisradius der WKZ-Spitze
N220 DEFINE _RADW1 AS _RVAR[5] ; Vektorwinkel
N230 DEFINE _XIST AS _RVAR[6] ; akt. Pos. X-Achse
N240 DEFINE _ZIST AS _RVAR[7] ; akt. Pos. Z-Achse
N250 DEFINE _BIST AS _RVAR[8] ; akt. Pos. B-Achse
N260 DEFINE _BSOLL AS _RVAR[9] ; Ziel-Pos. B-Achse
N270 DEFINE _PX AS _RVAR[10] ; X-Pos. HSC
N280 DEFINE _PZ AS _RVAR[11] ; Z-Pos. HSC
N290 DEFINE _MOVZX AS _RVAR[12] ; Achsanwahl HSC
N291 DEFINE _XMIST AS _RVAR[13] ; akt. Pos. X-Achse maschinenbezogen
N292 DEFINE _ZMIST AS _RVAR[14] ; akt. Pos. Z-Achse maschinenbezogen
N300 _TNR= $P_TOOLNO _DNR= $P_TOOL _PLNR=U_PLNR
N310 IF ((U_PLNR<=0) OR (_TNR<>(TRUNC(RC_TO_MAC[0,U_PLNR]))))
N320 R_T_SEARCH(_TNR,_PLNR)
N330 ENDIF
N340 IF (RC_[470]==1)
N350 _XMIST=$AA_IM[X] _ZMIST=$AA_IM[Z] _BIST=ROUND($AA_IW[B]*10000)/10000 _BSOLL=$MN_USER_DATA_FLOAT[10+_PLNR]+U_ALPHA
N360 ENDIF
N370 IF (_TNR==0)
N380 E_ERROR(4,67500)
N390 ENDIF
N400 IF (($TC_DP1[_TNR, _DNR]<400) OR ($TC_DP1[_TNR, _DNR]>590))
N410 E_ERROR(4,67501)
N420 ENDIF
N430 _DELTAX=(RC_TO_LOC[_PLNR,13]*RC_[470]+$TC_DP3[_TNR,_DNR]) _DELTAZ=(RC_TO_LOC[_PLNR,14]*RC_[470]+$TC_DP4[_TNR,_DNR]+RC_TO_LOC[_PLNR,18])
N440 _RADX=_DELTAX _RADZ=_DELTAZ _RADW1=ATAN2(_RADX,_RADZ) _RAD=SQRT(POT(_RADX)+POT(_RADZ))
N450 R_DELTAROT(_DELTAX,_DELTAZ,U_ALPHA)
N460 $P_UIFR[5,X,TR]=$P_UIFR[1,X,TR]-_DELTAX $P_UIFR[5,Z,TR]=$P_UIFR[1,Z,TR]-_DELTAZ+RC_TO_LOC[_PLNR,18] ;$P_UIFR[5,Y,TR]=0
N470 TRANS X0 Z0 ;Y0
N480 G505 G0
;------------------------------------
; Keine B-Achse vorhanden (Konsole)
N490 IF (RC_[470]==0)
N500 M[_PLNR]=6
N510 RET
N520 ENDIF
N530 CASE RC_[471] OF 0 GOTOF L_VSC 4 GOTOF L_HSC
N540 E_ERROR(4,66505)
;------------------------------------
; Standard VSC-Revolver
N1000 L_VSC:
N1010 _PG24=$P_GG[24]
N1020 IF (_BIST<>_BSOLL)
N1021 M427
N1030 CASE U_FCT OF 0 GOTOF L_FCT0 1 GOTOF L_FCT1 2 GOTOF L_FCT2
N1031 L_FCT2: ; Ueberpruefung auf Schwenken am Werkstueck
N1032 IF (ABS(_BIST-_BSOLL)<0.020) AND ((MR_X_ROT_B-_XMIST)>10) AND ((MR_Z_ROT_B-_ZMIST)>10)
N1034 M442 ;Freigabe B-Achse ohne X-Achse auf Endlage
N1038 GOTOF L_FCT1
N1039 ENDIF
N1040 L_FCT0: ; Schwenken um Drehpunkt B-Achse
N10401 R_CHECK_S2S3(500)
N10402 WHENEVER ABS($AA_DTEB[X])>50 DO $AA_OVR[Z]=0
N1045 G90 G0 G53 D0 X=MR_X_ROT_B POS[Z]=MR_Z_ROT_B FA[Z]=$MA_MAX_AX_VELO[Z] ;X-/Z-Schwenk-Pos. fuer HG
N1050 MSG("B-Achse auf PLC")
N1060 WHENEVER $$AA_TYP[B1]==3 DO RDISABLE; B-Achse auf PLC
N1070 MSG()
N1080 WHENEVER $AA_DTEB[Z]>10 DO $AA_OVR[B]=0 ;Override B-Achse sperren
N1090 G90 G53 G0 D0 POSA[B]=_BSOLL FA[B]=4000 ; POS[Z]=MR_ZPOS1 FA[Z]=100000
N1100 D=_DNR M[_PLNR]=6
N1110 RET
N1120 L_FCT1: ; Schwenken um Drehpunkt Werkzeugspitze
N1124 _DELTAX=_RADX _DELTAZ=_RADZ
N1126 R_DELTAROT(_RADX,_RADZ,_BIST)
N1128 R_DELTAROT(_DELTAX,_DELTAZ,_BSOLL)
N1234 _DELTAX=_RADX-_DELTAX _DELTAZ=_RADZ-_DELTAZ
N1130 FFWON
N1140 IF (_BIST<_BSOLL)
N1150 G90 G2 B=_BSOLL X=$AA_IW[X]+_DELTAX Z=$AA_IW[Z]+_DELTAZ CR=_RAD F=10000
N1160 ELSE
N1170 G90 G3 B=_BSOLL X=$AA_IW[X]+_DELTAX Z=$AA_IW[Z]+_DELTAZ CR=_RAD F=10000
N1180 ENDIF
N1185 M443 ;Freigabe B-Achse nur wenn X-Achse auf Endlage
N1190 G[24]=_PG24
N1200 ENDIF
N1210 G0 M[_PLNR]=6
N1999 RET
;------------------------------------
; Standard HSC-Revolver (Hirthverzahnung)
; Aufruf mit T2=n (n=Position 1, 2, 3)
; n=1: Parkposition Drehen/Messen/Teilehandling
; n=2: Scheibenwechselposition
; n=3: Schleif-/Abrichtposition
N2000 L_HSC:
N2010 IF ($AA_IM[B]<>($MN_USER_DATA_FLOAT[13]+U_ALPHA))
N2020 _PX=$AA_IM[X] _PZ=$AA_IM[Z]
N2030 _DELTAX=_PX>=RC_[354] _DELTAZ=_PZ>=RC_[355] _MOVZX=_DELTAZ*10+_DELTAX
N2040 CASE _MOVZX OF 0 GOTOF L_00 1 GOTOF L_01 10 GOTOF L_10 11 GOTOF L_11
N2050 L_00: _PX=RC_[354] _PZ=RC_[355]
N2060 GOTOF L_11
N2070 L_01: _PZ=RC_[355]
N2080 GOTOF L_11
N2090 L_10: _PX=RC_[354]
N2100 L_11: G90 G53 G0 D0 X=_PX Z=_PZ
N2110 M2=38 T2=3 ; Schleifscheibe IMMER in Schleif-/Abrichtposition
N2120 D=_DNR
N2130 ENDIF
N2140 M[_PLNR]=6
N2999 RET
%_N_R_SET_EDGE_DAT_SPF
;$PATH=/_N_CUS_DIR