Você está na página 1de 11

PMR3502 - Elementos de Robótica

LINGUAGEM KRL DE PROGRAMAÇÃO DOS ROBÔS KUKA

1) Modo especialista

• No modo especialista é possível escrever programas usando a linguagem de programação


KRL (Kuka Robot Language).

• Para entrar no modo especialista basta realizar os seguintes passos:

- Selecionar Configure;
- Selecionar User Group (Tecla 5);
- Escolher Log On;
- Selecionar Expert;
- Digitar senha (kuka);
- Clicar em Log On.

• Para iniciar um programa:

- Selecionar New;
- Selecionar Submit (Comment: User Submit);
- New novamente;
- Digitar o nome do arquivo;
- Clicar em Ok;
- Clicar em Open para editar arquivo.

Atenção: Usar o tipo de arquivo “Usuário Submit”, pois ele garante uma série de inicializações
vitais para o funcionamento do robô. Em casos de sub-rotinas esse tipo de arquivo não é
necessário, podendo-se utilizar o arquivo tipo Expert.

2) Estrutura de programas

• Todo programa é composto por dois arquivos: um arquivo de código (name.src) e um


arquivo tipo data (name.dat).

• Observação: para excluir um arquivo deve-se excluir os dois arquivos (src e dat).

• Ao criar um programa do tipo “User Submit”, ele é iniciado com o seguinte conteúdo:

- 1º Linha: DEF nome_programa(argumentos);


- As linhas seguintes, até o comando INI, são dedicadas para declaração de variáveis;
- Linha INI ⇒ realiza inicializações de variáveis necessárias para execução do programa;
- Linha PTP HOME;
- As linhas seguintes, entre os dois comandos PTP HOME, são dedicadas às instruções do
código escritas pelo programador;
- Linha PTP HOME;

1
PMR3502 - Elementos de Robótica

- END.

• Uma boa prática de programação de Robótica é o primeiro e último comandos de movimento


serem PTP HOME.

• Linhas em vermelhos no programa são de fato comentários que incluem vários comandos.
Para visualizar o que está dentro desses comentários deve-se fazer:

- Selecionar Program;
- Selecionar Fold;
- Selecionar All folds open (opcional dependendo de quais comentários deseja visualizar).

• O programa quando é criado fica armazenamento no diretório KRC:\R1\Program\.

3) Tipos de variáveis da linguagem KRL

• Toda variável a ser utilizada deve ser declarada.

• Existem vários tipos de variáveis.

a) Variável tipo real:

- Declaração:

REAL X, Y, Z, R

- Atribuição de valores:
X = 8.025
Y = −0.0015
Z = 23.1E+05

b) Variável tipo inteiro:

- Declaração:

INT I, J, CONT, W

- Atribuição de valores:

I = 100
J = −8
W = ‘B1001‘ (8)
CONT = ‘H2A’ (42)

c) Variável tipo boolean:

- Declaração:

2
PMR3502 - Elementos de Robótica

BOL ST1, ST2

- Atribuição de valores:

ST1 = TRUE
ST2 = FALSE

d) Variável tipo Char.

- Declaração:

CHAR A, B, C

- Atribuição de valores:

A = “G”
B = “R”
C= “C”

4) Vetores e Matrizes

• Podem-se definir vetores e matrizes de qualquer tipo de variável.

• Declaração:

DECL INT CONT[10], I


DECL REAL X[10], Y[10,10], Z
DECL CHAR W[10], A ,B

• Atribuição de Valores:

FOR I = 1 to 20
X[I] = I
FOR J = 1 to 20
Y[I,J] = I*J
ENDFOR
ENDFOR

• Por exemplo, para strings fazemos:

W = “CASA”

W[1] = “C”
W[2] = ”A”
W[3] = ”S”
W[4] = ”A”
W[5] = ” “.
3
PMR3502 - Elementos de Robótica

Neste exemplo a string ocupa os 4 primeiros elementos do vetor W.

