584.837 aktive Mitglieder*
5.251 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
FANUC Forum

Variablen und Makros mit Fanuc 16iM

Beitrag 06.11.2009, 17:56 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

Hi ihr Experten

ich habe mich in den letzten Tagen ein wenig mit diesem Thema beschäftigt. Der Grund ist, ich muss an meiner Fräsmaschine jedes Teil ausrichten. Ein Fester Anschlag reicht leider nicht aus. Mein Nullpunkt ist die Mitte des Werkstücks, jetzt muss ich also beide Seiten des Werkstück antasten (Taster) oder mit einem Werkzeug ankratzen. Nun errechne ich aus den beiden Werten den Versatz und verschiebe die X Possition z.B so:

G10 G91 L2 P1 (G54) x-0.1

Das Funktioniert soweit auch, allerdings gibt es jetzt auch Werkstücke, die in X und Y ausgerichtet werden müssen. Wenn man das nun den ganzen Tag macht, schleichen sich irgendwann immer wieder Rechenfehler/Tippfehler ein Oder es wird sogar vergessen den Satz einzulesen. Daher dachte ich das die Maschine diese Berechnung doch auch selbst machen können muss. Im Handbuch las ich dann von den Zauberworten Makros und Variablen. Es gibt Systemvariablen die die aktuelle Possitionen der Axsen enthalten und die Rechenopperationen wurden dort auch beschrieben!

Also dachte ich mir, ran ans Werk und versuchte zunächst mal folgendes um zu sehen ob das mit den Variablen überhaubt funktioniert:

G54
#1=50
G0 X#1

Bei dem Satz #1=50 war noch alles ok, aber als der Satzt G0 X#1 eingelsen wurde erhielt ich den Fehler "Unzulässige Adresse"

Was bedeutet das nun, kann meine Streuerung mit den Variablen nichts anfangen oder muss ich da noch etwas Einstellen damit diese verarbeiten werden können!

Wie ihr seht, habe ich von dieser Sache nicht viel Ahnung, allerdings interresiert mich diese Makro-Programmierung.

MFG Sam78
TOP    
Beitrag 06.11.2009, 18:53 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

macht das die 16er noch nicht mit dem ausrechnen aus 4 punkten?
hab hier mal ein macro geschrieben, lass es einfach in der luft ablaufen und kontrolliere es danach ob die punkte stimmen.

%
:7052(MACRO-MITTELPUNKT X-Y NP.G54 SETZEN-BAZ-FANUC)
M00(ANFAHREN X+)
#101=#5041
M00(ANFAHREN X-)
#102=#5041
M00(ANFAHREN Y+)
#103=#5042
M00(ANFAHREN Y-)
#104=#5042
#105=[[#102-#101]/2]+#101](MITTELPUNKT X-ACHSE)
#106=[[#104-#103]/2]+#103](MITTELPUNKT Y-ACHSE)
G10G90L2P1X#105Y#106(X-Y G54-SETZEN)
M30
%
TOP    
Beitrag 06.11.2009, 19:33 Uhr
Boern
Boern
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 27.11.2004
Beiträge: 2.484

Hallo,

nimm doch eine Variable ab 100

z.B. #101

Ich denke das der #1 vom System benützt wird !

Gruß Boern


--------------------

Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.


Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
TOP    
Beitrag 06.11.2009, 21:21 Uhr
Holger45
Holger45
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 25.04.2004
Beiträge: 1.105

Hallo zusammen,
#1 ist dem Buchstaben A zugeordnet.
#1 ist also keine Systemvariable bei Fanuc so steht es im Handbuch.

Grüße aus Gütersloh
Holger

Der Beitrag wurde von Holger45 bearbeitet: 06.11.2009, 21:22 Uhr


--------------------
Wenn du heute nur das tust - was du gestern schon getan hast - dann bleibst du auch morgen nur da - wo du heute schon bist

Woran erkennen wir etwas, das noch Technik ist?
Ein guter Fingerzeig: Wenn ein Handbuch dabei ist.


(Douglas Adams 1952-2001)
TOP    
Beitrag 06.11.2009, 21:51 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

QUOTE (Holger45 @ 06.11.2009, 21:21) *
Hallo zusammen,
#1 ist dem Buchstaben A zugeordnet.
#1 ist also keine Systemvariable bei Fanuc so steht es im Handbuch.

Grüße aus Gütersloh
Holger


Oh, das wusste ich nicht. In meinem Handbuch Kappitel 15 "Angepasstes Makro" stehen die Beispiele auch immer mit #1, daher dachte ich die sind frei! Weiter steht das sie Variablen

#0 -> immer Null
#1-33 -> lokale Variablen, gelten immer nur im aktuellen Programm
#100-149
#500-531 -> gemeinsame Variablen, können von mehreren Makroprogrammen benutzt werden
#1000 - -> Systemvariablen

