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

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