Step 7 [SIMATIC MANAGER] 4 bytes zu einem Dword zusammenfassen

Moin sargan26,

eigentlich ist es im Simativ Manager noch einfacher.

Hier wird ja mit Adressen gearbeitet.

Also wenn Du das Word MW4 hast, einfach auf die Bitadresse (4.7 .. 4.0; 5.7 .. 5.0) zugreifen.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Steigender Schwierigkeit:
a. SFC20 BLKMOV
b. Quick-and-dirty, mit Merkeradressen Bytes und Dwords symbolisch definieren, mit überlappender Adressen. Z.B. MB4+MB5+MB6+MB7 = MD4. Wenn die Daten nicht Merkeradressen habe, dann die Merkervariabeln als Zwischenspeicher verwenden.
c. In SCL gibt es den AT-Sicht. Damit kann man dieselbe Daten mehrfach "betrachten", zuerst als Bytes, danach als ein DWord.
 
Achtung, das Zusammenbasteln der Bytes nicht über globale Schmiermerker (egal ob Merker oder DB) machen, sondern über lokalen TEMP-Speicher oder am besten über die AKKUs verodern. Die Schmiermerker-Variante ist nicht Multitasking-sicher.

In SCL - so auch in TIA für jede CPU verwendbar:
Code:
FUNCTION Byte4_TO_DW : DWORD
VAR_INPUT
  Byte_1 : BYTE;
  Byte_2 : BYTE;
  Byte_3 : BYTE;
  Byte_4 : BYTE;
END_VAR

  Byte4_TO_DW := SHL(IN:=BYTE_TO_DWORD(Byte_1), N:=24)
              OR SHL(IN:=BYTE_TO_DWORD(Byte_2), N:=16)
              OR SHL(IN:=BYTE_TO_DWORD(Byte_3), N:=8)
              OR BYTE_TO_DWORD(Byte_4);
END_FUNCTION
oder kurz und knackig in AWL:
Code:
L     #Byte_1
SLD   8
L     #Byte_2
OD    
SLD   8
L     #Byte_3
OD    
SLD   8
L     #Byte_4
OD    
T     #RET_VAL

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man den Code mit globalen Variablen ("Schmiermerkern") arbeiten läßt und den Code sowohl im OB1 als auch in einem Alarm-OB verwendet, dann verwendet der unterbrechende Code die selben Variablen wie der unterbrochene Code und verfälscht dessen Variablen.
Wenn man den Code schön in eine Function packt, dann macht sich niemand mehr Gedanken, ob die Function Multitasking-sicher (reentrant) ist, sondern wird sie munter in jeder OB-Ebene verwenden. Und dann kann es crashen.

Harald
 
Zurück
Oben