Beispiel
fnErrorInterrupt()
{
}
main()
{
}
H0 wird inkrementiert, so lange der Umrichter fehlerfrei ist. Im Fehlerfall wird H2 um eins
erhöht und H1 so lange inkrementiert bis der Umrichter fehlerfrei ist. Danach wird ab-
hängig von der eingestellten Fehlerreaktion mit den aktuellen Werten in Task1 weiter-
gearbeitet oder IPOS mit den Werten aus dem EPROM neu gestartet.
5.6.3
Touch-Probe-DI02 Interrupt
Die Interrupt-Routine wird ein Mal vollständig durchlaufen, wenn der Touch-Probe mit
dem Befehl _TouchProbe (condition) bzw. TOUCHP condition freigegeben wurde und
die Flankenbedingung eintritt. Danach wird Task1 weiter abgearbeitet. Die Interrupt-
Routine wird erst dann ein zweites Mal aufgerufen, wenn der Touch-Probe erneut frei-
gegeben wurde und danach die Flankenbedingung eintritt (siehe auch Befehl
_TouchProbe bzw. TOUCHP).
Beispiel
fnTouchInterrupt()
{
H0++;
}
/*=============================================
Hauptfunktion (IPOS-Eintrittsfunktion)
===============================================*/
main()
{
}
H0 wird ein einziges Mal um 1 erhöht.
Würde der Touch-Probe-Befehl zusätzlich in der while-Schleife oder in fnTouchInterrupt
aufgerufen, würde der Interrupt auf alle Flankenwechsel an DI02 reagieren.
Typische Anwendungsfälle für den Touch-Probe sind die Positionierung um ein relatives
Wegstück bei Abstapeleinrichtungen oder die Markenregelung bei Prozessen mit konti-
nuierlichem Materialfluss.
Handbuch – IPOSplus®
Interrupts bei MOVIDRIVE
H2++;
while( !(StatusWord & 0b10))
{
//while-Schleife erst verlassen, wenn Antrieb fehlerfrei
H1++;
}
_SetInterrupt(SI_ERROR, fnErrorInterrupt);
while(1)
{
H0++;
}
_SetInterrupt( SI_TOUCHP1,fnTouchInterrupt); //Interrupt-Rout. akt.
TouchProbe( TP_EN1 );
while (1) { H1 = H1 +1; }
Task-Verwaltung und Interrupts
n
n
kVA
kVA
f
f
®
A und B
i
i
P
Hz
Hz
P
5
47