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

MW_CamCalc

Calcula tabela de pontos CAM

Previous pageReturn to chapter overviewNext page

Bloque que calcula una tabla de puntos de una curva CAM.

 

Representación Ladder

 

MW_CamCalc_block

 

Características de Ejecución

 

Tamaño de Memoria de Programa

66 Bytes

Tamaño de Memoria de Datos

24 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)

CamTable

WORD

Código de la tabla CAM

VAR_INPUT

Execute

BOOL

Habilitación del bloque

NumberOfPoints

WORD

Número de puntos de la tabla

MasterPoints

LREAL

Puntos del maestro

SlavePoints

LREAL

Puntos del esclavo

CurveType

WORD

Tipo de curva

Periodic

BOOL

Control de ejecución de la solicitud

(0 - Ejecución única)

(1 - Ejecución periódica)

VAR_OUTPUT

InSync

BOOL

Habilitación de la salida

Busy

BOOL

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

Error

BOOL

Señalizador de error en la ejecución

ErrorID

WORD

Identificador del error ocurrido

CamTableID

WORD

Tabla CAM seleccionada

VAR

MW_CAMCALC_INST_0

MW_CAMCALC

Instancia de acceso a la estructura del bloque

 

Operación

 

Este bloque, cuando detecta un flanco de subida en Execute, construye la tabla especificada en CamTable con los datos programados para que ésta pueda ser utilizada por el bloque MC_CamIn.

 

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

83

Archivo de las tablas de puntos de la curva CAM inválido.

84

Cam Table inválido. Cam Table debe ser de 11 a 20.

86

Número de puntos mayor que el programado en el configurador CAM PROFILES.

87

Posición del eje maestro inválida. La posición del eje maestro debe ser mayor que la posición del punto anterior.

88

Bloque MW_CamCalc en ejecución. Solamente se permite la ejecución de un bloque MW_CamCalc por vez.

89

Tabla de puntos en uso por el bloque MC_CamIn.

90

Marcador de double con posición del eje maestro inexistente.

91

Marcador de double con posición del eje esclavo inexistente.

92

Marcador de word con tipo de curva inexistente.

 

Ejemplo en Ladder

 


 
MW_CamCalc_example02
 
MW_CamCalc_example03

 

 

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

 

En ese ejemplo, el número de puntos de la curva será el contenido de NUM_POINTS, la posición del eje maestro será de acuerdo con los contenidos de MASTER_POINTS[0] y MASTER_POINTS[1], la posición del eje esclavo será de acuerdo con los contenidos de SLAVE_POINTS[0] y SLAVE_POINTS[1] y el tipo de la curva será de acuerdo con los contenidos de CURVE_TYPE[0] y CURVE_TYPE[1].

 

Colocando los mismos valores en la herramienta CAM Profiles podremos observar la curva de abajo:

 

MW_CamCalc_example04

 

 

Al finalizar el cálculo de la tabla de puntos, la salida InSync será ajustada mientras la entrada Execute permanezca ajustada.

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

 

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

S_PTS_ARRAY[0] := FB_WORD_TO_LREAL(PAR_1052);

S_PTS_ARRAY[1] := FB_WORD_TO_LREAL(PAR_1053);

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:=1);

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:=0,

  Slave:=0,

  MasterScaling:=1.0,

  SlaveScaling:=1.0,

  MasterSyncPosition:=LREAL#0.0,

  CamTableID:=CAMTABLEID,

  BufferMode:=1);

CAMIN1_DONE := MC_CAMIN_INST_0.InSync;