Handshake mit SPS

  • Guten Morgen zusammen,


    Ich bin Neuling im bereich Programmierung mit dem ABB Roboter.

    Habe nun 3 Schulungen bei ABB gemacht, PG2 kommt demnächst noch.


    Jedoch bin ich eben am aufbau einer Programmierung für unsere erste Anlage welche wir eben bauen, aber mir fehlt da ein wenig das Expertenwissen.


    Könnte mir einer von euch verraten wie man einen Handshake zur SPS aufbaut.

    Ich hab das nicht wirklich verstanden und finde im netz dazu irgendwie nichts.


    Gruß

  • Moin FEngelbrecht,


    wie die Bezeichnung schon sagt ist ein Handshake eine Art Signalablauf. Du wartest bspw. auf einen Eingang und setzt zur Bestätigung einen Ausgang.

    Wäre zum Beispiel bei einer Initialisierung der Fall, dort will die SPS dir ein volles Gestell zuführen und du musst dieses nach Anforderung der SPS bestätigen um zu signalisieren das der Roboter diese Aktion erkannt hat.


    In welcher Situation benötigst du diese?

  • ok, wäre ja dann bspw. bei dem warten auf einen neuen Auftrag der Fall. Du definierst ein Signal was der SPS sagt, das der Roboter bereit für einen neuen Auftrag ist. Anschließend bekommst du einen Auftrag von der SPS und signalisierst bspw. mit einem Ausgang "doJobAktiv" der SPS das du diesen ausführst.


    Gruß

  • Wäre nur ein Beispiel für eine von vielen Aktionen die in einen Automatikablauf mit einer übergeordneten Steurerung geschehen. Man sollte sich jedoch vor der Inbetriebnahme ein gemeinsames Konzept mit den Kollegen von der SPS erarbeiten und dieses auch vernünftig dokumentieren.


    Gruß

  • Ja so in der Art, vereinfacht ausgedrückt.

    Es läuft eigentlich immer wie bei einer gewöhnlichen zwischenmenschlichen Konversation.

    Jemand sagt etwas und wartet auf eine entsprechende Reaktion seines Gesprächspartners, eigentlich ganz simpel.


    Man stelle sich nur einem vor man spricht jemanden an und, ohne eine Rückmeldung zu erwarten geht man weiter, und zu allem Überfluss erwartet man an einer anderen Stelle das der Inhalt des gesprochenen die gewünschte Wirkung erzielt ohne eine Rückmeldunug zu erhalten.


    Das wird nicht gut gehen.


    Also Aktion<->Reaktion ist von entscheidender Bedeutung auch bei der Kommunikation mit übergeordneten Steuerungen. ;-)


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Ja, das ist ja die Problematik bei diesen Schulungen.

    Man kann sich ja dabei nur wirklich richtig auf eine Sache konzentrieren, was auch völlig okay ist, die Vermittlung des Umgangs mit dem Gerät und den daraus resultierenden Sicherheitsthematiken.


    Nun kommen Grundlegende steuerungstechnische Themen natürlich dort nicht vor bzw. nur sehr wage angeschnitten da es ja auch unterschiedliche Denkweisen und Philosophien diesbezüglich gibt wie was wie gehandhabt wird (Motto: "Viele Wege führen nach Rom" :D)


    Dafür ist der eigentliche Hersteller ja auch nicht verantwortlich wie du sein Produkt verwendest: ;-)


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • So habe ich das nun Verstanden


    WaitDI SPS_DI_72,1; Hier warte ich auf den Eingang der SPS

    Set SPS_DO_WAMA3Bel; Nach erhalt des Eingangs setze ich den Ausgang

    MoveJ vpWAMA3_20,v1000,z50,tSchmutz\WObj:=wWAMA3;

    MoveL vpWAMA3_10,v1000,z10,tSchmutz\WObj:=wWAMA3;

    MoveL pWAMA3_10,v1000,z0,tSchmutz\WObj:=wWAMA3;

    Reset SPS_DO_WAMA3Bel; nach Abarbeitung resete ich den Ausgang

  • So richtig kann ich das nivht nachvollziehen was der Roboter der SPS damit sagen möchte.

    Du wartrst auf eine Info von der SPS die sagt lege das BT in Pos 3 ab.

    Dann sezzt du sofort den Ausgang das du ihn beladen hast, was ja zu diesem Zeitpunkt nicht stimmt. ;-)

    Meiner Auffassung nach solltest du nach dem Eingang der SPS die Bewegung durchführen, wenn du in der Endposition bis, deinen Ausgang setzen, die Greifer öffnen und darauf warten das der Eingang der SPS abgefallen ist. Und dann erst deinen Ausgang zurücksetzen. Somit weißt du das die SPS verstanden hat das du dieses Teil i Pos 3 abgelegt hast.

    So zumindest wäre meine Vorgehensweise.

    Weiter würde ich der SPS mit eine Ausser Gefahrenvereich Signal mitteilen das sich der Roboter nicht mehr auusserhalb des Bereicehse der Pos 3 befindet. Somit weiß die SPS das der Roboter sich gerade innerhalb der Beladeposition 3 bewegt.


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • ;Vorposition anfahren

    MoveJ vorWAMA3_10,vmax,z200,tSchmutz\WObj:=wWAMA3;

    ;

    ;Hier warten auf Freigabe der SPS für Einfahren.
    WaitDI SPS_DI_FreigabeWAMA,1;

    Resset SPS_DO_AusBereichWAMA; Stationsfreigaben imm Stromausfallsicher, also wenn in der Station, dann Signal auf 0

    ;

    MoveJ inWAMA3_10,vmax,z50,tSchmutz\WObj:=wWAMA3;

    MoveL inWAMA3_20,v500,z10,tSchmutz\WObj:=wWAMA3;

    MoveL posWAMA3,v100,fine,tSchmutz\WObj:=wWAMA3;

    ;
    ;Diese drei Zeilen werden benötigt, wenn die SPS das Teil in der Station spannen muss, bzw. speichern soll, dass ein Bauteil beladen wurde
    Set SPS_DO_InPosWAMA3Bel;

    WaitDI SPS_DI_AusfahrWAMA,1

    Reset SPS_DO_InPosWAMA3Bel;

    ;

    MoveL inWAMA3_20,v100,z10,tSchmutz\WObj:=wWAMA3;

    MoveL inWAMA3_10,v500,z50,tSchmutz\WObj:=wWAMA3;

    MoveJ vorWAMA3_10,vmax,fine,tSchmutz\WObj:=wWAMA3; Hier Finepunkt, wegen Vorlaufzeiger oder Freigabemöglichkeit 2

    ;
    Set SPS_DO_AusBereichWAMA3; SPS macht jetztTüren der WAMA zu und fertig


    Freigabemöglichkeit 2:
    MoveJDO vorWAMA3_10,v1000,z200,tSchmutz\WObj:=wWAMA3, Set SPS_DO_AusBereichWAMA3, 1;


    Das Freigabesignal wird erst gesetzt, wenn der Roboter die Mitte der Zonenbahn erreicht hat. So kann man dann ohne Genauhalt On-Fly die Station freigeben.


    Zur Erklärung:

    Du hast 2 Programmzeiger. Der Vorlaufzeiger, also der Pfeil, und den Bewegungszeiger, das Robotersymbol.
    Der Vorlaufzeiger wird benötigt, um die Bahn für Überschleifbewegungen vorrauszuberechnen und läuft daher dem Roboter voraus.
    Dieser arbeitet aber auch alle anderen Instruktionen ab, wird also die Station freigeben, obwohl der Roboter noch in der Station ist und es knallt.
    Fine-Punkte, halten den Vorlaufzeiger an und das Programm läuft erst weiter, wenn der Roboter die Position erreicht hat.
    So ein Fine-Punkt, also Genauhalt, kostet aber Taktzeit.
    Deshalb musst Du die Freigabe Triggern. Dafür gibt es MoveJDO, MoveLDO, MoveCDO. Oder die Trigger-Funktion.