Resetear un puerto COM especificado
Este bloque de función envía una solicitud de reset de puerto COM a un número de puerto especificado. El PLC debe estar configurado en comunicación "controlada por programa". Evaluar las variables de salida bIsDone y bIsRequested para comprobar si el puerto especificado se resetea y se puede volver a utilizar.
Entrada
Si se ajusta a TRUE, la solicitud de reset de puerto COM se envía al número de puerto especificado
COM0, COM1, COM2 en la CPU
16#xx01–16#xx04 (xx = número de slot 1–64) en SCU
Salida
Ajustar a TRUE, si se resetea el puerto COM y puede usarse de nuevo.
Set to TRUE, si se solicita el reset del puerto COM.
Variables del sistema correspondientes de las salidas (establecer solo si el puerto COM ha sido reseteado por bReset de la misma instancia)
Petición de reset
COM0: sys_bIsComPort0ResetRequested
COM1: sys_bIsComPort1ResetRequested
COM2: sys_bIsComPort2ResetRequested
Reset realizado
COM0: sys_bIsComPort0ResetDone
COM1: sys_bIsComPort1ResetDone
COM2: sys_bIsComPort2ResetDone
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
fbResetComPort: ResetComPort;
bResetComPort: BOOL:=FALSE;
iPort: INT:=0;
bComPortCannotBeUsed: BOOL:=FALSE;
END_VAR
Cuando la variable bResetComPort pasa a TRUE, se ejecuta el bloque de función.
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_VARIN,,iPort,19,3,21,5,);
B(B_CONTACT,,bResetComPort,6,2,8,4,);
B(B_FB,ResetComPort!,fbResetComPort,21,1,30,5,,?BbReset?BPort?AbIsDone?AbIsRequested);
L(1,3,6,3);
L(8,3,21,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_COIL,,bComPortCannotBeUsed,39,1,41,3,S);
B(B_CONTACT,,fbResetComPort.bIsRequested,6,1,8,3,);
L(1,2,6,2);
L(8,2,39,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_COIL,,bComPortCannotBeUsed,39,1,41,3,E);
B(B_CONTACT,,fbResetComPort.bIsDone,6,1,8,3,);
L(1,2,6,2);
L(8,2,39,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
fbResetComPort(bReset := bResetComPort,
Port := iPort);
IF (fbResetComPort.bIsRequested) then
bComPortCannotBeUsed := TRUE;
ELSIF (fbResetComPort.bIsDone) then
bComPortCannotBeUsed := FALSE;
END_IF;