FP_DEBOUNCE

Daten durch Filtern von Bits über eine festgelegte Zeit entprellen

Dieser FP-Befehl führt eine Signalentprellung festgelegter Bit aus. Dadurch wird sichergestellt, dass deren Signal über einen bestimmten Zeitraum stabil ist. Dies ist sinnvoll, wenn mechanische Taster oder Schalter an schnellen Eingängen betrieben werden.

Parameter

Eingang

s1_In (WORD)

Eingangsdaten, deren Bits entsprechend der Maske gefiltert werden

n_Bits (WORD, INT, UINT)

Eingangsmaske, die festlegt, welche Bits zur Entprellung gefiltert werden

s3_Time (INT)

Zeitraum in ms, in dem das Signal an den angegebenen Bits stabil sein muss

Ausgang

d (WORD)

Gefilterte Daten

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn die Signalentprellungszeit in s3_Time kleiner als 0 oder größer als 30000 ist

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn die Signalentprellungszeit in s3_Time kleiner als 0 oder größer als 30000 ist

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR
		bStart: BOOL:=FALSE;
		wInputData: WORD:=16#A9BC;
		wInputMask: WORD:=16#000C;
			(*2#0000000000001100 i.e. bits 2 and 3 filtered*)
		wOutputData: WORD:=0;
		iFilterTime: INT:=100;
			(*0.1 seconds*)
	END_VAR

POE-Rumpf

Wenn bStart auf TRUE gesetzt ist, werden die Bits der s1_In zugeordneten Daten wie folgt ausgegeben: Die geprellten Bits werden erst in die Variable wOutputData geschrieben, wenn die Filterzeit abgelaufen ist. In den time charts finden Sie eine genaue Erläuterung.

  • Die Bits, die in der auf n_Bits angewendeten Datenmaske nicht gesetzt sind, werden direkt ohne Bedingungen ausgegeben.

  • Die Bits, die in der auf n_Bits angewendeten Datenmaske gesetzt sind, werden ausgegeben, nachdem ihr Signal für den durch s3_Time in ms festgelegten Zeitraum stabil war.

KOP-Rumpf

wOutputdata hat den Wert 16#A9B0 für 100ms. Nach Ablauf dieser Zeit hat wOutputData den Wert 16#A9BC.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_VARIN,,wInputData,10,2,12,4,);
B(B_VARIN,,wInputMask,10,3,12,5,);
B(B_VARIN,,iFilterTime,10,4,12,6,);
B(B_CONTACT,,bStart,4,1,6,3,);
B(B_F,FP_DEBOUNCE!,,12,0,20,6,,?DEN?Ds1_In?Dn_Bits?Ds3_Time?AENO?Cd);
B(B_VAROUT,,wOutputData,20,2,22,4,);
L(1,2,4,2);
L(6,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

If (bStart) then
    FP_DEBOUNCE(s1_In := wInputData, 
                n_Bits := wInputMask, 
                s3_Time := iFilterTime, 
                d => wOutputData);
End_if;

Letzte Änderung am: 2020-04-24Feedback zu dieser SeitePanasonic Hotline