FP_FTP_SET_MODE

Définir le mode de transfert FTP

Cette instruction FP sauvegarde les paramètres de transfert du client FTP de sOperation, sPLCFullFileNameOrDataFormat et sFTPServerFullFileName dans la zone des paramètres de transfert spécifiée par nTransferID.

Paramètres

Entrée

nTransferID (WORD, INT, UINT)

Définir l’ID des paramètres de transfert.

Valeurs : 0–15 (entrées dans l’ordre croissant)

sOperation (STRING)

Définir les paramètres de la méthode de transfert.

  • Adresse du serveur (paramètre requis)

    Mot-clé : SV

    Syntaxe : 'SVx'

    Valeurs : SV0–SV3 (Serveur 0–Serveur 3)

  • Destination et méthode de transfert (paramètre requis)

    Chaîne de caractères des paramètres

    Destination

    Méthode de transfert

    PUTFILE

    Fichier

    Envoyer aux serveurs (Méthode "Surécrire")

    PUTFILE-OVW

    Envoyer aux serveurs (Méthode "Surécrire")

    PUTFILE-REN

    Envoyer aux serveurs (Méthode "Renommer")

    GETFILE

    Acquérir à partir des serveurs

    PUTDATA

    Zone mémoire

    Envoyer aux serveurs (Méthode "Surécrire")

    PUTDATA-OVW

    Envoyer aux serveurs (Méthode "Surécrire")

    PUTDATA-REN

    Envoyer aux serveurs (Méthode "Renommer")

    GETDATA

    Acquérir à partir des serveurs

  • Traitement des fichiers après transfert (paramètre requis)

    • DEL : supprimer les fichiers

    • NON : ne pas supprimer les fichiers

Exemples :
  1. Envoyer un fichier au serveur FTP 1 avec la méthode "Surécrire", ne pas supprimer le fichier après le transfert : 'SV1,PUTFILE-OVW,NON'

  2. Envoyer un fichier au serveur FTP 0 avec la méthode "Renommer", supprimer le fichier après le transfert : 'SV0,PUTFILE-REN,DEL'

  3. Lire un fichier du serveur FTP 2, supprimer le fichier après le transfert : 'SV2,GETFILE,DEL'

sPLCFullFileNameOrDataFormat (STRING)

Configurez vos paramètres selon la destination du transfert (fichier ou zone mémoire) et la méthode de transfert (PUT ou GET).

Les données d’une variable peuvent être transférées à l’aide de l’instruction FP_FTP_GET_DATA_FORMAT. La sortie de l’instruction est connectée à sPLCFullFileNameOrDataFormat pour lire la chaîne de caractères spécifiant le format des données de la variable (zone mémoire, taille et type de données). Les données transmises sont écrites dans un fichier csv ou lues à partir d’un fichier csv selon le type de données de la variable.

  • Destination du transfert : fichier

    Définir le nom du fichier source.

    • Pour PUTFILE : Indiquer le nom d’un fichier sur carte mémoire SD avec un chemin d’accès relatif. Exemple : '\LOG\MyData.csv'

    • Pour GETFILE : Indiquer un nom de fichier à partir du répertoire de base d’un utilisateur qui se connecte aux serveurs FTP avec un chemin d’accès relatif. Exemple : '\LOG\MyData.csv'

  • Destination du transfert : zone mémoire

    • Pour PUTDATA : Les données sauvegardées dans la variable d’entrée de l’instruction FP_FTP_GET_DATA_FORMAT sont écrites dans le fichier csv spécifié par sFTPServerFullFileName. Pour cette méthode de transfert, il est possible d’ajouter un horodatage au format yymmdd_hhmmss au nom du fichier. Utilisez les mots-clés 'TOP' et 'END' pour indiquer si l’horodatage doit être ajouté avant ou après le nom du fichier.

    • Pour GETDATA : Les données du fichier csv spécifié par sFTPServerFullFileName sont écrites dans la variable d’entrée Var de FP_FTP_GET_DATA_FORMAT.

sFTPServerFullFileName (STRING)

