IsReceptionDoneByTimeOut

Valuta la condizione "ricezione conclusa" in base al timeout

Questo Function Block valuta una condizione di timeout per rilevare la conclusione della ricezione in flussi di dati che non contengono un carattere terminatore, p.es. in caso di trasferimento di dati binari.

Parametri

Ingresso

Port (WORD, INT, UINT)

Specifica le porte di comunicazione (in base al tipo di PLC):

  • Porta COM p.es. SYS_COM0_PORT

  • Porta Ethernet p.es. SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU p.es. 16#xx01 (xx = numero slot) in COM01

TimeOutForCPU (TIME)

Lasso di tempo trascorso il quale IsDone viene impostato su TRUE se non si ricevono ulteriori dati.

NoOfBytesReceived (WORD, INT, UINT)

Applicabile all'indirizzo iniziale del buffer di ricezione. Questo indirizzo contiene il numero di byte ricevuti. (solo CPU)

Uscita

IsDone (BOOL)

Impostato su TRUE se uno o più byte sono stati ricevuti e il numero di byte ricevuti non è cambiato nel lasso di tempo specificato in TimeOutForCPU o nella finestra di dialogo "Impostazione MCU".

Note

Per la porta di comunicazione di una CPU, la prima word del buffer di ricezione deve essere applicata in NoOfBytesReceived (numero di byte ricevuti). Se il numero di byte ricevuti non cambia entro il lasso di tempo specificato in TimeOutForCPU, IsDone passa a TRUE.

Per una Multi-Communication Unit e per FP7, viene valutato il flag "ricezione conclusa". Il timeout deve essere impostato in modalità PROG utilizzando la finestra di dialogo “Impostazione MCU” o in modalità RUN utilizzando F159_MWRT_PARA (solo FP2).

Valutazione del flag "ricezione conclusa"

Se non vengono ricevuti altri byte nel periodo specificato o se viene eseguita l'istruzione ClearReceiveBuffer, l'uscita IsDone passa a TRUE. La ricezione di ulteriori dati è impossibile. F159_MTRN o ClearReceiveBuffer fa passare il flag "IsDone" a FALSE.

La conclusione della ricezione può essere determinata anche controllando i contenuti del buffer di ricezione (p.es. il numero de byte ricevuti). Lo Numero del byte ricevuti può cambiare durante lo svolgimento di uno scan. For example, if the number of received bytes is read more than once different statuses may exist within one scan.

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	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

Corpo 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

Corpo ST

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

L'ultima revisione: 2022-04-19Feedback su questa paginaPanasonic hotline