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

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



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;
|
|---|