String von SPS übertragen

  • Hi!

    ich müsste einen String mit einem Dateinamen von einer via Profinet verbundenen SPS an den Roboter mit R30iB-Controller übertragen, um eine Datei auf einem Kamerasystem zu laden. Geht das evtl. über entsprechend viele Bits auf GI?

    Zur Not benenne ich die zu ladenden Dateien auf numerische Zeichen um. Da diese Dateien aber werkstückbasiert sind und den Werkstücknamen tragen wäre ein String eleganter.


    LG
    Hans Albrecht

  • AD
  • Hi Hans,


    ich hatte es auch schon versucht.


    GI geht, aber benötigts viel Zeit wegen dem Handshake (Seriel). Den ganzen Block mit vielen GI E/A´s geht auch aber benötigt etliche Input Byte`s. Wie groß ist die Datei in Bytes, wo du senden möchtest?


    Vielleicht ist es auch über die RS232 (ziemlich alt) möglich?

    :) Ich wünsche euch einen schönen Tag und viel Erfolg ;)


    Gruss Jörg

  • hi,

    ich versuche nicht die ganze Datei zu laden, sondern nur den Dateinamen als String. Für jedes Bauteil gibts eine Profildatei auf dem Linux-Rechner des Kamerasystems, das über eine Socket Message API geladen werden muss. Dafür gibts eine Routine in Karel, die einen String aus einem String Register entgegennimmt.

    Die SPS hätte den Bauteilnamen parat. Wenn ich diesen irgendwie an das Kamerasystem weiterreichen könnte, müsste ich mir kein dictionary anlegen mit Bauteil Soundso hat die Nummer 15 usw.

    LG

  • Wenn es über PROFINET gehen soll, dann kannst du dir eine ASCII-Tabelle in z.B. einem separaten Programm anlegen (nennen wir es mal INT2CHAR, BYTE2CHAR, oder wie auch immer. Spielt ja erstmal keine Rolle). Dann kannst du jedes einzelne Zeichen via 8-Bit GI einlesen und den Wert in das entsprechende Zeichen gemäß ASCII-Tabelle konvertieren und dir so deinen String zusammenbauen.


    Wenn du dafür nur einen GI nimmst und viele Zeichen hast, dann dauert das Ganze mit dem entsprechenden Handshake natürlich vergleichsweise lange. Wenn du genügend Platz auf der Schnittstelle hast, dann kannst du mehrere GIs benutzen und diese z.B. in einer Schleife nacheinander einlesen. Dafür solltest du im besten Fall aber wissen, wie viele Zeichen du erwartest oder du baust dir dafür halt eine entsprechende Logik.


    Wenn ein Teil deines Strings immer gleich ist, dann kannst du ein Stringregister damit vorbelegen. Dann musst du nur noch die Zeichen übertragen, welche sich tatsächlich unterscheiden.


    Aber egal wie du es machst, einen sauberen Handshake würde ich dir dafür trotzdem empfehlen.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now