AdrDT_Of_Offs

오프셋으로 입력 또는 출력의 DT 어드레스 반환

이 함수는 입력/출력 Offs의 값으로부터 입력/출력 AdrDTDT 영역에서 16비트 어드레스를 생성합니다. 이 입력은 기본 함수의 16비트 입력/출력에 직접 연결되어야 합니다. 입력/출력 Offs 값은 DT 데이터 영역 내 어드레스 오프셋을 나타내고, GetPointer를 사용하면 메모리 영역 값과 함께 유저 함수 또는 펑션블록으로 전송될 수 있습니다.

파라미터

입력

AdrDT (INT)

16비트 DT 오프셋 어드레스 일시 중단

이 핀은 데이터 형식 INT, WORD이 허용되는 기본 함수의 입력/출력에 연결되어야 합니다.

출력

Offs (WORD, INT, UINT)

어드레스 DT0의 오프셋

주석

  • DT에서 생성된 어드레스를 사용하는 기본 함수 실행은 EN 입력에서의 변수 메모리 영역의 값과 함께 함수 Is_AreaDT를 할당하여 결정됩니다.

  • 이 명령은 내부적으로 배열 계산에도 사용되는 인덱스 레지스터 중 하나에 액세스합니다.

  • LD 및 FBD 에디터에만 해당: 명령 창의 [입력 명령] 또는 [출력 명령]을 사용하여 프로그래밍 윈도우에 필요한 [명령]을 삽입합니다.

DUT

POU 헤더

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

	VAR
		start: BOOL:=FALSE;
			(*activation of the function*)
		DutNonBoolean: @'Dut_NonBoolean';
			(*structured data type*)
		ActualPosition: DINT:=0;
			(*beginning position from which the data should be read to the IC card*)
	END_VAR

여기에서 위 DUT에서 할당된 데이터 형식의 DutNonBoolean 변수가 선언됩니다. POU 헤더 또는 본문에서 값과 함께 DutNonBoolean 변수의 요소 할당은 수행되지 않았습니다. 함수 ReadFromIcCard 실행 후 DutNonBoolean 변수 값을 덮어 썼기 때문입니다.

POU 본문

변수 startFALSE에서 TRUE로 변경되면 함수 ReadFromIcCard가 실행됩니다. 이 함수는 ActualPosition 어드레스를 시작하는 IC 카드의 값을 읽고 정보를 DutNonBoolean 변수에 씁니다. IC 카드 형식은 [온라인] > [IC 메모리 카드 관리자...]에서 올바르게 지정되어야 하며, 필요한 경우 어드레스 ActualPosition으로 시작하는 값을 IC 카드에서 사용할 수 있어야 합니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,start,6,1,8,3,);
B(B_F,ReadFromIcCard!,Instance,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,2,16,4,18,6,);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_F,GetPointer!,Instance,11,3,18,5,,?D?C);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,Instance,9,5,16,7,,?D?C);
L(18,2,18,3);
L(8,2,18,2);
L(1,2,6,2);
L(9,4,11,4);
L(9,4,9,6);
L(16,6,18,6);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

예: 사용자 정의 함수 ReadFromIcCard 프로그래밍

POU 헤더

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

	VAR_INPUT
		p32Pointer: POINTER32;
			(*area, offset and size of data values*)
		diPosition: DINT:=0;
			(*beginning position from which the data should be read from the IC card*)
	END_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR

POU 본문

호출된 프로그램을 통해 AreaOffset 값을 전달하는 변수가 DT 또는 FL 영역에 있으면(컴파일러를 통해 p32Pointer 변수의 어드레스가 DT 또는 FL 영역에 할당되기 때문) 데이터는 p32ActualPosition로 시작하는 IC 카드에서 읽힙니다. 이 변수의 크기를 통해 위치가 상승하고 반환됩니다.

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_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToGet[0],10,5,12,7,);
B(B_CONTACT,,bGetData,5,2,7,4,R);
B(B_F,Size_Of_Var!,Instance,12,5,19,7,,?D?C);
B(B_F,E_ReadFromIcCard!,Instance,22,1,37,7,,?DEN?DBankNumber?DBankOffset?DDataNumberOfWords?AENO?CDataStartAddress);
B(B_F,Adr_Of_Var_O!,Instance,37,3,45,5,,?D?C);
B(B_VAROUT,,awProcessDataToGet,45,3,47,5,);
L(1,3,5,3);
L(19,6,22,6);
L(1,0,1,9);
L(7,3,22,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
관련 항목

추가 예 프로젝트(FPWIN Pro 설치의 "Samples" 디렉토리):

Read, write IC card (REAL, DUT, FP10SH, FP2SH)

Read, write shared memory (REAL, DUT, FP10SH, FP2SH, FP2)

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