Step 7 Struktur und externer Pointer zusammenführen

EPaulo

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

ich habe einen FB erstellt den ich zum senden von Telegrammen verwenden möchte.
Soweit funktioniert dieser jetzt und wir haben den Telegrammkopf definiert und als Stuct im STAT hinterlegt.
Nun ist das Ziel das man später an den FB 2 Angaben macht. 1x einen Pointer auf die zu senden Daten und 1x die angabe der Datenlänger der zu senden Daten in BYTEs.
Das Problem das ich jetzt habe ist wie setze ich jetzt die Kopfdaten meines Telegramms und die extern Daten zu 1Satz zusammen das ich dem Telegramm Baustein dann nur noch 1 Pointer geben muss mit Länge x.

Als Beispiel.
Mein Telegrammkopf besteht aktuell aus 68 Byte, und extern wird mir ein Pointer mit zu senden Daten angelegt mit 14BYTE
Dann möchte ich nun meine STRUCT aus dem STAT kopieren , den Externen Datensatz kopieren und an die STRUCT anhängen und anschließenden eine Pointer auf diese Daten machen mit einer länge von 82BYTE.

Hat jemand eine Idee wie ich das umsetzten könnte?

Danke im Voraus
 
das ich dem Telegramm Baustein dann nur noch 1 Pointer geben muss mit Länge x
Du meinst Dein Telegrammbaustein benötigt einen ANY? (Weil ein Pointer, der auch eine Längenangabe enthält, ist ein ANY.)

1) mit BLKMOV die 2 Datenbereiche hintereinander zusammenkopieren, dazu für DSTBLK aus dem Zielpointer und der Länge einen ANY basteln.
2) für den Telegrammbaustein einen ANY basteln aus dem Zielpointer und der Gesamtlänge

Zum Aufbau des ANY siehe die Step7-Hilfe und/oder hier die FAQ

Wie immer die essentiellen Grundangaben: Für welche CPU soll das Programm sein? Mit welchem Step7 programmierst Du? Darf auch SCL verwendet werden?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und danke schon mal für die Unterstützung.
Im Einsatz ist eine S7319F mit Step7 V5.5 es darf kein SCL verwendet werden.

Aktuell habe ich im STAT eine Struct mit dem Namen SEND_DATA die eine Gesamtlänge von 68 byte hat.
Ich könnte den SEND DATA nun mit einem ARRAY OF BYTE 1..100 versehen. Und mit dem BLKMOV die Daten einfach in BYTE 69 Schieben.
Bin dann aber begrenz mit der Große des ARRAY das ich anlege. Und ich weiß nicht ob es zu Problemen Kommt wenn meine Datenquelle aus WORD; DWORT, INT, DINT usw. besteht und ich alles in BYTEs schiebe.

Die Frage die sich mir stellt ist ob es nicht möglich ist das ganze Temporär im AR zu machen?
Also ich kopiere die meine SEND_DATA in ein AR und die externen Daten in ein AR und setzte diese zusammen und mache dann ein Pointer auf den AR. Wäre sowas machbar oder zu kompliziert?

Danke im Voraus
Edgar
 
Zurück
Oben