F171_PulseOutput_Trapezoidal

Control Trapezoidal

Esta instrucción ejecuta automáticamente un control trapezoidal según los parámetros especificados en la DUT. 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

s_dutDataTable (DUT)

Dirección de inicio del área que contiene la tabla de datos

  • FP-S, FP-X:

    F171_PulseOutput_Trapezoidal_DUT

  • FP0R:

    F171_PulseOutput_Trapezoidal_Type0_DUT

    F171_PulseOutput_Trapezoidal_Type1_DUT

n_iPulseOutputChannel (constante decimal)

Canal de salida de pulsos:

FP-XH C30 T/P: 0–3

FP-XH C60 T/P: 0–5

FP-S0, 2

FP-X R0, 1

FP-XC14T0, 1, 2

FP-X C30T/C60T0, 1, 2, 3

FP0R0, 1, 2, 3

Descripción para el FP-Sigma, FP-X

Utilizar la siguiente DUT predefinida: F171_PulseOutput_Trapezoidal_DUT.

Se pueden especificar los siguientes parámetros en la DUT:

  • Código de control
  • Velocidad inicial y final
  • Velocidad máxima
  • Tiempo de aceleración/deceleración
  • Valor de preselección:
  • Detención de la salida de pulsos
Diagrama de la salida de pulsos
  1. Velocidad inicial y final

  2. Velocidad máxima

  3. Tiempo de aceleración/deceleración

  4. Valor de preselección:

  5. Bandera de control de la salida de pulsos

  6. Condición de ejecución

La frecuencia de salida de pulsos pasa desde la velocidad inicial a la velocidad final según el tiempo de aceleración/deceleración.La diferencia entre la velocidad de preselección y la velocidad actual determina la pendiente de la rampa..

  • 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.

  • Si se edita en modo RUN durante la salida de pulsos, se detiene la salida de pulsos una vez descargados los cambio del programa.
  • 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.

  • Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.

  • El estado de la bandera de control del contador de alta velocidad o de la bandera de control de la salida de pulsos puede cambiar dentro del ciclo de scan.

Descripción para el FP0R

Utilizar la siguiente DUT predefinida: F171_PulseOutput_Trapezoidal_Type0_DUT (velocidad máxima = primera velocidad de preselección) o F171_PulseOutput_Trapezoidal_Type1_DUT (velocidad máxima = 50kHz).

La velocidad máxima puede ser modificada durante la salida de pulsos.

Están disponibles dos métodos de control:

  • Tipo 0: La velocidad puede ser modificada dentro del rango de velocidad de preselección especificado.

  • Tipo 1: La velocidad puede ser modificada dentro del rango de velocidad máxima (50kHz).

Se pueden especificar los siguientes parámetros en la DUT:

  • Código de control
  • Velocidad inicial y final
  • Velocidad máxima
  • Tiempo de aceleración
  • Tiempo de deceleración
  • Valor de preselección:

Diagrama de la salida de pulsos

  1. Velocidad inicial y final

  2. Velocidad máxima

  3. Tiempo de aceleración

  4. Tiempo de deceleración

  5. Valor de preselección:

  6. Bandera de control de la salida de pulsos

  7. Condición de ejecución

  8. Petición de parada decelerada

  • Tipo 0:

    La diferencia entre la velocidad inicial y la velocidad máxima determina la pendiente de la rampa de aceleración.La diferencia entre la velocidad máxima y la velocidad final determina la pendiente de la rampa de deceleración.

  • Tipo 1:

    La diferencia entre la velocidad máxima de 50kHz y la velocidad inicial determina la pendiente de la rampa de aceleración.La diferencia entre la velocidad máxima de 50kHz y la velocidad final determina la pendiente de la rampa de deceleración.

Se envían pulsos con un rendimiento del 25%.Con el método de salida de pulsos "pulso/dirección", los pulsos se envía aproximadamente 300ms después de enviar la señal de dirección, donde se tienen en cuenta la curva característica del driver del motor.

Parada decelerada

Para realizar una parada decelerada, pasar de FALSE a TRUE el bit 5 de los registros de datos que almacenan el código de control de la salida de pulsos (por ejemplo MOVE(16#120, sys_wHscOrPulseControlCode);).Cuando se solicita una parada decelerada durante la aceleración, la deceleración se realiza con la misma pendiente que la deceleración desde la velocidad de preselección.

Modificación de la velocidad de preselección durante la salida de pulsos

Tipo 1: La velocidad puede ser modificada dentro del rango de velocidad máxima (50kHz).

  1. Velocidad máxima

  2. Primer cambio de velocidad de preselección

  3. Segundo cambio de velocidad de preselección

  4. Tiempo de aceleración

  5. Aceleración

  6. Deceleración

  7. Tiempo de deceleración

  8. Bandera de control de la salida de pulsos

  9. Condición de ejecución

Para modificar la velocidad, mantener la condición de ejecución a TRUE.

  • Tipo 0:

    Si se especifica un valor mayor que la velocidad de preselección, este se corregirá a la velocidad de preselección al arrancar.

  • Tipo 1:

    Si la velocidad de preselección tiene un valor mayor de 50kHz, este se ajustará a 50kHz.

Si el valor actual sobrepasa el posición inicial del área de aceleración prohibida (por ejemplo, sys_diPulseChannel0AccelerationForbiddenAreaStartingPosition) durante la aceleración, no se puede ejecutar la aceleración.

  • La velocidad de deceleración no puede ser inferior a la velocidad final corregida.

  • 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.

  • 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
  • La instrucción no se puede reiniciar cuando se ha producido una petición de parada decelerada.
  • Para reiniciar después de detener la operación, pasar la condición de ejecución a FALSE y después de nuevo a TRUE.
  • La ejecución de la instrucción es más rápida la segunda vez que se ejecuta si los parámetros permanecen si modificar. Cambiando la configuración de la operación de salida (salida de pulsos o solo cálculos) no se modifica este comportamiento.
  • Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.

  • El estado de la bandera de control del contador de alta velocidad o de la bandera de control de la salida de pulsos puede cambiar dentro del ciclo de scan.

Ejemplo

Cabecera de la POU

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
		bMotorSwitch: BOOL:=FALSE;
		dutTrapez: F171_PulseOutput_Trapezoidal_DUT:=dwControlCode := 16#1100;
			(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 1=Frequency range 48Hz-100kHz
Digit 1: 0=Relative value control
Digit 0: 0=CW/CCW*)
	END_VAR
	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		diInitialSpeed: DINT:=100;
		diTargetSpeed: DINT:=2000;
		diAccelerationTime: DINT:=300;
		diTargetValue: DINT:=10000;
		@'': @'';
	END_VAR

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 16 ;
        NETWORK_BODY
B(B_CONTACT,,bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutTrapez.diAccelerationAndDecelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diTargetValue,23,14,25,16,);
B(B_VARIN,,diTargetValue,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diInitialAndFinalSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
L(7,2,7,6);
L(7,6,7,10);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,10,7,14);
L(7,14,17,14);
L(1,0,1,16);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,14,3,16,5,);
B(B_VARIN,,0,14,4,16,6,);
B(B_F,F171_PulseOutput_Trapezoidal!,Instance,16,1,31,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,16,3);
L(1,3,4,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF DF(bMotorSwitch) then
  dutTrapez.diInitialAndFinalSpeed:=diInitialSpeed;
  dutTrapez.diTargetSpeed:=diTargetSpeed;
  dutTrapez.diAccelerationDecelerationTime:=diAccelerationTime;
  dutTrapez.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
IF DF(bMotorSwitch) then
  F171_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
        n_iPulseOutputChannel :=0);
END_IF;

Modificado el: 2023-03-16Comentarios sobre esta páginaLínea directa de Panasonic