데이터 로깅 파일에 대한 FTP 전송 모드 설정
이 FP 명령은 FTP 프로토콜을 통해 데이터 로깅 파일 전송 설정을 정의합니다.
입력
LOG 번호( 0–15). 컴파일러는 내부적으로 로그 파일 번호의 문자열(예: 'LOG=0')을 생성합니다.
전송 방법 파라미터를 설정합니다.
서버 어드레스(필수 파라미터)
동시에 서버 한 개만 지정할 수 있습니다. 1바이트 문자 3개로 FTP 서버 번호를 지정합니다.
키워드: SV
값: SV0–SV3 (Server 0–Server 3)
전송 방법(옵션 파라미터)
구문 |
전송 방법 |
---|---|
|
덮어쓰기 방식(기본) 데이터 로깅 설정으로 지정된 파일 이름으로 파일 전송을 수행합니다. 네트워크 또는 서버의 문제로 인해 전송이 중단된 경우 파일 전송이 부분적으로만 실행되었을 수 있습니다. FP_FTP_GET_STATUS와 같은 명령으로 전송이 성공적으로 완료되었는지 확인합니다. |
|
이름 변경 방식 임시 파일 이름으로 파일을 전송하고 전송이 성공한 후 지정된 파일 이름으로 파일 이름을 바꿉니다. 파일 전송이 성공적으로 완료되었는지 확인하려면 실제 파일 이름과 데이터 로깅 설정에서 지정한 파일 이름을 비교하십시오. 처리 시간은 덮어쓰기 방식보다 오래 걸립니다. |
예: 이름 바꾸기 방법을 사용하여 데이터 로깅 파일을 FTP 서버 3으로 전송합니다. 'SV3,MODE=REN'
대상 디렉토리를 설정합니다(최대 256자). FTP 서버 로그인 후 사용자에게 할당된 홈 디렉토리에서 상대 경로로 생성됩니다. 대상 디렉토리가 없으면 최대 8개의 계층 구조로 자동으로 생성됩니다.
출력
다음 조건에서 TRUE로 전환:
연결 타임아웃 시간을 초과한 경우
IP 어드레스가 유효하지 않을 경우
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
모든 키워드 엔트리는 콤마로 구분됩니다(예: 'NAME=abcd,FROM=sender@server.com').
키워드의 순서를 변경하지 않음. 키워드와 설정 파라미터를 여기에 나열된 순서대로 지정하십시오.
문자 데이터의 문자수는 256을 초과하지 않아야 합니다.
인터럽트 프로그램에서는 이 명령을 사용할 수 없습니다.
명령을 실행하기 전에 FP_FTP_SET_CONNECTION을 사용하거나 FTP 클라이언트의 설정 다이얼로그를 사용하여 FTP 서버를 지정해야 합니다.
문자 정수를 지정할 수 있는 오퍼랜드에 대문자와 소문자를 사용할 수 있습니다. "Abcd", "ABCD", "abcd"는 모두 동의어이지만 파일 이름에서는 대/소문자를 구분합니다.
지정된 nLogID 번호에 대한 전송 요청 플래그가 FALSE인 경우에만 명령을 실행할 수 있습니다. 전송 요청 플래그가 TRUE인 경우 연산 에러가 발생합니다.
명령을 실행하기 전에 sys_bIsEthernetInitializing이 FALSE인지 확인하십시오. 명령이 실행되면 sys_bIsEthernetInitializing이 TRUE로 전환됩니다. sys_bIsEthernetInitializing이 TRUE일 때 명령을 실행하면 에러가 발생합니다.
이 명령이 성공적으로 실행되면 시스템 변수 sys_bIsCarry 및 sys_iEthernetConnectionErrorCode가 초기화됩니다.
이 명령은 nLogID에서 지정한 LOG 파일 번호에 sOperation 및 sFTPServerDirectory의 데이터 로깅 전송 설정을 저장합니다.
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
지정된 nLogID 번호에 대한 전송 요청 플래그가 TRUE인 경우(예: sys_blsLog0DataRecordingActive가 TRUE인 경우)
지정된 nLogID 숫자의 데이터 로깅 조건이 등록되지 않은 경우.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
문자열 데이터의 문자 수가 256자 이상인 경우.
FP_FTP_SET_CONNECTION 명령 또는 FTP 클라이언트의 설정 다이얼로그로 정의되지 않은 FTP 서버가 지정된 경우.
지정된 nLogID 번호에 대한 전송 요청 플래그가 TRUE인 경우(예: sys_blsLog0DataRecordingActive가 TRUE인 경우)
지정된 nLogID 숫자의 데이터 로깅 조건이 등록되지 않은 경우.
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
문자열 데이터의 문자 수가 256자 이상인 경우.
FP_FTP_SET_CONNECTION 명령 또는 FTP 클라이언트의 설정 다이얼로그로 정의되지 않은 FTP 서버가 지정된 경우.
이더넷 초기화 중에 명령이 실행되면 sys_iEthernetConnectionErrorCode가 "11: 이더넷이 초기화 중입니다"
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bSetLogTransferFTP: BOOL:=FALSE;
bIsError: BOOL:=FALSE;
bDisableLogTransferFTP: BOOL:=FALSE;
END_VAR
bSetLogTransferFTP 및 bDisableLogTransferFTP이 TRUE로 설정되면 명령이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_VARIN,,0,18,2,20,4,);
B(B_VARIN,,'SV0',18,3,20,5,);
B(B_VARIN,,'LogData',18,4,20,6,);
B(B_VAROUT,,bIsError,37,2,39,4,);
B(B_CONTACT,,bSetLogTransferFTP,5,1,7,3,);
B(B_F,FP_FTP_SET_MODE_TRANSFER_LOG!,,20,0,37,6,,?DEN?DnLogID?DsOperation?DsFTPServerDirectory?AENO?CbError);
L(1,2,5,2);
L(7,2,20,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,bDisableLogTransferFTP,5,1,7,3,);
B(B_VARIN,,0,18,2,20,4,);
B(B_VARIN,,'DISABLE',18,3,20,5,);
B(B_VAROUT,,bIsError,39,2,41,4,);
B(B_F,FP_FTP_TRANSFER_CONTROL_LOG!,,20,0,37,5,,?DEN?DnLogID?DsControl?AENO?AbError);
L(1,2,5,2);
L(37,3,39,3);
L(7,2,20,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bSetLogTransferFTP) Then
FP_FTP_SET_MODE_TRANSFER_LOG(nLogID := 0, sOperation := 'SV0',
sFTPServerDirectory := 'LogData',
bError => bIsError);
End_if;
If (bDisableLogTransferFTP) Then
FP_FTP_TRANSFER_CONTROL_LOG(nLogID := 0, sControl := 'DISABLE', bError => bIsError);
End_if;