584.830 aktive Mitglieder*
5.630 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
HEIDENHAIN Forum

Rücksprung nach Wenn/Dann Entscheidung, Parametrisierte Programme mit Bedingten bearbeitungen

Beitrag 21.03.2017, 07:42 Uhr
nuTux
nuTux
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 21.03.2017
Beiträge: 28

Guten Morgen

Ich bin gerade daran auf einer iTNC530 ein parametrisiertes Programm zu schreiben. Darin sind auch einige bedingte Sprünge enthalten

100 FN 11: IF+Q25 GT+40 GOTO LBL 400
101 TOOL CALL 1 Z 10000
....
200 M30
201 LBL 1
...
220 LBL0

Dieser Funktioniert auch einwandfrei und er springt bei erfüllter Bedingung zu LBL 400 welches so aussieht:

830 LBL 400
831 CALL LBL 22
832 CALL LBL 99
833 LBL 0

auch dieses arbeitet er korrekt ab.
Doch wenn er mit dem LBL 99 fertig ist und auf LBL 0 kommt springt er nicht wie man sich das gewohnt ist zur Zeile 101 sondern geht einfach zur nächsten Zeile über, welche bei mir jetzt das Programm Ende ist (da es das letzte LBL ist) und beendet so das Programm.
Dabei ist es im Handbuch (Klartext S. 328, mit Verweis auf S. 300) eigentlich so Beschrieben, dass es sich wie ein normaler LBL CALL verhält.

Hat dieses Problem schon jemand gehabt, resp. glöst?
Oder gibt es eine andere Möglichkeit (ohne ein PGM CALL) eine Bearbeitung nur bei einer erfüllten Bedingung auszuführen?

Grüsse nuTux
TOP    
Beitrag 21.03.2017, 10:27 Uhr
homerq
homerq
Level 5 = Community-Ingenieur
*****
Gruppe: Mitglied
Mitglied seit: 03.06.2004
Beiträge: 737

QUOTE (nuTux @ 21.03.2017, 07:42 Uhr) *
Guten Morgen

Ich bin gerade daran auf einer iTNC530 ein parametrisiertes Programm zu schreiben. Darin sind auch einige bedingte Sprünge enthalten

100 FN 11: IF+Q25 GT+40 GOTO LBL 400
101 TOOL CALL 1 Z 10000
....
200 M30
201 LBL 1
...
220 LBL0

Dieser Funktioniert auch einwandfrei und er springt bei erfüllter Bedingung zu LBL 400 welches so aussieht:

830 LBL 400
831 CALL LBL 22
832 CALL LBL 99
833 LBL 0

auch dieses arbeitet er korrekt ab.
Doch wenn er mit dem LBL 99 fertig ist und auf LBL 0 kommt springt er nicht wie man sich das gewohnt ist zur Zeile 101 sondern geht einfach zur nächsten Zeile über, welche bei mir jetzt das Programm Ende ist (da es das letzte LBL ist) und beendet so das Programm.
Dabei ist es im Handbuch (Klartext S. 328, mit Verweis auf S. 300) eigentlich so Beschrieben, dass es sich wie ein normaler LBL CALL verhält.

Hat dieses Problem schon jemand gehabt, resp. glöst?
Oder gibt es eine andere Möglichkeit (ohne ein PGM CALL) eine Bearbeitung nur bei einer erfüllten Bedingung auszuführen?

Grüsse nuTux

Ist m.E. normales Verhalten.
Sagt auch der Name call=aufrufen, bleibe aber an der Stelle, goto=springe zu, gehe hin, aber nicht wieder zurück.
Ist vielleicht eine blöde Erklärung, aber so funktioniert es. Im Handbuch sind einige Sachen sehr schlecht oder auch ungenau beschrieben.
Wenn du zurückspringen willst fügst du LBL401 unter den Sprungsatz ein und im LBL 400 vor LBL0 "if 0 equ 0 goto LBL400". Dann kommst du in jedem Fall wieder zurück.
Gruß Jens
TOP    
Beitrag 21.03.2017, 11:37 Uhr
nuTux
nuTux
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 21.03.2017
Beiträge: 28

Hi Jens

Danke für die Antwort, ja das mit dem Handbuch ist mir auch schon aufgefallen, sobald es etwas in die spezielleren Bereiche geht wird es sehr schnell sehr vage...

Stimmt das macht eigentlich Sinn mit dem GOTO und LBL, war mir aber nicht bewusst, dass ich ein Label nicht zwingend mit einem LBL 0 abschliessen muss.
Werde das wohl so machen, macht es zwar einiges komplizierter, da ich diverse Entscheidungen zu treffen habe Welche Bohrungen nun gemacht werden müssen oder nicht und dann sind es ja immer mehrere Operationen (Zentrieren, Bohren, Gewinde, etc) gibt also einen ganzen Haufen LBLs...

Schade eigentlich, dass das andere nicht funktioniert. Bei der Möglichkeit solche Detailierten Entscheidungen zu machen mit den ganzen Q Parameter kommt es mir fast ein wenig unfertig vor das ganze System wink.gif Ein wenig verlorenes Potenzial, aber da werd ich wohl alleine da stehen mit dieser ansicht (ich als "AufDerSteuerungsProgrammierer") bei den ganzen CAMs dies gibt biggrin.gif

