Hintergrund Task zur Überwachung einer Externen Achse

  • Servus Miteinander,
    Ziel soll sein einen Robby IRB 4600 mit IRC5 Steuerung eine externe Achse überwachen zu lassen.
    Überlegung war im Hintergrund eine zusätzliche Task laufen zu lassen, wellche alle 500ms abfragt ob der Tisch sich wirklich noch dreht...
    ABB erzählte etwas vom CJointT befehl(Abfrage der derzeitigen Positionen), deren genauere Erklärung es aber einer eigenen Schulung bedarf :kopfkratz:
    Gibt es da vllt noch eine andere Alternative?
    IO`s kommen leider nicht in Frage weil als Multi Tasking fähiger Roboter sollte ein Robby das schon können,
    Ist wohl auch eher eine mangelnde Anwender Experience :seufz:

  • ANZEIGE
  • Als Programmierkoryphäe ist die umsetzung bestimmt relativ einfach, bei meinem Versuch kam ich zum ersten mal in den Genuss nen X-Start auszuführen, weil sich die Disk i-wie nach dem erstellen der zweiten task verabschiedet hat. jetzt bin ich n bisschen vorsichtiger. was sollte denn drin stehen?
    joints:= CJointT();
    und natürlich die Deklaration als Jointtarget
    bei manuellen ausführen werden die daten dann auch unter jointtargets angezeigt. allerdings nur die der 6 Roboterachsen.....

  • Ungefähr so (verzeih mir Syntaxfehler, bin gerade voll verKUKAt.)



    Erklärung:
    Zwei Jointtarget permanent speichern. Eins neu einlesen, externe Achse 1 vergleichen, wenn Differenz > Minimalwert, dann Bingo. Anschließend den eben eingelesenen Wert als Altwert speichern, eine Winzigkeit warten und dann dasselbe von vorn.
    Im boolschen Merker steht dann das Ergebnis, was Du sosntwo auswerten kannst, oder meinetwegen auch direkt dahinter einen Ausgang schaltet oder so.
    Guck mal in der Doku bei Datentypen Jointtarget.
    Der Vergleich auf 0 (also wenn Du versuchst zu vergleichen ob (lastjoint.extax.eax_a = testjoint.extax.eax_a) ) könnte fehlschlagen. Eine exakt identische Achsposition ist eher selten, daher besser auf eine gewisse kleine Mindestdifferenz testen wie im Beispiel.


    Die Bedingung in "while" sollte Dir helfen, die Task zu beenden, falls nötig, dazu muss ein entsprechender (virtueller) Ausgang konfiguriert werden.
    Die Task als semistatisch anlegen, und zu Testzwecken erst ohne Fehlerauswirkung konfigurieren. Später kann man dann die Bedingung verschärfen, wenn alles läuft.
    Semistatische Tasks laufen immer von vorn an bei Neustart, oder wenn Du ein Programm im Haupttask auch nur einen Schritt weit ausführst. Anhalten zu Umprogrammierzwecken kannst Du sie dann immer mal mit dem Ausgang.


    Grüße,
    Michael

  • Jo Michael,
    Vielen Dank erstmal,
    :danke:
    werde mich mal ans Werk machen und das eben erlernte auch gleich mal in die Tat umsetzen.
    Über die Syntaxfehler will ich mal gnädiger weise hinwegsehen :zwink:
    Hatte fälschlicher weise den 2 Task immer auf semistatic gestellt.
    und dann zwischenzeitlich neu gestartet obwohl das Programm noch nicht Fertig war bzw.. nicht vollständig.
    Für die Zukunft werde ich bei erstellen zusätzlicher Task diese erst einmal bis zur Vollständigkeit auf Normal lassen um vorprogrammierte Systemfehler vorzubeugen :)

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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