FANUC
FANUC

Ihr Spezialist für Fabrikautomation

Hilfe Makroprogrammierung (Kreistasche), Prg. von 0-M auf 16i-M

Beitrag 20.11.2014, 09:26 Uhr
Chris89
Level 1 = Community-Lehrling
*
Hallo alle zusammen!

Folgendes Problem:

Wollte mir den Kreistaschenzylus (Makro) von der Kitamura 2x (Fanuc 0-M) auf meine Mitamura 3xi (Fanuc 16i-M) kopieren
Auf der 2xi funktioniert es einwandfrei und bei meiner 3xi fährt die Maschine auch ab aber nur wenn ich die Tiefe (Z) unter einmal nehme (T1) Bei mehreren Zustellungen (T2, T3, ...) kommt nach dem ersten mal abfahren eine Fehlermeldung
Komischerweise aber nur bei meiner 3xi bei der 2x funktioniert alles

Kennt sich jemand bei dem Makro aus? Kann ich da etwas ändern so das des bei der 16i-M auch funktioniert?
Oder hat jemand ein anderes Makro für den Kreistaschenzylus?
Bitte um Hilfe smile.gif


Aufruf:
G65P1001X50Y-50R0S20Z-10T3M50H500F500Q1000D33

Bezeichung:
XY(TASCHENMITTELPUNKT POSITION)
R(REFERENZEBENE)
S(TASCHENDURCHMESSER)
Z (TASCHENTIEFE)
T(TIEFENZUSTELLUNG DURCHGÄNGE)
M(ÜBERDECKUNGSFAKTOR
0=KEINE ÜBERDECKUNG,
100 VOLLE ÜBERDECKUNG)
H(ZUSTELLVORSCHUB)
F(SCHRUPPVORSCHUB)
Q(SCHLICHTVORSCHUB)
D(WZ-KORREKTUR)


Makro:
%
:1001(KREISTASCHE 7.1.97 BI)
IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1
IF[#7EQ#0]GOTO1
IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )
N2G00G90X#24Y#25
Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]
N3#33=#19/2-#[2000+#7]
#32=[[#[2000+#7]*2]*[#13/100]]/4
#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360
N1#14=#24+COS[#1]*#3
#15=#25+SIN[#1]*#3
G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29
#14=#24+COS[#1]*#33
#15=#25+SIN[#1]*#33
#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6
G0G90X#24Y#25G91Z1
IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3
N6#14=#24+[COS[#1]]*[#33-1]
#15=#25+[SIN[#1]]*[#33-1]
G0X#14Y#15Z#18
M99
%
   
Beitrag 20.11.2014, 19:12 Uhr
suso
Level 2 = Community-Facharbeiter
**
Hallo.

Ich habs probiert, aber so ohne weiteres blick ich da nicht durch.
Ich versuchs aber später nochmal wenn ich bissl Ruhe hab ;-)
Ein wenig Dokumentation zu deinem Makro wäre sicher hilfreich. Sonst muss man sich alles selbst erdenken, was bei fremden Makros nicht immer einfach ist. Vor allem bei so vielen if und while goto's.

An sich sollte das Makro schon laufen wenn es auf der Fanuc 0m läuft.
Was sich genau geändert hat weis ich jetzt aber nicht.
Was mir erstmal aufgefallen ist:

Im Satz N3 und im darauf folgendem schreibst du #[2000+.....
Ich würde die Klammer immer vor dem # setzen. Denke so wie bei dir wird die Variablennummer selbst berechnet.

Bei den Sätzen die #21 und #22 berechnen, setzt du vor cos und sin eine Klammer. Würde ich weg lassen. Das gleiche bei N6 und darauf folgendem.
   
Beitrag 20.11.2014, 21:53 Uhr
Chris89
Level 1 = Community-Lehrling
*
QUOTE (suso @ 20.11.2014, 19:12 Uhr) *
Hallo.

Ich habs probiert, aber so ohne weiteres blick ich da nicht durch.
Ich versuchs aber später nochmal wenn ich bissl Ruhe hab ;-)
Ein wenig Dokumentation zu deinem Makro wäre sicher hilfreich. Sonst muss man sich alles selbst erdenken, was bei fremden Makros nicht immer einfach ist. Vor allem bei so vielen if und while goto's.

An sich sollte das Makro schon laufen wenn es auf der Fanuc 0m läuft.
Was sich genau geändert hat weis ich jetzt aber nicht.
Was mir erstmal aufgefallen ist:

