FP_FTP_SET_MODE

FTP 전송 모드 설정

이 FP 명령은 nTransferID로 지정된 전송 설정 영역에 sOperation, sPLCFullFileNameOrDataFormatsFTPServerFullFileName의 HTTP 클라이언트 전송 설정을 저장합니다.

파라미터

입력

nTransferID (WORD, INT, UINT)

전송 설정 ID를 설정합니다.

값: 0–15(값은 오름차순으로 입력해야 함)

sOperation (STRING)

전송 방법 파라미터를 설정합니다.

  • 서버 어드레스(필수 파라미터)

    키워드: SV

    구문: 'SVx'

    값: SV0–SV3 (Server 0–Server 3)

  • 전송 대상 및 방법(필수 파라미터)

    파라미터 문자열

    타겟

    전송 방법

    PUTFILE

    파일

    서버로 전송(덮어쓰기 방식)

    PUTFILE-OVW

    서버로 전송(덮어쓰기 방식)

    PUTFILE-REN

    서버로 전송(이름 변경 방식)

    GETFILE

    서버에서 가져오기

    PUTDATA

    메모리 영역

    서버로 전송(덮어쓰기 방식)

    PUTDATA-OVW

    서버로 전송(덮어쓰기 방식)

    PUTDATA-REN

    서버로 전송(이름 변경 방식)

    GETDATA

    서버에서 가져오기

  • 전송 후 파일 처리(필수 파라미터)

    • DEL: 파일 삭제

    • NON: 파일을 삭제하지 말 것

예:
  1. 덮어쓰기 방식을 사용하여 FTP 서버 1로 파일 전송, 전송 후 파일 삭제하지 않음: 'SV1,PUTFILE-OVW,NON'

  2. 이름 바꾸기 방법을 사용하여 FTP 서버 0으로 파일 전송, 전송 후 파일 삭제: 'SV0,PUTFILE-REN,DEL'

  3. FTP 서버 2에서 파일 가져오기, 전송 후 파일 삭제: 'SV2,GETFILE,DEL'

sPLCFullFileNameOrDataFormat (STRING)

전송 대상(메모리 영역의 파일 또는 데이터) 및 전송 방법(PUT 또는 GET)에 따라 설정을 지정합니다.

변수 데이터는 FP_FTP_GET_DATA_FORMAT을 사용하여 전송할 수 있습니다. 명령의 출력이 sPLCFullFileNameOrDataFormat에 연결되어 변수의 데이터 형식 문자열(메모리 영역, 크기 및 데이터 유형)을 지정하는 문자열을 읽습니다. 전송된 데이터는 변수의 데이터 유형에 따라 CSV 파일에 쓰거나 CSV 파일에서 읽습니다.

  • 전송 대상: 파일

    소스 파일 이름을 설정합니다.

    • PUTFILE의 경우: 상대 경로로 SD 카드에 저장된 파일의 이름을 지정합니다. : '\LOG\MyData.csv'

    • GETFILE의 경우: 상대 경로를 사용하여 FTP 서버에 로깅한 사용자의 홈 디렉토리에서 파일 이름을 지정합니다. : '\LOG\MyData.csv'

  • 전송 대상: 메모리 영역의 데이터

    • PUTDATA의 경우: FP_FTP_GET_DATA_FORMAT의 입력에 연결된 변수에 저장된 데이터는 sFTPServerFullFileName에 의해 지정된 csv 파일에 기록됩니다. 이 전송 방법의 경우 파일 이름에 yymmdd_hhmmss 형식의 타임 스탬프를 추가할 수 있습니다. 키워드 'TOP''END'를 사용하여 파일 이름 에 타임 스탬프를 추가할지 여부를 지정합니다.

    • GETDATA의 경우: sFTPServerFullFileName에 의해 지정된 csv 파일의 데이터는 FP_FTP_GET_DATA_FORMATVar 입력에 연결된 변수에 기록됩니다

sFTPServerFullFileName (STRING)

전송 대상(메모리 영역의 파일 또는 데이터) 및 전송 방법(PUT 또는 GET)에 따라 설정을 지정합니다.

  • 전송 대상: 파일

    • PUTFILE의 경우: FTP 서버에 로그인하는 사용자의 홈 디렉토리에서 상대 경로를 사용하여 폴더 이름을 지정합니다. 홈 디렉토리 지정 시 "/" 또는 "\"만 지정합니다.

    • GETFILE의 경우: 상대 경로를 사용하여 SD 카드에 저장소 폴더 이름을 지정합니다.

  • 전송 대상: 메모리 영역의 데이터

    • PUTDATA의 경우: 데이터를 쓸 대상 csv 파일 이름을 지정합니다. 이 전송 방법의 경우 파일 이름에 yymmdd_hhmmss 형식의 타임 스탬프를 추가할 수 있습니다. 키워드 'TOP''END'를 사용하여 파일 이름 에 타임 스탬프를 추가할지 여부를 지정합니다.

      예:

      1. 디렉토리 "\FTP"에 있는 대상 파일 "PutData1.bin"으로 데이터 전송합니다. 타임 스탬프를 추가하지 마십시오. '\FTP\PutData1.bin'

      2. 디렉토리 "\FTP"에 있는 대상 파일 "PutData2.bin"으로 데이터를 전송합니다. 파일 이름 시작 부분에 타임 스탬프를 추가합니다. '\FTP\PutData2.bin,TOP'

      3. 디렉토리 "\FTP"에 있는 대상 파일 "PutData3.bin"으로 데이터를 전송합니다. 파일 이름 끝에 타임 스탬프를 추가합니다. '\FTP\PutData3.bin,END'

    • GETDATA의 경우: 데이터를 읽을 소스 csv 파일 이름을 지정합니다. FTP 서버에 로그인하는 사용자의 홈 디렉토리에서 상대 경로를 사용하여 파일 이름과 폴더 이름을 지정합니다.

