Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
11.10.2020
Размер:
3.68 Mб
Скачать

308 Die IEC Operatoren

Bitstring Operatoren

12.3 Bitstring Operatoren

12.3.1AND

Bitweise AND von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.

Beispiel in AWL:

Var1

BYTE

 

LD

2#1001_0011

AND

2#1000_1010

ST

Var1

(* Ergebnis ist 2#1000_0010 *)

Beispiel in ST:

var1 := 2#1001_0011 AND 2#1000_1010

Beispiel in FUP:

Hinweis:

Wenn Sie bei Verwendung von 68xxxoder C-Code-Generatoren im FUP einen wie hier dargestellten

Programmablauf eingeben, müssen Sie folgendes beachten: Die Zuweisung des Wertes der zweiten Eingangsvariablen am AND-Operator-Baustein zur Variablen z wird aufgrund der optimierten Abarbeitungsprozedur im FUP nicht mehr durchgeführt, sobald Eingangsvariable a den Wert FALSE hat !

12.3.2OR

Bitweise OR von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.

Beispiel in AWL:

Var1 BYTE

LD 2#1001_0011

OR 2#1000_1010

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

Die IEC Operatoren 309

Bitstring Operatoren

ST

Var1 (* Ergebnis ist 2#1001_1011 *)

Beispiel in ST:

Var1 := 2#1001_0011 OR 2#1000_1010

Beispiel in FUP:

Hinweis:

Wenn Sie bei Verwendung von 68xxxoder C-Code-Generatoren im FUP einen wie hier dargestellten

Programmablauf eingeben, müssen Sie folgendes beachten: Die Zuweisung des Wertes der zweiten Eingangsvariablen am OR-Operator-Baustein zur Variablen z wird aufgrund der optimierten Abarbeitungsprozedur im FUP nicht mehr durchgeführt, sobald Eingangsvariable a den Wert TRUE hat !

12.3.3XOR

Bitweise XOR von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.

Beispiel in AWL:

Var1

BYTE

 

LD

2#1001_0011

XOR

2#1000_1010

ST

Var1

(* Ergebnis ist 2#0001_1001 *)

Beispiel in ST:

Var1 := 2#1001_0011 XOR 2#1000_1010

Beispiel in FUP:

Hinweis:

Beachten Sie, daß das Verhalten des XOR-Bausteins in erweiterter Form (mehr als 2 Eingänge) nicht normkonform implementiert ist. Die Eingänge

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

310 Die IEC Operatoren

Bit-Shift Operatoren

werden paarweise geprüft und die jeweiligen Ergebnisse dann wiederum gegeneinander verglichen.

12.3.4NOT

Bitweise NOT eines Bit Operanden. Der Operand sollte vom Typ BOOL, BYTE, WORD oder DWORD sein

Beispiel in AWL:

Var1

BYTE

 

LD

2#1001_0011

NOT

 

 

ST

Var1

(* Ergebnis ist 2#0110_1100 *)

Beispiel in ST:

Var1 := NOT 2#1001_0011

Beispiel in FUP:

12.4 Bit-Shift Operatoren

Hinweis:

Der Codegenerator für Infineon C16x Zielsysteme führt die Bit-Shift

Rechenoperationen mit Modulo 16 durch.

12.4.1SHL

Bitweises Links-Shift eines Operanden: erg:= SHL (in, n)

Eingabevariablen erg, in und n sollten vom Typ BYTE, WORD, DWORD sein. in wird um n Bits nach links geschoben, und von rechts mit Nullen aufgefüllt.

Hinweis:

Beachten Sie, daß die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.

Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

Die IEC Operatoren

311

Bit-Shift Operatoren

 

 

 

Beispiel in ST:

Beispiel in FUP:

Beispiel in AWL:

LD 16#45

SHL 2

ST erg_byte

12.4.2SHR

Bitweises Rechts-Shift eines Operanden: erg:= SHR (in, n)

erg, in und n sollten vom Typ BYTE, WORD oder DWORD sein. IN wird um N Bits nach rechts geschoben, und von links mit Nullen aufgefüllt.

Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung die Ergebnisse der Operation, wobei einmal erg_byte vom Typ BYTE und einmal erg_word vom Typ WORD als Eingangsvariablen dienen.

Beispiel in ST:

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

312 Die IEC Operatoren

Bit-Shift Operatoren

Beispiel in FUP:

Beispiel in AWL:

LD 16#45

SHL 2

ST erg_byte

12.4.3ROL

Bitweise Linksrotation eines Operanden: erg:= ROL (in, n)

erg, in und n sollten vom Typ BYTE, WORD oder DWORD sein. in wird n mal um eine Bitstelle nach links geschoben, wobei das linkeste Bit von rechts wieder eingeschoben wird.

Hinweis:

Beachten Sie, daß die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.

Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.

Beispiel in ST:

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

Die IEC Operatoren

313

Bit-Shift Operatoren

 

 

 

Beispiel in FUP:

Beispiel in AWL:

LD 16#45

SHL 2

ST erg_byte

12.4.4ROR

Bitweise Rechtsrotation eines Operanden: erg:= ROR (IN, N)

erg, in und n sollten vom Typ BYTE, WORD oder DWORD sein. in wird n mal um eine Bitstelle nach rechts geschoben, wobei das rechteste Bit von links wieder eingeschoben wird.

Hinweis:

Beachten Sie, daß die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.

Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.

Beispiel in ST:

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32