oscat.lib > oscat.lib fuer Step 7
Float in Real für Pluggit Lüftungsgerät?
(1/1)
HopeITworks:
Ich bekomme von meiner Pluggit Lüftungsanlage mehrere Werte in Float geliefert. Es sind jeweils 2 Registeradressen die für einen Wert benutzt werden.
Modbus Adresse 40133 und 40134 in dem Fall.
Ich lege diese als DWord ab. Jetzt muss ich allerdings die Bytes schieben. Aus Byte A B C D muss C D A B werden und danach in Real gewandelt werden. Wie mache ich das am einfachsten?
Ich habe damit leider noch keinerlei Erfahrungen, daher die wahrscheinlich recht doofe Frage ;D
HopeITworks:
Ich hab mir jetzt mal nen SCL Baustein dafür gebaut und es scheint zu funktionieren :) Die Werte sind plausibel.
Über Verbesserungsvorschläge würde ich mich sehr freuen :)
--- Code: ---FUNCTION_BLOCK "Pluggit_Float_to_Real"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_OUTPUT
OUT : Real;
END_VAR
VAR_IN_OUT
"dword" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
END_VAR
VAR_TEMP
DWord_Temp : DWord;
idword : DWord;
END_VAR
BEGIN
#DWord_Temp := #dword;
#idword.%B2 := #DWord_Temp.%B0;
#idword.%B3 := #DWord_Temp.%B1;
#idword.%B0 := #DWord_Temp.%B2;
#idword.%B1 := #DWord_Temp.%B3;
#OUT := DWORD_TO_REAL(#idword);
END_FUNCTION_BLOCK
--- Ende Code ---
mattsches:
Sieht in SCL für mich nach der einfachsten Lösung aus, ich würde den Baustein so lassen.
In AWL ginge es auch ohne Hilfsvariablen. Aber AWL mögen ja viele nicht mehr so gern, und auf 1200ern geht das eh nicht. Dennoch, der Vollständigkeit halber:
--- Code: ---L #Eingangsvariable
TAW
TAD
TAW
T #Ausgangsvariable
--- Ende Code ---
TAW wechselt die Bytes 0 und 1 im Akku, TAD dreht die gesamte Reihenfolge der vier Bytes um. Damit ergibt sich dann folgender Verlauf im Akku:
A B C D (Ausgangszustand)
B A C D (1. TAW)
D C B A (TAD)
C D B A (2. TAW)
Manchmal hat die betagte AWL auch ihre Vorteile. :)
HopeITworks:
Oh das freut mich aber jetzt sehr ;D Ich musste mir diese Lösung leider wieder hart erarbeiten, aber dafür bleibt sie hoffentlich im Kopf :)
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln