Kollisionserkennung -> welche Achse ausgelöst?

  • Hallo,


    habe hier einen KR240 mit KSS 8.5 und einem fremden Roboterprogramm, welches noch den SET_TQ_VALUES Befehl zur Kollisionserkennung nutzt ->> funktioniert.


    Wie kann ich im Nachhinein automatisch herausfinden, welche Achse die Kollisionserkennung ausgelöst hat?

    - Muss ich da auf den Meldungstext der Quittiermeldung zugreifen, oder gibts da was eleganteres?

    - In gefährlichen Bereichen für die Maschine wird eine automatische Quittierung eingesetzt. Kann ich die Meldung auch nach dem Quittieren noch lesen, oder muss ich sicherstellen, dass die Meldung erst gelesen und dann autom. quittiert wird?


    Danke!


    Gruß

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


    ich kann nun die Kollisionsmeldung identifizieren (anhand der Meldungsnummer 1131) und Maßnahmen einleiten.

    Allerdings kann ich noch nicht die auslösende Achse bestimmen.


    -> die Funktion MBX_REC speichert leider keinen Meldungstext...kann man Meldungstexte überhaupt auslesen?


    Hat da jemand einen Tipp für mich?

  • Du willst dies ja noch lösen mit SET_TQ_VALUE.

    Darin wird ja der Momentenbetrieb runtergesetzt über $TORQMON[X]=TQ_AXx

    Bei älteren Softwareversionen konnte man die Abweichung über $TORQ_DIFF[ ] jeder Achse mitverfolgen und so erkennen, welche ausgelöst hat.

    $TORQ_DIFF[ ] behält als Wert den max. aufgetretenen Wert. Wird aber z.T. wieder 0 gesetzt.

    Das Verhalten müsstest Du mal exakt analysieren. Selbst hab ich's in erster Linie manuell unter Variable/ Einzeln oder in Interrupt verwendet.

    Evtl. müsste sowieso noch $IMPROVED_COLLMON == FALSE gesetzt werden.


    Über die Meldungsnummer es zu machen wäre mir auf die schnelle nicht bekannt, dass dies überhaupt machbar wäre.


    Gruss SJX

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

  • Hallo SJX,


    vielen Dank für deinen Input!

    $IMPROVED_COLLMON ist ohnehin auf FALSE, da sonst SET_TQ_VALUE nicht verwendet werden kann, lt. Doku.

    Leider bleiben dann die Werte von $TORQ_DIFF[] immer unverändert, also fix. Habs gerade ausprobiert mit verschiedenen Geschwindigkeiten, Betriebsarten und Kollisionen.


    Im Logbuch kann man die ausgestiegene Achse schön bestimmen...ich muss die Info nur irgendwie automatisch an die SPS bringen...


    Gruss

  • ich weiß nicht mehr genau wie ich es gemacht habe :denk: aber probier mal $COLLMON_MAX[ hier die Nummer der Achse] in der Variablenübersicht einzufügen und dann zu schauen was die macht. Voraussetzung ist, das du es vorher aktiviert hast. Löschen kannst die Werte mit USED_CD_PARAMS (0).

    Eigentlich müssten sich dann der Werte in der $COLLMON_MAX[ Achsen 1-6 ] verändern. Diese kannst ja dann im sps.sub abfragen.


    Vielleicht hilft es dir!? Ich muss mal schauen wo ich das Programm dazu habe... dann schicke ich es dir per PN.


    Gruss

  • Hallo Robomann,


    leider wird die Variable $COLLMON_MAX[] nur verwendet wenn $IMPROVED_COLLMON== TRUE gesetzt ist....was bei dem vorhanden (und recht umfangreichen) Programm nicht der Fall ist :(

    In der Doku für Systemintegratoren scheint $COLLMON_MAX[] auch erst ab KSS 8.5 auf...hast du das in Kombination mit SET_TQ_VALUES{} verwenden können?


    Danke trotzdem für den Input!

  • Leider bleiben dann die Werte von $TORQ_DIFF[] immer unverändert, also fix.

    Wie hast Du's getestet?

    Dir ist bewusst, dass sie den höchsten Wert beibehält (kann also so aussehen, wie unverändert, also bewusst in Testprog mal gedrückt eine Achse und ausgelöst?)

    Sonst mal 0 setzen und dann verfolgen.

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

  • Ja, habe ein kleines Testprogramm um eine (sanfte) Kollision zu provozieren.

    Hatte das mit dem manuell 0 setzen irgendwie ausgeblendet, mein Fehler!

    Die Funktion zeigt nun das gewohnte Verhalten, also geht hoch von 0 und bleibt am Maximalwert hängen.


    Ich muss nun sicherstellen, dass der Maximalwert bei der Kollision auftritt...ihr hört von mir!

    Danke erstmal!

  • möglich. müsste ich wie gesagt gucken. Aber generell ist es schon so das der max. Wert stehen bleibt. Den musst halt selber auswerten und entscheiden ob gut oder schlecht. Ich habe es so sensibel hin bekommen, das er Kunststoffteil ohne zu beschädigen berührt hat. War fummelig, aber ging. :)

    Lass von dir hören wenn du Ergebnisse hast!

  • Hi ich habe aktuell ein Programm am laufen in den Ich per interrupt $torq_diff[] auswerte!


    hiermit überwache ich auch das maximal Moment beim zuführen von Kunststoff teilen! Die Teile sind 0,7 mm dick und funktioniert ohne Beschädigungen. Beim auftreten des maximal Moments der jeweiligen Achse wird automatisch korrigiert bis der Widerstand geringer ist als von mir vorgegeben.


    wenn es mir nachher noch reicht kann ich mal mein Code posten....


    grüsse

  • Hi

    Okay.....wo ist denn eigentlich mein Text hin?

    Naja egal....

    Also ich habe es so gemacht...im Normalbetrieb wenn die Teile gut laufen....sprich ohne Widerstand oder ähnliches hab ich mir die Werte in der variablen Übersicht angeschaut. Einfach vor dem kritischen Punkt alle Achsen auf null stellen im Programm dann $torq_diff[] eingeben und alle 6 Achsen beobachten .....wie du jetzt gemerkt hast musst du einfach passende Werte finden. Wenn dann die Kollision anspricht kannst du in der Routine die einzelnen Achsen abfragen . Bei mir wird halt die Position ausgerichtet wegen (zykluszeit)

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