Bloque para control de velocidad con generación de rampa y número especificado de pulsos.
|
¡NOTA! En las versiones de firmware anteriores a la 1.2.0 del PLC200, el bloque no funcionaba con el control de ejes habilitado y no podía controlar la dirección de los ejes. Para facilitar el control de motores paso a paso, este bloque se ha integrado en el conjunto de bloques de control de ejes. Las principales diferencias son:
|
Representación Ladder

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 |
|
NumberOfPulses |
DINT |
Número de pulsos total de la ejecución del bloque |
|
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 de subida en la entrada EN, comienza a generar pulsos para el eje seleccionado con una frecuencia que parte de 0 Hz hasta la frecuencia deseada (targetFrequency) (entre 0 y 300 kHz).
A cada step de tiempo (deltaTime), la frecuencia es incrementada por deltaFrequency hasta alcanzar la frecuencia deseada (targetFrequency).
Los pulsos se interrumpen cuando se genera el número total de pulsos (NumberOfPulses).
La dirección del eje depende de la señal de la entrada NumberOfPulses.
Mientras el número de pulsos generados no alcance el valor de Pulses, la salida "Active" quedará en nivel alto.
CCuando EN tiene valor FALSE, DONE permanece FALSE. La salida DONE se activa cuando el bloque finaliza la ejecución con éxito, permaneciendo en nivel TRUE hasta que EN reciba FALSE.
Para detener la generación de pulsos durante el movimiento, utilice el bloque MW_PlcStop1. En este caso, el bloque considera que el movimiento ha finalizado.
El número mínimo de pulsos que pueden ser generados es 2.
En caso de que esta limitación no sea respetada, ningún pulso será generado.
El número mínimo de pulsos que pueden ser generados por step 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 desde el valor de targetFrequency.
El bloque MW_PlcChangeSpeed puede ser utilizado en conjunto para alterar la frecuencia de salida durante la ejecución de ese bloque. Ver el help del bloque MW_PlcChangeSpeed para más informaciones.
|
¡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.

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

En el ejemplo de arriba el contacto "start" habilita una señal PWM en la salida DO1 con frecuencia inicial de 0 Hz y duty cycle de 50%. La frecuencia será incrementada a 2000 Hz, cada 100ms, hasta llegar a 20000 Hz, o sea, el tiempo total de rampa será de 1 segundo. En el total de la ejecución del bloque, serán enviados a la salida 100000 pulsos. Finalizado el bloque exitosamente, la salida DONE será activada y será accionada la COIL.

En el ejemplo de arriba, el contacto "start" habilita una señal PWM en la salida DO1 con frecuencia inicial igual a la targetFreq. La rampa no será generada ya que no es posible generar 2 pulsos en 10 Hz dentro del tiempo de step de 100 ms. En el total de la ejecución del bloque, serán enviados a la salida 1000 pulsos. Finalizado el bloque exitosamente, la salida DONE será activada y será accionada la COIL.
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_PlcSpeed_INST_0 : FB_MW_PlcSpeed; END_VAR
MW_PlcSpeed_INST_0.EN := start; MW_PlcSpeed_INST_0( OutputNumber:=1, NumberOfPulses:=nPulses, TargetFrequency:=targetFreq, DeltaTime:=stepTime, DeltaFrequency:=stepFreq); COIL := MW_PlcSpeed_INST_0.DONE;
|
|---|