TIA Daten aus Array in unterschiedliche DBs "kopieren"

GuentherA.

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

ich habe bei einer S7 1500 mit TIA v16 folgendes Problem:

Über eine TCP Verbindung erhalte ich unterschiedliche Telegramme. Die Länge der Telegramme ist immer gleich, auch die ersten 4 Byte. Diese enthalten immer eine Telegramm Nummer (ersten 2 Byte) und eine Länge (zweiten 2 Byte). Anschließend folgt ein Array of Byte mit ~2500 Einträgen. Dies sind dann die Nutzdaten. Dies ist auch der Aufbau des "Empfangs DB". Ich muss jetzt im nächsten Schritt die Nutzdaten, abhängig von der übertragenen Telegramm ID in einen von 3 DBs kopieren/verschieben, in welchem ich dann die empfangenen Daten weiter verarbeite. Mein Problem ist nun, dass diese 3 DBs natürlich völlig unterschiedlich sind, sowohl im Aufbau als auch im Inhalt.

Die - soweit ich das gefunden habe - einfachste Lösung wäre mit deserialize. Da habe ich nur das Problem dass ich ja keine Länge angeben kann. Und ich finde nichts dazu, was die CPU dann mit den Daten macht, die "zu viel sind"? Denn ich kopiere ja dann mit diesem Vorgang alle Bytes aus meinem Empfangspuffer (~2000) auf einen DB der eine Größe von ca. 60-200Byte hat. Was passiert dann mit den Nulln aus Byte 201 - 2000 aus dem Empfangspuffer? Überschreibt mir da die CPU die nachfolgenden Speicherbereiche?

Ich hoffe jemand von Euch hat einen guten Vorschlag und danke jetzt schon mal für Eure Unterstützung.

Danke und LG
Günther
 
Moin GuentherA.,

tatsächlich habe ich die gleiche Anforderung.
Dazu habe ich mir einen Baustein "gebaut", der "Serialize" und "Deserialize" enthält. Mit folgenden Formalparametern:
- InOut 'source' - Variant
- InOut 'target' - Variant

Zur Übergabe von Serialize an Deserialize hat ich eine temporäre Variable Array[0..5999] of Byte erstellt. Das hat mir bisher immer ausgereicht.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo MFreiberger & Danke für die Antwort,

ja den Gedanken in der Art hatte ich auch, aber es bleibt das Thema, wie gehst du dann weiter mit den Daten um? Du hast nun die Daten in einem Array mit 6000 Bytes stehen, die Daten werden mit deserialize über eine Struktur gelegt die beispielsweise nur 60Byte lang ist. Was geschieht mit den 5940 Byte an Nullen die da noch stehen? Überschreib ich mir damit nicht irgendwelche Speicherbereiche?
 
Zurück
Oben