allerdings ist dieses Handbuch für die Steuerungen 16i 18i 160i 180i - Model MA. Weiß nicht ob das jetzt ein großer Unterschied zu meiner 16iM also ohne das A ist!?

Werde das am Montag aber mal testen. Jedenfalls klingt es ja schonmal nicht so, als könne diese Steuerung das nicht. Das ist ja schonmal viel Wert biggrin.gif Danke euch erstmal!

MFG Sam78
TOP    
Beitrag 06.11.2009, 22:40 Uhr
Holger45
Holger45
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 25.04.2004
Beiträge: 1.105

Hallo SAM78,
damit wir uns nicht falsch verstehen.
Ich habe mich da auch vielleicht ein bisschen falsch ausgedrückt und von Variablen gesprochen. Gemeint sind aber Argumente.

Die Argument Beschreibung findest du im Handbuch etwas weiter.

#1=A
#2=B
#3=C
Dann kommt ein Sprung
#7=D

In meinen Handbuch (B63524_01GE) ist das auf Seite 317 erklärt.

Der Vorteil von Argumenten ist, das du mit G65 P9999 A B C direkt zuweisen kannst.

ZB

A= X Länge
B= Y Länge

G65 P9999 A100 B125

%
O9999
X#1
Y#2
M99

Ich hoffe das ich dir damit etwas weiter Helfen konnte

Grüße aus Gütersloh
Holger


--------------------
Wenn du heute nur das tust - was du gestern schon getan hast - dann bleibst du auch morgen nur da - wo du heute schon bist

Woran erkennen wir etwas, das noch Technik ist?
Ein guter Fingerzeig: Wenn ein Handbuch dabei ist.


(Douglas Adams 1952-2001)
TOP    
Beitrag 07.11.2009, 12:34 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

QUOTE (CBR600 @ 06.11.2009, 18:53) *
macht das die 16er noch nicht mit dem ausrechnen aus 4 punkten?
hab hier mal ein macro geschrieben, lass es einfach in der luft ablaufen und kontrolliere es danach ob die punkte stimmen.

%
:7052(MACRO-MITTELPUNKT X-Y NP.G54 SETZEN-BAZ-FANUC)
M00(ANFAHREN X+)
#101=#5041
M00(ANFAHREN X-)
#102=#5041
M00(ANFAHREN Y+)
#103=#5042
M00(ANFAHREN Y-)
#104=#5042
#105=[[#102-#101]/2]+#101](MITTELPUNKT X-ACHSE)
#106=[[#104-#103]/2]+#103](MITTELPUNKT Y-ACHSE)
G10G90L2P1X#105Y#106(X-Y G54-SETZEN)
M30
%


ACHTUNG: funktioniert nicht, habs heute ausprobiert.
TOP    
Beitrag 07.11.2009, 12:52 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

QUOTE (CBR600 @ 07.11.2009, 12:34) *
ACHTUNG: funktioniert nicht, habs heute ausprobiert.

Kannst du auch sagen was nicht funktioniert? Fehler im Makro oder eben weil die Steuerung dafür nicht ausgelegt/freigeschaltet ist?

Sam78
TOP    
Beitrag 07.11.2009, 13:04 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

QUOTE (Sam78 @ 07.11.2009, 12:52) *
Kannst du auch sagen was nicht funktioniert? Fehler im Makro oder eben weil die Steuerung dafür nicht ausgelegt/freigeschaltet ist?

Sam78



fehler im macro, die positionen sind falsch die abgelesen werden, es werden so wie es im moment geschrieben ist die aktuelle position von deinem werkstückkoordinatensystem aus gelesen und nicht die von deinem maschinenkoordinatensystem, und dann ist die berechnung der mittelpunkte falsch (maschine geht auf alarm) weil die aktuelle position schon ein negativer wert ist und ich ihn in der berechnung nochmal subtrahiere. aber ich ändere das noch ab.
TOP    
Beitrag 07.11.2009, 14:08 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

QUOTE (CBR600 @ 07.11.2009, 13:04) *
fehler im macro, die positionen sind falsch die abgelesen werden, es werden so wie es im moment geschrieben ist die aktuelle position von deinem werkstückkoordinatensystem aus gelesen und nicht die von deinem maschinenkoordinatensystem, und dann ist die berechnung der mittelpunkte falsch (maschine geht auf alarm) weil die aktuelle position schon ein negativer wert ist und ich ihn in der berechnung nochmal subtrahiere. aber ich ändere das noch ab.