Danke nocheinmal und Gruss, Sam
TOP    
Beitrag 21.03.2017, 12:33 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

Mahlzeit,

mit deine Ansicht stehst du so bestimmt nicht ganz alleine da wink.gif
Das dumme an dem GOTO ist der absolute Sprung. Und damit fehlt einem auch die unmittbare Möglichkeit den Weg zurück zu finden.
CALL LBL ist halt ein Unterprogrammaufruf, wohin automatisch nach dessen Abarbeitung zurück gesprungen wird.

Also wenn man mit Entscheidungen und GOTO arbeitet, muss man sich Wege oder Rücksprungmöglichkeiten selber schaffen.

Vielleicht sollte hier HH mal über die Möglichkeiten der Implementation zB folgender Lösungen nachdenken, die andere Mitbewerber schon lange zu Ihrem Funktionsumfang zählen wink.gif

CODE
IF ( Entscheidung ) CALL LBL

oder
CODE
IF ( Entscheidung )
...
freier Programmcode
...
ELSE; Alternative, wie zb schon BASIC beherrschte, aber ohne Verwendungszwang
...
freier Programmcode
...
ENDIF; Abschluß der IF Bedingung

oder
CODE
IF ( Entscheidung )
...
freier Programmcode; Hier könnten auch mehrere CALL LBL stehen
...
ENDIF; Ende der IF Entscheidung


Vielleicht sollte auch mal das Unterprogramm- Konzept überdacht werden. Wenn ein Unterprogramm abgearbeitet wurde ist dann eigentlich Schluß / Ende, und dann sollte es im Folgesatz des aufrufenden Satzes weitergehen. Und nicht weil Unterprogramm anhängsel an einem Hauptprogrammteil darstellen und man zu einem Unterprogramm "springt" gehts dann eben mit dem weiter, was auch nach dem LBL 0 steht...

Es ist eine Logik, die dahinter steht. Zugegeben. Aber wenn man von anderen Systemen kommt, oder beide mehr oder minder parallel nutzt, muss man hier gewaltig umdenken. Das geht bei anderen Systemen einfacher und flexibler als bei HH.

Also wird Dir nur bleiben:
CODE
...
100 FN 11: IF+Q25 GT+40 GOTO LBL 400
101 LBL 100
102 TOOL CALL 1 Z 10000
....
200 M30
201 LBL 1
...
220 LBL0
....
830 LBL 400
831 CALL LBL 22
832 CALL LBL 99
833 IF 0 EQU 0 GOTO LBL 100
834 LBL 0
...


Schönen Tag noch
R.HEIM

Der Beitrag wurde von Simtra95 bearbeitet: 21.03.2017, 12:34 Uhr
TOP    
Beitrag 21.03.2017, 13:04 Uhr
nuTux
nuTux
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 21.03.2017
Beiträge: 28

Ja da bin ich der gleichen Meinung.

Gerade heutzutage mit all den Programmiersprachen (Python u.ä.) sollte ein solches Konzept wirklich einfach zu implemntieren sein und auch von einem Grossen Teil der Nutzer verstanden werden. Weil wenn man schon entscheidungen machen kann muss man auch alternativen anbieten können.

Das beste Beispiel ist ein automatischer Messprozess. Dort wird das ja eigentlich gemacht, man muss dann aber auch selber zurückspringen. Dort wäre es am Sinnvollsten mit IF und ELSE, da man sozusagen definieren kann, mach es so lange bis es stimmt und dann geh weiter.

So, dann werd ich mich wohl oder übel dahinterklemmen und die LBLs Programmieren

Vielen Dank und einen Schönen Tag, Sam
TOP    
Beitrag 21.03.2017, 15:56 Uhr
LucyLou
LucyLou
Level 5 = Community-Ingenieur
*****
Gruppe: Mitglied
Mitglied seit: 16.02.2008
Beiträge: 702

Hallo,

Stehst nicht alleine da.
Ähnliche Handhabung und Einrückung wäre schön gibt es aber noch nicht. Meines Wissens.

Folgende Optionen sind möglich

CODE
IF 34 EQU Q0 GOTO LBL 100
.
.
LBL 20
.
.
.
M30
LBL 100
.
.
.
IF 0 EQU 0 GOTO LBL 20


oder wenn die selbe Sprungmarke immer wieder benötigt wird

CODE
Q0=1
IF Q3 EQU Q4 GOTO LBL 100
LBL 1
.
.
.
Q0=2
IF Q67 EQU Q1200 GOTO LBL 100
LBL 2
.
.
.
.
LBL 100
; Bohrpositionen
.
.
.
.
.
IF 0 EQU 0 GOTO LBL Q0
; oder
IF Q0 EQU Q0 GOTO LBL Q0


mfg Peter


--------------------
mfg Peter

