Escolar Documentos
Profissional Documentos
Cultura Documentos
KR C...
Programação perito
1 de 212
e Copyright KUKA Roboter GmbH
Este documento ou extratos do mesmo não podem ser reproduzidos ou disponibilizados a terceiros sem autorização expressa do editor.
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 remessa ou de serviço.
Verificámos que o conteúdo do prospeto é compatível com o software e com o hardware descrito. Porém, não são de excluir exeções, de forma
a que não nos responsabilizamos pela total compatibilidade. Os dados contidos neste prospeto serão verificados regulamente e as correções
necessárias serão incluídas nas próximas edições.
Reservado o direito a alterações técnicas que não influenciem o funcionamento.
PD Interleaf
ProgExpPHR4.1.7 12.03.06 pt
2 de 212
Índice
2 Variáveis e declarações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1 Variáveis e nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Objetos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.1 Declaração e inicialização de objetos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.2 Tipos de dados simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.3 Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.4 Seqüências de caratéres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.5 Estruturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.6 Tipos de enumeração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.3 Manipulação de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.1.1 Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.1.2 Operador geométrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3.1.3 Operadores de comparação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3.1.4 Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.1.5 Operadores de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3.1.6 Prioridades de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.2 Funções regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4 Variáveis de sistema e ficheiros de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
ProgExpPHR4.1.7 12.03.06 pt
3 de 212
Programação perito
3 Programação de movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.1 Utilização de diversos sistemas de coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2 Movimentos ponto--a--ponto (PTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Generalidades (PTP sincronizado) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.2 Perfil de deslocação mais elevado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2.3 Instruções de movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.3 Movimentos de trajetória (Movimentos--CP = Continuous Path) . . . . . . . . . . . . . . . . . . . . . . 77
3.3.1 Velocidade e aceleração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.3.2 Orientação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.3.3 Movimentos lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.4 Movimentos circulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.4 Avanço do computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.5 Movimentos de aproximação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.1 Aproximação PTP--PTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.5.2 Aproximação LIN--LIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5.3 Aproximação CIRC--CIRC e aproximação CIRC--LIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.5.4 Aproximação PTP -- trajetória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.5.5 Aproximação aperfeiçoada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.5.6 Mudança da ferramenta durante a aproximação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.6 A programação (“teach”) dos pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.7 Parâmetros de movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
ProgExpPHR4.1.7 12.03.06 pt
4 de 212
6 Instruções de entrada/saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.2 Entradas/saídas binárias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.3 Entradas/saídas digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.3.1 Declaração do sinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.3.2 Definir saídas no ponto de destino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.4 Saídas de impulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.5 Entradas/saídas analógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.5.1 Saídas analógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.5.2 Entradas analógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.6 Entradas digitais predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
ProgExpPHR4.1.7 12.03.06 pt
5 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
6 de 212
1 Generalidades acerca dos programas KRL
Enquanto para o utilizador todos os ficheiros de sistema se mantêm invisíveis, o perito pode
ver estes ficheiros agora na janela de programas e também os pode editar. Além dos nomes
dos ficheiros e dos comentários, são também indicados no nível de perito as extensões, os
atributos e os tamanhos dos ficheiros.
Na imagem acima apresentada, os ficheiros e arquivos do caminho de “R1” são mostrados
na janela de programas.
ProgExpPHR4.1.7 12.03.06 pt
7 de 212
Programação perito
Ficheiro Significado
$MACHINE.DAT Lista dos dados de sistema com variáveis de sistema para a adap-
tação da unidade de comando e do robô
$ROBCOR.DAT Listagem dos dados de sistema com dados para o modelo de
dinâmica do robô
MACHINE.UPG Ficheiro de sistema para upgrades futuros
ROBCOR.UPG Ficheiro de sistema para upgrades futuros
Ficheiro Significado
$CONFIG.DAT Lista dos dados de sistema com dados de configuração gerais
BAS.SRC Pacote básico para o controle dos movimentos
IR_STOPM.SRC Programa para o tratamento de erros aquando do surgimento de
avarias no robô
SPS.SUB Ficheiro submit para a supervisão paralela
Ficheiro Significado
A10.DAT Pacote de tecnologia para a soldadura a arco com tensões de
A10.SRC comando analógicas
A10_INI.DAT Pacote de tecnologia para a inicialização da soldadura a arco com
A10_INI.SRC tensões de comando analógicas
A20.DAT Pacote de tecnologia para a soldadura a arco com números de
A20.SRC programa digitais
A50.DAT Pacote de tecnologia para a utilização do sensor do arco
A50.SRC
ARC_MSG.SRC Programa para a programação de mensagens para a soldadura
com gás de proteção
ARCSPS.SUB Ficheiro submit para a soldadura a arco
BOSCH.SRC Programa para a soldadura de pontos com interface série para o
temporizador de soldadura de pontos Bosch PSS5200.521C
COR_T1.SRC Programa para a correção da ferramenta (versão antiga)
CORRTOOL.DAT Programa para a correção da ferramenta
CORRTOOL.SRC
FLT_SERV.DAT Programa para o tratamento de erros definido pelo
FLT_SERV.SRC utilizador aquando da soldadura a arco
H50.SRC Pacote de garra
H70.SRC Pacote de Touchsensor
MSG_DEMO.SRC Programa com exemplos de mensagens de utilizador
NEW_SERV.SRC Programa para a alteração de reações de erro para FLT_SERV
P00.DAT Pacote de programa para o acoplamento a um PLC
P00.SRC
ProgExpPHR4.1.7 12.03.06 pt
8 de 212
1 Generalidades acerca dos programas KRL (continuação)
A estrutura interior de um ficheiro KRL é constituída por uma seção de declaração, uma
seção de instrução e por um máximo de 255 subprogramas e funções locais.
DEF O nome do objeto sem extensão é, simultaneamente, o nome do ficheiro, sendo, por isso,
indicado na declaração com DEF. O nome pode ser composto por um máximo de 24 caraté-
res, mas não poderá ser uma palavra chave (ver parágrafo [Variáveis e declarações]).
Cada ficheiro começa com a declaração “DEF” e termina com “END”:
ProgExpPHR4.1.7 12.03.06 pt
9 de 212
Programação perito
DEF NAME(X1:IN)
Declarações
Instruções
END
Lista de Um programa de robô poderá ser constituído apenas por um ficheiro de programa ou por
dados um ficheiro de programa com a respetiva lista de dados. A lista de dados e o ficheiro
apresentam o mesmo nome, o que os identifica como conjunto. Os nomes distinguem--se
apenas pela extensão, p.ex.:
Ficheiro: PROG1.SRC
Lista de dados: PROG1.DAT
Nas listas de dados são admissíveis apenas atribuições de valores “=”. Quando a
lista de dados e o ficheiro apresentam o mesmo nome, as variáveis declaradas na lista de
dados podem ser utilizadas da mesma forma que as variáveis declaradas no ficheiro SRC.
ProgExpPHR4.1.7 12.03.06 pt
10 de 212
1 Generalidades acerca dos programas KRL (continuação)
Escolha um template
Terá de selecionar um template. Use as teclas de seta e confirme com a softkey “OK“ ou
com a tecla Enter.
A linha de cabeçalho DEF¼ e END e as estruturas de programa dos vários templates en-
contram--se, p.ex., para o template cell, em C:\KRC\ROBOTER\TEMPLATE\CellVorga-
be.src”.
ProgExpPHR4.1.7 12.03.06 pt
11 de 212
Programação perito
Depois de ter sido selecionado o respetivo template, será solicitado a introduzir um nome
para o ficheiro criado.
A lista de dados é obrigatória, quando também pretende introduzir no seu ficheiro SRC
instruções guiadas por menus.
Para que o programa se mantenha bem legível, é necessário fazer as respetivas tabula-
ções em vários níveis, p.ex., quando se trata de ramificações. No editor isto poderá ser
feito com a ajuda de espaços.
Compilador O compilador controla o código com vista à sua exatidão sintática e semântica. Caso haja
erros, é emitida uma mensagem e criado um ficheiro de erros com a extensão “.ERR”.
Editor de Ao carregar um programa através da softkey “Selecionar”, são vinculados todos os ficheiros
ligação e listas de dados necessários para um programa. Ao ligá--los é verificado se todos os
módulos estão presentes, analisados e sem erros. Além disso, durante uma transferência
de parâmetros, o editor de ligação verifica a compatibilidade de tipo entre os parâmetros
transferidos. Caso surjam erros durante a vinculação, é criado um ficheiro de erros com a
extensão “.ERR”, tal como na compilação.
ProgExpPHR4.1.7 12.03.06 pt
12 de 212
1 Generalidades acerca dos programas KRL (continuação)
Um programa KRL também poderá ser escrito com qualquer editor de texto usual e carre-
gado para a memória de sistema com a ajuda da softkey “Carregar”. No entanto, nesse
caso, terá de verificar por si próprio se todas as inicializações necessárias (p.ex., velocida-
des dos eixos) foram realizadas.
DEF PROG1()
FOR J=1 TO 5
PTP {A1 4}
PTP {A2 -7,A3 5}
PTP {A1 0,A2 -9,A3 9}
ENDFOR
ProgExpPHR4.1.7 12.03.06 pt
13 de 212
Programação perito
1.3.2 Editor
Por isso, para editar ou introduzir determinadas instruções KRL ou estruturas de programa,
será necessário o editor. Como ao fechar o editor é compilado o código completo, também
podem ser detectados erros que só surgem em relação a várias linhas (p.ex., variáveis mal
declaradas).
ProgExpPHR4.1.7 12.03.06 pt
14 de 212
1 Generalidades acerca dos programas KRL (continuação)
Como alternativa, poderá manter premida a tecla CTRL no bloco de números e premir no
teclado a tecla C. A seguir, solte ambas as teclas.
Como alternativa, poderá manter premida a tecla CTRL no bloco de números e premir no
teclado a tecla V. A seguir, solte ambas as teclas.
Como alternativa, poderá manter premida a tecla CTRL no bloco de números e premir no
teclado a tecla X. A seguir, solte ambas as teclas.
1.3.2.5 Apagar
A área marcada poderá ser removida do programa. Nesse caso, não haverá uma memoriza-
ção temporária. A parte de programa removida é irremediavelmente perdida.
ProgExpPHR4.1.7 12.03.06 pt
15 de 212
Programação perito
Por essa razão, é emitida uma pergunta de segurança na janela de mensagens que terá de
ser respondida por meio da barra de softkeys.
1.3.2.6 Procurar
1.3.2.7 Substituir
A função “Procurar e substituir“ está disponível apenas a nível de perito e aí, exclusiva-
mente, no editor. Esta aplicação realiza uma busca no programa, com vista a encontrar uma
determinada seqüência de caratéres na área visível (não linhas de Folds ou Folds abertas)
e permite a substituição com uma determinada seqüência de caratéres definida.
Para esse efeito, selecione no menu “Processar” a opção “Substituir”.
ProgExpPHR4.1.7 12.03.06 pt
16 de 212
1 Generalidades acerca dos programas KRL (continuação)
Introduza uma seqüência de caratéres na linha de localização e depois mude com a tecla
de seta para baixo, para a linha de substituição. Aí insira o termo com que pretende substituir
o termo procurado.
Se o termo procurado aparecer várias vezes no documento, mas você pretender substitui--lo
apenas num determinado local, prima a softkey “Localizar” as vezes que forem necessárias
para encontrar o local procurado. A seguir, prima “Substituir”. O termo procurado é substi-
tuído pelo termo indicado.
Se quiser substituir o termo procurado em todos os locais ou numa área previamente mar-
cada no programa, prima depois da introdução no formulário de localização/substituição a
softkey “Repor tudo”.
ProgExpPHR4.1.7 12.03.06 pt
17 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
18 de 212
1 Generalidades acerca dos programas KRL (continuação)
1.4.1 FOLD
O painel de operação KUKA usa uma técnica especial para uma representação clara dos
programas. As indicações introduzidas na forma de comentários KRL permitem suprimir a
indicação de partes seguintes do programa. Assim, o programa é dividido em partes
adequadas que, de acordo com a sua característica tipo pasta, são denominados “FOLDS”.
As “FOLDS” estão normalmente “fechadas” e só poderão ser “abertas” a nível de perito.
Contêm informações que se mantêm invisíveis para o utilizador no painel de operação
KUKA (KUKA--BOF). A nível de perito terá a possibilidade de tornar um bloco KRL invisível
para o utilizador. Para esse efeito, as respetivas declarações ou instruções são iniciadas
com “;FOLD“ e terminadas com “;ENDFOLD”.
As “Folds” dentro de um programa poderão ser visualizadas ou ocultas, se premir a softkey
“Processar” e selecionar, a seguir, “FOLD” e o respetivo comando.
Ao fazer o reset de um programa selecionado que tem pastas abertas, estas pastas
são automaticamente fechadas.
Da seqüência...
;FOLD RESET OUT
FOR I=1 TO 16
$OUT[I]=FALSE
ENDFOR
;ENDFOLD
ProgExpPHR4.1.7 12.03.06 pt
19 de 212
Programação perito
...são visíveis no painel de operação e com a Fold fechada, apenas as palavras “RESET
OUT”. Esta instrução permite, p.ex., tornar invisível para o utilizador a parte de declaração
e a parte de inicialização.
1.4.1.1 Programa de exemplo
DEF FOLDS()
;FOLD INITIALISATION
;---------- Inicialização ---------
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 ) ;Inicialização de velocidades,
;Acelerações, $BASE, $TOOL, etc.
FOR I=1 TO 16
$OUT[I]=FALSE
ENDFOR
HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
;ENDFOLD
END
ProgExpPHR4.1.7 12.03.06 pt
20 de 212
1 Generalidades acerca dos programas KRL (continuação)
“FOLD” constitui apenas uma instrução para o editor. O compilador interpreta as instru-
ções FOLD como um comentário normal, devido ao ponto e vírgula colocado antes.
ProgExpPHR4.1.7 12.03.06 pt
21 de 212
Programação perito
Modo de Descrição
execução
GO
Todas as instruções são processadas no programa sem STOP, até
ao fim do programa.
ProgExpPHR4.1.7 12.03.06 pt
22 de 212
1 Generalidades acerca dos programas KRL (continuação)
ProgExpPHR4.1.7 12.03.06 pt
23 de 212
Programação perito
Como exemplo temos o ficheiro “ERROR.SRC” que foi elaborado com erros:
Depois de fechar o editor, aparece agora na janela de mensagens uma mensagem de aviso
com o número de erros verificados.
Ao mesmo tempo, os ficheiros em questão são marcados durante este processo com uma
cruz vermelha.
A softkey “Abrir” carrega o ficheiro para o editor, e ao premir a softkey “Lista de dados”, o
ficheiro DAT é aberto com o editor. Se quiser apagar os ficheiros que contêm os erros, prima
“Apagar”. Com “Novo” poderá criar então um ficheiro novo.
ProgExpPHR4.1.7 12.03.06 pt
24 de 212
1 Generalidades acerca dos programas KRL (continuação)
Número de erro
*1
Número da linha e coluna que contêm
o erro
AVISO
*1 Os números de linha indicados correspondem aos números de linha absolutos no
programa, tal como seriam indicados por um editor ASCII normal. A fim de obter
uma correspondência entre os números de linha da indicação de erro e os
números de linha do KCP, teriam de ser abertas todas as pastas e ativadas a vista
de pormenores e a linha DEF. No entanto, esta apresentação é pouco clara, uma
vez que são visualizadas todas as informações, apesar de não serem
necessárias. Mais informações acerca da vista de pormenores e da linha DEF
encontram--se no parágrafo [Ocultar partes de programa].
ProgExpPHR4.1.7 12.03.06 pt
25 de 212
Programação perito
O significado dos números dos erros poderá ser visualizado Online com a ajuda da função
de menu “Display” --> “Variável” --> “Individual”. Para esse efeito, introduza na janela de
estado, no campo de entrada “Nome”, o caráter “&” seguido pelo número de erro que,
nesse caso, é, p.ex, “&2263”, e prima a tecla Enter.
Se carregar agora o ficheiro SRC (neste caso “ERROR.SRC”) para o editor, poderá proce-
der às respetivas correções. Para simplificar, o cursor a piscar é posicionado na primeira
linha que contém erros.Verifique se a visibilidade limitada está desligada e a linha DEF visí-
vel. Mais pormenores encontram--se no parágrafo [Ocultar partes de programa].
No exemplo aqui apresentado, as Folds não precisam de ser abertas. Mas se quiser abri--
las, use a instrução de menu “Editar” --> “FOLD” --> “Abrir todas as FOLD”.
A linha “INT I” que falta no programa inicialmente criado terá de ser inserida antes da
linha “INI”. Isto só é possível quando a linha “DEF ERROR ( )” for visível.
Remover um símbolo
de igualdade
Depois de fechar o editor e de guardar o ficheiro corrigido, poderá premir na lista de erros a soft-
key “Atualizar”. A lista de erros desaparece depois de todos os erros estarem corrigidos.
ProgExpPHR4.1.7 12.03.06 pt
26 de 212
1 Generalidades acerca dos programas KRL (continuação)
1.7 Comentários
Os comentários constituem uma parte integrante muito importante de qualquer programa de
computador. Eles tornam o seu programa mais claro e compreensível também para outros.
A velocidade de processamento do programa não é afetada pelos comentários.
Os comentários poderão ser inseridos em qualquer local do programa. São iniciados sempre
com um ponto e vírgula “;”, p.ex.:
¼
PTP P1 ;Movimento em direção ao ponto de saída
¼
;--- Fazer o reset das saídas ---
FOR I = 1 TO 16
$OUT[I] = FALSE
ENDFOR
¼
ProgExpPHR4.1.7 12.03.06 pt
27 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
28 de 212
2 Variáveis e declarações
2 Variáveis e declarações
2.1 Variáveis e nomes
Além da utilização de constantes, ou seja, de uma indicação direta dos valores na forma de
números, caratéres etc., podem também ser utilizadas em KRL variáveis e outras formas
de dados no programa.
Para a programação de robôs industriais, as variáveis são necessárias, p.ex., para a
integração dos sensores. As variáveis permitem memorizar o valor lido pelo sensor e fazer
a sua avaliação em vários locais do programa. Além disso, podem ser realizadas operações
aritméticas, p.ex., para calcular uma posição nova.
Uma variável é representada no programa por meio de um nome, podendo a designação
do nome ser escolhida livremente, dentro de determinados limites.
Uma vez que todas as variáveis de sistema (ver parágrafo 2.4) começam com o símbolo
’$’, este não deverá ser usado como o primeiro símbolo em nomes definidos por você
próprio.
ProgExpPHR4.1.7 12.03.06 pt
29 de 212
Programação perito
Tempo de vida O tempo de vida de uma variável é o tempo durante o qual é atribuído à variável um espaço
de memória. O tempo de vida depende do fato de a variável estar declarada num ficheiro
SRC ou numa lista de dados.
G Variável declarada num ficheiro SRC
O tempo de vida é limitado ao tempo de execução do programa. Depois de terminada a exe-
cução, a zona de memória é liberta, e, portanto, o valor da variável é perdido.
G Variável declarada numa lista de dados (ver parágrafo Listas de dados)
O tempo de vida não depende do tempo de execução do programa. A variável existe
enquanto existe a lista de dados. Estas variáveis são, portanto, permanentes (até à
ativação/desativação seguinte).
ProgExpPHR4.1.7 12.03.06 pt
30 de 212
2 Variáveis e declarações (continuação)
Inicialização Depois da declaração de uma variável, o valor desta é colocado, primeiramente, em inválido,
caso contrário ia depender da ocupação ocasional da memória. Para poder trabalhar com
a variável, esta terá de ser predefinida com um determinado valor. Esta primeira atribuição
de um valor a uma variável chama--se inicialização.
ProgExpPHR4.1.7 12.03.06 pt
31 de 212
Programação perito
DEF NOME()
END
ProgExpPHR4.1.7 12.03.06 pt
32 de 212
2 Variáveis e declarações (continuação)
INT O tipo de dados constitui uma quantidade parcial da quantidade de números inteiros, porque
nenhum computador é capaz de apresentar a quantidade teoricamente infinita dos números
inteiros. Os 32 bits previstos na KR C... para tipos Integer dão, portanto, 231 números intei-
ros, mais o sinal. O numero 0 conta como numero positivo.
Com
NÚMERO = -23456
é atribuído à variável NÚMERO o valor -23456.
Se atribuir a uma variável INTEGER um valor REAL, o valor é arredondado segundo as
regras gerais (x.0 a x.49 arredondar para baixo, x.5 a x.99 arredondar para cima). Com a
instrução
NÚMERO = 45.78
a variável INTEGER NÚMERO recebe o valor 46.
D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
H 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
Em KRL, poderá atribuir o numero 90 a uma variável Integer de três maneiras diferentes:
ProgExpPHR4.1.7 12.03.06 pt
33 de 212
Programação perito
1 0 1 1 0 1 0
= 1S26+0S25+1S24+1S23+0S22+1S21+0S20= 90
26 25 24 23 22 21 20
Hex ® Dec Para transferir os números do sistema hexadecimal no sistema decimal, proceda da forma
seguinte:
5 A
=5S161+10S160=90
161 160
Ao fazer cálculos com valores reais, é preciso ter em atenção, devido ao numero limitado
de posições de vírgulas deslizantes e da imprecisão inerente, que as habituais leis da álge-
bra não são válidas em todos os casos. Assim, aplica--se, p.ex., na álgebra:
1⋅3 = 1
3
Se estes cálculos forem realizados por um computador, é possível que o resultado apenas
seja 0.99999999 E+00. Uma comparação lógica deste numero com o numero 1 teria o
valor FALSE. Para aplicações práticas na área do robô, esta precisão é, geralmente,
suficiente, tendo em consideração que a realização do teste lógico relativamente à igual-
dade das grandezas reais só faz sentido dentro de uma área de tolerância pequena.
Atribuições admissíveis de variáveis reais são, p.ex.:
NÚMEROREAL1 = -13.653
NÚMEROREAL2 = 10
NÚMEROREAL3 = 34.56 E-12
Se a uma variável REAL for atribuído um valor INTEGER, é realizada uma conversão
automática do tipo em REAL. A variável NÚMEROREAL2 tem, portanto, após a atribuição
acima indicada, o valor 10.0!
BOOL As variáveis booleanas destinam--se à descrição dos estados lógicos (p.ex., entradas/
saídas). Só podem ter os valores TRUE (verdadeiro) e FALSE (falso):
ESTADO1 = TRUE
ESTADO2 = FALSE
ProgExpPHR4.1.7 12.03.06 pt
34 de 212
2 Variáveis e declarações (continuação)
2.2.3 Campos
Por campos entende--se a junção de objetos com o mesmo tipo de dados, de modo a ser
obtido um objeto de dados, podendo os vários componentes de um campo ser ativados por
meio de índices. Através da declaração
DECL INT OTTO[7]
Índex de cam- poderá depositar, p.ex., 7 números Integer diferentes no campo OTTO[]. Poderá aceder a
po cada componente individual do campo, através da indicação do respetivo índex (o primeiro
índex é sempre o 1):
OTTO[1] = 5 ; ao 1º elemento é atribuído o numero 5
OTTO[2] = 10 ; ao 2º elemento é atribuído o numero 10
OTTO[3] = 15 ; ao 3º elemento é atribuído o numero 15
OTTO[4] = 20 ; ao 4º elemento é atribuído o numero 20
OTTO[5] = 25 ; ao 5º elemento é atribuído o numero 25
OTTO[6] = 30 ; ao 6º elemento é atribuído o numero 30
OTTO[7] = 35 ; ao 7º elemento é atribuído o numero 35
Para uma melhor compreensão, imagine o campo com o nome OTTO[] como uma estante
com 7 gavetas. Com as atribuições realizadas, a ocupação das gavetas seria a seguinte:
5 10 15 20 25 30 35
A variável de contagem é, neste caso, a variável Integer I. Ela terá de ser declarada como
Integer antes da aplicação.
ProgExpPHR4.1.7 12.03.06 pt
35 de 212
Programação perito
2--dimens. Além dos campos unidimensionais dos quais acabamos de falar, ou seja, campos com
apenas um índex, poderá também utilizar em KRL campos bi ou tridimensionais. Com
DECL REAL MATRIX[5,4]
é declarado um campo bidimensional 5×4 com 5×4=20 elementos REAL. Para uma
melhor compreensão, imagine este campo como uma matriz com 5 colunas e 4 linhas. Com
a seqüência de programa
I[3] = 0
FOR COLUNA = 1 TO 7
FOR LINHA = 1 TO 3
I[3] = I[3] + 1
MATRIZ[COLUNA,LINHA] = I[3]
ENDFOR
ENDFOR
os elementos da matriz são definidos por um valor que corresponde à seqüência da sua
ocupação. Assim, é obtida a definição seguinte da matriz:
Plano 1
Linha 1
Linha 2
1
Linha 3 5
2 9
6 13
Linha 4 10 17
3
7 14
4 11 18
8 15
12 19
Coluna 1
16
Coluna 2
20
Coluna 3
Coluna 4
Coluna 5
ProgExpPHR4.1.7 12.03.06 pt
36 de 212
2 Variáveis e declarações (continuação)
Plano 3
Plano 2
41
Plano 1 45
42 49
21 46 53
Linha 1 25 50 57
22 29 54
Linha 2 26 33 58
1
5 30 37 55
Linha 3 34 59
2 9
6 13 38 56
Linha 4 10 17 35 60
3
7 14 39
4 11 18 36
8 15 40
12 19
Coluna 1
16
Coluna 2
20
Coluna 3
Coluna 4
Coluna 5
ProgExpPHR4.1.7 12.03.06 pt
37 de 212
Programação perito
A B C D E F G
2.2.5 Estruturas
Quando se pretende combinar vários tipos de dados, o campo não é adequado, e é preciso
STRUC recorrer a uma forma mais geral da composição. Com a instrução de declaração STRUC
podem ser combinados tipos de dados diferentes, que anteriormente foram definidos ou que
são tipos de dados predefinidos, de forma a resultar um tipo de dados compostos novo.
Particularmente também podem ser parte integrante de uma composição outras
composições e outros campos.
Um exemplo típico para a utilização de composições é o tipo de dados padrão POS. Ele é
constituído por 6 valores REAL e 2 valores INT e foi definido no ficheiro $OPERATE.SRC da
forma seguinte:
STRUC POS REAL X, Y, Z, A, B, C, INT S, T
Ponto Se utilizar agora, p.ex., uma variável POSIÇÃO do tipo de dados estruturais POS, poderá
separador definir os elementos individualmente com a ajuda do ponto separador, p.ex.:
POSIÇÃO.X = 34.4
POSIÇÃO.Y = -23.2
POSIÇÃO.Z = 100.0
POSIÇÃO.A = 90
POSIÇÃO.B = 29.5
POSIÇÃO.C = 3.5
POSIÇÃO.S = 2
POSIÇÃO.T = 6
Agregado ou em conjunto, através de um chamado agregado
POSIÇÃO={X 34.4,Y -23.2,Z 100.0,A 90,B 29.5,C 3.5,S 2,T 6}
ProgExpPHR4.1.7 12.03.06 pt
38 de 212
2 Variáveis e declarações (continuação)
Para poder destinguir melhor os tipos de dados das variáveis que você próprio definiu,
é vantajoso iniciar ou terminar os nomes dos novos tipos de dados com ¼TIPO.
ProgExpPHR4.1.7 12.03.06 pt
39 de 212
Programação perito
Através dos componentes E1¼E6 na estrutura E6POS também podem ser ativados os eixos
adicionais.
Tipos de Os tipos AXIS, E6AXIS, POS, E6POS e FRAME chamam--se também tipos de dados
dados geométricos, visto o programador poder utilizá--los para declarar, de modo simples, relações
geométricos geométricas.
ProgExpPHR4.1.7 12.03.06 pt
40 de 212
2 Variáveis e declarações (continuação)
ProgExpPHR4.1.7 12.03.06 pt
41 de 212
Programação perito
2.3.1 Operadores
Por operandos entende--se os operandos matemáticos habituais, ao contrário das funções,
Operando como, p.ex., SIN(30), que proporciona o seno do ângulo de 30_. Assim, na operação 5+7,
o 5 e o 7 são designados os operandos e o + o operador.
Em cada operação, o compilador controla a admissibilidade dos operandos. P.ex., 7 – 3,
como a subtração de dois números Integer, é uma operação admissível, mas 5 + “A”, como
a adição de um valor Integer a um caráter, é uma operação inválida.
Em algumas operações, como 5 + 7.1, portanto, a adição de números Integer a valores
reais, é realizada uma adaptação de tipos, e o valor Integer 5 é transformado no valor real
5.0. Esta problemática ainda será tratada mais pormenorizadamente, quando se falar dos
vários operadores.
Operator Descrição
+ Adição ou sinal positivo
-- Subtração ou sinal negativo
* Multiplicação
/ Divisão
O resultado de uma operação aritmética é INT, apenas no caso de os dois operandos serem
do tipo INTEGER. Se o resultado de uma divisão Integer não for números inteiros, a posição
a seguir à vírgula é cortada. Se pelo menos um dos dois operandos for REAL, também o
resultado é do tipo REAL (ver Tab. 4).
ProgExpPHR4.1.7 12.03.06 pt
42 de 212
2 Variáveis e declarações (continuação)
DEF ARITH()
END
O operador geométrico é simbolizado em KRL por dois pontos “:”, Entre os tipos de dados
FRAME e POS, o operador geométrico realiza uma interligação de frame.
A interligação de dois frames é a transformação habitual de sistemas de coordenadas.
Assim, a interligação de uma estrutura FRAME com uma estrutura POS só tem efeito sobre
o frame dentro da estrutura POS. Os componentes S e T não são afetados pela
transformação e, por isso, também não precisam de estar definidos por um valor. No
entanto, os valores X, Y, Z, A, B e C têm de estar sempre definidos por um valor, tanto com
operandos POS como também com operandos FRAME.
Interligação Uma interligação de frame é avaliada da esquerda para a direita. O resultado tem sempre
de frame o tipo de dados do operando mais à direita (ver Tab. 5).
ProgExpPHR4.1.7 12.03.06 pt
43 de 212
Programação perito
Quando o operando esquerdo apresenta o tipo de dados POS, realiza--se uma adaptação
de tipo. A posição indicada pela estrutura POS é transformada num frame. Isto significa
que o sistema determina o frame da ferramenta em relação a essa posição.
O modo de atuar do operador geométrico é explicado através de um exemplo simples (ver
Fig. 5):
Numa sala encontra--se uma mesa. O sistema de coordenadas ESPAÇO é definido como um
sistema de coordenadas fixo no canto esquerdo anterior da sala.
A mesa encontra--se em paralelo às paredes da sala. O canto esquerdo anterior da mesa
situa--se a uma distância exata de 600 mm da parede da frente e 450 mm da parede do lado
esquerdo da sala. A mesa tem uma altura de 800 mm.
Em cima da mesa encontra--se uma peça quadrangular. O sistema de coordenadas PEÇA
é colocado, como mostrado em Fig. 5, num canto da peça. Para poder manusear mais tarde
a peça convenientemente, o eixo Z do sistema de coordenadas PEÇA aponta para baixo.
Em relação ao eixo Z do sistema de coordenadas MESA, a peça está rodada 40_. A posição
do sistema de coordenadas PEÇA, em relação ao sistema de coordenadas MESA, é: X=80
mm, Y = 110 mm e Z = 55 mm.
Base=Mesa:Peça
ZR
XB
YR YB
ZB
Base
Peça
ZT YT
XT
Mesa
XR
ProgExpPHR4.1.7 12.03.06 pt
44 de 212
2 Variáveis e declarações (continuação)
ProgExpPHR4.1.7 12.03.06 pt
45 de 212
Programação perito
DEF GEOM_OP ( );
ProgExpPHR4.1.7 12.03.06 pt
46 de 212
2 Variáveis e declarações (continuação)
ProgExpPHR4.1.7 12.03.06 pt
47 de 212
Programação perito
Os operandos de uma interligação lógica terão de ser do tipo BOOL, e o resultado também
é sempre do tipo BOOL. Em Tab. 8 são representados os resultados da respetiva interligação
em função do valor dos operandos.
ProgExpPHR4.1.7 12.03.06 pt
48 de 212
2 Variáveis e declarações (continuação)
0 1 0 1 = 5
1 1 0 0 = 12
AND 0 1 0 0 = 4
OR 1 1 0 1 = 13
EXOR 1 0 0 1 = 9
Na inversão dos bits, estes não são simplesmente virados ao contrário. Em vez disso, ao
utilizar B_NOT, é somado ao operando 1 e o sinal é invertido, p.ex.:
B_NOT 10 = -11
B_NOT -10 = 9
Os operadores de bits são utilizados, p.ex., para interligar sinais de entrada/saída digitais
(ver 6.3).
Uma vez que os caratéres ASCII também podem ser ativados através do CÓDIGO ASCII
de números inteiros, o tipo de dados dos operandos poderá ser, além de INT, também
CHAR. O resultado é sempre do tipo INT.
ProgExpPHR4.1.7 12.03.06 pt
49 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
50 de 212
2 Variáveis e declarações (continuação)
Prioridade Operador
1 NOT B_NOT
2 * /
3 + -
4 AND B_AND
5 EXOR B_EXOR
6 OR B_OR
7 == <> < > >= <=
Em princípio é aplicável:
G As expressões entre parênteses são executadas em primeiro lugar.
G Quando se trata de expressões sem parênteses, a avaliação realiza--se pela
ordem da prioridade.
G As interligações com operadores da mesma prioridade são executadas da es-
querda para a direita.
Exemplos:
¼
INT A,B
BOOL E,F
¼
A = 4
B = 7
E = TRUE
F = FALSE
¼
E = NOT E OR F AND NOT (-3 + A * 2 > B) ;E=FALSE
A = 4 + 5 * 3 - B_NOT B / 2 ;A=23
B = 7 B_EXOR 3 B_OR 4 B_EXOR 3 B_AND 5 ;B=5
F = TRUE == (5 >= B) AND NOT F ;F=TRUE
¼
ProgExpPHR4.1.7 12.03.06 pt
51 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
52 de 212
2 Variáveis e declarações (continuação)
II I
X=COS(a)
Y=SIN(a)
a
0
III IV
ProgExpPHR4.1.7 12.03.06 pt
53 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
54 de 212
2 Variáveis e declarações (continuação)
Flags Os 1024 flags $FLAG[1]...$FLAG[1024] são utilizados como marcas globais. Estas variá-
veis booleanas são predefinidas com FALSE. O valor atual dos flags pode ser visualizado,
a qualquer momento, no painel de operação, selecionando a opção “Display”.
Flags cíclicos Além disso, existem na KR C1 32 flags cíclicos
$CYCFLAG[1]...$CYCFLAG[32]. Depois da entrada em funcionamento, todos estão pre-
definidos com FALSE.
Os flags estão ativos ciclicamente apenas a nível de robô. Num ficheiro Submit, os flags cícli-
cos são admissíveis, mas não há uma avaliação cíclica.
Os flags cíclicos também podem ser definidos e ativados em subprogramas, funções e sub-
programas de Interrupt.
$CYCFLAG[1]...$CYCFLAG[32] têm o tipo de dados BOOL. Com uma atribuição a um flag
cíclico, pode ser usada uma expressão booleana qualquer.
São admissíveis
G variáveis de sistema booleanas
G variáveis booleanas que estão declaradas numa lista de dados e inicializadas.
Não são admissíveis
G funções que devolvem um valor booleano.
A instrução
$CYCFLAG[10] = $IN[2] AND $IN[13]
tem por conseqüência, p.ex., que a expressão booleana “$IN[2] AND $IN[13]” é ava-
liada ciclicamente. Isto significa que, logo que a entrada 2 ou a entrada 13 sejam alteradas,
é também alterado $CYCFLAG[10], sendo irrelevante o local onde se encontra o ponteiro
de programa depois da execução da expressão acima indicada.
Todos os flags cíclicos definidos mantêm--se válidos, até que um módulo seja desselecio-
nado ou até ser realizada a seleção de um passo. Ao ser atingido o final do programa, todos
os flags cíclicos continuam ativos.
$ -- caráter De uma maneira geral, os nomes das variáveis predefinidas são escolhidos de modo a que
sejam fáceis de fixar. Começam todos por um caráter $ e depois são constituídos por uma
abreviatura compreensível em inglês. Uma vez que são tratadas como variáveis habituais,
não será necessário decorar instruções pouco habituais ou opções fora do vulgar.
Para evitar enganos, você próprio não deverá declarar variáveis que começam
com um caráter $.
Uma parte das variáveis predefinidas refere--se à unidade de comando KR C... em geral
(p.ex., $ALARM_STOP para a definição da saída para o sinal de parada de emergência
enviado ao PLC). Outras são apenas relevantes para o robô (p.ex., $BASE para o sistema
de coordenadas da base).
ProgExpPHR4.1.7 12.03.06 pt
55 de 212
Programação perito
No painel de operação KUKA aparece a drive de robô na qual se encontram os dados rele-
vantes para a unidade de comando no diretório “Steu” e os dados relevantes para o robô
no diretório “R1”.
Além das listas de dados que são elaboradas durante a programação, na KR C... também
existem listas de dados definidas por KUKA que são fornecidas juntamente com o software
de comando. Estas listas de dados chamam--se listas de dados predefinidas e contêm,
principalmente, as variáveis predefinidas.
As listas de dados predefinidas não podem ser apagadas, nem podem ser elaboradas por
você. São criadas durante a instalação do software e estão sempre disponíveis. Também
os nomes das listas de dados predefinidas começam, tal como os nomes dos dados
predefinidos, com um caráter $.
Na KR C... existem as listas de dados predefinidas seguintes:
G $MACHINE.DAT
é uma lista de dados predefinida que contém, exclusivamente, variáveis de sistema
predefinidas. Com os dados de máquina, a unidade de comando é adaptada ao robô
ligado (ciclos, cinemática, parâmetros de regulação etc.). Um $MACHINE.DAT existe
no sistema de comando, mas também no sistema de robô. Não podem ser elaboradas
variáveis novas, nem apagadas variáveis existentes.
Exemplos:
$ALARM_STOP Sinal para parada de emergência (específico para a unidade de
comando)
$NUM_AX Número dos eixos do robô (específico para o robô)
G $CUSTOM.DAT
é uma lista de dados que só existe no sistema de comando. A lista contém dados que
permitem a projetação ou parametrização de determinadas funções de comando. O
programador tem apenas a possibilidade de alterar os valores das variáveis predefini-
das. Não podem ser elaboradas variáveis novas, nem apagadas variáveis existentes.
Exemplos:
$PSER_1 Parâmetros de controlo do interface série 1
$IBUS_ON Ativação de grupos de Interbus alternativos
ProgExpPHR4.1.7 12.03.06 pt
56 de 212
2 Variáveis e declarações (continuação)
G $CONFIG.DAT
é uma lista de dados predefinida por KUKA, mas que não contém variáveis de sistema
predefinidas. Existe uma $CONFIG.DAT a nível de comando e a nível de robô. Aqui
podem ser definidas variáveis, estruturas, canais e sinais, válidos durante um tempo
prolongado e muito relevantes para vários programas.
A nível de robô a lista de dados está dividida nos blocos seguintes:
-- BAS
-- AUTOEXT
-- GRIPPER
-- PERCEPT
-- SPOT
-- A10
-- A20
-- TOUCHSENSE
-- USER
As declarações globais do utilizador deverão ser introduzidas, no bloco USER. Só aqui
são copiadas as declarações aquando de uma atualização posterior do software.
G $ROBCOR.DAT
O ficheiro $ROBCOR.DAT contém dados específicos para o robô que se destinam ao
modelo dinâmico do robô. Estes dados são necessários para o planeamento da
trajetória. Também aqui não podem ser elaboradas variáveis novas ou apagadas
variáveis existentes.
ProgExpPHR4.1.7 12.03.06 pt
57 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
58 de 212
3 Programação de movimento
3 Programação de movimento
Uma das tarefas mais importantes da unidade de comando de um robô é o movimento do
robô. O programador realiza o comando dos movimentos do robô com a ajuda de instruções
de movimento especiais. Estas formam também a característica principal que distingue as
linguagens do robô das linguagens de programação habituais para computadores, tais como
C ou Pascal.
Instruções de Conforme o tipo de comando, estas instruções de movimento podem ser divididas em
movimento instruções para simples movimentos ponto--a--ponto e instruções para movimentos de
trajetória. Enquanto nos movimentos de trajetória, o efeito final (p.ex., a garra ou a
ferramenta) descreve uma trajetória com uma definição geométrica bem definida (reta ou
círculo), a trajetória dos movimentos ponto--a--ponto depende da cinemática do robô e não
é previsível com precisão. Ambos os tipos de movimento têm em comum que a
programação se realiza, partindo da posição atual para chegar a uma posição nova. Assim,
com uma instrução de movimento, geralmente, só é necessária a indicação da posição de
destino (exceção: movimentos circulares 3.3.4).
As coordenadas das posições podem ser especificadas textualmente, através da introdução
de valores numéricos ou por deslocação do robô e memorização dos valores reais (teach).
Em ambos os casos, existe a possibilidade de referir as indicações a vários sistemas de
coordenadas.
Outras características de movimento, como as velocidades e as acelerações, bem como a
orientação podem ser definidas através de variáveis de sistema. A aproximação a pontos
auxiliares é inicializada por meio de parâmetros opcionais na instrução de movimento. Para
a aproximação terá de ser definido um avanço do computador.
Fig. 8 Sistema de coordenadas específico dos eixos de um robô de braço flexível de 6 eixos
ProgExpPHR4.1.7 12.03.06 pt
59 de 212
Programação perito
As posições específicas dos eixos só podem ser executadas em ligação com passos de
movimento PTP. Se um movimento de trajetória for programado com uma posição de robô
específica do eixo, é provocado um erro.
Transformação Uma vez que o Homem como programador pensa em coordenadas cartesianas, a
de coordenadas programação no sistema de coordenadas específico dos eixos é, geralmente, muito pouco
prática. Por isso, a unidade de comando oferece vários sistemas de coordenadas
cartesianos para a programação, cujas coordenadas são transformadas, automaticamente,
no sistema específico dos eixos (ver Fig. 9), antes da execução do movimento.
X, Y, Z, A, B, C (, S, T)
ProgExpPHR4.1.7 12.03.06 pt
60 de 212
3 Programação de movimento (continuação)
Z
P
Z1
Y1
X1 X
Para poder fazer a deslocação a todos os pontos no espaço, com uma orientação qualquer,
além dos três valores translatóricos são necessárias ainda três indicações rotatóricas.
Os ângulos designados na KR C... com A, B e C descrevem rotações em torno do eixo de
coordenadas Z, Y e X. A ordem das rotações deverá ser mantida:
1. Rotação em torno do eixo Z, descrevendo o ângulo A
2. Rotação em torno do novo eixo Y, descrevendo o ângulo B
3. Rotação em torno do novo eixo X, descrevendo o ângulo C
Esta seqüência de rotação corresponde aos ângulos roll--pitch--yaw (rolar--acenar--guinar)
conhecidos da aviação. O ângulo C corresponde ao rolar, o ângulo B ao acenar e o ângulo
A ao guinar (ver Fig. 11).
ProgExpPHR4.1.7 12.03.06 pt
61 de 212
Programação perito
A B C
Z’ Y’
Z B
A Y ’’
Z ’’
Y X’ Y ’’’
Z ’’’
X
C
X ’’ X ’’’
Com a ajuda das translações X, Y e Z e das rotações A, B e C, poderá ser descrita clara-
mente a orientação de um ponto no espaço. Na KR C... isto é realizado através da estrutura
predefinida FRAME.
ProgExpPHR4.1.7 12.03.06 pt
62 de 212
3 Programação de movimento (continuação)
y
z
SC ferramenta
z x
z y
SC base x
y
SC mundial
z
SC robô
y x
ProgExpPHR4.1.7 12.03.06 pt
63 de 212
Programação perito
X
Z
Depois de uma mudança da ferramenta, o programa original poderá continuar a ser utili-
zado, após ter sido realizada uma medição nova, uma vez que o computador conhece as
coordenadas da ponta da ferramenta.
z
$TOOL
y
z
x
$POS_ACT
y
$BASE x
x
$ROBROOT
z y
$WORLD x
ProgExpPHR4.1.7 12.03.06 pt
64 de 212
3 Programação de movimento (continuação)
ferramenta Na prática industrial, é usado cada vez mais o processo de ancorar a ferramenta (p.ex.,
fixa maçarico de soldadura) fixamente no espaço e levar a peça a passar pela ferramenta fixa,
utilizando para o efeito uma garra adequada.
interpolação Uma vez que a peça e a ferramenta trocaram de posição, mas o movimento em relação à
referente à peça terá de continuar, a interpolação da trajetória de movimento terá de realizar--se agora
garra através do sistema de coordenadas $TOOL. Esta atribuição do tipo de interpolação realiza--
se, implicitamente, quando for utilizado um TCP normal ou externo. A variável de sistema
$IPO_MODE permite definir este tipo de interpolação. A linha de programa
$IPO_MODE = #TCP
permite uma interpolação referente à garra no sistema de coordenadas $TOOL. A posição
atual $POS_ACT é calculada agora em relação a $TOOL (ver Fig. 14). Com
$IPO_MODE = #BASE
é feito o reset do tipo de interpolação para a interpolação referente à base para casos
normais. Esta é também a definição padrão para a entrada em funcionamento da unidade
de comando.
$TOOL y
x
z z
$POS_ACT
z y
x
$BASE
x
$ROBROOT
z y
$WORLD x
ProgExpPHR4.1.7 12.03.06 pt
65 de 212
Programação perito
Uma vez que nos movimentos PTP com coordenadas de destino cartesianas, geralmente
não se sabe qual é o eixo dominante, na maioria dos casos é vantajoso definir a aceleração
e a velocidade com os mesmos valores para todos os eixos.
O movimento sincronizado no tempo minimiza o esforço mecânico do robô, uma vez que
são reduzidos os binários do motor e da engrenagem de todos os eixos com trajetos de movi-
mento mais curtos. O movimento sincronizado na fase leva (adicionalmente) a uma trajetó-
ria de movimento que, independentemente da velocidade programada e da aceleração pro-
gramada, se mantém sempre igual no espaço.
ProgExpPHR4.1.7 12.03.06 pt
66 de 212
3 Programação de movimento (continuação)
ProgExpPHR4.1.7 12.03.06 pt
67 de 212
Programação perito
END
ProgExpPHR4.1.7 12.03.06 pt
68 de 212
3 Programação de movimento (continuação)
A3 = 0_
PTP {A3 45}
A3 = 90_
ProgExpPHR4.1.7 12.03.06 pt
69 de 212
Programação perito
DEF PTP_POS()
PTP {POS:X 1025,Y 0,Z 1480,A 0,B 90,C 0,S ’B 010’,T ’B 000010’}
END
Sistema de No nosso caso, o sistema de coordenadas da base ($BASE) foi igualado ao sistema de coor-
coordenadas denadas mundial ($WORLD) que, regularmente, se encontra na base do robô ($ROBROOT).
O sistema de coordenadas da ferramenta ($TOOL) foi definido com o frame zero ($NULL-
FRAME = {FRAME: X 0, Y 0, Z 0,A 0,B 0,C 0}), o que significa que todas as
indicações se referem ao centro da flange. O centro da ferramenta (Tool Center Point: TCP)
encontra--se, portanto, no centro da flange. Ao montar uma ferramenta, estes valores teriam
de sofrer a respetiva correção. Em relação a esse assunto, remete--se para os documentos
relativos à medição das ferramentas.
Com a instrução PTP acima indicada, o robô desloca--se agora de forma a que no ponto de
destino do movimento o TCP fique deslocado da base do robô, 1025 mm na direção x, 0 mm
na direção y e 1480 mm na direção z. As indicações “A”, “B” e “C” definem a orientação do
TCP. O Status “S” e o Turn “T” definem a posição dos eixos.
Desde que ensaie o exemplo num robô KR6, é obtido o mesmo resultado do exemplo acima
apresentado. O robô desloca--se à posição de zero mecânico. As duas instruções são,
portanto, idênticas para este tipo de robô.
Também na indicação do ponto de destino em coordenadas cartesianas, podem ser omiti-
dos alguns componentes da indicação geométrica. A instrução
PTP {Z 1300, B 180}
proporciona um movimento do TCP na direção do eixo z para a posição absoluta de
1300 mm e um “acenar” do TCP de 180_.
ProgExpPHR4.1.7 12.03.06 pt
70 de 212
3 Programação de movimento (continuação)
ZBASE
YBASE
200
150
100
50
XBASE
50 100 150 200
Além disso, a deslocação da base com a ajuda do operador de dois pontos ainda
tem uma vantagem decisiva em relação a uma definição nova de $BASE:
O deslocamento realiza--se no passo de movimento, enquanto uma definição de
$BASE terá de ser feita, algures, antes do passo de movimento. Assim, também
com uma parada do programa e ativação de passo seguinte, é sempre
selecionado, em qualquer dos casos, a base correta para o movimento.
Uma definição nova múltipla de $BASE, como na seqüência seguinte,
¼
$BASE = $WORLD
¼
PTP POS_1
$BASE = {X 100,Y -200,Z 1000,A 0, B 180,C 45)
PTP POS_2
¼
pelo contrário, iria levar depois da interrupção do passo de movimento POS_2 e da nova
ativação do passo POS_1 a um ponto de destino errado, uma vez que também para o passo
de movimento POS_1 é necessária a base nova. O mesmo acontece também com uma
parada do primeiro passo de movimento, desde que esteja definido o respetivo avanço do
computador.
ProgExpPHR4.1.7 12.03.06 pt
71 de 212
Programação perito
Por essa razão, sempre que possível, $BASE e $TOOL só deverão ser definidos
uma vez, p.ex., na seção de inicialização do programa. Outras deslocações
poderão ser realizadas então com a ajuda do operador geométrico.
Num TouchUp com o pacote básico fornecido normalmente, são guardados na lista de
dados para cada ponto automaticamente $BASE e $TOOL.
No exemplo seguinte, é realizada na segunda instrução PTP uma deslocação das coorde-
nadas do ponto de destino, ou seja, 300 mm na direção X, --100 mm na direção Y e uma
rotação de 90_ em torno do eixo Z.
DEF FR_VERS ( )
ProgExpPHR4.1.7 12.03.06 pt
72 de 212
3 Programação de movimento (continuação)
Status e Turn requerem ambos indicações de Integer que deverão ser realizadas em forma
binária.
Turn A extensão de uma indicação de posição cartesiana pela indicação de Turn permite também
a deslocação a ângulos de eixos maiores que +180_ ou mais pequenos que –180_, sem que
haja a necessidade de uma estratégia de deslocação especial (p.ex., pontos auxiliares).
Com eixos rotatóricos, os vários bits determinam o sinal do valor axial da forma seguinte:
Bit x = 0: ângulo do eixo x ³ 0_
Bit x = 1: ângulo do eixo x < 0_
Assim, a indicação T ’B 10011’ significa que os ângulos dos eixos 1, 2 e 5 são negativos e
os ângulos dos eixos 3, 4 e 6 positivos (todos os bits 0 com valores mais elevados podem
ser omitidos).
Status Com o Status S são resolvidas as ambigüidades da posição dos eixos (ver Fig. 18). Assim,
S depende da respetiva cinemática do robô.
ProgExpPHR4.1.7 12.03.06 pt
73 de 212
Programação perito
Ambigüidades
Eixo 5
Eixo 3
Eixo 2
Eixo 5
Eixo 4 Eixo 6
Para todos os robôs de braço flexível de 6 eixos, os bits são definidos de acordo com a tabela
seguinte:
No sentido figurado, a zona base/acima da cabeça pode ser imaginada de forma cartesiana.
Para esse efeito, são definidos os conceitos seguintes:
Ponto de carpo: Interface dos eixos do manípulo
Sistema de coordenadas A1: Com o eixo 1 em 0_, é idêntico ao sistema de coordenadas
$ROBROOT. Com valores diferentes de a 0_, acompanha o
movimento do eixo 1.
Assim, a zona base/acima da cabeça poderá ser definida da forma seguinte:
G Se o valor x do ponto de carpo, expresso no sistema de coordenadas A1, for positivo,
o robô encontra--se na zona base.
G Se o valor x do ponto de carpo, expresso no sistema de coordenadas A1, for negativo,
o robô encontra--se na zona acima da cabeça.
ProgExpPHR4.1.7 12.03.06 pt
74 de 212
3 Programação de movimento (continuação)
O bit 1 indica a posição do braço. A definição do bit depende do respetivo tipo de robô. Com
robôs cujos eixos 3 e 4 se cruzam, aplica--se: bit 1 tem o valor 0, quando o eixo 3 < 0_, de
resto, o bit 1 é = 1. Com robôs com um offset que se situa entre o eixo 3 e o eixo 4 (p.ex.,
KR 30, ver Fig. 19), a posição angular, na qual o valor do bit 1 é alterado, depende da
dimensão deste offset.
Offset
Em Fig. 20 são representados os efeitos que os bits de Status exercem sobre a configuração
do robô. A deslocação ao mesmo ponto no espaço foi realizada com quatro posições dife-
rentes do robô. Na primeira posição, o robô encontra--se na posição inicial. O eixo 5 tem um
valor de cerca de 45_, o eixo 3 um valor de cerca de 80_.
Em relação à segunda configuração do robô, a diferença praticamente não é perceptível.
Apenas o eixo 4 foi rodado 180_ e os outros eixos fizeram o respetivo acompanhamento.
Enquanto a configuração do braço se manteve igual, foi alterada a configuração do
manípulo: o eixo 5 tem agora cerca de –45_, portanto o bit de Status 2 é 1.
Da posição 2 para a posição 3 é alterada agora a configuração do braço. O eixo 3 roda para
uma posição angular de cerca de –50_, e o bit de Status 1 adota o valor 0.
Na quarta posição, finalmente, o robô encontra--se na posição acima da cabeça. Para
esse efeito foi sobretudo o eixo 1 que realizou uma rotação de 180_. O bit de Status 0
muda para 1.
ProgExpPHR4.1.7 12.03.06 pt
75 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
76 de 212
3 Programação de movimento (continuação)
Ao contrário do que acontece com os movimentos PTP, nos movimentos de trajetória não
são indicadas apenas as posições de arranque e de destino. Adicionalmente, é exigido que
a ponta da ferramenta do robô se movimente sobre uma trajetória linear ou circular entre
estes pontos.
Assim, as velocidades e acelerações a indicar já não se referem apenas aos vários eixos,
mas sim ao movimento do TCP, o que significa que a ponta da ferramenta é movimentada
com uma velocidade que foi definida com precisão. As velocidades e acelerações terão de
ser programadas em relação à translação, ao ângulo de oscilação e ao ângulo de rotação.
Tab. 16 fornece um resumo geral das variáveis de sistema a programar e da sua unidade.
ProgExpPHR4.1.7 12.03.06 pt
77 de 212
Programação perito
3.3.2 Orientação
Caso se pretenda alterar a orientação da ferramenta no espaço durante o movimento de
trajetória, o tipo de orientação pode ser definido com a ajuda da variável de sistema
$ORI_TYPE (ver Fig. 21):
ProgExpPHR4.1.7 12.03.06 pt
78 de 212
3 Programação de movimento (continuação)
Com movimentos circulares, além da orientação constante e variável ainda poderá ser feita
a escolha entre uma orientação referente ao espaço e uma orientação referente à trajetória:
ProgExpPHR4.1.7 12.03.06 pt
79 de 212
Programação perito
variável + Caso se pretenda uma alteração da orientação referente à trajetória entre a posição de
referente à início e a posição de destino ($ORI_TYPE=#VAR), esta é realizada, em relação à tecnologia
trajetória tripla, por uma sobreposição dos movimentos de rotação e oscilação (ver Fig. 23). Por
conseguinte, na tecnologia tripla que acompanha a trajetória, a orientação durante os movi-
mentos circulares é totalmente análoga à que se realiza durante os movimentos lineares.
ProgExpPHR4.1.7 12.03.06 pt
80 de 212
3 Programação de movimento (continuação)
constante + Na orientação ao espaço, esta realiza--se em relação ao sistema base atual ($BASE).
referente ao
espaço A orientação referente ao espaço é vantajosa, sobretudo, em todas as aplicações em que
o ponto fulcral é o movimento de trajetória, ou seja, a orientação da ponta da ferramenta
sobre o trajeto circular. Nomeadamente quando se trata de uma alteração mínima da orien-
tação entre o ponto de início e o ponto de destino ou de aplicações com uma orientação
exata e constante no espaço (ver Fig. 24) durante um movimento circular (p.ex., aplicações
de cola com um bico de colagem simétrico--rotativo).
ProgExpPHR4.1.7 12.03.06 pt
81 de 212
Programação perito
Em Tab. 17 encontra--se uma lista das predefinições das variáveis de sistema em relação
à orientação durante os movimentos de trajetória:
ProgExpPHR4.1.7 12.03.06 pt
82 de 212
3 Programação de movimento (continuação)
Com movimentos lineares, o estado angular do ponto de destino terá de ser igual
ao do ponto de início. Assim, uma indicação de Status e Turn num ponto de
destino do tipo de dados POS é ignorada. Por isso, antes da primeira instrução
LIN, já terá de ter sido programado um movimento PTP com a indicação
completa das coordenadas (p.ex., movimento HOME).
A definição das variáveis de velocidade e aceleração, necessária para os movimentos de
trajetória, bem como a definição dos sistemas de coordenadas da base e da ferramenta
realizam--se no exemplo de programa seguinte novamente através da rotina BAS.SRC.
DEF LIN_BEW ()
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
83 de 212
Programação perito
O valor do ângulo circular não é limitado. Sobretudo, podem ser programados também
círculos completos (> 360_).
CA > 0° CA < 0°
´
Ponto auxiliar
´ Ponto de
destino
programado
CA = 235°
´ Ponto de destino
programado
´
Ponto de
destino real
CA = --235°
Ponto de início Ponto de início
ProgExpPHR4.1.7 12.03.06 pt
84 de 212
3 Programação de movimento (continuação)
DEF CIRC_BEW ( )
$ORI_TYPE=#VAR
LIN {A 100} ; reorientação do TCP
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
85 de 212
Programação perito
Indicador principal
ProgExpPHR4.1.7 12.03.06 pt
86 de 212
3 Programação de movimento (continuação)
Para permitir uma aproximação, terá de ser definido um avanço do computador de pelo
menos 1 (a variável $ADVANCE possui normalmente o valor “3”. Possíveis são, no
máximo, 5 passos de avanço).
Num subprograma Interrupt não é possível qualquer avanço do computador. A unidade
de comando executa os programas Interrupt sempre linha por linha, por isso, não é
possível fazer aproximações em programas Interrupt.
Predefinições de $ADVANCE:
parada As instruções e os dados que exercem uma influência sobre a periferia (p.ex., ins-
automática do
avanço truções de entrada/saída) ou se referem ao estado atual do robô, provocam uma
paragem do avanço (ver Tab. 18). Isto é necessário para garantir a seqüência
temporal correta das instruções e dos movimentos do robô.
ProgExpPHR4.1.7 12.03.06 pt
87 de 212
Programação perito
CONTINUE Nos casos de aplicação, nos quais esta parada do avanço deverá ser impedida, a instrução
CONTINUE terá de ser programada diretamente antes da respetiva instrução. Nesse caso,
a unidade de comando continua o avanço. Mas o efeito é limitado à linha de programa
seguinte (também linha vazia!!).
Se, pelo contrário, quiser parar o avanço num determinado local, sem ter de alterar a
variável de sistema $ADVANCE, poderá recorrer a um pequeno truque: Programe nesse
local simplesmente um tempo de espera de 0 segundos. Nesse caso, a instrução WAIT
provoca uma parada automática do avanço, mas não tem outros efeitos:
WAIT SEC 0
ProgExpPHR4.1.7 12.03.06 pt
88 de 212
3 Programação de movimento (continuação)
Aproximação
Ponto auxiliar
Ponto de destino
Ponto de início
ProgExpPHR4.1.7 12.03.06 pt
89 de 212
Programação perito
A aproximação nunca poderá ser realizada a meio do passo! Nesse caso, o sistema realiza
automaticamente o limite ao meio do passo.
O posicionamento aproximado a um ponto é indicado numa instrução PTP, colocando no
C_PTP fim a palavra chave C_PTP:
PTP PONTO4 C_PTP
Também o passo de aproximação PTP é realizado com uma otimização do tempo. Isto signi-
fica que durante a aproximação há sempre pelo menos um dos eixos que se desloca com
o valor limite programado em relação à aceleração ou à velocidade. Ao mesmo tempo fica
garantido que nenhum dos eixos ultrapassa os binários admissíveis da engrenagem e do
motor. O perfil de andamento mais elevado, ajustado por norma, garante que os movimentos
são executados sem variação da velocidade ou da aceleração.
ProgExpPHR4.1.7 12.03.06 pt
90 de 212
3 Programação de movimento (continuação)
DEF UEBERPTP ( )
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
91 de 212
Programação perito
x=1296,61
y=133,41
x=1246,93
y=--98,86
x=1209,5
y=381,09
x=1159,08
y=--232,06
x=1109,41
y=--0,51
x=988,45
y=238,53
Uma vez que a trajetória de um movimento PTP, geralmente, não é uma reta, nem se situa
num plano espacial, em princípio, também não deveria ser representada como em Fig. 29.
Apesar do fato de o valor z de todos os pontos do exemplo ser igual, nem todos os pontos
da trajetória de movimento se situam no plano z=715 mm. A trajetória representada é,
portanto, apenas uma projeção da trajetória real no plano x--y.
ProgExpPHR4.1.7 12.03.06 pt
92 de 212
3 Programação de movimento (continuação)
Início da apro- Para a determinação do início da aproximação existem três variáveis predefinidas (ver
ximação Tab. 19):
Critério de Às variáveis $APO.CDIS poderá ser atribuída uma distância translatórica. Ao realizar--se
distância o trigger com esta variável, a unidade de comando sai do contorno do passo individual exata-
mente no momento em que a distância ao ponto de destino fica abaixo do valor definido em
$APO.CDIS.
Critério de À variável $APO.CORI poderá ser atribuída uma distância de orientação. Nesse caso, a
orientação saída do contorno do passo individual realiza--se exatamente no momento em que o ângulo
de orientação dominante (oscilação ou rotação do eixo longitudinal da ferramenta) fica
abaixo da distância ao ponto de aproximação programado, definido em $APO.CORI.
Critério de À variável $APO.CVEL poderá ser atribuído um valor percentual. Este valor indica a
velocidade percentagem da velocidade programada ($VEL) em que deverá ser iniciado o processo de
aproximação na fase de frenagem do passo individual. Aqui é avaliado o componente
resultante dos fatores translação, oscilação e rotação que durante o movimento atinge o
valor de velocidade programado ou o que mais se aproxima dele.
ProgExpPHR4.1.7 12.03.06 pt
93 de 212
Programação perito
DEF UEBERLIN ( )
PTP HOME
END
x=1296,61
y=133,41
x=1246,93
y=--98,86
x=1209,5
y=381,09
x=1159,08
y=--232,06
x=1109,41
y=--0,51
x=988,45
y=238,53
ProgExpPHR4.1.7 12.03.06 pt
94 de 212
3 Programação de movimento (continuação)
ProgExpPHR4.1.7 12.03.06 pt
95 de 212
Programação perito
Também a aproximação CIRC--CIRC deverá ser tornada mais explícita, com a ajuda de um
exemplo e da trajetória de movimento representada (ver Fig. 31):
ProgExpPHR4.1.7 12.03.06 pt
96 de 212
3 Programação de movimento (continuação)
PTP HOME
END
x=980
y=--238
150_
x=867
y=--192
ProgExpPHR4.1.7 12.03.06 pt
97 de 212
Programação perito
Aproximação
LIN--CIRC
Final de aproximação
Início de aproximação
ProgExpPHR4.1.7 12.03.06 pt
98 de 212
3 Programação de movimento (continuação)
A trajetória exata de um movimento PTP não pode ser definida antecipadamente, uma vez
que o robô usa o caminho que ele acha mais rápido. A trajetória sofre alguma influência por
vários fatores (como, por exemplo, a velocidade de deslocação).
P3
Programa:
CP--PTP
...
LIN P1
LIN P2 C_DIS
PTP P3 P1 P2
...
Aqui surge o problema de o movimento de
aproximação não ser previsível. Seria possí-
vel uma colisão com a mesa.
Mesa
ProgExpPHR4.1.7 12.03.06 pt
99 de 212
Programação perito
A aproximação CP--PTP, no entanto, só poderá ser garantida, desde que nenhum dos
eixos do robô rode mais que 180_ no passo de trajetória e que o Status S não mude, uma
vez que estas mudanças de posição não são previsíveis aquando do planeamento do
contorno da aproximação. Caso surja uma alteração da configuração no passo de
trajetória antes da aproximação (alteração de S ou T), o passo de trajetória é executado
como um passo individual, até ao ponto de destino programado, sendo emitida a
mensagem de erro confirmável “Aproximação CP/PTP não realizável”. Nesse caso, o
utilizador deverá dividir o passo CP em vários passos individuais, de modo a que o passo
individual antes da aproximação CP--PTP seja suficientemente curto para poder excluir
uma alteração de S ou T em todos os eixos do robô.
No exemplo seguinte foi programada uma aproximação PTP--LIN, uma aproximação LIN--
CIRC e uma aproximação CIRC--PTP (ver Fig. 33):
ProgExpPHR4.1.7 12.03.06 pt
100 de 212
3 Programação de movimento (continuação)
DEF UEBERB_P ( )
$APO.CDIS=25
LIN {X 1183.15,Y -52.64,Z 716,A 79.11,B 68.13,C 79.73} C_DIS
CIRC {POS: X 1134,Y 53.63,Z 716},{X 1019.21,Y 124.02,Z 716,A
79.11,B 68.12,C 79.73}
PTP HOME
END
x=1209,74
y=--153,44
x=1183,15
y=--52,64
x=1108,78 x=1134
y=267,16 y=53,63
HP
x=1087,47
y=218,67
HP
x=1037,81
x=1019,31 x=1019,21 y=--117,83
y=306,71 y=124,02
ProgExpPHR4.1.7 12.03.06 pt
101 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
102 de 212
3 Programação de movimento (continuação)
Exemplo
Neste exemplo pretende--se substituir, no início do movimento de aproximação de P1
para P2, a ferramenta TOOL_DATA1[1] pela ferramenta TOOL_DATA[2].
$TOOL=TOOL_DATA[1]
PTP P0_TOOL1; O ponto é programado com a ferramenta TOOL_DATA[1]
LIN P1_TOOL1 C_DIS; O ponto é programado com a ferramenta TOOL_DATA[1]
$TOOL=TOOL_DATA[2]
LIN P2_TOOL2; O ponto é programado com a ferramenta TOOL_DATA[2]
TOOL2
Flange
TOOL1 TOOL1
Início de aproximação1
P2_TOOL2
P0_TOOL1 P1_TOOL1
TOOL2
Fim de aproximação 2
P1_TOOL2
P0_TOOL2
Início de aproximação2
ProgExpPHR4.1.7 12.03.06 pt
103 de 212
Programação perito
A KR C... permite ainda uma outra variante de programação: Programe uma instrução de
movimento com uma variável que NÃO é declarada na seção de declaração, p.ex.:
PTP PONTO_INÍCIO
Depois de ter premido as softkeys “Modif” e “Var”, surge o pedido de escolher a estrutura
desejada. Depois de ter feito isso, é declarada na respetiva lista de dados automatica-
mente uma variável PONTO_INÍCIO que é definida pelas coordenadas reais atuais, em
relação ao $BASE atual, p.ex.:
DECL FRAME PONTO_INÍCIO={X 15.2,Y 2.46,Z 20.5,A -35.5,B 9.0,C 16.87}
Caso não tenha sido criada a lista de dados, é emitida a respetiva mensagem de erro.
Desde que tenha sido criada uma instrução de movimento através dos formulários inline,
os pontos programados com a ajuda dos formulários poderão também ser usados mais
tarde numa instrução de movimento KRL.
Estes pontos são depositados na respetiva lista de dados com o nome indicado no formu-
lário e com um X no início (por isso, os nomes dos pontos nos formulários inline admitem,
no máximo, 11 em vez de 12 caratéres).
O ponto P7 no formulário inline
poderá ser ativado mais tarde como XP7 numa instrução KRL:
LIN XP7
Também aqui é preciso ter em atenção que em ambos os casos tem de ser utilizado o
mesmo sistema de coordenadas da base, para que a deslocação se realize ao mesmo
ponto!!
ProgExpPHR4.1.7 12.03.06 pt
104 de 212
3 Programação de movimento (continuação)
Como alternativa, é o próprio usuário que pode definir em quanto o torque nominal pode di-
vergir do torque real. Em caso de ultrapassagem, o robô é parado.
Exemplo
No formulário inline foram definidos para os eixos A1...A6 sempre 50%. Se o torque real
divergir agora em mais de ¦50% do torque máximo do torque nominal calculado, o robô é
parado sendo emitida na janela de mensagens a respetiva mensagem.
MMax
+50% de MMax
Manga de supervisionamento
--50% de MMax
Torque nominal
0
ProgExpPHR4.1.7 12.03.06 pt
105 de 212
Programação perito
4 Assistente KRL
Os pacotes tecnológicos da KUKA incluem as funções mais importantes para uma utilização
habitual dos robôs. As funções especiais que não estão incluídas nos pacotes de tecnologia
KUKA poderão ser realizadas pelo usuário, através da programação direta do sistema de
robô, em “KRL”, ou seja, na “KUKA Robot Language”.
Para facilitar a programação efetiva de funções especiais também aos utilizadores que não
usam esta linguagem de programação com freqüência, foi integrado o “Assistente KRL”.
O “Assistente KRL” oferece ao seu utilizador uma programação apoiada na sintaxe. Depois
de ter selecionado o comando KRL pretendida, são emitidas indicações em máscaras que
acompanham esse comando. Os conteúdos dessas máscaras podem ser aceites ou
alterados. Todos os conteúdos poderão ser alterados novamente, num momento posterior.
Operação
ProgExpPHR4.1.7 12.03.06 pt
106 de 212
4 Assistente KRL (continuação)
O caráter “!” é um símbolo de espaço. Com a ajuda deste caráter é possível elaborar um
programa de movimento, sem conhecer a posição exata dos pontos que futuramente irão
determinar o trajeto do robô.
Ao ser executado mais tarde, o programa é parado nesse local, e você poderá incluir o ponto,
como descrito a seguir:
Aí pressione a softkey “Touch Up”. Veja a informação que se encontra agora na janela
de mensagens.
Na janela de mensagens aparece a confirmação da memorização da posição.
TPEXPERT posição actual “{POS: X 1620, YO, Z 1910, A 0, B 90, C 0, S 2, T 2}” foi introduzida
Em vez do símbolo de espaço, também poderá ser introduzido o nome válido de uma
variável. Uma lista das palavras chave reservadas para KRL, as quais, portanto, não
poderão ser utilizadas, encontram--se no [KRL Reference Guide].
O sistema de robô deverá ser colocado na posição pretendida, antes de ser programada
essa função.
Se o sistema ainda não conhecer o nome que você introduziu, aparece na linha de softkeys
a softkey “VAR”. Através desta softkey será formulado o pedido de atribuir ao nome um
formato de dados.
Depois de ter pressionado essa softkey é alterada a linha de softkeys:
ProgExpPHR4.1.7 12.03.06 pt
107 de 212
Programação perito
A barra de softkeys está disponível apenas quando além do ficheiro “SRC” existir também
uma lista de dados “DAT”.
Depois de pressionar uma das softkeys “E6POS”, “POS”, “FRAME”, “E6AXIS” ou “AXIS”,
é memorizada a posição atual do sistema de robô no formato de dados selecionado. Esta
memorização é confirmada por uma informação na janela de mensagens.
Antes de poder memorizar posições num programa por meio de “Touch Up”, a unidade de
comando terá de receber os dados relativos à posição válida do sistema de coordenadas
de robô e os dados válidos em relação à ferramenta/peça.
Para esse efeito, é necessário passar a seqüência INI na cabeça do programa.
O sistema de robô deverá ser colocado na posição pretendida, antes de ser programada
essa função.
TPEXPERT posição actual “{POS: X 1620, YO, Z 1910, A 0, B 90, C 0, S 2, T 2}” foi introduzida
Esta mensagem poderá ser novamente apagada através da softkey “Confirmar”.
Depois de abrir o formulário inline, pressione a softkey “{ ? }”. A definição da linha de softkeys
é alterada:
ProgExpPHR4.1.7 12.03.06 pt
108 de 212
4 Assistente KRL (continuação)
Com a ajuda das funções de edição, as indicações referentes às posições poderão ser agora
alteradas, de acordo com aquilo que se pretende.
Com a ajuda do operador geométrico “:”, são interligadas as indicações de posição dos tipos
POS e FRAME. Este procedimento é necessário sempre que, p.ex., a origem de um sistema
de coordenadas tenha de ser deslocada um valor de correção.
ProgExpPHR4.1.7 12.03.06 pt
109 de 212
Programação perito
Ao utilizar esso comando, não é possível prever com precisão o trajeto exato percor-
rido pelo robô. Por isso, nas proximidades de obstáculos existentes dentro do espaço
de trabalho, subsiste o perigo de colisão. Nas proximidades de obstáculos, o compor-
tamento de movimento do robô terá de ser ensaiado com uma velocidade reduzida!
Expressões geométricas
para a indicação da posição,
cartesiano
Expressões geométricas
para a indicação da posição,
referentes ao eixo
Voltar
ProgExpPHR4.1.7 12.03.06 pt
110 de 212
4 Assistente KRL (continuação)
Voltar
Expressões geométricas
para a indicação da posição,
cartesiano
Expressões geométricas
para a indicação da posição,
referentes ao eixo
Voltar
ProgExpPHR4.1.7 12.03.06 pt
111 de 212
Programação perito
Voltar
ProgExpPHR4.1.7 12.03.06 pt
112 de 212
4 Assistente KRL (continuação)
Voltar
Aproximação entre PTP e
LIN ou instruções CIRC. Cri-
térios: distância (DIS), velo-
cidade (VEL), e orientação
ferramenta/peça (ORI)
ProgExpPHR4.1.7 12.03.06 pt
113 de 212
Programação perito
Voltar
ProgExpPHR4.1.7 12.03.06 pt
114 de 212
4 Assistente KRL (continuação)
Voltar
ProgExpPHR4.1.7 12.03.06 pt
115 de 212
Programação perito
o ponteiro de programa salta para a posição MARCA. A posição também terá de ser definida
com
MARCA:
algures no programa. A instrução de salto propriamente dita não permite conclusões acerca
da estrutura de programa criada desta forma. Por isso, o nome da marca de salto deverá
ser escolhido de forma a que a ação de salto provocada se torne mais compreensível. P.ex.,
há uma diferença entre
GOTO MARCA_1
ou
GOTO STOP_COLA
Uma vez que a instrução GOTO pode dar origem, rapidamente, a programas não
estruturados e confusos, e visto cada instrução GOTO poder ser substituída por
uma instrução de loop, o GOTO deverá ser utilizado o menos possível.
ProgExpPHR4.1.7 12.03.06 pt
116 de 212
5 Controle de execução do programa (continuação)
ProgExpPHR4.1.7 12.03.06 pt
117 de 212
Programação perito
5.1.3 Distribuidor
Quando há mais que 2 alternativas, estas podem ser programadas através de uma
construção IF empilhada ou – bastante mais simples – através do distribuidor SWITCH.
SWITCH A instrução SWITCH é uma instrução de seleção para vários ramos de programa. Um critério
de seleção é definido por um determinado valor, antes da instrução SWITCH. Se este valor
Identificação corresponder a uma identificação de bloco, é executado o respetivo ramo de programa e
de bloco o programa salta para a instrução ENDSWITCH, sem considerar as identificações de bloco
seguintes. Se nenhuma identificação de bloco corresponder ao critério de seleção, é execu-
tado um bloco DEFAULT, caso exista. Caso contrário, continua--se com a instrução a seguir
à instrução ENDSWITCH.
É permitido atribuir a um ramo de programa várias identificações de bloco. Ao contrário, não
faz sentido utilizar uma identificação de bloco várias vezes, uma vez que é sempre conside-
rado apenas o primeiro ramo de programa que tem a respetiva identificação.
Os tipos de dados admissíveis do critério de seleção são INT, CHAR e ENUM. O tipo de
dados do critério de dados terá de corresponder ao da identificação de bloco.
A instrução DEFAULT pode faltar, mas numa instrução SWITCH poderá ser incluída apenas
uma vez.
Com a instrução SWITCH poderão ser ativados, p.ex., vários subprogramas, em função de
um número de programa. O número de programa poderá ser enviado, p.ex., pelo PLC às
entradas digitais da KR C... (ver parágrafo 6.3 acerca da instrução SIGNAL). Assim, este
encontra--se à disposição como critério de seleção, na forma de um valor Integer.
DEF MAIN()
¼
SIGNAL PROG_NR $IN[1] TO $IN[4]
;Na variável INT Nº_PROG o PLC introduz agora
;o número de programa pretendido
¼
SWITCH PROG_NR
CASE 1 ;se Nº_PROG=1
PARTE_1()
CASE 2 ;se Nº_PROG=2
PARTE_2()
PARTE_2A()
CASE 3,4,5 ;se Nº_PROG=3, 4 ou 5
$OUT[3]=TRUE
PARTE_345()
DEFAULT ;se Nº_PROG<>1,2,3,4 ou 5
ERROR_UP()
ENDSWITCH
¼
END
O programa CELL possui uma estrutura semelhante (CELL.SRC) que normalmente existe
na unidade de programa.
ProgExpPHR4.1.7 12.03.06 pt
118 de 212
5 Controle de execução do programa (continuação)
5.2 Loops
A estrutura base seguinte para o controle de execução do programa são os loops, que
contêm a execução repetida e uma ou várias instruções, até surgir uma determinada
condição. Os loops distinguem--se através da forma da condição e da posição da interro-
gação relativamente à continuação.
ProgExpPHR4.1.7 12.03.06 pt
119 de 212
Programação perito
DEF FOR_PROG()
¼
INT I,J
INT CAMPO[10,6]
¼
FOR I=1 TO 6
$VEL_AXIS[I] = 100 ;todas as velocidades dos eixos em 100%
ENDFOR
¼
FOR I=1 TO 9 STEP 2
FOR J=6 TO 1 STEP -1
CAMPO[I,J] = I*2 + J*J
CAMPO[I+1,J] = I*2 + I*J
ENDFOR
ENDFOR
;I tem agora o valor 11, J o valor 0
¼
END
Index I =
1 2 3 4 5 6 7 8 9 10
6 38 8 42 24 46 40 50 56 54 72
5 27 7 31 21 35 35 39 49 43 63
4 18 6 22 18 26 30 30 42 34 54
J =
3 11 5 15 15 19 25 23 35 27 45
2 6 4 10 12 14 20 18 28 22 36
1 3 3 7 9 11 15 15 21 19 27
ProgExpPHR4.1.7 12.03.06 pt
120 de 212
5 Controle de execução do programa (continuação)
A condição de execução é uma expressão lógica que poderá ser uma variável
booleana, uma ativação de função booleana ou uma combinação lógica com um resultado
booleano.
O bloco de instruções é executado, desde que a condição lógica tenha o valor TRUE, ou seja,
desde que a condição de execução esteja cumprida. Quando a condição lógica tem o valor
FALSE, o programa continua com a instrução que se segue a ENDWHILE. Por isso, cada
instrução WHILE terá de ser terminada com uma instrução ENDWHILE.
DEF WHILE_PR()
¼
INT X,W
¼
WHILE $IN[4] == TRUE ;percorrido enquanto estiver ativada a
entrada 4
PTP PALETTE
$OUT[2] = TRUE
PTP POS_2
$OUT[2] = FALSE
PTP HOME
ENDWHILE
¼
X = 1
W = 1
WHILE W < 5; ;percorrido enquanto W é mais pequeno que 5
X = X * W
W = W + 1
ENDWHILE
;W é agora 5
¼ ;X é agora 1S2S3S4 = 24
W = 100
WHILE W < 100 ;loop não é percorrido, W mantém-se em 100
$OUT[15] = TRUE
W = W + 1
ENDWHILE
¼ ;loop não é percorrido, W mantém-se em 100
END
ProgExpPHR4.1.7 12.03.06 pt
121 de 212
Programação perito
REPEAT
instruções
UNTIL condição de cancelamento
DEF REPEAT_P()
¼
INT W
¼
REPEAT
PTP PALETTE
$OUT[2]=TRUE
PTP POS_2
$OUT[2]=FALSE
PTP HOME
UNTIL $IN[4] == TRUE ;percorrido até ser ativada a entrada 4
¼
X = 1
W = 1
REPEAT
X = X * W
W = W + 1
UNTIL W == 4 ;percorrido até W se tornar igual a 4
;W é agora 4
¼ ;X é agora 1S2S3S4 = 24
W = 100
REPEAT
$OUT[15] = TRUE
W = W + 1
UNTIL W > 100 ;percorrido até W ser maior que 100
¼ ;percorrido pelo menos 1 vez, isto é,
;W é agora 101, a saída 15 está ativada
END
ProgExpPHR4.1.7 12.03.06 pt
122 de 212
5 Controle de execução do programa (continuação)
WHILE e REPEAT são ferramentas muito poderosas que permitem uma programação
estruturada, com a ajuda das quais poderá ser substituída a maioria das instruções GOTO.
A seqüência de instruções
¼
X = 0
G = 0
MARCA:
X = X + G
G = G + 1
IF G > 100 THEN
GOTO PRONTO
ENDIF
GOTO MARCA:
PRONTO:
¼
poderá ser realizada com bastante menos complicações através de REPEAT:
¼
X = 0
G = 0
REPEAT
X = X + G
G = G + 1
UNTIL G > 100
¼
ProgExpPHR4.1.7 12.03.06 pt
123 de 212
Programação perito
LOOP
instruções
ENDLOOP
DEF EXIT_PRO()
PTP HOME
LOOP ;Início do loop infinito
PTP POS_1
LIN POS_2
IF $IN[1] == TRUE THEN
EXIT ;Cancelamento, quando for ativada a
entrada 1
ENDIF
CIRC HELP_1,POS_3
PTP POS_4
ENDLOOP ;Fim do loop infinito
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
124 de 212
5 Controle de execução do programa (continuação)
a execução do programa poderá ser parada, até surgir o acontecimento especificado com
condição:
G Se a expressão lógica condição já estiver TRUE durante a ativação de WAIT, a execu-
ção do programa não é parada (mesmo assim, é provocada uma paragem do avanço).
G Se a condição for FALSE, a execução do programa é parada, até a expressão tomar
o valor TRUE.
A condição WAIT FOR pode ser aplicada às variáveis $IN[], $OUT[], $CYCFLAG[], $TI-
MER[], $TIMER_FLAG[], $FLAG[] e I[].
Valores numéricos
A cada variável é atribuído um número.
ProgExpPHR4.1.7 12.03.06 pt
125 de 212
Programação perito
Valores variáveis
Em vez de um número é transmitida uma variável. Para isso é necessário que a variável
esteja declarada na lista de dados (*.dat). Uma declaração no ficheiro de fonte (*.src) deter-
mina o valor da variável.
Nos modos de teste “T1” e “T2” é emitida uma mensagem de aviso se a variável local a
transmitir não estiver declarada na lista de dados.
A mensagem ”Processo ativo” é exibida quando uma das variáveis não está declarada na
lista de dados.
ProgExpPHR4.1.7 12.03.06 pt
126 de 212
5 Controle de execução do programa (continuação)
Textos longos
Se a uma das variáveis estiver atribuído um texto longo, não é exibido o índex numérico.
Declarações de sinal
Numa declaração de sinal constituída por várias entradas e saídas é emitido somente o
nome do sinal. No exemplo são definidos os sinais “EIN_NAME $IN[7] TO $IN[17]” e
“AUS_NAME $OUT[7] TO $OUT[17]”.
Tempo é uma expressão REAL aritmética, através da qual é indicado o número de segundos,
durante os quais a execução do programa deverá ser interrompida. Se o valor for negativo,
a espera não se realiza.
Exemplos:
WAIT SEC 17.542
WAIT SEC TEMPO*4+1
ProgExpPHR4.1.7 12.03.06 pt
127 de 212
Programação perito
STOP
ProgExpPHR4.1.7 12.03.06 pt
128 de 212
5 Controle de execução do programa (continuação)
CONFIRM V_número
poderá confirmar as mensagens, guiado pelo programa. Depois de uma confirmação bem
sucedida, a mensagem especificada com o número de gestão V_número deixou de existir.
Depois de anular o sinal Stop, é sempre emitida, p.ex., uma mensagem de confirmação.
Antes de continuar, esta terá de ser confirmada. O seguinte subprograma detecta e confirma
esta mensagem automaticamente, desde que tenha sido selecionado o modo de serviço
correto (não pode ser modo manual) e o estado Stop tenha sido realmente anulado (uma
vez que um programa de robô não pode arrancar enquanto há uma mensagem de
confirmação, o subprograma terá de decorrer num ficheiro Submit):
DEF AUTO_QUIT()
INT M
DECL STOPMESS MLD ;tipo de estrutura predefinido para mensa-
gens de erro
IF $STOPMESS AND $EXT THEN ;verificar mensagem de stop e
modo de serviço
M=MBX_REC($STOPMB_ID,MLD) ;ler estado atual em MLD
IF M==0 THEN ;verificar se a confirmação é permitida
IF ((MLD.GRO==2) AND (MLD.STATE==1)) THEN
CONFIRM MLD.CONFNO ;confirmação desta mensagem
ENDIF
ENDIF
ENDIF
END
ProgExpPHR4.1.7 12.03.06 pt
129 de 212
Programação perito
6 Instruções de entrada/saída
6.1 Generalidades
A KR C... conhece 1026 entradas e 1024 saídas. No armário de comando padrão KUKA,
o utilizador tem à sua disposição na ficha X11 (módulo MFC) as entradas e saídas seguintes:
Entradas 1 ¼16
Saídas 1 ¼16 (carga máx. 100 mA; 100% de simultaneidade)
Saídas 17 ¼20 (carga máx. 2 A; 100% de simultaneidade)
Opcionalmente, poderão ser projetadas ainda mais entradas/saídas, p.ex., através de um
bus de campo.
As entradas podem ser lidas e as saídas podem ser lidas e escritas. São ativadas através
das variáveis de sistema $IN[Nr] ou $OUT[Nr]. As saídas não utilizadas podem ser
usadas como marcas.
As entradas/saídas do módulo MFC podem ser desviadas no ficheiro “IOSYS.INI” para
outras áreas.
ProgExpPHR4.1.7 12.03.06 pt
130 de 212
6 Instruções de entrada/saída (continuação)
As entradas e saídas de sistema também podem ser ativadas com $IN e $OUT. As saídas
de sistema estão protegidas contra a escrita.
A entrada 1025 é sempre TRUE, a entrada 1026 é sempre FALSE. Estas entradas são utili-
zadas nos dados de máquina, p.ex., como variáveis “Dummy”. É admissível uma utiliza-
ção múltipla.
ProgExpPHR4.1.7 12.03.06 pt
131 de 212
Programação perito
DEF BINSIG ( )
;--------- Seção de declaração ---------
EXT BAS (BAS_COMMAND:IN,REAL:IN )
DECL AXIS HOME
SINAL CANCELAMENTO $IN[16]
SINAL ESQUERDA $OUT[13]
SINAL CENTRO $OUT[14]
SINAL DIREITA $OUT[15]
;---------- Inicialização ---------
BAS (#INITMOV,0 ) ;inicialização de velocidades,
;acelerações, $BASE, $TOOL, etc.
HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0}
ProgExpPHR4.1.7 12.03.06 pt
132 de 212
6 Instruções de entrada/saída (continuação)
$OUT[Nr]
$IN [Nr] AND NOT $OUT[Nr]
TRUE FALSE
TRUE FALSE TRUE
$IN[Nr]
FALSE FALSE FALSE
ProgExpPHR4.1.7 12.03.06 pt
133 de 212
Programação perito
Ao juntar, desta forma, as saídas 13 a 15 do exemplo 6.1, de modo a resultar uma variável
POSITION, temos o seguinte programa modificado:
ProgExpPHR4.1.7 12.03.06 pt
134 de 212
6 Instruções de entrada/saída (continuação)
DEF BINSIG_D ( )
ENDWHILE
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
135 de 212
Programação perito
Normalmente, podem ser utilizadas as saídas 1 ... 1024. Tendo sido ativada a variável
“$SET_IO_SIZE” estão disponíveis 2048 ou 4096 saídas.
Ao contrário de “$OUT[x]”, uma instrução “$OUT_C[x]” não produz qualquer efeito sobre o
avanço inicial do computador.
$OUT_C[x] só pode ser escrito, para a leitura de uma saída deve ser utilizado “$OUT[x]”.
ProgExpPHR4.1.7 12.03.06 pt
136 de 212
6 Instruções de entrada/saída (continuação)
PTP P1
$OUT_C[10]=TRUE
$OUT_C[11]=FALSE
$OUT_C[12]=TRUE
LIN P2
Se no ponto “P1” se verificar uma parada exata, são ativadas, nesse momento, as saídas
10 ... 12, de acordo com as suas definições.
Se, ao contrário, a deslocação ao ponto “P1” se realizar com aproximação, as saídas 10 ...
12 são ativadas apenas quando for atingido o centro da área de aproximação. Se a
aproximação não for possível, são ativadas as saídas no ponto “P1”.
$OUT_C[x]:
PTP P1 C_PTP
$OUT_C[5]=TRUE
PTP P2
Trigger:
TRIGGER WHEN DISTANCE=1 DELAY=0 DO $OUT[5]=TRUE
PTP P1 C_PTP
PTP P2
Em ambos os casos é ativada a saída 5, logo que seja atingido o centro da área de aproxima-
ção de “P1”.
PTP P1
WAIT FOR $IN[22]==TRUE
$OUT_C[12]=FALSE
PTP P2
ProgExpPHR4.1.7 12.03.06 pt
137 de 212
Programação perito
Sinal
Uma saída também pode ser ativada através de uma declaração de sinal de 1 bit.
PTP P1
Test = TRUE
PTP P2
No exemplo, a saída 7 é definida com “TRUE”, logo que o ponteiro de avanço principal tenha
atingido o passo de movimento “P1”.
ProgExpPHR4.1.7 12.03.06 pt
138 de 212
6 Instruções de entrada/saída (continuação)
ProgExpPHR4.1.7 12.03.06 pt
139 de 212
Programação perito
DEF PULSIG ( )
FOR I=1 TO 16
$OUT[I]=FALSE ;colocar todas as saídas em LOW
ENDFOR
FOR I=1 TO 4
PULSE ($OUT[I],TRUE,1) ;sucessivamente as saídas 1-4
WAIT SEC 1 ;durante 1s em High
ENDFOR
PTP HOME
CONTINUE ;impedir paragem do avanço para
;a saída 15
PULSE ($OUT[15],TRUE,3) ;impulso vem diretamente (em avanço)
;na saída 15
PULSE ($OUT[16],TRUE,3) ;impulso só vem depois do movimento
END ;HOME e continua depois de END
ProgExpPHR4.1.7 12.03.06 pt
140 de 212
6 Instruções de entrada/saída (continuação)
ProgExpPHR4.1.7 12.03.06 pt
141 de 212
Programação perito
Os parâmetros opcionais “Mínimo” e “Máximo” não estão disponíveis nos formulários in-
line, uma vez que estes são utilizados, exclusivamente, para a tecnologia “Colar”.
ProgExpPHR4.1.7 12.03.06 pt
142 de 212
6 Instruções de entrada/saída (continuação)
Neste exemplo foi definido tanto um valor mínimo como um valor máximo. As respetivas
entradas são “MÍNIMO=0.3” e “MÁXIMO=0.95”.
10 000
Máximo
8 000
Tensão analógica [mV]
UArame [mV]
6 000
4 000
Mínimo
2 000
UPadrão [mV]
ProgExpPHR4.1.7 12.03.06 pt
143 de 212
Programação perito
É preciso ter em atenção que apenas 3 instruções ANIN ON podem estar ativas em simul-
tâneo. É permitido usar nas duas instruções o mesmo interface analógico ou declarar a
mesma variável.
A sintaxe completa para a leitura cíclica de uma entrada analógica é:
ANIN ON ANIN ON valor = fator * nome de sinal á± offsetñ
ProgExpPHR4.1.7 12.03.06 pt
144 de 212
6 Instruções de entrada/saída (continuação)
No exemplo seguinte são ilustradas as instruções para a entrada e saída analógica. Com
a ajuda da variável de sistema $TECHIN[1] e de um sensor de seguimento da trajetória
ligado a uma entrada analógica, poderá ser realizada, p.ex., uma correção da trajetória
durante o movimento. A variável $VEL_ACT que contém sempre a velocidade de trajetória
atual, pode ser utilizada para uma saída analógica proporcional à velocidade, desde que
sejam também considerados os respetivos fatores, p.ex., para o controle da quantidade de
cola aplicada.
DEF ANSIG ( )
FOR I=1 TO 16
$ANOUT[I]=0 ;ativar todas as saídas com 0V
ENDFOR
LIN POS2
CIRC HILFSPOS,POS3
ANOUT OFF COLA
ANIN OFF CORREÇÃO
PTP POS4
ENDIF
PTP HOME
END
ProgExpPHR4.1.7 12.03.06 pt
145 de 212
Programação perito
Enquanto várias entradas digitais podem usar a mesma entrada, os sinais Strobe NÃO
podem descrever a mesma saída.
ProgExpPHR4.1.7 12.03.06 pt
146 de 212
6 Instruções de entrada/saída (continuação)
ProgExpPHR4.1.7 12.03.06 pt
147 de 212
Programação perito
7 Subprogramas e funções
Para reduzir o trabalho de escrita, quando se trata de seções de programa idênticas que se
repetem com freqüência, e também para reduzir a extensão do programa, foram introduzi-
dos subprogramas e funções como construções de linguagem.
O efeito dos subprogramas e das funções que se faz sentir em programas mais extensos
é considerável, uma vez que proporcionam a possibilidade de utilizar os algoritmos uma vez
escritos em outros programas e, sobretudo, a utilização dos subprogramas na estruturação
do programa. Esta estruturação poderá dar origem a uma construção hierárquica, de modo
a que os vários subprogramas, ativados por um programa superior, podem executar tarefas
parciais completas e fornecer os resultados.
7.1 Declaração
Um subprograma ou uma função constituem uma seção separada do programa, que dispõe
de um cabeçalho de programa, uma seção de declaração e uma seção de instrução e que
poderá ser ativada a partir de um local qualquer do programa principal. Depois da execução
do subprograma ou da função realiza--se o regresso à instrução que se encontra a seguir
à ativação do subprograma (ver Fig. 35).
A partir de um subprograma ou de uma função podem ser ativados outros subprogramas
e/ou funções. 20 programas constituem o máximo admissível para a ativação sucessiva a
partir de outros programas. Se este número for ultrapassado, é emitida a mensagem de erro
“SOBRECARGA DE PROGRAMA”. A ativação recursiva de subprogramas ou funções é
permitida. Isto significa que um subprograma ou uma função podem ativar--se novamente
a si próprios.
DEF Tal como os programas principais, são declarados também todos os subprogramas através
da declaração DEF mais o nome, terminando com END, p.ex.:
DEF SUBPR()
¼
END
PROG.SRC
ProgExpPHR4.1.7 12.03.06 pt
148 de 212
7 Subprogramas e funções (continuação)
G Nos subprogramas locais e nas funções são conhecidas todas as variáveis declara-
das na lista de dados do programa principal. As variáveis que foram declaradas no
programa principal (ficheiro SRC) são as chamadas variáveis “Runtime” que só pode-
rão ser usadas no programa principal. Uma tentativa de usar estas variáveis no sub-
programa provoca a respetiva mensagem de erro.
Nos subprogramas ou funções globais não são conhecidas as variáveis
declaradas no programa principal.
G No programa principal não são conhecidas as variáveis declaradas nos
subprogramas ou funções.
G Um programa principal não tem acesso a subprogramas ou funções locais de um
outro programa principal.
G O nome de subprogramas/funções locais pode ter um comprimento máximo de 24
caratéres. Nos subprogramas/funções globais, o nome pode ter um comprimento
máximo de 20 caratéres (devido às extensões do ficheiro).
Para que o programa principal conheça o subprograma global, apenas é necessário ativar
este dentro do programa principal (por exemplo: PROG_2()). Com a indicação da lista de
parâmetros (ver 7.2), é também definido claramente o espaço de memória necessário.
Exemplos:
PROG_3()
FUNCTION(REAL:IN)
Na Fig. 36 é representada a diferença entre subprogramas/funções locais e globais:
PROG.SRC, PROG_1.SRC e PROG_3.SRC são programas principais autônomos,
enquanto PROG_2FUN.SRC é uma função. A ativação de um programa (por exemplo
PROG_1.SRC) a partir de PROG.SRC, faz com que este se torne automaticamente um
subprograma global. LOCAL() é um subprograma local e LOCALFUN() uma função local de
PROG.SRC.
ProgExpPHR4.1.7 12.03.06 pt
149 de 212
Programação perito
PROG.SRC PROG_1.SRC
ProgExpPHR4.1.7 12.03.06 pt
150 de 212
7 Subprogramas e funções (continuação)
ProgExpPHR4.1.7 12.03.06 pt
151 de 212
Programação perito
X Call by value
15 GLOBAL DEFFCT INT QUADRADO
15 (NÚMERO:IN)
15 NÚMERO INT NÚMERO
225 NÚMERO=NÚMERO*NÚMERO
225 RETURN(NÚMERO)
DEF PROG() ENDFCT
INT X,Y,E
¼
X=5*3
Þ X=15
Y=QUADRADO(X) Y= 225
;Y=225 E=15
E=Y/X
¼
END 15
225
X,NÚMERO Call by reference
15
GLOBAL DEFFCT INT
225 QUADRADO(NÚMERO:OUT)
INT NÚMERO
NÚMERO=NÚMERO*NÚMERO
RETURN(NÚMERO)
ENDFCT
Þ X=225
Y= 225
E=1
ProgExpPHR4.1.7 12.03.06 pt
152 de 212
7 Subprogramas e funções (continuação)
DEF PROG()
CALCULAR (INT:OUT,INT:IN,INT:IN)
FUNÇ1(REAL:IN,REAL:OUT,REAL:OUT,REAL:IN,REAL:OUT)
INT A,B,C
REAL D,E,F,G,H,X
A = 1
B = 2
C = 3
D = 1
E = 2
F = 3
G = 4
H = 5
CALCULAR(A,B,C)
;A é agora 11
;B é agora 2
;C é agora 3
X = FUNÇ1(H,D,E,F,G)
;D é agora 3
;E é agora 8
;F é agora 3
;G é agora 24
;H é agora 5
;X é agora 15
END
DEF CALCULAR(X1:OUT,X2:IN,X3:IN) ;SP global
INT X1,X2,X3
X1=X1+10
X2=X2+10
X3=X3+10
END
DEFFCT REAL FUNÇ1(X1:IN,X2:OUT,X3:OUT,X4:IN,X5:OUT);Funç. global
REAL X1,X2,X3,X4,X5
X1 = X1*2
X2 = X2*3
X3 = X3*4
X4 = X4*5
X5 = X5*6
RETURN(X4)
ENDFCT
ProgExpPHR4.1.7 12.03.06 pt
153 de 212
Programação perito
DEF ARRAY ( )
EXT BAS (BAS_COMMAND:IN,REAL:IN)
INT X[5] ;declaração de campo
INT I
BAS (#INITMOV,0)
FOR I=1 TO 5
X[I]=I ;Array X[] inicializar
ENDFOR ;X[1]=1,X[2]=2,X[3]=3,X[4]=4,x[5]=5
ProgExpPHR4.1.7 12.03.06 pt
154 de 212
7 Subprogramas e funções (continuação)
ProgExpPHR4.1.7 12.03.06 pt
155 de 212
Programação perito
8 Tratamento de interrupt
Quando os robôs são utilizados em instalações de produção complexas, é necessário que
o robô possa reagir de uma forma objetiva e imediata, perante determinados acontecimen-
tos externos e internos, ao mesmo tempo que se realizam ações em paralelo ao processo
do robô. Isto significa que o programa de robô que está a ser executado terá de ser interrom-
pido, ao mesmo tempo que é iniciado um programa ou uma função de interrupção. Depois
da execução do programa de interrupção, o programa de robô interrompido deverá ser
continuado, desde que não tenha sido declarado um procedimento diferente.
Esta interrupção objetiva ou o início de um programa são possíveis devido à instrução de
Interrupt. Assim, o utilizador tem a possibilidade de reagir através do programa perante um
acontecimento não sincronizado no tempo em relação à execução do programa.
Os interrupts podem ser provocados
G por equipamentos, tais como sensores, unidades periféricas, etc.
G por mensagens de erro
G pelo utilizador ou
G por circuitos de segurança
P.ex., ao premir o interruptor de parada de emergência, pode ser ativada uma rotina de
interrupt, que se encarrega de fazer o reset de determinados sinais de saída (programa
preparado IR_STOPM.SRC).
ProgExpPHR4.1.7 12.03.06 pt
156 de 212
8 Tratamento de interrupt (continuação)
8.1 Declaração
Antes de poder ser ativado um interrupt, terão de ser definidas as causas possíveis para
uma interrupção e a respetiva reação do sistema perante estas interrupções.
INTERRUPT Isto realiza--se através de uma declaração de interrupt, em que terá de atribuir a cada
interrupção uma prioridade, um acontecimento e a rotina de interrupt a ativar. A sintaxe
completa é:
A instrução
INTERRUPT DECL 4 WHEN $IN[3]==TRUE DO UP1()
declara, p.ex., um interrupt da prioridade 4, que ativa o subprograma SP1(), logo que a
entrada 3 adotar o valor High.
A declaração de interrupt é uma instrução. Por isso, não pode estar na seção de
declaração!
Um interrupt é reconhecido apenas a partir do nível de programa no qual está declarado. Nos
níveis de programa superiores, o interrupt não é reconhecido, apesar da ativação. Isto signi-
fica que um interrupt declarado num subprograma não é reconhecido no programa principal
(ver Fig. 38).
Mas se o interrupt for declarado como GLOBAL, poderá ser declarado num subprograma
qualquer e não perde a sua validade ao sair deste nível. (ver Fig. 38).
GLOBAL INTERRUPT DECL 4 WHEN $IN[3]==TRUE DO UP1()
ProgExpPHR4.1.7 12.03.06 pt
157 de 212
Programação perito
G Uma declaração pode ser sobrescrita, a qualquer momento, por uma declaração
nova.
G A diferença entre um interrupt GLOBAL e um interrupt normal é que um interrupt global
continua a ser válido também depois de sair do subprograma no qual foi declarado.
G Simultaneamente, podem estar declarados, no máximo, 32 interrupts.
G Na condição de interrupt, não deverão ser utilizadas variáveis ou componentes de
estrutura.
G Não podem ser transferidas variáveis de tempo de execução como parâmetros da
rotina de interrupt, salvo se se tratar de variáveis GLOBAL ou variáveis declaradas
na lista de dados.
Programa principal
DEF MAIN()
⋮
INTERRUPT DECL 1 ¼ Subprograma
INTERRUPT DECL 3 ¼
⋮
UP()
DEF UP()
⋮
⋮
END
GLOBAL INTERRUPT DECL 23
¼
INTERRUPT DECL 2 ¼
⋮
END
Validade interrupt 2
ProgExpPHR4.1.7 12.03.06 pt
158 de 212
8 Tratamento de interrupt (continuação)
Por razões de tempo necessário para os cálculos, só podem estar ativados simultanea-
mente 16 interrupts. Este fato deverá ser tido em consideração, sobretudo, aquando da
ativação global de todos os interrupts.
Desativar A desativação de alguns ou de todos os interrupts funciona da mesma forma que a ativação:
interrupts
INTERRUPT OFF 4
ou
INTERRUPT OFF
Bloquear / Com as palavras chave ENABLE e DISABLE os interrupts ativados podem ser liberados ou
liberar bloqueados individual ou globalmente.
A instrução de bloqueio permite a proteção de determinadas seções do programa, antes da
interrupção. Um interrupt bloqueado é detectado e memorizado, mas não é executado. Só
quando há uma liberação, os interrupts verificados são executados pela ordem da sua
prioridade.
DISABLE 4
ou
DISABLE
Um acontecimento memorizado não provoca uma reação, desde que o interrupt tenha sido
desativado antes de poder ser provocado. Caso o interrupt se verifique várias vezes durante
o seu bloqueio, ele é executado apenas uma única vez depois da sua liberação.
ProgExpPHR4.1.7 12.03.06 pt
159 de 212
Programação perito
Exceções:
S Durante uma parada de operação poderá ser detectado qualquer interrupt declarado
e ativado. Depois de um novo arranque, os interrupts verificados são executados,
pela ordem da sua prioridade (caso estejam liberados), seguindo--se a continuação
do programa.
ProgExpPHR4.1.7 12.03.06 pt
160 de 212
8 Tratamento de interrupt (continuação)
DEF INTERRUP ( )
PTP HOME
FOR I=1 TO 2
IF $OUT[I] THEN
LIN TEIL[I] ; deslocar à peça detectada
$OUT[I]=FALSE
PTP HOME
ENDIF
ENDFOR
END
Além do pacote base (BAS.SRC), existe, por nome, na unidade de comando, também um
ficheiro IR_STOPM(). Este subprograma executa, em caso de um erro, algumas instru-
ções básicas, das quais fazem parte, além de ações tecnológicas específicas, também
o reposicionamento do robô na trajetória de movimento. O fato é que, enquanto o robô se
mantém na trajetória depois de ter sido premido um interruptor de PARADA DE
EMERGÊNCIA, o hardware não realiza uma parada sobre a trajetória, quando se trata de
equipamentos de segurança que dizem respeito diretamente ao operador (p.ex., porta de
segurança).
Por isso, deverá implementar sempre na seção de inicialização dos seus programas a se-
qüência seguinte (encontra--se regularmente na pasta BAS INI):
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
ProgExpPHR4.1.7 12.03.06 pt
161 de 212
Programação perito
$POS_RET
$POS_INT
$AXIS_RET P2
$AXIS_INT
$POS_FOR
$AXIS_FOR
P1 P3
$POS_BACK $POS_ACT
$AXIS_BACK $AXIS_ACT
P2
$POS_INT $POS_RET
$AXIS_INT $AXIS_RET
$POS_FOR
$AXIS_FOR
$POS_BACK $POS_ACT
$AXIS_BACK $AXIS_ACT
P1 P3
ProgExpPHR4.1.7 12.03.06 pt
162 de 212
8 Tratamento de interrupt (continuação)
Não é necessário que a instrução BRAKE se encontre diretamente a seguir à ativação, pode
estar em qualquer local do programa de interrupt. O seu efeito depende do fato de no
momento da sua realização ainda ser executado um movimento do programa interrompido.
Com o robô parado, a instrução não tem qualquer efeito. Um movimento do programa
interrompido ainda em curso, é parado com o modo de frenagem programado. No entanto,
a instrução BRAKE não substitui a instrução STOP, quando se pretende parar a execução
do programa. O programa de interrupt só é continuado com a instrução seguinte, depois de
o robô estar parado.
ProgExpPHR4.1.7 12.03.06 pt
163 de 212
Programação perito
Tal como a instrução BRAKE, também a instrução RESUME só é permitida num programa
de interrupt.
No momento da instrução RESUME, o indicador do avanço não pode estar no nível em que
o interrupt foi declarado, mas pelo menos um nível abaixo deste.
Uma vez que se pretende cancelar o percurso de busca com RESUME, o movimento de
busca terá de ser programado num subprograma. No exemplo seguinte, este procedimento
realiza--se em MOVEP(), o programa de interrupt chama--se IR_PROG().
É importante que nos subprogramas que foram cancelados com RESUME, o avanço seja
parado antes da última linha. Só assim, pode ser garantido que o indicador do avanço com
RESUME não se encontra no mesmo nível em que o interrupt foi declarado. Em MOVEP()
isto foi realizado com a atribuição $ADVANCE=0.
No próprio programa de interrupt, o movimento de busca é parado através de BRAKE, logo
que um sensor na entrada 1 tenha detectado 4 peças, sendo cancelado então por meio da
instrução RESUME (uma vez que além de IR_PROG() é terminado também MOVEP()). Sem
a instrução BRAKE, o movimento de busca ainda seria executado no avanço.
Depois de RESUME o programa principal é continuado com a instrução que se segue à ativa-
ção do subprograma, ou seja, $ADVANCE=3 (reset do avanço).
ProgExpPHR4.1.7 12.03.06 pt
164 de 212
8 Tratamento de interrupt (continuação)
DEF SEARCH ( )
;--------- Seção de declaração ---------
EXT BAS (BAS_COMMAND :IN,REAL :IN )
DECL AXIS HOME
;---------- Inicialização ---------
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3 ;tratamento de erro padrão
BAS (#INITMOV,0 ) ;inicialização de velocidades,
;acelerações, $BASE, $TOOL, etc.
HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
INTERRUPT DECL 11 WHEN $IN[1] DO IR_PROG ( )
I[1]=0 ;colocar contador predefinido em 0
;------------- Seção principal ------------
PTP HOME ;movimento SAK
INTERRUPT ON 11
MOVEP ( ) ;percorrer o percurso de busca
$ADVANCE=3 ;reset do avanço
INTERRUPT OFF 11
GRIP ( )
PTP HOME
END
;-------- Subprograma ------------
DEF MOVEP ( ) ;subprograma para percorrer o percurso de busca
PTP {X 1232,Y -263,Z 1000,A 0,B 67,C -90}
LIN {X 1232,Y 608,Z 1000,A 0,B 67,C -90}
$ADVANCE=0 ;parar avanço
END ;
;------ Programa de interrupt ---------
DEF IR_PROG ( ) ;memorizar posição das peças
;INTERRUPT OFF 11
I[1]=I[1]+1
POSITION[I[1]]=$POS_INT ;memorizar a posição
IF I[1]==4 THEN ;4 peças são detectadas
BRAKE ;parar o movimento
RESUME ;cancelar IR_PROG & MOVE
ENDIF
;INTERRUPT ON 11
END
;-------- Subprograma ------------l
ProgExpPHR4.1.7 12.03.06 pt
165 de 212
Programação perito
Quando existe o perigo de um interrupt ser provocado, por engano, duas vezes, devido
a um sensor muito sensível (“ricochete”), poderá desativar o interrupt na primeira linha do
programa de interrupt, a fim de evitar essa situação. No entanto, nesse caso, também não
é detectado um interrupt real durante a execução do interrupt. Se pretende manter o
interrupt ativo, terá de ativá--lo novamente, antes do regresso.
Caso um movimento seja interrompido com RESUME, como mostrado no exemplo acima,
o movimento seguinte não deverá ser um movimento CIRC, visto que o ponto de início
varia sempre (Þ círculos diferentes).
ProgExpPHR4.1.7 12.03.06 pt
166 de 212
8 Tratamento de interrupt (continuação)
ProgExpPHR4.1.7 12.03.06 pt
167 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
168 de 212
9 Trigger – ações de comutação referentes à trajetória (continuação)
--
PONTO3
1
Fig. 41 Zonas de comutação e possíveis valores de retardamento, quando os pontos
de início e de destino são pontos de parada exata
ProgExpPHR4.1.7 12.03.06 pt
169 de 212
Programação perito
+ 0 0 -- 1a +
1 1a -- 1b ±
1a
-- 1
1b
PONTO3 PONTO4
+
1a
-- 1
1b
PONTO3 PONTO4
+
ProgExpPHR4.1.7 12.03.06 pt
170 de 212
9 Trigger – ações de comutação referentes à trajetória (continuação)
0
+
--
1
PONTO3
ProgExpPHR4.1.7 12.03.06 pt
171 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
172 de 212
9 Trigger – ações de comutação referentes à trajetória (continuação)
Seqüência de instruções
⋮
PTP PONTO2
TRIGGER WHEN PATH = 20 DELAY=-10 DO $OUT[2]=TRUE
LIN PONTO3 C_DIS
LIN PONTO4 C_DIS
LIN PONTO5
⋮
Uma vez que o ponto de comutação pode ser deslocado a partir do ponto de movimento
antes do qual foi programado, passando por todos os pontos de aproximação seguintes, até
ao ponto de parada exata próximo, é possível uma deslocação do ponto de comutação do
início da aproximação PONTO2 até ao PONTO5. Se nesta seqüência de instruções não hou-
vesse uma aproximação ao PONTO2, o ponto de comutação só poderia ser deslocado até
ao ponto de parada exata PONTO2.
PONTO2
--
DELAY X
-- PONTO5
+
PATH Y<0
DELAY X
-- +
PONTO3 PONTO4
DELAY=0
PATH=0 PATH Y>0 +
Exemplo de números:
X= --10, Y= --20
PONTO2
Ponto de
comutação
DELAY= -10
PONTO5
PATH= -20
PONTO4
PONTO3
ProgExpPHR4.1.7 12.03.06 pt
173 de 212
Programação perito
Exceções:
G Movimento SAK
Caso seja realizada uma seleção de passos a seguir a um movimento de trajetória, este
é realizado como movimento SAK. Uma vez que neste movimento SAK o ponto de início
é um ponto qualquer, não pode ser considerado um ponto de início útil para uma indicação
de distância. Caso tenham sido programadas instruções TRIGGER com a indicação de
PATH e caso haja a seguir a estas instruções uma seleção de passos, todas as instruções
são executadas no ponto de destino.
G Aproximação impossível
Caso a aproximação não seja possível, realiza--se nesse local um movimento de parada
exata que, neste caso, é tratado como um movimento de aproximação. Outras ações de
comutação que se encontram na trajetória, mantêm--se memorizadas e são provocadas
no local correspondente. Mas normalmente, já não são exatas, uma vez que a trajetória
e, por conseguinte, também o comprimento da trajetória são agora diferentes. As ações
de comutação que foram colocadas na primeira metade da zona de aproximação, devido
a um valor PATH negativo, não podem agora ser provocadas antes do ponto de
aproximação:
⋮
LIN P1 C_DIS
TRIGGER WHEN PATH=-120 DELAY=0 DO UP1() PRIO=-1
TRIGGER WHEN PATH=-70 DELAY=0 DO $OUT[2]=TRUE
LIN P2 C_DIS
⋮
No exemplo acima apresentado, a distância entre o ponto de início e o ponto de destino
deverá situar--se em 100 mm. Se for possível fazer a aproximação em P1, a ativação do
subprograma SP1() é realizada 20 mm antes de atingir o ponto da trajetória que se situa
mais próximo de P1. A saída 2 é ativada 30 mm a seguir a este ponto da trajetória. Caso
não tenha sido possível executar o movimento de aproximação em P1, a trajetória passa
pelo ponto P1, onde também se realiza o posicionamento. A ativação do subprograma
SP1() realiza--se agora logo depois de deixar P1, e a saída 2 é ativada a uma distância
de 30 mm de P1.
G Cancelar um movimento
Se um movimento for cancelado, p.ex., devido à seleção de um passo ou a um reset, não
sendo portanto executado até ao fim, as ações de comutação ainda não executadas também
já não serão realizadas, mas apagadas, tal como acontece na indicação DISTANCE.
G Instrução TRIGGER para um movimento PTP referente ao percurso
Se adicionalmente a um movimento PTP for programada uma instrução PATH-TRIGGER
com indicação de caminho, este procedimento é recusado pelo interpretador durante a
execução.
G Aproximação PTP--trajetória
Caso seja programada uma instrução PATH-TRIGGER em relação a um movimento cujo
ponto de início é um ponto de aproximação PTP--trajetória, a ação de comutação não poderá
ser executada antes do fim desta zona de aproximação, uma vez que em toda a zona de
aproximação ainda se realiza um movimento PTP.
Numa zona de aproximação trajetória--PTP, ainda são executadas no ponto de início da zona
de aproximação, todas as instruções TRIGGER que até aí não foram executadas. A partir daí
realiza--se então o movimento PTP, e deixa de ser possível uma atribuição da trajetória.
ProgExpPHR4.1.7 12.03.06 pt
174 de 212
9 Trigger – ações de comutação referentes à trajetória (continuação)
DEF TRIG ( )
;--------- Seção de declaração ---------
EXT BAS (BAS_COMMAND :IN,REAL :IN)
DECL AXIS HOME
INT I
SINAL COLA $OUT[3]
;---------- Inicialização ---------
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 ) ;inicialização de velocidades,
;acelerações, $BASE, $TOOL, etc.
$APO.CDIS=35 ;determinar distância de aproximação
HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
POS0={POS: X 1564,Y -114,Z 713,A 128,B 85,C 22,S 6,T 50}
POS1={X 1383,Y -14,Z 713,A 128,B 85,C 22}
POS2={X 1383,Y 200,Z 713,A 128,B 85,C 22}
POS3={X 1527,Y 200,Z 713,A 128,B 85,C 22}
POS4={X 1527,Y 352,Z 713,A 128,B 85,C 22}
FOR I=1 TO 16
$OUT[I]=FALSE
ENDFOR
;------------- Seção principal ------------
PTP HOME ;movimento SAK
PTP POS0
TRIGGER WHEN DISTANCE=0 DELAY=40 DO $OUT[1]=TRUE
TRIGGER WHEN PATH=-30 DELAY=0 DO SP1(2) PRIO=-1
LIN POS1
TRIGGER WHEN DISTANCE=1 DELAY=-50 DO COLA=TRUE
TRIGGER WHEN PATH=180 DELAY 55 DO PULSE($OUT[4],TRUE,0.9)
TRIGGER WHEN PATH=0 DELAY=40 DO $OUT[6]=TRUE
LIN POS2 C_DIS
TRIGGER WHEN DISTANCE=0 DELAY=40 DO PULSE ($OUT[5],TRUE,1.4 )
TRIGGER WHEN PATH=-20 DELAY=-15 DO $OUT[8]
LIN POS3 C_DIS
TRIGGER WHEN DISTANCE=1 DELAY=-15 DO SP1 (7 ) PRIO= -1
LIN POS4
PTP HOME
END
DEF SP1 (NR :IN )
INT NR
IF $IN[1]==TRUE THEN
$OUT[NR]=TRUE
ENDIF
END
ProgExpPHR4.1.7 12.03.06 pt
175 de 212
Programação perito
$OUT[2] 2’E
$OUT[5]
3’B
180
8
$OUT[1] $OUT[8]
20
POS 0 $OUT[4] $OUT[7]
3’
3’E
POS 3
POS 4
ProgExpPHR4.1.7 12.03.06 pt
176 de 212
9 Trigger – ações de comutação referentes à trajetória (continuação)
;FOLD PTP P1
TRIGGER WHEN DISTANCE=0 DELAY=0 DO SUB1() PRIO=15
PTP P1
...
;ENDFOLD
...
...
;FOLD PTP P2
TRIGGER WHEN DISTANCE=0 DELAY=-- 75 DO SUB1() PRIO=15
...
;ENDFOLD
Se a primeira instrução de trigger ainda não estiver terminada, enquanto já está a ser
executada a segunda instrução de trigger, é emitida uma mensagem de erro chamando a
atenção para o tempo de execução. Este pode ser o caso, por exemplo, quando os dois
pontos estiverem muito próximos um do outro.
ProgExpPHR4.1.7 12.03.06 pt
177 de 212
Programação perito
10 Listas de dados
10.1 Listas de dados locais
As listas de dados destinam--se a disponibilizar as declarações específicas do programa ou
as declarações superiores. Destas fazem parte também as informações acerca dos pontos,
p.ex., as coordenadas:
G Uma lista de dados pode ser elaborada em relação a qualquer ficheiro SRC. A lista de
dados tem então o mesmo nome que o ficheiro SRC, mas termina com a extensão
“.DAT”.
G A lista de dados é local, embora seja um ficheiro próprio.
G Numa lista de dados só podem estar declarações e inicializações.
G Na mesma linha pode haver declarações e inicializações.
G As variáveis de sistema não são aceites.
A declaração das listas de dados realiza--se analogamente à declaração dos ficheiros SRC:
DEFDAT A declaração é iniciada com a palavra chave DEFDAT e o nome de programa e terminada
com a palavra chave ENDDAT.
A inicialização das variáveis realiza--se através da atribuição de um valor à respetiva
variável, diretamente na linha de declaração.
PROG_1.SRC PROG_1.DAT
DEF PROG_1 ( )
¼ DEFDAT PROG_1
HALT No início, OTTO é “0” INT OTTO = 0
¼ ENDDAT
OTTO = 25
¼
HALT
END
DEFDAT PROG_1
Depois da execução do INT OTTO = 25
programa, OTTO = 25 ENDDAT
ProgExpPHR4.1.7 12.03.06 pt
178 de 212
10 Listas de dados (continuação)
PROG_1.SRC PROG_1.DAT
DEF PROG_1 ( )
¼ DEFDAT PROG_1 PUBLIC
HALT INT OTTO = 0
¼ ENDDAT
OTTO = 25
¼
END
PROG_2.SRC
DEF PROG_2 ( )
IMPORT INT OTTO_2 IS /R1/PROG_1..OTTO
¼
¼
END
ProgExpPHR4.1.7 12.03.06 pt
179 de 212
Programação perito
Global G A variável é declarada como “Variável global”, p.ex., DECL GLOBAL INT OTTO = 0
e está acessível em cada programa principal estranho sem instrução de importar.
Se foi declarada uma variável global, não é possível alterar o nome da variável num
programa principal estranho.
PROG_1.SRC PROG_1.DAT
DEF PROG_1 ( )
¼ DEFDAT PROG_1 PUBLIC
HALT DECL GLOBAL INT OTTO = 0
¼ ENDDAT
OTTO = 25
¼
END
PROG_2.SRC
DEF PROG_2 ( )
¼
¼
END
Na lista de dados de sistema global previamente definida $CONFIG.DAT, podem ser defini-
das variáveis, estruturas, canais e sinais que sejam válidos durante um tempo prolongado e
que tenham um significado superior para muitos programas. As variáveis na $CONFIG.DAT
não terão de ser declaradas com IMPORT, uma vez que todos os programas de usuário as
reconhecem automaticamente.
ProgExpPHR4.1.7 12.03.06 pt
180 de 212
10 Listas de dados (continuação)
ProgExpPHR4.1.7 12.03.06 pt
181 de 212
Programação perito
11 Editor externo
Este programa adicional proporciona ao software do robô funções que não estão disponíveis
no painel de operação.
Limpar programa
Pontos de trajetória e parâmetros de movimento não referenciados são apagados na
lista de dados.
Manipulações de bloco
-- Marcar bloco e copiar, apagar ou cortar.
-- Converter a trajetória do robô na área marcada, isto é, o ponto da seção de trajetória
marcada que foi o primeiro a ser programado é atingido em último lugar – mas o último
ponto programado é o primeiro a ser atingido.
-- Refletir a trajetória do robô na área marcada no plano X--Z do sistema de coordenadas
do mundo.
-- Alterar os parâmetros de movimento (velocidade, aceleração, etc.) na área marcada.
-- Deslocar todos os pontos dentro da seção de trajetória marcada no sistema de
coordenadas da peça (BASE), da ferramenta (TOOL) ou do mundo (WORLD). A
deslocação ou rotação poderá ser realizada pela introdução manual de um offset no
respetivo sistema de coordenadas ou pela programação de pontos de referência.
-- Deslocação específica dos eixos de todos os pontos na área marcada.
ProgExpPHR4.1.7 12.03.06 pt
182 de 212
11 Editor externo (continuação)
Selecionar ficheiros
Logo depois do arranque do editor, aparece o diálogo “Selecionar ficheiros”. Use aqui as te-
clas do cursor “¯” e “” para selecionar o ficheiro que pretende editar. Estão disponíveis to-
dos os arquivos SRC do diretório R1, exceto “R1\MADA\”, “R1\SYSTEM\”. Além disso, podem
ser definidos arquivos padrão (“C:\KRC\UTIL\HOTEDIT.INI”) que também não são exibidos.
Se o “Editor externo” for iniciado como programa offline, o software KRC é iniciado auto-
máticamente.
ProgExpPHR4.1.7 12.03.06 pt
183 de 212
Programação perito
Se você marcou o arquivo desejado desta forma, ele é carregado para o editor
se você apertar a respectiva softkey ou a tecla “Enter”. A duração deste pro-
cesso de carregamento depende do tamanho do arquivo.
Se aparecer a mensagem “Ficheiro *.DAT não encontrado”, significa que tentou carregar
para o editor um programa em relação ao qual não existe nenhuma lista de dados.
Se o ficheiro foi carregado, o programa é mostrado de forma semelhante à que é usada pelo
editor do painel de operação.
ProgExpPHR4.1.7 12.03.06 pt
184 de 212
11 Editor externo (continuação)
11.2 Operação
Os elementos do painel de operação normal também se encontram no do editor externo.
Também aqui existem as menukeys, statuskeys, softkeys, uma caixa de programa, uma
caixa de mensagens e uma barra de estado.
Statuskeys
As statuskeys “Para cima” ou “Para baixo” permitem deslocar a marcação da linha (foco),
linha por linha, na direção do início ou do fim da lista. As teclas do cursor “"” ou “#” e as teclas
“PGUP“ ou “PGDN“ têm a mesma função.
foco
foco
Com as teclas “PgUp” ou “PgDn” você pode folhear para trás ou para a frente. Para isso
tem de desligar a função “NUM” ou usar um teclado externo.
Se você apertar a statuskey “KRL”, é mostrado o programa da mesma forma como no modo
de perito, com as definições “Abrir todas as FOLDS” e “Vista de pormenor (ASCII)”.
Na área “FOLD” é mostrada a instrução marcada com o foco (ficheiro SRC”). Na área
“Dados” são mostrados os dados pertencentes à instrução marcada (ficheiro “DAT”).
ProgExpPHR4.1.7 12.03.06 pt
185 de 212
Programação perito
Barra de softkeys
Esta softkey corresponde à instrução de menu “Fechar ficheiro” que fecha
o programa atual, mas deixa continuar o editor.
Caixa de mensagens
Na caixa de mensagens são mostradas as mensagens relevantes para o Editor Externo.
Nº Tempo Mensagem Result
003 7:51:36 Carregar... OK
002 7:51:32 Fichiero Abrir OK
001 7:51:32 ExtEdit Start OK
ProgExpPHR4.1.7 12.03.06 pt
186 de 212
11 Editor externo (continuação)
11.3.1 Abrir
Ao usar esta opção, aparece
a janela “Selecionar fichei-
ros”, como já descrito ante-
riormente no parágrafo 11.2.
11.3.2 Memorizar
Se o conteúdo do ficheiro carregado para o editor foi alterado com a ajuda das funções
disponíveis, antes de guardar a nova versão deste ficheiro ou antes de terminar a sessão
do editor, é feita uma pergunta para confirmar a introdução das alterações realizadas.
Sim Não
Para introduzir as alterações realizadas, basta premir a tecla Enter para confirmar a
preseleção.
Neste processo, os conteúdos da versão existente do ficheiro editado são, pelo menos em
parte, irremediavelmente perdidos.
Para cancelar a ação, você deve premir primeiro uma das teclas do cursor, para deslocar o
foco até ao botão “Não”. Ao premir agora a tecla Enter, a seleção é executada. Neste caso, a
versão já existente do ficheiro editado mantém--se inalterada.
11.3.3 Imprimir
Ficheiro Abrir Esta instrução permite a saída de pro-
Memorizar gramas no meio definido em “Op-
Imprimir Programa atual
Fechar ficheiro Todos os usuários
ções”--> “Definição de saídas”.
Terminar
ProgExpPHR4.1.7 12.03.06 pt
187 de 212
Programação perito
KRC:\Palette.SRC
*************************************
INI
1:PTP HOME Vel=100 % DEFAULT
Todas os usuários
Todos os programas de usuário são emitidos.
Caso ainda não tenha sido definido um caminho de saída através de “Set diretório”, as
saídas nos meios “Impressora” ou “Arquivo” são definidas tipo padrão no diretório
“C:\USERPROG”.
11.3.5 Terminar
Caso o ficheiro que se encontra no editor tenha sido modificado desde o seu carregamento,
você pode guardar as modificações (como descrito no parágrafo 11.3.2).
A janela do editor é fechada aparecendo novamente o painel de operação do software do
robô.
ProgExpPHR4.1.7 12.03.06 pt
188 de 212
11 Editor externo (continuação)
Para marcar uma área, mantenha a tecla “SHIFT” premida e depois prima
uma das duas statuskeys “Para cima” ou “Para baixo” ou a respetiva tecla
do cursor.
Área marcada
(marcação de bloco)
Copia a seção de trajetória marcada para a memória temporária e mantém--na aí pronta para
qualquer inserção.
11.4.4 Apagar
ProgExpPHR4.1.7 12.03.06 pt
189 de 212
Programação perito
P1
P2’
P2
ROBROOT P3’
--Y
P3
+X
ProgExpPHR4.1.7 12.03.06 pt
190 de 212
11 Editor externo (continuação)
Ao ser selecionada uma das opções possíveis, é aberta uma caixa para a introdução dos
valores desejados. Em função do sistema de coordenadas, você introduz ou a deslocação e
torção ou os ângulos dos eixos.
BASE
Por uma deslocação de ponto cartesiana base entende--se que um ponto qualquer no es-
paço sofra uma deslocação relativa no sistema de coordenadas da origem (WORLD) que se
encontra na base do robô. Com a ajuda do exemplo aqui representado, a deslocação de
ponto cartesiana BASE é explicada mais pormenorizadamente:
Valores de entrada =
valores relativos
--Y [mm]; --X [mm]; A+[°]
Z+
A+
Pnovo
Y+
X+
Pantigo Xantigo
Yantigo --Yr
--Xr
ProgExpPHR4.1.7 12.03.06 pt
191 de 212
Programação perito
TCP
Uma deslocação de ponto cartesiana TCP significa que um ponto qualquer no espaço sofre
uma deslocação relativa em relação ao sistema de coordenadas TOOL. Com a ajuda do
exemplo aqui representado, a deslocação de ponto cartesiana TCP é explicada mais porme-
norizadamente:
Pnovo
Zantigo
--Zr
--Yr Y+
C°r
C°
Pantigo X+
Yantigo
Z+ Valores de entrada =
valores relativos
Neste exemplo iria realizar--se uma
--Y [mm]; --Z [mm]; C+[°]
deslocação relativa negativa em Y, Z
e uma rotação relativa positiva em
torno de X[°].
Uma deslocação relativa em X não é
tomada em conta!
ProgExpPHR4.1.7 12.03.06 pt
192 de 212
11 Editor externo (continuação)
WORLD
Sob uma deslocação de ponto WORLD entende--se que o sistema de coordenadas de origem
que normalmente se encontra na base do robô sofre uma deslocação relativa. Com a ajuda do
exemplo aqui representado, a deslocação de ponto WORLD é explicada mais pormenorizada-
mente:
Valores de entrada =
valores relativos
+Y [mm]; +X [mm]; A--[°]
Z+
Z+novo
Y+
Pnovo +Xr
X+
X+novo
+Yr A--
Y+novo
ProgExpPHR4.1.7 12.03.06 pt
193 de 212
Programação perito
Eixos
Sob uma deslocação de ponto específica dos eixos entende--se que um ponto qualquer no
espaço é atingido por um movimento relativo dos eixos. Com a ajuda da figura aqui represen-
tada pretende--se proceder a uma deslocação relativa do eixo 5.
Palt
a A5a A5 alt
neu
Pneu
Valores de entrada =
Neste exemplo iria realizar--se uma valores relativos
rotação relativa positiva do A5 [_]. +A5 [°]
Uma rotação relativa dos outros eixos
não é tomada em conta!
ProgExpPHR4.1.7 12.03.06 pt
194 de 212
11 Editor externo (continuação)
ProgExpPHR4.1.7 12.03.06 pt
195 de 212
Programação perito
Esta função permite adaptar um programa carregado para o editor a um outro sistema de
coordenadas da ferramenta (TOOL) ou da peça (BASE).
Ao ativar esta função, aparece a janela abaixo representada. Como exemplo, foi escolhida
aqui a adaptação TCP.
São mostrados todos os programas incluindo os respetivos pontos afetados pela adaptação
Tool ou Base.
Para poder mover a marca de inserção de campo para campo, terão de estar ativadas as
funções de comando do cursor no bloco de números. Para esse efeito, prima brevemente
a tecla “NUM”. A seguir, a combinação de teclas “SHIFT”+“TAB” permite passar a marca de
inserção de um campo ao outro.
No campo de lista selecione na área “Dados TCP novos” a ferramenta à qual pretende adap-
tar o programa carregado. Nos campos de entrada “X=”, “Y=”, “Z=”, “A=”, “B=” e “C=”, os
novos dados de ferramenta poderão ser introduzidos também manualmente.
Depois de ter introduzido as alterações pretendidas, prima a softkey “Alterar”. Pode sair da
função, a qualquer momento, premindo a softkey “Fim”.
ProgExpPHR4.1.7 12.03.06 pt
196 de 212
11 Editor externo (continuação)
A instrução de menu “HotEdit” --> “TCP” está disponível somente no caso de o editor ter
sido iniciado através do menu de entrada em serviço.
ProgExpPHR4.1.7 12.03.06 pt
197 de 212
Programação perito
Se um dos valores introduzidos se situar fora das tolerâncias, aparece na caixa de deslo-
cação do programa um aviso ou uma mensagem de erro a informar que o valor introduzido
ultrapassa as tolerâncias.
ProgExpPHR4.1.7 12.03.06 pt
198 de 212
11 Editor externo (continuação)
Em cada correção de ponto, os pontos necessários com coordenadas cartesianas são pro-
curados na lista de dados local (*.DAT). Se um dos pontos necessários não for encontrado, é
emitida uma mensagem de erro.
A procura do ponto que define a direção da trajetória realiza--se sempre para cima, a partir do
local onde se encontra o ponto a corrigir. Excetua--se o ponto final de um contorno de solda-
dura ou colagem, uma vez que aqui é procurado sempre nos números de passo seguintes
mais baixos.
Devem ser consideradas as seguintes exceções:
G Uma mudança do sistema de coordenadas da base entre dois passos de movimento
é ignorada;
G Os passos CIRC com uma indicação de ângulo circular (CA) não são corrigidos;
G Na correção de um ponto auxiliar é usada a orientação da ferramenta igual à do ponto
de início;
G As coordenadas de um ponto são uma simples variável da lista de dados ou um compo-
nente desta (não são permitidas variáveis importadas, mesmo variáveis de dados de
máquina).
ProgExpPHR4.1.7 12.03.06 pt
199 de 212
Programação perito
Use as teclas do cursor “” ou “¯” e coloque o foco no local desejado. Introduza os novos
valores através das teclas do bloco numérico.
Eixo X
O eixo X no sistema de coordenadas TTS corresponde a um vector de unidade ao longo da
tangente de trajetória.
+Z
+Y P2
+X
+Z
+Y
+X
+Z
+Y
+Z
+Y +X
+X
P2
ProgExpPHR4.1.7 12.03.06 pt
200 de 212
11 Editor externo (continuação)
Eixo Y
Do vector de unidade ao longo da tangente de trajetória (+X) e do eixo X do sistema de coor-
denadas da ferramenta (+XTool) é formado um plano de fixação. O eixo Y encontra--se verti-
calmente em relação a este plano.
+Z
+Y
+X
+XTool P2
P1
Eixo Z
Do vector de unidade ao longo da tangente de trajetória (+X) e do eixo Y (+Y) é formado um
plano de fixação. O eixo Z encontra--se verticalmente em relação a este plano.
+Z
+Y
+X
P2
P1
ProgExpPHR4.1.7 12.03.06 pt
201 de 212
Programação perito
11.6.3 Tolerâncias
Uma correção online é permitida somente até aos valores máximos ajustáveis através de
“Tolerâncias Base/World” ou “Tolerâncias TTS”.
Use as teclas do cursor “” ou “¯” e coloque o foco no local desejado. Introduza a nova tole-
rância através das teclas do bloco numérico.
Os valores introduzidos não são transferidos.
11.6.3.1 Limits--Base/World
ProgExpPHR4.1.7 12.03.06 pt
202 de 212
11 Editor externo (continuação)
Este menu só está disponível enquanto não for carregado nenhum programa para o editor
externo.
ProgExpPHR4.1.7 12.03.06 pt
203 de 212
Programação perito
Use as teclas do cursor “"” ou “#” e selecione um ficheiro para a reflexão de eixos.
Pode sair da função, a qualquer momento, premindo a softkey “Cancelar”.
Depois de ter marcado o ficheiro selecionado, prima a softkey “Seta para
a direita”.
Introduza para o ficheiro refletido um nome que não deve ter mais que 8 caratéres.
Esta softkey permite voltar à página anterior onde você pode selecionar um
outro ficheiro de origem.
Depois de ter introduzido um nome para o ficheiro, prima esta softkey.
ProgExpPHR4.1.7 12.03.06 pt
204 de 212
11 Editor externo (continuação)
ProgExpPHR4.1.7 12.03.06 pt
205 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
206 de 212
11 Editor externo (continuação)
ProgExpPHR4.1.7 12.03.06 pt
207 de 212
Programação perito
ProgExpPHR4.1.7 12.03.06 pt
208 de 212
11 Editor externo (continuação)
Os respetivos valores mínimos ou máximos verificados bem como as posições atuais dos
eixos A1 ... A6 são introduzidos nos campos correspondentes.
Os eixos para os quais devem ser definidos os interruptores de fim de curso po-
dem ser marcados com a ajuda de uma caixa de verificação. Para a seleção dos
eixos desejados use as teclas do cursor. A tecla de espaço permite a ativação ou
desativação do respetivo eixo. Um tique significa que para este eixo pode ser defi-
nido o interruptor de fim de curso de software.
“Reset” repõe os valores originais dos interruptores de fim de curso de softwa-
re.
A softkey “Set” define os interruptores de fim de curso de software dos eixos
selecionados de novo. Esta ação poderá ser anulada, a qualquer momento,
mesmo numa altura posterior, premindo a softkey “Reset”.
ProgExpPHR4.1.7 12.03.06 pt
209 de 212
Programação perito
Através deste menu pode ser definido o meio de saída desejado, ou seja, aquele que é
usado com “Saída” --> “Programa atual” ou “Imprimir” --> “Aplicações”.
Enquanto não for definido um meio de saída, a saída se realiza como arquivo de texto,
através do caminho definido em “Set diretório”. Se não existir um caminho de saída defi-
nido, é usado o caminho padrão “C:\USERPROG”.
Impressora
Se houver uma impressora configurada no sistema operativo, é esta que é usada para a
saída. Caso não tenha sido configurada uma impressora, a janela de mensagens mostra a
respectiva mensagem.
Editor
O programa selecionado é carregado para o editor disponibilizado pelo sistema operativo
“WordPad”, a fim de ser editado.
ProgExpPHR4.1.7 12.03.06 pt
210 de 212
11 Editor externo (continuação)
Ficheiro
Em caso de saída do programa atual através de “Imprimir”, este programa é guardado como
ficheiro de texto no caminho ou com o nome de ficheiro definido através de “Diretório set”.
Se a saída de todos os programas de usuário se realizar através de “Imprimir”, na pasta
definida com “Diretório set” é criado o subdirectório “USERPROG” onde os programas são
guardados como ficheiros de texto.
Com um editor de texto, qualquer programa guardado pode ser visualizado ou modificado.
Diretório set
Esta opção só é necessária quando se pretende guardar os programos como ficheiros no
disco duro. Na janela de diálogo pode ser indicado o diretório de destino e o nome do ficheiro
que se pretende imprimir. Se todos os programas de usuário saírem através de “Arquivo”
(Ficheiro) é criado o subdirectório “USERPROG” e os ficheiros de texto são guardados aí.
ProgExpPHR4.1.7 12.03.06 pt
211 de 212
Programação perito
11.9.1 Versão
Na janela de mensagens é mostrado o número de versão do editor externo.
Nº Tempo Mensagem Resultado
003 17:16:31 Versão 5.0.26
002 17:16:27 Ficheiro Abrir OK
001 17:16:27 ExtEdit start OK Número de versão
NOTAS:
ProgExpPHR4.1.7 12.03.06 pt
212 de 212
Index
Index -- i
Index
Index -- ii
Index
ENDFOLD, 19 Índex, 35
ENDFOR, 119 Índex de campo, 35
ENDLOOP, 124 Indicação da posição, 108
ENDWHILE, 121 INI, 72
Entradas analógicas, 144 Início da aproximação, 93
Entradas digitais, 146 Instrução de salto, 116
Entradas/saídas binárias, 131 Instruções, 10
Entradas/saídas digitais, 134 Instruções de entrada/saída, 130
ENUM, 40 Instruções de espera, 125
Específicos dos eixos, 59 Instruções de movimento, 59
Estrutura de ficheiro, 9 INT, 33
Estruturas, 38 Interligação, 48
Estruturas predefinidas, 40 Interligação de bits E, 49
EXIT, 124 Interligação de bits OU, 49
EXT, 72 Interligação de bits OU exclusivo, 49
Interligação de frame, 43
F Interpolação referente à base, 64
Interpolação referente à garra, 65
Fechar todas as FOLD, 19
Interrupt, 157
Ferramenta fixa, 65
Interruptores de fim de curso do software, 209
Ficheiros de sistema, 54
Introduzir, 15
Filtrar bits, 50
Introduzir bits, 50
Flags, 55, 167
Inversão de bits, 49
Flags cíclicos, 55
IR_STOPM.SRC, 8
FLT_SERV.DAT, 8
ISTEP, 22
FLT_SERV.SRC, 8
FOLD, 19
FOLD atual abr/fech, 19 K
FOR, 119 KUKA--Robot--Language, 106
Frame, 40, 108
Funções, 9, 148
L
Funções de bloco, 14
Limpar lista de dados, 195
LIN, 83, 112
G LIN !, 104
Global, 149, 180 LIN_REL, 83, 112
Go, 22 Linguagem de máquina, 12
GOTO, 116 Lista de dados, 10
Lista de parâmetros, 151
H Listas de dados, 178
Listas de dados globais, 179
H50.SRC, 8
Listas de dados locais, 178
H70.SRC, 8
Local, 149
Hex Dec, 34
LOOP, 124
Loop de contagem, 119
I Loop de não rejeição, 122
Identificação de bloco, 118 Loop de rejeição, 121
IF, 117 Loop infinito, 124
Imprimir, 187 Loops, 119
Index -- iii
Index
M Prioridades de operadores, 51
Programação (“teach”) dos pontos, 104
Manipulação de dados, 42
Programação de movimento, 59
Marca, 116
PROKOR, 14
Medição rápida, 166
PSTEP, 22
Modos de execução dos programas, 22
PTP, 66, 69, 110
Montante, 52
PTP !, 104
Movimentos circulares, 84
PTP sincronizado, 66
Movimentos de aproximação, 89
PTP_REL, 69, 110
Movimentos de trajetória, 77
PUBLIC, 179
Movimentos lineares, 83
PULSE, 139
Movimentos ponto--a--ponto, 66
Movimentos--CP, 77
MSG_DEMO.SRC, 8 R
MSTEP, 22 Raiz, 52
Mudança da ferramenta, 103 Ramificação condicional, 117
Ramificações de programa, 116
REAL, 33, 34
N
Reflexo dos eixos, 190
NEW_SERV.SRC, 8 REPEAT, 122
Nome, 29 RESUME, 164
Retirar bits, 50
O
Objetos de dados, 31 S
Ocultar partes de programa, 19 S e T, 73
Operador, 42 Saídas analógicas, 141
Operador geométrico, 43 Saídas de impulso, 139
Operador geométrico “:”, 109 SAK, 73
Operadores aritméticos, 42 Seção de declaração, 9
Operadores de bits, 49 Seção de instrução, 9
Operadores de comparação, 47 Seno, coseno, tangente, 52
Operadores lógicos, 48 Seqüências de caratéres, 38
Operando, 42 Símbolo de espaço, 107
Orientação, 78 SIN(X), 52
SINAL, 131
Singularidades da cinemática, 73
P
Sistema binário, 33
P00.DAT, 8 Sistema de coordenadas, 70
P00.SRC, 8 Sistema de coordenadas cartesiano, 60
Parada automática do avanço, 87 Sistema de coordenadas da base, 64
Paragem do avanço, 130 Sistema de coordenadas da ferramenta, 63
Parâmetros de movimento, 105 Sistema de coordenadas de correção, 199
PERCEPT.SRC, 9 Sistema de coordenadas do robô, 63
Perfil de deslocação mais elevado, 67 Sistema de coordenadas mundial, 63
Ponto de carpo, 74 Sistema decimal, 33
Ponto separador, 38 Sistema hexadecimal, 33
POS, 40, 108 Sistemas de coordenadas, 59
Posição zero mecânica, 68 SPS.SUB, 8
Prioridade, 51, 159, 168, 172 SQRT(X), 52
Index -- iv
Index
Status, 73 Velocidade, 77
STOP, 128 Velocidade dos eixos, 68
STRUC, 38 Vincular, 12
Subprogramas, 9, 148
Substituir, 16
SWITCH, 118 W
WAIT, 125
T
WEAV_DEF.SRC, 9
TAN(X), 52
WHILE, 121
TCP, 65
Tempo de vida, 30
Temporizador, 54 Z
Tipo de dados, 31 Zona acima da cabeça, 74
Tipos de dados geométricos, 40
Zona base, 74
Tipos de dados simples, 33
Tipos de enumeração, 40
Tolerâncias, 202
Tool Center Point, 66
Touch Up, 108
Transferência de parâmetros, 151
Transformação das coordenadas, 60
Transformação para a frente, 60
Transformação para trás, 60
Translações, 62
Tratamento de erros, 24
Tratamento de interrupt, 156
Tratamento principal, 86
Triedro que acompanha a trajetória, 199
Trigger, 168
Trigger de flancos, 159
TTS, 199
Turn, 73
U
UNTIL, 122
USER_GRP.DAT, 9
USER_GRP.SRC, 9
USERSPOT.SRC, 9
V
VAR, 107
Variáveis de sistema, 54
Variáveis e declarações, 29
Variáveis e nomes, 29
Variável + referente à trajetória, 80
Variável + referente ao espaço, 82
Variável global, 180
Index -- v