Weltzonen funktionieren nicht zuverlässig

  • Guten Tag


    Ich habe ein MultiMove system mit zwei Robotern "T_Rob1" und "T_Rob2". In der Anlage sind in beiden Task 4 statische Weltzonen definiert.
    IRC5 mit Robotware 5.61, habe aber ähnliche Phänomene auch schon mit Robotware 6.03 beobachtet.
    - HomePosition, WZHomeJointDef
    - ServicePosition, WZHomeJointDef
    - Vorposition1+2, WZBoxDef -> Eckwerte werden berechnet aus dem teachpunkt der angefahren wird -> Muss natürlich nach neu teachen neu gestartet werden damit dies richtig funktioniert.
    (Wenn Produkt in den Greifern wird nicht Homepos angefahren sondern eine Vorposition, wegen koordinierung)
    Roboter Greifen ein Produkt das aus zwei Teilen besteht die mit einem Draht verbunden sind, mit Produkt wird also Synchron oder gegebenenfalls sogar koordiniert verfahren.
    Nun zum Problem.
    Mache ich eine Grundstellungsfahrt aus der Platzierungsroutine, fahrt der Roboter mit SyncMoveOn koordiniert auf die Vorposition wobei T_Rob2 der Master ist und T_Rob1 in relation zu R2 fährt.
    Interessanterweise funktioniert die WEltzone im T_Rob1 einwandfrei, obwohl dieser nicht effektiv die Vorposition anfährt, sondern die relation zu R2 beibehält. Diese Position liegt aber in der definierten Weltzone.
    T_Rob2 hingegen, welche den Punkt genau anfährt behauptet nicht in der Weltzone zu sein und verhaspelt sich bei erneutem Grundstellungsfahren weil der Weltzonen-Status nicht stimmt.
    Wird nun der Roboter in den Manuellen Betrieb genommen und lediglich der Totmantaster gedrückt (Roboter wurde nicht bewegt!!!), ändert das Weltzonen signal auf 1 wie es soll. Zurück in der Automatik, trotz aktiven Motoren ist das Signal aber wieder 0.
    Woran könnte das liegen?
    Code backup bei Bedarf verfügbar.

  • ANZEIGE
  • Ich denke beim dem SyncMove kriegt der zweite Task nicht wirklich die Position mit weil er ja mehr als Slave den Master folgt.
    Ich würde mir einen dritten Task machen der die Aktuelle Positionen der beiden Roboter Achsweise mit der Home vergleicht.
    dann brauchst du auch nicht neustarten wenn die Home um geteacht wird ^^
    Gruß


    Loipe

  • Da ich auch des öfteren Probleme mit Statischen Weltzonen hatte löse ich das eigentlich immer mit temporären Weltzonen.

    Code
    PROC Init_WZ()      
            WZFree wzArea2;
            WZHomeJointDef\Inside, sVolume2,jSafe,DeltaSafe;
            WZDOSet\Temp,wzArea2\Inside,sVolume2,doSafePos,1;
    	WZEnable wzArea2;
      ENDPROC


    Die Routine Init_WZ muss einmal bei PZ-Main durchlaufen werden. Bei uns befindet sicher der Aufruf in der Regel gleich an erster oder zweiter stelle in Main() und funktioniert eigentlich Problemlos.


    Gruß Christian

  • Es gab auch zwischendurch beim Übergang auf den neuen Computer einen Softwarestand (nagel mich nicht auf Details fest), bei dem sich Weltzonen in eine Richtung nicht an der Grenze aktualisierten, sondern wie im Startbeitrag beschrieben. Eine Anlage ging bei uns mal an den Start, wo ich das tatsächlich im Hintergrundtask simulieren musste. Der Bug wurde dann in der Folgeversion gefixt, aber es kann ja sein, dass man die Situation mit der synchronisierten Bewegung zu fixen vergessen hat.


    Grüße,
    Michael

  • @ Loipe


    Nicht der Slave aus dem SyncMove macht Probleme sondern der Master, könnte ja noch verstehen wenn der Slave ärger machen würde da dieser nicht effektiv auf den Punkt fährt der verwendet wird für die Weltzonen berechnung.
    Diese ist übrigens eine Box 20x20mm mit einem robtarget im Zentrum


    @ Stingray


    Hab schon darüber nachgedacht \temp zonen zu verwenden, hatte bisher noch nie Zeit dafür, werd ich vielleicht bei Gelegenheit versuchen. Werde wohl vorläufig nicht mehr zu dem Kunden gehen.


    Werd mich damit wohl auch mal an den support von ABB wenden müssen.


    Danke für die feedbacks

  • Hallo MBichsel
    Wenn eine solch kleine Zone zum Einsatz kommt, wie groß sind die davor/darin Zonen der Bahn? Wenn es in Hand funktioniert, dann ofttmals nur weil Einzelschritt gefahren wird. Prima, aber im Einzelschritt werden alle Positionen mit "fine" angefahren. Die Positionen im Bereich dieser Weltzone dürfen nur fine, z0 und z1 haben (solche Zonenwerte sind schon sportlich und warum ist Rob2 Master?).
    Gruß,
    Konstantin

  • Hallo Konstantin


    Das mit den Zonen ist ein guter input, darüber habe ich bisher nie nachgedacht, tatsächlich wird der Punkt mit z50 angefahren.
    Mir war nicht bewusst das die Schleifzone einen Einfluss auf die Weltzone haben könnte. Werde das bei Gelegenheit ausprobieren.
    Wenn ich das nun richtige verstehe müsste ein erreichen der Schleifzone innerhalb der Weltzone passieren damit diese korrekt Schaltet?


    Wieso ist Rob2 Master:
    Ist Produktbedingt, die Anlage arbeitet mit fünf verschiedenen Produkten die sich komplett unterscheiden (völlig andere Routinen). Beim neusten Produkt musste wegen der viel komplexeren Setzroutine und dem Draht zwischen den Beiden Robotern einfachheitshalber Rob2 zum Master gemacht werden. Ist etwas schwierig zu erklären ohne zu zeigen was der Roboter wirklich macht.
    Bei den alten Produkten ist Rob1 der Master.
    Es war aber für mich einfacher für die neuen Produkte Rob2 als Master zu nehmen. Spielt ja eigentlich auch keine Rolle.


    Gruss Michael

  • Hab gerade an einer anderen Anlage ähnliche Probleme die klar aufzeigen das Weltzonen einfach nicht sauber funktionieren oder ich immer etwas falsch mache.


    Das aktuelle Beispiel hat folgende Weltzone für die Serviceposition:


    VAR shapedata joint_ServiceR1;
    CONST jointtarget jDeltaWZ_Home:=[[2,2,2,2,2,2],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    VAR wzstationary wzServiceR1:=[0];


    ! worldzone of service position
    WZHomeJointDef\Inside,joint_ServiceR1,jServicePos,jDeltaWZ_Home;
    WZDOSet\Stat,wzServiceR1\Inside,joint_ServiceR1,doR1ServicePos,1;


    Deklaration DO:
    Name: doR1ServicePos
    Type of Signal: DigitalOutput
    Assigned to Device: PN_Internal_Anybus
    Access Level: ReadOnly
    Default Value: 0
    Invert Physical Value: No
    Safe Level: DefaultSafeLevel


    Die Serviceposition wird in der Automatik mit folgendem Befehl angefahren:
    MoveAbsJ jServicePos,vHomePos,fine,tGripper1;


    Nach erreichen der Serviceposition geht der Roboter auf Status "Stopped" zeigt aber zu diesem Zeitpunkt an das er in der Zone drin ist (doR1ServicePos=1)
    Wird nun durch die Steuerung Grundstellung angefordert (mit Systemeingang Start At Main, mit allfällig vorhergehendem EStop-Reset und MotorOn) Started der Roboter seinen Task und siehe da, als erstes wird der Status der Weltzone auf 0 gesetzt. Das soll mir mal bitte einer erklären (Zusammenhang zu default Value der Deklaration?). Der Roboter hat nicht einen MoveBefehl gekriegt, hat sich nicht bewegt aber der Weltzonen status ändert sich auf 0...
    Entbehrt meinerer Meinung nach jeglicher Logik.
    Kann mir gut vorstellen das beide meine Fälle aus dem selben Grund auftreten.


    IRB1200 mit Robotware 6.03.02

    Einmal editiert, zuletzt von MBichsel ()

  • Hallo!
    Ist bei dir die Weltzone auch beim Power On definiert??
    Was ist wenn du statt 2 die werte bissl erhöhst?
    Habe mal deine Funktion getestet!
    Hast du beim PZ-Main signal zürücksetzen vielleicht?
    Kann sein das dein signal deswegen zürückgesetzt wird!

    Einmal editiert, zuletzt von padostms ()

  • Hallo
    Die statischen Weltzonen werden über PowerOn Event-Routinen initialisiert.
    2° Abweichung sollte mehr als gross genug sein. Ausserdem habe ich die selben Probleme auch bei WZBoxDef zonen die deutlich grösser sind. Die Anmerkung bezüglich der Schleifzonen kann ich auch aussliessen als Ursache für mein Problem, da dass auch passiert wenn die Punkte mit fine abgefahren werden. Schliesse aber nicht aus das die Schleifzone relevatn sein kann für den Weltzonen status, ist nur in meinem Fall nicht die Ursache.
    Verstehe nicht was du meinst mit "PZ-Main Signal zurücksetzen"
    Die Signale der Weltzonen sind deklariert als Internal/"Read Only" und können nur vom System verändert werden.
    Wenn ich es recht im Kopf habe kann man die nicht per roboterprogramm zurücksezten (zumindest bei read only! Müsste ich ausprobieren, mache ich aber sicher nicht ausser das ist eine Konfigurationsfrage in der Deklaration die ich übersehen habe).

  • Hallo!
    Sorry stimmt des ist Read Only und wird nicht so zürücksetzbar!
    Habe hier meine Weltzone hier,schau mal das an.
    !----------------------------------------------------------------------
    ! Ereignisroutine Weltzone initialisieren
    !----------------------------------------------------------------------
    PROC Netz_ein()
    WZHomeJointDef\Inside,joint_AB,pAb,jDeltaWZ_AB;
    WZDOSet\Stat,wzABR1\Inside,joint_HomeR1,doRobinAB,1;


    ! Ende
    ENDPROC
    ! Weltzonendaten für Überwachung Roboter im Arbeitsbereich
    VAR shapedata joint_AB;
    CONST jointtarget jDeltaWZ_AB:=[[50,20,10,10,50,10],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    VAR wzstationary wzABR1:=[0];
    ENDMODULE

  • Bezüglich meiner RW6.03 Anlage, konnnte ich die Ursache zufällig ausfindig machen.
    In dem Projekt war der der Read Only DO der Weltzone durch überlappung mit einem GO, was Robotstudio leider nicht als Doppelbelegung anzeigt, beim Schreiben des GO zerstört worden.
    -> Sollte als Doppelbelegung angezeigt werden, zumindest mit einer Warnung, muss ja nicht gleich ein Fehler sein, aber dann sieht man das auch gleich.
    -> Schreiben eines Read Only Signals aus dem Rapid Task sollte nicht möglich sein und zu Fehler führen.
    Beides bei ABB platziert, warte auf feedback.
    Programm des ersten Post überprüft, da ist das sicher nicht der Fall, hab also immernoch eine Anlage die Probleme mit den Weltzonen macht.

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