Aout in scl porgrammieren

Bosga

Level-1
Beiträge
21
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
habe hier folgenden code in scl :

BEGIN
IF(VALUE=W#16#7FFF) OR (VALUE=W#16#8000) THEN
QCHF:= TRUE;
ELSE
IF(VALUE AND W#16#F000)=W#16#F000 THEN
Rohwert:=0;
ELSE
ROHWERT:=DINT_TO_REAL(DWORD_TO_DINT(VALUE));
QCHF:= FALSE;
END_IF;
END_IF;
V:=ROHWERT/DIV_VAL*(VHRANGE-VLRANGE)+VLRANGE;
END_FUNCTION_BLOCK

Das ist ein Ain. Verstehe soweit auch alles.
Nur diese eine Zeile nicht ganz:
IF(VALUE AND W#16#F000)=W#16#F000 THEN
Rohwert:=0;

Ist das ein Überlauf oder sowas in der Art? Und wie wird hier genau verglichen? Komplettes Byte?

Will das kleine Programm in ein Aout umwandeln hab auch schon die entsprechende formel für Bip (0-20mA). Verstehe halt nur leider diese eine Bedingung bzw Zuweisung oben nicht.

LG
Bosga
 
Hallo Bosga,

Das ist ein Ain. Verstehe soweit auch alles.
Nur diese eine Zeile nicht ganz:
IF(VALUE AND W#16#F000)=W#16#F000 THEN
Rohwert:=0;
Ist der Eingangswert VALUE dez. -4096 wird in denn Rohwert 0 geschrieben.

Das Ergebniss wird nur ausgeführt wenn die UND (WORD) Verknüpfung denn Wert -4096 hex F000 liefert.

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ne Bitmaskierung.
Bit-weise AND angewendet bedeutet z.B:

Code:
    1101000100000000
AND 1111000000000000
-----------------
=   1101000000000000
Nur wenn in VALUE die höchwertigsten Bits alle = 1 sind, wird der Rohwert = 0 gesetzt.

16#F000 = 1111000000000000 (binär);

Man könnte VALUE auch zunächst wandeln und dann direkt mit dem Wert -4096 vergleichen:
Code:
IF WORD_TO_INT(VALUE) = -4096 THEN
...
 
Zurück
Oben