n
n
kVA
kVA
Compiler – Beispiele
18
f
f
Setzen von Bits und Ausgangsklemmen
i
i
P
Hz
Hz
P
18
Compiler – Beispiele
18.1 Setzen von Bits und Ausgangsklemmen
246
Für das Setzen von Einzelbits in Variablen gibt es zwei Wege:
1. Die Funktion _BitSet( Hx, y ) setzt das Bit y in der Variable x auf Eins.
2. Die bitweise ODER-Verknüpfung Hx ¦ K setzt in der Variablen x diejenigen Bits auf
Eins, die auch in der Konstanten K auf Eins stehen.
In beiden Fällen lässt sich die Lesbarkeit des Programms verbessern, wenn die Bitpo-
sition bzw. die Konstante symbolisch definiert ist. Da Bitsetzfunktionen hauptsächlich
benutzt werden, um binäre Geräteausgänge zu setzen, wird im folgenden Beispiel die
Variable H481 (StdOutpIPOS) als Zielvariable der Operation benutzt. Um die Ausgänge
der Option anzusprechen, würde man entsprechend die Variable H480 (OptOutpIPOS)
verwenden. Im Beispiel soll die Ausgangsklemme des Grundgeräts DO02 gesetzt wer-
den.
Verwendung von _BitSet()
#include <const.h>
#include <io.h>
// MOVIDRIVE A
#include <iob.h>
// MOVIDRIVE B
main()
{
_BitSet( StdOutpIPOS, 2 );
}
Der Quelltext kann noch weiter vereinfacht werden, wenn die jeweiligen Anweisungen
neben den Variablen und Konstanten zusätzlich symbolisch bezeichnet werden:
Verwendung von _BitSet():
#include <const.h>
#include <io.h>
#include <iob.h>
#define SetzeDO02
main()
{
SetzeDO02
}
Sollen mehrere Ausgänge gleichzeitig gesetzt werden, so kann man entweder die Funk-
tion _BitSet() mehrfach hintereinander aufrufen oder dafür die bitweise ODER-Verknüp-
fung benutzen. Im zweiten Fall kommt man mit einer Anweisung aus. Dies vermindert
den Codeumfang und wirkt sich so auch positiv auf die Programmlaufzeit aus.
Das folgende Beispiel benutzt die ODER-Operation, um DO01 und DO02 gleichzeitig
zu setzen.
Verwendung der ODER-Verknüpfung:
#include <const.h>
#include <io.h>
#include <iob.h>
main()
{
StdOutpIPOS ¦= DO01 ¦ DO02;
}
Verwendung der ODER-Verknüpfung
#include <const.h>
#include <io.h>
#include <iob.h>
main()
{
StdOutpIPOS ¦= DO02;
}
// MOVIDRIVE A
// MOVIDRIVE B
_BitSet( StdOutpIPOS, 2);
// MOVIDRIVE A
// MOVIDRIVE B
// MOVIDRIVE A
// MOVIDRIVE B
Handbuch – IPOSplus®