HAAS CompactMill 1
HAAS SuperMiniMill 2
HAAS ST10Y mit Stangenlader
TOP    
Beitrag 21.03.2017, 16:20 Uhr
x90cr
x90cr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 09.02.2005
Beiträge: 2.444

Ich würde eine If/Else Lösung auch bevorzugen.

Schön wäre auch wenn die FN Nummer nicht mit in der Zeile stehen würde, das macht das ganze leichter lesbar.

CODE
100 FN 11: IF+Q25 GT+40 GOTO LBL 400

100 IF+Q25 GT+40 GOTO LBL 400


--------------------
!! Mein alter Nickname: canon !!

Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
  • Wenn wir uns heute keine Zeit für unsere Gesundheit nehmen, werden wir uns später viel Zeit für unsere Krankheiten nehmen müssen.
  • Wenn es klemmt - wende Gewalt an. Wenn es kaputt geht, hätte es sowieso erneuert werden müssen.
TOP    
Beitrag 21.03.2017, 17:54 Uhr
cgTNC
cgTNC
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 21.11.2010
Beiträge: 1.341

QUOTE (nuTux @ 21.03.2017, 07:42 Uhr) *
100 FN 11: IF+Q25 GT+40 GOTO LBL 400
101 TOOL CALL 1 Z 10000
....
200 M30
830 LBL 400
831 CALL LBL 22
832 CALL LBL 99
833 LBL 0

Mit IF überspringt man einfach die Sätze, die nicht ausgeführt werden sollen.
Das ist strukturierter als mit einem zweiten IF zurückzuspringen:

CODE
       100 IF+Q25 LT+40.001 GOTO LBL 1
       101 CALL LBL 400
       102 LBL 1
       103 TOOL CALL 1 Z 10000
       ....
       200 M30
       830 LBL 400
       831 CALL LBL 22
       832 CALL LBL 99
       833 LBL 0

Gruß
cgTNC
TOP    
Beitrag 21.03.2017, 18:49 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

QUOTE (cgTNC @ 21.03.2017, 17:54 Uhr) *
Mit IF überspringt man einfach die Sätze, die nicht ausgeführt werden sollen.
Das ist strukturierter als mit einem zweiten IF zurückzuspringen:

CODE
       100 IF+Q25 LT+40.001 GOTO LBL 1
       101 CALL LBL 400
       102 LBL 1
       103 TOOL CALL 1 Z 10000
       ....
       200 M30
       830 LBL 400
       831 CALL LBL 22
       832 CALL LBL 99
       833 LBL 0

Gruß
cgTNC

Das nennt man bei anderen Programmiersystemen negative Logik !

Eine Lösung eines Klassichen IF THEN ELSE gibt es damit auch noch nicht.
Mann benötigt immer mehrere Sprungmarken damit man das ganze Gedöns auflösen kann.

Andere Systeme machen es seit Jahrzehnten vor, dass das auch geht.
IF <<Bedingung>>
; Programmcode für die WAHR Bedingung
...
; hier kann alles stehen, Rechenoperationen, Sprungbefehle, Unterprogrammaufrufe, Werkzeugwechsel, eigentlich alles
...
ELSE
; Programmcode für die UNWAHR Bedingung
....
; siehe oben bei WAHR
...
ENDIF

Und wenn ich die UNWAHR Sache nicht brauche schließe ich anstatt ELSE schreiben zu müssen, das ganze hier schon mit ENDIF ab.
Hier brauche ich keine LBL oder sonst etwas...
PS : Gibt es seit der Einführung der D- Steuerungsserien bei Siemens ....also schon fast 20 Jahre wink.gif

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> Ich habe mal einen Strich drunter gemacht wink.gif

Jetzt aber mal speziell cgTNC gefragt.

Ein typisches Beispiel aus einer Produktion.
Ich habe eine Mehrfachaufspannung, sagen wir mal mit 16 Spannstellen, an denen überall das selbe gemacht werden soll.
Alles keine Problem. Soweit klappt das ganz easy wink.gif
Jetzt soll in einer Zwischenmessung zum Beispiel eine Bohrung kontrolliert werden. Auch kein Thema. Aber wenn die Bohrung aus welchen Gründen auch immer nicht mehr nach gearbeitet werden kann weil sie schon Ausschuß ist, macht es auch wenig Sinn das Teil an dieser Spannstelle weiter zu bearbeiten. Das Programm muss also dafür sorgen, dass diese Spannstelle, oder auch mehrere im weiteren Programmlauf übersprungen werden sollen.

Mit Siemens geht das ganz EASY, nur bei HH ist es mir noch nicht gelungen ein solches Programm auf die Beine zustellen.

schönen Abend
TOP    
Beitrag 21.03.2017, 19:05 Uhr
N0F3aR
N0F3aR
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 05.12.2011
Beiträge: 980

Hi,

Mal ne Frage?! Gibt es den einen Befehl in Hh für Eine Schleife? So wie bei Siemens die For schleife.

Lg
TOP    
Beitrag 21.03.2017, 19:28 Uhr
x90cr
x90cr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 09.02.2005
Beiträge: 2.444

QUOTE (N0F3aR @ 21.03.2017, 19:05 Uhr) *
Hi,

