Caminho:  Equipamentos (Dispositivos) > SCA06 > Ladder > Motion Control > Motion Control Cam >

MC_CamIn

Posicionamento por tabela CAM

Previous pageReturn to chapter overviewNext page

Bloco responsável pela execução de um posicionamento definido por uma tabela de pontos de uma curva CAM.

 

Representação Ladder

 

 MC_CamIn_block

 

Características de Execução

 

Tamanho de Memória de Programa

92 Bytes

Tamanho de Memória de Dados

52 Bytes

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_IN_OUT

Master

BYTE

Seleção de mestre da operação

(0 - Entradas digitais rápidas)

(1 - CANopen)

(2 - Encoder 1)

(3 - Eixo virtual)

(4 - Encoder 2)


Slave

BYTE

Seleção de escravo da operação

(0 - Eixo real)

VAR_INPUT

Execute

BOOL

Habilitação do bloco


MasterScaling

REAL

Ganho nos valores de posição do eixo mestre.


SlaveScaling

REAL

Ganho nos valores de posição do eixo escravo.


MasterSyncPosition

LREAL

Posição do eixo mestre onde o escravo iniciará a curva CAM.


CamTableID

WORD

Tabela CAM selecionada


BufferMode

BYTE

Modo de início de execução

(0 - Inicia bloco imediatamente, se houver outro bloco em execução o mesmo será abortado)

(1 - Se outro bloco estiver em execução, o bloco em execução continuará seu movimento até concluí-lo e esse novo bloco aguardará para então ser executado.)

(6 - Se algum outro bloco estiver em execução, este bloco entrará em erro 52 e não será executado. Será mostrado na IHM o alarme A00052.)

VAR_OUTPUT

InSync

BOOL

Habilitação da saída


Busy

BOOL

Sinalizador de que o bloco ainda não foi finalizado


Active

BOOL

Sinalizador de bloco com controle sobre o eixo


CommandAborted

BOOL

Sinalizador de comando abortado


Error

BOOL

Sinalizador de erro na execução


ErrorID

WORD

Identificador do erro ocorrido


EndOfProfile

BOOL

Sinalizador de fim do perfil CAM

VAR

MC_CAMIN_INST_0

MC_CAMIN

Instância de acesso à estrutura do bloco

 

Funcionamento

 

Este bloco, quando detecta uma borda de subida em Execute, envia um comando para o drive executar um posicionamento definido por CamTableID.

 

Quando Execute possui valor FALSE, Done permanece FALSE. A saída Done é ativada quando o bloco termina a execução com sucesso, permanecendo em nível TRUE até que Execute receba FALSE.

 

Caso haja algum erro na execução, a saída Error é ativada e ErrorID exibe o código do erro segundo a tabela abaixo.

 

Código

Descrição

52

Tentativa de executar bloco com BufferMode em Single quando outro bloco ativo.

67

Drive no estado "Disabled" ou "ErrorStop".

69

Drive no estado "Stopping".

70

Tentativa de executar bloco com BufferMode em Buffered quando outro bloco ativo e outro bloco aguardando.

71

P202 diferente de 4.

74

Drive no estado "Homing".

78

Bloco MC não executado - Falha interna.

85

CamTableID inválido.

 

Exemplo em Ladder

 

 

 

Na transição de subida de CAMCALC_EXECUTE, o bloco MW_CamCalc é executado e a tabela de pontos NUM_OF_TABLE será calculada de acordo com os argumentos do bloco.

 

Ao finalizar o cálculo da tabela de pontos, a saída InSync é setada enquanto a entrada Execute permanece setada.

 

Com CAMCALC_DONE setado, o bloco MC_CamIn poderá ser executado.

 

Na transição de subida de CAMIN1_EXECUTE, o primeiro bloco MC_CamIn é executado.

 

Caso houver a necessidade de algum ajuste na tabela de pontos da curva CAM, basta fazer o ajuste em MASTER_PT[0], MASTER_PT[1], SLAVE_PT[0] e SLAVE_PT[1], mudar o conteúdo de NUM_OF_TABLE para 12 e executar novamente o bloco MW_CamCalc.

 

Exemplo em ST

 

 O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem 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;