%
:7052(MACRO-MITTELPUNKT X-Y NP.G54 SETZEN-BAZ-FANUC)
M00(ANFAHREN X+)
#101=#5021
M00(ANFAHREN X-)
#102=#5021
M00(ANFAHREN Y+)
#103=#5022
M00(ANFAHREN Y-)
#104=#5022
ABS[#101]
ABS[#102]
ABS[#103]
ABS[#104]
#105=[[#102-#101]/2]+#101](MITTELPUNKT X-ACHSE)
#106=[[#104-#103]/2]+#103](MITTELPUNKT Y-ACHSE)
G10G90L2P1X-#105Y-#106(X-Y G54-SETZEN)
M30
%

so müsste es theoretisch funktionieren
TOP    
Beitrag 07.11.2009, 14:37 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

Erst einmal danke für deine Mühe!

Aber warum ist es falsch wenn er die Daten vom Werkstücknullpunkt einliest, ist doch genau das was ich brauche!

Wenn die Maschine Beispielsweise auf X-100 steht und man schreibt #101=#5041 nimmt dann #101 den Wert -100 an oder nur 100? Wenn die Variablen auch negative Zahlen annehmen ist es doch eine leichte Rechnung oder? Dann müsste man doch nur die Summe der beiden Werte nehmen und diese dann durch zwei Teilen! Ich hätte das in etwa so versucht!

:O1234
T1 M66 (Das Werkzeug mit dem ich auch ankratze)

GO G90 G43 G54 X-120 Y0 Z150 H1
Z20
M0 (Antasten X-)
#101=#5041 (vorrausgesetzt #5041 enthält den Wert der aktuellen X Possition vom Werkstücknullp.)
G53 Z0 (sicheres entfernen des Werkzeugs vom Werkstück)
M79
G1 G90 A-180 F5000 (Werkstück um 180Grad schwenken)
M78
G0 G90 G55 X120 Y0 Z150 H1
G0 Z20
M0 (Antasten X+)
#102=#5041
#103=#101+#102
#103=#103/2 (ist das nötig wegen Punkt vor Strich? Gibt es die Möglichkeit das in einem Satz zu schreiben??)

G10 G91 L2 P0 X#103

G53 Z50
G0 G90 G43 G55 X0 Y0 Z100 S1000 F700 M3 H1 T2
Weitere Bearbeitung mit gleichem Werkzeug

Nur Schade das ich das nicht ausprobieren kann vor Montag

Sam78
TOP    
Beitrag 07.11.2009, 15:00 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

QUOTE (Sam78 @ 07.11.2009, 14:37) *
Erst einmal danke für deine Mühe!

Aber warum ist es falsch wenn er die Daten vom Werkstücknullpunkt einliest, ist doch genau das was ich brauche!

Wenn die Maschine Beispielsweise auf X-100 steht und man schreibt #101=#5041 nimmt dann #101 den Wert -100 an oder nur 100? Wenn die Variablen auch negative Zahlen annehmen ist es doch eine leichte Rechnung oder? Dann müsste man doch nur die Summe der beiden Werte nehmen und diese dann durch zwei Teilen! Ich hätte das in etwa so versucht!

:O1234
T1 M66 (Das Werkzeug mit dem ich auch ankratze)

GO G90 G43 G54 X-120 Y0 Z150 H1
Z20
M0 (Antasten X-)
#101=#5041 (vorrausgesetzt #5041 enthält den Wert der aktuellen X Possition vom Werkstücknullp.)
G53 Z0 (sicheres entfernen des Werkzeugs vom Werkstück)
M79
G1 G90 A-180 F5000 (Werkstück um 180Grad schwenken)
M78
G0 G90 G55 X120 Y0 Z150 H1
G0 Z20
M0 (Antasten X+)
#102=#5041
#103=#101+#102
#103=#103/2 (ist das nötig wegen Punkt vor Strich? Gibt es die Möglichkeit das in einem Satz zu schreiben??)

G10 G91 L2 P0 X#103

G53 Z50
G0 G90 G43 G55 X0 Y0 Z100 S1000 F700 M3 H1 T2
Weitere Bearbeitung mit gleichem Werkzeug

Nur Schade das ich das nicht ausprobieren kann vor Montag

Sam78


klar du kannst deinen werkstücknullpunkt auch im g91 versschieben dann ist #5041 richtig, allerdings weist du nie ob der wert größer oder kleiner werden muss, dem entsprechend müsstest du noch eine bedingung dazu schreiben, du weist ja nie ob du das versatzmaß zum alten nullpunkt addieren oder subtrahieren musst!? aus dem grund habe ich das mit dem maschinenkoordinatensystem gemacht und hab mit dem alten nullpunkt gar nichts mehr gerechnet sondern habe gleich einen neuen gesetzt (vorraussetzung ist aber das dein nullpunkt in der mitte deiner vier angetasteten punkte liegt)!

#103=#101+#102
#103=#103/2 (ist das nötig wegen Punkt vor Strich? Gibt es die Möglichkeit das in einem Satz zu schreiben??) ------ #103=[[#101+#102]/2]
TOP    
Beitrag 07.11.2009, 15:26 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

Ok,

irgendwie reden wir aneinander vorbei glaube ich. Vermutlich liegt es daran das ich "noch" nicht viel Ahnung davon habe! Ich dachte eben wenn die Variablen auch negative Zahlen annehmen, ergibt es sich doch in der Rechnung ob in + oder - verschoben werden muss. Wenn die Variablen nach dem Antasten folgende Werte haben:

#101=-100
#102=101

lautet die Rechnung:

#103=[[#101+#102]/2] also: (-100+101)/2=0.5

also hat #103 den Wert 0.5 der Nullpunkt wird dann auch in die richtige Richtung verschoben. Wenn ich die Vorzeichen der Variablen nun vertausche:

#101=100
#102=-101

#103=[[#101+#102]/2] also: (100+-101)/2=-0.5 (das + steht für die Summe nicht für Addition laut meinem Handbuch)

jetzt müsste der Wert #103 -0.5 sein und der Nullpunkt wird ebenfalls korrekt verschoben! Liege ich damit so falsch! Was habe ich nicht bedacht?! Ich muss das verstehen sonst wird das nie klappen mit meinem Ausrichten wink.gif

Sam78

Der Beitrag wurde von Sam78 bearbeitet: 07.11.2009, 15:41 Uhr
TOP    
Beitrag 07.11.2009, 15:45 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

QUOTE (Sam78 @ 07.11.2009, 15:26) *
Ok,

irgendwie reden wir aneinander vorbei glaube ich. Vermutlich liegt es daran das ich "noch" nicht viel Ahnung davon habe! Ich dachte eben wenn die Variablen auch negative Zahlen annehmen, ergibt es sich doch in der Rechnung ob in + oder - verschoben werden muss. Wenn die Variablen nach dem Antasten folgende Werte haben:

#101=-100
#102=101

lautet die Rechnung:

#103=[[#101+#102]/2] also: (-100+101)/2=0.5

also hat #103 den Wert 0.5 der Nullpunkt wird dann auch in die richtige Richtung verschoben. Wenn ich die Vorzeichen der Variablen nun vertausche:

#101=100
#102=-101

#103=[[#101+#102]/2] also: (100+-101)/2=-0.5

jetzt müsste der Wert #103 -0.5 sein und der Nullpunkt wird ebenfalls korrekt verschoben! Liege ich damit so falsch! Was habe ich nicht bedacht?! Ich muss das verstehen sonst wird das nie klappen mit meinem Ausrichten wink.gif

Sam78



das ist schon richtig, aber in deinem fall wäre #101 immer ein negativer wert und #102 immer ein positiver wert. du hast jetzt der #101 im ersten beispiel einen negativen wert zugeordnet und im zweiten beispiel einen positiven wert zugeordnet. dann stimmt deine rechnung schon. aber du fährst ja dein teil einmal links vom nullpunkt an (negativ) und einmal rechts vom nullpunkt (positiv). dann bekommst du immer nur einen positiven wert raus.
dann musst du noch dazuschreiben: IF[#102LT100]THENGOTO100 (LT-kleiner als)
IF[#102GT100]THENGOTO200 (GT-größer als)
N100G10G91X-0.5
GOTO999
N200G10G91X0.5
N999M99
TOP    
Beitrag 07.11.2009, 16:22 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

Stimm, die Vorzeichen werden sich nicht ändern, aber wenn das Werkstück sich verschiebt kann das dann so aussehen:

1. Beispiel

#101=-100
#102=101

daraus ergibt sich (-100+101)/2=0.5

2. Beispiel

#101=-101
#102=100

daraus ergibt sich (-101+100)/2=-0.5

Aus dem zweiten Beispiel dürfte rein rechnerisch kein positiver Wert werden und somit verschiebe ich dann auch in die richtige Richtung, oder?

Sam78
TOP    
Beitrag 07.11.2009, 16:29 Uhr
CBR600
CBR600
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 173

ja so stimmt das
TOP    
Beitrag 10.11.2009, 00:20 Uhr
Sam78
Sam78
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.11.2009
Beiträge: 7

Also ich habe das heute nochmal probiert und musste leider feststellen, das die Maschine überhaubt nichts mit den Variablen (egal ob #1 oder #101) anfangen kann. Im Handbuch stand auch beschrieben, wie ich mir die Werte der Variablen anschauen und verändern könnte, aber auch dieser Bildschirm blieb mir verborgen. Daher denke ich mal das diese Option an meiner Maschine nicht freigeschaltet wurde und somit hat sich die ganze Sache dann wohl erledigt, oder kann es sein das ich da noch irgendwas einstellen kann/muss?

Sam78
TOP    



1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: