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

MC_CamIn

Posicionamento por tabela CAM

Previous pageReturn to chapter overviewNext page

Bloque responsable por la ejecución de un posicionamiento definido por una tabla de puntos de una curva CAM.

 

Representación Ladder

 

MC_CamIn_block

 

Características de Ejecución

 

Tamaño de Memoria de Programa

92 Bytes

Tamaño de Memoria de Datos

52 Bytes

 

Estructura del Bloque

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_IN_OUT

Master

BYTE

Selección de maestro de la operación

(0 - Entradas digitales rápidas)

(1 - CANopen)

(2 - Encoder 1)

(3 - Eje virtual)

(4 - Encoder 2)

Slave

BYTE

Selección de esclavo de la operación

(0 - Eje real)

(1 - Eje Virtual 1)

VAR_INPUT

Execute

BOOL

Habilitación del bloque

MasterScaling

REAL

Ganancia en los valores de posición del eje maestro.

SlaveScaling

REAL

Ganancia en los valores de posición del eje esclavo.

MasterSyncPosition

LREAL

Posición del eje maestro donde el esclavo iniciará la curva CAM.

CamTableID

WORD

Tabla CAM seleccionada

BufferMode

BYTE

Modo de inicio de ejecución

(0 - Inicia bloque inmediatamente, si hay otro bloque en ejecución, será abortado)

(1 - Si otro bloque está en ejecución, el bloque en ejecución continuará su movimiento hasta concluirlo y ese nuevo bloque aguardará para entonces ser ejecutado.)

(6 - Si algún otro bloque está en ejecución, este bloque entrará en error 52 y no será ejecutado. La alarma A00052 será mostrada en la IHM.)

VAR_OUTPUT

InSync

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

EndOfProfile

BOOL

Señalizador de fin del perfil CAM

VAR

MC_CAMIN_INST_0

MC_CAMIN

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 que drive ejecute un posicionamiento definido por CamTableID.

 

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

52

Intento de ejecutar bloque con BufferMode en Single cuando otro bloque esté activo.

67

Drive en estado "Disabled" o "ErrorStop".

69

Drive en estado "Stopping".

70

Intento de ejecutar bloque con BufferMode en Buffered cuando otro bloque esté activo y otro bloque esté aguardando.

71

P202 diferente de 4.

74

Drive en estado "Homing".

78

Bloque MC no ejecutado - Falla interna

85

CamTableID inválido.

 

Ejemplo en Ladder

 

 

 

En la transición de subida de CAMCALC_EXECUTE, el bloque MW_CamCalc es ejecutado y la tabla de puntos NUM_OF_TABLE será calculada de acuerdo con los argumentos del bloque.

 

Al finalizar el cálculo de la tabla de puntos, la salida InSync es ajustada mientras ça entrada Execute permanece ajustada.

 

Con CAMCALC_DONE ajustado, el bloque MC_CamIn podrá ser ejecutado.

 

En la transición de subida de CAMIN1_EXECUTE, el primer bloque MC_CamIn es ejecutado.

 

En caso de que haya necesidad de algún ajuste en la tabla de puntos de la curva CAM, basta hacer el ajuste en MASTER_PT[0], MASTER_PT[1], SLAVE_PT[0] y SLAVE_PT[1], cambiar el contenido de NUM_OF_TABLE para 12 y ejecutar nuevamente el bloque MW_CamCalc.

 

Ejemplo en ST

 

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

 

 

VAR

  CAMCALC_EXECUTE, CAMCALC_DONE, CAMIN1_EXECUTE,

      CAMIN1_DONE : BOOL;

  NUM_OF_TABLE, PTS_OF_ARRAY : WORD;

  CAMTABLEID : UINT;

  CURVE_ARRAY : ARRAY [0..1] OF WORD;

  M_PTS_ARRAY, S_PTS_ARRAY : ARRAY [0..1] OF LREAL;

  MW_CAMCALC_INST_0 : FB_MW_CamCalc;

  MC_CAMIN_INST_0 : FB_MC_CamIn;

END_VAR

 

M_PTS_ARRAY[0] := FB_WORD_TO_LREAL(PAR_1050);

M_PTS_ARRAY[1] := FB_WORD_TO_LREAL(PAR_1050);

S_PTS_ARRAY[0] := FB_WORD_TO_LREAL(PAR_1050);

S_PTS_ARRAY[1] := FB_WORD_TO_LREAL(PAR_1050);

CURVE_ARRAY[0] := FB_STORE(WORD#0);

CURVE_ARRAY[1] := FB_STORE(WORD#1);

 

MW_CAMCALC_INST_0.Execute := CAMCALC_EXECUTE;

MW_CAMCALC_INST_0(

  Master:=0,

  Slave:=0,

  CamTable:=NUM_OF_TABLE,

  NumberOfPoints:=PTS_OF_ARRAY,

  MasterPoints:=M_PTS_ARRAY,

  SlavePoints:=S_PTS_ARRAY,

  CurveType:=CURVE_ARRAY,

  Periodic:=0);

CAMTABLEID := MW_CAMCALC_INST_0.CamTableID;

CAMCALC_DONE := MW_CAMCALC_INST_0.InSync;

 

MC_CAMIN_INST_0.Execute := CAMIN1_EXECUTE AND CAMCALC_DONE;

MC_CAMIN_INST_0(

  Master:=3,

  Slave:=0,

  MasterScaling:=1.0,

  SlaveScaling:=1.0,

  MasterSyncPosition:=LREAL#0.0,

  CamTableID:=11,

  BufferMode:=1);

CAMIN1_DONE := MC_CAMIN_INST_0.InSync;