Configurez vos paramètres selon la destination du transfert (fichier ou zone mémoire) et la méthode de transfert (PUT ou GET).

  • Destination du transfert : fichier

    • Pour PUTFILE : Spécifier un nom de dossier avec son chemin d’accès relatif à partir du répertoire de base de l’utilisateur qui doit se connecter au serveur FTP. Pour indiquer le répertoire de base, indiquer "/" ou “\" uniquement.

    • Pour GETFILE : Indiquer un nom de dossier de sauvegarde sur une carte mémoire SD avec un chemin d’accès relatif.

  • Destination du transfert : zone mémoire

    • Pour PUTDATA : Indiquer un nom de fichier csv de destination dans lequel les données vont être écrites. Pour cette méthode de transfert, il est possible d’ajouter un horodatage au format yymmdd_hhmmss au nom du fichier. Utilisez les mots-clés 'TOP' et 'END' pour indiquer si l’horodatage doit être ajouté avant ou après le nom du fichier.

      Exemples :

      1. Transférer des données vers le fichier de destination "PutData1.bin" situé dans le répertoire "\FTP", ne pas ajouter d’horodatage : '\FTP\PutData1.bin'

      2. Transférer des données vers le fichier de destination "PutData2.bin" situé dans le répertoire "\FTP", ajouter un horodatage avant le nom du fichier : '\FTP\PutData2.bin,TOP'

      3. Transférer des données vers le fichier de destination "PutData3.bin" situé dans le répertoire "\FTP", ajouter un horodatage après le nom du fichier : '\FTP\PutData3.bin,END'

    • Pour GETDATA : Indiquer un nom de fichier csv source à partir duquel les données vont être lues. Spécifier un nom de fichier et un nom de dossier avec son chemin d’accès relatif à partir du répertoire de base de l’utilisateur qui doit se connecter au serveur FTP.

Sortie

bError (BOOL)

Devient TRUE dans les conditions suivantes :

  • Si le temps d’attente de connexion est dépassé.

  • Si une adresse IP est invalide.

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

Remarques

  • Le nombre de caractères des données STRING ne doit pas être supérieur à 256.

  • Cette instruction n’est pas disponible dans les programmes d’interruption.

  • Avant d’exécuter l’instruction, le serveur FTP doit être spécifié à l’aide de FP_FTP_SET_CONNECTION 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 ou le numéro nLogID spécifié est FALSE. Lorsque le drapeau de requête de transfert est TRUE, 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 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 une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.

  • Si les ID du transfert ne sont pas spécifiées dans l’ordre croissant.

  • Si l’instruction est exécutée dans un programme d’interruption.

  • Si le nombre de caractères des données STRING est supérieur à 256.

  • Si un serveur FTP spécifié n’a pas été configuré avec l’instruction FP_FTP_SET_CONNECTION ou avec la boîte de dialogue de paramétrage du client FTP.

  • Si le drapeau de requête de transfert pour la configuration de transfert spécifiée est "TRUE : Requête de transfert" lorsque l’instruction est exécutée.

  • Si le drapeau de requête de transfert pour un numéro nLogID spécifié est TRUE, par ex. si sys_blsLog0DataRecordingActive est TRUE.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.

  • Si les ID du transfert ne sont pas spécifiées dans l’ordre croissant.

  • Si l’instruction est exécutée dans un programme d’interruption.

  • Si le nombre de caractères des données STRING est supérieur à 256.

  • Si un serveur FTP spécifié n’a pas été configuré avec l’instruction FP_FTP_SET_CONNECTION ou avec la boîte de dialogue de paramétrage du client FTP.

  • Si le drapeau de requête de transfert pour la configuration de transfert spécifiée est "TRUE : Requête de transfert" lorsque l’instruction est exécutée.

  • Si le drapeau de requête de transfert pour un numéro nLogID spécifié est TRUE, par ex. si sys_blsLog0DataRecordingActive est TRUE.

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
		bSetModeFileError: BOOL:=FALSE;
		bSetModeFileOK: BOOL:=FALSE;
		iID10: INT:=10;
		bSetModeFile: BOOL:=FALSE;
		wErrorCode: WORD:=0;
	END_VAR

Corps du POU

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

Corps en LD

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

Corps en ST

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;

Modifié le : 2024-04-25Commentaires sur cette pageAssistance téléphonique