Im Satz N3 und im darauf folgendem schreibst du #[2000+.....
Ich würde die Klammer immer vor dem # setzen. Denke so wie bei dir wird die Variablennummer selbst berechnet.

Bei den Sätzen die #21 und #22 berechnen, setzt du vor cos und sin eine Klammer. Würde ich weg lassen. Das gleiche bei N6 und darauf folgendem.



Hallo
Danke für deine antwort
Also ich selbst verstehe von diesem Makro nichts haben es auch nicht geschrieben es wurde von ka woher kopiert
Es solte eine Kreistasche fräsen in schneckenform (also vom kreismittelpunkt immer größer werden bis der durchmesser erreicht ist)
Das macht es auch aber wenn ma 2 oder mehere durchgänge angibt fährt es den ersten ab danach kommt eine fehlermeldung
Komisch ist eben das es bei der 0-M serie läuft

Gruß Chris
   
Beitrag 20.11.2014, 22:57 Uhr
suso
Level 2 = Community-Facharbeiter
**
Aha, aha...
Müsste das Makro mal probieren, wird aber ehestens am Montag sein.
Nach dem was du gescgrieben hast, liegt der Fehler mMn im Satz N3.
Die #2000 könnte nicht passen, oder aber die +#7.
Mmn rechnet das Makro dort nicht die Eingabe von Wzg Korrektur Nr33 hinzu, sondern den Wert in Variable D (#7) also 33 als Ganzzahl.
Ist leicht zu überprüfen inden du nach G65 P... bei D nicht 33 sondern den tatsächlichen Wzg Radius angibst.
   
Beitrag 21.11.2014, 07:40 Uhr
Variabel
Level 4 = Community-Meister
****
Hallo zusammen

Das mit dem #[2000+#7] ist so schon richtig. Hier wird der Werkzeugradius aus der Tabelle ausgelesen.

Welche Fehlermeldung gibt die Maschine den aus? Wäre gut zu wissen, um den Fehler einzugrenzen.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 21.11.2014, 08:42 Uhr
Chris89
Level 1 = Community-Lehrling
*
Hallo
Habe es überprüft des wird schon die werkzeugkorrektur hergenommen die man beim den Werkzeugdaten angibt bei Platz 33 wink.gif

Bei meiner Maschine ist es so: Das Werkzeug T1 hat die Kontur D1, wenn ich jetzt fürs Werkzeug T1 bei der Kontur D1 angebe nimmt das Makro den Wert vom T1 statt D1 (es nimmt die Länge vom Werkzeug als Radius) kann man da vl. das Makro auch noch ändern so das es den Wert von D nimmt? Und ganz super wäre wenn ich beim Aufruf die D Angabe gar nicht angeben muss (meine maschine hat die kontur immer fürs eingewechselte werkzeug drinnen, da ich immer einwechsel mit T1; D1; M106; S1000M3; ...)


Ablauf:
Maschine fährt mit G0 auf Angabe X Y > Mit G1 auf Angabe Z > in schneckenform fährt sie auf den Durchmesser > zum schluss fährt die maschine nicht auf den kreismittelpunkt zurück sondern 1mm + werkzeugkorektur vom kreis weck > dann in Z auf

Bei mehreren zustellungen fährt sie gleich bis zum Kreis Durchmesser, dann kommt die Meldung: 5074 FEHLER: Adresse doppelt im Satz


Gruß Christoph
   
Beitrag 21.11.2014, 09:45 Uhr
Variabel
Level 4 = Community-Meister
****
%
:1001(KREISTASCHE 7.1.97 BI)
IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1
IF[#7EQ#0]GOTO1
IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )
N2G00G90X#24Y#25
Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]
N3#33=#19/2-#[13000+#7]-#[12000+#7]
#32= [[[#[13000+#7]+#[12000+#7]] *2]*[#13/100]]/4
#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360
N1#14=#24+COS[#1]*#3
#15=#25+SIN[#1]*#3
G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29
#14=#24+COS[#1]*#33
#15=#25+SIN[#1]*#33
#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6
G0G90X#24Y#25
G91 Z1
G90

IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3
N6#14=#24+[COS[#1]]*[#33-1]
#15=#25+[SIN[#1]]*[#33-1]
G0X#14Y#15Z#18
M99
%


Probier mal diese Änderungen.

