FP_HTTP_SET_MODE

HTTP 전송 모드 설정

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

파라미터

입력

nTransferID (WORD, INT, UINT)

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

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

sOperation (STRING)

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

  • 서버 어드레스

    키워드: SV

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

  • 메모리 영역 및 전송 유형을 지정합니다(데이터 전송 또는 가져오기).

    • 데이터 전송에는 키워드 UPLOAD를 사용하십시오.

    • 데이터 받기에는 키워드 DOWNLOAD를 사용하십시오.

    • 데이터 전송 및 받기에는 키워드 UPDOWN을 사용하십시오.

    전송에 사용할 명령을 지정합니다.

    • 데이터 전송에는 키워드 POST(UPLOADUPDOWN 전송 유형에서만 사용 가능)를 사용하십시오.

    • 데이터 받기에는 키워드 GET를 사용하십시오.

    예: 메모리 영역에서 HTTP 서버 3으로 데이터 업로드: 'SV3,UPDOWN,POST'

sPLCDataFormat (STRING)

전송할 데이터를 지정합니다. 또는 FP_HTTP_GET_DATA_FORMAT. 명령을 사용하십시오.

예: 메모리 영역: DT100000, 바이트 수: 250바이트, 최대 획득 수: 250바이트: 'DT100000,250,250'

sHTTPServerURL (STRING)

서버 URL을 지정합니다.

예: '\data.csv'

출력

bError (BOOL)

다음 조건에서 TRUE로 전환:

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

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

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

주석

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

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

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

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

  • 지정된 전송 설정에 대한 전송 요청 플래그가 "FALSE: 전송 요청 없음"인 경우에만 이 명령이 실행됩니다. 전송 요청 플래그가 "TRUE: 전송 요청됨"이면, 연산 에러가 발생합니다.

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

  • HTTP 클라이언트 전송 설정을 구성한 후에는 FP_HTTP_TRANSFER_REQUEST 명령이 실행될 때 데이터가 실제로 전송되거나 획득됩니다.

  • 동시에 전송할 수 있는 바이트 수는 16개의 전송 ID 모두에 대해 1MB입니다.

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

에러 플래그

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

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

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

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

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

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

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

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

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

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

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

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

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

POU 헤더

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

	VAR
		sDestURL: STRING[32]:='\data.csv';
		sStringData: STRING[32767]:='';
		iID5: INT:=5;
		bSetModeAsciiDataArea: BOOL:=FALSE;
		bSetModeStringData: BOOL:=FALSE;
		bErrorModeStringData: BOOL:=FALSE;
		bErrorModeAsciiDataArea: BOOL:=FALSE;
	END_VAR

POU 본문

첫 번째 예제는 최대 32767자를 포함한 source 문자열을 사용하며, 두 번째 예제는 DT 어드레스를 사용하여 32767자 이상을 가진 source 문자열을 저장합니다.

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 HTTP data stored in string variable (strings can only contain max. of 32767 characters),4,1,45,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_VARIN,,iID5,40,2,42,4,);
B(B_VARIN,,'SV0~DOWNLOAD,GET',40,3,42,5,);
B(B_CONTACT,,bSetModeStringData,5,1,7,3,R);
B(B_VARIN,,'/data.csv',40,5,42,7,);
B(B_VAROUT,,bErrorModeStringData,53,2,55,4,);
B(B_VARIN,,sStringData,8,4,10,6,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,MAX_LEN!,,10,5,16,7,,?D?C);
B(B_F,FP_HTTP_GET_DATA_FORMAT!,,16,3,31,7,,?D@'Var'?DnNumberOfCharacters?CsDataFormat);
B(B_F,FP_HTTP_SET_MODE!,,42,0,53,7,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(10,5,10,6);
L(10,5,16,5);
L(31,5,42,5);
L(18,2,42,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer HTTP data stored in memory area > 32767 characters,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 := 8 ;
        NETWORK_BODY
B(B_VARIN,,iID5,39,3,41,5,);
B(B_VARIN,,'SV0~UPDOWN,POST',39,4,41,6,);
B(B_VARIN,,'DT100000~102345~12345',39,5,41,7,);
B(B_CONTACT,,bSetModeAsciiDataArea,5,2,7,4,R);
B(B_VARIN,,sDestURL,39,6,41,8,);
B(B_VAROUT,,bErrorModeAsciiDataArea,52,3,54,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,2,18,4,N);
B(B_F,FP_HTTP_SET_MODE!,,41,1,52,8,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,3,5,3);
L(7,3,16,3);
L(18,3,41,3);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

(* Set mode to transfer HTTP data stored in string variable (strings can only contain max. of 32767 characters) *)
If DF(bSetModeStringData) And not sys_bIsEthernetInitializing then
    FP_HTTP_SET_MODE(nTransferID := iID5,
                     sOperation := 'SV0,DOWNLOAD,GET',
                     sPLCDataFormat := FP_HTTP_GET_DATA_FORMAT(sStringData, LEN(sStringData)), 
                     sHTTPServerURL := '/data.csv',
                     bError => bErrorModeStringData);
End_if;
(* Set mode to transfer HTTP data stored in memory area > 32767 characters  *)
If DF(bSetModeAsciiDataArea) And not sys_bIsEthernetInitializing then
        FP_HTTP_SET_MODE(nTransferID := iID5,
                         sOperation := 'SV0,UPDOWN,POST',
                         sPLCDataFormat := 'DT100000,102345,12345', 
                         sHTTPServerURL := sDestURL,
                         bError => bErrorModeAsciiDataArea);
End_if;

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