FP_FTP_GET_DATA_FORMAT

Générer une chaîne de caractères du format des données pour le protocole FTP

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 sPLCFullFileNameOrDataFormat de l’instruction FP_FTP_SET_MODE.

Paramètres

Entrée

Var (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

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é

nSize (WORD, INT, UINT)

Taille des données en mots ou pour des chaînes de caractères en octets.

nColumns (WORD, INT, UINT)

Nombre d’éléments après qu’une nouvelle ligne a été insérée dans le fichier converti .csv

Sortie

sDataFormat (STRING)

Chaîne de caractères spécifiant le format des données pour l’entrée sPLCFullFileNameOrDataFormat de FP_FTP_SET_MODE

Remarques

  • Avant d’exécuter l’instruction, les paramètres de transfert doivent être entrés à l’aide de FP_FTP_SET_MODE ou de la boîte de dialogue de paramétrage du client FTP.

  • Avant d’exécuter l’instruction, vérifiez que sys_bIsEthernetInitializing est FALSE. sys_bIsEthernetInitializing passe à TRUE lorsque l’instruction est exécutée. Lorsque l’instruction est exécutée alors que sys_bIsEthernetInitializing est TRUE, une erreur apparaît.

  • 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.

  • Les données de configuration Ethernet enregistrées dans l’automate sont remplacées temporairement par les données de l’instruction. Lorsque l’automate est rallumé, les données de configuration Ethernet sauvegardées dans l’automate sont réutilisées.

  • Les données ne sont envoyées ou lues que lorsque la configuration des paramètres de transfert du client FTP est terminée et lorsque l’instruction FP_FTP_TRANSFER_REQUEST est exécutée.

  • Lorsqu’une erreur apparaît, utilisez la variable système sys_iEthernetConnectionErrorCode pour connaître le numéro de code d’erreur.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si le temps d’attente de connexion est dépassé.

  • Si une adresse IP est invalide.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si le temps d’attente de connexion est dépassé.

  • Si une adresse IP est invalide.

sys_bIsCarry (passe à TRUE pendant un cycle)
  • Si l’instruction est exécutée pendant l’initialisation d’Ethernet, sys_iEthernetConnectionErrorCode est définie sur "11 : initialisation Ethernet en cours".

Exemple

En-tête du POU

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
		bSetModePlcData: BOOL:=FALSE;
		bSetModePlcDataError: BOOL:=FALSE;
		arrayValues: ARRAY[0..15] OF REAL:=[16(0.0)];
		iID10: INT:=10;
	END_VAR

Corps du POU

Lorsque bSetModePlcData passe de FALSE à TRUE et lorsque sys_bIsEthernetInitializing est FALSE, l’instruction est exécutée.

Corps en LD

NOTA
Lorsqu’une constante avec la valeur 0 est appliquée à l’entrée nColumns, la position du saut de ligne dans la chaîne de caractères du format des données générée est omise. C’est nécessaire si l’instruction FP_FTP_SET_MODE est utilisée ensuite dans le mode de fonctionnement GETDATA.
BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModePlcData,5,1,7,3,R);
B(B_VARIN,,'SV0~GETDATA~NON',40,3,42,5,);
B(B_VAROUT,,bSetModePlcDataError,60,2,62,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',40,5,42,7,);
B(B_VARIN,,iID10,40,2,42,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_VARIN,,arrayValues,6,4,8,6,);
B(B_VARIN,,0,13,6,15,8,);
B(B_F,Size_Of_Var!,,8,5,15,7,,?D?C);
B(B_F,FP_FTP_SET_MODE!,,42,0,58,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
B(B_F,FP_FTP_GET_DATA_FORMAT!,,15,3,29,8,,?D@'Var'?DnSize?DnColumns?CsDataFormat);
L(1,2,5,2);
L(7,2,16,2);
L(8,5,8,6);
L(18,2,42,2);
L(58,3,60,3);
L(8,5,15,5);
L(29,5,42,5);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

If DF(bSetModePlcData) And not sys_bIsEthernetInitializing then
    FP_FTP_SET_MODE(nTransferID := iID10,
                    sOperation := 'SV0,GETDATA,NON',
                    sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
                                                                           nSize := Size_Of_Var(arrayValues),
                                                                           nColumns := 0), 
                    sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
                    bError => bSetModePlcDataError);
End_if;

Modifié le : 2022-04-20Commentaires sur cette pageAssistance téléphonique