Programa de lógica

Descrição

As aplicações do PolyScope X podem incluir um programa lógico que funciona continuamente em segundo plano, independentemente do programa principal do robô. Isto é útil para tarefas que têm de continuar a ser executadas quando o braço está desligado, o programa principal está em pausa ou parado, ou quando o operador entrou numa área de segurança.


As utilizações típicas incluem a manutenção da comunicação por fieldbus (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), a reação a entradas de sensores externos, a comunicação do estado do robô a um PLC de produção e o controlo de equipamento externo quando o programa principal é interrompido.

O Programa Lógico não pode utilizar funções que movam diretamente o braço do robô, alterem a carga útil ou modifiquem os parâmetros TCP.

Exemplos de aplicações com o Programa Lógico

  1. Resposta ativa a um sinal de entrada de um sensor externo enquanto o robô se encontra num modo de paragem, como Paragem de proteção, Paragem de segurança ou Paragem de emergência, e o programa principal está em pausa ou parado, ou antes de o braço do robô ser ligado.

  2. A comunicação por barramento de campo (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) é mantida mesmo que o braço do robô esteja desligado e o programa não esteja a ser executado.

  3. Funcionamento contínuo da lógica da célula enquanto o programa principal é interrompido pelo operador.

  4. Relatório de estado do robô, que é transmitido ao software de controlo de produção (PLC de produção).

  5. Paragem controlada de equipamentos externos, tais como máquinas de soldadura, transportadores e dispensadores de cola, quando o programa principal é interrompido ou colocado em pausa.

  6. As entradas introduzidas pelo operador são registadas antes do início do programa.

  7. Re recuperação personalizada em caso de falhas. O operador pode decidir o que fazer após retomar o programa principal.

  8. Substituição do controlador PLC externo em pequenas células robóticas.

Licença

O Logic Program requer uma licença, que pode ser adquirida através do portal do cliente.

 

Controlo do programa lógico

Na página «Programa», selecione «Programa lógico» na barra lateral. A barra lateral expandida apresenta os controlos para navegar pelas diferentes partes do Programa Lógico. Também permite iniciar, pausar, parar e reiniciar o programa.

 

O botão «Executar programa» passa a exibir «Executar programa » ou «Parar programa», dependendo do estado do programa lógico. Funciona como um atalho para as ações de controlo do programa disponíveis no menu de contexto do Programa Lógico.

Os quatro indicadores do Programa Logic mostram o estado atual do programa. Também indicam se o programa está configurado para iniciar automaticamente quando uma aplicação é carregada.

 

Estrutura do programa lógico

Um programa lógico tem as mesmas secções estruturais que um programa principal:

  • Corpo principal do programa — executa-se continuamente até ser interrompido manualmente, com uma instrução de paragem ou devido a um erro de execução.
  • Antes do Início — é executado uma vez quando o Programa Lógico é iniciado.
  • Módulos — funções e threads, organizados da mesma forma que no programa principal. Por predefinição, as funções de thread são executadas apenas uma vez; ative a opção de loop para executar uma thread continuamente.

O programa do robô e o programa lógico têm, cada um, o seu próprio conjunto de variáveis globais, um conjunto de threads independente e um ciclo de vida de execução independente. O arranque, a paragem ou a ocorrência de uma falha num programa não interrompe o outro. Uma instrução de paragem ou pausa afeta apenas o programa em que é executada.

 

 

Na secção «Antes do arranque », só é possível executar o programa uma vez.

Na secção Módulos , pode ver a lista de funções e threads disponíveis para o programa.

 

Troca de dados com o programa do robô

A principal forma de comunicação entre o programa do robô e o Programa Lógico é através das Variáveis de Aplicação . As variáveis podem ser definidas e lidas a partir do robô e do programa lógico.

Este exemplo conta os itens que entram no buffer de entrada da célula do robô e apresenta a contagem ao programa do robô. O contador continua a aumentar mesmo quando o braço do robô está desligado.

 

Ler o estado do robô

O estado do robô está disponível através das variáveis RTDE integradas. Estas variáveis podem ser lidas utilizando a função de script get_rtde_value() . Para obter uma lista completa dos campos RTDE disponíveis, consulte o Guia RTDE .

O exemplo seguinte mostra como verificar se a função «Safeguard Stop» está ativa:


safety_status = get_rtde_value("safety_status")
# verificar se está em «Paragem de Segurança» e «Paragem
de Segurança em Modo Automático»  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

O exemplo seguinte verifica se o programa do robô está em pausa:

is_program_paused = get_rtde_value("runtime_state") == 4

A API de controlo URScript também integra esta funcionalidade.

 

Início automático do programa lógico

Pode selecionar um programa para ser iniciado automaticamente quando uma aplicação for carregada. Quando seleciona a opção Início automático , o Programa Lógico inicia-se imediatamente após o carregamento da aplicação.

Também é possível iniciar automaticamente o Programa Lógico quando o controlador do robô for ligado e a última aplicação for carregada.

A função «Autostart» funciona independentemente do modo de funcionamento ou do estado do braço do robô. Quando a função «Autostart» é ativada no arranque, uma notificação em forma de barra de notificação confirma que o Programa Lógico foi iniciado.

 

 

O ícone na barra lateral do ícone do Programa Logic indica sempre o estado atual do programa, quer este esteja em execução ou parado.

É da sua responsabilidade garantir que o Programa Lógico é seguro quando o robô está ligado e quando são carregadas diferentes aplicações.

Os programas lógicos podem ativar e desativar equipamento externo através de ligações com fios ou PLC (Modbus, PROFINET, Ethernet/IP, Socket, saídas diretas ou outras interfaces).

 

Módulos e threads

A funcionalidade do Programa Lógico pode ser organizada em funções. Isto funciona da mesma forma que no programa do robô.

Cada função pode ser marcada como um Thread . Por predefinição, os threads são executados apenas uma vez. Selecione a caixa de seleção «Loop» na função do thread para executar o thread de forma contínua.

 

Partilha de recursos

Embora o programa do robô e o programa lógico sejam executados de forma independente, cada um com o seu próprio conjunto de threads e variáveis, todos partilham os mesmos recursos de hardware. Isto impõe algumas limitações que o programador deve ter em conta:

  • Os threads do programa lógico são executados na mesma CPU que o programa do robô. O tempo de execução de todos os threads do programa lógico será somado ao tempo de execução de todos os threads do programa do robô. Em casos extremos, isto pode levar à violação «Tempo de execução demasiado atrasado».

  • Alguns recursos de comunicação, como os sinais Modbus ou os registos de uso geral, são recursos partilhados. A gravação no mesmo registo ao mesmo tempo poderá causar resultados inesperados. Além disso, o comportamento observado atualmente pode mudar no futuro, quando a implementação subjacente for otimizada.

  • Modbus — É partilhado um único cliente Modbus. Os sinais criados em qualquer um dos programas são visíveis em ambos.

  • Adaptador Ethernet/IP flexível — Cada programa abre o seu próprio identificador de leitura ou gravação para a mesma instância. Os identificadores não devem escrever nos mesmos campos de dados.

 

Limitações

  • Apenas um subconjunto de instruções URScript está disponível no Programa Lógico.

  • Os indicadores de execução do programa e a depuração baseada em pontos de paragem não são suportados para o Programa Lógico.

  • O modo «Interpreter» não é suportado nos Programas Lógicos. No entanto, o modo de intérprete ainda pode ser iniciado no programa do robô enquanto o Programa Lógico estiver a ser executado.