Hab die Werkzeugdaten an den Werkzeugkompensationsspeicher C angepasst. (Blau)
Es waren G90 und G91 in einem Satz. (Orange)

Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 21.11.2014, 10:45 Uhr
Chris89
Level 1 = Community-Lehrling
*
QUOTE (Variabel @ 21.11.2014, 09:45 Uhr) *
%
:1001(KREISTASCHE 7.1.97 BI)
IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1
IF[#7EQ#0]GOTO1
IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )
N2G00G90X#24Y#25
Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]
N3#33=#19/2-#[13000+#7]-#[12000+#7]
#32= [[[#[13000+#7]+#[12000+#7]] *2]*[#13/100]]/4
#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360
N1#14=#24+COS[#1]*#3
#15=#25+SIN[#1]*#3
G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29
#14=#24+COS[#1]*#33
#15=#25+SIN[#1]*#33
#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6
G0G90X#24Y#25
G91 Z1
G90

IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3
N6#14=#24+[COS[#1]]*[#33-1]
#15=#25+[SIN[#1]]*[#33-1]
G0X#14Y#15Z#18
M99
%


Probier mal diese Änderungen.

Hab die Werkzeugdaten an den Werkzeugkompensationsspeicher C angepasst. (Blau)
Es waren G90 und G91 in einem Satz. (Orange)

Gruß Variabel



HALLO
danke fürs ändern
es funktioniert vielen dank
ist es noch möglich bei der eingabe das D wegzulassen?
were fein für mich


und noch eine bitte
um mehrere kreistaschen zu fertigen möchte ich es mit G66 statt g65 aufrufen jedoch geht das wegen der XY angabe nocht sie fährt immer auf den gleichen punkt kann mas das auch weglassen
danke

besten gruß chris

Der Beitrag wurde von Chris89 bearbeitet: 21.11.2014, 10:54 Uhr
   
Beitrag 21.11.2014, 13:23 Uhr
Variabel
Level 4 = Community-Meister
****
%
:1001(KREISTASCHE 7.1.97 BI)

