Beruflich Dokumente
Kultur Dokumente
Programação do robô 2
Programação
do robô 2
Data: 24.02.2015
Versão: P2KSS8_robotprogramming_2_(R2)_V4
Programação do robô 2
© Copyright 2015
KUKA Roboter GmbH
Zugspitzstraße 140
D-86165 Augsburg
Alemanha
Este documento ou excertos do mesmo não podem ser reproduzidos ou disponibilizados a terceiros
sem autorização expressa da KUKA Roboter GmbH.
Outras funções de comando não descritas nesta documentação poderão ser postas em prática. No
entanto, não está previsto qualquer tipo de reclamação quanto a estas funções em caso de nova re-
messa ou de serviço.
Verificamos que o conteúdo do prospecto é compatível com o software e com o hardware descrito.
Porém, não são de excluir exceções, de forma que não nos responsabilizamos pela total compatibi-
lidade. Os dados contidos neste prospecto serão verificados regulamente e as correções necessá-
rias serão incluídas na próxima edição.
Sob reserva de alterações técnicas sem influenciar na função.
Tradução da documentação original
KIM-PS5-DOC
Índice
1 Programação com WorkVisual ................................................................... 7
1.1 Visão geral ................................................................................................................. 7
1.2 Gerenciar projeto com o WorkVisual ......................................................................... 7
1.2.1 Vinculação de um PC WorkVisual à unidade de comando .................................. 7
1.2.2 Visão geral da interface de operação WorkVisual ................................................ 8
1.2.3 Carregar projeto existente no WorkVisual ............................................................ 10
1.2.4 Gravar localmente o projeto WorkVisual .............................................................. 12
1.2.5 Modos WorkVisual ................................................................................................ 12
1.2.6 Estrutura de projeto WorkVisual (guia Arquivos) .................................................. 13
1.2.7 Comparar projetos com WorkVisual ..................................................................... 14
1.2.8 Transmitir o projeto à unidade de comando do robô (instalar) ............................. 18
1.2.9 Atribuir o projeto à unidade de comando do robô real .......................................... 28
1.2.10 Ativar o projeto na unidade de comando do robô ................................................. 32
1.3 Processar programas KRL com WorkVisual .............................................................. 35
1.3.1 Importar manuseio de arquivos ............................................................................ 35
1.3.2 Ativar Templates de catálogo ............................................................................... 39
1.3.3 Manuseio com o editor KRL ................................................................................. 41
1.4 Exercício: Editar um projeto ativo no WorkVisual ...................................................... 54
Até a versão de software KSS 8.2 estava disponível para isso somente a
interface KLI - KUKA Line Interface, que tinha que ser configurada em se-
parado. Essa interface também está à disposição com o KSS 8.3.
A partir da versão de software KSS 8.3 está disponível a nova interface
KSI - KUKA Service Interface, que oferece um manuseio bem mais simples.
Após um update do KSS 8.2 para KSS 8.3 também esta interface será li-
berada em unidades de comando mais "antigas".
Conectar o PC
WorkVisual à KSI
Pos. Descrição
1 Notebook com WorkVisual
2 Cabo de rede
3 Armário de comando KR C4
A Conexão KSI atrás da tampa do CSP
Pos. Descrição
1 Barra de menu
2 Barras de botões
3 Área de editores
Quando um editor está aberto, ele é exibido aqui. Podem estar
abertos vários editores simultaneamente, como neste exemplo.
Eles então estão sobrepostos e podem ser selecionados através
de guias.
4 Botão de ajuda
5 Janela Estrutura de projeto
6 Janela Catálogos
Nesta janela são exibidos todos os catálogos adicionados. Os
itens no catálogo podem ser adicionados à janela Estrutura de
projeto da guia Dispositivos ou Geometria.
7 Janela Áreas de trabalho
8 Janela Mensagens
Pos. Descrição
9 Janela Propriedades
Quando um objeto é selecionado, as suas propriedades são exibi-
das nesta janela. As propriedades podem ser alteradas. Proprie-
dades individuais em campos cinza não podem ser alteradas.
10 Ícone Análise de projeto WorkVisual
Descrição Em cada unidade de comando do robô, para a qual existe uma conexão de
rede, um projeto pode ser selecionado e transmitido ao WorkVisual. Isto tam-
bém é possível, se este projeto ainda não existir neste PC.
O projeto é salvo no diretório …\WorkVisual Projects\Downloaded Projects.
Explorer de
projeto
Equipamentos:
Na guia Equipamentos é esclarecida a interdependência dos equipa-
mentos. Aqui os equipamentos individuais podem ser atribuídos a uma
unidade de comando do robô.
Geometria:
Na guia Geometria são disponibilizados os dados da máquina para as ci-
nemáticas externas como, p.ex., eixos adicionais.
Arquivos:
A guia Arquivos contém os arquivos de programa e de configuração per-
tencentes ao projeto.
Representação em cores dos nomes de arquivos:
Arquivos gerados automaticamente (com função Gerar código): cin-
za
Arquivos inseridos manualmente no WorkVisual: azul
Arquivos, que foram transmitidos de uma unidade de comando do
robô ao WorkVisual: preto
Caminho de arquivo para a programação no KRL
Para a programação no WorkVisual são gerados ou adaptados progra-
mas *.SRC .
Estes se encontram na unidade de comando real na partição C:\KRC\Ro-
boter\Programme
No navegador este caminho é representado em separado (semelhante
como os arquivos próprios sob Microsoft Windows).
Projeto ativo
Projeto de mesmo nome na unidade de comando (somente possível com
conexão de rede)
Projeto base
Projeto inicial
Projeto local (do Notebook)
Comparação:
As diferenças entre os projetos são exibidas em uma visão geral. Para cada
diferença pode ser selecionado qual estado deve ser assumido.
Pos. Descrição
1 O nó para a unidade de comando do robô. As diversas áreas de projeto são represen-
tadas em subnós. Abrir os nós, para exibir as comparações.
Se existirem várias unidades de comando do robô, elas são enumeradas uma sob a
outra.
Em uma linha, sempre colocar o ticado no valor que deve ser assumido. (Alterna-
tiva: usar as caixas de verificação na linha de rodapé.)
Um ticado em Não disponível significa, que o elemento não é assumido ou que,
se já existente, será excluído do projeto.
Quando um nó é ticado, também são ticados automaticamente todos os elementos
subordinados.
Quando um ticado é removido em um nó, também é removido automaticamente o
ticado em todos os elementos subordinados.
Os elementos subordinados, contudo, também podem ser editados individualmen-
te.
Uma caixa preenchida significa: Dos elementos subordinados, pelo menos um
está selecionado, contudo, não todos.
2 Estado no projeto, que está aberto no WorkVisual.
3 Estado no projeto de comparação.
4 Filtro, para exibir e ocultar diversos tipos de diferenças.
5 TRUE: São inseridas informações detalhadas para a linha marcada na visão geral.
Pos. Descrição
6 Seta para trás: O foco na exibição salta para a diferença anterior.
Seta para frente: O foco na exibição salta para a diferença seguinte.
Os nós fechados são abertos automaticamente.
7 As caixas de verificação exibem o estado da linha, na qual se encontra o foco no mo-
mento. Em vez de colocar os ticados diretamente na linha, eles também podem ser co-
locados e removidos aqui.
8 Assume as alterações selecionadas no projeto aberto.
9 Fecha a janela Unir projetos.
Coluna Descrição
Estrutura de projeto Cada elemento é exibido na cor, que ele tem na coluna, na qual está
selecionado.
WorkVisual Todos os elementos são exibidos em preto.
Valor selecionado Verde: Elementos, que não existem no projeto aberto, mas no proje-
to de comparação.
Azul: Elementos, que existem no projeto aberto, mas não no projeto
de comparação.
Vermelho: Todos os demais elementos. A estes também pertencem
elementos superiores, que contêm elementos em várias cores.
2. Selecionar o projeto, com o qual o projeto WorkVisual atual deve ser com-
parado, p.ex. o projeto de mesmo nome na unidade de comando do robô
real.
ou o botão
O código é exibido na janela Estrutura de projeto na guia Arquivos.
Um código gerado automaticamente é exibido em cinza claro.
Versões
WorkVisual até
3.0
Procedimento
1. Na barra de menu, pressionar o botão Instalar …. . Abre-se a janela
Transmissão de projeto.
8. Para cada diferença, selecionar qual estado deve ser assumido. Isto não
é necessário fazer para todas as diferenças em uma operação.
Se for conveniente, pode ser mantida também a seleção padrão.
9. Pressionar Unir, para assumir as alterações.
10. Repetir os passos 8 e 9 quantas vezes for necessário. Isto possibilita edi-
tar sequencialmente as diversas áreas.
Se não existirem outras diferenças, isto é exibido na mensagem a seguir:
Não há outras diferenças.
11. Fechar a janela Comparar projetos.
15. Somente nos modos de operação T1 e T2: O KUKA smartHMI exibe a per-
gunta de segurança Deseja permitir a ativação do projeto […]?. Além disso, é
indicado se através da ativação um projeto seria sobrescrito e, caso sim,
qual.
Se nenhum projeto relevante for sobrescrito: Confirmar a pergunta com
Sim dentro de 30 minutos.
16. É exibida uma visão geral sobre as alterações, que ainda serão feitas em
comparação com o projeto ainda ativo na unidade de comando do robô.
Através da caixa de verificação Detalhes é possível exibir detalhes sobre
as alterações.
17. A visão geral exibe a pergunta de segurança Deseja prosseguir?. Respon-
der com Sim. O projeto é ativado na unidade de comando do robô. No
WorkVisual é exibida uma confirmação.
Versões
WorkVisual a
partir de 3.1
Procedimento
Iniciar trans-
Na barra de menu, pressionar o botão Instalar …. .
missão de projeto
Abre-se a janela Transmissão de projeto.
Alternativamente a transmissão de projeto também pode ser acessada
através do Caminho de menu: Extras (Ferramentas) > Instalar.
Atribuir unidade 1. A unidade de comando do projeto WorkVisual (2) já está atribuída à uni-
de comando dade de comando real (4) através da seta azul (3). (>>> "Procedimento"
Página 31)
Pos. Descrição
1 Decurso da transmissão de projeto
2 Armário de comando do projeto WorkVisual
3 Atribuição do projeto ao armário de comando real
4 Armário de comando real na rede do sistema
5 Abre a janela para a localização de armários de comando na
rede do sistema
6 Abre a janela para a comparação de projeto
7 Confirmação da atribuição de armário de comando
Ativar o projeto Depois que o projeto foi transmitido, o projeto pode ser ativado diretamen-
te através do WorkVisual. Se a ativação falhar, porque, por exemplo, os
direitos de usuário necessários na unidade de comando não estão pre-
sentes, o projeto pode ser ativado novamente através do ícone (1).
Após uma ativação de projeto bem sucedida é inserida uma barra de pro-
gresso verde. Com o botão Finalizar (1) é finalizado o Wizard.
Assumir a soma 1. Se no WorkVisual a segurança tiver sido alterada como, p.ex., a interface
de verificação de segurança ou o parâmetro SafeOperation, é exibida a seguinte men-
alterada sagem de erro na janela de mensagens: "Soma de verificação da configu-
ração de segurança está incorreta".
Versões
WorkVisual até
3.0
3. Sob Célula de destino são exibidas as células existentes. (As células po-
dem ser renomeadas através de clique no botão direito.)
Se a célula desejada não estiver disponível, pode ser criada uma célula
nova:
Clique em Nova célula. Abre-se a janela Propriedades de células.
Introduzir um nome e, se necessário, uma descrição. Salvar com OK.
Agora a célula nova é exibida sob Célula de destino.
4. Sob Célula de destino, marcar a célula desejada. A esta célula agora de-
vem ser atribuídas as unidades de comando do robô reais.
5. Sob Unidades de comando disponíveis, marcar a unidade de comando
do robô real desejada.
Dependendo da topologia de rede é possível, que a unidade de comando
do robô não seja exibida sob Unidades de comando disponíveis. Se o
endereço IP for conhecido, a unidade de comando do robô pode ser exi-
bida como a seguir:
Versões
WorkVisual a
partir de 3.1
Função da Generalidades
administração de A unidade de comando do robô tem a possibilidade de administrar vários
projeto projetos na unidade de comando.
Todas as funções primeiro estão disponíveis no grupo de usuários Peri-
tos
Um acesso ocorre via:
Na interface de operação, com a tecla WorkVisual-Symbol e, em se-
guida, o botão Abrir
Manuseio / Operação
Pos. Descrição
1 É exibido o projeto inicial.
2 Restabelece o estado de fornecimento da unidade de comando do
robô.
Está disponível a partir do grupo de usuários Peritos.
3 É exibido o projeto base.
4 Cria uma cópia do projeto base.
Está disponível a partir do grupo de usuários Peritos.
5 O projeto ativo é exibido.
6 Salva o projeto ativo como projeto base. O projeto ativo permane-
ce ativo.
Está disponível a partir do grupo de usuários Peritos.
7 Cria uma cópia pinada do projeto ativo.
Está disponível a partir do grupo de usuários Peritos.
8 Lista dos projetos. O projeto ativo não é exibido aqui.
Projeto Descrição
Projeto inicial O projeto inicial sempre existe. Ele não pode ser alte-
rado pelo usuário. Ele contém o estado da unidade de
comando do robô no fornecimento.
Projeto base O usuário pode salvar o projeto ativo como projeto
base. Esta funcionalidade normalmente é usada para
salvar um estado de projeto aprovado e funcional.
O projeto base não pode ser ativado, mas copiado. O
projeto base não pode mais ser alterado pelo usuário.
Mas ele pode ser sobrescrito através da gravação de
um novo projeto base (após uma pergunta de segu-
rança).
Quando é ativado um projeto, que não contém todos
os arquivos de configuração, as informações faltantes
são assumidas do projeto base. Este pode ser o caso,
p.ex., quando é ativado um projeto de uma versão
anterior do WorkVisual. Aos arquivos de configuração
pertencem arquivos de dados da máquina, arquivos da
configuração de segurança e inúmeros outros.
Botão Descrição
Ativar Ativa o projeto marcado.
Se o projeto marcado estiver pinado: Cria uma cópia
do projeto marcado. (Um projeto pinado não pode ser
ativado, somente uma cópia dele.) O usuário pode
decidir, se a cópia deve ser ativada imediatamente ou
se o projeto atual deve permanecer ativo.
Está disponível a partir do grupo de usuários Peritos.
Colocar pinos Projetos pinados não podem ser alterados, ativados ou
excluídos. Contudo, eles podem ser copiados ou "des-
pinados". Portanto, pode-se pinar um projeto para,
p.ex., impedir que ele seja excluído acidentalmente.
Somente está disponível, se estiver marcado um pro-
jeto não-pinado. Está disponível a partir do grupo de
usuários Peritos.
Despinar "Despina" o projeto.
Somente está disponível, se estiver marcado um pro-
jeto pinado. Está disponível a partir do grupo de usuá-
rios Peritos.
Copiar Copia o projeto marcado.
Está disponível a partir do grupo de usuários Peritos.
Excluir Exclui o projeto marcado.
Somente está disponível, se estiver marcado um pro-
jeto não-pinado não ativo. Está disponível a partir do
grupo de usuários Peritos.
Botão Descrição
Editar Abre uma janela, na qual podem ser alterados o nome
e/ou a descrição do projeto marcado.
Somente está disponível, se estiver marcado um pro-
jeto não-pinado. Está disponível a partir do grupo de
usuários Peritos.
Atualizar Atualiza a lista de projetos. Desta forma são exibidos,
p.ex., projetos, que foram transmitidos à unidade de
comando do robô desde a abertura da exibição.
Procedimento
Restrição: Se a ativação causar alterações na área de parâmetros
de comunicação da configuração de segurança, deve estar selecio-
nado o grupo de usuários técnico de manutenção de segurança ou
superior.
Se o modo de operação AUT ou AUT EXT estiver selecionado: O projeto so-
mente pode ser ativado, se através disto se alterarem apenas programas
KRL. Se o projeto contiver ajustes, que causariam outras alterações, ele não
pode ser ativado.
Manuseio do arquivo
Ativar catálogo
Templates
3. Selecionar arquivo e ou
com duplo-clique
Adicionar o Procedimento
arquivo com 1. Trocar arquivo da árvore de projeto
templates KRL 2. Abrir diretórios até ao diretório R1
5. Seleção de template
Descrição Para poder executar determinadas funções no WorkVisual como, p.ex., con-
figuração ou programação, é necessário ativar os respectivos catálogos.
Exemplo
A estrutura de projeto deve ser expandida.
Clicar com o botão direito no ícone da unidade de comando ativa e clicar
em "Adicionar".
Procedimento
Ativar catálogo
Templates
Conhecer a Descrição
interface de O editor KRL permite o processamento confortável de programas KUKA.
operação Editor
Não é possível testar ou deixar executar programas.
KRL
Caminho de menu: Editores > Editor KRL
Pos. Descrição
1 Área do programa
Aqui se insere ou edita o código. O editor KRL oferece inúmeras
funcionalidades que dão suporte ao programador.
2 Lista dos subprogramas neste arquivo
Para se chegar a um subprograma, selecionar isto na lista: O cur-
so salta para a fileira DEF deste subprograma.
Se o arquivo não incluir subprogramas, a lista estará vazia.
3 Lista de declaração de variáveis
Esta lista sempre se refere a um subprograma que foi selecionado
atualmente na lista de subprogramas. Para se chegar a uma de-
claração, selecionar a variável na lista: O cursor salta para a fileira
com a declaração destas variáveis.
Se não houver nenhuma declaração de variável disponível, a lista
estará vazia.
4 Barra de análise
As marcações mostram erros ou discrepâncias no código.
Um mouseover sobre a marcação mostra uma sugestão de
ferramenta com a descrição do erro.
Através de um clique na marcação, o cursor salta até a posi-
ção correspondente no programa. Para o caso de alguns er-
ros/discrepâncias é oferecida uma correção automática.
Botão Nome/Descrição
Agrupa as variáveis conforme subfunções locais
O botão está pressionado: A exibição é classificada por tipos
de arquivo. (Dentro desta classificação pode ser classificado
adicionalmente por colunas.)
O botão não está pressionado: A exibição não está classifi-
cada por tipos de arquivo.
Localizar e Descrição
substituir em No WorkVisual há uma opção de pesquisa com a qual se pode pesquisar
arquivos o texto de todos os arquivos do projeto todo.
Pode-se selecionar quais áreas podem ser pesquisadas na janela de pes-
quisa.
Ainda assim, pode-se pesquisar um único arquivo ou uma área marcada
em um arquivo.
Procedimento
1. Abrir esta caso se queira pesquisar um arquivo individual.
2. Marcar estes no caso de uma pesquisa de uma área em um arquivo.
3. Abrir a janela de pesquisa: CTRL+F
Renomear Descrição
variáveis Um nome de variável pode ser alterado com uma única ação em todas as
posições onde ela ocorre.
Isto também é possível quando a variável está declarada em um arquivo
DAT e é usada em vários arquivos SRC.
Pré-requisito
Os arquivos nos quais os nomes das variáveis aparecem não contêm er-
ros de programação.
A mudança não acontecerá automaticamente em arquivos com erros de
programação.
Procedimento
1. Em uma posição qualquer, marcar a variável desejada.
2. Clicar com o botão direito e no menu de contexto selecionar Renomear.
3. Abre-se uma janela. Mudar o nome e confirmar com OK.
Autocompletar Descrição
Existe uma funcionalidade de autocompletar disponível no editor KRL.
Ao se incluir o código uma lista é automaticamente exibida, que inclui os
seguintes itens:
Palavras-chave KRL
Nomes conhecidos de variáveis
Nomes conhecidos de funções
Tipos de dados conhecidos específicos por usuário (STRUC or
ENUM)
Snippets (>>> "Snippets – Introdução rápida para instruções KRL"
Página 48)
Procedimento
Introduzir as primeiras letras do comando desejado, variável etc. na linha
de programa correspondente.
Abre-se a autocompletação:
No topo da lista são exibidos itens que correspondem aos símbolos já in-
cluídos.
Estes itens são novamente priorizados de acordo com a sua frequência
de utilização, isto é, a seleção se adapta ao comportamento do utilizador.
3. Saltar para a próxima posição variável com a tecla TAB. Introduzir o valor
desejado.
4. Repetir o passo 3 para todas as posições variáveis.
5. Para encerrar a edição, pressionar a tecla Enter.
Aternativas
1. A lista de fragmentos também pode ser acessadas de outra forma: Clicar
o botão direito e no menu de contexto selecionar a entrada Inserir frag-
mento.
2. Além disso, pode-se inserir o fragmento conforme segue: Digitar a abre-
viatura e pressionar a tecla TAB.
Correção Descrição
Quickfix Ondas sob o código e marcas na barra de análise indicam erros ou incon-
sistências no código.
Procedimento
Para o caso de alguns erros/discrepâncias é oferecida uma correção au-
tomática, o "Quickfix".
Uma luzinha Quickfix aparece.
4. Se necessário: Clicar duas vezes sobre uma linha na lista. A posição cor-
respondente será marcada no programa.
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Conectar um PC com WorkVisual 3.x instalado com a interface KSI da uni-
dade de comando.
Carregar um projeto ativo no WorkVisual.
Criar um novo programa KRL no WorkVisual.
Transmitir e ativar o projeto atualizado na unidade de comando.
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
É necessário um PC com WorkVisual 3.x instalado.
Conhecimentos teóricos sobre a gestão de projeto com WorkVisual
Definição de Conecte o PC com o WorkVisual 3.x à KSI - KUKA Service Interface do ar-
funções mário de comando.
Carregue o projeto ativo da unidade de comando no WorkVisual.
Crie um novo programa com o nome my1prog.
Crie um comentário entre os dois conjuntos de movimentos PTP HOME.
Gere a estrutura de dados específica de projeto com o botão Gerar có-
digo .
2 Programação estruturada
2
INI
END
INI
END
Descomentário:
Se uma parte do código for excluído provisoriamente mas posteriormente
reinserido, ele será descomentado. A parte do código, depois de embalado no
comentário, no ponto de vista não é mais código, ou seja, já não existe mais.
DEF Palletize()
INI
PICK_CUBE()
;CUBE_TO_TABLE()
CUBE_TO_MAGAZINE()
END
Que exemplos há Na unidade de comando KUKA já são usadas, como padrão, pastas pelo sis-
para o uso de tema, por exemplo, na exibição de formulários Inline. As pastas simplificam a
pastas? visibilidade dos valores introduzidos no formulário Inline, ocultando partes do
programa não relevantes para o operador.
Além disso, o usuário (a partir do grupo de usuários peritos) tem a possibili-
dade de criar pastas próprias. Essas pastas podem ser usadas pelo progra-
mador para, por um lado, comunicar ao operador algo que ocorre em um
END
DEF Main()
...
INI ; PASTA KUKA fechada
END
DEF Main()
...
INI ; PASTA KUKA fechada
...
END
LOOP
GET_PEN()
PAINT_PATH()
PEN_BACK()
GET_PLATE()
GLUE_PLATE()
PLATE_BACK()
ENDLOOP
END
ENDLOOP
Fig. 2-1
Fig. 2-2
Ramificação
Fig. 2-3
Fig. 2-4
Acesso ao subprograma
Fig. 2-5
Instrução de entrada/saída
Fig. 2-6
Exemplo PAP
Fig. 2-7
Como é Partindo da ideia do usuário o problema é detalhado passo a passo, até que
elaborado um os componentes elaborados sejam suficientemente visualizáveis, para poder
PAP realizá-los no KRL.
As minutas geradas nos passos subsequentes de desenvolvimento se destin-
guem pela crescente profundidade de detalhes.
1. Desmembramento grosseiro de todo o processo em aprox. 1 - 2 páginas
2. Divisão da tarefa total em diversas tarefas parciais
3. Classificação geral das tarefas parciais
4. Detalhamento da classificação das tarefas parciais
5. Transposição em código KRL
Abrir/Fechar PASTA
As FOLDs estão sempre fechadas para o usuário e podem ser abertas
como perito.
O perito também pode programar suas PASTAS próprias.
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Medição da ferramenta com o método XYZ 4-Pontos e o método World 5D
Medição da ferramenta com introdução numérica de valor
Medição da base conforme o método 3 pontos
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos teóricos sobre a medição de uma ferramenta
Conhecimentos teóricos sobre a medição de uma base
Função: Intro- Introduza para a sua garra de treinamento com introdução numérica:
dução de dados
de ferramenta de
garra
Garra de treinamento KR 16
Massa:
M = 4,3 kg
Centro de gravidade da massa:
X = 41 mm Y = 35 mm Z = 62 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,03 kgm2 JY = 0,04 kgm2 JZ = 0,12 kgm2
Massa:
M = 4,4 kg
Centro de gravidade da massa:
X = 7 mm Y = -24 mm Z = 80 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,02 kgm2 JY = 0,05 kgm2 JZ = 0,11 kgm2
Massa:
M = 2 kg
Centro de gravidade da massa:
X = 23 mm Y = 0 mm Z = 61 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,002 kgm2 JY = 0,004 kgm2 JZ = 0,003 kgm2
Massa:
M = 4,9 kg
Centro de gravidade da massa:
X = 53 mm Y = 49 mm Z = 65 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,02 kgm2 JY = 0,03 kgm2 JZ = 0,15 kgm2
Massa:
M = 5 kg
Centro de gravidade da massa:
X = 23 mm Y = -38 mm Z = 84 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,02 kgm2 JY = 0,07 kgm2 JZ = 0,14 kgm2
Massa:
M = 2,14 kg
Centro de gravidade da massa:
X = 30 mm Y = 0 mm Z = 64 mm
Orientação:
A = 0° B = 0° C = 0°
Momentos de inércia:
JX = 0,002 kgm2 JY = 0,004 kgm2 JZ = 0,003 kgm2
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Criação de módulos no plano de perícia
Vínculo de determinados módulos em um programa principal
Uso de um loop sem fim
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos teóricos sobre o Navigator no plano de peritos
Conhecimentos teóricos sobre o uso de subprogramas globais
Conhecimentos teóricos sobre um loop sem-fim
4 Variáveis e acordos
4
Dados gerais
sobre variáveis
Campos /Array
Voltage[10] = 12.75
Voltage[11] = 15.59
a palavra chave DECL pode ser suprimida nos quatro tipos de dados sim-
ples.
As atribuições de espera ocorrem no avanço.
a declaração de variável pode ocorrer em diferentes pontos. Isto se reflete
na vida útil e na validade das respectivas variáveis.
Dados de sistema Os dados de sistema KUKA ocorrem em todos os tipos de dados, por
KUKA exemplo, como
tipo de dados de contagem, como p.ex. modo de operação
...
ENDDAT
Cálculo: 1*32+1*16+1*8+0*4+1*2+0*1 = 58
Binário 25 24 23 22 21 20
Dez 32 16 8 4 2 1
Inicialização hexadecimal
value = 'H3A'
Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
Dez 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Declaração e Descrição
inicialização de Constantes são criadas com a palavra chave CONST.
uma constante
Constantes só podem ser criadas em listas de dados.
Criação de constantes
1. Abrir DAT-File no editor.
2. Realizar declaração e inicialização.
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL CONST INT max_size = 99
DECL CONST REAL PI = 3.1415
...
ENDDAT
Listagem de Os valores de variáveis são alterados de forma distinta de acordo com a de-
possibilidades finição de funções nas rotinas de programa (SRC-File) conforme a tarefa. A
para a alteração seguir são abordados os métodos mais comuns. A manipulação com opera-
ções bit e funções padrão é possível, mas não será detalhada.
de valores de
variáveis com Manipulação de dados através de
KRL Tipos de cálculo básico
(+) Adição
(-) Subtração
(*) Multiplicação
(/) Divisão
Operações comparativas
(==) idêntico / igualdade
(<>) desigual
(>) maior
(<) menor
(>=) maior ou igual
(<=) menor ou igual
Operações lógicas
(NOT) Inversão
(AND) (E) lógico
(OR) OU lógico
(EXOR)OU exclusivo
Operações Bit
(B_NOT) Inversão de bit
(B_AND) vinculação E de bits
(B_OR) vinculação OU de bits
(B_EXOR) vinculação OU exclusiva de bits
Funções padrão
Função absoluta
Função de raiz
Função seno e coseno
Função tangente
Função arco seno
Função arco tangente
Diversas funções para a manipulação de strings
; Declaração
DECL INT D,E
DECL REAL U,V
; Inicialização
D = 2
E = 5
U = 0.5
V = 10.6
; Seção de instrução (manipulação de dados)
D = D*E ; D = 2 * 5 = 10
E = E+V ; E= 5 + 10.6 = 15.6 -> arredondar para cima E=16
U = U*V ; U= 0.5 * 10.6 = 5.3
V = E+V ; V= 16 + 10.6 = 26.6
Operações comparativas
Com operações comparativas podem ser formadas expressões lógicas O re-
sultado de uma comparação é sempre o tipo de dados BOOL.
Operador/
Descrição Tipos de dados admissíveis
KRL
== idêntico/igual- INT, REAL, CHAR, BOOL
dade
<> desigual INT, REAL, CHAR, BOOL
> maior INT, REAL, CHAR
< menor INT, REAL, CHAR
>= maior igual INT, REAL, CHAR
<= menor igual INT, REAL, CHAR
; Declaração
DECL BOOL G,H
; Inicialização/Seção de instrução
G = 10>10.1 ; G=FALSE
H = 10/3 == 3 ; H=TRUE
G = G<>H ; G=TRUE
Operações lógicas
Com operações lógicas podem ser formadas expressões lógicas. O resultado
dessa operação é sempre o tipo de dados BOOL.
A EXOR
Operações NOT A A AND B A OR B
B
A=FALSE B=FALSE TRUE FALSE FALSE FALSE
A=FALSE B=TRUE TRUE FALSE TRUE TRUE
A=TRUE B=FALSE FALSE FALSE TRUE TRUE
A=TRUE B=TRUE FALSE TRUE TRUE FALSE
; Declaração
DECL BOOL K,L,M
; Inicialização/Seção de instrução
K = TRUE
L = NOT K ; L=FALSE
M = (K AND L) OR (K EXOR L) ; M=TRUE
L = NOT (NOT K) ; L=TRUE
Prioridade Operador
1 NOT (B_NOT)
2 Multiplicação (*); Divisão (/)
3 Adição (+), Subtração (-)
4 AND (B_AND)
5 EXOR (B_EXOR)
Prioridade Operador
6 OR (B_OR)
7 qualquer comparação (==; <>; ...)
; Declaração
DECL BOOL X, Y
DECL INT Z
; Inicialização/Seção de instrução
X = TRUE
Z = 4
Y = (4*Z+16 <> 32) AND X ; Y=FALSE
Comando PARAR PARAR é utilizado principalmente durante a fase de programação para fins de
teste. Por exemplo, para levar à exibição o conteúdo de uma variável de tem-
po de execução.
O comando PARAR para o programa. Contudo, a última instrução de mo-
vimento percorrida ainda é executada por completo.
O programa somente pode ser continuado com a tecla Iniciar. Depois é
executada a próxima instrução após PARAR.
Exemplo:
DEF program()
DECL BOOL a,b
INI
...
SPTP XP1
a=$IN[1]
b=$IN[2]
HALT
IF ((a == TRUE) AND (b == FALSE)) THEN
..
ENDIF
...
Exibir e alterar o 1. No menu principal, selecionar Exibir > Variável > Individual.
valor de uma Abre-se a janela Display de variáveis - individual.
variável 2. No campo Nome introduzir o nome da variável.
3. Quando um programa está selecionado, no campo Módulo está inserido
automaticamente o programa.
Caso deva ser exibida uma variável de outro programa, introduzir o pro-
grama como a seguir:
/R1/Nome de programa
Não especificar nenhuma pasta entre /R1/ e o nome de programa. Não
especificar nenhuma extensão de arquivo no nome de programa.
4. Pressionar a tecla Enter.
No campo Valor atual é exibido o valor atual das variáveis. Se nada for
exibido, ainda não foi atribuído nenhum valor às variáveis.
5. No campo Novo valor digitar o valor desejado.
6. Pressionar a tecla Enter.
No campo Valor atual é exibido o novo valor.
Pos. Descrição
1 Nome das variáveis, que devem ser alteradas
2 Novo valor, que deve ser atribuído às variáveis
3 Programa, no qual são procuradas variáveis
Em variáveis de sistema o campo Módulo é irrelevante.
4 Este campo tem dois estados:
Descrição de Campos ou também Arrays oferecem espaço de memória para várias variá-
campos com KRL veis do mesmo tipo de dados, que são diferenciados através de index
O espaço de memória para campos é finito, ou seja, o tamanho de campo
máximo depende da necessidade de memória do tipo de dados
na declaração devem ser conhecidos o tamanho de campo e o tipo de da-
dos
O índice de partida no KRL sempre começa com 1
Uma inicialização pode ser realizada sempre individualmente
Uma inicialização no SRC-File também pode ser realizada através de loop
Dimensões de campo
Campo unidimensional
dimension[4]= TRUE
Campo bidimensional
dimension[2,1]= 3.25
Campo tridimensional
dimension[3,4,1]= 21
Contextos no uso A vida útil e a validade de variáveis de campos é igual, como no uso de vari-
de campos áveis de um tipo de dados simples
Declaração de campo
Criar no SRC_File
DEF MY_PROG ( )
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
INI
...
END
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE
FOR x = 1 TO 10
error[x]=FALSE
ENDFOR
Gera dez mensagens de erro "Passo de valor inicial não está na se-
ção inicial"
DEF MY_PROG ( )
INI
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
...
error[10]=FALSE
ou
DEF MY_PROG ( )
INI
FOR x = 1 TO 10
error[x]=FALSE
ENDFOR
Campo bidimensional
DECL INT parts_table[10,5]
DECL INT x, y
FOR x = 1 TO 10
FOR y = 1 TO 5
parts_table[x, y]= 6
ENDFOR
ENDFOR
Campo tridimensional
DECL INT parts_palette[5,4,3]
DECL INT x, y, z
FOR x = 1 TO 5
FOR y = 1 TO 4
FOR z = 1 TO 3
parts_palette[x, y, z]= 12
ENDFOR
ENDFOR
ENDFOR
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Declarar e inicializar campos com tipos de dados simples
Editar elementos individuais de campo
Trabalhar com a exibição de variáveis (configuração/exibição)
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos sobre tipos de dados simples
Conhecimentos teóricos sobre campos
Conhecimentos teóricos sobre loop FOR
Conhecimentos teóricos sobre a exibição da variável
Fig. 4-3
.............................................................
2. Qual é a diferença da declaração de um campo no SRC-File e no DAT-File?
.............................................................
.............................................................
3. Qual mensagem de erro é exibida ao ultrapassar o index de campo?
.............................................................
.............................................................
4. Declare um campo tridimensional com o nome preço do armário. O preço
do armário é calculado com os componentes comprimento, largura e profun-
didade. A gama abrange 5 comprimentos diferentes, 3 larguras diferentes e
duas profundidades diferentes?
.............................................................
.............................................................
5. Como o campo Preço do armário (Schrankpreis) acima é exibido de forma
completa?
.............................................................
.............................................................
Variáveis com
diversas infor-
mações indivi-
duais
Fig. 4-4
Uma estrutura primeiro precisa ser definida, depois pode ser reutilizada.
Porém:
my_car = {price 14999.95, motor 50, air_condition TRUE}
my_car = {price 12000.0} ; Os valores para motor e ar condicionado
são excluídos
my_car.price = value_car
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Geração de estruturas próprias (declaração, inicialização)
Trabalhar com o separador de pontos
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos teóricos sobre tipos de dados e estruturas simples
............................................................
5. Para que precisamos do separador de ponto?
............................................................
............................................................
Texto inequívoco
como valor de
variável
Fig. 4-5
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Gerar variáveis ENUM próprias (declaração)
Trabalhar com variáveis ENUM
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos teóricos sobre tipos de dados e estruturas simples
Conhecimentos teóricos sobre variáveis ENUM simples
5 Subprogramas e funções
s
Nesta unidade de aprendizagem são repassados os seguintes conteú-
dos:
Subprogramas locais
Subprogramas globais
Transferência de parâmetros a subprogramas
Programação de funções
DEFDAT MY_PROG
...
DECL E6POS XP1={X 100, Y 200, Z 300 ... E6 0.0}
...
ENDDAT
DEF MY_PROG( )
...
END
DEF PICK_PART( )
END
DEF GLOBAL2( )
...
END
DEF GLOBAL2( )
...
GLOBAL3( )
...
END
DEF GLOBAL3( )
...
END
DEF GLOBAL1( )
...
SPTP P1 Vel=100% PDAT1
END
DEFDAT GLOBAL1( )
DECL E6POS XP1={X 100, Z 200, Z 300 ... E6 0.0}
ENDDAT
DEFDAT GLOBAL2( )
DECL E6POS XP1={X 800, Z 775, Z 999 ... E6 0.0}
ENDDAT
DEF GLOBAL2( )
...
IF $IN[12]==FALSE THEN
RETURN ; Retorno ao GLOBAL1( )
ENDIF
...
END
...
END
Descrição da Sintaxe
transferência de DEF MY_PROG( )
parâmetros ...
CALC (K, L)
...
END
...
END
DEF CALC_1(num1:IN)
; O valor "r" é transferido somente para leitura para num1
DECL REAL num1
...
END
DEF CALC_2(num2:OUT)
; O valor "s" é transferido para num2, alterado e retornado
DECL REAL num2
...
END
Procedimento na Considerações
transferência de 1. Definir quais parâmetros são necessários no subprograma
parâmetros 2. Determinar o tipo de transferência de parâmetros (parâmetros IN ou OUT)
3. Definir tipos de dados de saída e de dados de destino (no ideal o mesmo
tipo de dados)
4. Determinar a sequência da transferência de parâmetros
Procedimento
1. Carregar um programa principal no editor
2. No programa principal, declarar, inicializar e possivelmente manipular va-
riáveis
3. Criar acesso de subprograma com transferência de variável
4. Fechar e salvar o programa principal
5. Carregar um subprograma no editor
6. Complementar linha DEFcom variáveis e IN/OUT
7. No subprograma, declarar, inicializar e possivelmente manipular variáveis
8. Fechar e salvar o subprograma
Exemplo completo:
DEF MY_PROG( )
DECL REAL w
DECL INT a, b
w = 1.5
a = 3
b = 5
CALC(w, b, a)
; valores atuais
; w = 3.8
; a = 13
; b = 5
END
_______________________________________
DEF CALC(ww:OUT, bb:IN, aa:OUT)
; w <-> ww, b -> bb, a <-> aa
DECL REAL ww
DECL INT aa, bb
ww = ww + 2.3 ; ww = 1.5 + 2.3 =3.8 ->w
bb = bb + 5 ; bb = 5 + 5 = 10
aa = bb + aa ; aa = 10 + 3= 13 -> a
END
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Técnica de subprogramas com transferência de parâmetros
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos sobre técnica de subprograma
Conhecimentos teóricos sobre a transferência de parâmetros
Conhecimentos teóricos sobre funções
; Calculation
X1 = X1 + 211 ; X1 = …………………
X2 = X2 - 312 ; X2 = …………………
X3 = X2 + X3 ; X3 = …………………
X4 = X4 * X5 ; X4 = …………………
X5 = X5 * 8 ; X5 = …………………
X6 = X6 – 40 ; X6 = …………………
END
value = 2.0
result = CALC(value)
; value = 2.0
; result = 1000.0
END
Procedimento na 1. Definir qual valor a função deve fornecer (tipo de dados de retorno)
programação de 2. Definir quais parâmetros são necessários na função (tipos de dados de
funções transferência)
3. Determinar tipo de transferência de parâmetros (parâmetros IN ou OUT)
4. Determinar se é necessária uma função local ou global
5. Carregar um programa principal no editor
6. No programa principal, declarar, inicializar e possivelmente manipular va-
riáveis
7. Criar acesso de função
8. Fechar e salvar o programa principal
9. Criar função (global ou local)
10. Carregar uma função no editor
11. Complementar linha DEFFCTcom tipo de dados, variáveis e IN/OUT
12. Na função, declarar, inicializar e manipular variáveis
13. Criar linhaRETURN(return_value)
Ícone Tipo
Mensagem de confirmação
Mensagem de estado
Mensagem de informação
Mensagem de espera
Estrutura para
emitente, número
da mensagem,
texto de
mensagem
do exemplo
DECL KrlMsg_T mymessage
mymessage = {Modul[ ] "College", Nr 1906, Msg_txt[ ] "My first
Message"}
result = StrClear(My_Message.Msg_txt[])
...
Alternativa:
...
INT X
INI
FOR x=1 TO 80...
My_Message.Msg_txt[x] = " "
ENDFOR
...
Variáveis no texto Em um texto de mensagem deve ser exibido o valor de uma variável. Por
de mensagem exemplo, deve ser exibida a quantidade atual. Para isto são necessários dum-
mies no texto de mensagem. A quantidade máxima de dummies é 3. A exibi-
ção é %1, %2 e %3.
Por este motivo são necessários 3 conjuntos de parâmetros. Cada conjunto
de parâmetros consiste na estrutura KUKA KrlMsgPar_T:
Enum KrlMsgParType_T Value, Key, Empty
STRUC KrlMsgPar_T KrlMsgParType_T Par_Type, CHAR Par_txt[26], INT
Par_Int, REAL Par_Real, BOOL Par_Bool
Estrutura para Na emissão de uma mensagem são transmitidas mais 4 opções de mensa-
opções gerais de gens. Com estas opções podem ser influenciados o avanço, a exclusão de
mensagens mensagens e o registro no banco de dados log.
estrutura KUKA predefinida: KrlMsgOpt_T
STRUC KrlMsgOpt_T BOOL VL_Stop, BOOL Clear_P_Reset, BOOL Clear_SAW,
BOOL Log_To_DB
TRUE faz com que esta mensagem seja logada no banco de dados
log.
Padrão: FALSE
Setar ou emitir Com esta função é emitida uma mensagem no programa KRL. Isto significa,
uma mensagem que a respectiva mensagem é inserida em um buffer de mensagens interno.
Exceção são mensagens de informação, que não são administradas no bu-
ffer de mensagens.
Funções build-in para a emissão de uma mensagem
DEFFCT INT Set_KrlMsg(Type:IN, MyMessage:OUT, Parameter[ ]:OUT,
Option:OUT)
DECL EKrlMsgType Type
DECL KrlMsg_T MyMessage
DECL KrlMsgPar_T Parameter[ ]
DECL KrlMsgOpt_T Option
handle == -1: A mensagem não pôde ser emitida (p. ex. porque o
buffer de mensagens está lotado).
handle > 0: A mensagem foi emitida com sucesso e é administrada
com o respectivo número de identificação no buffer de mensagens.
Verificar uma Com esta função pode ser verificado, se uma determinada mensagem com
mensagem um determinado handle ainda existe. Portanto, é verificado se esta mensa-
gem ainda se encontra no buffer de mensagens interno.
Funções build-in para a verificação de uma mensagem
Exclusão de uma Com esta função pode ser excluída uma mensagem. Isto significa que a res-
mensagem pectiva mensagem é excluída no buffer de mensagens interno.
Funções build-in para a verificação de uma mensagem
DEFFCT BOOL Clear_KrlMsg(nHandle:IN)
DECL INT nHandle
Descrição de uma
mensagem de
informação
definida pelo
usuário
Função de uma Mensagens de informação são apropriadas, para exibir informações ge-
mensagem de rais.
informação Uma mensagem de informação somente é criada. Eventualmente verifi-
definida pelo ca-se, se a mensagem chegou com sucesso.
usuário Uma vez que as mensagens de informação não são administradas, po-
dem ser criadas aprox. 3 milhões de mensagens.
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Programar mensagens de informação próprias
Emitir parâmetros quaisquer em mensagens
Pré-requisitos Os seguintes requisitos são necessários para realizar o exercício com êxito.
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de mensagens
Descrição de uma
mensagem de
estado definida
pelo usuário
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Programar mensagens de estado próprias
Emitir parâmetros quaisquer em mensagens
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de mensagens
Descrição de uma
mensagem de
confirmação
definida pelo
usuário
;Loop para parar até que esta mensagem tenha sido excluída
REPEAT
present=Exists_KrlMsg(handle)
UNTIL NOT(present)
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Programar mensagens de confirmação próprias
Emitir parâmetros quaisquer em mensagens
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de mensagens
Descrição de uma
mensagem de
espera definida
pelo usuário
Função de uma Mensagens de espera são apropriadas para aguardar um estado e exibir
mensagem de nisto o símbolo de espera.
espera definida O programa, por exemplo, é retido até que seja obtido o estado pelo qual
pelo usuário está se esperando.
São administradas, no máximo, 100 mensagens no buffer de mensagens.
A mensagem de espera é excluída novamente através da função
Clear_KrlMsg( ).
As mensagens de espera também podem ser excluídas da mesma forma
através dos ajustes nas opções de mensagens no reset do programa ou
ao fechar o programa ou em uma seleção de passo.
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Programar mensagens de espera próprias
Emitir parâmetros quaisquer em mensagens
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de mensagens
Estrutura para
ocupação de
botões
Um diálogo sempre pode ser emitido somente depois que não houver
mais nenhum outro diálogo.
A função simplesmente emite o diálogo. Ela não aguarda até que ele
tenha sido respondido.
A função não aguarda até que o diálogo esteja respondido, mas sim-
plesmente faz uma busca no buffer pelo diálogo com este handle.
Portanto, a consulta no programa KRL deve ocorrer ciclicamente, até
que o diálogo tenha sido respondido ou excluído de outra forma.
Descrição de um
diálogo definido
por usuário
Um diálogo sempre pode ser emitido somente depois que não houver
mais nenhum outro diálogo.
Podem ser definidas até 7 softkeys.
Função de um Diálogos são apropriados para exibir perguntas, que o usuário precisar
diálogo definido responder.
pelo usuário Com a função Set_KrlDlg( ) é emitido um diálogo.
A função simplesmente emite o diálogo. Ela não aguarda até que ele te-
nha sido respondido.
Com a função Exists_KrlDlg( ) pode ser verificado, se um determi-
nado diálogo ainda existe.
Também esta função não aguarda, até que o diálogo esteja respondido,
mas simplesmente faz uma busca no buffer pelo diálogo com este handle.
Portanto, a consulta no programa KRL deve ocorrer ciclicamente, até que
o diálogo tenha sido respondido ou excluído de outra forma.
A continuidade da execução do programa pode ser tornada dependente
de qual softkey o usuário seleciona.
Avaliação dos botões
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Programar consultas próprias de diálogo
Emitir parâmetros quaisquer em mensagens
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de mensagens
Definição de um
movimento
Descrição SPTP pode ser programado como segmento em um Spline Block PTP ou
como movimento individual.
É possível copiar um movimento individual SPTP em um Spline Block PTP,
mas somente se ele não contiver nenhuma atribuição às variáveis de sistema
que são proibidas ali.
Sintaxe SPTP Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , …>>
<C_SPL>
Exemplos O robô acessa uma posição do arquivo DAT; a posição foi programada
anteriormente com o formulário Inline e aproxima-se desse ponto P3
SPTP XP3 C_SPL
Sintaxe SLIN:
SLIN Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2, …, >>
<C_SPL>
SCIRC:
SCIRC Ponto auxiliar, Ponto de destino <, CA Ângulo circular> <WITH SysVar1 =
Valor1 <,SysVar2 = Valor2 , … >> <C_SPL>
SysVar
Valor Atribuição de valor à variável do sistema
Em segmentos: A atribuição vale apenas para esse seg-
mento.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
Exemplos SLIN:
O robô se movimenta em uma posição calculada aproximando esse ponto
ABLAGE[4]
SLIN ABLAGE[4] C_SPL
SCIRC
O robô acessa as posições previamente programadas do arquivo DAT e
percorre um ângulo inscrito de 190°.
SCIRC XP3, XP4, CA 190
Ferramenta externa
$IPO_MODE = #TCP
Velocidade:
Em movimento PTP
$VEL_AXIS[x] ; x=1...8 para cada eixo
Aceleração
Em movimento PTP
$ACC_AXIS[x] ; x=1...8 para cada eixo
Solavanco
Em movimento SPTP
$GEAR_JERK[1...12] = 0 ... 100 Solavanco de redutor dos eixos A1 a E6
em porcentagem (1...100)
SPTP XP10 WITH GEAR_JERK[1]=22, GEAR_JERK[2]=66
Distância de aproximação
Em SPINE passos individuais SLIN, SCIRC e em SPTP: C_SPL
A distância do ponto de destino deverá ser inferior ao valor
$APO.CDIS
$APO.CDIS = 250.0 ; [mm] Distância
SPTP XP3 C_SPL
SLIN XP4 C_SPL
$ORI_TYPE = #CONSTANT
$ORI_TYPE = #VAR
$ORI_TYPE = #JOINT
$CIRC_TYPE = #PATH
$CIRC_TYPE = #BASE
Elemento Descrição
Compor- Tipo de dados: ENUM / menu suspenso
tamento PA
#INTERPOLATE: No ponto auxiliar o TCP assume a
Comporta- orientação programada.
mento de
#IGNORE: A unidade de comando do robô ignora a
orientação
orientação programada do ponto de ajuda. A orientação
no ponto
de início do TCP é transferida no trajeto mais curto para
auxiliar
a orientação de destino.
#CONSIDER (padrão):
Basicamente existem 2 caminhos como a orientação
de início com uma rotação pode ser transferida para a
orientação de destino: Um mais curto e um mais longo.
Com #CONSIDER, a unidade de comando do robô se-
leciona o caminho que se aproxima da orientação pro-
gramada do ponto auxiliar. Pode ser que o TCP
assuma a orientação programada do ponto auxiliar em
algum lugar no caminho. Mas este não precisa ser o ca-
so.
Compor- Tipo de dados: ENUM / menu suspenso
tamento PD
#INTERPOLATE: No ponto de destino real, é assumida
Comporta- a orientação programada do ponto de destino.
mento de (Única possibilidade para SCIRC sem indicação de ân-
orientação
gulo circular. Se #EXTRAPOLATE for ativado, apesar
no ponto de
disso #INTERPOLATE é executado.)
destino
#EXTRAPOLATE: A orientação é adaptada ao ângulo
circular:
Se o ângulo circular prolongar o movimento, é assumi-
da a orientação programada no ponto de destino pro-
gramado. Até o ponto de destino real, a orientação é
correspondentemente continuada.
Se o ângulo circular encurtar o movimento, a orientação
programada não é atingida.
(Padrão para SCIRC com indicação de ângulo circular)
SP Ponto de partida
AuxP Ponto auxiliar
TP Ponto de destino
#CONSIDER
#CONSIDER é apropriado quando o usuário quer determinar em que
sentido o TCP deve reorientar, sem depender de uma determinada
orientação no ponto auxiliar. O usuário pode especificar o sentido
através do ponto auxiliar.
#INTERPOLATE No TP, que se encontra antes do TP_CA, a orientação programada ainda não
foi atingida. No TP_CA é assumida a orientação programada.
SP Ponto de partida
AuxP Ponto auxiliar
TP Ponto de destino programado
TP_CA Ponto de destino efetivo. Resulta através do ângulo inscrito.
Explicação sobre Algumas mensagens de erro contêm o texto "Erro por causa da regra x"
mensagens de Na programação de $CIRC_MODE deve ser observado, tanto para a orienta-
erro ção como também para os eixos adicionais:
1. Regra 1: #CONSIDER é permitido exatamente quando o ponto de partida
e o ponto de destino não forem ignorados.
2. Regra 2: $CIRC_TYPE=#PATH é permitido exatamente quando o ponto
de partida e o ponto de destino não forem ignorados.
3. Regra 3: se $ORI_TYPE=#IGNORE ou $EX_AX_IGNORE estiverem se-
tados, $CIRC_MODE não é mais avaliado.
4. Regra 4: se estiver programado um ângulo inscrito, é proibida a interpola-
ção no ponto auxiliar.
5. Regra 5: se estiver programado um ângulo inscrito, o ponto de destino
pode ser determinado por extrapolação exatamente quando o ponto de
partida e o ponto inicial não são ignorados.
6. Regra 6: se estiver programado um ângulo inscrito, o ponto de destino
pode ser assumido (interpolado) exatamente quando ele não é ignorado.
7. Regra 7: o trajeto #CONSIDER somente atua em eixos adicionais rotati-
vos sem fim. Em outros tipos de eixo sempre é escolhido o trajeto mais
curto, que corresponde a #IGNORE.
8. Regra 8: o componente TARGET_PT somente é levado em consideração
se estiver programado um ângulo inscrito.
9. Regra 9: a leitura de $CIRC_MODE não é permitida em lugar algum, a
gravação somente no WITH-Token de um SCIRC.
Spline Block, Para Spline Blocks e movimentos individuais do spline, as seguintes variáveis
movimento de sistema são graváveis com a linha WITH:
individual do $ACC
spline
$ACC_AXIS
$ACC_EXTAX
$APO
$BASE
$CIRC_TYPE
$ECO_LEVEL
$GEAR_JERK
$IPO_MODE
$JERK
$LOAD
$ORI_TYPE
$ROTSYS
$SPL_ORI_JOINT_AUTO
$SYNC_ID
$SYNC_LIST
$TOOL
$VEL
$VEL_AXIS
$VEL_EXTAX
Adicionalmente para SCIRC e SLIN: $CIRC_MODE
SPTP_REL:
SPTP_REL pode ser programado como segmento em um Spline Block PTP
ou como movimento individual.
É possível copiar um movimento individual SPTP_REL em um Spline Block
PTP, mas somente se ele não contiver nenhuma atribuição às variáveis de
sistema que são proibidas ali.
SLIN_REL, SCIRC_REL:
SLIN_REL e SCIRC_REL podem ser programados como segmento em um
Spline Block CP ou como movimento individual.
É possível copiar um movimento individual SLIN_REL ou SCIRC_REL em um
Spline Block CP, mas somente se ele não contiver nenhuma atribuição às va-
riáveis de sistema que são proibidas ali.
Sintaxe SPTP_REL:
SPTP_REL Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , …>>
<C_SPL><#BASE|#TOOL>
Elemento Descrição
Ponto de Tipo: AXIS, E6AXIS, POS, E6POS, FRAME
destino
O ponto de destino pode ser cartesiano ou específico do
eixo. A unidade de comando interpreta as coordenadas
como relativas ao ponto de destino do passo anterior.
Se não forem informados todos os componentes do ponto
de destino, a unidade de comando coloca os componentes
faltantes no valor 0. Isso significa que os valores absolutos
desses componentes permanecerão inalterados.
Os dados relativos a Status e Turn, se existentes, são con-
siderados pela unidade de comando. (Isso contrasta com
SLIN_REL, SCIRC_REL e SPL_REL, onde eles são igno-
rados!)
Valor Atribuição de valor à variável do sistema
Em segmentos SPTP: A atribuição vale apenas para esse
segmento.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
C_SPL Com C_SPL: O ponto de destino é aproximado. $APO
define o momento mais cedo para a aproximação.
Somente possível para movimentos individuais, não
para segmentos.
Sem C_SPL: O ponto de destino é alcançado com exa-
tidão.
#BASE, Apenas permitido se o ponto de destino cartesiano tiver
#TOOL sido indicado.
#BASE (padrão): As coordenadas deste ponto de des-
tino se referem ao sistema de coordenadas que perten-
ce à base física.
#TOOL: As coordenadas deste ponto de destino se re-
ferem ao sistema de coordenadas que pertence à ferra-
menta física.
$IPO_MODE não tem nenhuma influência no significado
de #BASE e #TOOL.
SLIN_REL:
SLIN_REL Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2, …, >>
<C_SPL><#BASE|#TOOL>
SCIRC_REL:
SCIRC_REL Ponto auxiliar, Ponto de destino <, CA Ângulo circular> <WITH
SysVar1 = Valor1 <,SysVar2 = Valor2 , … >> <C_SPL><#BASE|#TOOL>
Elemento Descrição
Ponto auxiliar Tipo: POS, E6POS, FRAME
Ponto de des- O ponto deve ser indicado em coordenadas cartesianas. A
tino unidade de comando interpreta as coordenadas como rela-
tivas ao ponto de destino do movimento anterior.
Se nem todos os componentes do ponto forem indicados,
a unidade de comando define os componentes que faltam
para o valor 0. Isso significa que os valores absolutos des-
ses componentes permanecerão inalterados.
Os dados relativos a Status e Turn, se existentes, são
ignorados pela unidade de comando. (Isso contrasta com
SPTP_REL, onde eles são considerados!)
Além disso, no ponto auxiliar são ignorados os ângulos de
orientação.
O ponto auxiliar não pode ser aproximado. É sempre acio-
nado exatamente.
Ângulo circu- Unidade: grau; sem limitação
lar
Valor Atribuição de valor à variável do sistema
Em segmentos: A atribuição vale apenas para esse seg-
mento.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
C_SPL Com C_SPL: O ponto de destino é aproximado. $APO
define o momento mais cedo para a aproximação.
Somente possível para movimentos individuais, não
para segmentos.
Sem C_SPL: O ponto de destino é alcançado com exa-
tidão.
#BASE, #BASE (padrão): As coordenadas deste ponto de des-
#TOOL tino se referem ao sistema de coordenadas que perten-
ce à base física.
#TOOL: As coordenadas deste ponto de destino se re-
ferem ao sistema de coordenadas que pertence à ferra-
menta física.
$IPO_MODE não tem nenhuma influência no significado
de #BASE e #TOOL.
Exemplos de sintaxe
SPTP XHOME
SLIN XP1
Princípio
No cálculo é importante observar os ajustes TOOL e
BASE corretos e ativá-los posteriormente na programa-
ção de movimentos. Se isso não for observado podem ocorrer movimentos
inesperados e colisões.
Status (S) e Turn (T) são partes integrantes dos tipos de dados POS e
E6POS:
STRUC POS REAL X, Y, Z, A, B, C, INT S, T
STRUC E6POS REAL X, Y, Z, A, B, C, E1, E2, E3, E4, E5, E6, INT S, T
Função STATUS
A informação de Status evita ambiguidades na posição do eixo.
Bit 0: informa a posição do ponto de interseção dos eixos da mão (A4, A5,
A6).
Posição Valor
Zona acima da cabeça Bit 0 = 1
O robô encontra-se na zona acima da cabeça, quando
o valor X do ponto de interseção dos eixos da mão, em
relação ao sistema de coordenadas A1, for negativo.
Zona base Bit 0 = 0
O robô encontra-se na zona base, quando o valor X do
ponto de interseção dos eixos da mão, em relação ao
sistema de coordenadas A1, for positivo.
Fig. 7-17: Exemplo: o ponto de interseção dos eixos manuais (ponto ver-
melho) está na área básica.
Posição Valor
A3 ≥ 0° Bit 1 = 1
A3 < 0° Bit 1 = 0
Posição Valor
A5 > 0 Bit 2 = 1
A5 ≤ 0 Bit 2 = 0
Descrição Valor
O ponto não foi ensinado com um robô com precisão Bit 4 = 0
absoluta.
O ponto foi ensinado com um robô com precisão abso- Bit 4 = 1
luta.
TURN
A informação Turn permite se aproximar também de ângulos de eixos
maiores que +180° ou menores que -180° sem uma estratégia específica
de procedimento (por exemplo, pontos intermediários). No caso de eixos
rotatórios, os respectivos bits determinam o sinal do valor axial da forma
seguinte:
Bit = 0: Ângulo ≥ 0 °
Bit = 1: Ângulo < 0 °
Todos os eixos na visão geral
Exemplo
DECL POS XP1 = {X 900, Y 0, Z 800, A 0, B 0, C 0, S 6, T 19}
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Trabalhar com campos
Cálculo de coordenadas de posição
Manuseio com estruturas e o separador de ponto
Uso de loops FOR em cadeias
Programação de movimentos sem formulários Inline
Acesso de coordenadas de destino calculadas
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos sobre campos, estruturas, loop FOR
Conhecimentos teóricos sobre manipulação de dados
Conhecimentos teóricos sobre a programação de movimentos sem for-
mulário Inline
Definição de Deverá ser criado um programa com o qual 16 cubos são retirados do maga-
funções zine de cubos e colocados nas posições previstas na mesa. Em seguida, to-
dos os cubos devem ser coletados e retornados ao magazine de cubos.
Todas as posições a serem acessadas devem ser calculadas com base emu-
ma posição ensinada. As posições de entrega deverão ser acionadas com po-
sições prévias, também calculadas. As distâncias entre as respectivas
posições de depósito são de 80 mm para todos os lados. A distância entre a
posição de depósito e a posição prévia deverá ser de 100 mm.
Tarefa parcial 1: Fluxograma do programa
Crie um PAP para a tarefa descrita.
Tarefa parcial 2: Cálculo das posições de entrega
1. Crie a posição inicial com um formulário Inline.
2. Crie variáveis adequadas para o cálculo das posições de depósito.
3. Inicialize as suas variáveis com valores de início adequados.
4. Calcule as 16 posições de entrega na mesa de trabalho.
Fig. 7-19
Fig. 7-20
Além dos passos individuais com SPTP, SLIN, SCRIC e dos movimentos
relativos, está disponível um "SPLINE Block".
O SPLINE Block é visto e planejado como movimento individual com um
"trajeto complexo".
Existem dois tipos de SPLINE Blocks:
SPLINE Block CP: Spline com movimentos CP (SPL, SLIN, SCIRC)
SPLINE Block PTP: Spline com movimentos exclusivamente no espa-
ço de eixo (somente SPTP)
Conceito de Block: Um SPLINE Block é um passo de movimento com uma
TOOL, uma BASE e um IPO_MODE, mas diferentes velocidades e ace-
lerações nos segmentos individuais.
O trajeto é planejado através de todos os pontos, assim todos os pontos
são percorridos.
O trajeto é completamente calculado antes. Com isso, tudo é conhecido e
o planejamento pode colocar o trajeto idealmente na zona de trabalho dos
eixos.
O spline não pode contradizer a física. Trajetos, que têm contornos muito
apertados, implicarão sempre na redução da velocidade, uma vez que os
eixos do robô são sempre os elementos limitantes.
Dentro de um Spline Block, não é necessária nenhuma aproximação, já
que é definido um trajeto através de todos os pontos. Apesar disso, há ca-
sos em que a velocidade de trajeto cai para 0 m/s.
Ainda podem ser configuradas funções adicionais como "velocidade
constante" ou "tempo fixo definido".
Se o robô se afastar dos pontos que estão em uma superfície de trabalho,
pode ocorrer uma colisão no deslocamento do primeiro ponto com a su-
perfície de trabalho.
Um spline block que não contém nenhum segmento, não é uma instrução de
movimento. O número de segmentos no bloco é limitado apenas pela capaci-
dade de memória. Além dos segmentos, um spline block pode conter os se-
guintes elementos:
Redução da Os principais exemplos de casos nos quais a velocidade deve ser inferior à
velocidade programada são:
Cantos acentuados
Grandes reorientações
Grandes movimentos dos eixos adicionais
Proximidade de singularidades
Selecionando o controle de orientação Sem orientação, é possível evitar
uma redução da velocidade devido a grandes reorientações em segmentos
spline. Para isso, a programação com KRL é como segue:
$ORI_TYPE = #IGNORE
Exceções:
Se seguirem segmentos SLIN, que resultam em uma reta e com os quais
as orientações se alteram de modo uniforme, a velocidade não é reduzi-
da.
Pos. Observação
1 posição programada com orientação correspondente
2 posição interpolada
3 posição programada com orientação correspondente, cuja
orientação não é assumida
Spline block Nos segmentos de um spline block, é possível executar uma seleção de pas-
so.
Spline block CP:
O percurso SAK é realizado como movimento LIN convencional. Isso é in-
formado através de uma mensagem que deve ser confirmada.
Spline block PTP:
O percurso SAK é realizado como movimento PTP convencional. Isso não
é avisado por uma mensagem.
Após uma seleção de passo, a trajetória geralmente decorre exatamente
como se o spline fosse percorrido na execução normal do programa.
São possíveis exceções, caso o spline nunca tenha sido percorrido antes da
seleção de passo e se, nesse caso, for realizada uma seleção de passo no
começo do spline block:
O ponto de partida de um movimento spline é o último ponto antes do spline
block, ou seja, o ponto de partida encontra-se fora do bloco. A unidade de co-
mando do robô salva o ponto de partida em caso de percorrimento normal de
um spline. Assim, ele se torna conhecido se em um momento futuro for reali-
zada uma seleção de passo. Contudo, se o spline block nunca tiver sido per-
corrido, o ponto de partida não é conhecido.
Se após o percurso SAK for pressionada a tecla de arranque, a trajetória al-
terada é informada por uma mensagem que deve ser confirmada.
Exemplo: Trajetória alterada em seleção do passo em P1
1 PTP P0
2 SPLINE
3 SPL P1
4 SPL P2
5 SPL P3
6 SPL P4
7 SCIRC P5, P6
8 SPL P7
9 SLIN P8
10 ENDSPLINE
Linha Descrição
2 Cabeçalho/início do spline block CP
3…9 Segmentos spline
10 Fim do spline block CP
SCIRC Na seleção de passo para o segmento SCIRC, para o qual está programado
um ângulo circular, o ponto de destino é acessado tendo em consideração o
ângulo circular, desde que a unidade de comando do robô conheça o ponto
de partida.
Se a unidade de comando do robô não conhecer o ponto de partida, o ponto
de destino programado é acessado. Neste caso, uma mensagem indica que
o ângulo circular não é considerado.
Em uma seleção de passo para um movimento isolado SCIRC, o ângulo cir-
cular nunca é considerado.
PTP P0
SPLINE
SPL P1
SPL P2
SLIN P3
SPL P4
SCIRC P5, P6
SPL P7
SLIN P8
ENDSPLINE
Solução:
Distribuir simetricamente as distâncias entre os pontos
Programar as retas (exceto as retas muito curtas) como segmentos SLIN
Movimento spline:
SPLINE
SLIN P1A
SPL P1B
SLIN P2
ENDSPLINE
Movimento spline:
SPLINE WITH $VEL.CP=0.5
SLIN {Z 30}
SPL {Y 30, Z 10}
SLIN {Y 60}
ENDSPLINE
SPLINE Block CP SPLINE … ENDSPLINE define um Spline Block CP. Um Spline Block CP
KRL pode conter:
Segmentos SLIN, SCIRC e SPL (Número limitado apenas pela capacida-
de de memória.)
Trigger de PATH
1 bloco de tempo (TIME_BLOCK …)
ou 1 região de deslocamento constante (CONST_VEL …)
STOP WHEN PATH
Comentários
Linhas em branco
O bloco não deve conter nenhuma outra instrução, por exemplo, atribuições
de variáveis ou instruções de lógica.
Sintaxe
SPLINE < WITH SysVar1 = Valor1 <, SysVar2 = Valor2, … > >
Segmento1
…
<SegmentoN>
ENDSPLINE <C_SPL>
Elemento Descrição
SysVar
Valor Atribuição de valor à variável do sistema. O valor não é
válido para segmentos, aos quais é atribuído um valor pró-
prio. Além disso, exceto se o valor for válido, como de cos-
tume, até um novo valor ser atribuído às variáveis do
sistema.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
C_SPL Com C_SPL: O ponto de destino é aproximado. $APO
define o momento mais cedo para a aproximação.
Sem C_SPL: O ponto de destino é alcançado com exa-
tidão.
SPLINE
SPL P1
TRIGGER WHEN PATH=GET_PATH() ONSTART DELAY=0 DO SUBPROG() PRIO=-1
SPL P2
SLIN P3
SPL P4
SCIRC P5, P6 WITH $VEL.CP=0.2
SPL P7 WITH $ACC={CP 2.0, ORI1 200, ORI2 200}
SCIRC P8, P9
SPL P10
ENDSPLINE
SPLINE Block PTP_SPLINE … ENDSPLINE define um Spline Block PTP. Um Spline Block
PTP KRL PTP pode conter:
Segmentos SPTP (Número limitado apenas pela capacidade de memó-
ria.)
Trigger de PATH
1 bloco de tempo (TIME_BLOCK …)
STOP WHEN PATH
Comentários
Linhas em branco
O bloco não deve conter nenhuma outra instrução, por exemplo, atribuições
de variáveis ou instruções de lógica.
Sintaxe
PTP_SPLINE < WITH SysVar1 = Valor1 <, SysVar2 = Valor2, … > >
Segmento1
…
<SegmentoN>
ENDSPLINE <C_SPL>
Elemento Descrição
SysVar
Valor Atribuição de valor à variável do sistema. O valor não é
válido para segmentos, aos quais é atribuído um valor pró-
prio. Além disso, exceto se o valor for válido, como de cos-
tume, até um novo valor ser atribuído às variáveis do
sistema.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
C_SPL Com C_SPL: O ponto de destino é aproximado. $APO
define o momento mais cedo para a aproximação.
Sem C_SPL: O ponto de destino é alcançado com exa-
tidão.
Sintaxe
SPL:
SPL Ponto de destino < WITH SysVar1 = Valor1 <,SysVar2 = Valor2 , …>>
SLIN:
SLIN Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2, …, >>
<C_SPL>
SCIRC:
SCIRC Ponto auxiliar, Ponto de destino <, CA Ângulo circular> <WITH
SysVar1 = Valor1 <,SysVar2 = Valor2 , … >> <C_SPL>
SPTP:
SPTP Ponto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , …>>
<C_SPL>
Elemento Descrição
Ponto auxi- Tipo: POS, E6POS, FRAME
liar
As coordenadas referem-se ao sistema de coordenadas
Ponto de BASE.
destino
Se não forem informados todos os componentes do ponto
de destino, a unidade de comando para os componentes
faltantes assume os valores da posição anterior. Se esta
posição anterior for o ponto de destino de um círculo com
ângulo circular, existe a seguinte diferenciação:
Se a posição anterior estiver fora de um Spline Block,
são assumidos os valores do ponto de destino realmen-
te atingido, não do ponto de destino programado.
Se a posição anterior estiver em um Spline Block, são
assumidos os valores do ponto de destino programado,
não do ponto de destino realmente atingido.
Se a unidade de comando do robô não conhecer nenhuma
posição anterior, os componentes que faltam serão assu-
midos da posição atual do robô.
Ângulo cir- Unidade: grau; sem limitação
cular
SysVar
Elemento Descrição
Valor Atribuição de valor à variável do sistema
Em segmentos: A atribuição vale apenas para esse seg-
mento.
As variáveis do sistema também podem ser ocupadas por
acesso funcional. Para essas funções valem as mesmas
restrições das funções no trigger.
Segmento spline Para segmentos spline, as seguintes variáveis de sistema são graváveis com
a linha WITH:
$ACC
$ACC_AXIS
$ACC_EXTAX
$CIRC_TYPE
$EX_AX_IGNORE
$GEAR_JERK
$JERK
$ORI_TYPE
$ROTSYS
$SYNC_ID
$VEL
$VEL_AXIS
$VEL_EXTAX
Adicionalmente para SCIRC e SLIN: $CIRC_MODE
8
T
Trabalho com variáveis de sistema
Descrição da
medição de ciclo
com tempori-
zador de sistema
KUKA
Fig. 8-1
$TIMER[1]
$TIMER[2]
...
$TIMER[32]
As variáveis de sistema $TIMER[Nr] servem para a medição de processos de
tempo.
$TIMER[12] = 1500
SPTP XP1
SPTP XP2
SLIN XP3
...
SPTP X50
SPTP XHOME
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Trabalhar com um temporizador (inicializar, iniciar, parar).
Realizar a otimização do ciclo.
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos sobre as variáveis de sistema $TIMER[x].
Definição de Duplique o seu programa "Palete" e atribua o nome "Medição de tempo". De-
tarefas verão ser registrados três tempos. O temporizador 1 deverá medir o tempo da
paletização, o temporizador 2 o processo de retirada e o temporizador 3 o
tempo geral de ambos processos. Preste atenção para não iniciar ou parar o
temporizador com o avanço.
1. Para medir o tempo de paletização, use $TIMER[1] e salve adicionalmen-
te o valor final em $TIMER[4].
2. Nomeie $TIMER[1] "Paletização atual“ e $TIMER[4] "Paletização ANTI-
GA".
3. Para medir o tempo de despaletização, use $TIMER[2] e salve adicional-
mente o valor final em $TIMER[5].
4. Nomeie $TIMER[2] "Despaletização atual“ e $TIMER[5] "Despaletização
ANTIGA".
5. Para medir o tempo geral é usado $TIMER[3] e salvo em $TIMER[6].
6. Nomeie $TIMER[3] "Total atual“ e $TIMER[6] "Total ANTIGO".
7. Tente otimizar o seu programa de forma adequada.
8. Teste o seu programa nos modos de operação T1, T2 e Automático. Aqui
devem ser observadas as prescrições de segurança ensinadas.
O que você deveria saber agora:
1. Quantos temporizadores há na unidade de comando KUKA e como estes
são iniciados?
............................................................
............................................................
2. Cite um exemplo para uma variável da $CONFIG.DAT?
............................................................
............................................................
9 Programação de Interrupt
Descrição de
rotinas de cance-
lamento
Global
Um Interrupt é reconhecido apenas a partir do nível no qual está de-
clarado.
Programa Interrupt
Nome do programa Interrupt, que deve ser processado.
Este subprograma é chamado de programa Interrupt.
As variáveis de tempo de execução não podem ser entregues como
parâmetro ao programa Interrupt
São permitidas variáveis, que estão declaradas em uma lista de da-
dos ou através de transferência de variáveis.
Possibilidades Após uma declaração de Interrupt, este deve ser ativado em seguida
através do Ativa um Interrupt.
comando
Desativa um Interrupt.
INTERRUPT ...
Bloqueia um Interrupt.
Libera um Interrupt.
...
INTERRUPT OFF 20 ; Interrupt está desligado
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
END
_________________________________________________
DEF ERROR()
END
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
END
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
$OUT[20]=FALSE
$OUT[21]=TRUE
END
Variáveis de
sistema úteis na
parada exata
Variáveis de
sistema úteis em
uma aproximação
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Declaração de um Interrupt
Criação de um subprograma Interrupt
Avaliação e edição de Interrupts na execução do programa
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de Interrupts
.............................................................
Descrição Frear o robô, depois continuar o movimento "antigo". (>>> "Frear o movi-
mento do robô e continuar o movimento "antigo"" Página 195)
Frear o robô, cancelar o movimento "antigo" e continuar com movimento
novo. (>>> "Frear o movimento do robô e cancelar o movimento "antigo""
Página 196)
Frear o O robô é parado com BRAKE e, no final da rotina de Interrupt continua com
movimento do a trajetória planejada do programa principal.
robô e continuar O robô é parado com BRAKE e deslocado na rotina de Interrupt. Após o
o movimento término da rotina de Interrupt é continuada a trajetória do programa prin-
"antigo" cipal.
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
END
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
$OUT[20]=FALSE
$OUT[21]=TRUE
END
Frear o O robô é parado com BRAKE e deve executar uma nova trajetória após o
movimento do término da rotina de Interrupt. Isto pode ser realizado com o comando RE-
robô e cancelar o SUME.
movimento O robô é parado com BRAKE e deslocado na rotina de Interrupt. Após o
"antigo" término da rotina de Interrupt, a trajetória atual não deve mais ser conti-
nuada e deve ser realizado um novo planejamento de trajetória. Isto tam-
bém pode ser realizado com o comando RESUME.
Definir a prioridade
Determinar o evento de disparo
Definir e criar rotina de Interrupt
DEF MY_PROG( )
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
...
END
_________________________________________________
DEF ERROR()
...
END
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()
END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; Parar o ponteiro de avanço
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
...
END
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()
END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP HOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; Parar o ponteiro de avanço
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
SPTP $POS_INT
RESUME
END
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Declaração de um Interrupt
Criação de um subprograma Interrupt
Avaliação e edição de Interrupts na execução do programa
Frear o movimento do robô com comando KRL
Frear e cancelar o movimento do robô com comandos KRL
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos da linguagem de programação KRL
Conhecimentos teóricos sobre a programação de Interrupts
Conhecimentos teóricos sobre os comandos KRL para frear e cancelar
movimentos do robô e o seu uso correto
INTERRUPT OFF 21
BRAKE
;pick_part
RESUME
END
3. Quando é acionado um Interrupt?
.............................................................
.............................................................
10.1
s
Visão geral
Descrição de Generalidades
funções de A unidade de comando do robô pode administrar no máximo 4096 entradas
comutação digitais e 4096 saídas digitais.
simples Opcionalmente estas podem ser ampliadas via WorkVisual para 8192 en-
tradas digitais e 8192 saídas digitais.
As entradas/saídas são realizadas através de sistemas de bus de campo
opcionais
A configuração é específica do cliente
A projeção é realizada com o WorkVisual
Fig. 10-1
Descrição
através da comutação de uma saída é gerada uma parada de avanço, as-
sim o movimento não pode ser aproximado
...
SLIN XP20 C_SPL
SLIN XP21
$OUT[30]=TRUE
SLIN XP22
Descrição
Através o uso do comando CONTINUE a parada de avanço é cancelada e
assim comutada com o avanço.
Uma aproximação é possível com CONTINUE.
CONTINUE refere-se somente à próxima linha (inclusive linha vazia).
...
SLIN XP20
SLIN XP21 C_SPL
CONTINUE
$OUT[30]=TRUE
SLIN XP22
Comutação de Sintaxe
uma saída com o ativação de uma saída com o indicador de avanço principal e sem parada
indicador de de avanço
avanço principal $OUT[10]_C=TRUE
Descrição
podem ser comutadas até 8 saídas em função do avanço principal e sem
parada de avanço
se for programada uma parada exata, a comutação é realizada ao alcan-
çar o ponto de destino
se estiver programada uma aproximação, a comutação é realizada no
meio do movimento de aproximação do ponto de destino
...
SLIN XP20
$OUT_C[30]=TRUE
SLIN XP21 C_SPL
SLIN XP22
Elemento Descrição
Sinal Tipo: BOOL
Saída na qual o impulso é criado. São admissíveis:
OUT[Nr]
Variável de sinal
Nível Tipo: BOOL
Expressão lógica:
TRUE representa um impulso positivo (high).
FALSE representa um impulso negativo (low).
Duração de Tipo: REAL
impulso
p.ex. 1.000.000 segundos
Descrição
PULSE seta um pulso.
A saída é setada durante um determinado tempo em um nível definido e,
em seguida, resetado automaticamente pelo sistema.
A instrução PULSE provoca uma parada de avanço inicial.
Exemplo:
PULSE ($OUT[30], TRUE, 20); Impulso positivo
Descrição O trigger desencadeia uma instrução definida pelo usuário. A unidade de co-
mando do robô executa a instrução paralelamente ao movimento do robô.
Opcionalmente, o trigger pode se referir ao ponto de partida ou ao ponto de
destino do movimento. A instrução pode ser desencadeada diretamente no
ponto de referência ou ela ainda pode ser deslocada no espaço e/ou no tem-
po.
Possibilidades da programação
Formulário Inline Janela de opções Lógica Trigger
Elemento Descrição
ONSTART Ponto de referência do trigger
Com ONSTART: Ponto de partida
Sem ONSTART: Ponto de destino
Deslocamento O ponto de comutação somente pode ser deslocado até determinados limites.
máx. Se forem programados deslocamentos maiores e, consequentemente, inváli-
dos, a unidade de comando do robô comuta o Trigger o mais tardar no limite
admissível. No T1/T2 ela emite uma mensagem para isso.
Deslocamento máximo para percurso + valor de temponegativo:
Os limites são válidos para o deslocamento geral, que resulta do deslocamen-
to local e temporal negativo.
Exemplo de 1 SPTP P0
trigger com KRL 2 SPLINE
3 SPL P1
4 SPL P2
5 SPL P3
6 SPL P4
7 TRIGGER WHEN PATH=0 ONSTART DELAY=10 DO $OUT[5]=TRUE
8 SCIRC P5, P6
9 SPL P7
10 TRIGGER WHEN PATH=-20.0 DELAY=0 DO SUBPR_2() PRIO=-1
11 SLIN P8
12 ENDSPLINE
Restrições para Os valores para DELAY e PATH podem ser atribuídos através de funções.
funções no Para estas funções valem as seguintes restrições:
Trigger O programa KRL, que contém a função, deve ter a propriedade Oculto.
A função deve ter validade global.
As funções somente podem conter as seguintes instruções ou elementos:
Atribuições de valores
Instruções IF
Comentários
Linhas em branco
RETURN
Ler a variável de sistema
Acessar funções KRL predefinidas
Pos. Explicação
1 Ponto de frenagem calculado, dependente de trajeto e
velocidade
2 Ponto de stop predefinido (através de formulário Inline ou
KRL)
3 Possível cancelamento da impressão booleana -> acelera-
ção sobre a velocidade programada
Antes de um spline block (CP e PTP): Formulário Inline Spline Stop con-
dicionado
1 SPTP P1
2 SLIN P2
Descrição Em um CP spline block, é possível definir uma região na qual o robô mantém
constante a velocidade programada sempre que possível. A região é chama-
da de "região de deslocamento constante".
É possível definir 1 região de deslocamento constante por spline block
CP.
Uma região de deslocamento constante é definida por uma indicação de
início e uma indicação de final.
A região pode não pode se estender além do spline block.
A região pode ser tão pequena quanto desejado.
Elemento Descrição
ONSTART Ponto de referência da instrução
Com ONSTART: Ponto de partida
Sem ONSTART: Ponto de destino
Se o ponto de partida ou de destino estiver aproximado, o
ponto de referência resulta da mesma forma que na apro-
ximação homogênea no PATH trigger.
Exemplo
Aqui a região de deslocamento constante se estende ao longo de diversos
segmentos com diferentes velocidades programadas. Nesse caso, a mais
baixa velocidade, portanto, 0,2 m/s, vale para toda a região.
1 PTP P0
2 SPLINE WITH $VEL.CP = 2.5
3 SLIN P1
4 CONST_VEL START = +100
5 SPL P2 WITH $VEL.CP = 0.5
6 SLIN P3 WITH $VEL.CP = 0.2
7 SPL P4 WITH $VEL.CP = 0.4
8 CONST_VEL END = -50
9 SCIRC P5, P6
10 SLIN P7
11 ENDSPLINE
Elemento Descrição
Parcela Tipo: INT ou REAL; constante, variável ou função
Parcela desejada do tempo total para o seguinte percurso:
Do ponto antes de TIME_BLOCK PART=parcela_anterior
ao ponto antes de TIME_BLOCK PART=parcela
Se parcela_anterior não existir:
Do ponto antes de TIME_BLOCK START
ao ponto antes de TIME_BLOCK PART=parcela
Com "parcela desejada", quer-se dizer: As parcelas são
mantidas tão precisas quanto possível pela unidade de
comando do robô. Mas geralmente elas não são mantidas
com precisão.
O usuário pode atribuir as parcelas de forma que elas jun-
tas resultem em 100. Então ele pode considerar as parce-
las como percentagem do tempo total.
Porém, as parcelas não podem resultar em 100, mas
podem resultar em qualquer soma! A unidade de comando
do robô define a soma das parcelas sempre igual ao tempo
total. Com isso, as parcelas podem ser utilizadas e também
alteradas de maneira muito flexível.
Quando parcelas são atribuídas, sempre uma
TIME_BLOCK PART deve estar diretamente antes de
TIME_BLOCK END. Entre elas não pode haver nenhum
segmento.
Tempo total Tipo: INT ou REAL; constante, variável ou função; uni-
dade: s
Tempo em que o seguinte percurso é executado:
Do ponto antes de TIME_BLOCK START
ao ponto antes de TIME_BLOCK END
O valor deve ser maior que 0. O tempo total é mantido com
precisão. Se ele não puder ser mantido, p. ex., porque um
tempo muito curto foi programado, o robô se move o mais
rápido possível. Além disso, em T1 e T2, é exibida uma
mensagem.
Se o valor para parcela ou tempo total for atribuído através de uma fun-
ção, valem as mesmas restrições para as funções no trigger.
SPLINE
SLIN P1
SPL P2
TIME_BLOCK START
SLIN P3
TIME_BLOCK PART = 12.7
SPL P4
SPL P5
SPL P6
TIME_BLOCK PART = 56.4
SCIRC P7, P8
SPL P9
TIME_BLOCK PART = 27.8
TIME_BLOCK END = 3.9
SLIN P10
ENDSPLINE
Seleção de passo Dependendo em qual linha está sendo executada uma seleção de passo, a
unidade de comando do robô planeja ou não o bloco de tempo.
11 Interpretador Submit
t
O interpretador de comando
pode ser iniciado automática ou manualmente
também pode ser parado ou desselecionado manualmente
pode assumir funções de operação e de comando no ambiente do robô
como padrão está criado com o nome SPS.sub no diretório R1/SYSTEM
pode ser programado com o conjunto de comandos KRL
não pode processar nenhum comando KRL, que esteja relacionado com
movimentos de robô
permite movimentos assíncronos de eixos adicionais
pode acessar variáveis de sistema lendo e gravando
pode acessar entradas/saídas lendo e gravando
Correlações na
Atenção!
programação do O Interpretador Submit não pode ser usado para aplica-
Interpretador ções críticas de tempo! Para estes casos é necessário usar um PLC. Moti-
Submit vos:
O Interpretador Submit divide a capacidade do sistema com o Interpre-
tador de robô e a gestão de IO, que têm prioridades maiores. Por isto, o
Interpretador Submit não operará regularmente no ciclo de interpolação
da unidade de comando do robô de 12ms.
Além disso, o tempo de execução do Interpretador Submit é inconstante.
O tempo de execução do Interpretador Submit é influenciado pelo núme-
ro das linhas no SUB-programa. Também as linhas de comentário e va-
zias exercem um efeito.
Aviso!
Não é verificado, se o Interpretador do robô ou o Inter-
pretador Submit acessam simultaneamente a mesma saída, uma vez que
isto pode ser desejado em determinados casos.
Por isso, a atribuição das saídas deve ser cuidadosamente verificada pelo
usuário. Caso contrário, podem ocorrer sinais de saída inesperados, p.ex.,
em dispositivos de segurança. Pode ocorrer morte, lesões corporais graves
ou danos materiais significativos.
Aviso!
Não processar sinais relevantes de segurança, sinais
críticos de tempo e variáveis através do Interpretador Submit.
12
2
Trabalhar com sinais analógicos
T
Descrição
value = $ANIN[2]
...
value = sensor
...
DEF myprog( )
SIGNAL sensor $ANIN[3]
...
ANIN ON value = 1.99*sensor-0.75
...
ANIN OFF sensor
Exemplo 2:
DEFDAT myprog
DECL REAL value = 0
DECL REAL corr = 0.25
DECL REAL offset = 0.45
ENDDAT
DEF myprog( )
SIGNAL sensor $ANIN[7]
...
ANIN ON value = corr*sensor-offset
...
ANIN OFF sensor
Procedimento na
O pré-requisito para o uso dos sinais analógicos é uma
programação projeção correta do sistema de bus com os sinais analó-
com entradas gicos conectados.
analógicas
Programação de ANIN ON /OFF
1. Seleção da entrada analógica correta
2. Realização do acordo de sinais
3. Declaração das variáveis necessárias em uma lista de dados
4. Ligar: Programação da instrução ANIN ON
5. Teste para verificar se, no máximo, 3 entradas dinâmicas estão ativas
6. Desligar: Programação da instrução ANIN OFF
Descrição
Função
Podem ser utilizadas no máximo 8 saídas analógicas
(estáticas e dinâmicas) ao mesmo tempo. ANOUT ativa
uma parada de avanço.
Pos. Descrição
1 Número da saída analógica
CHANNEL_1 … CHANNEL_32
2 Fator para a tensão
0 … 1 (Escalonamento: 0.01)
Elemento Descrição
Nome do Tipo: REAL
sinal
Indica a saída analógica. Nome do sinal deve ter sido decla-
rado anteriormente com SINAL . Não é possível indicar,
em vez do nome do sinal, diretamente a saída analógica
$ANOUT[x].
Os valores de uma saída analógica $ANOUT[x] movem-se
entre +1.0 e -1.0 e representam uma tensão de +10 V até
-10 V.
Fator Tipo: REAL
Fator qualquer. Pode ser uma constante, uma variável ou
um nome do sinal.
Elemento Tipo: REAL
regulador
Pode ser uma constante, uma variável ou um nome do
sinal.
Offset Tipo: REAL
Pode ser uma constante, uma variável ou um nome do
sinal.
Elemento Descrição
Tempo Tipo: REAL
Unidade: Segundos. Com a palavra-chave DELAY e uma
indicação de tempo positiva ou negativa o sinal de saída
pode ser emitido com retardo (+) ou antecipado (-).
Valor mínimo, Tipo: REAL
Valor máximo
Tensão mínima e/ou máxima, que deve estar aplicada na
saída. Não fica abaixo nem é ultrapassada, mesmo que os
valores calculados estejam abaixo ou acima.
Valores admissíveis: -1.0 até +1.0 (corresponde a -10 V
até +10 V).
Pode ser uma constante, uma variável, um componente
estrutural ou um elemento de campo. Em todo o caso, o
valor mínimo deve ser menor que o valor máximo. A
sequência das palavras-chave MÍNIMO e MÁXIMO deve
ser mantida.
Exemplo 2
DEFDAT myprog
DECL REAL corr = 1.45
DECL REAL offset = 0.25
ENDDAT
DEF myprog( )
SIGNAL motor $ANOUT[7]
...
ANOUT ON motor = corr*$VEL_ACT-offset
...
ANOUT OFF motor
Procedimento na
O pré-requisito para o uso dos sinais analógicos é uma
programação projeção correta do sistema de bus com os sinais analó-
com saídas gicos conectados.
analógicas
Programação de ANOUT ON /OFF
1. Seleção da saída analógica correta
2. Realização do acordo de sinais
3. Declaração das variáveis necessárias em uma lista de dados
4. Ligar: Programação da instrução ANOUT ON
5. Teste para verificar se, no máximo, 4 saídas dinâmicas estão ativas
6. Desligar: Programação da instrução ANOUT OFF
Exemplo:
DEF myprog( )
SIGNAL motor $ANOUT[3]
...
ANOUT ON motor = 3.375*$VEL_ACT MINIMUM=0.30 MAXIMUM=0.97
...
ANOUT OFF motor
Objetivo do Após a conclusão com êxito deste exercício, você estará em condições de
exercício executar as seguintes atividades:
Uso de acordos de sinais em entradas/saídas
Inclusão estática ou dinâmica de entradas analógicas em processos de
trabalho
Inclusão estática ou dinâmica de saídas analógicas em processos de tra-
balho
Pré-requisitos São necessários os seguintes pré-requisitos para a conclusão com êxito des-
te exercício:
Conhecimentos teóricos de acordos de sinais
Conhecimentos teóricos sobre a inclusão de entradas/saídas analógicas
Definição de Configure o seu sistema de tal forma, que você possa alterar o override de
funções programa através da entrada analógica. Adicionalmente a velocidade de robô
efetivamente percorrida deve controlar uma saída analógica.
Tarefa parcial 1
1. Crie um programa com o nome Velocidade.
2. Use a entrada analógica 1, que é controlada pelo potenciômetro.
3. Adapte o override de programa no Interpretador Submit.
4. Teste o seu programa conforme a prescrição.
Tarefa parcial 2
1. Expanda o seu programa com movimentos de trajetória (velocidade: até
2 m/s), que estão em um loop sem fim.
2. Use a saída analógica 1, da indicação do painel.
3. Use a variável de sistema $VEL_ACT para a velocidade atualmente exe-
cutada.
4. Teste o seu programa conforme a prescrição.
5. Adicionalmente: Se a velocidade for menor que 0,2 m/s a saída deve mes-
mo assim ser sujeitada com 1,0 V e se a velocidade foi maior que 1,8 m/
s a saída não deve emitir mais que 9,0 V.
.............................................................
.............................................................
13 Anexo
A
Definição de um
movimento
Elemento Descrição
Ponto auxiliar Tipo: POS, E6POS, FRAME
Se não forem informados todos os componentes do ponto
auxiliar, a unidade de comando assume para os compo-
nentes faltantes os valores da posição anterior.
Os ângulos de orientação, assim como os dados Status e
Turn dentro de um ponto auxiliar normalmente são ignora-
dos.
O ponto auxiliar não pode ser aproximado. Ele é percorrido
no tipo de execução do programa GO. No tipo de execução
do programa Movimento o robô para no ponto auxiliar.
As coordenadas referem-se ao sistema de coordenadas
BASE.
Ponto de des- Tipo: POS, E6POS, FRAME
tino
Se não forem informados todos os componentes do ponto
de destino, a unidade de comando para os componentes
faltantes assume os valores da posição anterior.
Os dados Status e Turn dentro do ponto de destino do tipo
POS ou E6POS são ignorados em movimentos CIRC
(assim como em movimentos LIN).
As coordenadas referem-se ao sistema de coordenadas
BASE.
Ângulo Indica o ângulo total do movimento circular. Isso possibilita
inscrito uma prorrogação do movimento além do ponto de destino
CA programado ou, ainda, uma redução. Deste modo, o ponto
de destino efetivo não corresponde mais ao ponto de des-
tino programado.
Unidade: Graus. Sem limitação; pode-se programar espe-
cialmente um ângulo inscrito maior que 360º.
Ângulo inscrito positivo: a trajetória circular é inicia-
da no sentido Ponto de partida › Ponto auxiliar ›
Ponto de destino.
Ângulo inscrito negativo: a trajetória circular é ini-
ciada no sentido Ponto de partida › Ponto de desti-
no › Ponto auxiliar.
Aproximação Esse parâmetro faz com que o ponto de destino seja apro-
da trajetória ximado. Ao mesmo tempo define o momento mais cedo
para a aproximação. Os possíveis dados:
C_DIS
Parâmetro de distância: O momento mais cedo
para iniciar a aproximação é quando a distância ao
ponto de destino estiver abaixo de $APO.CDIS.
C_ORI
Parâmetros de orientação: O momento mais cedo
para iniciar a aproximação é quando o ângulo de
orientação estiver abaixo de $APO.CORI.
C_VEL
Parâmetros de velocidade: O momento mais cedo
para iniciar a aproximação é quando a velocidade
na fase de frenagem ao ponto de destino estiver
abaixo de $APO.CVEL.
Ângulo inscrito CA
Ferramenta externa
$IPO_MODE = #TCP
Velocidade:
Em movimento PTP
$VEL_AXIS[x] ; x=1...8 para cada eixo
Aceleração
Em movimento PTP
$ACC_AXIS[x] ; x=1...8 para cada eixo
Solavanco
Em movimento SPTP
Distância de aproximação
Em SPINE passos individuais SLIN, SCIRC e em SPTP: C_SPL
A distância do ponto de destino deverá ser inferior ao valor
$APO.CDIS
$APO.CDIS = 250.0 ; [mm] Distância
SPTP XP3 C_SPL
SLIN XP4 C_SPL
$ORI_TYPE = #CONSTANT
$ORI_TYPE = #VAR
$ORI_TYPE = #JOINT
$CIRC_TYPE = #PATH
$CIRC_TYPE = #BASE
13.2.1 $ACC
13.2.2 $ACC_AXIS
Explicação da
Elemento Descrição
sintaxe
Número de Tipo: INT
eixo
1 … 6: eixo de robô A1 … A6
Aceleração Tipo: INT; unidade: %
1 … 100
13.2.3 $ACC_EXTAX
Explicação da
Elemento Descrição
sintaxe
Número de Tipo: INT
eixo
1 … 6: eixo adicional E1 … E6
Aceleração Tipo: INT; unidade: %
1 … 100
13.2.4 $APO
Explicação da
Elemento Descrição
sintaxe
CVEL Tipo: INT; unidade: %
Parâmetros de velocidade
1 … 100
O parâmetro de aproximação indica a percentagem da
velocidade programada a partir da qual é possível iniciar a
aproximação na fase de frenagem ao ponto de destino.
CPTP Tipo: INT; unidade: %
Distância de aproximação para movimentos PTP e spline
PTP (= Distância antes do ponto de destino, a partir da
qual é possível iniciar a aproximação)
1 … 100
Explicação do parâmetro de aproximação: (>>> "CPTP"
Página 239)
Nota: Movimentos spline PTP (SPTP) são programáveis a
partir do KUKA System Software 8.3.
CDIS Tipo: REAL; unidade: mm
Parâmetro de distância
O momento mais cedo para iniciar a aproximação é
quando a distância ao ponto de destino está abaixo do
valor especificado aqui.
CORI Tipo: REAL; unidade: °
Parâmetro de orientação
O momento mais cedo para iniciar a aproximação é
quando o ângulo de orientação dominante (rotação ou
oscilação do eixo longitudinal da ferramenta) fica abaixo
da distância angular ao ponto de destino especificada
aqui.
13.2.5 $BASE
13.2.6 $CIRC_TYPE
Sintaxe $CIRC_TYPE=Tipo
Explicação da
Elemento Descrição
sintaxe
Tipo Tipo: ENUM
#BASE: Controle de orientação referente à base
#PATH: Controle de orientação referente ao trajeto
Movimento Efeito?
PTP Sim
LIN Não
CIRC Não
Movimentos Spline CP (Block e passo indivi- Sim
dual)
Com perfil de deslocamento mais elevado
Movimentos Spline CP (Block e passo indivi- Não
dual)
Sem perfil de deslocamento mais elevado
Movimentos Spline PTP (Block e passo indivi- Sim
dual)
Sintaxe $ECO_LEVEL=Nível
Explicação da
Elemento Descrição
sintaxe
Nível Tipo: ENUM
#OFF: O modo de economia de energia está desligado.
#LOW: Baixa economia
#MIDDLE: Economia média
#HIGH: Alta economia
13.2.8 $GEAR_JERK
Explicação da
Elemento Descrição
sintaxe
Número de Tipo: INT
eixo
1 … 6: eixo de robô A1 … A6
7 … 12: eixo adicional E1 … E6
Solavanco de Tipo: INT; unidade: %
redutor
1 … 100
13.2.9 $IPO_MODE
Sintaxe $IPO_MODE=Modo
Explicação da
Elemento Descrição
sintaxe
Modo Tipo: ENUM
#TCP: a ferramenta é uma ferramenta fixa.
#BASE: a ferramenta está montada no flange de mon-
tagem.
Padrão: #BASE
13.2.10 $JERK
13.2.11 $LOAD
Explicação da
Elemento Descrição
sintaxe
Massa Tipo: REAL; unidade: kg
Centro de Tipo: FRAME
gravidade
X, Y, Z: Posição do centro de gravidade em relação ao
flange
A, B, C: Orientação dos eixos principais de inércia em
relação ao flange
Inércia Tipo: INERTIA
X, Y, Z: Momentos de inércia de massa em torno dos ei-
xos do sistema de coordenadas, que está girado atra-
vés de A, B, C relativamente ao flange
Parâmetro Unidade
Massa m kg
Distância até o Lx, Ly, Lz mm
Inércia de massa no Ix, Iy, Iz kg m2
centro de gravidade
13.2.12 $ORI_TYPE
Sintaxe $ORI_TYPE=tipo
Explicação da
Elemento Descrição
sintaxe
Tipo Tipo: ENUM
#CONSTANT: A orientação do TCP permanece cons-
tante durante o movimento.
#VAR: A orientação do TCP muda continuamente du-
rante o movimento.
#JOINT: A orientação do TCP muda continuamente du-
rante o movimento. Isto ocorre através do transporte li-
near (deslocamento específico de eixo) nos ângulos de
eixo de mão.
Nota: Se $ORI_TYPE = #JOINT, a variável $CIRC_TYPE
é ignorada.
13.2.13 $ROTSYS
Explicação da
Elemento Descrição
sintaxe
Sistema de Tipo: ENUM
referência
#AS_TRA: Rotação no sistema de coordenadas
$TRANSSYS
#BASE: Rotação no sistema de coordenadas BASE
#TCP: Rotação no sistema de coordenadas TOOL
Padrão: #AS_TRA
13.2.14 $SPL_ORI_JOINT_AUTO
Explicação da
Elemento Descrição
sintaxe
Tipo Tipo: ENUM
#OFF nenhuma otimização nas proximidades da singu-
laridade de eixos de mão
#ON é uma alternativa para a utilização de $ORI_TYPE
= #JOINT. Enquanto $ORI_TYPE = #JOINT pode ser
utilizado especificamente para movimentos individuais,
$SPL_ORI_JOINT_AUTO = #ON possibilita uma otimi-
zação automática sobre quaisquer sequências de pro-
gramas grandes com pequeno número de alterações.
$SPL_ORI_JOINT_AUTO pode ser alterado somente
através de um programa de robô.
$SPL_ORI_JOINT_AUTO não pode ser definido em
segmentos spline.
Padrão: $SPL_ORI_JOINT_AUTO = #OFF
13.2.15 $TOOL
13.2.16 $VEL
13.2.17 $VEL_AXIS
Explicação da
Elemento Descrição
sintaxe
Número de Tipo: INT
eixo
1 … 6: eixo de robô A1 … A6
Velocidade Tipo: INT; unidade: %
1 … 100
13.2.18 $VEL_EXTAX
Explicação da
Elemento Descrição
sintaxe
Número de Tipo: INT
eixo
1 … 6: eixo adicional E1 … E6
Velocidade Tipo: INT; unidade: %
1 … 100
13.2.19 $CIRC_MODE
SP Ponto de partida
AuxP Ponto auxiliar
TP Ponto de destino programado
TP_CA Ponto de destino real. Resulta do ângulo circular.
#EXTRAPOLATE:
Em TP a orientação programada é assumida. Para TP_CA esta orientação é
escalada de acordo com o ângulo circular.
Index
Símbolos E
, projeto WorkVisual 35 E/Ss analógicas, exercício 227
$ACC 237 Editor KRL 41
$ACC_AXIS 237 EKrlMsgType 117
$ACC_EXTAX 237 Emitente 116
$ACC_MA 237 Entradas analógicas 221
$APO 238 ENUM 98
$BASE 239 Estrutura 93
$CIRC_MODE 149, 245 Estrutura de projeto (janela) 9
$CIRC_TYPE 239 Estrutura de projeto WorkVisual (guia Arquivos)
$ECO_LEVEL 239 13
$GEAR_JERK 240 Exemplo PAP 64
$IPO_MODE 241
$JERK 241 F
$JERK_MA 241 Fluxograma do programa, PAP 62
$LOAD 241 Funções 101, 111, 113
$ORI_TYPE 243 Funções de comutação 201
$RAISE_TIME 237, 238 Funções padrão 82, 113
$ROTSYS 243 Funções para a emissão de mensagens 113
$SPL_ORI_JOINT_AUTO 244 Funções para variável string 113
$TIMER r 183 Funções, matemáticas 113
$TOOL 244
$VEL 244 G
$VEL_AXIS 245 Global 187
$VEL_AXIS_MA 245 global 77
$VEL_EXTAX 245 Grupo de usuários, padrão 65
$VEL_MA 245
I
A Individual (item de menu) 85
Acordos 75 Inicialização 80
Administrador 65 Interpretador Submit 217
Ajuda 9 Interrupt 187
Anexo 229 Interrupt Cancelar movimentos de deslocamen-
Array 87 to, exercício 199
Ativar o projeto na unidade de comando do robô Inércia de massa 243
32
Avanço 77 K
KrlMsg_T 116
B KrlMsgDlgSK_T 133
Barra de menu 9 KrlMsgOpt_T 118
Barras de botões 9
Bloco de tempo 213 L
local 77
C
Campos 87 M
Cargas 242 Manipulação 82, 83
Cargas no robô 242 Massa 243
Catálogos (janela) 9 Mensagem de confirmação 115, 127
centro de gravidade 243 Mensagem de diálogo 115
Comentário 57 Mensagem de espera 115, 130
Comparar projetos 14 Mensagem de estado 115, 124
Mensagem de informação 115, 121
D Mensagens 115
DECL 76, 78 Mensagens (janela) 9
Declarar Interrupt, exercício 193 Mensagens de usuário 115
Declaração 76, 79 Modo de interpolação 241
DEFFCT 111 Modos WorkVisual 12
Diálogo 135 Método de programação, exemplo PAP 64
R
Região de deslocamento constante 211, 212
Return 102, 111
S
Saídas analógicas 223
Selecionar o tipo de mensagem 117
Seleção de passo 171
Sinais analógicos 221
Singularidade, spline CP 244
Snippets – Introdução rápida para instruções
KRL 48
Spline Block CP 178
Spline Block PTP 179
Stop condicionado 208
Submit 217
Subprograma 101
Subprograma global 103
Subprograma local 101
Subprogramas 60
T
Template 35
Tempo de ciclo 183
Temporizador 183
Tensão 224
Texto de mensagem 116
tipo de dados de enumeração 98
Tipos de cálculo básico 82
Transmissão de parâmetros 105