Mal ne Frage?! Gibt es den einen Befehl in Hh für Eine Schleife? So wie bei Siemens die For schleife.

Lg


Du kannst eigentlich nur mit einem Call LBL Rep oder einem Sprungbefehl im Zusammenhang mit einem Variablen Zähler arbeiten.


--------------------
!! Mein alter Nickname: canon !!

Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
  • Wenn wir uns heute keine Zeit für unsere Gesundheit nehmen, werden wir uns später viel Zeit für unsere Krankheiten nehmen müssen.
  • Wenn es klemmt - wende Gewalt an. Wenn es kaputt geht, hätte es sowieso erneuert werden müssen.
TOP    
Beitrag 21.03.2017, 19:32 Uhr
x90cr
x90cr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 09.02.2005
Beiträge: 2.444

QUOTE (Simtra95 @ 21.03.2017, 18:49 Uhr) *
Jetzt aber mal speziell cgTNC gefragt.

Ein typisches Beispiel aus einer Produktion.
Ich habe eine Mehrfachaufspannung, sagen wir mal mit 16 Spannstellen, an denen überall das selbe gemacht werden soll.
Alles keine Problem. Soweit klappt das ganz easy wink.gif
Jetzt soll in einer Zwischenmessung zum Beispiel eine Bohrung kontrolliert werden. Auch kein Thema. Aber wenn die Bohrung aus welchen Gründen auch immer nicht mehr nach gearbeitet werden kann weil sie schon Ausschuß ist, macht es auch wenig Sinn das Teil an dieser Spannstelle weiter zu bearbeiten. Das Programm muss also dafür sorgen, dass diese Spannstelle, oder auch mehrere im weiteren Programmlauf übersprungen werden sollen.

Mit Siemens geht das ganz EASY, nur bei HH ist es mir noch nicht gelungen ein solches Programm auf die Beine zustellen.

schönen Abend


Da sehe ich kein Problem.
Jedes Teil bekommt einen eigenen Q Parameter. 0/1
Fällt ein Teil bei der Messung durch wird der jeweilige auf 0 gesetzt.
Jetzt muss vor jedem Arbeitsgang den es betrifft nur Abgefragt werden ob 0 oder 1, und bei 0 wird der Arbeitsgang übersprungen.


--------------------
!! Mein alter Nickname: canon !!

Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
  • Wenn wir uns heute keine Zeit für unsere Gesundheit nehmen, werden wir uns später viel Zeit für unsere Krankheiten nehmen müssen.
  • Wenn es klemmt - wende Gewalt an. Wenn es kaputt geht, hätte es sowieso erneuert werden müssen.
TOP    
Beitrag 21.03.2017, 20:06 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

Nabend
QUOTE (x90cr @ 21.03.2017, 19:32 Uhr) *
Da sehe ich kein Problem.
Jedes Teil bekommt einen eigenen Q Parameter. 0/1
Fällt ein Teil bei der Messung durch wird der jeweilige auf 0 gesetzt.
Jetzt muss vor jedem Arbeitsgang den es betrifft nur Abgefragt werden ob 0 oder 1, und bei 0 wird der Arbeitsgang übersprungen.

Soweit ist das ja noch ok.
Was macht das LBL welches den Meßzyklus enthält, damit der richtige Q Parameter von 1 auf 0 gesetzt wird ?
Ich habe ja 2 Bedingungen die Beachtung finden müssen.
Wenn das Teil = Bohrung noch zu klein ist, müsste ja nach gearbeitet werden an dieser Spannstelle. Also brauche ich auch noch 2 weitere Q Parameter pro Spannstelle. Einer der den Zeiger 0 / 1 enthält ob die Spannstelle nachgearbeitet werden muss, und einen der das Korrekturmaß enthält. Nach dem Durchlauf der ganzen Messerei muss geprüft werden, ob eines der 16 Q Parameter für die Nachbearbeitung von 0 auf 1 gesetzt wurde. Weiterhin müssen dann nur diese Spannstellen angefahren werden, und mit den richtigen Korrekturwerten nachgearbeitet werden. Und dann wird nochmal gemessen, also nur die die nachgearbeitet wurden.
Und auch hier könnte noch eine Spannstelle herausfallen.

Oder willst du 16 mal hintereinander den Meßzyklus ins Hauptprogramm schreiben, damit du nicht den Überblick verlierst, welches Q nun für was zuständig ist ?

Also das wird eine ganz verrückte Konstruktion ....

In Siemens packe ich jede Bearbeitung in ein Unterprogramm. Und der Rest steht im Hauptprogramm und läuft über paar Zeiger, und FOR Schleifen.

schönen Abend
TOP    
Beitrag 21.03.2017, 20:37 Uhr
cgTNC
cgTNC
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 21.11.2010
Beiträge: 1.341

@Simtra95:
In anderen Programmmiersprachen gibt es dazu Felder oder Arrays.
An der TNC kann man dazu eine Tabelle benutzen.
Z.B. 16 Zeilen mit den Spalten AUSSCHUSS und NACHARBEIT.
Dann sollte das mit einem Zähl-Parameter auch hier funktionieren ohne das man alles 16x schreibt.

