S4C+ - Ausgangszuweisung wird ignoriert

  • Hallo zusammen,


    ich kämpfe gerade mit einem komischen Phänomen an einer S4C+ Steuerung.


    Es handelt sich um einen Entnahmeroboter einer Presse, der das Teil aus der Presse holt und auf ein Band ablegt.
    Die Teile werden mittels Sauger und Vakuumventil aufgenommen und abgeblasen.
    Nun kommt es unter bestimmten Umständen vor, daß das Umschalten auf Saugen nach dem Abblasbefehl nicht ausgeführt wird
    Roboter bewegt sich in dieser Schleife :



    Das Abblasen wird über Trigger und einer Traproutine ausgeführt (trigAbblasen) :


    Im regulären Ablauf kommt es nach dem Ablegen auf dem Band zu Verzögerungen, weil der Roboter kurz vor der Presse warten muss.
    Dann funktioniert alles wie gewollt.
    Ist dies aber nicht der Fall und der Roboter kann sofort einfahren (Abfrage in der 4. Zeile der Schleife), dann werden die Befehle im nachfolgenden Unterprogramm "Vakuum" komplett ignoriert.


    Zitat

    Reset doBlasenAus_KA1;
    WaitDO doBlasenAus_KA1,0;
    Set doVakuum_KA1;


    Selbst das nachträglich eingefügte "WaitDO" scheint ihn nicht zu kümmern. Das Programm bleibt an dieser Stelle nicht stehen aber Ausgang Vakuum_KA1 wird nicht gesetzt.


    Verringere ich die Programmgeschwindigkeit, dann wird kurz nach dem Abblasen sofort umgeschaltet.
    Das bedeutet, daß trotz 3 Bewegungsinstruktionen der Zeigervorlauf so weit ist, daß der Trigger und die "Vakuum" Routine warscheinlich gleichzeitig abgearbeitet werden.


    Ich zerbreche mir gerade den Kopf, wie das möglich sein kann bzw. wie kann ich das lösen, ohne einen Genauhalt vor "Vakuum"programmieren zu müssen, um den Vorlauf aufzuhalten.


    Hat von euch schon mal jemand das gleiche Problem gehabt ?


    Würde mich über eine Antwort sehr freuen.


    Gruß Maddin

    Einmal editiert, zuletzt von maddin ()

  • ANZEIGE
  • Man müsste mal deine Funktion TestFreigEntlad(pWarte_EntLaden) sehen.
    Was wird da abgefragt. Ist diese Bedingung nicht erfüllt sprint dein Zeiger aus dem Programm. Was dein Satz, Roboter wartet nicht und arbeitet keine Programmteile mehr ab, erklären würde. Und das scheint wohl zu passieren.


    Mich wundert nur die Bezeichnung der Funktion. Weil so wie sie jetzt ist, müsste ein TRUE geliefert werden, wenn man nicht auf die Presse wartet und sofort reinfährt. Und dann wird alles abgearbeitet.
    Wird keine Freigabe geliefert, dann springt er aus dem Programm. Wobei die Frage ist, wieso sollte er aus dem Programm springen.

  • Hallo Dos 6.22,


    anbei die Funktion. Rückmeldung "FALSE" nur im Falle eines Zyklusstops bei Zutrittanforderung an die Zelle, was aber nicht passiert.


    Ich habe auch schon testweise den Pulse in der TrapAbblasen ersetzt durch SetDO und in der Funktion die rot markierten Befehle eingefügt :



    Ergebnis : doBlasenAus_KA1 und doBlasenAus_KA2 blieben auf 1, obwohl Programmzeiger auf blau markierter Linie stand.
    Die Zeilen wurden definitiv abgearbeitet, aber nicht ausgeführt.
    Genauso passiert es mit den Befehlen im nachfolgenden "Vakuum" Unterprogramm.
    Reduziere ich die Geschwindigkeit von 100 % auf 25 %, werden die o.g. Ausgänge zum Abblasen zwar auf 0 gesetzt, aber gleich unmittelbar nach dem Einschalten der Ausgänge durch die Trap Routine.
    Sprich : bei langsamer Geschwindigkeit funktioniert es, aber die Befehle werden zu früh ausgeführt, bei 100 Geschwindigkeit funktioniert es nicht.


    Ich weiß nicht, warum sich die Steuerung so verhält.


    Gruß Maddin

  • Meiner Meinung nach sollte man den trigAbblasen komplett weglassen und an der Stelle ganz normal die Ausgänge setzen können.
    Ist doch sowieso ein Genauhalt an der Stelle. Dann sollte das Problem weg sein. Allerdings auf alle Fälle den Pulse durch Set/Reset ersetzen,
    denn wenn die Bewegung vom Ablegen bis zum Reinfahren weniger als 1.5 sek dauert hast Du wieder ein Problem.


    Abgesehen davon könnten auch noch irgend welche wilden Querverknüpfungen in der EIO.cfg geschalten sein, die da reinspucken.

  • Hallo,


    vielen Dank erst mal für eure Antworten...


    Der Trigger zum Abblasen ist beabsichtigt. Der Triggerzeitpunkt kann über Eingabe in der Hintergrundtask verschoben werden (während des Automatikbetriebs), um die Luftträgheit zu kompensieren.
    Ablegeposition ist nicht immer Genauhalt. Wir haben an die 100 Teilprogramme.


    Diesen werde ich nicht ändern.


    Einzige Lösung, die mir dazu einfällt, wäre ein Genauhalt an der 1. Position der Schleife (vor der Funktion), um den Vorlauf aufzuhalten.


    Ich verstehe aber nicht, was da vor sich geht. Ist der Programmvorlauf schon so weit, daß die Unterprogramme "Vakuum" sogar vor dem Trigger/der Traproutine
    bearbeitet werden ? Warum sonst werden die Ausgänge nicht geschaltet?


    Ich würde ja nichts sagen, wenn nur eine Bewegungsinstruktion dazwischen wäre, aber 3 ? In der Dokumentation ist eigentlich sehr gut beschrieben, wann Ausgänge bei überschliffenen Bahnen geschaltet werden. Sollte so eigentlich nicht passieren.
    Liegt wohl an dem Trigger.


    Wenn ich mir vorstelle, daß das System einfach mal so unter gewissen Umständen Ausgänge einfach nicht schaltet, dann wird mir Angst und Bange.....


    Gruß Maddin

  • Die Ausgänge werde sicher geschaltet, aber nur so schnell, dass man es nicht mitbekommt. Ich denkemal, dass es ein Fehler ist, einmal im Programm Ausgänge per Trigger zu setzen, und dann per normalen Vorlaufzeiger sie wieder zurück zu setzen.
    Würde das zurücksetzen dann auch Triggerabhängig machen. Sonst kann es immerwieder zu differenzen zwischen Vorlaufzeiger und deinem Trigger kommen. Der Trigger wird ja auch wie ein Interrupter behandet (meine ich noch in erinnerung zu haben). Das bedeutet, die Priotität kann je nach ausgeführten Aktionen des Roboters varieren.


    Den Bock wirst du wohl nur wegbekommen, wenn du das setzen und rücksetzen nochmal neu überdenkst. Und es dann neu programmierst.

  • Die Anlage wurde nicht von mir programmiert, sie läuft nun schon seit 11 Jahren.


    Manchmal unglaublich wie lange manche Fehler vor sich hinschlummern.


    Ich werde das Ausschalten auch Triggern, ich muss dazu eben die nun an die 100 Teilprogramme alle abändern.


    Ich suchte daher eine Lösung in den Unterprogrammen.


    Gruß Maddin

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