Aktualpositionen auf Profinet-Schnittstelle legen

  • Hallo in die Runde,


    der Kunde möchte sich gern die aktuellen Achspositionen des Robis auf dem Anlagen-HMI anzeigen lassen.
    Meine Idee: via sps.sub auf die Profinet-Schnittstelle, als INT in die Siemens-SPS und dort weiterverarbeiten.


    Meine Frage: Wie rufe ich in der sps.sub die Positionsvariablen auf?

  • Schritt für Schritt zum Roboterprofi!
  • Nochmal nachgefragt:


    Kann man die einzelnen Achspositionen in der config.dat einem DINT-Ausgang zuweisen?


    z.B. so: $out[32] to $out[63] = $axis_act.a1


    Oder gibt es da noch eine elegantere Variante? In der sub.sps komme ich damit nicht weiter. (Fehlerhafte Syntax...)


  • Hi Loipe,


    deine Antwort hat mir bisher gut geholfen. Nur musste ich heute feststellen, dass ich mit deinen settings nur ganzzahlige Achswerte bekomme:
    Bsp.: 1B00_0000 --> Wodurch 27° Für die Achse 1 dargestellt werden, was auch bisher korrekt war, nur für meinen Anwendungsfall etwas zu ungenau.


    Im KCP werden die Achswerte mit 2 Nachkommastellen dargestellt. Wieso sehe ich die nicht? Und wenn nur das erste Byte die Werte enthält... wieso deklarierst du 32 bit für eine Real?


    Habe ich hier irgendwo eine Einstellung übersehen?


    Über Antworten freue ich mich!


    Grüße
    Year-One

  • Guten Morgen,


    REALs über die Schnittstelle mag der Kuka nicht. Auch wenn du 4 Byte deklarierst, gibt ers abgeschnitten als DINT aus, nicht als REAL.


    Du kannst versuchen die Position*100 auf eine DINT-Variable (360*100 ist zu groß für INT) zu legen und die dann auszugeben - auf der anderen Seite dann durch 100 Teilen nicht vergessen ;)


    Gruß,
    Robotermann

  • Guten Morgen,


    @Jahr_Eins


    Hier mein Beispiel in der sub.sps:


    goAxisActA1=$axis_act.a1*1000
    usw....
    Auf der Schnittstelle die Variable immer als DINT deklarieren.


    In der Steuerung dann folgendes:


    L #RobInterface.rd_KUKA.PosActualA1
    TAD
    DTR
    L 1.000000e+003
    /R
    T #ActPosA1


    Damit erhälst Du wunderbar die Achsposistion mit 3 Nachkommastellen.


  • Das DInt deklariere ich in der SPS richtig? In der Kuka geb ich ja nur 32 bit als "Signal" vor. Oder steh ich aufm Schlauch?
    Unglücklicherweise sitzt eine S7-1200 dahinter... da ist nichts mit AWL.... :(

  • Die darstellung mit fester kommastelle ist fuer die mesten faelle ok.


    Z.B bei einer endlos drehenden achse, kann aber nicht der komplette zahlenbereich dargestellt werden.


    S7 erwartet darstellung als ieee 754.
    Muss halt programmiert werden.


    Wenn plc auf dem kuka lauft,waere es dort einfacher moeglich.



    Gesendet von meinem HTC_Butterfly_s_901s mit Tapatalk

  • Das DInt deklariere ich in der SPS richtig? In der Kuka geb ich ja nur 32 bit als "Signal" vor. Oder steh ich aufm Schlauch?
    Unglücklicherweise sitzt eine S7-1200 dahinter... da ist nichts mit AWL.... :(


    Ja. In der $config.dat "SIGNAL $OUT[ x ] TO $OUT[ x+32 ]". Und dann mal auf der SPS schauen was ankommt, ob noch irgendwas getauscht werden muss (komme da auch immer durcheinander welche SPS mit welchem Indianer verheiratet ist)


    Gruß,
    Roboterman

  • Danke für die schnelle Hilfe! Das hat heute wie am Schnürchen geklappt!


    Musste die Bytes noch drehen, aber mit SCL ein Klacks! ;)
    Kann mir hierzu jemand Literatur empfehlen? Oder gibt es da ein gutes Taschenbuch mit den ganzen Funktionen? Die muss man ja auch erstmal alle finden ;)


    Habe die TCP Daten schon mit 3 Nachkommastellen, wie ich es gewünscht hatte. Wieso schreibt das Kuka nicht in die Dokumentation?


    Hätte direkt die nächste Frage..... obwohl es der falsche Thread dazu ist, aber bei der Kompetenz hier ;)


    Ich möchte nun einen Würfel abfahren und die Eckpunkte per Profinet vorgeben. Wie kann ich denn Koordinaten per Profinet einspielen? bzw. diese dann im Programm einfügen.
    Die Koordinaten seh ich ja eigentlich nicht im Programm...... Über Hilfe freue ich mich wieder einmal sehr!


    Gruß
    Year-One

  • Guten Morgen,


    Im Programm XPEckpunkt.x = inX und mit Y und Z (oder was du so brauchst) entsprechend. Punktname nehmen, der beim Teachen vergeben wurde und ein X davor, dann passt das schon.


    Gruß,
    Robotermann

  • Habe die TCP Daten schon mit 3 Nachkommastellen, wie ich es gewünscht hatte. Wieso schreibt das Kuka nicht in die Dokumentation?


    Hallo nochmal,


    Ich habs selber nicht ausprobiert, aber bei uns im Haus gibts nur schlechte Erfahrungen mit "aktuelle Position auf die Schnittstelle legen". Achsspezifisch ($axis_act) funktioniert, aber aktuelle Koordinaten ($pos_act)über den sps.sub ausgeben führt wohl oft dazu, dass der sps.sub anhält. Weil die Variablen plötzlich doch nicht initialisiert sind oder aus welchen Gründen auch immer.


    Hat da jemand andere Erfahrungen gemacht?


    Gruß,
    Robotermann

  • Ich möchte nun einen Würfel abfahren und die Eckpunkte per Profinet vorgeben. Wie kann ich denn Koordinaten per Profinet einspielen? bzw. diese dann im Programm einfügen.
    Die Koordinaten seh ich ja eigentlich nicht im Programm...... Über Hilfe freue ich mich wieder einmal sehr!


    Gruß
    Year-One


    Ich würde nicht die Koordinaten vorgeben. Die hängen ja unmittelbar von Deiner Base und dem TCP ab.


    Mein Vorschlag:


    Der Würfel ist ja fix vermessen.


    Teache einen Punkt P1 an einer Ecke.
    Definiere 3 DINT-Eingänge (X, Y und Z).
    Auf diese Eingänge schreibst Du in der SPS die Kantenlänge des Würfels (Byte-Tausch nicht vergessen ;) ).
    In der config.dat werden die Eingangsvariablen festen REAL-Werten zugewiesen.
    Im Programm addierst Du je nach Fahrrichtung die REAL-Variable (=Kantenlänge) zu den einzelnen Koordinatenwerten (xp1.x, xp1.y, xp1.z)
    hinzu und berechnest damit den nächsten Eckpunkt.


    Huch, es ist ja ein Würfel. Da reicht ein DINT-Eingang... ;)
    Bei weiterer Hilfe bitte PN


    Robotermann


    Also schlechte Erfahrungen habe ich damit noch nicht gemacht. Es ist ja eigentlich nichts anderes als "Lade-Transferiere". Wir benötigen diese Aktualwerte allerdings nur zum Anschauen. Weiterverarbeiten und zurückgeben würde ich sie auch nicht.

    Einmal editiert, zuletzt von güttl ()

  • Hi,


    vielen Dank für die weiteren Hinweise, die werde ich demnächst prüfen. Leider nicht mehr vor Ort.


    Der Würfel soll übrigens variabel dimensioniert werden können. BASe und TCP sind aber immer die selben ;)


    Solangsam kommt Licht ins dunkle, danke an alle für die hilfreichen Infos!


    Grüße
    Year-One

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