Aber direkt mit dem Thema hat das ja nix zu tun.

Gruß
cgTNC
TOP    
Beitrag 21.03.2017, 20:38 Uhr
x90cr
x90cr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 09.02.2005
Beiträge: 2.444

QUOTE (Simtra95 @ 21.03.2017, 20:06 Uhr) *
Nabend

Soweit ist das ja noch ok.
Was macht das LBL welches den Meßzyklus enthält, damit der richtige Q Parameter von 1 auf 0 gesetzt wird ?
Ich habe ja 2 Bedingungen die Beachtung finden müssen.
Wenn das Teil = Bohrung noch zu klein ist, müsste ja nach gearbeitet werden an dieser Spannstelle. Also brauche ich auch noch 2 weitere Q Parameter pro Spannstelle. Einer der den Zeiger 0 / 1 enthält ob die Spannstelle nachgearbeitet werden muss, und einen der das Korrekturmaß enthält. Nach dem Durchlauf der ganzen Messerei muss geprüft werden, ob eines der 16 Q Parameter für die Nachbearbeitung von 0 auf 1 gesetzt wurde. Weiterhin müssen dann nur diese Spannstellen angefahren werden, und mit den richtigen Korrekturwerten nachgearbeitet werden. Und dann wird nochmal gemessen, also nur die die nachgearbeitet wurden.
Und auch hier könnte noch eine Spannstelle herausfallen.

Oder willst du 16 mal hintereinander den Meßzyklus ins Hauptprogramm schreiben, damit du nicht den Überblick verlierst, welches Q nun für was zuständig ist ?

Also das wird eine ganz verrückte Konstruktion ....

In Siemens packe ich jede Bearbeitung in ein Unterprogramm. Und der Rest steht im Hauptprogramm und läuft über paar Zeiger, und FOR Schleifen.

schönen Abend


Übersichtlich wäre sowas natürlich nicht.
Das sind solche Programme, bei dehnen ich hoffe das ich nie was ändern muss. biggrin.gif


--------------------
!! Mein alter Nickname: canon !!

Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
  • Wenn wir uns heute keine Zeit für unsere Gesundheit nehmen, werden wir uns später viel Zeit für unsere Krankheiten nehmen müssen.
  • Wenn es klemmt - wende Gewalt an. Wenn es kaputt geht, hätte es sowieso erneuert werden müssen.
TOP    
Beitrag 21.03.2017, 20:40 Uhr
homerq
homerq
Level 5 = Community-Ingenieur
*****
Gruppe: Mitglied
Mitglied seit: 03.06.2004
Beiträge: 737

QUOTE (Simtra95 @ 21.03.2017, 20:06 Uhr) *
Nabend

Soweit ist das ja noch ok.
Was macht das LBL welches den Meßzyklus enthält, damit der richtige Q Parameter von 1 auf 0 gesetzt wird ?
Ich habe ja 2 Bedingungen die Beachtung finden müssen.
Wenn das Teil = Bohrung noch zu klein ist, müsste ja nach gearbeitet werden an dieser Spannstelle. Also brauche ich auch noch 2 weitere Q Parameter pro Spannstelle. Einer der den Zeiger 0 / 1 enthält ob die Spannstelle nachgearbeitet werden muss, und einen der das Korrekturmaß enthält. Nach dem Durchlauf der ganzen Messerei muss geprüft werden, ob eines der 16 Q Parameter für die Nachbearbeitung von 0 auf 1 gesetzt wurde. Weiterhin müssen dann nur diese Spannstellen angefahren werden, und mit den richtigen Korrekturwerten nachgearbeitet werden. Und dann wird nochmal gemessen, also nur die die nachgearbeitet wurden.
Und auch hier könnte noch eine Spannstelle herausfallen.

Oder willst du 16 mal hintereinander den Meßzyklus ins Hauptprogramm schreiben, damit du nicht den Überblick verlierst, welches Q nun für was zuständig ist ?

Also das wird eine ganz verrückte Konstruktion ....

In Siemens packe ich jede Bearbeitung in ein Unterprogramm. Und der Rest steht im Hauptprogramm und läuft über paar Zeiger, und FOR Schleifen.

schönen Abend

Ich würde für jede Aufspannung einen weiteren Parameter setzen. Als Wert z.b. 10,20,30 u.s.w. und diesen mit dem Ergebnisparameter 0=gut, 1=zu groß, 2=zu klein addieren. So hast du im Kontrollparameter die Werte: 10=gut 11=Ausschuss 12=Nacharbeit für die erste Aufspannung als Ergebnis zum weiterverarbeiten.
Gruß Jens
TOP    
Beitrag 21.03.2017, 21:19 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

QUOTE (cgTNC @ 21.03.2017, 20:37 Uhr) *
@Simtra95:
In anderen Programmmiersprachen gibt es dazu Felder oder Arrays.
An der TNC kann man dazu eine Tabelle benutzen.
Z.B. 16 Zeilen mit den Spalten AUSSCHUSS und NACHARBEIT.
Dann sollte das mit einem Zähl-Parameter auch hier funktionieren ohne das man alles 16x schreibt.