• Observação: matrizes de no máximo 3 dimensões.

• Boa prática manda sempre inicializar os valores de um vetor ou matriz

5) Estrutura de dados

• Definição de uma estrutura:

STRUCT POINT REAL X, Y, Z; INT I

STRUCT ⇒ comando para criar a estrutura.


POINT ⇒ nome da estrutura.
X, Y, Z, I ⇒ variáveis da estrutura POINT.

• Declaração de variável com a estrutura POINT:

DECL POINT P1, P2

• Atribuição de valores:

P1.X = 10
P1.Y = -8.1
P1.I = 20

Ou simplesmente,

P1 = {X 10, Y -8.1, I 20}

6) Estruturas tipo POS e E6POS

• Ambas as estruturas guardam a posição e orientação de um sistema de coordenadas.

• POS ⇒ REAL X, Y, Z, A (ângulo yaw – rotação em Z), B (ângulo pitch – rotação em Y), C
(ângulo roll – rotação em X).

Obervação: as coordenadas X, Y e Z estão em mm e A, B e C estão em graus.

• Variável tipo E6POS ⇒ igual a POS, mas possui outras variáveis.

• Declaração de variável:

DECL POS P1, XP2


DECL E6POS P5, YP

• Atribuição de Valores:

4
PMR3502 - Elementos de Robótica

P1.X = 10 (mm)
P1.A = 45 (graus)
P1 = {X 10; A 45}

• Quando se cria uma variável de posição importando um comando de movimento do menu de


comandos, o software põe a letra X na frente., ou seja, se a variável de posição aparece como
P1, então de fato o nome dela é XP1. Não esquecer desse padrão de definição de variáveis no
momento de referenciar posições criadas automaticamente pelo software.

• As variáveis de posições com os seus valores são armazenados no arquivo de dados.

7) Estrutura tipo FRAME e E6FRAME

• Estrutura usada para definir posição e orientação de sistema de coordenadas.

• Formatos de FRAME e E6FRAME são iguais a POS e E6POS.

8) Estrutura tipo AXIS e E6AXIS

• Estrutura para armazenar as posições das articulações do robô (em graus).

• Formato:

AXIS ⇒ REAL A1, A2, A3, A4, A5, A6

E6AXIS ⇒ igual a AXIS, mas possui outras variáveis extras.

• Declaração de variáveis:

DECL AXIS EIXO1, EIXO2


DECL E6AXIS EX

• Atribuição de valores:

EIXO1.A1 = 10
EIXO1.A6 = −45
EIXO1 = {A1 10, A6 -45}

9) Movimentos relativos

a) Movimento relativo ponto-a-ponto

• Realiza um movimento relativo das articulações em relação às posições onde se encontram.

Exemplo: PTP_REL {A1 10, A2 30, A6 – 45}

5
PMR3502 - Elementos de Robótica

Nesse exemplo, o robô gira a articulação 1 de 10° graus, a articulação 2 de 30° e a


articulação 6 de −45°.

b) Movimento linear relativo

• Realiza um movimento relativo linear da ferramenta em relação à posição onde se


encontra.

Exemplo: LIN_REL {X 100, Y-205, A30, C – 45}

Nesse exemplo, o robô movimenta segundo uma reta o centro da ferramenta de 100 mm
na direção x, −205 mm na direção y, gira o sistema de coordenadas da ferramenta de 30°
em torno do eixo z e gira -45° em torno do eixo x.

Exemplo 2: LIN_REL P1 (Obs: Variável tipo POS ou E6POS)

Nesse exemplo, o robô movimenta seguindo uma reta o centro da ferramenta e gira a
ferramenta nos valores armazenados na variável P1.

c) Movimento circular relativo

• Realiza um movimento relativo circular da ferramenta em relação à posição onde se


encontra.

• Sintaxe:

CIRC_REL PM, PF, CA

onde PM é a posição intermediária do arco de círculo relativa ao ponto inicial, PF é a


