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

MW_PlcMoveAbsolute1

Previous pageReturn to chapter overviewNext page

Bloque para control de posición absoluta con motores de paso.

 

Representación Ladder

 

MW_PlcMoveAbsolute1_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

Position

DINT

Posición deseada

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_PlcMoveAbsolute1_INST_0

MW_PlcMoveAbsolute1

Instancia de acceso a la estructura del bloque

 

Funcionamiento

 

Este bloque, cuando detecta un flanco de subida en la entrada EN, comienza a generar el número de pulsos (posición) necesario para que el motor paso a paso del eje seleccionado alcance la posición absoluta deseada.

 

El PLC tiene una frecuencia final y rampa de aceleración estándar para el control de ejes, que pueden ser alteradas utilizando el bloque MW_PlcChangeRamp1. Los valores estándares de la rampa son:

 

Tiempo de aceleración/desaceleración: 100ms;
Número de steps para aceleración: 20;
Frecuencia inicial: 0 Hz;
Frecuencia final: 10 kHz.

 

wpshelp_common_fig_note

¡NOTA!

Es necesario que haya pulsos suficientes para que la rampa sea generada, en caso contrario, los pulsos serán generados sin rampa.

 

La entrada "position" es siempre absoluta. Por ejemplo, si la posición actual fuera 20000 y "position" fuera 5000, la posición final será 5000. En este caso serán generados 15000 pulsos en la salida de pulsos del eje y la señal de la salida de dirección del eje será invertida.

 

wpshelp_common_fig_note

¡NOTA!

Es posible invertir la dirección estándar utilizando los parámetros del producto. Ver el manual de parámetros.

 

Mientras la posición deseada no sea alcanzada, la salida "Active" pasará a TRUE.

 

Cuando 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 pasos que pueden ser generados es 2. Sin embargo, en caso de que el número de pulsos a ser generados sea 0, el bloque retornará éxito.

 

En caso de que esta limitación no sea respetada, ningún pulso será generado y el bloque retornará error.

 

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

 

wpshelp_common_fig_note

¡NOTA!

Es necesario que el control de motor de paso esté habilitado para el eje seleccionado. Vea el manual del usuario y el manual de parámetros.

 

Ejemplo en Ladder

 

MW_PlcMoveAbsolute1_example01

 

MW_PlcMoveAbsolute1_example02

En el ejemplo de arriba, el contacto "start" habilita una señal PWM en la salida de pulsos del eje 1, con frecuencia inicial de 0 Hz y duty cycle de 50%. La salida de dirección del eje 1 es ajustada para nivel bajo (considerando que la dirección no fue invertida vía parámetros). La frecuencia será incrementada y decrementada de acuerdo con la rampa estándar. Al fin de la generación de los 10000 pulsos (considerando que la posición inicial era 0), la salida DONE es activada y el segundo bloque es habilitado, iniciando la generación de -5000 pulsos. En ese momento, la salida de dirección es invertida automáticamente y los 5000 pulsos son generados en la salida de pulsos. Al final, el eje estará en la posición 5000.

 

Ejemplo en ST

 

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

 

 

VAR

   pos : DINT := 10000;

   pos2 : DINT := 5000;

   start : BOOL := 0;

   coil : BOOL;

   coil2 : BOOL;

   MW_PlcMoveAbsolute1_INST_0 : FB_MW_PlcMoveAbsolute1;

   MW_PlcMoveAbsolute1_INST_1 : FB_MW_PlcMoveAbsolute1;

END_VAR

 

MW_PlcMoveAbsolute1_INST_0.EN := start;

MW_PlcMoveAbsolute1_INST_0(

  AxisNumber:=1,

   Position:= pos);

coil := MW_PlcMoveAbsolute1_INST_0.DONE;

 

MW_PlcMoveAbsolute1_INST_1.EN := coil;

MW_PlcMoveAbsolute1_INST_1(

  AxisNumber:=1,

   Position:= pos2);

coil2 := MW_PlcMoveAbsolute1_INST_1.DONE;