Aber direkt mit dem Thema hat das ja nix zu tun.

Gruß
cgTNC

Nabend,

wir haben neben einer Fanuc Drehmaschine und einer HH Fräsmaschine, dann ausschließlich Siemens Maschinen im Hause stehen.
Und mit Siemens gibt es nicht so einem Popelmosch mit LBL hier und LBL da, und Hupfe von da nach dort ...

Ich fragte ja nach einer gescheiten Lösung !

PS: Solange ich die Alternative habe, gehe ich lieber auf eine Siemens Maschine auch wenn es nur eine 840C ist, als mich an die HH zu stellen... Das ist eh nur mehr oder minder, die mal Bastel-Fräser wenn betriebsintern mal ein Klötzchen oder paar Löcher gebraucht werden. Und für eine ernsthafte Serienproduktion ist die Maschine eh zu langsam ( altersbedingt )

Schönen Abend
TOP    
Beitrag 22.03.2017, 16:03 Uhr
LucyLou
LucyLou
Level 5 = Community-Ingenieur
*****
Gruppe: Mitglied
Mitglied seit: 16.02.2008
Beiträge: 702

Hallo,

QUOTE
Nabend,

wir haben neben einer Fanuc Drehmaschine und einer HH Fräsmaschine, dann ausschließlich Siemens Maschinen im Hause stehen.
Und mit Siemens gibt es nicht so einem Popelmosch mit LBL hier und LBL da, und Hupfe von da nach dort ...

Ich fragte ja nach einer gescheiten Lösung !

PS: Solange ich die Alternative habe, gehe ich lieber auf eine Siemens Maschine auch wenn es nur eine 840C ist, als mich an die HH zu stellen... Das ist eh nur mehr oder minder, die mal Bastel-Fräser wenn betriebsintern mal ein Klötzchen oder paar Löcher gebraucht werden. Und für eine ernsthafte Serienproduktion ist die Maschine eh zu langsam ( altersbedingt )


Man muss ja auch mal das Umfeld betrachten wie die Einzelnen Steuerungen gewachsen sind.

eine Heidenhain wird man höchst wahrscheinlich nie auf einer anderen Maschine finden als auf Fräs- oder Drehmaschinen
eine Siemens Steuerung gibt es auch auf zahlreichen anderen Maschinen die nichts mit Drehen und Fräsen zu tun haben.
Die Siemens CNC Steuerung hat hier sicher von den anderen Steuerungen Profitiert.
eine Heidenhain ist halt immer noch sehr auf Werkstätten Programmierung ausgelegt.
Direkte Programmierung auf der Maschine und nicht Extern.

Was halt Konstrukte IF, ELSE, FOR, oder Klassen, Funktionen in einem Reinen NC-Programm zu suchen haben ist halt eine
Reine Frage einer Brauchts, einer findets Gut, der nächste weiß nicht was er damit machen soll.

mfg Peter


--------------------
mfg Peter

HAAS CompactMill 1
HAAS SuperMiniMill 2
HAAS ST10Y mit Stangenlader
TOP    
Beitrag 22.03.2017, 16:22 Uhr
homerq
homerq
Level 5 = Community-Ingenieur
*****
Gruppe: Mitglied
Mitglied seit: 03.06.2004
Beiträge: 737

QUOTE (LucyLou @ 22.03.2017, 16:03 Uhr) *
Hallo,



Man muss ja auch mal das Umfeld betrachten wie die Einzelnen Steuerungen gewachsen sind.

eine Heidenhain wird man höchst wahrscheinlich nie auf einer anderen Maschine finden als auf Fräs- oder Drehmaschinen
eine Siemens Steuerung gibt es auch auf zahlreichen anderen Maschinen die nichts mit Drehen und Fräsen zu tun haben.
Die Siemens CNC Steuerung hat hier sicher von den anderen Steuerungen Profitiert.
eine Heidenhain ist halt immer noch sehr auf Werkstätten Programmierung ausgelegt.
Direkte Programmierung auf der Maschine und nicht Extern.

Was halt Konstrukte IF, ELSE, FOR, oder Klassen, Funktionen in einem Reinen NC-Programm zu suchen haben ist halt eine
Reine Frage einer Brauchts, einer findets Gut, der nächste weiß nicht was er damit machen soll.

mfg Peter

Ja, Ja,
das ewige Streitthema.
Leider haben wir nun mal nur das was gerade zur Verfügung steht und müssen damit leben, äh programmieren.
Trotzdem werden immer wieder Lösungen gefunden, die mit dem bisschen auskommen.
Ich geb die Hoffnung auf, daß sich hinsichtlich der Q-Parameter in absehbarer Zeit was Entscheidendes tut. Und dann muß man sich glücklich schätzen, wenn man dann eine Maschine mit der aktuellen Steuerung hat. Da bin ich dann wohl schon in Rente.
Gruß Jens
TOP    
Beitrag 22.03.2017, 17:15 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

Guten Tag
QUOTE (LucyLou @ 22.03.2017, 16:03 Uhr) *
Hallo,

