FANUC
FANUC

Ihr Spezialist für Fabrikautomation

Fanuc 18M, GOTO & IF then usw. schleife ??

Beitrag 24.10.2005, 13:50 Uhr
stefancnc1
Level 1 = Community-Lehrling
*
hallo gemeinde,

habe da ein kleines problem!
bin schon seit einigen tagen zugange ein progi. für eine innen rechtecktasche mit tauchvorgang (Rampe) zu fertigen.
holger hat mir einige nüztliche tipps gegeben. deren umstzung noch von meiner seite an mangelden wissen über parameterprogrammierung hapert-
bin aber auf gutem wege es zu kapieren. :-)
danke dir holger.

so nun meine frage:

Das ist ein program für eine rechtecktasche mit rampe inkremental.

finde ich eigendlich nicht verkehrt diese art der programierung.
mich stört nur dabei das ich auf eine tiefe von ca: Z-20
diese tasche räumen muß.
ich möchte eigendlich nur den taschen bereich ( N100- N130) so oft wiederholen,
bis ich mein endmaß von Z- 20 erreicht habe, danach soll dann mit satz
N190 weiter gearbeitet werden.

Habe es mit einem Unterpr. probiert, allerdings bleibt die maschine für sec.
nach der kontur auf endstellung stehen.
das ist nicht gut für das werkzeug und erst recht nicht für die kontur.
es sollte schon kontinuirlich verfahren werden.

Interesant wäre dann noch die tauchtiefe variable zu gestallten.
also ich denke das es so gehen könnte wenn ich
#150 = Z-0.15
und dann #150 durch Z-0.15 zu ersetzen ?! oder geht das nicht so?

hoffe mal das ich hier nicht zu dumme fehler reingebracht habe, wie gesagt ich bin gerade dabei mich für variablen progi. zu interessieren.

N10 T3 M06;
N20 G54 S2600 F800 M03;
N30 G00 G43 H03 X27 Y0 Z50;
N40 G00 Z0.5;
N50 G91 (INKREMENTAL);
N60 G01 G41 Y-13.8 Z-0.05;
N70 G01 X15.75 Z-0.15;

N100 G1Y27.6Z-0.15
N110 G1X-31.5Z-0.15
N120 G1Y-27.6Z-0.15
N130 G1X31.5Z-0.15

N190 G90
N200 G0X27Y0
N210 G40Z100
N220 M09
N230 M30



Würde mich über gedanken und anregungen sehr freuen.
MFG stefan
   
Beitrag 24.10.2005, 14:55 Uhr
FANUCER
Level 3 = Community-Techniker
***
Hallo Stefan,

"#150 = Z-0.15" wäre falsch, es wird nur "#150 = -0.15" geschrieben.

Der Fahrbefehl "Z#150" ergibt dann "Z-0.15".

Du kannst problemlos eine Schleife bauen in der der Z-Wert immer weiter zugestellt wird:

------

#150 = 0 (Z-Start)
#151 = 5. (Z-Zustellung)
#152 = -20. (Taschentiefe)

