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

  • ANZEIGE
  • 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.

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