Positionsdaten in T1-Modus auslesen

  • Guten Morgen liebe Community,


    für meine Bachelorarbeit muss ich die aktuellen Positionsdaten in eine SPS speichern. Wichtig hierbei ist, dass ich mich im Betriebsmodus T1 des Kuka Roboters (KR6 R1820) befinde. Die Kommunikation zur SPS steht schon, allerdings weiß ich nicht wie ich in T1-Modus die Daten zyklisch abfragen kann.

    Gibt es hier Mittel und Wege das umzusetzen und wenn ja, welche?


    MfG Andreas

    Einmal editiert, zuletzt von AndreasB ()

  • Schritt für Schritt zum Roboterprofi!
  • Hi Andreas,


    in der SPS.sub im Teil der User PLC kannst du die Daten zyklisch senden.


    Beispiel für die X Koordinate:

    Danach musst du ein WORD definieren in der Config.dat ($IN[1] TO $IN[32] giAkt_Pos_X als Beispiel)


    In der SPS.sub schreibst dann:

    IF (VARSTATE("$TOOL")==#INITIALIZED) AND (VARSTATE("$BASE")==#INITIALIZED) AND $T1 THEN
    giAkt_Pos_X = $POS_ACT.X

    giAkt_Pos_Y = $POS_ACT.Y

    giAkt_Pos_Z = $POS_ACT.Z

    giAkt_Pos_A = $POS_ACT.A

    giAkt_Pos_B = $POS_ACT.B

    giAkt_Pos_C = $POS_ACT.C

    ENDIF


    Grüße

  • Hallo Sliwka,


    in meiner config.dat habe ich folgendes eingefügt:

    In der sps.sub habe ich dann unter User Plc diesen Code geschrieben:


    Die Variable "Testigkeiten" lässt am Panel eine LED blinken, um zu sehen ob dies funktioniert. Hierbei das Problem, dass es nach dem Laden teilweise funktioniert und teilweise nichts geschieht und die LED dauerhaft aus bleibt.
    Das orangemarkierte gibt folgende Meldung:

    Woran liegt das? Wenn es an der Variablendeklaration liegt, wie ändere ich das?

    MfG

  • Die Gruppensignale verarbeiten nur Integerwerte. Wenn ich Kommawerte mitschicken will multipliziere ich den Wert * 100 und die SPS teilt durch 100.


    Heißt als Beispiel:


    xAchseOut = $AXIS_MOT.A1 * 100


    Tipp:

    Nach deinen Tests würde ich die WAIT SEC Befehle wieder rausnehmen.

    Sonst füg einen Blinker ein, nutze den zB als Lifebit

    DECL BOOL bBlinker


    ;Blinkermerker


             IF $TIMER[1]>=0 THEN


    $TIMER_STOP[1]=TRUE


    $TIMER[1]=-1000


    bBlinker = NOT bBlinker


    $TIMER_STOP[1]=FALSE


             ENDIF


    Testigkeiten = bBlinker

  • Danke für deinen Tipp Sliwka, ja das werde ich machen. Danke :)

    Ich bin schon mal zufrieden, dass die Werte schon mal halbwegs übereinstimmen und ich wenig Rechenarbeit bei der Verschiebung machen muss. Für die Anzeige am HMI muss aber noch was gemacht werden.


    P.S. nachdem ich deinen Blinkermerker eingefügt habe, kommt die Meldung bBlinker Wert ungütlig auf meinem Panel und die LED ist dauerhaft True

    Einmal editiert, zuletzt von AndreasB ()

  • Aber mal davon abgesehen, wieso bekommt XPosVorgabe keine Kommastellen?

    Ich habe die Variable in der config.dat so deklariert:

    DECL REAL XPosVorgabe


    Und eine weitere Frage, machen die Werte mit 7882 Sinn, weil ich über $Axis_Mot ja eigentlich Gradzahlen auslese

    Einmal editiert, zuletzt von AndreasB ()

  • Laut Datenblatt handelt es sich hierbei um die Sollposition des Roboters oder war das nur ein Schreibfehler?

    --> Du hast Recht, damit kann ich die einzelnen Gradangaben des Roboters untersuchen
    Und einmal für mich wie kann man zwischen Grad und mm unterscheiden?

    Einmal editiert, zuletzt von AndreasB ()

  • Laut Datenblatt handelt es sich hierbei um die Sollposition des Roboters oder war das nur ein Schreibfehler?

    --> Du hast Recht, damit kann ich die einzelnen Gradangaben des Roboters untersuchen
    Und einmal für mich wie kann man zwischen Grad und mm unterscheiden?

    Rotatorische Achsen sind in ° angezeigt und Linear Achsen in mm

  • Ok gut danke. :)
    Dann habe ich nur noch eine andere Frage, gibt es in TIA einen Befehl, der mir die 4 Bytes des Real-Wertes so swappt, dass ich die vernünftigen Werte auf einer HMI ausgeben kann? Am Besten wäre hierbei die Programmiersprache SCL (TIA-Portal V15.1).

    Einmal editiert, zuletzt von AndreasB ()

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