posição final do arco de círculo relativa ao ponto inicial e CA é o ângulo em graus do
arco a ser descrito.

• Exemplo: mover em círculo no plano xy com raio 50 mm

CIRC_REL {X 50, Y-50}, {X 100}, CA 360

PI
Y

X
PM R = 50

PF

6
PMR3502 - Elementos de Robótica

d) Movimento com sequência de transformações

• É possível realizar um movimento tipo PTP, LIN ou CIRC em relação a um sistema de


coordenadas que não seja o da base do robô (WORLD).

• Exemplos:

LIN P1 ⇒ movimenta ferramenta para posição/orientação definida em P1 em relação ao


sistema WORLD seguindo uma reta.

LIN B1:P1 ⇒ movimenta a ferramenta para posição definida em P1 em relação ao


sistema de coordenada definido em B1 seguindo uma reta. B1 deve ser uma variável tipo
FRAME ou POS.

10) Comandos de Condição

Os comandos de condição da linguagem KRL seguem o padrão normal das linguagens clássicas
de programação.

a) IF-THEN-ELSE

• A sintaxe do comando IF-THEN-ELSE é a seguinte:

IF A == 0 THEN
Instruções
ELSE
Instruções
ENDIF

• Operadores lógicos existentes:

= = [igual];
<= [menor ou igual];
>= [maior ou igual];
< [menor];
> [maior];
<> [diferente].

• Podemos incluir nos comandos de condição entradas digitais:

IF $IN[1] == TRUE THEN


Instruções
ELSE
Instruções
ENDIF

7
PMR3502 - Elementos de Robótica

• Podem-se utilizar também operadores lógicos: NOT, AND, OR, XOR.

b) Switch – Case

• A sintaxe do comando SWITCH-CASE é a seguinte:

SWITCH VAR
CASE 1
Instruções
CASE 2, 3
Instruções
CASE 5
Instruções
DEFAULT (Opcional)
Instruções (em geral usado para casos de erro)
ENDSWITCH

• O comando SWITCH VAR redireciona o cálculo para o CASE de número igual ao contido na
variável VAR. Por exemplo, se VAR = 1 então executa CASE 1. Assim, se VAR = 2

• VAR é uma variável tipo inteiro (INT), mas pode ser também uma variável tipo caractere
(CHAR).

11) Comandos de repetição

a) Comando FOR

• A sintaxe do comando FOR é a seguinte:

FOR I = 1 TO 10
Instruções
ENDFOR

• É possível variar o contador com incrementos maiores do que 1, como segue, para uma
variação com incremento de 2:

FOR I = 1 TO 10 STEP 2
Instruções
ENDFOR

b) Comando LOOP

• O comando LOOP precisa de uma condição de saída. A sua sintaxe e seu uso é o
seguinte:

8
PMR3502 - Elementos de Robótica

LOOP
I = I + 1 (contador)
IF I == 100 THEN (Condição de Saída)
Instruções
EXIT
ENDIF
ENDLOOP

c) Comando REPEAT-UNTIL

• O comando REPEAT-UNTIL precisa de um contador para verificar a condição de


parada. A sua sintaxe e seu uso é o seguinte:

CONT = 0
REPEAT
CONT = CONT + 1
Instruções
UNTIL CONT >= 100 (Condição de Parada )

d) Comando WHILE

• O comando WHILE precisa de um contador para verificar a condição de parada. A sua


sintaxe e seu uso é o seguinte:

I=0
WHILE I < 100
I = I+1
Instruções
ENDWHILE

11) Outros comandos

a) Comando GOTO

• O comando GOTO direciona a execução do programa para a linha onde está o “label”. A sua
sintaxe é a seguinte:

GOTO LB1 ⇒ execução desse comando, faz com que a próxima linha ou próximo comando
executado seja a linha onde está o comando LB1.

LB1: (Pode estar antes ou após o comando GOTO LB1)

