F119_LRSR

왼쪽/오른쪽 시프트 등록

16비트 데이터 범위의 1 bit를 왼쪽 또는 오른쪽으로 시프트합니다.

파라미터

입력

LeftDirection (BOOL)

왼쪽/오른쪽 트리거가 시프트아웃 방향을 지정합니다.

  • TRUE: 왼쪽으로 시프트아웃
  • FALSE: 오른쪽으로 시프트아웃
DataInput (BOOL)

새 시프트인 데이터를 지정합니다.

  • 새 시프트인 데이터 = TRUE = 1(데이터 입력이 TRUE 상태인 경우).

  • 새 시프트인 데이터 = FALSE = 0(데이터 입력이 FALSE 상태인 경우).
ShiftTrigger (BOOL)

시프트를 활성화합니다.

트리거의 상승 엣지가 검색되면 왼쪽 또는 오른쪽으로 1비트 시프트합니다(FALSE®TRUE).

Reset (BOOL)

트리거가 TRUE 상태이면 d1_Startd2_End에서 지정한 데이터 범위의 모든 비트를 0으로 전환합니다.

d1_Startd2_End에서 지정한 영역의 데이터를 0으로 리셋합니다.

d2_End (WORD, INT, UINT)

16비트 영역 끝

d1_Start (WORD, INT, UINT)

16비트 영역 시작

출력

Carry (BOOL)

시프트아웃된 비트

  1.  (1) 왼쪽으로 시프트 연산
  2.  (2) 시프트아웃된 비트는 R9009(캐리 플래그)로 전송됩니다.
  3.  (3) LeftDirection: ON, ShiftTrigger: OFF, ON
  4.  (4) DataInput이 켜지면 비트 위치 0으로 “1”이 시프트인됩니다.
  5.  (5) DataInput이 꺼지면 비트 위치 0으로 “0”이 시프트인됩니다.
  6.  (6) 오른쪽으로 시프트 연산
  7.  (7) LeftDirection:OFF, ShiftTrigger: OFF, ON
  8.  (8) 시프트아웃된 비트는 R9009(캐리 플래그)로 전송됩니다.
  9.  (9) DataInput이 켜지면 비트 위치 15로 “1”이 시프트인됩니다.
  10. (10) DataInput이 꺼지면 비트 위치 15으로 “0”이 시프트인됩니다.

주석

  • 변수 d1_Startd2_End의 데이터 형식은 같아야 합니다.

  • 이 펑션은 출력 Carry에 변수가 필요하지 않습니다.

  • 왼쪽/오른쪽 시프트는 지정된 데이터 영역의 1 bit를 왼쪽(상위 비트 위치) 또는 오른쪽(하위 비트 위치)으로 시프트하는 시프트 등록입니다.

POU 헤더

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

	VAR
		data_array: ARRAY [0..2] OF INT:=[2#0000000000000001,2#0011111111111111,2#0011111111111110];
		enable_leftShift: BOOL:=FALSE;
			(*function shifts left if TRUE,
else it shifts right*)
		reset: BOOL:=FALSE;
			(*if TRUE, the whole array
will be set to zero*)
		input: BOOL:=TRUE;
			(*specifies the new shift-in data*)
		shift_trigger: BOOL:=FALSE;
			(*activates the function at a 0->1
leading edge*)
		carry_out_value: BOOL:=FALSE;
			(*result after a 0->1 leading edge
from shift_trigger: 1.
After the next cycle the value will be
set back to zero.*)
	END_VAR

POU 본문

변수 enable_leftShiftTRUE로 설정되면 펑션이 왼쪽으로 시프트하고 그렇지 않으면 오른쪽으로 시프트합니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_F,F119_LRSR!,Instanz,12,1,22,9,,?DLeftDirection?DDataInput?DShiftTrigger?DReset?Dd1_Start?Dd2_End?ACarry);
B(B_CONTACT,,enable_leftShift,7,2,9,4,);
B(B_VARIN,,input,9,3,11,5,);
B(B_VARIN,,shift_trigger,9,4,11,6,);
B(B_VARIN,,reset,9,5,11,7,);
B(B_VARIN,,data_array[0],9,6,11,8,);
B(B_VARIN,,data_array[2],9,7,11,9,);
B(B_VAROUT,,carry_out_value,22,2,24,4,);
L(1,3,7,3);
L(9,3,12,3);
L(11,4,12,4);
L(11,5,12,5);
L(11,6,12,6);
L(11,7,12,7);
L(11,8,12,8);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

carry_out_value:=F119_LRSR( LeftDirection:= enable_leftShift,
         DataInput:= input,
         ShiftTrigger:= shift_trigger,
         Reset:= reset,
         d1_Start:= data_array[0],
         d1_End:= data_array[2]);

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