FP_HTTP_SET_MODE

Définir le mode de transfert HTTP

Cette instruction FP sauvegarde les paramètres de transfert du client HTTP de sOperation, sPLCDataFormat et sHTTPServerURL 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

    Mot-clé : SV

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

  • Spécifier la zone mémoire et le type de transfert (envoyer ou acquérir des données)

    • Utiliser le mot-clé UPLOAD pour envoyer des données.

    • Utiliser le mot-clé DOWNLOAD pour acquérir des données.

    • Utiliser le mot-clé UPDOWN pour envoyer et acquérir des données.

    Spécifier la commande à utiliser pour le transfert.

    • Utiliser le mot-clé POST pour envoyer des données (disponible uniquement pour les types de transfert UPLOAD et UPDOWN).

    • Utiliser le mot-clé GET pour acquérir des données.

    Exemple : Envoyer des données de la zone mémoire vers le serveur HTTP 3 : 'SV3,UPDOWN,POST'

sPLCDataFormat (STRING)

Indiquer les données à transmettre. Alternativement, utiliser l’instruction FP_HTTP_GET_DATA_FORMAT.

Exemple : Zone mémoire : DT100000, nombre d’octets : 250 octets, nombre maximum d’acquisitions : 250 octets : 'DT100000,250,250'

sHTTPServerURL (STRING)

Indiquer l’URL du serveur.

Exemple : '\data.csv'

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 HTTP doit être spécifié à l’aide de FP_HTTP_SET_CONNECTION ou de la boîte de dialogue de paramétrage du client HTTP.

  • 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 ne sont envoyées ou lues que lorsque les paramètres de transfert du client HTTP ont été configurés et lorsque l’instruction FP_HTTP_TRANSFER_REQUEST est exécutée.

  • Le nombre d’octets qui peuvent être transférés simultanément est de 1MO pour tous les 16 ID de transfert.

  • 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 HTTP n’a pas été spécifié avec l’instruction FP_HTTP_SET_CONNECTION ou avec la boîte de dialogue de paramétrage du client HTTP.

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

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 HTTP n’a pas été spécifié avec l’instruction FP_HTTP_SET_CONNECTION ou avec la boîte de dialogue de paramétrage du client HTTP.

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

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
		sDestURL: STRING[32]:='\data.csv';
		sStringData: STRING[32767]:='';
		iID5: INT:=5;
		bSetModeAsciiDataArea: BOOL:=FALSE;
		bSetModeStringData: BOOL:=FALSE;
		bErrorModeStringData: BOOL:=FALSE;
		bErrorModeAsciiDataArea: BOOL:=FALSE;
	END_VAR

Corps du POU

Le premier exemple utilise une chaîne de caractères source contenant un maximum de 32767 caractères, le second exemple utilise une adresse DT pour enregistrer la chaîne de caractères source avec plus de 32767.

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 HTTP data stored in string variable (strings can only contain max. of 32767 characters),4,1,45,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_VARIN,,iID5,40,2,42,4,);
B(B_VARIN,,'SV0~DOWNLOAD,GET',40,3,42,5,);
B(B_CONTACT,,bSetModeStringData,5,1,7,3,R);
B(B_VARIN,,'/data.csv',40,5,42,7,);
B(B_VAROUT,,bErrorModeStringData,53,2,55,4,);
B(B_VARIN,,sStringData,8,4,10,6,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,MAX_LEN!,,10,5,16,7,,?D?C);
B(B_F,FP_HTTP_GET_DATA_FORMAT!,,16,3,31,7,,?D@'Var'?DnNumberOfCharacters?CsDataFormat);
B(B_F,FP_HTTP_SET_MODE!,,42,0,53,7,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(10,5,10,6);
L(10,5,16,5);
L(31,5,42,5);
L(18,2,42,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer HTTP data stored in memory area > 32767 characters,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 := 8 ;
        NETWORK_BODY
B(B_VARIN,,iID5,39,3,41,5,);
B(B_VARIN,,'SV0~UPDOWN,POST',39,4,41,6,);
B(B_VARIN,,'DT100000~102345~12345',39,5,41,7,);
B(B_CONTACT,,bSetModeAsciiDataArea,5,2,7,4,R);
B(B_VARIN,,sDestURL,39,6,41,8,);
B(B_VAROUT,,bErrorModeAsciiDataArea,52,3,54,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,2,18,4,N);
B(B_F,FP_HTTP_SET_MODE!,,41,1,52,8,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,3,5,3);
L(7,3,16,3);
L(18,3,41,3);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

(* Set mode to transfer HTTP data stored in string variable (strings can only contain max. of 32767 characters) *)
If DF(bSetModeStringData) And not sys_bIsEthernetInitializing then
    FP_HTTP_SET_MODE(nTransferID := iID5,
                     sOperation := 'SV0,DOWNLOAD,GET',
                     sPLCDataFormat := FP_HTTP_GET_DATA_FORMAT(sStringData, LEN(sStringData)), 
                     sHTTPServerURL := '/data.csv',
                     bError => bErrorModeStringData);
End_if;
(* Set mode to transfer HTTP data stored in memory area > 32767 characters  *)
If DF(bSetModeAsciiDataArea) And not sys_bIsEthernetInitializing then
        FP_HTTP_SET_MODE(nTransferID := iID5,
                         sOperation := 'SV0,UPDOWN,POST',
                         sPLCDataFormat := 'DT100000,102345,12345', 
                         sHTTPServerURL := sDestURL,
                         bError => bErrorModeAsciiDataArea);
End_if;

Modifié le : 2024-10-08Commentaires sur cette pageAssistance téléphonique