출력

bError (BOOL)

다음 조건에서 TRUE로 전환:

  • 연결 타임아웃 시간을 초과한 경우

  • IP 어드레스가 유효하지 않을 경우

에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.

주석

  • 문자 데이터의 문자수는 256을 초과하지 않아야 합니다.

  • 인터럽트 프로그램에서는 이 명령을 사용할 수 없습니다.

  • 명령을 실행하기 전에 FP_FTP_SET_CONNECTION을 사용하거나 FTP 클라이언트의 설정 다이얼로그를 사용하여 FTP 서버를 지정해야 합니다.

  • 명령을 실행하기 전에 sys_bIsEthernetInitializingFALSE인지 확인하십시오. 명령이 실행되면 sys_bIsEthernetInitializingTRUE로 전환됩니다. sys_bIsEthernetInitializingTRUE일 때 명령을 실행하면 에러가 발생합니다.

  • 지정된 전송 설정 또는 지정된 nLogID 번호에 대한 전송 요청 플래그가 FALSE인 경우에만 명령을 실행할 수 있습니다. 전송 요청 플래그가 TRUE인 경우 연산 에러가 발생합니다.

  • 이 명령이 성공적으로 실행되면 시스템 변수 sys_bIsCarrysys_iEthernetConnectionErrorCode가 초기화됩니다.

  • FTP 클라이언트 전송 설정이 완료되면 FP_FTP_TRANSFER_REQUEST 가 실행될 때 데이터가 파일로 전송되거나 파일에서 얻어집니다.

  • 에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 파라미터에 지정된 값이 허용 범위를 벗어난 경우.

  • 전송 ID가 오름차순으로 지정되지 않은 경우.

  • 명령을 인터럽트 프로그램에서 실행한 경우.

  • 문자열 데이터의 문자 수가 256자 이상인 경우.

  • FP_FTP_SET_CONNECTION 명령 또는 FTP 클라이언트의 설정 다이얼로그로 정의되지 않은 FTP 서버가 지정된 경우.

  • 명령이 실행될 때 지정된 전송 설정에 대한 전송 요청 플래그가 "TRUE: 전송 요청됨"인 경우

  • 지정된 nLogID 번호에 대한 전송 요청 플래그가 TRUE인 경우(예: sys_blsLog0DataRecordingActiveTRUE인 경우)

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 파라미터에 지정된 값이 허용 범위를 벗어난 경우.

  • 전송 ID가 오름차순으로 지정되지 않은 경우.

  • 명령을 인터럽트 프로그램에서 실행한 경우.

  • 문자열 데이터의 문자 수가 256자 이상인 경우.

  • FP_FTP_SET_CONNECTION 명령 또는 FTP 클라이언트의 설정 다이얼로그로 정의되지 않은 FTP 서버가 지정된 경우.

  • 명령이 실행될 때 지정된 전송 설정에 대한 전송 요청 플래그가 "TRUE: 전송 요청됨"인 경우

  • 지정된 nLogID 번호에 대한 전송 요청 플래그가 TRUE인 경우(예: sys_blsLog0DataRecordingActiveTRUE인 경우)

sys_bIsCarry(스캔 1회에 대해 TRUE로 전환)
  • 이더넷 초기화 중에 명령이 실행되면 sys_iEthernetConnectionErrorCode가 "11: 이더넷이 초기화 중입니다"

POU 헤더

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

	VAR
		bSetModeFileError: BOOL:=FALSE;
		bSetModeFileOK: BOOL:=FALSE;
		iID10: INT:=10;
		bSetModeFile: BOOL:=FALSE;
		wErrorCode: WORD:=0;
	END_VAR

POU 본문

bSetModeFileFALSE에서 TRUE로 변경되고 sys_bIsEthernetInitializingFALSE면 이 명령이 실행됩니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer file located on SD card of FP7 PLC,4,1,34,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFile,5,1,7,3,R);
B(B_VARIN,,'SV0~PUTDATA-OVW~NON',23,3,25,5,);
B(B_VARIN,,'\CSV_FILES\Data1.csv',23,4,25,6,);
B(B_VAROUT,,bSetModeFileError,43,2,45,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',23,5,25,7,);
B(B_VARIN,,iID10,23,2,25,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,FP_FTP_SET_MODE!,,25,0,41,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(18,2,25,2);
L(1,0,1,7);
L(41,3,43,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,);
B(B_F,E_MOVE!,,25,0,31,4,,?DEN?D?AENO?C);
B(B_VARIN,,sys_iEthernetConnectionErrorCode,23,2,25,4,);
B(B_VAROUT,,wErrorCode,31,2,33,4,);
L(7,2,25,2);
L(1,2,5,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,N);
B(B_COIL,,bSetModeFileOK,28,1,30,3,);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

If DF(bSetModeFile) AND NOT sys_bIsEthernetInitializing then
    FP_FTP_SET_MODE(nTransferID := iID10,
                    sOperation := 'SV0,PUTDATA-OVW,NON',
                    sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
                                                    nSize := Size_Of_Var(arrayValues),
                                                    nColumns := 8), 
                                                    sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
                                                    bError => bSetModePlcDataError);
End_if;
If (bSetModePlcDataError) then
    wErrorCode := sys_iEthernetConnectionErrorCode;
Else
    bSetModePlcDataOK := True;
End_If;

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