Bezugskoordinatensystem wechseln

  • Hallo


    Ich bin gerade dabei meinem Robbi den letzen Schliff zu geben.


    Jetzt hat sich nur noch eine Frage aufgetan: Kann ich in einem Programm das Bezugskkordinatensystem wechseln.


    Also ich habe zwei Spannvorrichtungen in denen Teile zum schweißen eingespannt werden. Für jede dieser Vorrichtungen habe ich ein Bezugskoordinatensystem (bei ABB heißt so was Werkstückkoordinatensystem, weiß nicht wie KUKA so was nennt) definiert und meine Punkte für in diesen Koordinatensystemen geteacht.
    Mein Programm ruft nun Unterprogramme auf die Naht_1 bis Naht_6 heißen.
    Meine Frage wäre nun konkreter kann ich das Porgramm derart gestalten, dass es einmal in dem einem Bezugssystem arbeiten lässt und dann in dem anderem, aber ohne das ich die Unterprogramme zweimal schreiben muss? Kann man eine Variable definieren die Angibt jetzt wird im ersten Koordinatensystem gearbeitet, und wenn fertig, beziehen sich die Punkte in den selben Unterprogrammen einfach auf das zweite Bezugssystem? :kopfkratz:


    Wie immer bin ich euch sehr dankbar für jede erdenkliche hilfe ;)

  • Schritt für Schritt zum Roboterprofi!
  • Servus,


    - Base 1 vermessen
    - Base 2 vermessen
    - Punkte im Base 1 teachen
    - Punkte ändern im Programm auf "Schmierbase" z.B. Base 10


    und dann am Anfang des Programms:


    BASE_DATA[10] = BASE_DATA[1]


    oder für die 2te Schweißung


    BASE_DATA[10] = BASE_DATA[2]


    Mache mir eigentlich am liebsten 2 Programme.
    Kopieren und mit UltraEdit Kopieren /Ersetzen der Basedaten, fertig. Geht auch sehr schnell und hast immer die Möglichkeit für
    jeden Ablauf separate Änderungen zu machen


    Grüße


    Martl

  • Martl: Danke für die schnelle Antwort :merci:. Ich habe mein Programm jetzt deinem Vorschlag einmal angepasst.


    Meine Frage wäre jetzt noch in welchem koordiantensystem teace ich welche Punkte. Also die Punkte von der ersten Spannvorrichtung im 1 koordinatensystem und die von der zweiten im zweiten? Oder muss ich jetzt alle Punkte in einem Koordinatensystem teachen?


  • Hallo,


    das kommt daraufan ob die 2 Vorrichtungen für das gleiche Bauteil sind?
    Wenn das gleiche Bauteil auf 2 unterschiedlichen Spannvorrichtungen ist, dann genügt es eine Vorrichtung einzumessen und zu teachen und
    dann bei der 2. Vorrichtung nur die Base einzumessen.


    also Base 1 (1. Vorrichtung) einmessen und Punkte teachen, dann nur noch Base 2 (2. Vorrichtung) einmessen => Punkte müssten eigentlich dann passen


    Voraussetzung: Bezugspunkt (Messpunkte) der Base zum Teil sind 100% Identisch


    Grüße


    Martl

  • Hallo


    Ja beide Vorrichtungen sind für die selbe Baugruppe. Idee ist, dass ich an einer Spannvorrichtungschweißen kann, während ich in der anderen ein geschweißtes Teil entnehmen kann und ein neues einlege.


    Also sollte das so wie du das beschrieben hast ja dann funktionieren. Ich vermesse einfach nur die beiden Vorrichtungen als Bezugssystem 1 und 2., teache alle Punkte im Bezugssystem 10 für die 1 Vorrichtung. Ich muss halt nur aufpassen, das die Punkte von 1 und 2 gleich sind.
    Oder muss ich im 1 System teachen und dann bei allen Punkten händisch im Programmcode auf Base 10 umstellen.


    Ich mach das normalerweise so, dass ich zuerst das Programm schreibe, den Move-Befehl mit ändern auswähle und dann mit dem Roboter zu dem Punkt hinfahre und touch up drücke.

  • Hmm.


    Ich würde base 1 und base2 vermessen, eine davon in 10 kopieren und gleich in 10 teachen.
    Je nach Programm einige Zeit gespart, wo ich punkte nicht mit je 7 tastendrücken umändern muss

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Hallo


    Ich habe jetzt einmal meine beiden Bezugssysteme geteacht und auch die dazugehörigen Punkte geteacht. Die Werte die ich in der config-Datei für die beiden Bezugssysteme habe schauen auch richtig aus. Also fast gleiche Orientierung, Unterschied in der 3 Nachkommastelle (ist verkraftbar), nur andere Koordinaten (nonanet ;)). Das ganze Programm schaut so aus:



    Über die Variable t versuche ich jetzt zwischen den beiden Basiskoordinatensystemen herumzuswitchen, d.h. ist die Variable gleich null so soll er im 1. Basiskoordinatensystem arbeiten. Ist sie gleich 1 so im 2. System. Am Ende des Hauptprogramms hab ich eine If-Anweisung die die Variable dann wieder ändert, also 0 wird zu 1 und andersrum. Danach springe ich mit GOTO wieder zum Anfang.
    Zum testen lasse ich ihn zur Zeit nur einfache Bewegungen fahren. Die Punkte Warte1,..., Warte7 hab ich im sowohl einmal im Basis_Koordinatensystem 1 und 10 getaecht.


    Ich probiere es jetzt schon den ganzen Vormittag, aber leider bleibt er immer nur im 1. System. Wenn ich in der Configdata schaue kopiert er sich nur beim Programmaufruf die Daten aus Base_Data[1] in Base_Data[10]. Wenn ich ihn aber nach dem ersten Mal fahren wieder starte, also einfach die Starttaste drücke, sollte er sich ja die Daten aus Base_Data[2] kopieren, tut er nicht. Er fährt einfach nur wieder seine Punkte im Basiskoordinatensystem 1 ab.
    Wenn ich die Punkte in Basis 1 oder Basis 10 geteacht habe und ihn dann von Beginn an in Basis 2 fahren lasse, bleibt er in seiner Homeposition stehen. Er springt zwar in die Switch-Case Anweisung zu Case eins wie erwartet, jedoch bleibt er dort hängen.


    Falls es hilft ich verwende eine KRC1 Steuerung und einen KR30-Roboter.


    Ich hoffe wirklich jemand kann mir erklären wieso ich so Probleme hab, ist nähmlich ziemlich zeitaufwendig für zwei Spannvorrichtungen das Programm zu schreiben und alle Punkte zu teachen.

  • Servus,


    bin mir sicher das der Robi die Bases umschaltet, glaube du hast einen Fehler in deinem anderen Programm hast.
    Würde das Programmneu starten und es mal im Einzelsatz durchlaufen lassen => Zeile für Zeile (3 kleine Männer)
    Dann siehste eher wo er sich aufhängt.


    Grüße


    Martl

  • Zur Zeit besteht das Programm ja nur aus 7 Bewegungen. In der Basis 1. werden die auch abgearbeitet. Nur wenn ich in der basis 2 fahren möchte. Springt er zwar in die Zeile, bewegt sich aber kein Stück. Er ruf die bewegung PTP Warte1 .... Tool3 Base 10 auf, aber weiter gehts nicht. Auch wenn ich die anderen Funktionen auskommentiere funktioniert es nicht.

  • Bitte $Config.dat posten!

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • In Zeile 37 hast einen Tippfehler BASE_DATA[10]=BASE_DATE[2], sollte BASE_DATA[10]=BASE_DATA[2] heissen. Weiß nicht wie das ohne Syntaxfehler geht. Und ja, bitte config.dat posten


  • Überleg noch mal, wann t == 1 ist...


    :uglyhammer_2:


    ...und ich dachte noch frag mal nach, ob t den richtigen Wert hat.


    Also:

    Code
    IF t==0 THEN
    t=1
    ELSE
    t=0
    ENDIF

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Naja, wenn man schon Eins und Null benutzt, dann wäre statt



    eher das hier mein Geschmack:



    Das könnte man dann auch mal leicht auf drei Zustände erweitern und ist gefeit gegen t > 1 ... aber ist halt 'ne Geschmacksfrage. ;)


    Grüße,
    Michael


  • GOTO ist eigentlich nicht die feine Art der Programmierung, aber funzt.


    OT:
    Bitte...Bitte...Bitte...lasst euch jetzt nicht zu Diskussionen über GOTO hinreißen! :panik:



    eher das hier mein Geschmack:


    War auch das erste was mir aufgefallen ist. Hätte aber in diesem Thread auch für Verwirrung sorgen können. :mrgreen:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden