ClearReceiveBuffer

Reset del buffer de recepción

Esta instrucción borra el buffer de recepción del puerto 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

Observaciones

El buffer de recepción se resetea automáticamente cuando se ejecuta una instrucción de envío. Para resetear el buffer de recepción sin enviar más datos, ejecutar esta siguiente instrucción. También se puede utilizar la instrucción F159_MTRN con n_Number = 0. Cuando se resetea el buffer de recepción se pone a 0 el número de bytes recibidos en offset 0 y el puntero de escritura pasa a offset 1. Los siguientes datos se almacenan a partir de offset 1 sobrescribiendo los datos existentes. La bandera de "recepción completa" pasa a FALSE.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si no existe el puerto de comunicación especificado en Port.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si no existe el puerto de comunicación especificado en Port.

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
		bClearReceiveBuffer: 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 := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bClearReceiveBuffer,5,1,7,3,R);
B(B_F,E_ClearReceiveBuffer!,,11,0,21,4,,?DEN?DPort?AENO);
B(B_VARIN,,1,9,2,11,4,);
L(1,2,5,2);
L(7,2,11,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

if (DF(bClearReceiveBuffer)) then
    ClearReceiveBuffer(1);
end_if;

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