지정된 시간 동안 비트를 필터링하여 데이터를 디바운스
이 FP 명령어는 지정된 비트에 대해 필터를 실행하여 지정된 시간 동안 신호가 안정되게 합니다. 이 명령은 바운스 효과를 무효화하는데 유용할 수 있습니다(예: 스위칭 장치의 경우).
입력
입력 마스크에 따라 필터링될 비트가 있는 입력 데이터
필터링할 비트를 지정하는 입력 마스크
지정된 비트의 신호가 안정되어야 하는 시간을 ms 단위로 지정합니다.
출력
필터링된 데이터
1(16#0001)이 s2_InputMask에 할당됩니다. 즉, 비트 0인 필터링되고, 다른 비트는 필터링되지 않습니다. s3_FilterTime에 할당된 값은 500ms입니다.
0(16#0000)은 s2_InputMask에 할당됩니다. 즉, F의 비트 0은 필터링되지 않습니다.
s3_Time에서 지정한 필터 처리 시간이 0보다 작고 30000보다 큰 경우.
s3_Time에서 지정한 필터 처리 시간이 0보다 작고 30000보다 큰 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
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
bStart가 TRUE이면 s1_In에 적용된 데이터 비트가 다음과 같이 출력됩니다. 필터링된 비트는 필터 시간이 경과된 후 wOutputData에만 작성됩니다. 자세한 내용은 time charts를 참조해 주십시오.
n_Bits에 적용된 마스크 데이터에서 설정되지 않은 비트는 조건 없이 직접 출력됩니다.
n_Bits에 적용된 마스크에서 설정된 비트는 s3_Time에서 지정한 시간에 대해 신호가 안정성을 유지한 후에 ms로 출력됩니다.
wOutputdata는 100ms의 16#A9B0 값을 가지고, 이 시간이 경과되면 wOutputData는 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
If (bStart) then
FP_DEBOUNCE(s1_In := wInputData,
n_Bits := wInputMask,
s3_Time := iFilterTime,
d => wOutputData);
End_if;