Final condicional
Finaliza el ciclo de scan actual del código de programa en la posición de programa actual.
Entrada
si la condición es TRUE, la instrucción se ejecuta
Salida
ajustar a TRUE si la instrucción ha sido procesada con éxito
Cuando la condición de ejecución pasa a TRUE, el programa finaliza el ciclo de scan actual e inicia el procesamiento de E/S. A continuación, el programa vuelve a la primera dirección.
Esta instrucción no se puede ejecutar en subprogramas tales como programas de subrutina o programas de interrupción. Usar la instrucción FP_END_SCAN solo en el área del programa principal.
Se pueden usar dos o más instrucciones FP_END_SCAN dentro del programa principal.
Se debe ir con cuidado al utilizar una de las instrucciones enumeradas a continuación, las cuales se ejecutan detectando el flanco ascendente de una condición de ejecución (trigger).
DF (flanco de subida diferencial)
Entrada de contaje para CT (contador)
Entrada de contaje para F118_UDC (contador ascendente/descendente)
Entrada de desplazamiento para SR (registro de desplazamiento)
Entrada de desplazamiento para F119_LRSR (registro de desplazamiento a izquierda/derecha)
Ejecución diferencial de instrucciones P (especificado por P y un número, p.ej., P20_ADD)
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
bEndCurrentScan: BOOL:=FALSE;
iCounterExecuted: INT:=0;
iCounterNotExecuted: INT:=0;
END_VAR
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_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_F,FP_END_SCAN!,,19,0,27,3,,?DEN?AENO);
B(B_CONTACT,,bEndCurrentScan,6,1,8,3,);
L(1,2,6,2);
L(8,2,19,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterNotExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);