• LB1 é um nome que escolhemos para o “label”, podendo ser usado qualquer nome.

b) Comando WAIT FOR

• O comando WIT FOR para a execução do programa até a condição determinada ser satisfeita.

9
PMR3502 - Elementos de Robótica

• O comando WAIT FOR é útil para controlar a execução do programa por meio das entradas
digitais.

• No exemplo a seguir a execução do programa fica esperando a entrada digital #1 ser ligada.

WAIT FOR $IN[1]

• No exemplo a seguir a execução do programa fica esperando a entrada digital #2 ser desligada.

WAIT FOR $IN[2] = = FALSE

c) Comando WAIT SEC

• O comando WAIT SEC para a execução do programa por um intervalo de tempo definido no
comando.

• No exemplo a seguir a execução do programa é interrompida por 17,156 segundos.

WAIT SEC 17.156

12) Subrotinas

• As subrotinas usadas em um programa precisam ser declaradas no programa principal.

• Uma subrotina pode estar em um arquivo separado do programa principal, mas nesse caso o nome do
programa deve ser igual ao nome da subrotina.

• Exemplo de subrotina ⇒ TEST.

 No arquivo do programa fonte da subrotina TEST.SRC:

DEF TEST(X: OUT, P1:IN, I:OUT)


; deve-se declarar todos os argumentos da subrotina
INT I
REAL X
POS P1
Instruções da subrotina
END

 Ao declarar os argumentos da subrotina deve-se definir se são entradas ou saídas da subrotina.

Variáveis de entrada se modificadas dentro da subrotina não são modificados quando se termina a
execução da subrotina e volta-se para o programa principal.

Variáveis de saída são modificadas/calculadas dentro da subrotina e seus novos valores são
transferidos para o programa principal.

 No programa principal (onde se usa e chama a subrotina) deve-se declarar a subrotina antes do
comando INI, da seguinte forma:

EXT TEST(REAL:OUT, POS:IN, INT: OUT)

10
PMR3502 - Elementos de Robótica

Na declaração da subrotina definem-se os seus argumentos de saída e de entrada, especificando os


tipos de variáveis.

 As variáveis que são argumentos da subrotina devem ser declaradas no programa principal antes
de chamar a subrotina.

 A declaração das variáveis e a chamada da subrotina no programa principal é feita da seguinte


forma:

REAL X
INT I
POS P1

TESTE(X,P1,I)

13) Variável tipo SIGNAL

• Entradas e saídas digitais podem ser agrupadas e tratadas como se fossem números inteiros.

• Por exemplo, se agruparmos 3 entradas digitais usando uma variável tipo SIGNAL então podemos
usar essa entradas como se fossem um número inteiro de 3 bits, ou seja, que varia de 0 a 7. A mesma
coisa pode ser feita com as saídas digitais.

• A declaração de uma variável tipo SIGNAL, agrupando entradas e saída digitais, é feita da seguinte
forma:

SIGNAL INPUT $IN[2] TO $IN[4]

SIGNAL OUTPUT $OUT[2] TO $OUT[4]

 Nesse exemplo, como agrupamos 3 entradas e 3 saídas nas variáveis INPUT e OUPUT elas
consistem de números inteiros de 3 bits. O bit menos significativo de INPUT é a entrada IN[2] e
o bit menor significativo de OUTPUT é a saída OUT[2].

• Observa-se que a variável INPUT altera de valor toda vez que as entradas digitais são
alteradas. Por exemplo, se as entradas estiverem na seguinte condição:

IN[2] = TRUE
IN[3] = TRUE
IN[4] = FALSE

então a variável ENTRADA será igual 3.

• Se atribuirmos algum valor para a variável OUPUT as saídas correspondentes serão ativas ou
desligas, por exemplo:

OUTPUT = 3, ou OUPUT = ‘B011’

então teremos: OUT[2] = TRUE, OUT[3] = TRUE e OUT[4] = FALSE.

11

Você também pode gostar