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

MW_PlcMoveRelative2

Previous pageReturn to chapter overviewNext page

Bloque para control de posición relativa de dos motores de paso simultáneamente.

 

Representación Ladder

 

MW_PlcMoveRelative2_G0

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

EN/Execute

BOOL

Habilitación del bloque

PositionAxis1

DINT

Posición deseada del eje 1

PositionAxis2

DINT

Posición deseada del eje 2

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_PlcMoveRelative2_INST_0

MW_PlcMoveRelative2

Instancia de acceso a la estructura del bloque

 

Funcionamiento

 

Cuando la entrada EN cambie de FALSE a TRUE, el bloque iniciará la generación del número de pulsos para los motores de paso de los dos ejes, considerando la señal para invertir el sentido de rotación.

 

El PLC tiene una frecuencia final y rampa de aceleración máxima 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.

 

Esos valores son alterados dinámicamente para garantizar que ambos ejes sean sincronizados y que la trayectoria entre la posición actual y la posición deseada sea una línea recta.

 

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 posición deseada es siempre con relación a la posición actual, o sea, si la posición actual fuera 10000 y "position" sea 5000, la posición final será 15000.

 

Si la posición relativa deseada fuera negativa, la señal de dirección del eje será invertida y el número de pulsos será generado normalmente.

 

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 la posición deseada sea alcanzada, la salida DONE pasará a TRUE y el bit "Active" cambiará a FALSE.

 

Para interrumpir la generación de pulso durante el movimiento, utilizar el bloque MW_PlcStop2. En este caso, el bloque considera que el movimiento ha finalizado.

 

El número mínimo de pasos que pueden ser generados es 2.

 

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

No fue posible generar una trayectoria sincronizada

4

Rampa inválida

5

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_PlcMoveRelative2_example01

 

En el ejemplo de arriba, ambos ejes son controlados de la siguiente forma:

 

Al accionar el contacto "start", es generada 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 al nivel bajo (considerando que la dirección no fue invertida vía parámetros) y es hecha una rampa sincronizada con el eje 2 hasta que 10000 sean generados.

 

En paralelo, es generada una señal PWM en la salida de pulsos del eje 2 con frecuencia inicial de 0 Hz y duty cycle de 50%. La salida de dirección del eje 2 es ajustada al nivel alto (considerando que la dirección no fue invertida vía parámetros) y es hecha una rampa sincronizada con el eje 1 hasta que 10000 pulsos sean generados con la señal de dirección contraria.

 

Los dos ejes terminan sus trayectorias en el mismo instante. En ese momento, la salida DONE es activada y el segundo bloque es habilitado.

 

Al habilitar el segundo bloque, la salida de dirección del eje 1 es invertida automáticamente y 5000 pulsos son generados en la salida de pulsos. Al final, el eje estará en la posición 5000.

 

En paralelo, la salida de dirección del eje 2 también es invertida (ya que ahora serán generados pulsos en sentido positivo) y serán generados 5000 pulsos más. 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

   pos1_A1 : DINT := 10000;

   pos1_A2 : DINT := -10000;

   pos2_A1 : DINT := -5000;

   pos2_A2 : DINT := 5000;

   start : BOOL := 0;

   coil : BOOL;

   finished : BOOL;

   MW_PlcMoveRelative2_INST_0 : FB_MW_PlcMoveRelative2;

   MW_PlcMoveRelative2_INST_1 : FB_MW_PlcMoveRelative2;

END_VAR

 

MW_PlcMoveRelative2_INST_0.EN := start;

MW_PlcMoveRelative2_INST_0(

   PositionAxis1:=pos1_A1,

  PositionAxis2:=pos1_A2);

coil := MW_PlcMoveRelative2_INST_0.DONE;

 

MW_PlcMoveRelative2_INST_1.EN := coil;

MW_PlcMoveRelative2_INST_1(

   PositionAxis1:=pos2_A1,

  PositionAxis2:=pos2_A2);

finished := MW_PlcMoveRelative2_INST_1.DONE;