FP_DEBOUNCE

지정된 시간 동안 비트를 필터링하여 데이터를 디바운스

이 FP 명령어는 지정된 비트에 대해 필터를 실행하여 지정된 시간 동안 신호가 안정되게 합니다. 이 명령은 바운스 효과를 무효화하는데 유용할 수 있습니다(예: 스위칭 장치의 경우).

파라미터

입력

s1_In (WORD)

입력 마스크에 따라 필터링될 비트가 있는 입력 데이터

n_Bits (WORD, INT, UINT)

필터링할 비트를 지정하는 입력 마스크

s3_Time (INT)

지정된 비트의 신호가 안정되어야 하는 시간을 ms 단위로 지정합니다.

출력

d (WORD)

필터링된 데이터

시간 차트

  • 1(16#0001)이 s2_InputMask에 할당됩니다. 즉, 비트 0인 필터링되고, 다른 비트는 필터링되지 않습니다. s3_FilterTime에 할당된 값은 500ms입니다.

    1.  (1) 입력 데이터의 비트 0
    2.  (2) 필터 결과의 비트 0
    3.  (3) 시스템이 트리거의 상승 엣지를 감지하면 데이터가 초기화됩니다.
    4.  (4) 트리거가 OFF인 동안에는 명령이 동작하지 않습니다.
  • 0(16#0000)은 s2_InputMask에 할당됩니다. 즉, F의 비트 0은 필터링되지 않습니다.

    1.  (1) 입력 데이터의 비트 1~15
    2.  (2) 필터 결과의 비트 1~15
    3.  (3) 시스템이 트리거의 상승 엣지를 감지하면 데이터가 초기화됩니다.
    4.  (4) 트리거가 OFF인 동안에는 명령이 동작하지 않습니다.

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • s3_Time에서 지정한 필터 처리 시간이 0보다 작고 30000보다 큰 경우.

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • s3_Time에서 지정한 필터 처리 시간이 0보다 작고 30000보다 큰 경우.

POU 헤더

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 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

POU 본문

bStartTRUE이면 s1_In에 적용된 데이터 비트가 다음과 같이 출력됩니다. 필터링된 비트는 필터 시간이 경과된 후 wOutputData에만 작성됩니다. 자세한 내용은 time charts를 참조해 주십시오.

  • n_Bits에 적용된 마스크 데이터에서 설정되지 않은 비트는 조건 없이 직접 출력됩니다.

  • n_Bits에 적용된 마스크에서 설정된 비트는 s3_Time에서 지정한 시간에 대해 신호가 안정성을 유지한 후에 ms로 출력됩니다.

LD 본문

wOutputdata는 100ms의 16#A9B0 값을 가지고, 이 시간이 경과되면 wOutputData16#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 본문

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

최종 수정일: 2021-01-11이 페이지에 대한 피드백Panasonic 직통 전화