ANY Paramater aus staischem Bereich übergeben

steinche

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

ich habe hier jetzt schon einige Zeit gestöbert und gelesen und weiß jetzt auch im groben, wie sich der Parameter ANY und POINTER zusammensetzen, aber bei meinem Problem hilft mit das nicht weiter.
Im statischen Bereich eines FBs habe ich eine Struktur, die wie folgt aufgebaut ist.

Code:
SD1   BYTE
ADR   BYTE
TYP   BYTE
PA1   INT
PA2   INT
PA3   INT
BCC   BYTE

Der Block stellt das Sendetelegramm des MOVILINK Protokolls dar, dass ich via RS485 und der SFC217 von VIPA an einen SEW Umrichter senden möchte. Nun ist es leider so, dass die S7 den INT Wert PA1 ab dem Adressbyte 4 zuordnert. Ebenso belegt das Byte BCC ein komplettes Wort im Speicherbereich. Wie mache ich es, dass quasi alle Bytes hintereinander übertragen werden, also 10 Byte und nicht wie oben 12.
Hoffentlich habe ich mich einigermasen verständlich ausgedrückt.

Achso, programmiert wird Step7 V5.4

Viele Grüße
Eric
 
Das wird auf direktem Wege nicht gehen, da du die Padding- (Füll-) Bytes in deiner Struktur nicht wegbekommst (selbst in C bekommt man diese Füllbytes nur mit entsprechenden Compiler Pragmas weg).

Ich würde mir einen kleinen FC machen welcher als Eingangsparameter die Struktur hat, und als Ausgangsparameter ein "Array of Byte" mit der Anzahl 10. In diesem FC werden dann die Bytes passend zusammengeschoben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würd es auch so wie Thomas machen und alles zusammenschieben. Alternativ zum FC würde ich es über ein Temporäre Variablen im Baustein selbst machen.


L SD1
T Struct_tmp.Byte1
L ADR
T Struct_tmp.Byte2
L TYP
T Struct_tmp.Byte3
L PA1
T Struct_tmp.Byte4
L PA2
T Struct_tmp.Byte6

...

call sfc15
...
RECORD := Struct_tmp
...
 
Zuletzt bearbeitet:
Zurück
Oben