Incompatibilidade de posição $POS_ACT no KUKA KRC4 após um loop: solução de problemas do avanço de execução
O $POS_ACT do KUKA KRC4 retorna o dobro do deslocamento A dos dados da ferramenta após o primeiro ciclo de execução do programa. A causa raiz foi atribuída a...
Em controladores KUKA KRC4 que executam o KSS 8.2 ou 8.3, programadores ocasionalmente observam o $POS_ACT informar aproximadamente o dobro do deslocamento A pretendido da ferramenta após a primeira iteração de um loop de movimento. O robô não saltou fisicamente; o Ponteiro de Execução Avançada continuou avançando para as instruções seguintes enquanto o $POS_ACT ainda refletia uma pose comandada, dependente da ferramenta e da base, que já não correspondia à medição que o programador esperava registrar ou usar como referência de frame.
Exibição no smartPAD KUKA KRC4 comparando o $POS_ACT comandado com o $POS_ACT_MES medido durante um programa de movimento em loop.
O $POS_ACT é a posição real comandada no sentido da pose programada pelo controlador, transformada pela ferramenta e pela base ativas. Por isso, ele é sensível ao momento em que o interpretador avança. O $POS_ACT_MES é a posição medida pelo caminho de realimentação do robô e é a variável mais segura quando você precisa da pose física em um ponto de sincronização. Confundir os dois produz sintomas de “deslocamento duplicado” que parecem um erro de calibração da ferramenta após o primeiro ciclo, especialmente quando um deslocamento no eixo A da ferramenta é aplicado dentro de um loop que o avanço de execução já avaliou parcialmente.
Ponteiro de Execução Avançada como mecanismo
O avanço de execução da KUKA executa instruções futuras antes de o robô alcançar o ponto final exato do movimento atual. Essa pré-busca é essencial para a mistura de trajetórias, mas significa que atribuições e cálculos de frames que leem o $POS_ACT podem ser executados antes do que o modelo mental humano de “quando chegamos”. Na primeira iteração, o momento pode coincidentemente parecer correto. Na segunda iteração, um deslocamento aplicado em relação a um $POS_ACT lido prematuramente pode se acumular com a transformação da ferramenta e aparecer como aproximadamente 2× o componente do deslocamento A nas exibições ou nos rastreamentos.
Ilustração do Ponteiro de Execução Avançada continuando pela lógica do loop enquanto o robô ainda conclui o segmento de movimento anterior.
Técnicas corretivas
- Insira WAIT SEC 0 no ponto de sincronização em que seja necessário interromper o avanço de execução antes de ler ou gravar dados relacionados à pose.
- Chame BAS(#INITMOV,0) ao reinicializar os parâmetros de movimento, para que os movimentos seguintes comecem a partir de um estado de basing limpo, em vez de herdarem um contexto parcialmente avaliado.
- Defina $ADVANCE=0 nas seções que realizam captura crítica de pose, cálculos de deslocamento da ferramenta ou atualizações de frames transportadas pelo loop; depois, restaure um valor diferente de zero para obter maior produtividade.
- Prefira $POS_ACT_MES quando a aplicação precisar da pose cartesiana medida, em vez do valor comandado dependente do ponteiro.
; Exemplo de padrão de sincronização (conceitual)
$ADVANCE=0
WAIT SEC 0
; Agora capture a pose medida
DECL FRAME MySnap
MySnap = $POS_ACT_MES
BAS(#INITMOV,0)
; Restaure o avanço para a mistura conforme necessário na célula
$ADVANCE=3
Sequência de diagnóstico
- Registre $POS_ACT e $POS_ACT_MES na mesma linha do programa, na iteração 1 e na iteração 2 do loop com falha.
- Confirme que os números da ferramenta e da base ativas não mudaram entre as iterações.
- Defina temporariamente $ADVANCE=0 e faça um novo teste; se o deslocamento A duplicado desaparecer, a interação com o avanço de execução estará confirmada.
- Substitua as leituras de pose usadas nos cálculos de deslocamento por $POS_ACT_MES ou proteja-as com WAIT SEC 0.
- Reintroduza o avanço de execução apenas fora da seção crítica e valide o tempo de ciclo em relação à qualidade da trajetória.
| Variável / chamada | Significado | Quando usar |
|---|---|---|
| $POS_ACT | Pose comandada (dependente da ferramenta/base) | Contexto geral de movimento; atenção ao avanço de execução |
| $POS_ACT_MES | Pose medida | Registros, inspeções e cálculos de deslocamento em pontos de sincronização |
| WAIT SEC 0 | Interrompe o avanço de execução | Antes de leituras/gravações críticas |
| BAS(#INITMOV,0) | Reinicializa a base de movimento | Após sincronização ou mudanças de modo |
| $ADVANCE=0 | Desativa o avanço | Seções curtas e críticas para a pose (KSS 8.2/8.3) |
Confirme a pose medida versus a comandada após a sincronização
Recalibrar a ferramenta porque o $POS_ACT “parece duplicado” pode danificar permanentemente um TCP em boas condições. Da mesma forma, adicionar deslocamentos compensatórios no PLC ou em um interpretador Submit sem compreender o avanço de execução cria correções informais dependentes da versão. Documente qual versão do KSS a célula executa — 8.2 ou 8.3 — ao capturar rastreamentos para o suporte do fornecedor e observe se opções de precisão absoluta ou bases especiais estão ativas.
Células de integração de robôs e PLCs que trocam poses por meio de fieldbus devem definir se o frame compartilhado é comandado ou medido e registrar essa definição na especificação da interface. Alinhar esse contrato desde o início evita eventos falsos de descarte quando um sequenciador de sistemas PLC e PAC dispara com base em uma pose que o avanço de execução ainda não alcançou de fato.
Sobre a autora
Elena Vogt | Engenheira de Integração de Robótica – KUKA / Células Discretas
Elena Vogt é especializada em comissionamento de KUKA KRC4/KSS, diagnóstico de frames de ferramentas e handshakes entre PLC e robô em células discretas mistas. Seu trabalho concentra-se nos efeitos colaterais do avanço de execução, nas variáveis de pose medida versus comandada e em compromissos estáveis entre tempo de ciclo e qualidade.