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.
Entrada
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
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.
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.
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
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
bIsDone:=IsReceptionDone(Port := iPort);