F161_MRCV

Lire les données du port du module MCU

Cette instruction permet de copier les données reçues par le module MCU en provenance du dispositif externe vers le tampon de réception de l’unité centrale. Le port de communication du module MCU est spécifié par s_Port. Le tampon de réception est défini par d1_Start et d2_End.

Paramètres

Entrée

s_Port (WORD, INT, UINT)

Spécification du numéro de connecteur (octet de poids fort) et du numéro du port (octet de poids faible) du module MCU auquel les données sont transmises

16#xx01 : COM1 sur le module MCU dans le connecteur 16#xx

16#xx02 : COM2 sur le module MCU dans le connecteur 16#xx

d1_Start (WORD, INT, UINT)

Adresse de départ du tampon de réception

d2_End (WORD, INT, UINT)

Adresse finale du tampon de réception

Remarques

  • F161_MRCV ne doit pas être exécutée avant d’avoir vérifié la fin de la réception et l’état du drapeau "Réception terminée". L’invitation à émettre des données (polling) à l’aide de F161_MRCV ne fonctionne pas correctement ! Le drapeau "réception terminée" peut être évalué à l’aide des fonctions IsReceptionDone et IsReceptionDoneByTimeOut ou des drapeaux d’entrée (X) X0 et X2.

  • Le nombre d’octets reçus est sauvegardé dans l’adresse initiale du tampon de réception, indiquée par d1_Start. Si les données reçues excèdent l’adresse finale indiquée par b2_End, une erreur de fonctionnement est détectée. Les données reçues jusqu’à d2_End sont sauvegardées. F161_MRCV permet également d’effacer le tampon de réception, de réinitialiser le drapeau "Réception terminée" et de recevoir d’autres données.

  • F161_MRCV est prise en charge par tous les automates : si vous utilisez des fonctions spéciales plutôt que des drapeaux, vous pouvez créer des programmes indépendants de l’automate permettant de traiter les données pour les ports de l’unité centrale aussi bien que pour ceux du module MCU. Les automates qui n’utilisent pas de ports MCU ne traduisent pas l’instruction F161_MRCV. Il est recommandé d’utiliser les fonctions ReadData ou ReadCharacters avec lesquelles votre programme se lit plus facilement.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si le module MCU n’existe pas dans le connecteur spécifié

  • Si le port de communication spécifié n’existe pas.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si le module MCU n’existe pas dans le connecteur spécifié

  • Si le port de communication spécifié n’existe pas.

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
		ReadReceivedData: BOOL:=FALSE;
		ReceiveBuffer: ARRAY [0..10] OF INT:=[11(0)];
	END_VAR

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 := 8 ;
        NETWORK_BODY
B(B_F,F161_MRCV!,,17,2,24,8,,?DEN?Ds_Port?Dd1_Start?Dd2_End?AENO);
B(B_VARIN,,ReadReceivedData,15,3,17,5,);
B(B_VARIN,,16#0201,15,4,17,6,);
B(B_VARIN,,ReceiveBuffer[0],15,5,17,7,);
B(B_VARIN,,ReceiveBuffer[10],15,6,17,8,);
B(B_COMMENT,,The received data of port 1 of the MCU in slot 2 are read:,2,1,32,2,);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,F161_MRCV!,,17,0,24,6,,?DEN?Ds_Port?Dd1_Start?Dd2_End?AENO);
B(B_VARIN,,ReadReceivedData,15,1,17,3,);
B(B_VARIN,,16#0301,15,2,17,4,);
B(B_VARIN,,ReceiveBuffer,6,4,8,6,);
B(B_F,Adr_Of_Var_I!,,10,3,17,5,,?D?C);
B(B_F,AdrLast_Of_Var_I!,,8,4,17,6,,?D?C);
L(1,0,1,6);
L(8,4,8,5);
L(8,4,10,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Modifié le : 2022-01-17Commentaires sur cette pageAssistance téléphonique