Man muss ja auch mal das Umfeld betrachten wie die Einzelnen Steuerungen gewachsen sind.

eine Heidenhain wird man höchst wahrscheinlich nie auf einer anderen Maschine finden als auf Fräs- oder Drehmaschinen
eine Siemens Steuerung gibt es auch auf zahlreichen anderen Maschinen die nichts mit Drehen und Fräsen zu tun haben.
Die Siemens CNC Steuerung hat hier sicher von den anderen Steuerungen Profitiert.
eine Heidenhain ist halt immer noch sehr auf Werkstätten Programmierung ausgelegt.
Direkte Programmierung auf der Maschine und nicht Extern.

Was halt Konstrukte IF, ELSE, FOR, oder Klassen, Funktionen in einem Reinen NC-Programm zu suchen haben ist halt eine
Reine Frage einer Brauchts, einer findets Gut, der nächste weiß nicht was er damit machen soll.

mfg Peter

Ich finde es toll, dass du auch diese Seite der CNC Steuerungen ansprichst.
Nicht nur Siemens hat von anderen Steuerungen und deren Weiterentwicklung profitiert. Wobei mir jetzt keine Zukauf auf Siemensseite einfallen würde, wie er bei HH mit den Erwerb der Philips / Grundig Steuerungen ( später EPL ) stattgefunden hat.
Ich will damit keinesfalls behaupten, oder gar eine Unterstellung äußern, dass HH Steuerungen schlechte Steuerungen sind. Heidenhain weicht mit seinem Konzept der Klartext Programmierung neben diesen MAZTROL Sachen, eindeutig von den international weiter verbreiteten G oder ISO basierenden Steuerungen ab. Ich will auch keine Vermutungen treffen, welchen Verbreitungsgrad diese Steuerungen ausserhalb von Deutschland, bzw dem europäischen Ausland haben.
Aber ich denke, und das ist nicht nur meine persönliche Meinung ( wie es sich hier im Thread schon herauskristallisiert hat ), dass auch Steuerungskonzepte mit der Zeit gehen sollten.
Klassiche Schleifen- Funktionen im Sinne einer Wiederhohlungsschliefe ob als FOR TO NEXT ( klassische durchzählende Schleife ) oder Schleifen mit Abbruchbedingungen wie WHILE oder REPEAT UNTIL ( jeweils mit Ausstiegsbedingung am Schleifenanfang- oder ende ) sollte eigentlich Standard sein. Ebenso sehe ich es auch verwerflich, dass der klassische "statische Sprung" hier nur in Verbindung mit einer IF Bedingung ausgeführt werden kann ( was nicht nur die Lesbarkeit erschwert, sonder auch die Programmierzeit = Aufwand erhöht ).

Ob man auf einer CNC Maschine Variablen unterschiedlicher Typisierung frei definieren können muss, gut das mag jeder für sich entscheiden. Man(n) hat ja auch noch die frei zur Verfügung stehenden Q- Parameter ( äquivalent R- Parameter bei Siemens ). Die aber auch nicht jeden Bereich und alles abdecken können, gerade wenn es um die Auswertung und Verarbeitung von alphanumerischen Daten geht.

Vielleicht sollte man hier das ganze auch so sehen, dass Unterprogramme und Zyklen ähnlich anzusehen sind, wie Proceduren und Functionen im Bereich der PC Programmierung als Objekte. Wenn ein Objekt aufgerufen oder genutzt wird, muss sichergestellt sein, dass der Rücksprung zum Ausgangspunkt vorhanden ist, und der Programmlauf nicht unerwartete Formen annimmt. Siehe Ausgangspost. Wenn ich ein Unterprogramm oder einen Zyklus aufrufe, ist das ein Objekt, welches nach Beendigung oder Ausführung den Rücksprung zur Folgezeile der aufrufenden Zeile selber schafft. Ansonsten mach Unterprogramm- Technologie keinen wirklichen Sinn. Denn Unterprogramm- Technologie heist immer noch, dass ein ausgelagerter Programmteil, ob parametiert oder nicht, von jeder beliebigen Stelle im Programm , beliebig oft aufgerufen werden kann, und die Programmfortsetzung ab dem Aufrufpunkt ermöglicht. Entspricht diesem dem nicht ist das ähnlich anzusehen, wie ein wildes gespringe mit statischen Sprungbefehlen, welches früher mal als "Spaghetti- Code" verschrien war. Was zwar bei HH mit dem Aufruf CALL LBL gegeben ist, aber in Verbindung mit GOTO LBL wieder völlig abstrus wird.

