SD 카드에 데이터 쓰기
이 FP 명령은 s_Start로 시작하는 어드레스에 저장된 n_NumberOfDataToWrite에서 지정한 데이터 수를 읽고 SD 카드의 d1_FullFileName에서 지정한 파일에 데이터를 씁니다. d2_dutWrite의 DUT FP_SD_WRITE_DUT는 쓰기 파라미터를 지정합니다.
입력
시작 어드레스
DUT 멤버 udiNumberOfDataWritten에서 지정한 작성할 데이터 수
wFormat=1–8의 경우: 16비트/32비트 쉼표 구분 데이터 수
wFormat=10의 경우: 8비트 문자 수
wFormat=11의 경우: 16비트 데이터 수
파일 이름, 다음을 포함한 같은 확장자. '\Test.csv'
입력/출력
쓰기 형식, 쓰기 모드, 포인터 위치 등
s2_dutWrite의 FP_SD_WRITE_DUT에서 포인터 모드를 선택한 경우(wMode=2 또는 wMode=3), 포인터가 있는 위치에서 쓰기가 시작됩니다.쓰기 후 포인터는 쓰기가 완료된 위치로 이동합니다. 다음 쓰기 연산은 이 위치에서 시작합니다.포인터 위치는 DUT의 udiBytePosition에서도 지정될 수 있습니다. 아래 예에서 파일 포인터 위치는 다른 데이터 형식을 나타냅니다.
SD 카드 메모리 사전 주의사항도 참조해 주십시오.
SD 메모리 카드 명령의 트리거 EN이 TRUE로 전환된 후 SD 메모리 액세스 활성 플래그(sys_bIsSDMemoryAccessActive)는 TRUE로 전환되고 실행이 완료될 때까지 TRUE로 유지됩니다. 이 시간 동안에는 다른 SD 메모리 카드 명령을 실행할 수 없습니다.
SD 메모리 액세스 완료 플래그(sys_blsSDMemoryAccessDone)가FALSE이고 TRUE가 되며, 명령이 완료되면 TRUE를 유지합니다.
파일 속성이 읽기 전용이면 데이터를 쓸 수 없습니다.
ASCII 데이터를 저장하면 작성된 문자열에 큰 따옴표가 표시됩니다.
문자열의 큰 따옴표(")는 큰 따옴표 두 개("")로 변환됩니다.
FALSE: 명령이 에러 없이 완료된 경우
TRUE: 에러가 발생하여 명령이 완료된 경우
sys_iSDMemoryAccessErrorCode를 사용하여 에러 코드를 평가합니다.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bStart: BOOL:=FALSE;
(*activates the instruction*)
sStringWrite1: STRING[32]:='Test String1';
END_VAR
변수 bStart가 FALSE에서 TRUE로 변경되고 시스템 변수 sys_bIsSDMemoryAccessActive가 TRUE가 아니면 함수가 실행됩니다.
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
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;