Camino:  Equipo (Dispositivos) > LDW900 > Ladder > Motion Control > Motion Control Command >

MC_Stop

Parada controlada de eixo

Previous pageReturn to chapter overviewNext page

Bloque responsable por la ejecución de una parada controlada.

 

Representación Ladder

 

MC_Stop_block

 

Características de Ejecución

 

Tamaño de Memoria de Programa

52 Bytes

Tamaño de Memoria de Datos

12 Bytes

 

Estructura del Bloque

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_IN_OUT

Axis

BYTE

Selección de eje de la operación

(0 - Eje real)

(1 - Eje Virtual 1)

VAR_INPUT

Execute

BOOL

Habilitación del bloque

Deceleration

REAL

Desaceleración de la parada

Jerk

REAL

Jerk [rpm/s²]

VAR_OUTPUT

Done

BOOL

Habilitación de la salida

Busy

BOOL

Señalizador de que el bloque aún no fue finalizado

Active

BOOL

Señalizador de bloque con control sobre el eje

CommandAborted

BOOL

Señalizador de comando abortado

Error

BOOL

Señalizador de error en la ejecución

ErrorID

WORD

Identificador del error ocurrido

VAR

MC_STOP_INST_0

MC_STOP

Instancia de acceso a la estructura del bloque

 

Operación

 

Este bloque, cuando detecta un flanco de subida en Execute, envía un comando para una parada controlada del eje. Mientras Execute posea nivel TRUE, ningún otro bloque MC será ejecutado.

 

Al ejecutar el bloque MC_Stop, el drive pasará a operar en malla de posición y permanecerá así, incluso tras la conclusión del bloque. Se debe ajustar la ganancia proporcional de posición (P0159) para obtener un mejor desempeño del drive.

 

En la ejecución del bloque, el estado del eje cambiará para Stopping. Si al finalizar la parada, el bloque no está más activo, el estado del eje cambiará para Standstill.

 

Cuando Execute tiene valor FALSE, Done permanece FALSE. La salida Done es activada cuando el bloque termina la ejecución exitosamente, permaneciendo en nivel TRUE hasta que Execute reciba FALSE.

 

En caso de que 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

Descrição

64

Desaceleración programada menor que la mínima permitida.

65

Desaceleración programada mayor que la máxima permitida.

67

Drive en estado "Disabled" o "ErrorStop".

71

P202 diferente de 4.

78

Bloque MC no ejecutado - Falla interna

93

Jerk programado menor que el mínimo permitido.

94

Jerk programado mayor que el máximo permitido.

 

Ejemplo en Ladder

 
MC_Stop_example01
 
MC_Stop_example02
 
MC_Stop_example03

 

En la transición de subida de MOVE_COMMAND, es ejecutado el bloque MC_MoveVelocity  Con eso, las señales Busy y Active de este bloque son ajustadas y se  inicia el movimiento para llegar a la velocidad de 200 RPM. El estado del eje (%SW6004) cambia de Standstill (2) para Continuous Motion (5).

En el instante en que la velocidad alcanza 200 RPM, es ajustada MOVE_RESULT.

 

Teniéndose la transición de subida de STOP_COMMAND, el bloque MC_Stop es instantáneamente ejecutado, con eso, son ajustadas las señales Busy y Active de este bloque y se inicia la parada. Al mismo tiempo, las señales Busy, Active e InVelocity del bloque MC_MoveVelocity son reseteadas y la señal CommandAborted es ajustada por 1 ciclo de scan. El estado del eje (%SW6004) cambia de ContinuousMotion (5) para Stopping (3).

 

Al finalizar la parada, la salida Done del bloque MC_Stop es ajustada y permanece hasta que la entrada Execute sea reseteada. El estado del eje (%SW6004) permanece igual a Stopping (3) y no será ejecutado ningún otro bloque MC.

 

Teniéndose la transición de subida de MOVE_COMMAND, es iniciado el bloque MC_MoveVelocity, no obstante, como el bloque MC_Stop está activo, ocurrirá error y la señal Error será ajustada, insertando el valor 69 en ErrorID.

 

Cuando la entrada Execute del bloque MC_Stop es reseteada, las señales Busy, Active y Done son reseteadas. El estado del eje (%SW6004) cambia de Stopping (3) para Standstill (2) y podrán ser ejecutados otros bloques MC.

 

Ejemplo en ST

 

 El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.

 

 

VAR

  STOP_COMMAND, STOP_RESULT, MOVE_COMMAND, MOVE_RESULT, MOVE_BUSY,         MOVE_ACTIVE, MOVE_ABORTED, MOVE_ERROR, STOP_BUSY,

      STOP_ACTIVE : BOOL;

  MOVE_ERROCODE : UINT;

  MC_STOP_INST_0 : FB_MC_Stop;

  MC_MOVEVELOCITY_INST_0 : FB_MC_MoveVelocity;

END_VAR

 

MC_MOVEVELOCITY_INST_0.Execute := MOVE_COMMAND;

MC_MOVEVELOCITY_INST_0(

  Axis:=0,

  ContinuousUpdate:=0,

  Velocity:=200.0,

  Acceleration:=1000.0,

  Deceleration:=1000.0,

  Jerk:=0.0,

  BufferMode:=0);

MOVE_BUSY := MC_MOVEVELOCITY_INST_0.Busy;

MOVE_ACTIVE := MC_MOVEVELOCITY_INST_0.Active;

MOVE_ABORTED := MC_MOVEVELOCITY_INST_0.CommandAborted;

MOVE_ERROR := MC_MOVEVELOCITY_INST_0.Error;

MOVE_ERROCODE := MC_MOVEVELOCITY_INST_0.ErrorID;

MOVE_RESULT := MC_MOVEVELOCITY_INST_0.InVelocity;

 

MC_STOP_INST_0.Execute := STOP_COMMAND;

MC_STOP_INST_0(Axis:=0, Deceleration:=500.0, Jerk:=0.0);

STOP_BUSY := MC_STOP_INST_0.Busy;

STOP_ACTIVE := MC_STOP_INST_0.Active;

STOP_RESULT := MC_STOP_INST_0.Done;