FP_SHL_BLOCK

데이터 블록을 왼쪽으로 시프트

이 FP 명령은 트리거 ENTRUE이면 n_Bits에서 지정한 비트 수만큼 d1_Startd2_End에서 지정한 데이터 범위를 왼쪽(상위 위치)으로 시프트합니다.

비어 있는 위치는 0으로 채웁니다.

  • n_Bits = 0인 경우에는 시프트가 발생하지 않습니다.

  • n_Bits = 16인 경우에는 FP_WSHL_BLOCK과 같은 1워드 시프트가 발생합니다.

파라미터

입력

n_Bits (WORD, INT, UINT)

비트 수 (허용 범위: 0-15)

출력

d1_Start (BOOL)

시작 어드레스

d2_End (BOOL)

끝 어드레스

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
  • d1_Start > d2_End인 경우

  • n_Bits ³ 16인 경우

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
  • d1_Start > d2_End인 경우

  • n_Bits ³ 16인 경우

글로벌 변수

글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.

POU 헤더Copy code to clipboard

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

	VAR
		bStart: BOOL:=FALSE;
			(*activates the function*)
	END_VAR
	VAR_EXTERNAL
		bStartAddress: BOOL:=FALSE;
		bEndAddress: BOOL:=FALSE;
	END_VAR

LD 본문Copy code to clipboard

변수 bStartFALSE에서 TRUE로 변경되면 함수가 실행됩니다.

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_F,FP_SHL_BLOCK!,,9,1,18,6,,?DEN?Dn_Bits?AENO?Cd1_Start?Cd2_End);
B(B_VARIN,,3,7,3,9,5,);
B(B_VAROUT,,bStartAddress,18,3,20,5,);
B(B_VAROUT,,bEndAddress,18,4,20,6,);
B(B_CONTACT,,bStart,3,2,5,4,R);
L(1,3,3,3);
L(5,3,9,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문Copy code to clipboard

IF DF(start) then
    FP_SHL_BLOCK(n_Bits := 4, 
                 d1_Start => awDataField[0], 
                 d2_End => awDataField[2]);
END_IF;

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