Aber mal zurück zum Thema.
Für den Sprung mit GOTO benötige ich ein LBL, egal ob als Sprungzeiger im Hauptprogramm, oder als angefügt liegendes Unterprogramm.
Das bestehende Problem ist immer noch dem vom mir eingebrachten Beispiel das selbe.
Loch vorbohren, Loch auffräsen , messen, das ganze solange wiederholen bis das Maß im gewünschten Bereich liegt, weil das zu bearbeitende Material sich eher elastisch als plastisch verhält. Ich benötige zig IF Abfragen und muss wild zwischen den LBL's hin- und herspringen. Aber einen funktionierenden Lösungsansatz für eine Mehrfachaufspannung zu erzeugen ist mir bis jetzt noch nicht gelungen. Obwohl ich dabei trotz Handbuch ( auch mit noch wenige Erfahrung in HH ) schon Stunden ( ca 20 h verteilt auf mehrere Tage ) damit zugebracht habe, und immer noch keinen Schritt weiter bin.
Hier mal dazu das Gegenbeispiel, wenn das Programmkonzept bei Siemens steht, egal für wieviele Spannstellen dieses ausgelegt ist, ich aber jetzt noch zusätzlich 20 weitere auf den Maschinentisch einrichten will, muss ich 3 Grundparameter im HP im Hauptprogramm ändern, diese weiteren Nullpunkte manuelle Ausmessen und Eintragen, und schon läuft die Geschichte. Hier zeigt sich eindeutig der Vorteil, einer Steuerung die mit eigentlich alten, klassischen Programmelementen ähnlich Basic umgehen kann.

Ok, Ende des gejammers, oder was auch immer. Die Frage steht noch offen im Raum. @homerq hat ja eine Lösungsansatz aufgezeigt. Den ich erst einmal versuche zu verfolgen.

In diesem Sinne, einen schönen Abend
R.HEIM
TOP    
Beitrag 22.03.2017, 18:35 Uhr
Lost-Form
Lost-Form
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.07.2004
Beiträge: 157

Chips und Bier holen...

...ein Heidenhain-User, der still mitliest und schmunzelt.
TOP    
Beitrag 22.03.2017, 18:53 Uhr
inaktiv_17
inaktiv_17
Level 3 = Community-Techniker
***
Gruppe: Banned
Mitglied seit: 05.02.2017
Beiträge: 179

QUOTE (Lost-Form @ 22.03.2017, 18:35 Uhr) *
Chips und Bier holen...

...ein Heidenhain-User, der still mitliest und schmunzelt.

Guten Abend

Klar steht es Dir frei, dich mit Bier und Chips den Bauch vollzuschlagen.

Aber für produktive Anworten reicht es scheinbar aber nicht mehr ...
In dem Sinne
R.HEIM
TOP    
Beitrag 22.03.2017, 22:51 Uhr
cgTNC
cgTNC
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 21.11.2010
Beiträge: 1.341

QUOTE (Simtra95 @ 22.03.2017, 18:53 Uhr) *
Guten Abend

Klar steht es Dir frei, dich mit Bier und Chips den Bauch vollzuschlagen.

Aber für produktive Anworten reicht es scheinbar aber nicht mehr ...
In dem Sinne
R.HEIM

Produktive Antworten auf was?

Du hast geschrieben, das die TNC dich eh nicht interessiert und das da auch keine Serienteile drauf laufen.
Und der TE hat auch keine weiteren Fragen.

Und mit den verschiedenen Steuerungen währe es sicherlich schön wenn man eine Kombination aus dem Besten von jeder hätte, programmieren man muß aber das Ding, was vor einem steht.
Auferdem müßte die beste Steuerung den ganzen Müll mit bringen, den hier eigentlich keiner haben will, weil Kompatibel soll es dann bitte doch auch sein. wink.gif

Gruß
cgTNC
TOP    
Beitrag 22.03.2017, 23:08 Uhr
E=MC²
E=MC²
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 10.04.2007
Beiträge: 54

Jetzt bin ich zwar noch fast blutiger Anfänger auf der 530...

Aber wie wärs jede Bearbeitung in ein eigenes Label zu setzen, abzuarbeiten, Cycle Def 247 und neuen NP zu setzen, LBL Call, nächste Bearbeitung...

Also
Cycle Def 247 1
LBL 800
Tool Call 1 (Schruppen)
bla bla bla
LBL 0

Cycle Def 247 2
Call LBL 800

Cycle Def 247 3
Call LBL 800

usw...

Wenn du nicht grad 15 Jobs hast, ist das ganze recht einfach zu managen...

Die Cycle Defs 247 kannst du meines Wissens nach auch in ein eigenes LBL setzen, also noch weniger Aufwand.

Und das ganze dank Gliederung rechts im Bildschirm überschaubar wenn du ne entsprechende Gliederung einfügst.

Ich komm eigentlich von ner MillPlus, hab auf ner 840 gelernt, aber in punkto Übersichtlichkeit und Programmierbarkeit find ich die 530 sowas von überlegen.
TOP    
Beitrag 23.03.2017, 04:56 Uhr
schwindl
schwindl
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 18.09.2008
Beiträge: 2.311

Mehrfachspannung??
Wie wäre es mit Palettenbearbeitung in Verbindung mit Werkzeug orientierter Bearbeitung?
Messen im Prozess mit Taster und Nacharbeit mit korrigierten Werkzeug?
Wie oben gesagt, die Funktionen wird es auf der iTNC nie geben und auf der 640 irgendwann. Also nehmt das her was da ist.


--------------------
Gruß
Schwindl
TOP    



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