FP_SD_READ

SD 카드의 데이터 읽기

이 FP 명령은 SD 카드의 s1_FullFileName에서 지정한 파일로부터 n_NumberOfDataToRead에서 지정한 데이터 수를 읽습니다. s2_dutRead의 DUT FP_SD_READ_DUT는 읽기 파라미터를 지정합니다. 결과는 d_Start에서 지정한 영역에 저장됩니다. 1 BCD 문자를 표현하려면 ASCII 코드에 8비트(1바이트)가 필요합니다. 따라서 ASCII로 변환하면 데이터 길이는 소스 데이터 길이의 두 배가 됩니다.

파라미터

입력

s1_FullFileName (STRING)

파일 이름

n_NumberOfDataToRead (WORD, INT, UINT)

읽을 데이터 수

:

  • 0–65535(16비트 데이터)

  • 0–32767(32비트 데이터)

  • 0–1999(문자열)

입력/출력

s2_dutRead (FP_SD_READ_DUT)

읽기 형식, 읽기 모드, 포인터 위치 등

출력

d_Start (ANY)

시작 어드레스

포인터 모드

s2_dutReadFP_SD_READ_DUT에서 포인터 모드를 선택한 경우(wMode=2 또는 wMode=3), 포인터가 있는 위치에서 읽기가 시작됩니다.읽기 후 포인터는 읽기가 완료된 위치로 이동합니다. 다음 읽기 연산은 이 위치에서 시작합니다.포인터 위치는 DUT의 udiBytePosition에서도 지정될 수 있습니다. 아래 예에서 화살표는 유효한 포인터 위치를 나타냅니다.

16비트 INT 데이터(BIN 형식 파일):

ASCII 데이터(CSV 형식 파일):

CSV 파일에서 포인터는 항상 스페이스, 콤마 또는 줄바꿈 다음 위치로 이동합니다. 데이터 끝에 있는 스페이스, 콤마 또는 줄바꿈을 건너뜁니다.

주석

  • SD 카드 메모리 사전 주의사항도 참조해 주십시오.

  • SD 메모리 카드 명령의 트리거 ENTRUE로 전환된 후 SD 메모리 액세스 활성 플래그(sys_bIsSDMemoryAccessActive)는 TRUE로 전환되고 실행이 완료될 때까지 TRUE로 유지됩니다. 이 시간 동안에는 다른 SD 메모리 카드 명령을 실행할 수 없습니다.

  • SD 메모리 액세스 완료 플래그(sys_blsSDMemoryAccessDone)가FALSE이고 TRUE가 되며, 명령이 완료되면 TRUE를 유지합니다.

  • 명령 실행이 완료될 때까지 출력 영역의 데이터를 읽지 마십시오.

  • 문자열의 연속 큰 따옴표 두 개("")는 한 문자(")로 읽힙니다. 큰 따옴표 하나만 있으면 무시됩니다.

  • CSV 파일에서 Null 필드(예: 콤마가 연속으로 있는 부분)은 읽을 데이터 수의 부분으로 계산되지만 데이터는 저장되지 않습니다.

에러 플래그

sys_bIsSDMemoryAccessError(TRUE로 전환되어 TRUE로 유지됨)
  • FALSE: 명령이 에러 없이 완료된 경우

  • TRUE: 에러가 발생하여 명령이 완료된 경우

  • sys_iSDMemoryAccessErrorCode를 사용하여 에러 코드를 평가합니다.

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

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

POU 헤더

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

	VAR
		bStart: BOOL:=FALSE;
			(*activates the instruction*)
		sFile_Test_Csv: STRING[32]:='\Test.csv';
		dutFpReadTest_csv: FP_SD_READ_DUT;
		sStringRead: STRING[32]:='';
		iStringLengthRead: INT:=0;
	END_VAR

POU 본문

변수 bStartFALSE에서 TRUE로 변경되고 시스템 변수 sys_bIsSDMemoryAccessActive TRUE가 아니면 함수가 실행됩니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_COMMENT,,ø^Read string ASCII data from SD card memory - ASCII value,3,0,58,3,);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,E_MOVE!,,17,0,23,4,,?DEN?D?AENO?C);
B(B_VARIN,,10,15,2,17,4,);
B(B_VAROUT,,dutFpReadTest_csv.wFormat,23,2,25,4,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,17,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_VARIN,,sFile_Test_Csv,15,3,17,5,);
B(B_VAROUT,,sStringRead,30,3,32,5,);
B(B_VARIN,,dutFpReadTest_csv,15,5,17,7,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,FP_SD_READ!,,17,1,30,7,,?DEN?Ds1_FullFileName?Dn_NumberOfDataToRead?Ds2_dutRead?As2_dutRead?AENO?Cd_Start);
B(B_VARIN,,iStringLengthRead,15,4,17,6,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,12,3);
L(12,3,17,3);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

eneral">(* Read string ASCII data from SD card memory - ASCII value *)
IF DF(bStart)And not sys_bIsSDMemoryAccessActive then
    dutFpReadTest_csv.wFormat:=10;
    FP_SD_READ(s1_FullFileName := sFile_Test_Csv,
               n_NumberOfDataToRead := iStringLengthRead,
               s2_dutRead := dutFpReadTest_csv,
               d_Start => sStringRead);
END_IF;

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