Zielpos nicht möglich, Softwareendschalter, Meldung umgehen?

  • Nabend!
    Wir haben momentan zwei Roboter zur Inbetriebnahme für die wir Sollwerte in X,Y,Z,A,B,C für Base und Tool per SPS vorgeben. Jetzt kann es vorkommen, dass beim vorgeben die gewünschte Zielposition im Bereich eines Softwareendschalters liegt, wodurch eine Störmeldung herausgegeben wird. Diese Meldung muss im Handbetrieb quittiert werden, was nicht Bedienerfreundlich ist.
    Jetzt meine Frage:
    Ist es möglich die Achssollpositionen des vorgegebenen Koordinatenpunktes auszulesen? Ich habe bisher keine passende Variable gefunden. Mit den Werten kann man sich dann was "Basteln". Oder hat jemand eine Idee wie ich das Problem lösen kann?
    Gleiches gilt für die Softwareendschalter. Hierbei habe ich mir jetzt über einen Achsarbeitsbereich einen Bereich kurz vor dem SE angelegt, wo ich dann per Unterprogramm weitere Entscheidungen wie Meldungsausgabe o.ä. starte. Wenn jemand hierzu eine bessere Idee hat, immer her damit ;)

  • Schritt für Schritt zum Roboterprofi!
  • Vielen Dank für die schnelle Antwort!!


    Ich habe mir das mal durchgelesen, verstehe es aber noch nicht ganz. Ist es richtig, dass über die Inverse Funktion aus den Kartesischen Soll-Daten eine Achs Sollposition intern berechnet wird? Mit den Befehlen kenne ich mich leider nicht so aus, vielleicht kann mir das nochmal jemand erklären???

  • Hallo Joschy,


    ja INVERSE rechnet eine kartesische Position (X,Y,Z,A,B,C, ...) in Achswerte (A1, A2, A3, ...) um. Allerdings reichen für Eindeutigkeit nicht (X,Y,Z,A,B,C) alleine aus. Daher ist es auch noch notwendig Status (S) und Turn (T) zu betrachten. Konkret gibt es zu jeder kartesischen Position theoretisch bis zu 8 verschiedene Achsstellungen, d.h. unterschiedliche Stati, die alle die gleichen kartesischen (X,Y,Z,A,B,C)-Werte haben. Die Inverse stellt nun mehrere Varianten zur Verfügung wie man aus diesen theoretisch 8 möglichen Achsstellungen wählen will. Direkte Statusübergabe, kütrzester Abstand zu einer gegebenen Achsstellung. Welche Variante man will wählt man über den ERR_STATUS als Input in die INVERSE()-Funktion und $TARGET_STATUS festgelegt.


    Ferner muss man im Hinterkopf die Bewegungsart haben und Wissen wie diese mit Status und Turn umgehen:
    http://www.robot-forum.com/rob…riable/msg67275/#msg67275
    Leider scheint der darin eingebettete Link
    http://www.robot-forum.com/rob…-(-s-)/msg33467/#msg33467
    der das genauer erkläret nicht mehr zu funktionieren (Admin ->?)
    Fubini

  • So, eingegeben habe ich das Ganze wie folgt:


    XP1 = $NULLFRAME
    XP1.X = 800
    XP1.Y = 2200
    XP1.Z = 100
    XP1.A = 80
    XP1.B = -80
    XP1.C = -110
    XP1.E1= 0.01


    Position= XP1
    Start_Axis = $AXIS_ACT


    AXIS_CHECK_LIM =INVERSE (POSITION, START_AXIS, Fehlernummer )


    Problem hierbei ist, dass ich folgende Meldung bekomme:


    Fehlernummer Wert ungültig. Dieser steht auf -2
    err_status, falls interessant steht auf -1.


    Was kann da jetzt das Problem sein?


    Declariert sind die Variablen wie folgt:



    E6AXIS Start_Axis={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0}
    E6Pos Position={X 0.0,Y -90.0000,Z 90.0000,A 0.0,B 0.0,C 0.0,E1 0.0, S 0.0, T 0.0}

  • Hallo Joschy,
    -2 müsste "Tool oder Base ungültig" sein.


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Diese Beschreibung hatte ich noch hier gefunden unter dem Link: http://www.roboterforum.de/rob…rt/3235/msg13319#msg13319



    ERR_STATUS kannst du zusätzlich als Rückgabewert auswerten, falls die Rücktrafo nicht erfolgreich ist steht da ein Code drin wass schief gegangen ist:


    -1: Nicht alle wesentlichen Komponenten der Variablen POSITION (X, Y, Z, A, B, C, ggf. E1, E2..) sind definiert. (S und T müssen nicht unbedingt definiert sein.)
    oder:
    wenn der STATUS von POSITION ungültig ist, waren nicht alle Komponenten von START_AXIS gültig.
    -2: ERR_STATUS besitzt noch keinen gültigen Wert.
    -3: $BASE (Vorlaufvariable) ungültig.
    -4: $TOOL (Vorlaufvariable) ungültig.
    Bei mir stehen ja jetzt andere Werte zwischen Fehlernummer und ERR-Status. Welchem kann ich denn jetzt glauben? ;)

  • Hallo,


    bei dir, d.h.
    AXIS_CHECK_LIM =INVERSE (POSITION, START_AXIS, Fehlernummer)
    musst du natürlich auf Fehlernummer schauen, das ist ja die Variable die du an INVERSE übergibst.


    Nochmal zur Klarstellung der dritte Parameter in INVERSE, d.h. bei dir Fehlernummer, wird sowohl als Eingabe- als auch als Ausgabewert verwendet. Es ist also einerseits wichtig welchen Wert er direkt vor Aufruf von INVERSE hat, um festzulegen wie INVERSE mit Softwareendschaltern umgehen soll:
    Bit 0=0: Alle Achswinkel werden geprüft, ob sie innerhalb der SW-Endschaltergrenzen liegen. Wenn nicht, dann wird über ERR_STATUS bzw. bei dir Fehlernummer ein entsprechender Fehlercode zurück geliefert.
    Bei Bit 0 = 1 wird dementsprechend kein Prüfung der Endschalter gemacht.


    Ist man durch INVERSE durch enthält Fehlernummer die Rückmeldung ob und was schief gegangen ist, falls ein Wert kleiner Null drin steht. Diese Fehlercodes hast du ja bereits selbst aufgeführt.


    Also Fehlercode -2 bedeutet: beim Aufruf von INVERSE hatte Fehlernummer noch keinen gültigen Wert, war also wahrscheinlich nur deklariert aber nicht initialisiert. Daher würde ich mal direkt vor dem Aufruf von INVERSE Fehlernummer den Wert 0 oder 1 zuweisen je nachdem ob du die Endschalterprüfung haben willst oder nicht.


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • hallo,
    noch kleiner Tipp: Im Ordner C:\KRC\UTIL hat es das Programm kue_weg.src (von KUKA).
    Da siehst Du ein Beispiel 1:1 der Inverse-Funktion mit Auswertung der Softwaregrenzen jeder Achse und Fehlercode.
    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

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