N100 (Schleifen-Start)
N110 G0 Z#150
N120 #150=#150-#151 (Z zustellen)
N130 IF [#150 LT #152] GOTO 200 (Wenn Taschentiefe erreicht ...)
N140 G1 X10.Y10.Z#150 (Rampe)

... (Ab hier den Rest der Tasche)
...
N190 GOTO 100

N200 (Schleifenende)

------

Sollte jetzt nur als Anregung dienen, natürlich müßte noch eine "Restzustellung" erfolgen, falls die Zustellung nicht mit der Taschentiefe genau hinhaut!

Gruss, Fanucer


--------------------
Gruss, Horst
   
Beitrag 24.10.2005, 17:38 Uhr
FANUCER
Level 3 = Community-Techniker
***

könntest du dennoch einmal über das progi. schauen?
nicht das ich ein fehler gemacht habe mit den sätzen. z.b. G41 usw.
ob alles in der reihen folge auch hinhaut.

Hab' ich, allerdings ist leider das ganze Programm ein Fehler. Wo sind denn z.B. hier die Achsbezeichner für #151??

N100 G1Y27.6#151
N110 G1X-31.5#151
N120 G1Y-27.6#151
N130 G1X31.5#151


Meine letzte Antwort war nur ein "Beispiel" für das Arbeiten mit Variablen!! Evtl. solltest du im Vorfeld ein paar kleinere Trockenübungen mit Variablen machen, damit du die Syntax verstehst?!

--------------------------------------------------
Beispiel Rechteck ohne Radiuskorr. u. Z:

O1000

#151=100 (X-LAENGE)
#152=50 (Y-BREITE)
#153=-50 (X-START)
#154=-25(Y-START)
#155=500 (VORSCHUB)

G0 G54 X#153 Y#154
G1 G91 X#151 F#155
Y#152
X-#151
Y-#152
G0 G90
M30
---------------------------------------------------

Gruss, Horst (bitte nicht immer in's Postfach schreiben!)


--------------------
Gruss, Horst
   
Beitrag 24.10.2005, 18:41 Uhr
stefancnc1
Level 1 = Community-Lehrling
*
ups,
sorry da hast du recht, habe sie natürlich vergessen.
ja in sachen syntax, da gebe ich zu das ich da so meine schwierigkeiten habe.

Wenn es hier im forum nicht stört, würde ich gerne meine gedanken zu diesem beispiel preisgeben.

ich bedanke mich bei FANUCER der mir einige anregungen gegeben hat.

:o100
(Tasche)
#150 = 0 (Z-Start)
#151 = -0.15 (Z-Zustellung)
#152 = -20 (Taschentiefe)

also, bis hier her habe ich es verstanden

N10 T3 M06;
N20 G54 S2600 F800 M03;
N30 G00 G43 H03 X27 Y0 Z50;
N40 G00 Z0.5;
N50 G91 (INKREMENTAL);
N60 G01 G41 Y-13.8 Z-0.05;
N70 G01 X15.75 Z-0.15;

Das obere habe ich geschrieben verstehe ich auch.

jetzt fängt es bei mir an zu arbeiten hinter der schädel decke
bitte um korrekturen ?!

Satz N110 eilgang auf Z0
Satz N120 Variable #150 ist gleich variable #150 wenniger inhalt von #151(-0.15)
Satz N130 Wenn [inhalt # 150 größer/gleich? inhalt von #152], dann springe nach N195, ansonsten räumt die cnc die tasche bis zu dem punkt in #152 ?
Satz N140 verstehe ich überhaupt nicht so richtig?
X... Y.... variable #150 ?


N100 (Schleifen-Start)
N110 G0 Z#150
N120 #150=#150-#151 (Z zustellen)
N130 IF [#150 LT #152] GOTO 195 (Wenn Taschentiefe erreicht ...)
N140 G1 X10.Y10.Z#150 (Rampe)

hier beginnt dann meine eigendliche kontur, die ich mit der oberen schleife
bis zum variablen Z punkt angegeben habe?

N150 G1Y27.6z#151
N160 G1X-31.5Z#151
N170 G1Y-27.6Z151
N180 G1X31.5z#151

Satz N190 müßte dann ja eigendlich das ganz mit der schleife verbinden, oder?

N190 GOTO 100

Ausfahren und ende, das habe ich verstanden

N195 G90
N200 G0X27Y0
N210 G40Z100
N220 M09
N230 M30
:

MFG
   
Beitrag 24.10.2005, 19:46 Uhr
Armageddon
Level 5 = Community-Ingenieur
*****
Kannst anstatt:

N100 (SCHLEIFENSTART)
.
.
.
.
N190 GOTO100

auch

N100 DO1
.
.
.
.
N190 END1

schreiben und somit eine Endlosschleife machen da Du ja mit

N130 IF [#150 LT #152] GOTO 195

die Schleife verläßt. Der Effekt ist derselbe.

Wobei die Schleife aber eigentlich bei Satz N120 beginnen sollte/könnte in dem Beispiel.
   
Beitrag 24.10.2005, 20:46 Uhr
FANUCER
Level 3 = Community-Techniker
***
@Armageddon

Jow, stimmt, bei der Rücksprungadresse habe ich mich leider verschrieben!
Das "IF" habe ich eingebaut, damit Stefan etwas bzgl. Variablen zu lesen + denken hat! wink.gif

@stefancnc1

Siehe leider oben, habe mich im Beispiel mit der Sprungadresse verschrieben!

>jetzt fängt es bei mir an zu arbeiten hinter der schädel decke
>bitte um korrekturen ?!

Schön! thumbs-up.gif

Die Angabe einer #-Variable ist nur ein "Stellvertreter" für einen Wert. Bedeutet, die folgenden 2 Blöcke sind vom Ergebnis identisch:

1.-----------
G0 Z10
-------------

2.-----------
#150=10
G0Z#150
-------------



Die Tasche ist für dich momentan wohl zu komplex. Versuch' doch erst mal, meine Rechteck-Geschichte (Beispiel) komplett in G90 umzuschreiben. Rein zur Übung - helfe dir bei Problemen.

Gruss, Horst


--------------------
Gruss, Horst
   
Beitrag 25.10.2005, 13:18 Uhr
swatcher
Level 3 = Community-Techniker
***
hey wäre natürlich super wenn du das Prog. heir einstellen würdest wenn es fertig und zu deiner zufridenheit getestet ist

Vielen dank im Voraus
   
Beitrag 25.10.2005, 14:16 Uhr
Holger45
Level 7 = Community-Professor
*******
Hallo zusammen,
um die Syntax von einem Variaben Prog zu verstehen würde ich erstmal ganz langsam anfangen.

#500= 0.15 (Rampenzustellung in Z)
#501=100 ( Taschenmaß in X)
#502=50 (Taschenmaß in Y )
#503=10 (Eckenradius)
#504=10 (Gesamttiefe)
#505=1000 ( Vorschub)

Das sind doch erstmal die Grundbedingungen die ich erfüllen muß.
Also fängt man doch an und schreibt sich ein einfaches Program um eine Tasche zu fahren.

G0 G91 G28 Z0
T1
M6
G0 G90 G54 X0 Y0
G0 G90 G43 H1 Z5. S2800 M3
G1 Z0 F1000
G1 G41 D1 X50.
G1 G90 Y25. G91 Z-0.15
...........
............
.............
.............
............
.............
Usw.

Wie ihr seht ist doch die Hauptfrage wo setze ich den Nullpunkt um überhaupt das Progi starten zu können.
In dem Beispiel Mitte Tasche.
Wenn das Progi im Klartext so läuft wie ihr es wollt. dann ersetzt die Werte in X Y und Z durch die entsprechenden Variablen.
Außerdem müßt ihr auch schon die ersten Rechenfunktionen einbauen.

Ich würde es erstmal so machen bis das Programm mit Rechenfunktionen und Variablen sauber läuft.
Danach erst mit Sprüngen und Wiederholungen anfangen.
Ihr werdet feststellen das die oberen Variablen nicht ausreichen und die müssen dann immer erweitert werden. Bis es schließlich passt.

Gerade bei Variablen ist noch kein Meister vom Himmel gefallen.


Gruß
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)
   
Beitrag 25.10.2005, 19:12 Uhr
Igel80
Level 3 = Community-Techniker
***
Hallo zusammen!

Ich habe das Thema Macro-Programmierung schon öfter verfolgt. Dabei ist mir folgendes aufgefallen: Die Variablen-Nr. werden wahllos benutzt, ohne Rücksicht auf dir vorhandene Struktur an der Maschine (Macro-Programme bzw. vom Hersteller genutzte Variablen).
Dies muß man unbedingt vorher abklären! Gerade die Macro-Neulinge!
Bei mir sind dies in den Bereichen ab #500 beispielsweise die Toolsetter-Daten, Messtaster-Korrekturwerte; aktuelle Werkzeug-Nr. (1. bis 3. Länge/Radius) usw.
Wie ihr seht kann es also sehr gefährlich sein, die Nummern ohne Wissen zu nutzen.
Hilfreich ist in diesem Zusammenhang die Kontrolle in der Maschine (Offset, Rechte Taste, Macro). Wenn dort nichts eingetragen ist, können die Variablen genutzt werden. Ist aber keine Garantie.

Gruß

Igel80


--------------------
Der Wanderer mit leeren Taschen lacht dem Räuber ins Gesicht.
   
Beitrag 25.10.2005, 22:10 Uhr
FANUCER
Level 3 = Community-Techniker
***
@Igel80

Stimmt, das ist ein ganz wichtiger Punkt!!

Für dieses Problem hatte ich mir mal ein kleines Makro geschrieben, welches alle möglichen und gültigen(!) Variablenbereich einfach mit Nullen füllt. Im anschl. Betrieb konnte ich somit feststellen, ob bestimmte Variablenbereich von anderen Makros benutzt werden.


--------------------
Gruss, Horst
   
Beitrag 26.10.2005, 09:48 Uhr
Holger45
Level 7 = Community-Professor
*******
Hallo zusammen,
ja diese verflixten Variablen biggrin.gif

Es gibt verschieden Arten der Variablen.
#0 = Immer Null
Hier kann kein anderer Wert eingegeben werden


#1 bis #33 Lokale Variablen
Lokale Variablen können nur innerhalb eines Makros zu Zwischenablage von Daten, z.B. Ergebnissen eines Vorganges, benutzt werden.Beim Abschalten der Maschine werden diese gelöscht. Beim Aufruf eines Makros werden die Lokale Variablen Argumenten zugeordnet.
(G65 A25 B30 C49 würden dann im Makropgm #1=25 #2=30 #3=49 zugeordnet werden)
Allerdings ist die Makro A eine Option. Funktioniert also nicht immer.



#100-#149 (optional bis #199) Gemeinsame Variablen
Gemeinsame Variablen können von mehreren Makro Programmen verwendet werden Beim Ausschalten der Maschine werden die Variablen #100-#149 ( optional bis#199) auf Null gesetzt.



#500-#531 (optional bis #999) Gemeinsame Variablen
Gemeinsame Variablen können von mehreren Makro Programmen verwendet werden Beim Ausschalten der Maschine werden die Daten der Variablen #500-#531 ( optional bis#999) gespeichert.



Die Variablen #500 -#999 werden meist in den makroprogrammen verwendet um zb den wiedereinstieg in ein Pgm zu ermöglichen.
Alle Variaben werden und können Aktualiesiert werden.



Ab #1000 -..... sind es Systemvariable
Systemvariablen werden zum Lesen und Schreiben diverser NC-Daten benutzt.

Gruß
Holger

Ps: @ FANUCER das was du mit dem Nullsetzmakro machst kann natürlich dann gefährlich werden.

@Igel80 wie du siehst werden dann in dem sinne die VAriablen nicht " wahllos" gewählt.


--------------------
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)
   
Beitrag 26.10.2005, 12:22 Uhr
Igel80
Level 3 = Community-Techniker
***
Hallo!

@Holger45: Mit wahllos meinte ich eigentlich nur im Hinblick auf an der Maschine genutzte Variablen (die also schon im Gebrauch sind).
Die von dir erklärten Bereiche sind natürlich grundsätzlich zu beachten.

Gruß

Igel80


--------------------
Der Wanderer mit leeren Taschen lacht dem Räuber ins Gesicht.
   
Beitrag 28.10.2005, 14:57 Uhr
stefancnc1
Level 1 = Community-Lehrling
*
hallo gemeinde.
so, habe meine tasche fertig gestellt und in mein hauptprogi. integriert.

es hat alles supper geklappt bis auf meine variablen zuweisung.
habe #100-#120 benutzt.
ok es sind nur lokale varianlen, aber ich denke einmal das ich für den anfang meiern parameter programierung einen guten start erwischt habe. DANK euch.
darfür ein Herzliches DANKEschön.
werde mich weiter mit dem thema ausseinander setzen, da ich diese art der programmierung an der fanuc 18M baz als besser halte als die CAP
WOP (WerkstattOrientierteProgrammierung)
kann also viel flexibler alles für meine wünsche gestalten.

habe noch eine frage zu der syntax der programmierung, ist den diese ganze logische rechnerei und die sätze wie GOTO IF THEN usw.
alles kompl. Basic?
oder kann man dort auch was mit C anfangen?

hier mein aufgebautes Progi.
was ich noch mit variablen für die größe der tasche optimieren werde und ein makro B erstellen will.
damit ich eine maske habe für Z.b.
G65 A... B.... C.... D.... usw, erstellen kann

Progi.

(TASCHE / RAMPE)
#100=0(Z-START)
#101=0.15(Z-ZUSTELLUNG)
#102=-4.25(TIEFEN WERT /4)
N80T173M06
(SONDER WKZ-SECO)
N90G54S2920F1200M03
N100G00G43H173X27Y0Z50
N110G00Z0.5
N120G91(INKREMENTAL)
N130G01G41Y-13.8
N140G01X15.75Z-0.15
N150G1Z#100
N160#100=#100-#101(Z-ZUSTELLUNG )
N170G1Y27.6Z-#101
N180G1X-31.5Z-#101
N190G1Y-27.6Z-#101
N200G1X31.5Z-#101
N210IF[#100LT#102]GOTO230
N220GOTO160
N230G90
N240G0X27Y0
N250G40Z100
N260M09



MFG
stefan
   
Beitrag 28.10.2005, 16:39 Uhr
Holger45
Level 7 = Community-Professor
*******
Hallo Stefan,
mal eine kleine Frage.
Warum fährst du nach der Zustellung alle Inkemental?
Könntest du mir das bitte erklären?

Das ist mir dann doch ein wenig zu hoch.

Wenn du ein anderes Tascheformat hast mußt du alles umrechnen.

Danke

Gruß
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)
   
Beitrag 28.10.2005, 17:32 Uhr
Armageddon
Level 5 = Community-Ingenieur
*****
QUOTE (Igel80 @ 25.10.05 - 20:12)
Hallo zusammen!

Ich habe das Thema Macro-Programmierung schon öfter verfolgt. Dabei ist mir folgendes aufgefallen: Die Variablen-Nr. werden wahllos benutzt, ohne Rücksicht auf dir vorhandene Struktur an der Maschine (Macro-Programme bzw. vom Hersteller genutzte Variablen).
Dies muß man unbedingt vorher abklären! Gerade die Macro-Neulinge!

Tja wer hier halt Sch***e baut und Variablen nimmt die schon vom Hersteller für etwas Lebensnotwendiges genutzt werden und es dann rummst ist selber Schuld. Soviel Hirn sollte schon jeder haben wo sich mit der Thematik Macroprogrammierung auseinander setzt bzw. auseinander setzen möchte. Ein bisschen Grundwissen in BASIC oder sonst einer Programmiersprache ist auch nicht verkehrt. Ich selbst teste meine Macroprogramme höchst selten an der Maschine. Wird alles im Kopf und auf Papier entworfen und dann mit Delphi nachprogrammiert und getestet. Wenn es dann so geht wie ich es mir vorgestellt habe dann schreib ich das in FANUC-Code um und kann mir zu 99% sicher sein das es funktioniert. Bis auf wenige ganz knifflige Ausnahmen die ich dann doch an der Maschine testen muß. Was ich meistens in den hier geposteten Macroprogrammen vermisse sind ein paar logische IF-Abfragen in Bezug auf unsinnige Werte. Wie z.B. wenn man sich einen Bohrzyklus schreibt und als erste Bohrtiefe einen riesen Wert eingibt aber im Macro nicht abfragt ob Startpunkt+Bohrtiefe > Endpunkt und somit nur bis Endpunkt bohrt und nicht ewig weit über den Endpunkt erstmal hinaus bohrt. Aber das merkt man spätestens wenn das Bohrfutter im Tisch der Maschine steckt. smile.gif
   
Beitrag 29.10.2005, 08:46 Uhr
Holger45
Level 7 = Community-Professor
*******
Hallo Armageddon,
mit den Sicherheitsabfragen und dem entsprechenden Schutzfinktionen hast du recht. Das ist ein Aspeckt den man nicht unterschätzen sollte.
thumbs-up.gif

Wegen einen kleinen Zahlendreher ( satt18=81) mal eben eine Spindel plattmachen da wird kein Chef glücklich biggrin.gif

Bei den anderen sehe ich allerdings keine Gefahr solange die benötigten Variablen im Hauptprogramm stehen.

Die Daten werden schließlich Aktualisiert und können auch Problemlos überschrieben werden.

Macht ja sonst auch wenig sinn gerade bei den paar Variablen die man ohne eine Option dazukaufen zu müssen, verwenden kann.

Richtiges verwenden und benutzen ist nicht nur bei Variablenprogrammen wichtig


Gruß
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)
   
Beitrag 04.11.2005, 01:32 Uhr
NCProfi
Level 1 = Community-Lehrling
*
Hallo CNC-Gemeinde

Da ich im Moment arbeitssuchend bin ;-) hab ich auch mal etwas Zeit mich hier zu äußern.

Wie bereits weiter oben erwähnt sollte man sich bei der Macroprogrammierung immer sicher sein
welche Variablen man verändert. Insbesondere wenn Infrarot-Taster / Lasermesssysteme usw. eingesetzt werden stehen Tastkugelradien u.ä. in Variablen ab Nummer größer als #500 und wenn die verändert werden kann das böse Folgen haben. Auf Fanuc gibt es die (relativ ungefährlichen) localen Variablen #1-#33 die beim Aufruf von Macros mit den Adresscodes A-X übergeben werden - eine entsprechende Zuordnungstabelle gibts in jedem Fanuc Handbuch. Zu #0 ist zu sagen, das dieser eigentlich nicht null ist sondern nil bzw. Nichts ist, was soviel bedeutet wie nicht zugewiesen bzw. undefiniert. Ich benötige das in meinen Macros sehr oft um zu prüfen ob überhaupt ein Wert für einen Adresscode übergeben wurde - z.B. in der Form IF[#26NE#0] THEN #26=0. was soviel bewirkt wie wenn
Adresscode Z nicht als Macroargument angegeben wurde dann gehe davon aus das er 0. sein soll.

Allgemein habe ich mir angewöhnt wenn ich im Macro nur mal schnell was rechnen will die Variablen #1-#33 dann dort zu verwenden. Wenn ich einen Wert über längere Zeit brauche und zwischenspeichern will verwende ich die Variablen ab #100 (z.B. #126 für einen Z-Wert). Für andere Sachen wie zum Beispiel die Nummer des aktuell eingewechselten Werkzeugs
verwende ich Variablen ab #500 - natürlich mit Dokumentation der Verwendung damit ich nicht mit anderen Macros ins Gehege komme.
Ich habe mir dazu eine sogenannte Crossreferenz der Macros und der verwendeten Variablen angelegt, wo man immer mal nachschauen kann welche Variable für was und bei welchem Macro zuständig ist. Aktuelles Werkzeug steht bei mir übrigens immmer in #549 - wird beim Werkzeug Einwechseln gesetzt.

Was mich hier im Forum immer wieder verwundert ist das sehr viel mit GOTO gearbeitet wird wo es doch auf der Fanuc auch die gute alte WHILE Schleife gibt. Um G91 (inkremental fahren) zu vermeiden lese ich in meinen Macros meistens den aktuellen Positionwert aus der entsprechenden Systemvariablen und addiere mein Inkrement dazu. Für die Z Koordinate wäre das zum Beispiel Systemvariable #5003 - die enthält jederzeit die Satzende-Z-Koordinate des vorhergehenden Satzes im aktuellen Werkstückkoordinatensystem und kann auch während einer Werkzeugbewegung gelesen werden. (das ist wichtig um keine "Macken" durch kurzzeitigen Vorschubstop ins Werkstück zu bekommen)

In Bezug auf stefancnc1's Programm verstehe ich noch nicht ganz ob Du die Tasche Z-4.25 oder Z-17. fräsen wolltest ?

Aber ein Macroaufruf über G65 Pxx usw. könnte etwa wie folgt aussehen:


%
O1234 (HAUPTPROGRAMM)
...
T173 M6 (SONDER WKZ-SECO)
G54 S2920 M3
G65 P8010 X50. Y25. Z-4.25 F1200. H173 D173 R0. U31.5 V27.6 Q7
...

wobei gilt:
X/Y Mittelpunkt der Tasche
Z Endtiefe der Tasche
H/D Längen- und Radiuskorrekturnummer falls nicht schon vorher gesetzt
R Eintauchebene (Werkzeug positioniert mit 2mm Sicherheit darüber)
U/V Breite/Höhe der Tasche
Q Anzahl der Späne / Umläufe bis Endtiefe


O8010 (TASCHE / RAMPE - GLEICHLAUFFRAESEN)
#126=#5003 ; Z-Ausgangsebene für Rückzug sichern
#27=[#18-#26]/#17 ; Tiefe der Tasche / Anzahl der Späne = Zustellung pro Umlauf
#28=#27/4 ; Zustellung pro Umlauf auf je 4 Späne aufgeteilt
G0 X#24 Y#25 ; zur Taschenmitte
G43 Z#18+2. H#11 ; zur Ausgangsebene mit Sicherheitsabstand
G1 G41 G64 X#24 Y#25+#23/2 Z#18 F#9 D#7 ; in FRK fahren und Z Ausgangsebene positionieren
WHILE [[#5003-#27] GE #26] DO 1 ; Schleife solange aktuelles Z - Zustellung größer/gleich Ausgangsebene
X#24-#22/2 Z#5003-#28; zum ersten Eckpunkt in X-
Y#25-#23/2 Z#5003-#28 ; zum zweiten Eckpunkt in Y-
X#24+#22/2 Z#5003-#28 ; zum dritten Eckpunkt in X+
Y#25+#23/2 Z#5003-#28 ; zum vierten Eckpunt in Y+
END 1 ; Ende der Programmschleife
X#24 Z#26 ; bis X-Mitte auf Endtiefe
X#24-#22/2 ; abhier noch einmal rum zum Begradigen der Tasche
Y#25-#23/2
X#24+#22/2
Y#25+#23/2
X#24
G40 X#24 Y#25
G0 Z#126 ; zurück zum Ausgangspunkt
M99 ; zurück zum Hauptprogramm

So ich hoffe das hilft manchen CNC-lern hier etwas weiter oder gibt zumindest einen Denkanstoß.
Ich hab inzwischen Macros wo ich fast das ganze Alphabet beim Aufruf verwende und ich finde das die Fanuc in
diesem Bezug einen Vorteil gegenüber der Siemens mit den blöden R-Parametern bzw. nur Werten ohne Adressangeben hat.

Wo gefräst wird fallen Späne   Manchmal auch sehr teure!
   
Beitrag 04.11.2005, 14:15 Uhr
fredix
Level 1 = Community-Lehrling
*
Hallo NCProfi,

QUOTE
Da ich im Moment arbeitssuchend bin ;-) hab ich auch mal etwas Zeit mich hier zu äußern.

QUOTE
Ich hab inzwischen Macros wo ich fast das ganze Alphabet beim Aufruf verwende und ich finde das die Fanuc in
diesem Bezug einen Vorteil gegenüber der Siemens mit den blöden R-Parametern bzw. nur Werten ohne Adressangeben hat.

Beiden Aussagen kann ich nur 100% zustimmen !!!.

QUOTE
So ich hoffe das hilft manchen CNC-lern hier etwas weiter oder gibt zumindest einen Denkanstoß.


1-te Frage :
Was ist mit der Variable #23(W) ?

1-te Denkanstoß :
Persönlich benutze ich liber andere art der berechnung
nicht
X#24-#22/2 (was passiert wenn #22=0 ist ->allgemein ?)
sondern
X#24-#22*.5

oder #28=#27/4 -> #28=#27*.25
(bei ordinalen zahlen,so bald es Sinn macht)

natürlich sollten vorher wie oben schon von Holger und Armageddon
besprochen die variablen initialisiert werden bzw.auf korrektheit
überprüft.

Ich hoffe auch einen Denkanstoß zu geben

Mfg Fredix
   
Beitrag 04.11.2005, 14:46 Uhr
Armageddon
Level 5 = Community-Ingenieur
*****
QUOTE (NCProfi @ 04.11.05 - 01:32)
Für die Z Koordinate wäre das zum Beispiel Systemvariable #5003 - die enthält jederzeit die Satzende-Z-Koordinate des vorhergehenden Satzes im aktuellen Werkstückkoordinatensystem und kann auch während einer Werkzeugbewegung gelesen werden. (das ist wichtig um keine "Macken" durch kurzzeitigen Vorschubstop ins Werkstück zu bekommen)

Ich hab inzwischen Macros wo ich fast das ganze Alphabet beim Aufruf verwende und ich finde das die Fanuc in
diesem Bezug einen Vorteil gegenüber der Siemens mit den blöden R-Parametern bzw. nur Werten ohne Adressangeben hat.

Die Behauptung würde ich nicht so ohne weiteres einfach so in den Raum stellen. Denn das ist je nach Maschine und Konfiguration verschieden! Ist also mit Vorwsicht zu geniessen.

Das mit den R-Parametern oder Werte in Klammer mit Komma getrennt ist echt blöd bei der Siemens. Aber dafür lassen sich Macroprogramme in Bezug auf IF-Abfragen mit der Siemens schöner schreiben. Also auf der 840D zumindest.

IF blabla <> blabla

mach des,
und des,
und nomol was

ENDIF

Das vermisse ich bei der FANUC. Aber vielleicht kommts ja da auch mal irgendwann.
   
Beitrag 04.11.2005, 18:12 Uhr
NCProfi
Level 1 = Community-Lehrling
*
@fredix

Zur Frage nach #23 (W-Adresscode) .. der wird im Beispiel nicht benötigt, da die Tiefe der Tasche über R und Z definiert wird, aber man
kann das Macro naturlich erweitern wenn man dies möchte und die Tiefe dann zum Beispiel direkt angeben.
Ich halte mich allgemein bei den Macro Adressparametern immer an X,Y,Z bei Punktkoordinaten, für Werte von Breiten, Höhen, Tiefen dann an U,V,W als Parallelachsen zu X,Y,Z entsprechend dann auch A,B,C für Rotationsachsen zu X,Y,Z und wenn ich mal was inkremental angebe dann natürlich I,J,K. Zum Beispiel könnte man ja bei dem Rechteckmacro auch einen Eckpunkt der Tasche inkremental zum Mittelpunkt angeben, dann würde ich es mit I,J machen. Das oben gezeigte Rechteckmacro hab ich gestern jedoch nur mal so schnell aus dem Stehgreif aufgeschrieben um meinen Weg aufzuzeigen
natürlich erst mal ohne irgendwelche Sicherheitsabfragen usw. denn das würde im Moment etwas zu weit führen. Übrigens hab ich gemerkt
das besonders im Zusammenspiel mehrerer Custommacros sich Fehler manchmal erst nach Jahren zeigen, wenn besondere Bearbeitungsbedingen
(Koordinatensystem drehen, skalieren usw.) auftreten. All dies müsste man bei einem guten Macro vorher bedenken bzw. austesten und das
ist leider nicht immer möglich.


Bei der Sache mit #22/2 und #22*.5 meinst Du wahrscheinlich das Problem von Division durch 0, das ist in diesem Fall aber nicht gegeben, denn
die 0 würde ja allenfalls im Dividenten erscheinen falls die Breite bzw. die Höhe der Tasche mit 0 angegeben wird.
Dies sollte aber eigentlich sowiso nicht vorkommen, den eine Tasche mit 0 Breite würde eh nicht funktionieren, wegen der FRK usw.
Also, wenn ich das Macro voll "ausreifen" lassen würde, würde ich natürlich solche Unstimmigkeiten vor dem Fräsbeginn abklären indem der Radius des aktuellen Werkzeugs aus dem System gelesen wird und dann geprüft wird ob die Tasche überhaupt fräsbar wäre.
Mit nem 20er Fräeser kann man ja auch keine 10er Kreistasche fertigen - die meisten Kreistaschenmacros probieren das aber erst mal aus bis die Steuerung merkt das die FRK nicht ausführbar ist, aber dann ist der 20er Fräser meistens schon im Werkstück. Also nochmal kurz und bündig
wer Macros schreiben will muss sich über die Konsequenzen im Klaren sein, das Macro ist wie ´ne Blackbox man schickt was rein und am Ende soll was Vernünftiges dabei rauskommen. Der, der was reinschickt macht sicherlich auch mal ´nen Fehler beim reinschicken - Aufgabe des Programmierers ist es soviele Fehler abzufangen wie möglich und dafür Sorge zu tragen das am Ende immer das rauskommt was der, der was reinschickt erwartet.
Wenn dem Sorge getragen wird sind Macros eine feine Sache besonders wenn man mal ohne CAM-Unterstützung programmiert.

@Armageddon

Die Sache mit den Systemvariablen #5001 usw. muß man natürlich im Einzelfall abklären, ich kann mich nur auf die FANUC Steuerungen berufen die mir bis jetzt untergekommen sind. Ein Blick ins Maschinenhandbuch bzw. Programmieranleitung dürfte meistens helfen ansonsten ausprobieren
in dem man z.B. mal einen Satz wie #103=#5003 schreibt und dann schaut was im #103 steht. Beim Lesen von Variablen kann man übrigends im
Gegensatz zum weiter oben von FANUCER beschriebenen Vorgang Variablen mit 0 zu initialisieren nicht viel "kaputt" machen. Manchmal ist es jedoch sehr hilfreich rauszubekommen was der Maschinenhersteller in welche Variable schreibt. Falls man mal ein wenig "spielen" möchte empfehle ich hier in diesem Zusammenhang auch mal die Variablen über DNC zu sichern, am besten in regelmäßigen Abständen so kann man wenn man sich "verschießt" wenigsten die "zerschossenen" Daten bzw. Variable wiederherstellen.
Mir ist es mal passiert, das ich mich bei der variablen Adressierung von Variablen in der Form #[5221+[[#17-1]MOD6]*20]=#[900+[#17-1]*5]
vertippt hatte und dann natürlich ganz andere Variable als ich wollte angesprochen hab, bis heute weiß ich noch nicht mal welche, aber durch Zurückspielen einer Variablensicherung war das Problem im Nu behoben.

Zu Fanuc, Siemens bzw. auch Heidenhain ... alle Steuerungen haben Ihre Vor- und Nachteile, ich favorisiere natürlich die Fanuc weil ich damit bis jetzt am meisten zu tun hatte, auf Grund meiner inzwischen beendeten Arbeitssuche könnte sich das aber demnächst bald ändern .. die 840D ist ja doch nicht ganz so schlecht wie ihr Ruf ;-) und man kann bestimmt noch einiges aus Ihr "rauskitzeln"



Die Werkzeugbahn bestimme immer noch ich! (.. Sagt mein Boss)
   
Beitrag 07.11.2005, 12:31 Uhr
fredix
Level 1 = Community-Lehrling
*
Hallo NCProfi,

QUOTE
Zur Frage nach #23 (W-Adresscode) .. der wird im Beispiel nicht benötigt, da die Tiefe der Tasche über R und Z definiert wird, aber man...


Ist aber 5x im Programm vorhanden ! oder übersehe ich was ?

Gruß
Fredix
   
Beitrag 07.11.2005, 22:19 Uhr
NCProfi
Level 1 = Community-Lehrling
*
Sorry Fredix - natürlich hast Du Recht - statt U & V hab ich im V & W verwendet.
.
Auf der Maschine hätte ich's wahrscheinlich schnell(er) gemerkt.

#21 = U
#22 = V
#23 = W

also alle #22 müssen #21 sein und alle #23 müssen #22 sein.

Richtig(er) wäre also folgendes Macro:

O8010 (TASCHE / RAMPE - GLEICHLAUFFRAESEN)
#126=#5003 ; Z-Ausgangsebene für Rückzug sichern
#27=[#18-#26]/#17 ; Tiefe der Tasche / Anzahl der Späne = Zustellung pro Umlauf
#28=#27/4 ; Zustellung pro Umlauf auf je 4 Späne aufgeteilt
G0 X#24 Y#25 ; zur Taschenmitte
G43 Z#18+2. H#11 ; zur Ausgangsebene mit Sicherheitsabstand
G1 G41 G64 X#24 Y#25+#22/2 Z#18 F#9 D#7 ; in FRK fahren und Z Ausgangsebene positionieren
WHILE [[#5003-#27] GE #26] DO 1 ; Schleife solange aktuelles Z - Zustellung größer/gleich Ausgangsebene
X#24-#21/2 Z#5003-#28; zum ersten Eckpunkt in X-
Y#25-#22/2 Z#5003-#28 ; zum zweiten Eckpunkt in Y-
X#24+#21/2 Z#5003-#28 ; zum dritten Eckpunkt in X+
Y#25+#22/2 Z#5003-#28 ; zum vierten Eckpunt in Y+
END 1 ; Ende der Programmschleife
X#24 Z#26 ; bis X-Mitte auf Endtiefe
X#24-#21/2 ; abhier noch einmal rum zum Begradigen der Tasche
Y#25-#22/2
X#24+#21/2
Y#25+#22/2
X#24
G40 X#24 Y#25
G0 Z#126 ; zurück zum Ausgangspunkt
M99 ; zurück zum Hauptprogramm



Wer lesen kann ist klar im Vorteil
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: