Camino:  Equipo (Dispositivos) > PLC200 > Programa > Motion - Stepper Motor >

MW_PlcSpeed1

Previous pageReturn to chapter overviewNext page

Bloque para control de velocidad con generación de rampa y número especificado de pulsos.

 

Representación Ladder

 

MW_PlcSpeed2_G0

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

EN/Execute

BOOL

Habilitación del bloque

AxisNumber

CONST

Eje seleccionado

Direction

BOOL

Dirección de movimiento

TargetFrequency

DWORD DINT

Frecuencia final de los pulsos [Hz]

DeltaTime

DWORD

Tiempo de cada step hasta alcanzar la frecuencia target [ms]

DeltaFrequency

DWORD DINT

Variación de frecuencia de cada step [Hz]

VAR_OUTPUT

DONE

BOOL

Habilitación de salida

Active

BOOL

Indica que el bloque está activo

Busy

BOOL

Indica que hay otro bloque utilizando la salida seleccionada

Error

BOOL

Indica que hubo un error al llamar el bloque

ErrorID

BYTE

Indica el error generado

VAR

MW_PlcSpeed_INST_0

MW_PlcSpeed

Instancia de acceso a la estructura del bloque

 

Funcionamiento

 

Este bloque, cuando detecta un flanco ascendente en la entrada EN, comienza a generar pulsos para el eje seleccionado con una frecuencia que comienza desde 0 Hz hasta la frecuencia deseada (targetFrequency) (entre 0 y 300 kHz).

 

En cada paso de tiempo (deltaTime), la frecuencia se incrementa por deltaFrequency hasta alcanzar la frecuencia deseada (targetFrequency).

 

Los pulsos solo se interrumpen cuando se llama a un bloque de Stop.

 

Mientras no se llame a un bloque de Stop, la salida "Active" permanece en un nivel alto.

 

Cuando EN es FALSE, DONE permanece FALSE. La salida DONE se activa cuando el bloque completa la ejecución con éxito (bloque de Stop llamado), permaneciendo en un nivel TRUE hasta que EN reciba FALSE.

 

El número mínimo de pulsos que se pueden generar es 2.

 

Si no se respeta esta limitación, no se genera ningún pulso.

 

El número mínimo de pulsos que se pueden generar por paso es 2.

 

Si no se respeta esta limitación, la rampa de frecuencia no se genera; es decir, al habilitar el bloque, la frecuencia de los pulsos comienza directamente en el valor de targetFrequency.

 

El bloque MW_PlcChangeSpeed puede ser utilizado en conjunto para cambiar la frecuencia de salida durante la ejecución de este bloque. Consulte la ayuda del bloque MW_PlcChangeSpeed para más información.

 

wpshelp_common_fig_note

¡NOTA!

Habiendo otros bloques PWM en ejecución que usen la misma salida, tendrá prioridad el que sea llamado primero y la salida "Busy" será ajustada.

 

 La figura a continuación muestra el funcionamiento estándar del bloque, sin el uso del bloque MW_PlcChangeSpeed en conjunto.

 

 MW_PlcSpeed_example04

 

En caso haya algún error en la ejecución, la salida Error será activada y ErrorID exhibirá el código del error según la tabla de abajo.

 

Código

Descripción

0

Ejecutado con éxito

1

Control de eje no habilitado

2

Número de pasos inválido

3

Rampa inválida

4

Error de configuración

 

Ejemplo en Ladder

 

MW_PlcSpeed_example01

En el ejemplo anterior, el contacto "start" habilita una señal de pulsos en el eje 1 con una frecuencia inicial de 0 Hz y un ciclo de trabajo del 50%. La frecuencia se incrementará en 2000 Hz cada 100ms hasta alcanzar los 20000 Hz, lo que significa que el tiempo total de rampa será de 1 segundo. Después de eso, el bloque continuará generando pulsos hasta que se llame a un bloque de "Stop".

 

 

MW_PlcSpeed_example02

En el ejemplo anterior, el contacto "start" habilita una señal de pulsos en el eje 1 con una frecuencia inicial igual a targetFreq. La rampa no se generará porque no es posible generar 2 pulsos a 10 Hz dentro del tiempo de paso de 100ms. Después de eso, el bloque continuará generando pulsos hasta que se llame a un bloque de "Stop".

 

Ejemplo en ST

 

 El ejemplo de abajo, exhibe las instrucciones para aplicación del ejemplo funcional en el lenguaje ST.

 

 

VAR

   start : BOOL := 0;

   nPulses : DWORD := 100000;

   targetFreq : DWORD := 20000;

   stepTime : DWORD := 100;

   stepFreq : DWORD := 2000;

   MW_PlcSpeed2_INST_0 : FB_MW_PlcSpeed2;

END_VAR

 

MW_PlcSpeed2_INST_0.EN := start;

MW_PlcSpeed2_INST_0(

  AxisNumber:=1,

  Direction:=false,

   TargetFrequency:=targetFreq,

   DeltaTime:=stepTime,

   DeltaFrequency:=stepFreq);

COIL := MW_PlcSpeed2_INST_0.DONE;