HEIDENHAIN

Unterprogramme Wiederholen

Beitrag 25.01.2005, 22:34 Uhr
Filzlaus
Filzlaus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.01.2005
Beiträge: 7
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. coangry.gif

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
   
Beitrag 26.01.2005, 01:09 Uhr
daxfrech
daxfrech
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 20.11.2002
Beiträge: 156
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
   
Beitrag 26.01.2005, 08:02 Uhr
mark25
mark25
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 25.12.2003
Beiträge: 504
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


--------------------
Gruß
Markus
   
Beitrag 26.01.2005, 13:30 Uhr
daxfrech
daxfrech
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 20.11.2002
Beiträge: 156
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
   
Beitrag 26.01.2005, 21:03 Uhr
smaler
smaler
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 12.07.2004
Beiträge: 284
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


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
   
Beitrag 26.01.2005, 23:31 Uhr
daxfrech
daxfrech
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 20.11.2002
Beiträge: 156
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
   
Beitrag 27.01.2005, 01:16 Uhr
Bond
Bond
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 20.07.2004
Beiträge: 38
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
   
Beitrag 27.01.2005, 08:19 Uhr
mark25
mark25
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 25.12.2003
Beiträge: 504
Hallo,

es gibt mehrere Möglichkeiten. Jeder muss das benutzen, mit dem er am Besten klar kommt.


--------------------
Gruß
Markus
   
Beitrag 28.01.2005, 21:14 Uhr
smaler
smaler
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 12.07.2004
Beiträge: 284
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.

smile.gif Gruß smaler
   
Beitrag 29.01.2005, 13:29 Uhr
Filzlaus
Filzlaus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.01.2005
Beiträge: 7
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
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: