Générer une chaîne de caractères du format des données pour le protocole SMTP
Cette instruction FP génère une chaîne de caractères spécifiant le format des données (adresse FP et longueur) selon le type de données en entrée Var. Elle écrit la chaîne de caractères dans la variable de sortie sDataFormat qui est adaptée à l’entrée sAttachment de l’instruction FP_SMTP_SET_MODE.
Lorsque les registres de données doivent être transmis avec FP_SMTP_SET_MODE, un fichier .csv des valeurs de données est généré. Pendant le transfert, les données sont converties en données ASCII selon le type de données. Par conséquent, l’entrée sAttachment requiert des informations supplémentaires spécifiant quelles données doivent être converties en quel type de données ASCII.
Entrée
Type de données simple ou tableau (Array) de types de données simples, par ex. BOOL, INT, UINT, STRING, ...
Restriction : ARRAY..OF..STRING n’est pas autorisé
Taille des données en mots ou pour des chaînes de caractères en octets.
Sortie
Chaîne de caractères spécifiant le format des données pour l’entrée sAttachment de FP_SMTP_SET_MODE
Avant d’exécuter l’instruction, les paramètres d’envoi d’e-mails doivent être entrés à l’aide de FP_SMTP_SET_MODE ou de la boîte de dialogue de paramétrage du client SMTP.
Avant d’exécuter l’instruction, les paramètres de groupes et d’e-mails d’événements doivent être entrés à l’aide de FP_SMTP_SET_GROUP ou de la boîte de dialogue de paramétrage du client SMTP.
L’instruction ne peut être exécutée que lorsque le drapeau de requête de transfert pour la configuration de transfert spécifiée est "FALSE : Pas de requête de transfert". Lorsque le drapeau de requête de transfert est "TRUE : Requête de transfert", une erreur d’opération apparaît.
Lorsque l’instruction a été exécutée avec succès, les variables système sys_bIsCarry et sys_iEthernetConnectionErrorCode sont réinitialisées.
Lorsqu’une erreur apparaît, utilisez la variable système sys_iEthernetConnectionErrorCode pour connaître le numéro de code d’erreur.
Si le temps d’attente de connexion est dépassé.
Si une adresse IP est invalide.
Si le temps d’attente de connexion est dépassé.
Si une adresse IP est invalide.
Si l’instruction est exécutée pendant l’initialisation d’Ethernet, sys_iEthernetConnectionErrorCode est définie sur "11 : initialisation Ethernet en cours".
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
arrayValues_UDINT: ARRAY [0..19] OF UDINT;
bError: BOOL:=FALSE;
bSetMode: BOOL:=FALSE;
iID8: INT:=8;
END_VAR
Lorsque bSetMode passe de FALSE à TRUE et lorsque sys_bIsEthernetInitializing est FALSE, l’instruction est exécutée.
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;