MW_PlcMoveRelative2
MW_PlcMoveRelative2 desplaza dos ejes paso a paso simultáneamente según un número relativo de pulsos. En el flanco de subida de EN, genera pulsos relativos a las posiciones actuales y sincroniza ambos ejes para que finalicen sus trayectorias en el mismo instante.
Representación en Ladder
Estructura de bloques
| Tipo de variable | Nombre | Tipo de datos | Descripción |
|---|---|---|---|
| VAR_INPUT | EN/Execute | BOOL | Señal de habilitación. |
| VAR_INPUT | PositionAxis1 | DINT | Posición objetivo o configurada para el eje seleccionado. |
| VAR_INPUT | PositionAxis2 | DINT | Posición objetivo o configurada para el eje seleccionado. |
| VAR_OUTPUT | DONE | BOOL | Se establece cuando el bloque finaliza correctamente. |
| VAR_OUTPUT | Active | BOOL | Indica que el bloque controla el eje. |
| VAR_OUTPUT | Busy | BOOL | Indica que el bloque todavía se está ejecutando. |
| VAR_OUTPUT | Error | BOOL | Indica un error de ejecución. |
| VAR_OUTPUT | ErrorID | BYTE | Identificador de error. |
| VAR | MW_PlcMoveRelative2_INST_0 | MW_PlcMoveRelative2 | Instancia de acceso para la estructura de bloques. |
Operación
- En un flanco de subida de
EN, el bloque genera pulsos en relación con la posición actual. - Una posición relativa negativa invierte la señal de dirección y genera el número de pulsos solicitado.
- El PLC utiliza una frecuencia final y una rampa de aceleración predeterminadas para el control de los ejes. Estos valores pueden modificarse con
MW_PlcChangeRamp1. - Utilice
MW_PlcStop1or `MW_PlcStop2 para interrumpir la generación de pulsos durante el movimiento. - En el control de dos ejes, ambos ejes se sincronizan para que finalicen sus trayectorias en el mismo instante.
Códigos de error
| Código | Descripción |
|---|---|
| 0 | Ejecutado con éxito. |
| 1 | El control de ejes no está habilitado. |
| 2 | Número de pasos no válido. |
| 3 | No se pudo generar una trayectoria sincronizada. |
| 4 | Rampa no válida. |
| 5 | Error de configuración. |
Ejemplos
- Ejemplo en Diagrama Ladder
- Ejemplo en Texto estructurado

El ejemplo en Ladder muestra un uso funcional del bloque con las señales de comando, estado y salida correspondientes.
El siguiente código en Structured Text aplica el mismo ejemplo funcional.
Structured Text
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;