Generare stringa formato di dati per protocollo SMTP
Questa istruzione FP genera una stringa che specifica il formato dati (indirizzo FP e lunghezza) in base al tipo di dati all'ingresso Var. Scrive la stringa nella variabile di uscita sDataFormat adatta all'ingresso sAttachment dell'istruzione FP_SMTP_SET_MODE.
Quando i registri dati vanno trasmessi con FP_SMTP_SET_MODE, viene generato un file .csv file dei valori di dati indicati. Durante il trasferimento, i dati vengono convertiti in ASCII in base al tipo di dato. Pertanto l'ingresso sAttachment richiede ulteriori informazioni che indichino quali dati vadano convertiti in un determinato tipo ASCII.
Ingresso
Tipo di dato semplice o array di tipi di dati semplici p.es. BOOL, INT, UINT, STRING, ...
Restrizione: ARRAY..OF..STRING non ammesso
Dimensione dei dati in word o per le stringhe in unità byte.
Uscita
Stringa che specifica il formato dati per l'ingresso sAttachment di FP_SMTP_SET_MODE
Prima di eseguire l'istruzione, è necessario specificare le impostazioni di trasmissione e-mail utilizzando FP_SMTP_SET_MODE o la finestra di dialogo di impostazione del client SMTP.
Prima di eseguire l'istruzione, è necessario specificare le impostazioni del gruppo e delle e-mail dell'evento utilizzando FP_SMTP_SET_GROUP o la finestra di dialogo di impostazione del client SMTP.
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.
Quando si verifica un errore, controllare la variabile di sistema sys_iEthernetConnectionErrorCode per verificare il numero di codice di errore.
se un timeout della connessione viene superato
se un indirizzo IP non è valido
se un timeout della connessione viene superato
se un indirizzo IP non è valido
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
arrayValues_UDINT: ARRAY [0..19] OF UDINT;
bError: BOOL:=FALSE;
bSetMode: BOOL:=FALSE;
iID8: INT:=8;
END_VAR
Se bSetMode 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 := 14 ;
NETWORK_BODY
B(B_VARIN,,iID8,42,2,44,4,);
B(B_CONTACT,,bSetMode,4,1,6,3,R);
B(B_VAROUT,,bError,57,2,59,4,);
B(B_VARIN,,'GRPNO=0~SUBJECT=Time Notify Mail',42,4,44,6,);
B(B_VARIN,,'Hello~ this is time notify Mail from system. See attachment',42,5,44,7,);
B(B_VARIN,,'INFO=ADD~ATT=DATA;',11,7,13,9,);
B(B_VARIN,,'TRIG=TIME~/day~13:30:00',42,3,44,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,13,1,15,3,N);
B(B_VARIN,,arrayValues_UDINT,11,9,13,11,);
B(B_F,CONCAT-2!,,37,7,43,10,,?D?D?C);
B(B_F,Size_Of_Var!,,15,10,22,12,,?D?C);
B(B_F,FP_SMTP_GET_DATA_FORMAT!,,22,8,37,12,,?D@'Var'?DnSize?CsDataFormat);
B(B_F,FP_SMTP_SET_MODE!,,44,0,57,8,,?DEN?DnTransferID?DsTrigger?DsGroupNumber_Subject?DsBodyText?DsAttachment?AENO?CbError);
L(1,2,4,2);
L(6,2,13,2);
L(15,2,44,2);
L(37,9,37,10);
L(13,8,37,8);
L(15,10,15,11);
L(13,10,22,10);
L(43,7,43,8);
L(43,7,44,7);
L(1,0,1,14);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetMode) And not sys_bIsEthernetInitializing then
FP_SMTP_SET_MODE(nTransferID := iID8,
sTrigger := 'TRIG=TIME,/day,13:30:00',
sGroupNumber_Subject := 'GRPNO=0,SUBJECT=Time Notify Mail',
sBodyText := 'Hello, this is time notify Mail from system. See attachment',
sAttachment := CONCAT('INFO=ADD,ATT=DATA;',
FP_SMTP_GET_DATA_FORMAT(arrayValues_UDINT,
Size_Of_Var(arrayValues_UDINT))),
bError => bError);
End_If;