Hi,
ich spreche einen Service meiner Wärmepumpe an, um damit ein paar Temperaturen auszulesen.
Die Wärmepumpe (Luxtronic) liefert Werte, die ich als BYTES -> DWORDs -> REAL auslese über die SysLibSockets (Wago Steuerung, Codesys 2.x)
DWORD_OF_BYTE habe ich aus der Oscat Lib:
Sobald die Temperator < 0 wird klappt es mit dem Vorzeichen nicht mehr, > 0 °C sieht alles gut aus.
Nach einigen Versuchen komme ich nicht auf den Trichter, wie ich das zu einem Signed INT / 100 oder direkt in ein vorzeichenbehaftetes REAL konvertieren kann.
Vielen Dank für Eure Hilfe!
Philipp
ich spreche einen Service meiner Wärmepumpe an, um damit ein paar Temperaturen auszulesen.
Die Wärmepumpe (Luxtronic) liefert Werte, die ich als BYTES -> DWORDs -> REAL auslese über die SysLibSockets (Wago Steuerung, Codesys 2.x)
Code:
V_tempAussen := DWORD_TO_REAL(DWORD_OF_BYTE(R_BUF.BUFFER[72],R_BUF.BUFFER[73],R_BUF.BUFFER[74],R_BUF.BUFFER[75]))/10;
Code:
FUNCTION DWORD_OF_BYTE : DWORD
VAR_INPUT
B3 : BYTE;
B2 : BYTE;
B1 : BYTE;
B0 : BYTE;
END_VAR
--
DWORD_OF_BYTE := SHL(SHL(SHL(BYTE_TO_DWORD(B3),8) OR BYTE_TO_DWORD(B2),8) OR BYTE_TO_DWORD(B1),8) OR BYTE_TO_DWORD(B0);
Nach einigen Versuchen komme ich nicht auf den Trichter, wie ich das zu einem Signed INT / 100 oder direkt in ein vorzeichenbehaftetes REAL konvertieren kann.
Vielen Dank für Eure Hilfe!
Philipp