Impostazioni server per connessione FTP
Questa istruzione FP definisce le impostazioni server per la connessione al client FTP specificato nella CPU in base a parametri specifici.
Ingresso
Indirizzo server (parametro richiesto)
Parola chiave: SV
Valori: SV0–SV3 (Server 0–Server 3)
Indirizzo IP o nome host (parametro richiesto).
Indirizzo IP
Per un indirizzo IP, specificare la parola chiave IPv4
o IPv6
all'inizio.
Sintassi per IPv4: p.es. 'IPv4=111.122.133.144'
Sintassi per IPv6: p.es. 'IPv6=1111:122:2:1555:0:0:1888'
Si ricorda che per gli indirizzi Ipv4 vi sono restrizioni di intervallo. Quando un indirizzo IP non valido viene specificato con un'istruzione, non vi saranno errori di funzionamento, ma l'uscita bError verrà impostata su TRUE.
Nome host
Parola chiave: HOST
Sintassi: p.es.'HOST=FTP.pidsx.com'
Numero porta (parametro opzionale)
Parola chiave: 'PORT'
Sintassi: 'PORT=xxxxx'
Valori: 1–65535 (default: 21)
Metodo di apertura (parametro opzionale)
Parola chiave: OPEN
Sintassi: 'OPEN=xxxx'
Valori: act
(attivo), pasv
(passivo) (default: act
)
Autenticazione SSL3/TSL1 (parametro opzionale)
Specificare se utilizzare o meno l'autenticazione SSL3/TSL1.
Parole chiave:
SSL
: Utilizza SSL3/TLS1
NON
: SSL3/TLS1 non utilizzato (default)
Connettersi al server FTP numero 0 con indirizzo IP 192.255.2.10, numero porta 21, metodo di apertura attivo, utilizzando l'autenticazione SSL3/TLS1: 'SV0,IPv4=192.255.2.10,PORT=21,OPEN=act,SSL'
Connettersi al server FTP numero 1 con indirizzo IP 1111:1222::1555:0:0:1888, numero porta omesso (utilizzare la porta di default 21), metodo di apertura omesso (utilizzare default = attivo) utilizzando l'autenticazione SSL3/TLS1: 'SV1,IPv6=1111:1222::1555:0:0:1888,SSL'
Connettersi al server FTP numero 2 con nome host FTP.pidsx.com, numero porta 28, metodo di apertura passivo, senza utilizzare l'autenticazione: 'SV2,HOST=FTP.pidsx.com,PORT=28,OPEN=pasv,NON'
Impostare i dati di login
Nome utente (max. 32 caratteri)
Parola chiave: USER
Sintassi: 'USER=xxx'
(default: root). Utilizzare 'USER='
per eliminare il nome utente.
Password (max. 32 caratteri, maiuscole e minuscole consentite)
Parola chiave: PASS
Sintassi: 'PASS=passwd'
(default: root). Utilizzare'PASS='
per eliminare la password.
INITIAL
: Resetta il nome utente e la password alle impostazioni di default "root" e "root".
KEEP
: Mantiene le impostazioni di login attuali.
Esempi:
Impostare il nome utente su "Admin" e la password su "Panasonic": 'USER=Admin,PASS=Panasonic'
Impostare il nome utente su "Supervisor" ed eliminare la password: 'USER=Supervisor,PASS='
Eliminare il nome utente e la password: 'USER=,PASS='
Resettare il nome utente e la password ai valori default: 'INITIAL'
Mantenere nome utente e password attuali: 'KEEP'
Impostare i parametri di comunicazione opzionali come richiesto.
Timeout connessione
Parola chiave: TOUT
Sintassi: 'TOUT=xxx'
(default: 60 secondi)
Valori: 30–300 secondi
Numero di tentativi
Parola chiave: RTRY
Sintassi: 'RTRY=x'
(default: 3 volte)
Valori: 0–3
Intervallo tentativi
Parola chiave: RTTM
Sintassi: 'RTTM=xxxxx'
(default: 600 secondi)
Valori: 10–86400 secondi
Il valore può essere specificato per 10 secondi. È arrotondato per difetto a 10.
Esempio: Quando si specificano 38 secondi, vengono impostati 30 secondi.
Per questo parametro esistono altre due parole chiave disponibili:
INITIAL
: Resets connection timeout, number of retries, and the retry interval to the default settings.
KEEP
: Mantiene le impostazioni di comunicazione attuali.
Esempi:
Imposta timeout di connessione: 30 secondi, numero di tentativi: 2, intervallo tentativi: 500 secondi: 'TOUT=30,RTRY=2,RTTM=500'
Imposta timeout di connessione: 270 secondi, nessun tentativo, intervallo tentativi: 4900 secondi: 'TOUT=270,RTRY=0,RTTM=4900'
Imposta timeout di connessione: 30 secondi, numero di tentativi: 25, intervallo tentativi: non modificare: 'TOUT=30,RTRY=25'
Imposta timeout di connessione: non modificare, numero di tentativi: 25, intervallo tentativi: 3000 secondi: ',RTRY=25,RTTM=3000'
Resetta alle impostazioni di default (timeout di connessione: 60 secondi, numero di tentativi: 3, intervallo tentativi: 600 secondi): 'INITIAL'
Mantieni tutte le impostazioni attuali: 'KEEP'
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.
Separa tutte le voci di parole chiave con una virgola, p.es. 'NAME=abcd,FROM=sender@server.com'
Il numero di caratteri per dati stringa non deve superare 256.
Questa istruzione non è disponibile nei programmi di interrupt.
I caratteri maiuscoli e minuscoli possono essere utilizzati per gli operandi per i quali è possibile specificare una costante di carattere. "Abcd", "ABCD" e "abcd" sono sinonimi, ma i nomi del file fanno distinzione tra maiuscole e minuscole.
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.
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 la stessa parola chiave è specificata più di una volta
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 i numeri dei server 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 un valore specificato per un parametro è fuori dall'intervallo utilizzabile.
se la stessa parola chiave è specificata più di una volta
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 i numeri dei server 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 l'istruzione viene eseguita con un indirizzo IP non corretto, sys_iEthernetConnectionErrorCode viene impostato su "1: Viene specificato un indirizzo IP non corretto"
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
bError: BOOL:=FALSE;
wErrorCode: WORD:=0;
bSetConnectionOK: BOOL:=FALSE;
bSetConnectionError: BOOL:=FALSE;
bSetConnection: BOOL:=FALSE;
END_VAR
Se bSetConnection 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 := 9 ;
NETWORK_BODY
B(B_CONTACT,,bSetConnection,5,1,7,3,R);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_VARIN,,'SV0~IPv4=192.168.178.64~PORT=21~OPEN=pasv~NON',21,5,23,7,);
B(B_VARIN,,'USER=user~PASS=user',21,6,23,8,);
B(B_VARIN,,'TOUT=30~RTRY=0~RTTM=120',21,7,23,9,);
B(B_VAROUT,,bSetConnectionError,36,5,38,7,);
B(B_F,FP_FTP_SET_CONNECTION!,,23,3,36,9,,?DEN?DsServer?DsLogin?DsCommunication?AENO?CbError);
L(7,2,16,2);
L(1,2,5,2);
L(18,2,18,5);
L(18,5,23,5);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bSetConnectionError,6,1,8,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(8,2,25,2);
L(1,2,6,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,,bError,6,1,8,3,N);
B(B_COIL,,bSetConnectionOK,28,1,30,3,);
L(8,2,28,2);
L(1,2,6,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetConnection) AND NOT sys_bIsEthernetInitializing then
FP_FTP_SET_CONNECTION(sServer := 'SV0,IPv4=192.168.178.64,PORT=21,OPEN=pasv,NON',
sLogin := 'USER=user,PASS=user',
sCommunication := 'TOUT=30,RTRY=0,RTTM=120',
bError => bSetConnectionError);
End_if;
If (bSetConnectionError) then
wErrorCode := sys_iEthernetConnectionErrorCode;
End_if;
If NOT bError then
bSetConnectionOK := TRUE;
End_if;