Operación de JOG
Esta instrucción se usa para la operación de JOG. Se envía el número de pulsos especificado cuando la condición de ejecución del control de posición pasa a TRUE. Se realiza una parada decelerada antes de alcanzar el valor de preselección y detener la salida de pulsos. Se envían pulsos desde el canal especificado si la bandera de control para ese canal es FALSE y la condición de ejecución es TRUE.
Entrada
Dirección de inicio del área que contiene la tabla de datos
FP-S, FP-X:
F172_PulseOutput_Jog_Type0_DUT_0
F172_PulseOutput_Jog_Type1_DUT_0
FP0R:
F172_PulseOutput_Jog_Type0_DUT_1
F172_PulseOutput_Jog_Type1_DUT_1
Canal de salida de pulsos:
FP-XH C30 T/P: 0–3
FP-XH C60 T/P: 0–5
FP-S: 0,2
FP-X R: 0,1
FP-XC14T: 0,1,2
FP-X C30T/C60T: 0,1,2,3
FP0R: 0,1,2,3
Utilizar la siguiente DUT predefinida: F172_PulseOutput_Jog_Type0_DUT_0 (Modo "sin valor de preselección) oF172_PulseOutput_Jog_Type1_DUT_0 (Modo "parada al alcanzar el valor de preselección")
Se pueden especificar los siguientes parámetros en la DUT:Diagrama de la salida de pulsos
La frecuencia y el valor de preselección se pueden modificar en cada ciclo de scan. El código de control, sin embargo, no se pueden modificar durante la ejecución de la instrucción.Seleccionar uno de los dos modos de operación:
Modo "sin valor de preselección (tipo 0):
Modo "parada al alcanzar el valor de preselección" (tipo 1):
La salida de pulsos se detiene cuando se alcanza el valor de preselección. Establecer este modo en el código de control, y especificar el valor de preselección (un valor absoluto) en la DUT. (FPSV1.4 o superior, FP-X)
Información de programación general
Tan pronto como comience a editar online (es decir, en modo RUN) un programa que utiliza esta instrucción, se detendrá la salida de pulsos.
Si tanto el programa principal como el programa de interrupción contienen código para el mismo canal, asegurarse de que no se ejecutan simultáneamente.
FP-X: Durante la salida de pulsos, la bandera de control (por ejemplo sys_bIsPulseChannel0Active) del canal correspondiente está a TRUE. No se puede ejecutar ninguna otra instrucción de salida de pulsos mientras esta bandera sea TRUE
FPS: La bandera de control del contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) y la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) están asignadas al mismo relé interno especial (R903A). Por lo tanto, cuando se ejecuta una instrucción del contador de alta velocidad o de salida de pulsos, tanto la bandera de control de contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) como la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) para el canal especificado, están a TRUE. No se puede ejecutar ninguna otra instrucción del contador de alta velocidad o de salida de pulsos mientras que está bandera esté a TRUE.
FPS: Al ejecutar la instrucción de interpolación circular F176_PulseOutput_Center la bandera de control de interpolación circular (sys_bIsCircularInterpolationActive) pasa a TRUE. Se mantiene el estado de la bandera hasta que se alcanza el valor de preselección (incluso si la condición de ejecución ya no es TRUE). En este intervalo, no se puede ejecutar otra función de salida de pulsos.
FPS: En los registros del sistema seleccionar como "No usado" cualquier contador de alta velocidad asignado a un canal de salida de pulsos.
FP-X: Seleccionar en los registros del sistema, "Salida de pulsos " para el canal deseado.
Si la ejecución de la instrucción comienza con un valor de frecuencia no válido, se produce un error de operación. Si la frecuencia toma un valor no válido durante la ejecución de la instrucción, la frecuencia de salida se ajustará al valor mínimo o al máximo del rango permisible
Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.
Utilizar la siguiente DUT predefinida: F172_PulseOutput_Jog_Type0_DUT_1 (Modo "sin valor de preselección) o F172_PulseOutput_Jog_Type1_DUT_1 (Modo "parada al alcanzar el valor de preselección")
Se pueden especificar los siguientes parámetros en la DUT:
Diagrama de la salida de pulsos
Seleccionar uno de los dos modos de operación:
Modo "sin valor de preselección (tipo 0):
Se envían pulsos según las condiciones establecidas en la DUT siempre que la condición de ejecución sea TRUE.Siempre que la condición de ejecución sea FALSE comienza una parada decelerada.
Modo "parada al alcanzar el valor de preselección" (tipo 1):
La salida de pulsos se detiene cuando se alcanza el valor de preselección. Establecer este modo en el código de control, y especificar el valor de preselección (un valor absoluto) en la DUT.Se realiza una parada decelerada cuando se alcanza el valor de preselección. La deceleración se realiza dentro del tiempo de deceleración especificado.
Modificación de la velocidad de preselección durante la salida de pulsos
La velocidad de deceleración no puede ser inferior a la velocidad final corregida.
Información de programación general
Tan pronto como comience a editar online (es decir, en modo RUN) un programa que utiliza esta instrucción, se detendrá la salida de pulsos.
Si tanto el programa principal como el programa de interrupción contienen código para el mismo canal, asegurarse de que no se ejecutan simultáneamente.
Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.
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_EXTERNAL
bActivateJog: BOOL:=FALSE;
END_VAR
VAR
dutJog: F172_PulseOutput_Jog_Type0_DUT_0:=dwControlCode := 16#1110;
(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 1=Frequency range 48Hz-100kHz
Digit 1: 1=Incremental counting
Digit 0: 0=CW*)
diSpeed: DINT:=300;
@'': @'';
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_CONTACT,,bActivateJog,4,1,6,3,);
B(B_F,E_MOVE!,Instance,16,0,22,4,,?DEN?D?AENO?C);
B(B_VARIN,,diSpeed,14,2,16,4,);
B(B_VAROUT,,dutJog.diSpeed,22,2,24,4,);
L(1,2,4,2);
L(6,2,16,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,bActivateJog,4,1,6,3,);
B(B_VARIN,,dutJog,14,2,16,4,);
B(B_VARIN,,0,14,3,16,5,);
B(B_F,F172_PulseOutput_Jog!,Instance,16,0,29,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(1,2,4,2);
L(6,2,16,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(bActivateJog) then
dutJog.diSpeed:=diSpeed;
END_IF;
IF (bActivateJog) then
F172_PulseOutput_Jog(s_dutDataTable := dutJog, 0);
END_IF;