#4=#5001
IF[#24NE#0]THEN#4=#24
#5=#5002
IF[#25NE#0]THEN#5=#25
#6=#4107
IF[#7NE#0]THEN#6=#7

(Neuer Block mit Zuweisungen und Abfragen)


IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1

(Abfrage nach #7 entfernt)

IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )

( Werte geändert)
N2G00G90X#4Y#5


Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]

(Werte geändert)
N3#33=#19/2-#[13000+#6]-#[12000+#6]

#32= [[[#[13000+#6]+#[12000+#6]] *2]*[#13/100]]/4

#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360

(Werte geändert)
N1#14=#4+COS[#1]*#3
#15=#5+SIN[#1]*#3


G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29

(Werte geändert)
#14=#4+COS[#1]*#33
#15=#5+SIN[#1]*#33


#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6

(Werte geändert)
G0G90X#4Y#5


G91 Z1
G90
IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3

(Werte geändert)
N6#14=#4+[COS[#1]]*[#33-1]
#15=#5+[SIN[#1]]*[#33-1]


G0X#14Y#15Z#18
M99
%


Ich hoffe, das ich jetzt keinen Fehler eingebaut habe.

Das Makro sollte immer noch mit dem alten Aufruf laufen.

Kann aber, wenn man X.. Y.. D.. weg lässt, die aktuelle Position und das aktive Werkzeug übernehmen, und mit diesen Werten arbeiten.

Bitte vorm testen eine Sicherungskopie vom Original anlegen.

Auf Funktion konnte ich es nicht prüfen. Also Bitte mit größter Vorsicht Testen, da ne Menge verändert wurde.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 21.11.2014, 15:30 Uhr
Chris89
Level 1 = Community-Lehrling
*
QUOTE (Variabel @ 21.11.2014, 13:23 Uhr) *
%
:1001(KREISTASCHE 7.1.97 BI)

#4=#5001
IF[#24NE#0]THEN#4=#24
#5=#5002
IF[#25NE#0]THEN#5=#25
#6=#4107
IF[#7NE#0]THEN#6=#7

(Neuer Block mit Zuweisungen und Abfragen)


IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1

(Abfrage nach #7 entfernt)

IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )

( Werte geändert)
N2G00G90X#4Y#5


Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]

(Werte geändert)
N3#33=#19/2-#[13000+#6]-#[12000+#6]

#32= [[[#[13000+#6]+#[12000+#6]] *2]*[#13/100]]/4

#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360

(Werte geändert)
N1#14=#4+COS[#1]*#3
#15=#5+SIN[#1]*#3


G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29

(Werte geändert)
#14=#4+COS[#1]*#33
#15=#5+SIN[#1]*#33


#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6

(Werte geändert)
G0G90X#4Y#5


G91 Z1
G90
IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3

(Werte geändert)
N6#14=#4+[COS[#1]]*[#33-1]
#15=#5+[SIN[#1]]*[#33-1]


G0X#14Y#15Z#18
M99
%


Ich hoffe, das ich jetzt keinen Fehler eingebaut habe.

Das Makro sollte immer noch mit dem alten Aufruf laufen.

Kann aber, wenn man X.. Y.. D.. weg lässt, die aktuelle Position und das aktive Werkzeug übernehmen, und mit diesen Werten arbeiten.

Bitte vorm testen eine Sicherungskopie vom Original anlegen.

Auf Funktion konnte ich es nicht prüfen. Also Bitte mit größter Vorsicht Testen, da ne Menge verändert wurde.


Gruß Variabel



Vielen Dank
werde es am Montag gleich testen smile.gif
   
Beitrag 21.11.2014, 15:54 Uhr
Chris89
Level 1 = Community-Lehrling
*
QUOTE (Variabel @ 21.11.2014, 13:23 Uhr) *
%
:1001(KREISTASCHE 7.1.97 BI)

#4=#5001
IF[#24NE#0]THEN#4=#24
#5=#5002
IF[#25NE#0]THEN#5=#25
#6=#4107
IF[#7NE#0]THEN#6=#7

(Neuer Block mit Zuweisungen und Abfragen)


IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1

(Abfrage nach #7 entfernt)

IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )

( Werte geändert)
N2G00G90X#4Y#5


Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]

(Werte geändert)
N3#33=#19/2-#[13000+#6]-#[12000+#6]

#32= [[[#[13000+#6]+#[12000+#6]] *2]*[#13/100]]/4

#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360

(Werte geändert)
N1#14=#4+COS[#1]*#3
#15=#5+SIN[#1]*#3


G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29

(Werte geändert)
#14=#4+COS[#1]*#33
#15=#5+SIN[#1]*#33


#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6

(Werte geändert)
G0G90X#4Y#5


G91 Z1
G90
IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3

(Werte geändert)
N6#14=#4+[COS[#1]]*[#33-1]
#15=#5+[SIN[#1]]*[#33-1]


G0X#14Y#15Z#18
M99
%


Ich hoffe, das ich jetzt keinen Fehler eingebaut habe.

Das Makro sollte immer noch mit dem alten Aufruf laufen.

Kann aber, wenn man X.. Y.. D.. weg lässt, die aktuelle Position und das aktive Werkzeug übernehmen, und mit diesen Werten arbeiten.

Bitte vorm testen eine Sicherungskopie vom Original anlegen.

Auf Funktion konnte ich es nicht prüfen. Also Bitte mit größter Vorsicht Testen, da ne Menge verändert wurde.


Gruß Variabel



Vielen Dank
werde es am Montag gleich testen smile.gif


EDIT:
habe es nun zusammengeschrieben stimmt das so:
oder gibt es noch schönheitsfehler
oder gehört von dem oben blau geschriebenen noch etwas entfernt?


%
:1001(KREISTASCHENZYKLUS)
#4=#5001
IF[#24NE#0]THEN#4=#24
#5=#5002
IF[#25NE#0]THEN#5=#25
#6=#4107
IF[#7NE#0]THEN#6=#7
IF[#19EQ#0]GOTO1
IF[#18EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#11EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#13EQ#0]GOTO1
IF[#17NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG )
N2G00G90X#4Y#5
Z#18
IF[#20EQ#0]GOTO3
#16=[#26-#18]/#20
IF[#16LT0]GOTO3
#16=#16*[-1]
N3#33=#19/2-#[13000+#6]-#[12000+#6]
#32= [[[#[13000+#6]+#[12000+#6]] *2]*[#13/100]]/4
#31=#33/#32
IF[#31GT1]GOTO7
#3000=1( KEINE TASCHE MOEGLICH )
N7#30=FIX[#31]
#29=[#31-#30]*[90]
#1=0
#3=#32
#8=0
IF[#20EQ#0]GOTO4
G1G91Z#16F#11
GOTO5
N4G1Z#26F#11
N5WHILE[#8LT#30]DO1
#1=#1+90
IF[#1LT360]GOTO1
#1=#1-360
N1#14=#4+COS[#1]*#3
#15=#5+SIN[#1]*#3
G3G90X#14Y#15R#3F#9
#8=#8+1
#3=#3+#32
END1
#1=#1+#29
#14=#4+COS[#1]*#33
#15=#5+SIN[#1]*#33
#21=[COS[#1]*#33]*[-1]
#22=[SIN[#1]*#33]*[-1]
IF[#29EQ0]GOTO2
G3X#14Y#15R#33F#17
N2G3X#14Y#15I#21J#22F#17
IF[ABS[#5003-#26]LE0.04]GOTO6
G0G90X#4Y#5
G91 Z1
G90
IF[[#26-#18]/#20NE#16]GOTO3
#16=#16-1
GOTO3
N6#14=#4+[COS[#1]]*[#33-1]
#15=#5+[SIN[#1]]*[#33-1]
G0X#14Y#15Z#18
M99
%
   
Beitrag 21.11.2014, 16:10 Uhr
Variabel
Level 4 = Community-Meister
****
Alles blaue sind Änderungen.
Die übernimmst du so.

Das in den (..) kann weg.


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 21.11.2014, 18:12 Uhr
suso
Level 2 = Community-Facharbeiter
**
Danke dir auch Variabel.
Kann ich viel klauen ;-D
Hab immer wenn nötig den Wzg Durchmesser angegeben.
Werd ich demnächst bei meinen Makros wiedermal alles umschreiben :-)
   
Beitrag 23.11.2014, 02:45 Uhr
Chris89
Level 1 = Community-Lehrling
*
Guten Abend
habe mich nun ein bisschen hinein studiert

und ein paar änderungen gemacht:
1. habe die Veriablen geändert
2. alle # Parameter die nicht als Buchstaben (Veriablen) verwendet werden ab #31,32, 33, usw. angegeben (wie weit kann man die eig. angeben bis 50? oder 99?)
3. die Satznummern der Reihenfolge angeordnet (natürlich wurden die GOTOs dem entsprechend angepasst)

Bitte mal drüberschauen ob das schon so richtig oder ob man das nicht so macht?


Sonst habe ich noch Fragen die ich rot farbig neben das prog. geschrieben habe



Neuer Aufruf:
G65P8001R_I_J_K_Z_F_V_W_

Neue Angaben:
X (MITTELPUNKT POSITION)
Y (MITTELPUNKT POSITION)
R (REFERENZEBENE)
I (TASCHENDURCHMESSER)
J (ÜBERDECKUNGSFAKTOR)
K (TIEFENZUSTELLUNG DURCHGÄNGE)
Z (TASCHENTIEFE)
F (ZUSTELLVORSCHUB)
V (SCHRUPPVORSCHUB)
W (SCHLICHTVORSCHUB)
D (WZ-KORREKTUR)


Neues Makro:
%
:8001(KREISTASCHENZYKLUS)
#31=#5001
IF[#24NE#0]THEN#31=#24
#32=#5002
IF[#25NE#0]THEN#32=#25
#33=#4107
IF[#7NE#0]THEN#33=#7 (was bedeutet #0 ist das die Zahl 0 ? und kann das # auch weggelassen werden oder schreibt man das so?)
IF[#18EQ#0]GOTO1
IF[#4EQ#0]GOTO1
IF[#5EQ#0]GOTO1
IF[#26EQ#0]GOTO1
IF[#9EQ#0]GOTO1
IF[#22EQ#0]GOTO1
IF[#23NE#0]GOTO2
N1#3000=2( VARIABLEN UNVOLLSTAENDIG ) (#3000 bedeutet fehlermeldung anzeigen/das in () ist der text/ aber was bedeutet =2 ?)
N2G0G90X#31Y#32
Z#18
IF[#6EQ#0]GOTO3
#34=[#26-#18]/#6
IF[#34LT0]GOTO3
#34=#34*[-1]
N3#35=#4/2-#[13000+#33]-#[12000+#33]
#36=[[[#[13000+#33]+#[12000+#33]]*2]*[#5/100]]/4
#37=#35/#36
IF[#37GT1]GOTO4
#3000=1( KEINE TASCHE MOEGLICH ) (gleich wie oben nur diesmal mit =1 kann es auch weggelassen werden?)
N4#38=FIX[#37]
#39=[#37-#38]*[90]
#40=0
#41=#36 (#41=#36? kann man das nicht weglassen und unten statt #41 einfach #36 angeben?)
#42=0 (Parameter #40 und #42 sind als 0 definiert eig. braucht man es auch nur einmal angeben oder und in den sätzen korrigiern?)
IF[#6EQ#0]GOTO5
G1G91Z#34F#9
GOTO6
N5G1Z#26F#9
N6WHILE[#42LT#38]DO1
#40=#40+90 (#40 wurde vorher schon mal angegeben ist es also nicht besser diesen mit einem anderen noch nicht verwendeten parameter anzugeben? zB: #47=#40+90)
IF[#40LT360]GOTO7
#40=#40-360
N7#43=#31+COS[#40]*#41
#44=#32+SIN[#40]*#41
G3G90X#43Y#44R#41F#22
#42=#42+1
#41=#41+#36
END1
#40=#40+#39
#43=#31+COS[#40]*#35
#44=#32+SIN[#40]*#35
#45=[COS[#40]*#35]*[-1]
#46=[SIN[#40]*#35]*[-1]
IF[#39EQ0]GOTO8
G3X#43Y#44R#35F#23
N8G3X#43Y#44I#45J#46F#23 (hier stand vorher die satznr. N2 die es oben aber auch schon mal gab. war das absicht oder ein fehler?)
IF[ABS[#5003-#26]LE0.04]GOTO9
G0G90X#31Y#32
G91Z1
G90
IF[[#26-#18]/#6NE#34]GOTO3
#34=#34-1
GOTO3
N9#43=#31+[COS[#40]]*[#35-1]
#44=#32+[SIN[#40]]*[#35-1]
G0X#43Y#44Z#18
M99
%


Wie schon mal geschrieben ich kenne mich nicht gut aus mit dem Makro
Also es kann sein das man es so gar nicht macht also bitte bescheid geben
oder wenn es weitere verschönerungen gibt bitte schreiben were sehr froh darüber smile.gif


________________________________________________________________________


Weiteres were noch fein, wenn man den gleichen Vorschub möchte, es nur einmal angeben muss

Also definiert ist ja:
F (ZUSTELLVORSCHUB)
V (SCHRUPPVORSCHUB)
W (SCHLICHTVORSCHUB)

nun möchte ich das man das V und das W nicht angeben muss aber auch kann wenn erforderlich

das heiß wenn W (SCHLICHTVORSCHUB) nicht angegeben wird soll die V (SCHRUPPVORSCHUB) Angabe verwendet werden
und wenn V (SCHRUPPVORSCHUB) nicht angegeben wird soll die F (ZUSTELLVORSCHUB) Angabe verwendet werden


Achja: K und J wären auch noch super
wenn K nicht angegeben wird soll nur 1 Durchgang gemacht werden
wenn J nicht angegeben wird soll 50 verwendet werden (habe es noch nicht getestet wieviel optimal sind kann den Wert aber danach ja noch ändern)

K (TIEFENZUSTELLUNG DURCHGÄNGE)
J (ÜBERDECKUNGSFAKTOR 0=KEINE ÜBERDECKUNG,100 VOLLE ÜBERDECKUNG)


So das wars jetzt aber auch
Hoffe bin nicht zu lästig sorry.gif


vielen dank für eure mithilfe
Gruß Chris
   
Beitrag 23.11.2014, 19:26 Uhr
Variabel
Level 4 = Community-Meister
****
Hallo Chris


Ich empfehle dir, dich mal näher mit dem Handbuch (speziel das Thema Kunden-Makro) zu befassen. Das was du da anstrebst, hätte zur folge, das du im Endefekt nichts mehr vom Orginal Makro übrig behälst.

Ich für meinen Teil werde dir auch gerne weiterhin helfen, wenn du fragen hast. Aber ich werde bestimmt nicht, das Makro kommplett neu schreiben. Das bleibt dir überlassen. Ich habe dir gerne bei der Behebung des Fehlers vom Anfang geholfen. Aber mehr kannst du nicht verlangen.

Aus guten Grund verkauft Fanuc fertige Makros für gutes Geld. Sowie auch diverse Dienstleister bieten Makros an. Natürlich auch gegen gutes Geld.

Du mußt bedenken, das so ein Makro mal nicht so eben geschrieben ist. Es müssen sehr viele Sachen bedacht werden, und sowas kostet nun mal zeit.
Von der Idee bis zum fertigen und voll funktionfähigen Makro kann dann auch mal ein Monat ins Land gehen. Da ich sowas ja auch nur neben der arbeit machen kann, auch wenn es später in der Fertigung eingesetzt wird.

Die frage, wer bei einem Krasch durch das Makro haftet steht bei sowas auch im Raum.

Meine änderungen an dem von dir geposteten Makro haben auf die Tatsächeliche bearbeitung ja keinen Einfluß, da ich mich aus dem Teil des Makros rausgehalten habe.

Der Urheber des Makros wird sich bei seinem vorgehen schon was gedacht habe. Deswegen würde ich dort auch nicht eingreifen, weil das im schlimmsten fall zu einer totalen Fehlfunktion führen könnte (mit Kraschgefahr).



Jetzt hier noch einige Grundinfos:

Die Fanucsteuerung unterscheidet 4 verschieden Variablengruppen

Gruppe 1 (immer Null)
#0
Sie kann nicht geändert werden. Deswegen ist sie immer 0.

Gruppe 2 (Lokale Variablen)
#1 - #33
Diese Variablen stehen dir immer zur verfügung. Sie werden aber bei M30 oder RESET gelöscht. Desweiteren werden sie zur übergabe von Werten an ein Makro benutzt.

Gruppe 3 (globale Variablen)
#100 - #149 (optional bis #199)
Diese Variablen werden zum Datenhandling zwischen Makros und Programmen benutzt. Sie werden aber bei Steuerspanung aus gelöscht.

#500 - #531 (optional bis #999)
Diese Variablen werden zum Datenhandling zwischen Makros und Programmen benutzt. Messmakros z.b. haben dort Ihre Klibrierdaten hinterlegt. Oder auch Herstellermakros können dort Daten hinterlegt haben, Anders als bei den 100`ern werden diese aber nicht bei Steuerspannung aus gelöscht.

Gruppe 4 (System Variablen)

#1000 -
Dort verwaltet die NC ihre Daten.


Ich wünsche dir viel Erfolg mit deinem Vorhaben und wie oben schon gesagt werde ich dir auch gerne weiterhin bei Fragen zur Verfügung stehen.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 23.11.2014, 21:05 Uhr
eckitsch
Level 4 = Community-Meister
****
Hallo,

die Erklärung zu #0 ist nicht ganz richtig.
Und zwar ist der Zustand des Parameters nicht null sondern unklar, also nicht definiert.
Was will man denn erreichen, wenn man gegen #0 prüft? Doch nur, ob der Parameter gesetzt wurde oder nicht.

Gruß eckitsch.
   
Beitrag 23.11.2014, 21:36 Uhr
Variabel
Level 4 = Community-Meister
****
QUOTE (eckitsch @ 23.11.2014, 21:05 Uhr) *
Hallo,

die Erklärung zu #0 ist nicht ganz richtig.
Und zwar ist der Zustand des Parameters nicht null sondern unklar, also nicht definiert.
Was will man denn erreichen, wenn man gegen #0 prüft? Doch nur, ob der Parameter gesetzt wurde oder nicht.

Gruß eckitsch.


Ja und nein. Das Handbuch gibt genau die von mir geschriebene Aussage wieder.

Wobei das so wie du beschrieben hast auch richtig ist.

0 ist bei Fanuc noch lange nicht 0.

Weil einmal die 0 für keinen zugewiesenen Wert steht, und einmal die 0 für den zugewiesenen Wert 0.

Komisch aber ist so. Gerade wenn es um Abfragen geht, kann das zu einem unterschied in der Auswertung führen.

Gruß Variabel

Der Beitrag wurde von Variabel bearbeitet: 23.11.2014, 21:43 Uhr


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 23.11.2014, 21:56 Uhr
Chris89
Level 1 = Community-Lehrling
*
Hallo
Also danke für die antwort
Morgen bin ich wieder bei der arbeit dort werde ich mein bearbeitetes makro mal in der luft testen
Wenns nicht funktioniert habe ich ja immer noch das orginal abgesichert wink.gif
Natürlich ist mir klar das ich verantwortlich bin bei einem crash
Und auch wenn es von einem anderem geändert wird keine angst
Was ich damit oben im gesamten fragen wollte ist nicht ob das neue makro so richtig ist von den fehlern her
Sondern ob es von der makro schreibweise her richtig ist?
#1-#33 sind ja wie beschrieben variablen die mit reset gelöscht werden
Aber was sind die #34-#99? Werden di auch mit reset gelöscht oder kann mann die gar nicht verwenden das würde mich interressiern



Vielen dank für deine hilfe
Ich bin um deine hilfe wirklich froh darum
Gruß Chris
   
Beitrag 23.11.2014, 22:11 Uhr
Variabel
Level 4 = Community-Meister
****
Hallo Chris


Es gibt keine #34 - #99.


Es gibt

#0
#1 - #33
#100 - #149 (- #199 optional)
#500 - #531 (- #999 optional)
#1000 -


Es sei den dafür gibt es auch ne Option bei Fanuc.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 29.11.2014, 14:56 Uhr
Chris89
Level 1 = Community-Lehrling
*
QUOTE (Variabel @ 21.11.2014, 13:23 Uhr) *
...
Ich hoffe, das ich jetzt keinen Fehler eingebaut habe.

Das Makro sollte immer noch mit dem alten Aufruf laufen.

Kann aber, wenn man X.. Y.. D.. weg lässt, die aktuelle Position und das aktive Werkzeug übernehmen, und mit diesen Werten arbeiten.

Bitte vorm testen eine Sicherungskopie vom Original anlegen.

Auf Funktion konnte ich es nicht prüfen. Also Bitte mit größter Vorsicht Testen, da ne Menge verändert wurde.


Gruß Variabel




Prg. läuft super danke smile.gif


Jedoch beim Aufruf mit G66 wird bei der ersten Positon der Zyklus nicht gemacht

Beispiel:
...
G0G54G90X20Y-20Z20
G1Z2F3000
G66P8001R2S20Z-10T2M50H500F700Q1000
X50
X80Y-30
G67
G0Z20
...

Ablauf:
Fräser fährt mit G0 auf X20Y-20Z20
Mit G1 auf Z2
(Hier wird leider das P8001 nicht aufgerufen)sad.gif
Mit G1 auf X50
P8001 wird aufgerufen
Mit G0 auf X80Y-30
P8001 wird aufgerufen
Mit G0 auf Z20
...



Habe im Handbuch folgendes gefunden:
Angehängte Datei  Bild.png ( 30.1KB ) Anzahl der Downloads: 17



würde statt #5001 und #5002 (satzende pos.)
vl. #5041 und #5042 (momentane pos.) funktioniern?
bin mir nicht sicher da hier die WERKZEUGKOMPENSATIONSWERTE enthalten sind und LESEN BEIM VERFAHREN Gesperrt ist (siehe Bild/Tabelle)
oder gift es eine andere möglichkeit?

Gruß Chris
   
Beitrag 29.11.2014, 16:35 Uhr
suso
Level 2 = Community-Facharbeiter
**
Mit G65 wird das Makro an Ort und Stelle Aufgerufen.
Mit G66 - G67 nicht.
Mach nach dem G66 P9008 ... ; einfach zuerst ein G91 X0; dann gehts.
Bei der zweiten Position Das G90 nicht vergessen.
Also:

G66 P9008 ........ ;
G91 X0;
G90 X50;
X80 Y-30;
;
G67
   
Beitrag 30.11.2014, 17:55 Uhr
Variabel
Level 4 = Community-Meister
****
Hallo Chris

Wie Suso es schon gesagt hat, ist das verhalten von G66P.... so schon richtig.

Was die #5041 und #5042 (momentane pos.) angeht, würde ich diese nicht verwenden.
Da Variablen immer im Voraus verarbeitet werden, könnte es dazu kommen, das eine falsche Position eingelesen wird.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 30.11.2014, 22:11 Uhr
Chris89
Level 1 = Community-Lehrling
*
Hallo
Danke leute
Ich habe nun
G91X0
G90
Direkt in das prog. Geschrieben (nicht ins hauptprog.)
Werde es morgen testen
Hoffe ea klappt so auch :/

Schönen abend noch
Gruß Chris
   
Beitrag 01.12.2014, 05:35 Uhr
Variabel
Level 4 = Community-Meister
****
Das wird so nicht klappen.

G66 braucht einen Positioniersatz, zum Starten der Bearbeitung.

Da bring G91 X0. im Makro recht wenig, weil es nun mal noch nicht gestartet wird.


Gruß Variabel


--------------------
Auch wenn deine Steuerung dir sagt, das sie das nicht kann. Gibt es doch immer einen Weg sie von Gegenteil zu überzeugen.

Ach ja. Variabel war früher Speedy1.
   
Beitrag 01.12.2014, 10:08 Uhr
Chris89
Level 1 = Community-Lehrling
*
ach schitt
hat sich natürlich nichts gebracht hab ich mir aber schon fast gedacht
gibts sonst keine möglichkeit mehr (außer so wir "suso" gepostet hat)?

gruß christoph
   
15 Besucher lesen dieses Thema (Gäste: 15)
0 Mitglieder: