ABB S4c Steuerung und ISRA VISION KAMERA SYSTEM

  • Hallo Stefan,


    ich hab da mal was vorbereitet....


    Vorschlag 1: Synchronisieren der Tasks über dig. Ausgänge
    Laut Doku macht WaitUntil ein wiederholtes Abfragen (Polling) der Bedingung (nur) ca. alle 100ms. Wenn man die Synchronisierung über WaitDO, also durch Setzen/Rücksetzen eines digitalen Ausgangs bewerkstelligt, wird die Abfrage mit Interrupt-Geschwindigkeit erledigt. Ist auf jeden Fall (ein wenig) schneller und eleganter... Ein weiterer Vorteil ist, dass man auf der IO-Seite am TeachPanel anhand des Ausgangs direkt sehen kann ob und wann die Bilderkennung aktiv ist.


    Vorschlag 2: Triggern der Vision Task direkt nach Verlassen des Kamerasichtfeldes
    Durch Teachen eines Zwischen(Trigger)punktes kann man den nächsten Erkennungsvorgang direkt nach Verlassen des Kamerasichtfeldes auslösen, indem man an dieser Position (quasi im "Vorbeifliegen") den dig. Triggerausgang setzt. (Siehe Skizze und Code bzw. Doku. zu MoveLDO bzw. MoveJDO)



    Vorschlag 3: Verschiebung von Bewegungsabläufen über Program Displacements realisieren
    Nach Möglichkeit sollte man bei der Verschiebung (hier DX,DY) von kompletten Bewegungsabläufe die Manipulation von Robtargets, Pos usw. vermeiden. Besser ist die Verwendung von Program Displacements (siehe Code). Das Gleiche gilt für die Rotation von Achsen, d.h. man könnte (uns sollte) das auch bei der Korrektur der Greiferrotation einsetzen (statt die Tooldaten zu manipulieren!). Hab ich hier aber nicht umgebaut...(schau diesbzgl. mal in die Rob-Doku)


    Vorschlag 4: Diverse kleinere Programmänderungen zur Verbesserung der Übersichtlichkeit und Fehlersuche
    z.B. Statuscodes des Vision Systems u.a. (siehe Code)



    Hier nun die Programmausschnitte. Ist noch nicht ganz vollständig, sollte aber als Basis für weitere "Experimente" ausreichen. :)
    ACHTUNG: logischerweise alles ungetestet und OHNE Gewähr, also auf eigene Gefahr!


    VisionTask:



    Hier der Ansatz für die MainTask:


    Wie gesagt, ich weiß nicht ob das so funzt, denke aber es sollte gehen...
    Nicht vergessen den Triggerpunkt zu teachen, das doVisionActive-Signal zu definieren und ansonsten viel Spaß beim Experimentieren.


    Gruß
    Rainer

    Einmal editiert, zuletzt von rmac ()

  • ANZEIGE
  • Hallo Rainer,


    ich habe mir gerade Deine Vorschläge angesehen; da sind doch einige sehr sehr brauchbare Tips für mich dabei. :merci:
    Ich versuche mal die sachen umzusetzen, wenn das geklappt hat melde ich mich nochmal im Forum.


    Vielen Dank für die schnellen Infos. :danke:


    Gruß Stefan

  • Hallo,


    ich habe mir Dein Programm angesehn und mich gefragt, warum du ständig die komplette Schleife durchläufst und nicht wartest bis die Daten aus dem Task zur Verfügung stehen.


    Z.B. könnte man das Programm auch wie folgt gestalten:
    PROC haupt()
    ! Hauptprogramm
    XWERT:=0;
    YWERT:=0;
    XFAHR:=0;
    YFAHR:=0;
    FindItem:=TRUE;


    WHILE TRUE DO
    GreiferAuf;
    HOME;
    !Warten bis Werte vom Visionsystem zur Verfügung stehen
    WaitUntil XWERT<>0 AND YWERT<>0;
    XFAHR:=XWERT;
    YFAHR:=YWERT;
    RotationZ:=ZROT+30;
    GreifposAnfahren;
    ...
    ENDWHILE
    ENDPROC


    :pfeif:


    Um zu Überprüfen welcher Code vom Roboter ausgeführt wird, solltest Du die Instruktion "SpyStart" am Anfang Deiner Hauproutine einfügen, denn dann werden alle ausgeführten Instruktionen aus allen Tasks mit der entsprechenden Ausführungszeit in die angegebene Datei gespeichert.


    z.B.

    Proc Haupt()
    SpyStart "spy.log";
    ...



    Um die Aufzeichnung wieder zu beenden musst Du die Instruktion "SpyStop" verwenden. Sobald die Instruktion SpyStart erneut ausgeführt wird, wird die Log-Datei wieder überschrieben.
    Du musst aber aufpassen, denn je nach Aufzeichnungszeit kann die Log-Datei ziemlich groß werden.



    Gruß
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

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