Obtener el estado del eje de la unidad de posicionamiento
Esta instrucción FP lee los datos de estado de la unidad de posicionamiento en el slot especificado por s1_Slot y del eje especificado por s2_Axis si el trigger EN es TRUE. El resultado se almacena en d1_Status.
Entrada
Número de slot
Número de eje
Valores: 1–4, 8 (eje virtual)
Salida
Información de estado
Tipos de información de estado de los ejes
Bit |
Información de estado |
TRUE |
---|---|---|
0 |
Funcionamiento de la herramienta |
durante el funcionamiento de la herramienta de cualquier eje configurado con Configurator PM |
1 |
Error |
si se ha producido un error en el eje especificado |
2 |
Advertencia |
si se ha emitido una advertencia para el eje especificado |
3 |
Ocupado |
si el eje especificado está en funcionamiento |
4 |
Operación finalizada |
si la operación se ha completado en el eje especificado |
5 |
Vuelta al origen finalizado |
si se ha completado la vuelta al origen en el eje especificado |
si el área especificada utilizando el modificador índice supera el límite.
si el número de slot y/o eje está fuera de rango
si el área especificada utilizando el modificador índice supera el límite.
si el número de slot y/o eje está fuera de rango
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
bStart: BOOL:=FALSE;
iSlotNumberPositioningUnit: INT:=0;
(*slot unit where the positioning unit is assigned 1- 64*)
iPositioningUnit_Axis: INT:=0;
(*Axis of the positioning unit to obtain status for (1-4: axis; 8: virtual axis)*)
dutPositioningUnitAxisStatus: BOOL16_OVERLAPPING_DUT;
(*Status of the positioning unit axis:
b0: Tool operation
b1: Error annunciation
b2: warning annunciation
b3: busy
b4: operation done
b5: home return done*)
END_VAR
Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,FP_POS_UNIT_GET_STATUS!,,17,1,31,6,,?DEN?Ds1_Slot?Ds2_Axis?AENO?Cd1_Status);
B(B_VARIN,,iSlotNumberPositioningUnit,15,3,17,5,);
B(B_VARIN,,iPositioningUnit_Axis,15,4,17,6,);
B(B_VAROUT,,dutPositioningUnitAxisStatus.w0,31,3,33,5,);
B(B_CONTACT,,bStart,3,2,5,4,);
L(5,3,17,3);
L(1,3,3,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
FP_POS_UNIT_GET_STATUS(s1_Slot := iSlotNumberPositioningUnit,
s2_Axis := iPositioningUnit_Axis,
d1_Status => dutPositioningUnitAxisStatus.w0);
END_IF;