TIA SCL einfaches zuweisen von DINT in struct

gerdh

Level-2
Beiträge
107
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo !

Ich hab gerade mal was probiert um einige Bausteine zu vereinfachen

Ich moechte einen DINT in einen Struct mit 32 Bits kopieren und dachte ein

#Struct_mit_bits := #Quell_DINT ;

bei SCatter gehts auch nicht

SCATTER(IN := #Quell_DINT,
OUT => #Struct_mit_Bits);

da ist Scatter in und out rot hinterlegt... die CPU ist eine 1515

Gruss gerd
 
Du kannst nur gleiche Datentypen aufeinander zuweisen.
Willst du deinen DINT in die STRUCT zuweisen so mußt du auf diese eine AT-Sicht erstellen die die STRUCT als DINT interpretiert ... dann geht es ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zuerst: DINT in 32 Bits zerlegen macht selten/wenig Sinn - Du meinst vermutlich ein DWORD?

SCATTER/GATHER brauchen ein BOOL-Array, die gehen nicht mit Struct
{ Nachtrag: ab TIA V15 funktioniert SCATTER/GATHER auch mit "anonymen STRUCT". Allerdings nicht mit DINTs, sondern nur mit *WORD-Datentypen }

Du müsstest z.B. mit Slice-Befehlen die Bits einzeln aus dem DWORD in die Struktur kopieren:
Code:
#Struct_mit_Bits.Bit_0  := #Quell_DWORD.%X0;
..
#Struct_mit_Bits.Bit_31 := #Quell_DWORD.%X31;
oder Dein Struct mit einem DWORD per AT überlagern, falls die Bit-Anordnung im Struct mit den Bits im DWORD übereinstimmt - das geht allerdings nicht mit "wirklich" "optimiertem" Speicher.

Wie sieht Dein Ziel-Struct aus?
Welche TIA-Version verwendest Du? Welche Firmware-Version hat Deine CPU 1515?

Harald
 
Zuletzt bearbeitet:
Zurück
Oben