11913
Follower:innenUnterprogramme Wiederholen
25.01.2005, 22:34 Uhr
Hallo,
arbeite an einer TNC 407 habe seit längerem ein kleines Programm mit Unterprogrammen die ich mehrmals wiederholen möchte.
Wenn ich ein Unterprogramm schreibe und es direkt wiederholen möchte funktioniert es problemlos doch wenn ich dieses UP später im Programm noch einmal mehrmals wiederholen möchte, wird alles zwischen UP und dem 2.UP-Aufruf wiederholt.
z.B.
Lbl1
.
.
.
.
Lbl0
Lbl call 1 5/5
L Z..
.
.
.
.
.
Lbl call 1 6/6
Ich hoffe es gibt ein Trick wie man das umgehen kann ohne mehr Programmieraufwand.
Mfg
arbeite an einer TNC 407 habe seit längerem ein kleines Programm mit Unterprogrammen die ich mehrmals wiederholen möchte.
Wenn ich ein Unterprogramm schreibe und es direkt wiederholen möchte funktioniert es problemlos doch wenn ich dieses UP später im Programm noch einmal mehrmals wiederholen möchte, wird alles zwischen UP und dem 2.UP-Aufruf wiederholt.
z.B.
Lbl1
.
.
.
.
Lbl0
Lbl call 1 5/5
L Z..
.
.
.
.
.
Lbl call 1 6/6
Ich hoffe es gibt ein Trick wie man das umgehen kann ohne mehr Programmieraufwand.
Mfg
26.01.2005, 01:09 Uhr
Hi Filzlaus,
das sollte so gehen:
z.B.
Lbl1
.
.
.
.
Lbl0
Lbl call 1 5/5
L Z..
.
.
.
.
.
Lbl2
Lbl call 1
Lbl call 2 6/6
Wobei Du eindeutig zwischen
Lbl Call x Rep y/y (Programmteilwiederholung)
und
Lbl Call x Norep (Unterprogrammaufruf)
unterscheiden mußt. Beim ersten Fall passiert beim Erreichen des Befehls eine Zählererhöhung um 1 (z.B. 1/6) und ein Sprung zum Lbl x. Dort wird dann weitergemacht. Wenn danach dieser Satz nicht mehr durchlaufen wird, ändert sich auch der Zählerstand nicht mehr. Das ist aber grundsätzlich kein Problem und führt nicht zu einer Fehlermeldung.
Normalerweise nutzt man diesen Befehl aber ähnlich, wie Du ihn verwendet hast. Wichtig ist dabei, daß dieser Aufruf NICHT durch ein Lbl 0 beeinflußt wird! Der Sprung wird genau so oft ausgeführt, bis die Anzahl der Wiederholungen erreicht wird. Danach wird der Befehl ignoriert. Wichtig ist, daß die Verarbeitung NICHT am Lbl 0 aufhört, sondern alle Sätze bis zum Lbl call x Rep y/y auch wiederholt werden!
Anders liegt der Fall beim zweiten Befehl. Hier findet 'nur' ein Sprung zum Lbl x statt. Dort wird die Verarbeitung fortgesetzt bis ein Lbl 0 gefunden wird. Von da erfolgt ein Rücksprung in die Zeile nach dem Lbl call. Das nennt man Unterprogrammaufruf. Innerhalb des Unterprogramms dürfen weitere Unterprogrammaufrufe enthalten sein, so daß man mehrer verschachtelte Unterprogrammaufrufe ausführen kann. Bei meiner alten 155 durften es immerhin schon 8 Ebenen sein. Dieser Aufruf wird so oft ausgeführt, wie er durchlaufen wird.
Ich hoffe, ich hab das verständlich erklärt und nix Wesentliches vergessen
daxfrech
das sollte so gehen:
z.B.
Lbl1
.
.
.
.
Lbl0
Lbl call 1 5/5
L Z..
.
.
.
.
.
Lbl2
Lbl call 1
Lbl call 2 6/6
Wobei Du eindeutig zwischen
Lbl Call x Rep y/y (Programmteilwiederholung)
und
Lbl Call x Norep (Unterprogrammaufruf)
unterscheiden mußt. Beim ersten Fall passiert beim Erreichen des Befehls eine Zählererhöhung um 1 (z.B. 1/6) und ein Sprung zum Lbl x. Dort wird dann weitergemacht. Wenn danach dieser Satz nicht mehr durchlaufen wird, ändert sich auch der Zählerstand nicht mehr. Das ist aber grundsätzlich kein Problem und führt nicht zu einer Fehlermeldung.
Normalerweise nutzt man diesen Befehl aber ähnlich, wie Du ihn verwendet hast. Wichtig ist dabei, daß dieser Aufruf NICHT durch ein Lbl 0 beeinflußt wird! Der Sprung wird genau so oft ausgeführt, bis die Anzahl der Wiederholungen erreicht wird. Danach wird der Befehl ignoriert. Wichtig ist, daß die Verarbeitung NICHT am Lbl 0 aufhört, sondern alle Sätze bis zum Lbl call x Rep y/y auch wiederholt werden!
Anders liegt der Fall beim zweiten Befehl. Hier findet 'nur' ein Sprung zum Lbl x statt. Dort wird die Verarbeitung fortgesetzt bis ein Lbl 0 gefunden wird. Von da erfolgt ein Rücksprung in die Zeile nach dem Lbl call. Das nennt man Unterprogrammaufruf. Innerhalb des Unterprogramms dürfen weitere Unterprogrammaufrufe enthalten sein, so daß man mehrer verschachtelte Unterprogrammaufrufe ausführen kann. Bei meiner alten 155 durften es immerhin schon 8 Ebenen sein. Dieser Aufruf wird so oft ausgeführt, wie er durchlaufen wird.
Ich hoffe, ich hab das verständlich erklärt und nix Wesentliches vergessen
daxfrech
26.01.2005, 08:02 Uhr
Hallo Daxfrech,
Du hast nichts vergessen.
Es verhält sich genau so, wie Du es beschreibst. Entscheidend bei der Sache ist das REPeat. Wenn REP angegeben wird, wird ein LBL 0 nicht beachtet.
Wenn ein Unterprogramm mehrmals wiederholt werden muss, programmiere ich die Kontur als Unterpgramm, welches dann als Wiederholung mehrmals aufgerufen wird. Dazu werden 2 Label benötigt:
LBL 1
CALL LBL 2 ; Aufruf Unterpgramm
CALL LBL 1 REP 1
...
...
...
M30
LBL 2 ; Unterprogramm
...
...
...
LBL0
Du hast nichts vergessen.
Es verhält sich genau so, wie Du es beschreibst. Entscheidend bei der Sache ist das REPeat. Wenn REP angegeben wird, wird ein LBL 0 nicht beachtet.
Wenn ein Unterprogramm mehrmals wiederholt werden muss, programmiere ich die Kontur als Unterpgramm, welches dann als Wiederholung mehrmals aufgerufen wird. Dazu werden 2 Label benötigt:
LBL 1
CALL LBL 2 ; Aufruf Unterpgramm
CALL LBL 1 REP 1
...
...
...
M30
LBL 2 ; Unterprogramm
...
...
...
LBL0
--------------------
Gruß
Markus
Markus
26.01.2005, 13:30 Uhr
noch ein Hinweis:
Das steht recht anschaulich (mit Bilders :-) ) in der Doku beschrieben. So ab Seite P80 findest Du ein Kapitel "Sprünge im Programm".
Kannst Du auch online angucken:
http://filebase.heidenhain.de/doku/oma_con...l/de/index.html
dann links Deine Steuerung aussuchen und los gehts.
daxfrech
Das steht recht anschaulich (mit Bilders :-) ) in der Doku beschrieben. So ab Seite P80 findest Du ein Kapitel "Sprünge im Programm".
Kannst Du auch online angucken:
http://filebase.heidenhain.de/doku/oma_con...l/de/index.html
dann links Deine Steuerung aussuchen und los gehts.
daxfrech
26.01.2005, 21:03 Uhr
QUOTE
Wenn ein Unterprogramm mehrmals wiederholt werden muss, programmiere ich die Kontur als Unterpgramm, welches dann als Wiederholung mehrmals aufgerufen wird. Dazu werden 2 Label benötigt:
LBL 1
CALL LBL 2 ; Aufruf Unterpgramm
CALL LBL 1 REP 1
...
...
...
M30
LBL 2 ; Unterprogramm
...
...
...
LBL0
LBL 1
CALL LBL 2 ; Aufruf Unterpgramm
CALL LBL 1 REP 1
...
...
...
M30
LBL 2 ; Unterprogramm
...
...
...
LBL0
Hi Zusammen,
bin zwar erst seit einem Jahr an HH-407, aber so was wäre mir zu umständlich.
nach M30 LBL 1 als UP,
direkt im Progi CALL LBL 1 Aufruf.
Das hängt sicher von der Bearbeitung ab. Bei Punktbearbeitung (bohren, zentrieren, gewinde schneiden) oder Rasterbohrbild, auf einer Linie ist das auch sehr schön zu lösen
Vor Zyklusaufruf auf ersten Punkt vorpositionieren
Hier werden 20Punkte im gleichen Abstand bearbeitet
LBL 1
Z+3.....M99
LBL2
IX+20...M99
CALL LBL2 REP 18/18
LBL 0
Oder habe ich das Problemm nicht ganz verstanden?
Gruß smaler
26.01.2005, 23:31 Uhr
Jo smaler,
Filzlaus wollte aber bestehende Progs 'retten'.
Wenn ich neu progge, mache ich das auch so wie due schreibst.
Oder hab ich am Ende was falsch verstanden?
daxfrech
Filzlaus wollte aber bestehende Progs 'retten'.
Wenn ich neu progge, mache ich das auch so wie due schreibst.
Oder hab ich am Ende was falsch verstanden?
daxfrech
27.01.2005, 01:16 Uhr
hi Filzlaus!
Habe auch lange an TNC 426 experementiert und ich sehe das jeder hier schon recht hat.
das geht so:
Lbl1
.
.
.
.
Lbl call 1 5/5
Lbl0
L Z..
.
.
.
.
.
Lbl call 1
also wie dein Beispiel, nur das Lbl0 nach den Lbl-wiederholungen steht.
Nur wenn du denn Anfahrtspunkt mit ins Label willst, dann ähnlich wie bei dem Smaler, Beispiel:
LBL 1
L X... ------------------------- Anfahrtspunkt
LBL2 ------------------------- ab dem satz wiederholt die maschine Xmal
L X Y....
CALL LBL2 REP 18/18
LBL 0
und dann ergendwo am anderem Ort des Programms:
CALL LBL1
aber muss sagen das Smaler nicht ganz recht hat,
weil wenn man das Lbl an uterschiedlichen stellen verschieden mal (beispiel am anfang des PGM 5mal und ergendwo 7mal das selbe Lbl) wiederholen will,
dann wär schon besser nach M30 Lbl zu schreiben und im PGM ergendwo aufrufen.
Noch ein Tipp(weiss aber nicht ob an TNC407 das geht) :
bei der Simulation kann mann wählen "Simulation+Programm", dann kannst du Simulation mit "Start Einzelsatz" abfahren und gleichzeitig beobachten wo das die Sätze umspringt.
Bond, James Bond
Habe auch lange an TNC 426 experementiert und ich sehe das jeder hier schon recht hat.
das geht so:
Lbl1
.
.
.
.
Lbl call 1 5/5
Lbl0
L Z..
.
.
.
.
.
Lbl call 1
also wie dein Beispiel, nur das Lbl0 nach den Lbl-wiederholungen steht.
Nur wenn du denn Anfahrtspunkt mit ins Label willst, dann ähnlich wie bei dem Smaler, Beispiel:
LBL 1
L X... ------------------------- Anfahrtspunkt
LBL2 ------------------------- ab dem satz wiederholt die maschine Xmal
L X Y....
CALL LBL2 REP 18/18
LBL 0
und dann ergendwo am anderem Ort des Programms:
CALL LBL1
aber muss sagen das Smaler nicht ganz recht hat,
weil wenn man das Lbl an uterschiedlichen stellen verschieden mal (beispiel am anfang des PGM 5mal und ergendwo 7mal das selbe Lbl) wiederholen will,
dann wär schon besser nach M30 Lbl zu schreiben und im PGM ergendwo aufrufen.
Noch ein Tipp(weiss aber nicht ob an TNC407 das geht) :
bei der Simulation kann mann wählen "Simulation+Programm", dann kannst du Simulation mit "Start Einzelsatz" abfahren und gleichzeitig beobachten wo das die Sätze umspringt.
Bond, James Bond
27.01.2005, 08:19 Uhr
Hallo,
es gibt mehrere Möglichkeiten. Jeder muss das benutzen, mit dem er am Besten klar kommt.
es gibt mehrere Möglichkeiten. Jeder muss das benutzen, mit dem er am Besten klar kommt.
--------------------
Gruß
Markus
Markus
28.01.2005, 21:14 Uhr
QUOTE
Jeder muss das benutzen, mit dem er am Besten klar kommt.
[email=mark25]mark25[/email]
Hi mark25,
jeder Tip ist eine Hilfe, besonders wenn einer mit dem problem nicht klar kommt.
Gruß smaler
29.01.2005, 13:29 Uhr
Hi,
ihr fleißigen Helfer,
vielen Dank für die schnelle und zahlreiche Hilfe. Jetzt bin ich ein gutes Stück weiter.
Es ist ja ziemlich einfach, doch braucht man manchmal einen Hinweis um weiter voran zu kommen.
MFG
ihr fleißigen Helfer,
vielen Dank für die schnelle und zahlreiche Hilfe. Jetzt bin ich ein gutes Stück weiter.
Es ist ja ziemlich einfach, doch braucht man manchmal einen Hinweis um weiter voran zu kommen.
MFG
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: