-> Hier kostenlos registrieren
Hallo Ihr, die Ahnung habt,
hab schon mehrmals eine Kommunikation realisiert, bei der meine SPS (CPU315-2DP mit CP343-1 Lean) mit einem PC über TCP-Verbindung Telegramme austauscht. Da waren die Telegramme aber immer gleich lang und ich konnt sie schön nacheinander in den gleichen Datenbereich im DB kopieren.
Jetzt stellt sich aber der PC Fuzie quer und will die Telegrammlängen nicht mehr anpassen. D.h. es kommen jetzt Telegramme mit Längen zwischen 10 Byte und 37 Byte bei mir an.
Prinzipiell ist das Telegramm so aufgebaut: Header mit 8 Byte--> Seperator--> Information--> CR LF (Jedes Zeichen 1 Byte)
Bsp.:
I N H E A D E R > 1 - 0 0 - 1 1 CR LF (insg. 18 Byte)
Mein Problem ist jetzt, dass der Receive-Baustein FC6 einen gewissen Datenbereich für die empfangenen Daten verlangt, der ja logischer Weise so groß sein muss, dass das längste Telegramm darin gespeichert werden kann. Kommt aber ein Telegramm, dass kürzer ist, verschiebt es die Zeichen um die Bytes im DB wie das Telegramm kürzer ist. D.h. meine Bytes im DB in denen ich die Informationen erwarte sind nicht mehr da, wo ich sie erwarte.
Gibt es eine Möglichkeit (so ne Art Schieberegister) die Zeichen des Telegramms vom Header an zu lesen und dann in einen weiteren DB zu kopieren, indem die Telegrammzeichen dann wieder an der Stelle sind, wo ich sie erwarte?
Vielen Dank im Voraus für Eure Bemühungen!!
Gruß
3DA
hab schon mehrmals eine Kommunikation realisiert, bei der meine SPS (CPU315-2DP mit CP343-1 Lean) mit einem PC über TCP-Verbindung Telegramme austauscht. Da waren die Telegramme aber immer gleich lang und ich konnt sie schön nacheinander in den gleichen Datenbereich im DB kopieren.
Jetzt stellt sich aber der PC Fuzie quer und will die Telegrammlängen nicht mehr anpassen. D.h. es kommen jetzt Telegramme mit Längen zwischen 10 Byte und 37 Byte bei mir an.
Prinzipiell ist das Telegramm so aufgebaut: Header mit 8 Byte--> Seperator--> Information--> CR LF (Jedes Zeichen 1 Byte)
Bsp.:
I N H E A D E R > 1 - 0 0 - 1 1 CR LF (insg. 18 Byte)
Mein Problem ist jetzt, dass der Receive-Baustein FC6 einen gewissen Datenbereich für die empfangenen Daten verlangt, der ja logischer Weise so groß sein muss, dass das längste Telegramm darin gespeichert werden kann. Kommt aber ein Telegramm, dass kürzer ist, verschiebt es die Zeichen um die Bytes im DB wie das Telegramm kürzer ist. D.h. meine Bytes im DB in denen ich die Informationen erwarte sind nicht mehr da, wo ich sie erwarte.
Gibt es eine Möglichkeit (so ne Art Schieberegister) die Zeichen des Telegramms vom Header an zu lesen und dann in einen weiteren DB zu kopieren, indem die Telegrammzeichen dann wieder an der Stelle sind, wo ich sie erwarte?
Vielen Dank im Voraus für Eure Bemühungen!!
Gruß
3DA