IsReceptionDone

Evaluar la bandera de recepción completa

Esta función devuelve el valor de la bandera de "recepción completa". Es TRUE si se ha recibido el código de fin de trama en el puerto de comunicación especificado en Port.

Parámetros

Entrada

Port (WORD, INT, UINT)

Especificar los puertos de comunicación (dependiendo del tipo de PLC):

  • Puerto COM, por ejemplo SYS_COM0_PORT

  • Puerto Ethernet, por ejemplo SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU por ejemplo 16#xx01 (xx = número de slot) en COM01

Salida

IsDone (BOOL)

Pasa a TRUE, si se ha recibido el código de fin de trama. El código de fin de trama se especifica en los registros del sistema en la configuración del puerto COM.

Observaciones

Evaluación de la bandera de "recepción completa"

Cuando durante el tiempo especificado no se reciben más bytes o lse ejecuta a instrucción ClearReceiveBuffer, la salida IsDone pasa a TRUE. No es posible la recepción de más datos. F159_MTRN o ClearReceiveBuffer pone la bandera "IsDone" a FALSE. Esta función se puede utilizar en FP7 o MCU también para el modo de tiempo de espera. La bandera de "recepción completa" se puede evaluar utilizando una de las siguientes instrucciones o variables del sistema:

  • IsReceptionDone

  • IsReceptionDoneByTimeOut

  • sys_bIsComPort1ReceptionDone, sys_bIsComPort2ReceptionDone, sys_bIsToolPortReceptionDone (dependiendo del puerto)

El fin de recepción solo se puede determinar comprobando el contenido del buffer de recepción. El número de bytes recibidos puede cambiar dentro del ciclo de scan. Por ejemplo, si el número de bytes recibidos se lee más de una vez, se pueden dar estados diferentes dentro de un ciclo de scan.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		iPort: INT:=0;
		bIsDone: BOOL:=FALSE;
	END_VAR

Cuerpo 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_F,IsReceptionDone!,,5,0,14,3,,?DPort?CIsDone);
B(B_VARIN,,iPort,3,1,5,3,);
B(B_VAROUT,,bIsDone,14,1,16,3,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

bIsDone:=IsReceptionDone(Port := iPort);

Modificado el: 2022-04-19Comentarios sobre esta páginaLínea directa de Panasonic