PRINCIPAIS MÉTODOS DE REPRESENTAÇÃO DE UM ALGORITMO Fluxograma e diagrama de blocos Representação gráfica do processo, ou seja, das instruções e ou módulos do processamento, que compõem o algoritmo e que também é conhecido como diagrama de blocos. No planejamento o generalista ou desenhista de sistema tem uma poderosa ferramenta de representação gráfica que possibilita: a) Rápida análise durante o processo de planejamento e construção do sistema. b) Identificação das atividades críticas para cada um dos processos. c) Identificação dos subsistemas e suas ligações que permitem a interdependência. d) Conhecimento da seqüência encadeada das atividades dando uma visão de luxo do processo. e) Documentação do processo para análises futuras, adequação a normas e certificações e esclarecimento sobre o funcionamento para novos colaboradores no sistema. SIMBOLO SIGNIFICADO Operação / execuções / procedimentos Ponto de decisão Sentido do fluxo A Conexão Limites (início, pare, fim) Entrada de dados, operação manual. Sub rotina, processo pré-definido Obs.: No padrão ANSI existem mais de 30 símbolos diferentes que tratam de tipos de arquivos acessados tipos de saída de dados e diferentes processos, os símbolos acima são os usualmente utilizando em implementações que envolvem dinâmica e seus respectivos processamentos. 1
Exemplo: Algoritmo numérico para a geração de trajetória, sua tarefa é de calcular a trajetória de um elemento terminal de um robô siga entre dois pontos possibilitando, por exemplo, que uma parte da trajetória seja linear outra seja circular. 1 Início J Parâmetros iniciais J + K = 1, n =1 Escolha da diretriz 3 = J + + = + Abrir a garra = li > = li Divisão do segmento em m partes 2 < Armazenamento n = n + 1 Cálculo de = li > 3 Cálculo de erro de posição e orientação 2 < e : e max =< k : seg garra garra > > 1 Fim =< k = k + 1 3 O algoritmo numérico acima utiliza-se de conceitos de inversão de Matriz JACOBIANA pelo método de eliminação de Gauss este e outros conceitos serão tratados futuramente, agora nos concentremos no fluxo de dados e na estrutura de dados. 2
Diagrama de blocos Indica as atividades realizadas sem diferenciá-las por tipo. Visualização rápida do processo. Desenho horizontal ou vertical Utiliza frases curtas que identifiquem as atividades realizadas. Ideal para a representação de malhas de controle. Observações 1 - o uso de abreviaturas e siglas deve ser evitado. 2 - o tamanho dos retângulos para cada órgão pode variar conforme o nível de hierarquia. 3 - podem-se variar cores, com fins de destacar determinado órgão da estrutura. Exemplo Diagrama de bloco de controle de um robô em malha aberta. Diagrama de blocos de controle de um robô em malha fechada. 3
Programação de robôs industriais Métodos de programação Aprendizagem ponto a ponto Movimentação angular das juntas Movimentação cartesiana (modelo cinemático) Reorientação de ferramenta Aprendizagem direta método indicado a tarefas de em ambientes não insalubres, cuja a mecânica dos robôs é leve e seus movimentos são reversíveis. Consiste em um operador que guia o robô por seu órgão terminal enquanto sensores de posição registram os pontos e a posição das juntas. Programação off-line Software de simulação e visualização gráfica do modelo geométrico do manipulador. Aprendizagem por simulação física: Método adequado a controle que exijam o uso de controle remoto e para robô de grande porte com estrutura mecânica não reversível. Semelhante ao método de aprendizagem direta, no entanto, aplicada em um simulador que representa o robô e a área de trabalho com precisão. Programação on-line Implementação de algoritmos para modelagem cinemática á partir do modelo geométrico do robô e das características da trajetória desejada. Aprendizagem por telecomando: Adequado a todos os tipos de robôs. Seu comando é realizado através de um dispositivo de telecomando (Teach-in-Pendant ou FlexPendant) ferramenta que permite mover cada uma das juntas isoladamente ou em conjunto através da orientação da garra. PLANEJAMENTO DO PROGRAMA Nos processos de automação é necessários que o desenvolvedor do projeto esteja atento a algumas premissas fundamentais. 1 - Conhecer o processo a ser automatizado. 2 - Conhecer as variáveis de controle. 3 - Representar a seqüência lógica do processo. 4 - Garantir a segurança do usuário do sistema e dos elementos físicos pertencentes ao projeto. 5 - Definir nomes. (Rotinas, I/O, rótulos de sub-rotinas etc.) 4
MÉTODOS DE PROGRAMAÇÃO DE ROBÔS INDUSTRIAIS A programação de um robô consiste no seqüenciamento de tarefas a serem realizadas por um por ele, tal seqüenciamento pode ser separado em três métodos clássicos: a) Aprendizagem direta (walk through): Método em que robô é guiado pelo operador pelo órgão terminal. Enquanto o sistema copia o posicionamento das juntas através de sensores. b) Aprendizagem por simulação física: Método em que o operador guia um simulador físico que simula a geometria com sensoriamento que registra a movimentação do modelo permitindo a gravação e transmissão para o robô que realizará o trabalho. c) Aprendizagem por telecomando: Programação através de uma interface física (flexpendant, Teach-pendant, etc) que é utilizando na movimentação das juntas e da flange em conjunto ou separadamente.. Método de aprendizagem Teaching Característica da programação em off-line a programação de aprendizagem permite ao operador elaborar o programa e implementá-lo através da interface física (flex-pendant), Método de aprendizagem Point to point (PTP) Processo de aprendizagem que consiste na movimentação das juntas a partir de determinada posição até onde é gravada a posição, adequado à programação que não requer rigidez no controle da trajetória, mas somente o posicionamento final do robô. Programação de posicionamento de orientação/ferramenta - Controlled path (CP) Controle das juntas através da cinemática inversa, que permite um controle de movimentação previsível, adequado à programação que requer rigidez no controle da trajetória. Programação por aprendizagem direta. Programação realizada através da gravação dos pontos obtidos da movimentação manual do robô. Programação Mestre-Escravo Master-Slave Movimentação do sistema mestre que é repetido pelo sistema robótico escravo. 5
LINGUAGENS DE PROGRAMAÇÃO As linguagens de programação podem ser classificadas como: Nível de junta: requer a programação individual de cada junta do robô. Nível de manipulador: o sistema automatizado obtém o modelo geométrico inverso do robô e a posição de cada uma das juntas, a partir da posição e orientação do órgão terminal fornecidas pelo operador. Nível de objeto: basta ao operador informar a posição final do objeto que se encontra no volume de trabalho. Nível de objetivo: programação detalhada das tarefa a serem realizados pelo robô dadas pelo operador. CARACTERISTICAS LINGUISTICAS Apesar de uma raiz comum todas as linguagens de programação estão intimamente ligadas aos fabricantes de robôs e possuem características que consistem do desenvolvimento proprietário, ou seja, cada fabricante desenvolve sua própria linguagem, para seus respectivos equipamentos. Segue abaixo uma tabela com os principais fabricantes e as linguagens desenvolvidos por eles. 6
LINGUAGEM DE PROGRAMAÇÃO Introdução a linguagem RAPID Os programas em geral consistem em um conjunto de instruções lógicas que descrevem uma rotina a ser realizada, na robótica temos diferentes linguagens de programação clamadas de proprietárias, ou seja, linguagens de programação dedicadas a produtos específicos ou arquitetadas por determinadas indústrias para seus equipamentos. Estrutura da linguagem Um programa consistem em um conjunto de instruções lógico que podem ser implementadas em uma linguagem e interpretadas por um controlador. Tais instruções são geralmente uma série de argumentos que definem o que deve ser realizado e como deve ser realizado. Estes argumentos podem ser especificados como: Um valor numérico. (exemplo.: 5, ou 9) Uma referência a dados. (exemplo.: reg01) Uma expressão (exemplo.: 3 +reg01) Uma chamada de função (exemplo: Abs(reg01)) Um valor de cadeia (Exemplo: Produzir ferramenta A Rotinas Existem três tipos: Procedimentos: subprograma que realiza determinada tarefa quando é chamado. Função: de características semelhantes a um procedimento, no entanto retorna um valor ao programa principal. Rotina trap ou rotina armadilha: associada a rotinas de interrupção. Tipos de dados: Registros que podem ser criados arbitrariamente com informações como de ferramentas, posição e etc. Sendo separados em três tipos: Constantes: valor estático, que pode ser alterado manualmente no programa. Variáveis: valor mutável que pode ser atribuído durante o processo de execução do programa. Persistente: valores de inicialização do robô (setup). Princípios de programação Na linguagem Rápid TM a execução do programa é linear ou seja ocorre de maneira seqüencial, permitindo ao programador chamar sub-rotinas durante os processos. 7
Fluxo do processo O fluxo dos processos controlados pelo programa segue os seguintes princípios: a) Sub-rotinas (procedimentos) interrompem o processo para sua execução, retornando ao fluxo do programa principal assim que suas instruções são todas realizadas. b) Um bloco de execuções é repetido um determinado número de vezes ou até que uma condição lógica seja atendida. c) Um bloco de execuções (sub-rotina) é chamado quando uma determinada condição é imposta. d) Uma determinada sub-rotina (procedimento ou função) é chamada (através do rótulo) para uma execução específica. e) Uma determinada interrupção física ocorra. (questões de segurança controladas ou interrupções físicas imprevistas falta de energia, etc.) Sintaxe Instruções e funções são descritas usando tanto sintaxe simplificada quanto a sintaxe formal. Se utilizado o FlexPendant ao programar, geralmente o usuário só necessita conhecer a sintaxe simplificada, uma vez que o robô automaticamente assegura que a sintaxe correta é utilizada. Exemplo: TPWrite String [\Num] [\Bool] [\Pos] [\Orient] Instrução Argumento obrigatório Argumento compulsório Argumentos mutuamente exclusivos. - Os argumentos opcionais são colocados entre colchetes [ ]. Podendo ser omitidos. - Argumentos mutuamente exclusivos, ou seja, não pode existir em uma mesma instrução ao mesmo tempo, estão separados por uma barra vertical. - Argumentos que pode ser repetido um número arbitrário de vezes são colocados entre chaves{}. 8
Comandos básicos para movimentação de um robô ABB TM Instruções básicas Instrução Tarefa MoveJ Movimento livre: movimento de um ponto a outro sem controle rígido de trajetória ou da velocidade das juntas. Consiste na movimentação de maior velocidade. MoveL Movimento linear com controle rígido da trajetória do efetuador. MoveC Movimento circular, a rigidez do movimento será obtida através da definição dos pontos a serem utilizados na trajetória do efetuador. Test Execute diferentes instruções, dependendo do valor de uma expressão. ProcCall Ir para outra rotina. Return Voltar para a rotina original For Repetir uma seção do programa um número de vezes While Repetir uma seqüência de instruções diferentes, até que uma determinada condição seja satisfeita. Compact if Executa uma instrução se uma condição é satisfeita IF Executa uma seqüência de instruções diferentes, dependendo ou não se uma condição é satisfeita. WaitUntil Espere até que uma condição seja satisfeita WaitTime Espere um determinado limite de tempo, ou espere até que o robô pare de se movimentar. Wait Di Aguarde até que a entrada digital seja definida Set Iniciar Reset Reinicia Break Ruptura temporária da execução do programa afim de depuração do sistema. Exit Para a execução do programa não permitindo reiniciar a rotina Stop Para a execução do programa permitindo reiniciar a rotina Label Especifique um rótulo (nome de linha ou sub-rotina) Comment Comentário Goto Vá para um rótulo Na maioria dos robôs disponíveis no mercado é utilizada uma linguagem de programação direta, que consiste na instrução simplificada produzindo de imediato a ação a ser executada. Exemplo: movej, phome, v1000, z10, tool0 Movimente-se para a posição home com movimento livre (das juntas) com uma velocidade de 1000 milímetros por segundo, com uma zona de precisão de 10 milímetros utilizando-se a ferramenta terminal TOOL0 Estrutura de programação Para a programação estruturada de um robô, são necessárias o conhecimento de alguns instruções ou estruturas que são: 1 Todo programa deve ter uma rotina principal, o que consiste em dizer que há um encapsulamento da rotina ou do programa. main () : início do programa END: fim do programa 9
2 Condicionais. Para a repetição ao execução de determinada ação é necessário a inclusão de uma estrutura de seleção (condição) lógica que permita o questionamento da ação e sua reação binária (V) ou (F). IF (CODIÇÃO LÓGICA) THEN: Se (verdadeira a condição ) então ELSE (falsa a condição ) ENDIF: Finalização do bloco de instruções de seleção. 3 Estrutura de repetição. Há circunstâncias em que é necessária a repetição das rotinas vinculadas a uma determinada tarefa um determinado número de vezes. FOR (var. de controle) FROM (valor inicial) TO (valor final) [\STEP (valor do passo)] DO { BLOCO DE INSTRUÇÕES A SEREM REPETIDAS} ENDFOR PARA (var.de controle) DE (valor inicial) ATÉ (valor final) [\PASSO (valor do passo)] FAÇA { BLOCO DE INSTRUÇÕES A SEREM REPETIDAS} FINALIZA BLOCO DE INSTRUÇÕES PARA. 4 Estrutura de decisão utilizada na leitura de um número através do Teach-in-Pendant, no carregamento em um registrador, para utilização posterior, junto com o comando FOR, por exemplo, para executar um determinado número de vezes uma rotina ou sub-rotina. TPReadNum Exemplo TPReadNum reg2, quantidade: ; 5 Apresentação de uma mensagem no inicio da operação do robô. TPWrite mengagem ; 6 Instrução de espera, o robô deve aguardar um determinado tempo (em segundos) antes ou depois de executar determinada sub-rotina. WaitTime tempo em segundos 7 Comando para limpar a tela do Teach-in-Pendant. TPErase 10