Implementando Contador Multivoltas no KAS (Relação de Acoplamento Não Binária)
Em aplicações rotativas com encoders absolutos multivoltas é possível que o controlador perca a contagem do número de voltas. Se a máquina usa um redutor com redução de acoplamento não binária (Ex. 3:1), o periodo da máquina não é um divisor inteiro se comparado com o periodo do encoder, possibilitando que posição de feedback não seja a mesma após desligar e ligar a máquina. Em outra palavras, a posição do eixo pode ser deslocada devido ao não acumulo do numero correto de voltas.
Para evitar essa situação o Drive AKD é capaz de armazenar o número de voltas do eixo da aplicação, sobrepondo o contador do feedback. Para habilitar essa função, deve-se setar o parametro FB1.EXTENDEDMULTITURN = 1. Essa configuração garante que a posição FB1.P (32-Bits) será sempre a mesma, depois de desligar e ligar a máquina.
No presente momento, a posição EtherCAT lida pelo KAS é limitadas a 20-Bits, os 12-Bits onde são armazenado o número de voltas do eixo é ignorado. Levando isso em conderação, mesmo que o parâmetro FB1.EXTENDEDMULTITURN permita que o drive grave o numero de voltas, a informação é desconsiderada pelo KAS.
Para contornar esse problema um bloco de função foi desenvolvido. Ele lê o parâmetro FB1.P do AKD, extrai o numero de voltas e calcula o número de vezes que o encoder passou pelo rollover.
Logo depois da inicialização da rede e da engine de movimento, o bloco de função é chamando e corrige a posição do eixo com base nos calculos.
Em anexo esta o projeto .kas. Ele usa o bloco de função UDFB_AbsExtendedMultiturn, aplicado no Template SFC. A função é adicionada logo depois da inicialização.

Entendendo o UDFB_AbsExtendedMultiturn
O bloco de função deve ser chamado logo depois que a rede for incializada. O bloco esta pronto para ser implementado em todos as linguagens de programação.
Ações executadas pelo Bloco de Função:
- Seta FB1.EXTENDEDMULTITURN - 1;
- Seta FB1.PIN - 1048576;
- Seta FB1.POUT - 1;
- Seta FB1.PUNIT - 3 (PIN/POUT);
- Lê User Units per Rev;
- Lê Axis Rollover;
- Lê FB1.P;
- Calcula o número de revolução e vezes que o encoder passou pelo rollover.
- Calcula a nova posição do eixo;
- Seta a posição calculada no eixo;
Representação do bloco em FFLD:

Inputs
IN_boEnable - BOOL - Habilita o bloco;
IN_Axis - AXIS_REF - Estrutura que especifica o Eixo;
Outputs
OUT_boDone - BOOL - Execução do bloco concluída ;
OUT_boActive - BOOL - Bloco ativo;
OUT_boError - BOOL - Existe uma falha ativa no bloco;
OUT_iErrorID - INT - Número do erro:
1 para Falha ao escrever o parâmetro FB1.EXTENDEDMULTITURN;
Verifique se o tipo de feedback configurado no motor é valido;
4 for Falha no Eixo;
OUT_lrStartPos - LREAL - Posição do eixo antes do ajuste do bloco;
OUT_diNumOfRev - DINT - Número de revolução FB1.P/(2^20);
OUT_diNumOfUnwinds - DINT - Número de vezes que o encoder passou pelo rollover.
OUT_lrNewHomePos - LREAL - Posição escrita no eixo após a execução do bloco.
Página inicial >
Base de conhecimento >
FAQs >
Downloads >