FP_HTTP_SET_MODE

Impostare modalità di trasferimento HTTP

Questa istruzione FP memorizza le impostazioni di trasferimento del client HTTP sOperation, sPLCDataFormat e sHTTPServerURL nell'area delle impostazioni di trasferimento specificata da nTransferID.

Parametri

Ingresso

nTransferID (WORD, INT, UINT)

Impostare l'ID di impostazione di trasferimento.

Valori: 0–15 (i valori devono essere immessi in ordine crescente)

sOperation (STRING)

Impostare i parametri del metodo di trasferimento.

  • Indirizzo server

    Parola chiave: SV

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

  • Specificare l'area di memoria e il tipo di trasferimento (invio o ricezione di dati)

    • Utilizzare la parola chiave UPLOAD per inviare i dati.

    • Utilizzare la parola chiave DOWNLOAD per ottenere i dati.

    • Utilizzare la parola chiave UPDOWN per inviare e ottenere i dati.

    Specificare il comando da utilizzare per il trasferimento.

    • Utilizzare la parola chiave POST per inviare i dati (disponibile solo per i tipi di trasferimento UPLOAD e UPDOWN).

    • Utilizzare la parola chiave GET per ottenere i dati.

    Esempio: Caricare i dati dall'area di memoria al server HTTP 3: 'SV3,UPDOWN,POST'

sPLCDataFormat (STRING)

Specificare i dati da trasferire. In alternativa utilizzare l'istruzione FP_HTTP_GET_DATA_FORMAT.

Esempio: area di memoria: DT100000, numero di byte: 250 byte, numero massimo di acquisizioni: 250 byte: 'DT100000,250,250'

sHTTPServerURL (STRING)

Specificare l'URL del server.

Esempio: '\data.csv'

Uscita

bError (BOOL)

Passa a TRUE nelle seguenti condizioni:

  • se un timeout della connessione viene superato

  • se un indirizzo IP non è valido

Quando si verifica un errore, controllare la variabile di sistema sys_iEthernetConnectionErrorCode per verificare il numero di codice di errore.

Note

  • Il numero di caratteri per dati stringa non deve superare 256.

  • Questa istruzione non è disponibile nei programmi di interrupt.

  • Prima di eseguire l'istruzione, è necessario specificare il server HTTP utilizzando FP_HTTP_SET_CONNECTION o la finestra di dialogo del client HTTP.

  • Prima di eseguire l'istruzione, assicurarsi che sys_bIsEthernetInitializing sia FALSE. sys_bIsEthernetInitializing passa a TRUE quando l'istruzione viene eseguita. Se si esegue l'istruzione mentresys_bIsEthernetInitializing è TRUE, si verifica un errore.

  • L'istruzione può essere eseguita solo se il flag di richiesta di trasferimento per l'impostazione di trasferimento specificata è "FALSE: Nessuna richiesta di trasferimento". Quando la richiesta di trasferimento è "TRUE: Richiesta di trasferimento", si verifica un errore di funzionamento.

  • Quando questa istruzione è stata eseguita correttamente, le variabili di sistema sys_bIsCarry e sys_iEthernetConnectionErrorCode vengono resettate.

  • Dopo che le impostazioni di trasferimento client HTTP sono state completate, i dati vengono effettivamente inviati o acquisiti quando l'istruzione FP_HTTP_TRANSFER_REQUEST viene eseguito.

  • Il numero di byte che può essere trasferito simultaneamente è di 1 MB per tutti e 16 gli ID di trasferimento.

  • Quando si verifica un errore, controllare la variabile di sistema sys_iEthernetConnectionErrorCode per verificare il numero di codice di errore.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se un valore specificato per un parametro è fuori dall'intervallo utilizzabile.

  • se gli ID di trasferimento non sono specificati in ordine crescente.

  • se l'istruzione viene eseguita in un programma di interrupt

  • se il numero di caratteri per dati stringa supera 256.

  • se viene specificato un server HTTP che non è stato configurato con l'istruzione FP_HTTP_SET_CONNECTION o la finestra di dialogo di impostazione del client HTTP.

  • Se il flag di richiesta di trasferimento per l'impostazione di trasferimento specificata è "TRUE: Trasferimento richiesto" quando l'istruzione viene eseguita.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se un valore specificato per un parametro è fuori dall'intervallo utilizzabile.

  • se gli ID di trasferimento non sono specificati in ordine crescente.

  • se l'istruzione viene eseguita in un programma di interrupt

  • se il numero di caratteri per dati stringa supera 256.

  • se viene specificato un server HTTP che non è stato configurato con l'istruzione FP_HTTP_SET_CONNECTION o la finestra di dialogo di impostazione del client HTTP.

  • Se il flag di richiesta di trasferimento per l'impostazione di trasferimento specificata è "TRUE: Trasferimento richiesto" quando l'istruzione viene eseguita.

sys_bIsCarry (passa a TRUE per una scansione)
  • se l'istruzione viene eseguita durante l'inizializzazione di Ethernet, sys_iEthernetConnectionErrorCode viene impostato su "11: Ethernet viene inizializzato".

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	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

Corpo del POU

Il primo esempio utilizza una stringa source contenente un massimo di 32767 caratteri, il secondo esempio utilizza un indirizzo DT per salvare la stringa source con oltre 32767 caratteri.

Corpo 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

Corpo 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;

L'ultima revisione: 2024-12-18Feedback su questa paginaPanasonic hotline