TIA RDREC - Bytes verschwinden bei der Übertragung?!

Paule79

Level-1
Beiträge
62
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

folgendes Szenario:
Ich lese mit RDREC verschiedene Parameter meines Gerätes aus. Das können z.B. Firmware, Device tag, usw. sein.
Die Parameter sind alle vom Datentyp String.
Es lässt sich alles erkennen, auch die Übertragung an eine HMI funktioniert (String = Zeichenkette), jedoch verschwinden zwei Bytes des Strings und ich hab langsam keine Ahnung mehr was zu tun ist.

Ich habe das Ganze auch in Wireshark überprüft. Im Datenpaket zwischen Controller und Gerät sind die Daten vollständig enthalten.
Wo also verschwinden die Bytes hin? Was mache ich falsch?

Habe euch unten Bilder von TIA und Wireshark angehängt.
Dort habe ich als Beispiel, den Device_Tag = SPS-Forum genannt. Im Webserver des Gerätes sowie in Wireshark und auf dem Gerät selbst wurde er erkannt.
Nur in TIA Portal kommt nur "s-forum" an....

Device_Tag.jpgWireshark_Sps-forum.jpg


Hoffe ihr könnt mir helfen.

Viele Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie hast Du #DeviceTag deklariert - als STRING? Kennst Du den Datentyp STRING (siehe TIA Hilfe), weißt Du daß der 2 Header-Bytes hat (max. Len + akt. Len), welche beim beobachten nicht mit angezeigt werden? Kann es sein, daß Deine Daten gar nicht in einem STRING liegen sondern in einem CHAR-Array?

Harald
 
Danke für eure Antworten.

Howard, ja das ist mir bewusst und sollte auch so richtig sein.

PN/DP danke für die Antwort. Ja die Daten liegen als String vor. das mit den 2 Header-Bytes wusste ich nicht. Gibt es eine Chance das zu umgehen?


Wie würde das mit dem Char-Array funktionieren?
 
Zuletzt bearbeitet:
Ja die Daten liegen als String vor.
Wer sagt das? Wo genau ist das dokumentiert? Was für einen Datensatz genau liest Du da aus?

Wie würde das mit dem Char-Array funktionieren?
Einfach die Deklaration des DeviceTag von STRING zu CHAR-Array ändern. z.B. falls Du deklariert hattest "DeviceTag : STRING[80]" dann ändern zu "DeviceTag : ARRAY [0..81] OF CHAR"

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wer sagt das? Wo genau ist das dokumentiert? Was für einen Datensatz genau liest Du da aus?

Das steht in einem offiziellen Dokument... hier ein Ausschnitt davon.

Slot_Index_List.jpg


Wäre dann möglich einen Datentyp "String-Array" zu verwenden?

Aktuell ist folgendes mein Datentyp:

Datentyp.PNG


Einfach die Deklaration des DeviceTag von STRING zu CHAR-Array ändern. z.B. falls Du deklariert hattest "DeviceTag : STRING[80]" dann ändern zu "DeviceTag : ARRAY [0..81] OF CHAR"

Kurze Verständnisfrage: Was bedeutet "STRING [80]" habe diese bisher immer nur "STRING" genannt.


Danke schon mal im Voraus!
 
Zuletzt bearbeitet:
Das steht in einem offiziellen Dokument... hier ein Ausschnitt davon.

Dort steht, dass dein String 32 Byte groß ist -> ich vermute also er hat 30 Zeichen + die 2 Header-Bytes.

Wäre dann möglich einen Datentyp "String-Array" zu verwenden?

Ein String Array wäre lediglich ein Array bestehend aus mehreren Strings - also nicht zielführend.

Kurze Verständnisfrage: Was bedeutet "STRING [80]" habe diese bisher immer nur "STRING" genannt.
String [80] bedeutet dass dein String 80 Zeichen (+ 2 Header-Bytes) lang ist. Gibst du keine Länge an, so ist der String maximal Lang, also 254 Zeichen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

hab es hinbekommen.
Danke euch beiden für die ausführlichen Antworten.
Mit einem Char-Array hat es funktioniert. So hab ich jedes Byte einzeln ausgelesen.

@ Harald, Ich weiss nicht in wie weit ich das komplette Dokument veröffentlichen darf/kann. Ist ein Firmen-Dokument.
 
Daß es mit CHAR-Array funktioniert verwundert mich nicht - mit CHAR-Array hat man volle Kontrolle über jedes Byte bei der Ansicht/Zerlegung von Zeichenketten, selbst wenn die Zeichenkette tatsächlich ein S7-STRING ist (dann würde man die beiden S7-STRING Header-Bytes sehen). Ob so eine Zeichenkette wirklich ein S7-STRING ist, wird aus Unwissenheit über den speziellen Aufbau des Datentyp STRING gerne nur so dahingeschrieben/behauptet, nur weil die Zeichenkette druckbare ASCII-Zeichen enthält. PS: Oder man meint eigentlich einen VB- oder C-String, die aber die Header-Bytes gar nicht haben, dafür ein Endezeichen (Null-terminiert, ein Byte mit dem Wert 0).

Harald
 
Zuletzt bearbeitet:
Zurück
Oben