IsReceptionDoneByTimeOut

Évaluer le drapeau "Réception terminée" avec temporisation

Lorsque le flux de données reçues ne contient pas de délimiteur (par ex. lors du transfert de données binaires), ce bloc fonction permet de détecter la fin de la réception des données avec temporisation.

Paramètres

Entrée

Port (WORD, INT, UINT)

Indique les ports de communication (selon le type d’API) :

  • Port COM, par ex. SYS_COM0_PORT

  • Port Ethernet, par ex. SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU, par ex. 16#xx01 (xx = numéro du connecteur) dans COM01

TimeOutForCPU (TIME)

Période de temps sans réception de données. Lorsque cette période de temps est écoulée, IsDone est définie sur TRUE.

NoOfBytesReceived (WORD, INT, UINT)

Adresse de départ du tampon de réception. Cette adresse contient le nombre d’octets reçus. (Unité centrale uniquement)

Sortie

IsDone (BOOL)

Définie sur TRUE, si un ou plusieurs octets ont été reçus et le nombre d’octets reçus n’a pas changé pendant la période de temps spécifiée par TimeOutForCPU ou dans la boîte de dialogue "Paramètres du module MCU".

Remarques

Pour le port de communication d’une unité centrale, le premier mot du tampon de réception doit être appliqué à NoOfBytesReceived (nombre d’octets reçus). Si le nombre d’octets reçus ne change pas pendant la période de temps indiquée par TimeOutForCPU, IsDone passe à TRUE.

Pour un module de communication multiple et pour le FP7, le drapeau "réception terminée" est évalué. La temporisation doit être définie en mode PROG à l’aide de la boîte de dialogue Paramètres du module MCU ou en mode RUN à l’aide de F159_MWRT_PARA (FP2 uniquement).

Évaluation du drapeau "Réception terminée".

Si aucun autre octet n’est reçu ou si l’instruction ClearReceiveBuffer est exécutée pendant le temps indiqué, la sortie IsDone passe à TRUE. La réception d’autres données n’est pas autorisée. Le drapeau "IsDone" devient FALSE lorsque F159_MTRN ou ClearReceiveBuffer est exécutée.

La fin de la réception peut aussi être déterminée en contrôlant le contenu du tampon de réception (par ex. le nombre d’octets reçus). Le nombre d’octets reçus peut changer pendant l’exécution d’une scrutation. Par exemple, si le nombre d’octets reçus est lu plusieurs fois, il peut y avoir plusieurs états au cours d’une scrutation.

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
		IsReceptionDone1: IsReceptionDoneByTimeOut;
	END_VAR
	VAR_EXTERNAL
		g_awReceiveBuffer: ARRAY [0..10] OF WORD;
	END_VAR
	VAR 
		bIsRecDone1: BOOL:=FALSE;
		wPort: WORD:=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_FB,IsReceptionDoneByTimeOut!,IsReceptionDone1,11,1,24,6,,?BPort?BTimeOutForCPU?BNoOfBytesReceived?AIsDone);
B(B_VARIN,,wPort,9,2,11,4,);
B(B_VARIN,,T#20ms,9,3,11,5,);
B(B_VAROUT,,IsRecDone1,24,2,26,4,);
B(B_VARIN,,g_awReceiveBuffer[0],9,4,11,6,);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IsReceptionDone1(Port := wPort,
                 TimeOutForCPU := T#20ms,
                 NoOfBytesReceived := g_awReceiveBuffer[0],
                 IsDone => bIsRecDone1);

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