-> Hier kostenlos registrieren
Guten Morgen.
Ich habe mal wieder ein Problem zu lösen, wo die Lösung für mich nicht direkt ersichtlich ist. Ich lese von einem Sensor einen AD-gewandelten Wert ein. Dieses rechne ich um, damit ich ihn anschließend in einem DB speichern kann. Meine Formel, die in SCL umzusetzen ist lautet:
((MW-17944)/32768)*10
MW hat hierbei den Typen INT. Sobald ich aber alles in INT mache und die Division durchführe meckert der Compiler. Um einen datensatz im DB speichern zu können, muss dieser in WORD vorliegen. INT kann ich dabei leicht konvertieren, REAL macht da mehr Probleme.
Anebi noch mein Codeausschnitt
Ich habe mal wieder ein Problem zu lösen, wo die Lösung für mich nicht direkt ersichtlich ist. Ich lese von einem Sensor einen AD-gewandelten Wert ein. Dieses rechne ich um, damit ich ihn anschließend in einem DB speichern kann. Meine Formel, die in SCL umzusetzen ist lautet:
((MW-17944)/32768)*10
MW hat hierbei den Typen INT. Sobald ich aber alles in INT mache und die Division durchführe meckert der Compiler. Um einen datensatz im DB speichern zu können, muss dieser in WORD vorliegen. INT kann ich dabei leicht konvertieren, REAL macht da mehr Probleme.
Anebi noch mein Codeausschnitt
PHP:
VAR
// statische Variablen
i : INT := 0;
DIFF : INT;
MW : REAL;
MW_END : INT;
END_VAR
VAR_INPUT
Messwert_IN : INT;
END_VAR
PHP:
IF (DB105.DX518.1) THEN
MW := ABS(((INT_TO_REAL(Messwert_IN)-17616.0))/32767.0*100.0); // /32768)*100
MW_END:= REAL_TO_INT(MW);
DB105.DW[416+i*2] := INT_TO_WORD(MW_END);
IF i > 49 THEN
DB105.DX518.1 := FALSE; //Aktiv-Bit entfernen
i := 0;
END_IF;