Impostare modalità di trasferimento FTP
Questa istruzione FP memorizza le impostazioni di trasferimento del client FTP sOperation, sPLCFullFileNameOrDataFormat e sFTPServerFullFileName 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 (parametro richiesto)
Parola chiave: SV
Sintassi: 'SVx'
Valori: SV0–SV3 (Server 0–Server 3)
Target e metodo di trasferimento (parametro richiesto)
Stringa parametro |
Target |
Metodo di trasferimento |
---|---|---|
|
File |
Invia ai server (Metodo di sovrascrittura) |
|
Invia ai server (Metodo di sovrascrittura) |
|
|
Invia ai server (Metodo di rinomina) |
|
|
Ricevi dai server |
|
|
Area di memoria |
Invia ai server (Metodo di sovrascrittura) |
|
Invia ai server (Metodo di sovrascrittura) |
|
|
Invia ai server (Metodo di rinomina) |
|
|
Ricevi dai server |
Gestione file dopo il trasferimento (parametro richiesto)
DEL
: elimina il file
NON
: non eliminare il file
Invia il file al server FTP 1 utilizzando il metodo di sovrascrittura, non eliminare il file dopo il trasferimento: 'SV1,PUTFILE-OVW,NON'
Invia il file al server FTP 0 utilizzando il metodo di rinomina, eliminare il file dopo il trasferimento: 'SV0,PUTFILE-REN,DEL'
Ottieni il file dal server FTP 2, elimina il file dopo il trasferimento: 'SV2,GETFILE,DEL'
Crea le impostazioni in base al target di trasferimento (file o dati dall'area di memoria) e il metodo di trasferimento (PUT o GET).
Il trasferimento dei dati di una variabile può avvenire per mezzo dell'istruzione FP_FTP_GET_DATA_FORMAT. L'uscita di tale istruzione verrà collegata a sPLCFullFileNameOrDataFormat per leggere la stringa che specifica la stringa formato di dati della variabile (area di memoria, dimensioni e tipo di dati). I dati trasmessi vengono scritti su un file csv o letti da un file csv in base al tipo di dato della variabile.
Target trasferimento: file
Imposta il nome file source.
Per PUTFILE
: Specificare il nome del file di un file memorizzato su una SD card con un percorso relativo. Esempio: '\LOG\MyData.csv'
Per GETFILE
: Specificare un nome del file dalla directory della home di un utente che accede ai server FTP con un percorso relativo. Esempio: '\LOG\MyData.csv'
Target trasferimento: dati da area di memoria
Per PUTDATA
: I dati memorizzati nella variabile collegata all'ingresso di FP_FTP_GET_DATA_FORMAT vengono scritti nel file csv specificato da sFTPServerFullFileName. Per questo metodo di trasferimento è possibile aggiungere un timbro data/ora nel formato yymmdd_hhmmss al nome del file. Utilizzare le parole chiave 'TOP'
ed 'END'
per specificare se aggiungere il timbro data/ora prima o dopo il nome del file.
Per GETDATA
: I dati del file csv specificati da sFTPServerFullFileName vengono scritti nella variabile collegata all'ingresso Var di FP_FTP_GET_DATA_FORMAT.
Crea le impostazioni in base al target di trasferimento (file o dati dall'area di memoria) e il metodo di trasferimento (PUT o GET).
Target trasferimento: file
Per PUTFILE
: Specificare un nome cartella con il suo percorso relativo dalla directory della home dell'utente che accede al server FTP. Per specificare la directory della home, specificare esclusivamente "/" o "\".
Per GETFILE
: Specificare un nome per la cartella di memorizzazione in una SD card con un percorso relativo.
Target trasferimento: dati da area di memoria
Per PUTDATA
: Specificare un nome del file di destinazione csv su cui scrivere i dati. Per questo metodo di trasferimento è possibile aggiungere un timbro data/ora nel formato yymmdd_hhmmss al nome del file. Utilizzare le parole chiave 'TOP'
ed 'END'
per specificare se aggiungere il timbro data/ora prima o dopo il nome del file.
Esempi:
Trasferire i dati al file di destinazione "PutData1.bin" che si trova nella directory "\FTP", non aggiungere un timbro data/ora: '\FTP\PutData1.bin'
Trasferire i dati al file di destinazione "PutData2.bin" che si trova nella directory "\FTP", aggiungere un timbro data/ora all'inizio del nome del file: '\FTP\PutData2.bin,TOP'
Trasferire i dati al file di destinazione "PutData3.bin" che si trova nella directory "\FTP", aggiungere un timbro data/ora alla fine del nome del file: '\FTP\PutData3.bin,END'
Per GETDATA
: Specificare un nome del file source csv da cui leggere i dati. Specificare un nome del file e un nome cartella con il suo percorso relativo dalla directory della home dell'utente che accede al server FTP.
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 FTP utilizzando FP_FTP_SET_CONNECTION o la finestra di dialogo di impostazione del client FTP.
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 o il numero nLogID specificato è FALSE. Quando la richiesta di trasferimento è TRUE, 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 FTP sono state completate, i dati vengono inviati ai file o vengono ottenuti dai file quando FP_FTP_TRANSFER_REQUEST viene eseguito.
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 FTP che non è stato configurato con l'istruzione FP_FTP_SET_CONNECTION o la finestra di dialogo di impostazione del client FTP.
Se il flag di richiesta di trasferimento per l'impostazione di trasferimento specificata è "TRUE: Trasferimento richiesto" quando l'istruzione viene eseguita.
Se il flag di richiesta di trasferimento per un numero nLogID specificato è TRUE, p.es. se sys_blsLog0DataRecordingActive è 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 FTP che non è stato configurato con l'istruzione FP_FTP_SET_CONNECTION o la finestra di dialogo di impostazione del client FTP.
Se il flag di richiesta di trasferimento per l'impostazione di trasferimento specificata è "TRUE: Trasferimento richiesto" quando l'istruzione viene eseguita.
Se il flag di richiesta di trasferimento per un numero nLogID specificato è TRUE, p.es. se sys_blsLog0DataRecordingActive è TRUE.
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
bSetModeFileError: BOOL:=FALSE;
bSetModeFileOK: BOOL:=FALSE;
iID10: INT:=10;
bSetModeFile: BOOL:=FALSE;
wErrorCode: WORD:=0;
END_VAR
Se bSetModeFile passa da FALSE a TRUE e sys_bIsEthernetInitializing è impostato su FALSE, l'istruzione viene eseguita.
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
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;