Siemens
Digital Industries, Motion Control, Machine Tool Systems
8840
Follower:innenTransmit und Cycle72 stoppt nach Zyklus.
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo zusammen,
an einer DMG CTX beta 1250 TC mit Siemens 840D SL Steuerung möchte ich unter DIN/ISO eine freie Kontur per Bahnfräsen herstellen. (CYCLE72). Es geht darum, dass ich eine freie Kontur verrunden möchte mit einem Kugelfräser. Dazu rechne ich mir die "Komponsationen" aus und korrigiere den WKZ Durchmesser, damit der Radius korrekt abgezeilt werden kann.
Dazu benutze ich halt Winkelfunktionen und korrigiere mit $TC_DP15[x,x] den WKZ-Radius.
Ich befinde mich in G17. Transmit wird vor CYCLE72 aufgerufen (Schlichten, nur einmalig an der Kontur entlang fahren per Bahnfräsen). Danach stoppt die Maschine aber ohne Fehlermeldung, als wenn ein M01 programmiert wäre. Wenn ich wieder Zyklus Start drücke, geht es weiter im Programm.
Ich komme nicht dahinter, wo das Problem ist. Habe im Anschluss an CYCLE72 auch schon TRAFOOF probiert. Daran liegt es aber nicht.
Hier mal das Programm: (nicht wundern … es gibt noch einige überflüssige Berechnungen, die noch wegfallen später)
an einer DMG CTX beta 1250 TC mit Siemens 840D SL Steuerung möchte ich unter DIN/ISO eine freie Kontur per Bahnfräsen herstellen. (CYCLE72). Es geht darum, dass ich eine freie Kontur verrunden möchte mit einem Kugelfräser. Dazu rechne ich mir die "Komponsationen" aus und korrigiere den WKZ Durchmesser, damit der Radius korrekt abgezeilt werden kann.
Dazu benutze ich halt Winkelfunktionen und korrigiere mit $TC_DP15[x,x] den WKZ-Radius.
Ich befinde mich in G17. Transmit wird vor CYCLE72 aufgerufen (Schlichten, nur einmalig an der Kontur entlang fahren per Bahnfräsen). Danach stoppt die Maschine aber ohne Fehlermeldung, als wenn ein M01 programmiert wäre. Wenn ich wieder Zyklus Start drücke, geht es weiter im Programm.
Ich komme nicht dahinter, wo das Problem ist. Habe im Anschluss an CYCLE72 auch schon TRAFOOF probiert. Daran liegt es aber nicht.
Hier mal das Programm: (nicht wundern … es gibt noch einige überflüssige Berechnungen, die noch wegfallen später)
CODE
N100 R200=0 ; Startpunkt Oberflaeche
N101 R202=1 ; Herzustellende Verrundung
N102 R204=6000 ; Vorschub f=mm/min
N103 R332=1 ; Radius des Kugelfraesers
N104 R206=1 ; Zeilentaktung in Grad (durch 90 teilbar)
N105 R208=0 ; Schlichtaufmass Radien-Kontur
;-------------------------------------------
; W K Z A U S W A H L
;-------------------------------------------
N106 T="Gravur_2mm"
N107 m6 ; Beladen
N108 TC(2,0,0,1,0,0) ;
N109 g0 b1=0 y=0 ; B-Achse 0-Grad
N110 M107 ; innere Kuehlung Normaldruck
N111 G17 ; Bearbeitungsebene Stirn C
N112 $P_UIFR[1,Z,FI]=0
N113 G54 ; NPV 1 aktivieren
N114 SETMS(1)
N115 SPOS[4]=0
N116 DIAMOF
;===========================================
; F r a e s z y k l u s K o n t u r
;===========================================
N117 S1=3000 m1=3 ; S1 drehzahl und Drehrichtung
N118 G94 f=R204
N119 R217=0 ; Grad-Zaehler fuer Taktung setzen!
N120 R355=SIN(R217)*(R202+R332) ; Gegenkathete berechnen
N121 R356=COS(R217)*(R202+R332) ; Ankathete berechnen
N122 R377=$P_TOOLNO
N123 $TC_DP15[R377,2]=0 ; WKZ Radius Korrektur Nullen
N124 ZEILEN:
N125 R355=SIN(R217)*(R202+R332) ; Gegenkathete berechnen
;*************************
;Radiuskorrektur berechnen
;*************************
N126 R366=COS(R217)*R202 ; Ankathete berechnen
N127 R367=R366-R202 ; WKZ Korrekturwert berechnen
N128 R377=$P_TOOLNO
N129 $TC_DP15[R377,2]=R367
N130 R379=$TC_DP15[R377,2]
N131 msg("Akt. Radius Korrekt.:"<<R367<<" Gradzahl:"<<R217<<"/90")
N132 if R217>90 gotof ENDE ; Wenn alles abgezeilt, dann Ende
N133 TRANSMIT
;NCG#CYC72#fraesen.com#NC1#3#*NCG;*RO*;*HD*
;#19#3#2#1#1##1#3#1#4#4######1#3###1#3#2#1#1#1#1##1#3#0#0#3#*NCG;*RO*;*HD*
N134 CYCLE72("NUTANFANG1:NUTENDE1",R200+2,R200+1,0.5,R200-R202+R355,2,0.1,0,R204,5000,202,41,2,1,200,2,1)
;#END#*NCG;*RO*;*HD*
N135 R217=R217+R206 ; Winkel Fortschalten
N136 gotob ZEILEN
N137 NUTANFANG1:
;ab HIER kann durch Rueckuebersetzen eine gewuenschte Kontur erzeugt werden!
;#7__DlgK contour definition begin - Don't change!;*GP*;*RO*;*HD*
G17 G90 DIAMON;*GP*
G0 X-15 Y8;*GP*
G1 Y-14.705 RND=1;*GP*
G3 X-52 Y-39.6 I=AC(0) J=AC(-39.6);*GP*
X15 Y-14.705 I=AC(0) J=AC(-39.6) RND=1;*GP*
G1 Y8;*GP*
;CON,0,0.0000,0,0,MST:1,1,AX:X,Y,I,J;*GP*;*RO*;*HD*
;S,EX:-15,EY:8;*GP*;*RO*;*HD*
;LD,DIA:225/0;*GP*;*RO*;*HD*
;R,RROUND:1;*GP*;*RO*;*HD*
;ACCW,EX:-52,EY:-39.6,CX:0,RAD:26;*GP*;*RO*;*HD*
;ACCW,DIA:7/0,EX:15,CX:0,RAD:26;*GP*;*RO*;*HD*
;R,RROUND:1;*GP*;*RO*;*HD*
;LU,EY:8;*GP*;*RO*;*HD*
;#End contour definition end - Don't change!;*GP*;*RO*;*HD*
N144 NUTENDE:
;-------------------------------
; e n d e
;-------------------------------
N145 ENDE:
N146 m0
N147 M17 ; Ende Unterprogramm!
N101 R202=1 ; Herzustellende Verrundung
N102 R204=6000 ; Vorschub f=mm/min
N103 R332=1 ; Radius des Kugelfraesers
N104 R206=1 ; Zeilentaktung in Grad (durch 90 teilbar)
N105 R208=0 ; Schlichtaufmass Radien-Kontur
;-------------------------------------------
; W K Z A U S W A H L
;-------------------------------------------
N106 T="Gravur_2mm"
N107 m6 ; Beladen
N108 TC(2,0,0,1,0,0) ;
N109 g0 b1=0 y=0 ; B-Achse 0-Grad
N110 M107 ; innere Kuehlung Normaldruck
N111 G17 ; Bearbeitungsebene Stirn C
N112 $P_UIFR[1,Z,FI]=0
N113 G54 ; NPV 1 aktivieren
N114 SETMS(1)
N115 SPOS[4]=0
N116 DIAMOF
;===========================================
; F r a e s z y k l u s K o n t u r
;===========================================
N117 S1=3000 m1=3 ; S1 drehzahl und Drehrichtung
N118 G94 f=R204
N119 R217=0 ; Grad-Zaehler fuer Taktung setzen!
N120 R355=SIN(R217)*(R202+R332) ; Gegenkathete berechnen
N121 R356=COS(R217)*(R202+R332) ; Ankathete berechnen
N122 R377=$P_TOOLNO
N123 $TC_DP15[R377,2]=0 ; WKZ Radius Korrektur Nullen
N124 ZEILEN:
N125 R355=SIN(R217)*(R202+R332) ; Gegenkathete berechnen
;*************************
;Radiuskorrektur berechnen
;*************************
N126 R366=COS(R217)*R202 ; Ankathete berechnen
N127 R367=R366-R202 ; WKZ Korrekturwert berechnen
N128 R377=$P_TOOLNO
N129 $TC_DP15[R377,2]=R367
N130 R379=$TC_DP15[R377,2]
N131 msg("Akt. Radius Korrekt.:"<<R367<<" Gradzahl:"<<R217<<"/90")
N132 if R217>90 gotof ENDE ; Wenn alles abgezeilt, dann Ende
N133 TRANSMIT
;NCG#CYC72#fraesen.com#NC1#3#*NCG;*RO*;*HD*
;#19#3#2#1#1##1#3#1#4#4######1#3###1#3#2#1#1#1#1##1#3#0#0#3#*NCG;*RO*;*HD*
N134 CYCLE72("NUTANFANG1:NUTENDE1",R200+2,R200+1,0.5,R200-R202+R355,2,0.1,0,R204,5000,202,41,2,1,200,2,1)
;#END#*NCG;*RO*;*HD*
N135 R217=R217+R206 ; Winkel Fortschalten
N136 gotob ZEILEN
N137 NUTANFANG1:
;ab HIER kann durch Rueckuebersetzen eine gewuenschte Kontur erzeugt werden!
;#7__DlgK contour definition begin - Don't change!;*GP*;*RO*;*HD*
G17 G90 DIAMON;*GP*
G0 X-15 Y8;*GP*
G1 Y-14.705 RND=1;*GP*
G3 X-52 Y-39.6 I=AC(0) J=AC(-39.6);*GP*
X15 Y-14.705 I=AC(0) J=AC(-39.6) RND=1;*GP*
G1 Y8;*GP*
;CON,0,0.0000,0,0,MST:1,1,AX:X,Y,I,J;*GP*;*RO*;*HD*
;S,EX:-15,EY:8;*GP*;*RO*;*HD*
;LD,DIA:225/0;*GP*;*RO*;*HD*
;R,RROUND:1;*GP*;*RO*;*HD*
;ACCW,EX:-52,EY:-39.6,CX:0,RAD:26;*GP*;*RO*;*HD*
;ACCW,DIA:7/0,EX:15,CX:0,RAD:26;*GP*;*RO*;*HD*
;R,RROUND:1;*GP*;*RO*;*HD*
;LU,EY:8;*GP*;*RO*;*HD*
;#End contour definition end - Don't change!;*GP*;*RO*;*HD*
N144 NUTENDE:
;-------------------------------
; e n d e
;-------------------------------
N145 ENDE:
N146 m0
N147 M17 ; Ende Unterprogramm!
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Und der Satz "N146 m0" (vorletzte Zeile in deinem Unterprogramm) ist es nicht, der das Problem verursacht?
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Und der Satz "N146 m0" (vorletzte Zeile in deinem Unterprogramm) ist es nicht, der das Problem verursacht?
Oh Gott. Du hast recht. Das war es. Aber wieso springt er darauf an? Ich befinde mich doch dort in einer Schleife eigentlich und das M0 wird doch eigentlich noch gar nicht gelesen?!?!
Danke jedenfalls!
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Ich habe mir das jetzt nicht so ganz genau angesehen.
Aber wenn ich es richtig verstehe, hast du eine Schleife ("Zeilen") in der du bei jedem Durchlauf den Zyklus72 aufrufst. Der seinerseits ruft dann jeweils ein Unterprogramm auf, in dem dein M0 steht. Das wird dann natürlich auch jedes Mal ausgeführt.
Aber wenn ich es richtig verstehe, hast du eine Schleife ("Zeilen") in der du bei jedem Durchlauf den Zyklus72 aufrufst. Der seinerseits ruft dann jeweils ein Unterprogramm auf, in dem dein M0 steht. Das wird dann natürlich auch jedes Mal ausgeführt.
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Ich habe mir das jetzt nicht so ganz genau angesehen.
Aber wenn ich es richtig verstehe, hast du eine Schleife ("Zeilen") in der du bei jedem Durchlauf den Zyklus72 aufrufst. Der seinerseits ruft dann jeweils ein Unterprogramm auf, in dem dein M0 steht. Das wird dann natürlich auch jedes Mal ausgeführt.
Aber wenn ich es richtig verstehe, hast du eine Schleife ("Zeilen") in der du bei jedem Durchlauf den Zyklus72 aufrufst. Der seinerseits ruft dann jeweils ein Unterprogramm auf, in dem dein M0 steht. Das wird dann natürlich auch jedes Mal ausgeführt.
Super. Das wusste ich nicht und kannte auch nicht diese Struktur. Perfekt. Du hast mir sehr geholfen! :-)
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: