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.
Ingresso
Impostare l'ID di impostazione di trasferimento.
Valori: 0–15 (i valori devono essere immessi in ordine crescente)
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'
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'
Specificare l'URL del server.
Esempio: '\data.csv'
Uscita
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.
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.
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.
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.
se l'istruzione viene eseguita durante l'inizializzazione di Ethernet, sys_iEthernetConnectionErrorCode viene impostato su "11: Ethernet viene inizializzato".
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
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.
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
(* 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;