In FUP geht es am einfachsten mit einem AT-Konstrukt. Erstelle am besten einen FC mit Standard-Zugriff:
Code:
Input : IN : Array[0..3] of Byte
Output: OUT : DWord
Temp : tA : Array[0..3] of Byte
tDW AT"tA" : DWord
+--------+
| MOVE |
#IN--|IN OUT|--#tA
+--------+
+--------+
| MOVE |
#tDW--|IN OUT|--#OUT
+--------+
Falls die Bytes im DWord vertauscht werden müssen, dann verwende anstatt dem zweiten MOVE die Anweisung SWAP.
Falls Du den FC auch in SCL aufrufen willst, dann verwende besser "Return" für die Rückgabe des DWords.
Mit Slice würde ich das DWord aus Konsistenzgründen erst in TEMP zusammenbasteln bevor ich es auf das Ziel-DWord kopiere - nicht daß mitten drin schon eine andere Task (z.B. HMI) auf die halbfertige DWord-Variable zugreift (falls das OUT-DWord mal per Referenz übergeben wird, z.B. als Teil eines zusammengesetzten Datentyps):
Mit Slice würde ich das DWord aus Konsistenzgründen erst in TEMP zusammenbasteln bevor ich es auf das Ziel-DWord kopiere - nicht daß mitten drin schon eine andere Task (z.B. HMI) auf die halbfertige DWord-Variable zugreift (falls das OUT-DWord mal per Referenz übergeben wird, z.B. als Teil eines zusammengesetzten Datentyps):
Und um die Hinweise weiter zu vervollständigen:
Die AT-Variante geht auch in einem optimierten FB, wenn die Remanenz der gesichteten Variable auf "Im IDB setzen" eingestellt wird.
Dort kann die Sicht z.B. auch direkt auf die Eingangsvariable gesetzt werden.
Danke für eure Tipps, aber ich habe alles mehrfach gelesen und etwas aufprobiert, aber es klappt nicht.
Ich möchte die Umwandlung direkt in einem optimierten FB machen. Also am liebsten ohne weiteren FC.
Die 4 ARRAY Elemente als IN kann ich verschalten, aber wie deklariere ich die einzelnen Bytes meines DWord?
Im optimierten DB kann man doch nicht auf die einzelnen Bytes zugreifen. Bekomme immer die Meldung "Der Operant xxx ist nicht definiert"
Meine Variable ist im Static angelegt.
Zur Info, hab zum Testen mal grad den vorgeschlagenen FC erstellt. Das funktioniert, aber ist nicht meine gewünschte Lösung.
Vielleicht habt Ihr ja noch Tipps wie ich das ohne FC im optimierten FB lösen kann. Danke
Zur Info, hab zum Testen mal grad den vorgeschlagenen FC erstellt. Das funktioniert, aber ist nicht meine gewünschte Lösung.
Vielleicht habt Ihr ja noch Tipps wie ich das ohne FC im optimierten FB lösen kann. Danke
Slice geht optimiert / nicht optimiert, FC / FB.
AT geht im optimierten FB, wenn die Remanenz der zu sichtenden Variable entsprechend eingestellt wird.
Vielleicht solltest Du mal einen Screenshot von Deinem Versuch (und was nicht Deinen Wünschen entsprechend funktioniert) zeigen, um zu besser helfen zu können.