Herunterladen Inhalt Inhalt Diese Seite drucken

SEW IPOS plus Handbuch Seite 250

Inhaltsverzeichnis

Werbung

n
n
kVA
kVA
Compiler – Beispiele
18
f
f
Flankenabfrage
i
i
P
Hz
Hz
P
250
Negative Flankenabfrage
#include <const.h>
#include <io.h>
// Variables for edge generation
long
lDI02FallingEdge,
lDI02LastState,
lDO02State,
lInputLevel;
main()
{
while(1)
{
// Read DI02
lInputLevel = (InputLevel & 0x00000004);
// Generate edge DI02
lDI02FallingEdge = !lInputLevel && (lDI02LastState);
lDI02LastState = lInputLevel;
if(lDI02FallingEdge)
lDO02State = (!lDO02State)
// Set output DO02
if (lDO02State)
_BitSet( StdOutpIPOS, 2 );
else
_BitClear( StdOutpIPOS, 2 );
}
}
HINWEIS
Bei der Realisierung einer Flankenabfrage ist zu beachten, dass zur Bildung der
Flanke immer eine Hilfsvariable lInputLevel, die den Zustand der Eingangs-
klemme zuvor speichert, benutzt wird und nicht die Eingangsklemme selbst.
Flankenwechsel an DI02
Würde anstatt der Hilfsvariablen lInputLevel die Eingangsklemme benutzt werden,
könnte es vorkommen, dass der Flankenwechsel an der Eingangsklemme genau dann
plus®
erfolgt, wenn das IPOS
tigten Programmzeilen steht. Somit würde der Flankenwechsel an der Eingangsklemme
nicht erkannt werden.
Des Weiteren ist zu beachten, dass die Flanke einer Eingangsklemme nur in der Task
abgefragt werden darf, in der die Flanke auch gebildet wurde. Durch Asynchronität der
einzelnen Tasks kann es sonst vorkommen, dass eine Flanke nicht erkannt oder falsch
interpretiert wird.
Wird die Flanke einer Eingangsklemme in mehreren Tasks benötigt, muss die Flanke in
jeder Task separat gebildet werden.
// Read DI02
lInputLevel = (InputLevel & 0x00000004);
// Generate edge DI02
lDI02FallingEdge = !lInputLevel && (!DI02LastState);
lDI02LastState = lInputLevel;
-Programm zwischen den beiden, zur Flankenbildung benö-
Handbuch – IPOSplus®

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis