FP_SD_WRITE

SD 카드에 데이터 쓰기

이 FP 명령은 s_Start로 시작하는 어드레스에 저장된 n_NumberOfDataToWrite에서 지정한 데이터 수를 읽고 SD 카드의 d1_FullFileName에서 지정한 파일에 데이터를 씁니다. d2_dutWrite의 DUT FP_SD_WRITE_DUT는 쓰기 파라미터를 지정합니다.

파라미터

입력

s_Start (ANY)

시작 어드레스

n_NumberOfDataToWrite (WORD, INT, UINT)

DUT 멤버 udiNumberOfDataWritten에서 지정한 작성할 데이터 수

  • wFormat=1–8의 경우: 16비트/32비트 쉼표 구분 데이터 수

  • wFormat=10의 경우: 8비트 문자 수

  • wFormat=11의 경우: 16비트 데이터 수

d1_FullFileName (STRING)

파일 이름, 다음을 포함한 같은 확장자. '\Test.csv'

입력/출력

d2_dutWrite (FP_SD_WRITE_DUT)

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

포인터 모드

s2_dutWriteFP_SD_WRITE_DUT에서 포인터 모드를 선택한 경우(wMode=2 또는 wMode=3), 포인터가 있는 위치에서 쓰기가 시작됩니다.쓰기 후 포인터는 쓰기가 완료된 위치로 이동합니다. 다음 쓰기 연산은 이 위치에서 시작합니다.포인터 위치는 DUT의 udiBytePosition에서도 지정될 수 있습니다. 아래 예에서 파일 포인터 위치는 다른 데이터 형식을 나타냅니다.

  1.  (1) 16비트 INT 데이터(BIN 형식 파일)
  2.  (2) 16비트 INT 데이터(CSV 형식 파일)
  3.  (3) ASCII 데이터(CSV 형식 파일)
  4.  (4) 파일 포인터

주석

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

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

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

  • 파일 속성이 읽기 전용이면 데이터를 쓸 수 없습니다.

  • ASCII 데이터를 저장하면 작성된 문자열에 큰 따옴표가 표시됩니다.

  • 문자열의 큰 따옴표(")는 큰 따옴표 두 개("")로 변환됩니다.

에러 플래그

sys_bIsSDMemoryAccessError
  • FALSE: 명령이 에러 없이 완료된 경우

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

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

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

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

POU 헤더

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

	VAR
		bStart: BOOL:=FALSE;
			(*activates the instruction*)
		sStringWrite1: STRING[32]:='Test String1';
	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,,ø^Write string ASCII data into 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!,,18,0,24,4,,?DEN?D?AENO?C);
B(B_VARIN,,10,16,2,18,4,);
B(B_VAROUT,,dutFpWriteTest_csv.wFormat,24,2,26,4,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,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,,sStringWrite,16,2,18,4,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_VARIN,,sFile_Test_Csv,16,4,18,6,);
B(B_VARIN,,dutFpWriteTest_csv,16,5,18,7,);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,FP_SD_WRITE!,,18,0,31,7,,?DEN?Ds_Start?Dn_NumberOfDataToWrite?Dd1_FullFileName?Dd2_dutWrite?Ad2_dutWrite?AENO);
B(B_VARIN,,iStringLength,16,3,18,5,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
    dutFpWriteTest_csv.wFormat:=10;
    FP_SD_WRITE(s_Start := sStringWrite,
                n_NumberOfDataToWrite := iStringLength,
                d1_FullFileName := sFile_Test_Csv,
                d2_dutWrite := dutFpWriteTest_csv);
END_IF;

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