FTP 프로토콜에 대한 데이터 형식 문자열 생성
이 FP 명령은 입력 Var에서 데이터 유형에 따라 데이터 형식(FP 어드레스 및 길이)을 지정하는 문자열을 생성합니다 FP_FTP_SET_MODE 명령의 sPLCFullFileNameOrDataFormat 입력에 대해 적합한 sDataFormat 출력 변수에 문자열을 작성합니다.
입력
간단한 데이터 형식 또는 간단한 데이터 형식 배열. 예: BOOL, INT, UINT, STRING, ...
제한: ARRAY..OF..STRING은 허용되지 않음
워드 또는 문자열의 데이터 크기(바이트 단위).
.csv 변환 파일에서 새 줄을 추가해야 하는 항목 수
출력
FP_FTP_SET_MODE의 입력 sPLCFullFileNameOrDataFormat에 대한 데이터 형식을 지정하는 문자열입니다
명령을 실행하기 전에 FP_FTP_SET_MODE 또는 FTP 클라이언트의 설정 다이얼로그를 사용하여 전송 설정을 지정해야 합니다.
명령을 실행하기 전에 sys_bIsEthernetInitializing이 FALSE인지 확인하십시오. 명령이 실행되면 sys_bIsEthernetInitializing이 TRUE로 전환됩니다. sys_bIsEthernetInitializing이 TRUE일 때 명령을 실행하면 에러가 발생합니다.
지정된 전송 설정에 대한 전송 요청 플래그가 "FALSE: 전송 요청 없음"인 경우에만 이 명령이 실행됩니다. 전송 요청 플래그가 "TRUE: 전송 요청됨"이면, 연산 에러가 발생합니다.
이 명령이 성공적으로 실행되면 시스템 변수 sys_bIsCarry 및 sys_iEthernetConnectionErrorCode가 초기화됩니다.
이 명령은 PLC에 저장된 이더넷 구성 데이터를 영구적으로 덮어쓰지 않습니다. PLC의 전원을 껐다가 다시 켜면 PLC에 저장된 이더넷 구성 데이터가 다시 사용됩니다.
FTP 클라이언트 전송 설정이 완료되면 FP_FTP_TRANSFER_REQUEST 가 실행될 때 데이터가 파일로 전송되거나 파일에서 얻어집니다.
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
연결 타임아웃 시간을 초과한 경우
IP 어드레스가 유효하지 않을 경우
연결 타임아웃 시간을 초과한 경우
IP 어드레스가 유효하지 않을 경우
이더넷 초기화 중에 명령이 실행되면 sys_iEthernetConnectionErrorCode가 "11: 이더넷이 초기화 중입니다"로 설정됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bSetModePlcData: BOOL:=FALSE;
bSetModePlcDataError: BOOL:=FALSE;
arrayValues: ARRAY[0..15] OF REAL:=[16(0.0)];
iID10: INT:=10;
END_VAR
bSetModePlcData가 FALSE에서 TRUE로 변경되고 sys_bIsEthernetInitializing이 FALSE면 이 명령이 실행됩니다.
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,,bSetModePlcData,5,1,7,3,R);
B(B_VARIN,,'SV0~GETDATA~NON',40,3,42,5,);
B(B_VAROUT,,bSetModePlcDataError,60,2,62,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',40,5,42,7,);
B(B_VARIN,,iID10,40,2,42,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_VARIN,,arrayValues,6,4,8,6,);
B(B_VARIN,,0,13,6,15,8,);
B(B_F,Size_Of_Var!,,8,5,15,7,,?D?C);
B(B_F,FP_FTP_SET_MODE!,,42,0,58,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
B(B_F,FP_FTP_GET_DATA_FORMAT!,,15,3,29,8,,?D@'Var'?DnSize?DnColumns?CsDataFormat);
L(1,2,5,2);
L(7,2,16,2);
L(8,5,8,6);
L(18,2,42,2);
L(58,3,60,3);
L(8,5,15,5);
L(29,5,42,5);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetModePlcData) And not sys_bIsEthernetInitializing then
FP_FTP_SET_MODE(nTransferID := iID10,
sOperation := 'SV0,GETDATA,NON',
sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
nSize := Size_Of_Var(arrayValues),
nColumns := 0),
sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
bError => bSetModePlcDataError);
End_if;