Buscar

Apostila Conhecendo o Robô Scara

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CURSO TÉCNICO EM AUTOMAÇÃO 
 
IFG – ITUMBIARA 
 
 
 
 
Prof. Wellington do Prado 
 
MAIO/2010 
 2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CONHECENDO O ROBÔ 
 
 
 
S C A R A 
 
 
AS CONFIGURAÇÕES DOS ROBÔS Robótica 
 
A configuração SCARA foi desenvolvida por um grupo de empresas japonesas. Este 
nome vem de Selective Compliance Assembly Robot Arm (Braço Robótico para Montagem com 
Flexibilidade Seletiva). O objetivo destas empresas era obter um dispositivo descomplicado 
para operar com três ou quatro graus de liberdade na montagem de peças no sentido vertical. 
Esta tarefa requer grande rigidez no sentido vertical (eixo Z) e uma pequena flexibilidade nas 
direções horizontais (plano XY) para facilitar o encaixe correto das peças manipuladas. 
 
A ESTRUTURA 
 
A figura 1 ilustra a estrutura padrão de uma configuração SCARA, que possui quatro 
graus de liberdade, sendo três deles para posicionar o punho (eixos X, Y e Z) e um para 
orientar a garra (ou ferramenta). A figura 1 também mostra o sistema de coordenadas global, 
representado pelos eixos X0, Y0 e Z0. 
 
 
 
 
 
 
 
 
 
 
 3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1 – Estrutura padrão da configuração SCARA. 
 
 
O elo (link) representado na cor laranja é a base do robô e é fixada ao local de trabalho. 
O elo roxo, que será chamado de Teta1, é ligado à base por uma junta rotacional centrada no 
eixo Z0. O elo vermelho, denominado de Teta2, é ligado ao elo roxo por uma outra junta 
rotacional. Estas duas primeiras juntas permitem o posicionamento do punho no plano XY. Na 
figura 1 temos Teta1 e Teta2 em suas posições iniciais. O último elo possui em sua parte 
inferior o punho, e está representado em amarelo. A junta entre os elos vermelho e amarelo é, 
na realidade, dupla. O elo amarelo desliza verticalmente em relação ao elo vermelho, 
permitindo o posicionamento do punho no eixo Z, e também gira em seu próprio eixo 
possibilitando a orientação do dispositivo que será fixado ao punho (esse movimento será 
denominado de Roll). 
A configuração descrita é a mais usual, mas há variantes. Por exemplo, há modelos 
onde o movimento vertical (eixo Z) é realizado pelo primeiro elo e não pelo último. 
 
VOLUME DE TRABALHO 
 
O volume de trabalho de um robô é o conjunto de todos os pontos do espaço que o seu 
punho pode alcançar e cada configuração possui uma forma característica. A figura 2 mostra 
como o volume de trabalho de um robô SCARA é formado por quatro arcos de circunferência. 
 
 4
 
 
 
 
 
 
 
 
A B C 
 
 
 
 
 
 
 
 
 
 
 
 
D E F 
 
Figura 2 – Formação do volume de trabalho da configuração SCARA. 
 
A análise da figura 2 inicia-se com o punho no limite superior e com Teta1 e Teta2 nas 
posições iniciais. Em A tem-se o limite imposto pela movimentação apenas de Teta2, que saiu 
de sua posição inicial (θ2=0º) e atingiu seu ângulo máximo. Em B Teta2 é mantido na posição 
final e apenas Teta1 move-se desde seu ângulo inicial (θ1=0º) até a posição final. Em C o 
movimento é realizado apenas por Teta2 que sai da sua posição final e retorna para a posição 
inicial. Em D é mostrado o retorno de Teta1 para a posição inicial, mas ainda na metade do 
trajeto, que é completado em E. Portanto, em E pode-se observar o plano superior do volume 
de trabalho. Com o punho na posição inferior obtém-se a mesma forma geométrica, que 
representa o plano de trabalho inferior. Sendo assim, em F tem-se a representação do volume 
de trabalho típico de um robô SCARA. 
Há robôs onde o eixo Z é comandado pneumaticamente e, dessa forma, tem apenas 
 
duas posições possíveis. Nestes robôs o volume de trabalho é formado apenas pelos planos 
superior e inferior, não podendo atingir posições intermediárias. Nos robôs com eixo Z servo- 
controlado é possível posicionar o punho em qualquer ponto entre os limites superior e inferior. 
 
DESCRIÇÃO MATEMÁTICA 
 
Para descrever matematicamente um robô é necessário definir as dimensões 
invariáveis (constantes construtivas) e as dimensões variáveis. A figura 3 apresenta, em duas 
vistas, as constantes L0, L1 e L2 destacadas em preto, as variáveis θ1, θ2 e d em azul e as 
coordenadas cartesianas do punho X, Y e Z, em rosa. Deve-se observar que na vista à 
esquerda Teta1 e Teta2 estão na posição inicial, enquanto que na vista à direita não. A 
 5
constante L0 é a altura atingida pelo punho quando está na posição mínima. A constante L1 é 
o comprimento de Teta1 enquanto L2 é o comprimento de Teta2. Compare o desenho da 
direita com a figura 4 (página 24) da edição no 2. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 3 – Dimensões variáveis e invariáveis da configuração SCARA. 
 
 
A figura 4 apresenta as equações da cinemática direta, ou seja, dados os valores de θ1, 
 
θ2 e d (variáveis das juntas) é possível calcular as coordenadas cartesianas do punho. 
 
X = L1.Cos(θ1) + L2.[Cos(θ1).Cos(θ2) − Sen(θ1).Sen(θ2)] 
 
Y = L1.Sen(θ1) + L2.[Sen(θ1).Cos(θ2) + Cos(θ1).Sen(θ2)] 
 
Z = d + L0 
 
Figura 4 – Equações da cinemática direta. 
 
 
Mas, em um programa de controle do robô há também outra necessidade de cálculo 
geométrico. É quando o usuário define as coordenadas cartesianas (X, Y e Z) onde deseja 
posicionar o punho. Nesta situação deve-se calcular os valores de θ1, θ2 e d necessários para 
atingir a posição meta. As equações que permitem esse cálculo são conhecidas como 
cinemática inversa, e estão apresentadas na figura 5. 
 
θ
1
 
=
 
A
r
c
 
Figura 5 – Equações da cinemática inversa. 
 6
ANÁLISE DE MODELOS INDUSTRIAIS 
 
Para um entendimento mais completo é interessante analisar as características de 
modelos reais. Serão usados como exemplo os robôs IBM 7535 e IBM 7545, ambos 
disponíveis no LAM – Laboratório de Automação da Manufatura da UNIFEI (Universidade 
Federal de Itajubá), onde dividem espaço com um centro de torneamento Nardini e um centro 
de usinagem Fadal VMC-15. 
Estes robôs não são mais fabricados, mas suas características podem ser observadas 
em sites como http://www.servosystems.com/used_robots_index.htm. Além disso, há robôs 
como esses em outras universidades, podendo-se citar a Unicamp e a Escola de Engenharia 
da USP – São Carlos. A tabela 1 apresenta as principais características desses equipamentos. 
 
Tabela 1 – Características dos robôs 7535 e 7545 da IBM. 
 
 IBM 7535 IBM 7545 
Acionamento Pneumático Servo-controlado 
Curso 75 mm 250 mm 
 
 
Eixo Z 
Rotação - Roll ± 180º ± 180º 
Rotação – θ1 0 à 200º 0 à 200º 
Teta1 
L1 400 mm 700 mm 
Rotação – θ2 0 à 160º 0 à 135º 
Teta2 
L2 250 mm 530 mm 
Capacidade 6 kg 10 kg 
Repetibilidade ± 0,05 mm ± 0,05 mm 
 
 
A figura 6 ilustra os três componentes dos IBM, que são o manipulador, a unidade de 
controle (processador) e o painel de controle. Mas, para operar o equipamento é necessário 
um microcomputador PC para digitar os programas, realizar a compilação e enviá-lo ao robô. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 6 – Componentes dos robôs IBM 7535 e IBM 7545. 
 7
 
A figura 7 apresenta fotos dos robôs citados, sendo à esquerda o IBM 7535 e à direita o 
 
IBM 7545. No 7535 pode-se observar uma garra pneumática fixada no punho. 
 
 
 
Figura 7 –Robôs SCARA modelos IBM 7535 (esquerda) e IBM 7545 (direita). 
 
 
PAINEL DE CONTROLE 
 
A figura 8 apresenta o painel de controle do IBM 7535, que possui uma tecla a menos 
que o 7545. Pela verificação das funções das teclas principais pode-se conhecer como é a 
operação deste equipamento. O teclado é de membrana e cada uma das teclas possui um LED 
vermelho para indicar que foi pressionado. As três teclas do canto superior direito (Power, 
Home e Memory) não são teclas e sim indicadores luminosos, da mesma forma que os seis 
indicadores de erros (SE, PF, OR, OT, TE e DE). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 8 – Painel de controle do robôs IBM 7535. 
 8
O grande botão vermelho com a inscrição STOP é a parada de emergência. Quando 
pressionado desliga todas as saídas. Estes robôs, quando tem seus motores desenergizados, 
permitem que Teta1 e Teta2 sejam movimentados com as mãos, sem grande esforço. Quando 
este botão é pressionado fica travado. Para destravá-lo é necessário gira-lo. 
Manip Power: quando o equipamento é ligado, ou após uma parada de emergência, pressiona- 
se esta tecla para que os servo-motores e demais dispositivos sejam energizados. O 
indicador luminoso Power irá ficar aceso. 
Return Home: o sistema de medição destes robôs é incremental e dessa forma, quando é 
acionado, não sabe onde Teta1, Teta2, Roll e Eixo Z estão. É necessário iniciar o 
procedimento chamado de referenciamento. Ao pressionar esta tecla os quatro eixos irão 
se movimentar na direção de suas respectivas posições iniciais, em busca de indicadores 
de posição (sensores). Para evitar colisões com dispositivos na área de trabalho, 
primeiramente é movimentado o Eixo Z para a direção superior. Quando os quatro eixos 
tiverem encontrado suas marcas o equipamento estará referenciado e pronto para entrar 
em operação. O indicador luminoso Home se acenderá. 
Reset Error: quando algum dos seis erros interrompe a execução de um programa o operador 
deve remover a causa do erro e, após isso, pressionar esta tecla para prosseguir. Por 
exemplo, quando o robô fica aguardando um sinal de um equipamento externo por um 
determinado tempo programado e o sinal não é enviado, ocorre um erro OT (Out Time). 
On Line: permite estabelecer comunicação com o computador para envio ou recebimento de 
programas, ou movimentação dos eixos por meio do teclado do computador. 
Off Line: encerra a conecção com o computador. É necessário estar neste estado para 
movimentação manual do robô ou execução de programas. 
Auto: prepara o sistema para execução de programas (modo Automático). 
Manual: prepara o sistema para movimentação manual. 
App1 à App5: seleciona o programa armazenado em uma das cinco áreas de memória. 
 
Start Cycle: se um programa acaba de ser selecionado ou se foi utilizada a tecla Stop Cycle, 
inicia a execução do programa a partir de seu início. Caso tenha sido utilizada a tecla Stop 
& Mem o programa é executado a partir do ponto memorizado. 
 
Stop Cycle: interrompe a execução do programa que está sendo executado. 
 
Stop & Mem: interrompe a execução do programa que está sendo executado e armazena a 
posição para reinicialização a partir deste ponto. 
Step: faz o sistema entrar na execução passo-a-passo, ou seja, é necessário usar esta tecla 
 
para a execução de cada linha do programa. 
 
 
 9
As teclas que serão descritas em seguida só operam quando o sistema está em modo 
 
Manual. 
 
Gripper Open / Gripper Close: abre e fecha a garra do robô (acionamento pneumático). 
 
Z Up / Z Down: movimentam o eixo Z para cima e para baixo (pneumático ou servo-controlado). 
 
θ1+ / θ1-: movimentam Teta1 no sentido positivo ou negativo. 
θ2+ / θ2-: movimentam Teta2 no sentido positivo ou negativo. 
Roll+ / Roll-: gira o eixo Z no sentido positivo ou negativo. 
Rapid: utilizado com θ1, θ2, Roll e Z para movimentação mais rápida. 
 
 
 
SIMULADOR 
 
Os comandos mostrados podem ser experimentados em um simulador disponível em 
http://www.iem.efei.br/gorgulho/robo.html para ambiente Windows. Para utilizá-lo, após iniciar o 
programa vá para Arquivo – Novo e será aberta uma área para digitar um programa. O 
simulador não permite entrar no modo de simulação sem que seja criado um programa. Pode- 
se então digitar um programa que não faz nada, com apenas duas linhas, como mostra a 
figura 9. 
 
 
 
 
 
 
 
 
 
 
Figura 9 – Programa básico (que não faz nada). 
 
 
Depois de digitado basta usar a opção Compilar. Não havendo nenhum erro, é liberada 
a opção Simular. A tela de simulação está apresentada na figura 10. Observe que o robô está 
em uma posição X, Y e Roll qualquer e com o Eixo Z na posição inferior. Deve-se pressionar a 
tecla Manip Power para acionar o robô (o Led vermelho se acenderá). Em seguida use o botão 
Return Home para referenciá-lo. Observe a rotina de movimentos que é realizada. 
Após o referenciamento pode-se optar por entrar no modo Auto ou Manual. A tela 
mostrada pela figura 11 mostra os comandos de movimentação manual. Há também a opção 
de clicar com o mouse em uma posição da área de trabalho para movimentar o 7535. 
 
 
 
 
 
 
 
 
 
 
 10
 
 
Figura 10 – Tela de simulação com o robô desligado. 
 
 
 
 
Figura 11 – Robô na posição inicial e no modo de movimentação manual. 
 11
PRIMEIRA ETAPA 
 
INTRODUÇÃO 
 
Enquanto as linguagens de programação de CLP’s e CNC’s são divulgadas em livros, 
revistas e páginas na Internet, pouco se lê sobre a programação dos robôs que é, para muitos, 
um grande mistério. Como não há nenhuma padronização o que se tem hoje é uma grande 
quantidade de linguagens que inviabiliza às editoras abordar uma delas. Como são poucos os 
cursos técnicos e de formação profissional que dispõem de meios de fornecer conhecimentos 
sobre programação de robôs o aprendizado fica, basicamente, restrito aos treinamentos 
realizados nas próprias empresas, usuárias ou fornecedoras, desses equipamentos. 
 
 
A proposta desta série de 3 artigos é apresentar uma linguagem de fácil assimilação que 
permita aos leitores entender o “espírito da coisa”. Dessa forma, munido de um conhecimento 
preliminar, ficará mais simples encarar um futuro treinamento em uma outra linguagem, quando 
ingressar na vida profissional. 
 
 
A PROPOSTA DE APRENDIZAGEM 
 
 
 
Este software simula o robô IBM 7535, de configuração SCARA. A grande vantagem do 
uso desta configuração é o movimento do braço, que apesar de ser executado por juntas 
rotacionais, ocorre no plano XY, simplificando muito a visualização e o aprendizado. Robôs que 
executam complexos movimentos espaciais trariam apenas dificuldades ao iniciante. 
 
 
A linguagem utilizada por este equipamento é a AML (A Manufacturing Language), mais 
especificamente a AML/Entry Version 3. Trata-se de uma linguagem de estrutura e comandos 
simples que permitirão uma assimilação rápida. 
 
 12
 
IBM 7535 
 
A Figura 1 exibe uma representação do robô, bem como as dimensões da área de 
trabalho. O controle da garra envolve as coordenadas XY, a posição vertical e sua orientação R 
(rotação no plano XY). Por tratar-se de acionamento pneumático o movimento vertical possui 
apenas duas posições possíveis: totalmente em baixo (sem pressão) e totalmente em cima 
(com pressão). O órgão terminal que equipará o robô é uma garra pneumática com retorno por 
mola, ou seja, sem pressão ela permanece aberta. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1 – Vista do IBM 7535 e dimensões de sua área de trabalho. 
 
 
REGRAS BÁSICAS DA LINGUAGEM 
 
A primeira regrabásica é que toda linha encerra-se com o caractere ponto-e-vírgula. 
Outra regra refere-se às palavras que serão usadas. Alguns comandos requerem que um nome, 
que chamaremos de identificador, seja adotado pelo programador e que deve atender aos 
seguintes requisitos: 
• Até 72 caracteres; 
• O primeiro caractere deve ser alfabético; 
• Os demais caracteres podem ser alfabéticos, numéricos ou o caractere sublinhado (_); 
• O caractere sublinhado (_) não pode ser o último caractere do identificador; 
• Caracteres especiais, como o asterisco, não são permitidos; 
 
 
O USO DOS COMENTÁRIOS 
 
Um bom programa, seja em que linguagem for, deve possuir explicações que permitam 
que uma outra pessoa possa entender a sua lógica. Além disso, passado algum tempo, o 
próprio criador do programa terá muitas facilidades em lembrar-se do que fez se tiver colocado 
informações claras. 
 
 
 
 13
Em empresas que contam com vários programadores é interessante a adoção de um 
cabeçalho identificador com informações relevantes como: função do programa, nome do 
programador, data da programação, tarefas executadas, materiais manipulados, cliente 
solicitante etc. Cada empresa deve definir quais informações são importantes. 
 
 
Na linguagem AML o indicador de comentário são dois sinais negativos (--). O 
comentário pode estar sozinho em uma linha ou na mesma linha de um comando (desde que 
esteja após o ponto-e-vírgula). 
 
 
A ESTRUTURA DA LINGUAGEM AML 
 
A linguagem AML é baseada em sub-rotinas que tem um começo e um final claramente 
definidos. Cada sub-rotina deverá ter um identificador único, seguido pelo comando SUBR. 
Deve-se utilizar o caractere dois-pontos (:) para separar o identificador do comando. As sub- 
rotinas são encerradas com o comando END. 
 
 
O programa AML é formado por uma sub-rotina principal que poderá conter outras sub- 
rotinas internas. Estas sub-rotinas internas devem ser definidas logo no início da sub-rotina 
principal. Alguns comandos específicos são permitidos antes da declaração da sub-rotina 
principal. São comentários e comandos que definem constantes, contadores e pallet’s. A figura 
2 apresenta um esquema da estrutura da linguagem. 
 
 
 
Região para definição de: 
constantes 
contadores 
pallet's 
 
Id1:Subr; -- Início da sub-rotina principal 
 
Id2:Subr; 
. 
. 
. 
End; 
 
Id3:Subr; 
. 
. 
. 
End; 
 
. 
. 
. 
. 
. 
 
 
Sub-rotina interna 1 
 
 
 
 
 
Sub-rotina interna 2 
 
 
 
 
 
Comandos da 
sub-rotina principal 
 
End; -- Fim da sub-rotina principal 
 
 
Figura 2 – Estrutura da linguagem AML. 
 14
Na linguagem AML as sub-rotinas internas podem receber parâmetros. Isso permite a 
elaboração de programas mais curtos e flexíveis. Porém, este recurso não foi implementado no 
simulador e, portanto, não poderá ser explorado. 
 
CONTROLE DO EIXO VERTICAL (EIXO Z) 
 
Os comandos que controlam este eixo são UP, para fornecer pressão e subir o eixo Z e 
DOWN, para cessar a pressão. O peso próprio do eixo vertical, somado ao peso do órgão 
terminal e da carga fazem com que volte para a posição inferior. Nota-se que são comandos 
extremamente simples, diretos e de fácil memorização. 
 
 
O eixo Z possui sensores de fim de curso que informam se está na posição superior ou 
inferior. Dessa forma o 7535 aguarda durante um tempo que o sinal proveniente dos 
respectivos sensores seja enviado para que o programa continue a sua execução. O tempo 
padrão é de 1.5 segundos. Caso o eixo Z não atinja a posição neste tempo um erro OT (Over 
Time) é gerado, interrompendo o programa. Isso pode ocorrer se a pressão da linha de ar 
comprimido baixar muito ou a garra ficar presa no processo. 
 
 
A linguagem AML abre uma possibilidade de controle sobre o tempo de espera padrão, 
mas que não foi implementada no simulador. São os comandos UP(tempo) e DOWN(tempo), 
onde tempo pode variar de 0 até 25.5 segundos em passos de 0.1 segundo. Um valor igual a 
zero fará com que o programa espere indefinidamente até que o eixo atinja a posição. 
 
 
CONTROLE DA GARRA 
 
A posição natural, devido ao retorno por mola, é aberta. Para controlar a garra têm-se os 
comandos GRASP (fecha) e RELEASE (abre). Um detalhe deve ser observado. O IBM 7535 
executa imediatamente os comandos já que não há sensores de fim de curso para indicar se a 
garra já encerrou o movimento de abertura ou fechamento. Sendo assim é necessário adotar 
um cuidado para evitar que, por exemplo, a garra se feche antes de ter chegado na posição 
inferior onde deveria pegar uma peça. 
 
 
A solução é usar o comando DELAY(tempo) que, como o próprio nome sugere, gasta 
um determinado tempo antes de seguir para o próximo comando. O parâmetro tempo tem 
como valores válidos a faixa que vai de 0 até 25.5 segundos, em incrementos de 0.1 segundo. 
Esse parâmetro também pode ser uma constante. O valor 0 (zero) indica uma espera infinita, 
mas essa opção não foi implementada no simulador, que aceita apenas a faixa de valores que 
vai de 0.1 até 25.5 segundos. 
 15
 
PROGRAMA 1 
 
De posse dos comandos já apresentados é possível elaborar um primeiro programa que 
servirá principalmente para entender a forma de uso do simulador. Após carregar o simulador, 
use a opção Arquivo do menu principal, seguida na opção Novo. Em seguida digite o programa 
exibido pela Figura 3. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 3 – Primeiro programa. 
 
 
O simulador possui uma rotina de tratamento de erros que apresenta o local do erro e 
informações sobre como agir para corrigi-lo. Mas podem ocorrer erros não previstos e o 
simulador, por não encontrar tratamento adequado, encerra sua execução. Sendo assim, 
sempre salve o programa digitado antes de prosseguir. 
 
 
A próxima etapa, como mostra o menu principal, é Compilar o programa. Da mesma 
forma como ocorre no robô real, a compilação procura por erros lógicos e de sintaxe. Se 
houver um erro, como mostra a Figura 4, realize a correção, salve e compile novamente. 
Quando não houver mais erros a opção Simular fica disponível no menu principal. 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 4 – Erro no programa da Figura 3. 
 
Acionar a opção Simular do menu principal faz surgir a tela principal da simulação, 
mostrada pela Figura 5. Nota-se a vista superior do robô, e duas vistas adicionais relacionadas 
 
 16
 
à garra na parte inferior direita (sendo uma vista lateral e a outra de topo). Na parte inferior da 
tela está o indicador de coordenadas que é composto pelas cotas X e Y e pela rotação R da 
garra. Como o robô ainda está desligado os valores não estão sendo mostrados. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 5 – Tela de simulação com o robô desligado. 
 
Ligue o robô com o botão Manip Power. A luz vermelha ao lado do botão se acenderá e 
o eixo Z, que estava na posição inferior, devido à falta de ar comprimido, irá subir. Isto ocorre 
por motivos de segurança. A próxima tarefa é fazer com que o braço se mova e estando na 
posição superior os riscos de colisão são minimizados. Esse movimento inicial será 
denominado de referenciamento. 
 
Este equipamento, como vários outros robôs e máquinas CNC, possui um sistema de 
medição incremental. Isto significa que ao ser ligado o sistema de controle não tem como saber 
a posição em que se encontram as partes móveis. Os fabricantes adotam rotinas especiais de 
movimentação para que cada elemento móvel encontre um sensor instaladoem local 
específico e de posição conhecida. Quando estes sensores são acionados o controle do 
equipamento passa a conhecer a posição atual e pode, então, ir para qualquer outra posição 
com segurança (isso explica porque impressoras e scanners fazem sons e movimentos 
quando são ligados – também possuem medição incremental e seguem suas rotinas 
automáticas de referenciamento). 
 17
 
Após ligar o robô deve-se acionar o botão Return Home para que ocorra o 
referenciamento. O simulador mostra os eixos Teta1, Teta2 e R girando lentamente em busca 
de suas referências. Assim que encontram os eixos afastam-se rapidamente para, em seguida, 
voltar à origem e confirmar a posição. Essa tarefa só é executada quando o robô é ligado. Em 
qualquer outro momento pode-se usar o botão Return Home para, rapidamente, trazer os 
eixos para a origem (coordenadas X=650 mm, Y=0 mm e R= 0º ). 
 
 
Acione o botão Auto para entrar no modo de execução automática. O menu de opções 
que se abrirá está exibido na Figura 6 e o texto do botão ficará vermelho. A parte inferior do 
painel refere-se às portas de entrada e saída, que serão discutidas posteriormente. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 6 – Painel de controle na opção Auto. 
 
 
A única opção disponível é Start Cycle. Acione este botão e o programa começará a 
rodar e as demais opções do painel de comando serão liberadas. O botão Stop interrompe a 
execução na linha que estiver sendo executada. O botão Stop Cycle interrompe a execução 
do programa quando for encontrado o comando END da sub-rotina principal. As outras funções 
serão discutidas posteriormente. 
 
A Figura 7 mostra a seqüência de eventos que deverão ser observados durante a 
execução do Programa1. Da esquerda para a direita tem-se: posição inicial, descida da garra 
 
 18
com o comando Down; fechamento da garra com o comando Grasp, subida do eixo Z com o 
 
comando Up e abertura da garra com o comando Release (que faz voltar ao estado inicial). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 7 – Execução do Programa1. 
 
 
MOVIMENTANDO O BRAÇO 
 
A linguagem AML utiliza-se de dois comandos para mover o braço e, simultaneamente, 
orientar a garra. Um dos comandos realiza um movimento absoluto, ou seja, a coordenada da 
posição final do movimento está relacionada com a origem do sistema de coordenadas XY. O 
outro comando faz com que a movimentação seja relativa à posição atual. 
 
 
Para movimentação absoluta o comando é PMOVE(PT(x, y, r)) onde os valores de x e y 
são em milímetros e r em graus. Outra forma de uso é criar uma constante com a coordenada 
desejada e usar o nome da constante no comando, ou seja, PMOVE(constante). A criação de 
constantes será abordada no próximo artigo. 
 
 
O comando para movimentação relativa, também chamada de incremental, é 
DPMOVE(x, y, r). O comando inicia-se com a letra D devido a palavra Delta, indicando que o 
movimento ocorre em relação à posição atual. Uma observação importante refere-se ao 
primeiro movimento executado pelo programa. Esse movimento não pode ser relativo e o 
simulador apresentará uma mensagem de erro durante a compilação. 
 
 
PROGRAMA 2 
 
A Figura 8 exibe um programa que executará alguns movimentos do braço. É usado 
tanto o comando de movimentação absoluta quanto incremental. Após a digitação, salve o 
programa e compile, indo em seguida para a tela de simulação. Observe que, durante a 
execução da simulação um pequeno ponto azul é posicionado nas coordenadas de destino do 
movimento. 
 
 
 
 
 19
 
 
Note que o terceiro movimento executa um giro da garra para a posição de 90 graus. 
Essa posição é mantida no movimento seguinte. O último movimento, que retorna o braço para 
a origem (x=650 e y=0), também leva a garra para a posição inicial (r=0). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 8 – Programa que movimenta o braço. 
 
 
O simulador possui o recurso de mostrar o caminho percorrido pela garra. Acione a 
opção Traço superior do menu Visualizar. O resultado da simulação do Programa 2 após o 
acionamento desta função está na Figura 9. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 9 – Simulação do Programa 2. 
 20
A opção Visualizar do menu apresenta outras funções. Em sistemas mais lentos pode- 
se mostrar o esqueleto ao invés do braço. As vistas superior e lateral da garra podem ser 
escondidas também, bem como os eixos. As outras funções (área linear, traço inferior e 
contadores) serão explicadas futuramente. No menu há a opção Limpar Área que apaga os 
traços deixados pela garra. 
 
 
COMENTÁRIOS FINAIS 
 
Esta primeira parte apresentou a forma de trabalho do simulador, a estrutura da 
linguagem AML, suas regras principais e os comandos mais básicos. Com esses comandos já 
é possível criar programas completos, mas sem muitos recursos. O próximo artigo irá mostrar 
como criar constantes, usar contadores, manipular as portas de interface e executar 
movimentos em linha reta. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 21
 
 
 
 
SEGUNDA ETAPA 
 
INTRODUÇÃO 
 
O artigo anterior apresentou rapidamente a forma de trabalhar com o simulador, a 
estrutura da linguagem AML e suas regras básicas e descreveu os comandos relacionados 
com a movimentação da garra e do braço. Os comandos apresentados, em ordem alfabética, 
estão na Tabela 1 juntamente com uma rápida descrição da sua função. 
 
Tabela 1 – Comandos apresentados no artigo anterior. 
 
DELAY Interrompe a execução do programa por um intervalo de tempo. 
DOWN Movimenta o eixo Z para a posição inferior. 
DPMOVE Movimenta o braço em relação à posição atual (movimento incremental). 
END Encerra uma sub-rotina. 
GRASP Aciona a garra, fechando-a. 
PMOVE Movimenta o braço em relação à origem das coordenadas (movimento absoluto). 
RELEASE Desaciona a garra, abrindo-a. 
SUBR Define o início de uma sub-rotina. 
UP Movimenta o eixo Z para a posição superior. 
 
 
Nesta segunda parte serão apresentados os comandos para criar constantes, usar 
contadores, manipular as portas de interface e executar movimentos em linha reta. 
 
 
DEFININDO CONSTANTES 
 
Valores que são repetidos em um programa podem se beneficiar do uso de constantes. 
Caso seja necessária alguma alteração de valor bastará alterar a constante e todo o programa 
já será beneficiado. Uma constante pode receber um valor numérico (inteiro ou real) ou uma 
coordenada. Nos dois casos o comando é NEW, precedido por um identificador (nome) 
escolhido pelo programador. As regras para o identificador foram apresentadas no artigo 
anterior. O Quadro 1 mostra a forma de uso nas duas situações. 
 
 
 
identificador:NEW 10 ; -- Armazenando um valor inteiro 
 
identificador:NEW PT(115, 200,35); -- Armazenando uma coordenada 
 
Quadro 1 – Definindo constantes. 
 
 22
CONTROLE DO FLUXO DO PROGRAMA 
 
As antigas linguagens Basic, entre outras, possuíam linhas numeradas e isso tornava 
possível alterar o fluxo de execução usando um comando do tipo GoTo e o número da linha 
desejada. Como a linguagem AML não é baseada em linhas numeradas é necessário criar 
rótulos (label’s) para tornar possível o controle do fluxo de execução. Um rótulo é uma palavra 
seguida do caractere dois pontos e segue as mesmas regras de criação dos demais 
identificadores.Alguns comandos que serão apresentados posteriormente realizam comparações. 
Dependendo do resultado dessa comparação o comando executa um salto para um 
determinado rótulo do programa. Há também o comando BRANCH(rótulo) que executa um 
salto incondicional. O Programa 3, apresentado à frente, ilustrará o uso dos rótulos. 
 
 
DEFININDO CONTADORES 
 
A contagem de tarefas pode ser bastante útil na elaboração de um programa. Por 
exemplo, a cada 25 peças trabalhadas é necessário executar os movimentos para substituição 
do conjunto. Para manipular contadores a linguagem AML utiliza-se de cinco comandos: 
STATIC COUNTER, SETC, INCR, DECR e TESTC. 
 
 
Um contador deve ser definido no início do programa para ser utilizado posteriormente. 
Essa definição consiste na escolha de um identificador (nome) para o contador, seguindo as 
regras já descritas e usando o comando STATIC COUNTER, como abaixo. Sempre que um 
contador é definido seu valor é zero. 
 
Contador1:Static Counter; 
 
 
Para colocar um valor específico em um contador usa-se o comando SETC. O exemplo 
abaixo define o valor 14 para o Contador1, ou seja, são passados como parâmetros o nome do 
contador e o valor desejado para ele. 
 
SetC(Contador1, 14); 
 
 
A contagem pode ser incrementada com o comando INCR ou decrementada com o 
comando DECR. Os exemplos a seguir mostram que basta fornecer o nome do contador como 
parâmetro. 
 
Incr(Contador1); 
 
Decr(Contador1); 
 23
 
Para testar se o contador atingiu um determinado valor utiliza-se o comando TESTC. Os 
três parâmetros necessários são: nome do contador, valor de comparação e rótulo de destino. 
O exemplo a seguir verifica se Contador1 atingiu o valor 15. 
 
TestC(Contador1, 15, FechaCaixa); 
 
 
Se o Contador1 não atingiu o valor 15 então o fluxo do programa segue para a próxima 
linha. No caso de ter atingido esse valor ocorre um salto para a linha definida pelo rótulo 
FechaCaixa. 
 
 
PROGRAMA 3 
 
A finalidade do Programa 3, mostrado pela Figura 1, é consolidar as informações 
referentes ao uso de rótulos e contadores. O programa cria dois contadores denominados de 
Contador1 e Contador2. O Contador1 é incrementado no início do programa e, logo em 
seguida, comparado com o valor 10. Enquanto esse valor não é atingido o fluxo é desviado 
para o início do programa pelo comando Branch(Inicio). Quando Contador1 atinge o valor 10 
o fluxo é desviado para a parte inferior do programa iniciada pelo rótulo Final. Esta parte do 
programa executa dois movimentos do braço, incrementa o Contador2, zera o Contador1 e 
salta para o Início novamente. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1 – Programa usando contadores e rótulos. 
 
 24
Esse exemplo mostra uma situação onde a função Stop Cycle não funcionará devido ao 
fato do fluxo do programa nunca passar pelo comando END. Os valores dos contadores podem 
ser acompanhados na parte inferior da tela, no lugar das coordenadas, acionando a opção 
Contadores localizada no menu Visualizar. 
 
 
Uma observação importante refere-se à manutenção do valor dos contadores mesmo 
quando encontram o comando END. Dessa forma, os valores são mantidos durante as 
diversas execuções do programa. O uso das funções Stop e Stop Cycle também não 
reinicializam os contadores. Pode-se reinicializa-los apenas usando o comando SETC ou 
recompilando o programa, que no caso do robô real seria por meio da recarga do programa em 
sua memória. 
 
 
PORTAS DE ENTRADA E SAÍDA 
 
A grande maioria das atividades executada pelos robôs requer comunicação intensa 
com outros equipamentos. Apenas a título de exemplo será descrita a comunicação necessária 
entre um robô, que executa a operação de carga e descarga de peças, e um torno CNC, 
responsável pela usinagem. Quem inicia a conversação é o torno. No momento que encerra a 
usinagem a placa de três castanhas é imobilizada, a porta é aberta e é enviada uma 
mensagem indicando que está tudo pronto para a troca da peça, como mostra a Figura 2a. O 
robô posiciona-se, fixa a peça usinada e avisa o torno que pode soltá-la (Figura 2b). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 2 – Torno pronto para troca de peça (esquerda) e robô fixando a peça acabada (direita). 
 
 
Assim que o torno abre a placa de três castanhas e libera a peça (Figura 3a) envia um 
sinal para o robô. O robô afasta a peça acabada (Figura 3b), gira a sua garra dupla (Figura 
3c), posiciona a peça bruta (Figura 3d) e envia um sinal para o torno indicando que a nova 
 
peça já está posicionada. 
 25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 3 – Troca da peça acabada pela peça em bruto. 
 
 
O torno fecha as castanhas (Figura 4a) e avisa o robô que pode soltar a peça. O robô 
solta a peça bruta e sai de dentro do torno com a peça acabada para, em seguida, enviar seu 
último sinal de comunicação. O torno fecha a porta (Figura 4b) e inicia a usinagem. Enquanto 
a usinagem ocorre o robô posiciona a peça acabada no local programado, pega uma nova 
peça em bruto e fica novamente aguardando o torno iniciar o ciclo de comunicação. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 4 – Robô prestes a soltar a peça bruta (esquerda) e torno pronto para iniciar a usinagem (direita). 
 
 
Toda essa comunicação é realizada por meio das portas de entrada e saída, que podem 
ser digitais ou analógicas. O IBM 7535 dispõe de 16 entradas digitais, simbolizadas por DI 
(Data Input) e 16 saídas digitais, simbolizadas por DO (Data Output). As portas são numeradas 
de 0 à 15. 
 
 
Para manipular as saídas digitais utiliza-se o comando WRITEO(saída, estado) onde o 
parâmetro saída é o número da porta desejada e o parâmetro estado define a condição da 
saída, sendo 0 (zero) para nível baixo e qualquer outro valor para nível alto. 
 26
A linguagem AML disponibiliza dois comandos para manipular as entradas digitais. O 
comando TESTI(entrada, estado, rótulo) compara o estado da entrada indicada com o 
estado especificado. Se os estados não são iguais o fluxo do programa continua na linha 
seguinte. Se a entrada estiver no estado especificado o programa salta para o rótulo. 
 
 
O outro comando possui a sintaxe WAITI(entrada, estado, tempo). Sua função é 
aguardar que a entrada especificada atinja um determinado estado durante um tempo 
definido. Se durante esse tempo a entrada atingir o estado o fluxo do programa segue 
normalmente para a próxima linha. Se o tempo expirar um erro OT (Over Time) é gerado e a 
execução do programa é interrompida. O parâmetro tempo segue os mesmos valores 
especificados para o comando DELAY (de 0 até 25.5 segundos em passos de 0.1 segundo). 
Para tempo=0 o robô real aguarda indefinidamente pela porta de entrada, mas o simulador não 
irá aceitar esse valor. 
 
 
PROGRAMA 4 
 
O programa mostrado pela Figura 5 utiliza os comandos de entrada e saída e mostra o 
uso dos rótulos. Observe que não move o braço e garra. Basicamente o programa mantém a 
saída 0 no mesmo estado da entrada 0. Quando aciona-se a entrada 0 (clicando com o mouse 
sobre o círculo preto que representa DI0) a saída 0 também é acionada (ficando em vermelho). 
Quando a entrada é desativada pelo usuário a saída é desativada pelo programa. 
 
 
Nota-se que quando a saída é ativada tem-se 5 segundos para desativá-la, devido ao 
comando WaitI(0, 0, 5). Se isso não ocorrer o simulador irá gerar uma mensagem e 
interrompera execução do programa. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 5 – Uso dos comandos de entrada e saída. 
 27
O fluxo de execução do programa fica preso às quatro primeiras linhas, em loop, 
mantendo a saída em nível baixo enquanto a entrada está desativada. Quando a entrada fica 
em nível alto o fluxo é desviado para o rótulo Liga. Nesta parte do programa a saída é ativada 
e a execução do programa é interrompida pelo comando seguinte, que aguarda que a entrada 
fique em nível baixo. Se a entrada ficar em nível baixo em menos de 5 segundos o programa 
segue sua execução, encontrando o comando End. Se não houver um comando para parar o 
programa (Stop ou Stop Cycle) ele volta a ser executado desde seu início. A Figura 6 
apresenta a área de interface no momento em que tanto a entrada quanto a saída estão ativas. 
 
 
 
 
Figura 6 – Programa 4 em execução. 
 
 
MOVIMENTOS EM LINHA RETA 
 
Os movimentos de um robô com articulações rotacionais ocorrem em forma de arcos. 
Isso pôde ser notado no Programa 2, do artigo anterior. Mas há situações onde é necessário 
movimentar o órgão terminal em linha reta. Para isso a linguagem AML traz o comando 
LINEAR(qualidade), onde o parâmetro qualidade permite definir o grau de linearidade do 
movimento e pode receber os seguintes valores: 0 até 10, 20, 30 e 50. 
 
Quanto menor for o valor do parâmetro mais preciso (e lento) é o movimento linear. O 
valor 0 (zero) é responsável por desativar a função de movimentação linear. Quando o 
movimento linear é ativado o controlador calcula pontos intermediários entre as coordenadas 
de origem e destino. O valor do parâmetro determina a distância desses pontos intermediários 
(em milímetros). 
 
Os movimentos lineares não são garantidos em toda a área de trabalho. Há uma região 
definida pelo fabricante e que, no simulador, pode tornar-se visível usando a opção Área 
Linear do menu Visualizar. No simulador o uso de movimentos lineares fora dessa região irá 
apenas gerar linhas não exatamente lineares, mas, de acordo com o manual da IBM, no robô 
real podem ocorrer condições de erro e resultados imprevisíveis. 
 28
 
A Figura 7 mostra o Programa 5. Pode-se variar o valor da constante X e verificar o 
resultado da movimentação. Observe a presença do comando que desliga o movimento linear 
antes de enviar o braço para a posição inicial. Sem esse comando ocorrerá um erro já que não 
há como a garra movimentar-se em linha reta da coordenada (290, 500) para a coordenada 
(650, 0) sem sair de dentro da área de trabalho. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 7 – Programa que movimenta o braço linearmente. 
 
A Figura 8 apresenta o resultado da simulação para quatro valores diferentes de 
qualidade (constante X). Na parte superior da figura tem-se X=0 à esquerda e X=50 à direita. 
Na parte inferior esquerda a figura apresenta X=30 e à direita X=10. 
 
 
 
 
 
 
 
Figura 8 – Simulação com quatro valores para X: 0, 50, 30 e 10. 
 
 29
 
CORES NA SIMULAÇÃO 
 
A simulação de um programa com muitos movimentos pode ficar complexa. Para 
minimizar esse problema foi implementado um comando para alterar a cor do traçado quando a 
garra está na posição inferior, que por padrão é preta. O traço superior é de cor branca e não 
pode ser alterado. O comando que define a cor do traço inferior é COLOR(cor) onde o 
parâmetro cor é um número de 1 à 9, gerando as cores apresentadas no Quadro 2. Adicione 
no Programa 5 o comando Down e antes de cada movimento um comando Color. 
 
 
1 – Preto 2 – Vermelho 3 – Verde 
4 – Azul 5 – Amarelo 6 – Violeta 
7 – Ciano 8 – Laranja 9 – Branco 
 
Quadro 2 – Possíveis cores para o traçado inferior. 
 
A Figura 9 mostra o resultado da simulação de um programa com quatro cores 
diferentes e traço superior desabilitado. Esse programa foi utilizado no robô real como 
demonstração para alunos. Foi fixado na mesa de trabalho do robô uma cartolina e um suporte 
para quatro pincéis atômicos (verde, preto, vermelho e azul). Cada pincel estava fixado dentro 
de um cilindro metálico que tinha dupla função. A primeira era evitar o esmagamento dos 
pincéis quando a garra fechava. A outra função era permitir que o pincel mantivesse uma 
pressão constante sobre a cartolina por meio de uma mola no interior do cilindro (como o 
movimento vertical é acionado pneumaticamente esse dispositivo era imprescindível para 
manter a integridade física da ponta do pincel atômico). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 9 – Exemplo de simulação com várias cores. 
 
 30
Desenho não costuma ser uma tarefa executada por um robô, mas pode ser bastante 
interessante em feiras e apresentações. A programação de circunferências e outros arcos 
requer o uso de alguns pontos intermediários para parecer correto. A Figura 10 mostra em 
Zoom como essas formas foram criadas com várias retas (os pontos no final de cada reta 
foram acrescentados para facilitar a visualização). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 10 – Detalhe na formação de arcos. 
 
 
Para obter uma vista em detalhe deve-se usar o item Zoom Window da opção Zoom no 
menu principal. Ao acionar-se esta opção o usuário pode selecionar com o mouse a região 
desejada e em seguida usar o botão Zoom na janela do lado superior direito na tela. Para 
voltar a visualizar a tela toda usa-se o item Zoom All do menu Zoom. Quando o zoom é 
acionado as linhas traçadas são apagadas, fazendo com que uma nova execução seja 
necessária. Além disso, durante o zoom, a área de trabalho não é apresentada. 
 
COMENTÁRIOS FINAIS 
 
Esta segunda parte mostrou como criar constantes, usar contadores, manipular as 
portas de interface e executar movimentos em linha reta, além de explicar o uso do zoom. O 
próximo artigo, que finalizará esta série, irá mostrar o trabalho com pallet’s e descrever os 
últimos comandos da linguagem AML. 
 
 
 
 
 31
TERCEIRA ETAPA 
 
INTRODUÇÃO 
 
Os dois artigos anteriores apresentaram a maior parte dos comandos da linguagem AML. 
Entre os comandos que faltam estão os relacionados à manipulação de pallet’s, que tornam a 
tarefa de trabalho com esse tipo de armazenamento extremamente simples. 
 
 
PALLET’S 
 
Um pallet é um arranjo organizado de itens na forma de uma matriz, como um 
engradado de bebidas. Portanto os itens são organizados em linhas igualmente espaçadas. O 
número de itens de um pallet é o produto do número de linhas pelo número de peças em cada 
linha. Cada item possui um número de identificação diferente. A Figura 1 ilustra um pallet de 
12 itens. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1 – Exemplo de pallet para 12 itens. 
 
 
Na linguagem AML um pallet é definido por cinco parâmetros, sendo que três deles são 
coordenadas e os outros dois são valores numéricos que informam o número de peças por 
linha (ppl) e o número total de peças (ntp). As coordenadas definem a posição do pallet na 
mesa de trabalho e a ordem de numeração das peças no pallet. As três coordenadas serão
 32
12 
C3 
9 6 3 
C2 
11 8 5 2 
10 7 4 1 
C1 
4 
C2 
3 2 1 
C1 
8 7 6 5 
12 
C3 
11 10 9 
1 
C1 
4 7 10 
2 5 8 11 
3 
C2 
6 9 12 
C3 
1 
C1 
2 3 4 
C2 
5 6 7 8 
9 10 11 12 
C3 
10 7 4 1 
C1 
11 8 5 2 
12 
C3 
9 6 3 
C2 
12 
C3 
11 10 9 
8 7 6 5 
4 
C2 
3 2 1 
C1denominadas de C1, C2 e C3 sendo que C1 é a coordenada da primeira peça da primeira linha, 
C2 é a coordenada da última peça da primeira linha e C3 é a coordenada da última peça da 
última linha. A numeração das peças cresce na direção de C1 para C2 em cada linha. A Figura 
2 apresenta um mesmo pallet de 12 peças com diferentes seqüências de numeração. Isso se 
deve às oito possíveis formas de escolher as coordenadas C1, C2 e C3. Note que as linhas 
podem ser horizontais ou verticais. 
 
 
 
9 10 11 12 
C3 
5 6 7 8 
1 
C1 
2 3 4 
C2 
 
 
 
3 
C2 
6 9 12 
C3 
2 5 8 11 
1 
C1 
4 7 10 
 
 
Figura 2 – Possíveis numerações de peças conforme as coordenadas fornecidas. 
 
 
Cada pallet é referenciado por um identificador (nome) definido pelo programador no 
comando STATIC PALLET, como mostrado a seguir: 
 
Identificador:STATIC PALLET(C1, C2, C3, ppl, ntp); 
 
Os pallet’s devem ser definidos antes de iniciar a sub-rotina principal, juntamente com as 
constantes e contadores. Devido ao fato da linha de definição ficar muito longa é usual criar 
constantes contendo os parâmetros para a declaração do pallet, como mostra o exemplo do 
Quadro 1, onde os identificadores usados poderiam ser outros quaisquer. 
 
 
 
-- Definição do pallet de peças brutas 
 
C1:New PT(300, 200, 0); 
C2:New PT(300, 300, 0); 
C3:New PT(500, 300, 0); 
Ppl:New 8; 
Ntp:New 32; 
 
PecasBrutas:Static Pallet(C1, C2, C3, Ppl, Ntp); 
 
Quadro 1 – Exemplo de definição de um pallet com o uso de constantes. 
 
 33
Para cada pallet definido é criado um apontador, que nada mais é do que um número 
responsável por indicar qual a peça atual. Quando o programa é iniciado a peça atual é a de 
número 1. Pode-se definir a peça atual de qualquer pallet usando o comando SETPART(nome, 
número), onde o parâmetro nome indica qual o pallet está sendo trabalhado e o parâmetro 
número indica o novo valor do apontador. 
 
 
O comando NEXTPART(nome) incrementa o apontador do pallet referido pelo 
parâmetro nome. De forma similar o comando PREVPART(nome) decrementa o apontador. 
Observe que nenhum desses comandos movimenta o braço do robô; apenas manipulam os 
apontadores. Para mover o braço da posição atual (que pode ser qualquer) para as 
coordenadas XY da peça indicada pelo apontador usa-se o comando GETPART(nome). 
 
 
O último comando relacionado aos pallet’s é TESTP(nome, valor, rótulo) e sua 
finalidade é testar se o apontador do pallet referenciado pelo parâmetro nome já atingiu um 
determinado valor. Se não atingiu o fluxo do programa segue para a linha seguinte, caso 
contrário o programa salta para a linha identificada pelo rótulo. Basicamente a função deste 
comando é determinar se todas as peças do pallet já foram manipuladas e desviar o fluxo do 
programa para que ele seja substituído. 
 
 
PROGRAMA 6 
 
A Figura 3 mostra o Programa 6 que possui um pallet com 16 peças. O objetivo do 
programa é colocar as peças do pallet em uma esteira que as leva até um processo qualquer. 
A coordenada de colocação da peça na esteira é (-200, 550). Assim que todas as peças do 
pallet forem transferidas o robô movimentará seu braço para a posição de origem e aguardará 
um sinal na entrada digital 0. Esse sinal é fornecido, por exemplo, por um operador. Após 
substituir o pallet vazio por um cheio, ele aciona uma botoeira normalmente aberta que leva a 
entrada digital ao nível alto temporariamente. 
 
 
A Figura 4 mostra o resultado da simulação deste programa. Note que todos os 
movimentos ocorrem com a garra na posição superior e por isso foi acionado o traçado nesta 
situação (menu Visualizar, opção Traço Superior). Observe que a Figura 4 foi editada para 
simplificar a visualização. Foram adicionados pontos azuis nas coordenadas das peças do 
pallet e da esteira. Também nota-se que a entrada digital 0 está em nível alto e que o braço 
está iniciando um novo ciclo de descarregamento de peças. 
 
 
 
 
 34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 3 – Exemplo de aplicação com pallet. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 4 – Resultado da simulação do Programa 6. 
 
Analisando o programa é possível concluir que alterando apenas as constantes que 
definem o pallet é possível descarregar, por exemplo, 200 peças ao invés de 16. Imagine o 
tamanho de um programa que execute a mesma tarefa sem utilizar os comandos de 
manipulação de pallet’s. 
 
 35
OUTROS COMANDOS 
 
BREAKPOINT: este comando permite ao operador, usando o painel de controle manual, 
interromper a execução do programa no ponto especificado pelo comando 
BreakPoint para retomá-lo na linha seguinte posteriormente. Usa-se o botão Stop 
and Mem para interromper o programa no próximo BreakPoint (ou no último 
comando End). Quando o programa é interrompido em um BreakPoint o indicador 
luminoso Memory do painel der controle acende-se. Posteriormente o operador 
utiliza o botão Recall Memory para dar prosseguimento à execução, mesmo que o 
robô tenha sido desligado. Podem ser utilizados múltiplos comandos em um mesmo 
programa. Não tem utilidade na simulação em computador. 
 
 
GETC(nome_do_contador): este comando é aplicado somente a robôs com eixo Z servo- 
controlado. O uso deste comando no IBM 7535 irá gerar um erro de compilação. O 
objetivo deste comando é interromper a execução do programa e aguardar um novo 
valor para o contador especificado pelo parâmetro. O novo valor deve ser enviado 
por um computador conectado ao controlador do robô. 
 
 
ITERATE(‘comando ou subr’,<agregado1>,<agregado2>,...): este comando não foi 
implementado no simulador. Sua função é executar repetidamente o comando ou 
sub-rotina especificada com os diferentes valores fornecidos pelas constantes do tipo 
agregado (que também não foram implementadas no simulador). O exemplo no 
Quadro 2 mostra que o comando PMove será executado 5 vezes, cada vez usando 
um valor diferente. É um comando bastante poderoso e que permite diminuir o 
tamanho de um programa que execute diversos percursos repetidamente. 
 
 
 
P1:New PT(500, 400, 0); -- Cria constante tipo coordenada 
P2:New PT(400, 400, 0); -- Cria constante tipo coordenada 
P3:New PT(300, 400, 0); -- Cria constante tipo coordenada 
P4:New PT(200, 400, 0); -- Cria constante tipo coordenada 
P5:New PT(100, 400, 0); -- Cria constante tipo coordenada 
Caminho:New <P1, P2, P3, P4, P4> -- Cria constante tipo agregado 
Exemplo:Subr; 
Iterate(‘Pmove’, Caminho); 
 
End; 
 
Quadro 2 – Exemplo de aplicação do comando Iterate. 
 
 36
 
Valor Teta1 
(mm/seg) 
Teta 2 
(mm/seg) 
Carga 
(kg) 
6 1000 750 6.0 
7 1100 825 6.0 
8 1200 900 3.5 
9 1300 950 2.0 
10 1450 1000 1.0 
PAYLOAD(valor): este comando ajusta a máxima velocidade de deslocamento dos elos do 
braço, que é função da carga transportada pelo eixo Z (incluindo o peso da garra ou 
ferramenta). O parâmetro valor é um número de 0 (zero) à 10 onde 0 força a 
utilização dos ajustes das micro-chaves do hardware (dip-switchs). Os demais 
valores estão apresentados na Tabela 1. O uso deste comando não é aparente na 
simulação gráfica. 
 
Tabela 1 – Valores para o comando PayLoad. 
 
 
Valor 
Teta1 
(mm/seg) 
Teta 2 
(mm/seg) 
Carga 
(kg) 
1 300 225 6.0 
2 500 375 6.0 
3 700 525 6.0 
4 750 575 6.0 
5 900 675 6.0 
 
 
PT(x, y, z, r): este comando é aplicado somente a robôs com eixo Z servo-controlado. O uso 
deste comando no IBM 7535 irá gerar umerro de compilação. Sua função é mover o 
órgão terminal simultaneamente nos eixos XYZ além de orientá-lo no eixo R. 
 
 
ZMOVE(posição): este comando é aplicado somente a robôs com eixo Z servo-controlado. O 
uso deste comando no IBM 7535 irá gerar um erro de compilação. O objetivo deste 
comando é executar movimentos do eixo Z na faixa de 0 mm (completamente 
retraído) até –250 mm (completamente estendido). 
 
 
ZONE(valor): a função deste comando é ajustar a precisão e velocidade para atingir uma 
coordenada. O parâmetro valor varia de 0 (zero) até 15. Quando o valor zero é 
usado o controlador utiliza os ajustes definidos no hardware por micro-chaves (dip- 
switchs). Quanto maior o valor do parâmetro mais rapidamente o braço encontra a 
posição e menor será a sua precisão. O uso deste comando não é aparente na 
simulação gráfica. 
 
 
PROGRAMA FINAL 
 
Para encerrar esta apresentação da linguagem AML será apresentado um programa que 
engloba todos os principais comandos e executa a montagem de dois componentes, mostrados 
pela Figura 5. 
 
 
 37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 5 – Conjunto montado (esquerda) e suas peças separadas. 
 
 
O programa trabalha com três pallet’s sendo que um possui a peça inferior, o outro a 
peça superior e o terceiro recebe o conjunto montado. Os pallet’s estão montados sobre 
transportadores rotativos que são acionados pelo próprio robô usando as portas de entrada e 
saída. A Figura 6 exibe um desenho que mostra o robô, os pallet’s e os transportadores 
rotativos. Nesta imagem a garra está prestes a pegar a peça superior número 10. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 6 – Configuração física usada no Programa Final. 
 
No lado direito da Figura 6 está o pallet com as peças inferiores. No lado esquerdo 
 38
estão as peças superiores cujo pallet não é composto por “caixinhas” e sim por furos. A 
montagem ocorre no pallet central que possui suportes na parte inferior para suportar o esforço 
de inserção. Nota-se que o pallet de peças montadas está sendo substituído e que os outros 
dois ainda deverão ser trocados (estas operações podem ser feitas por operadores humanos 
ou equipamentos automáticos). A listagem do programa está no Quadro 3. 
 
 
Ppl:New 5; 
Ntp:New 25; 
I1:New Pt(-242,310,0); 
I2:New Pt(-242,438,0); 
I3:New Pt(-370,438,0); 
Inferior:Static Pallet(I1, I2, I3, Ppl, Ntp); 
S1:New Pt(370,310,0); 
S2:New Pt(370,438,0); 
S3:New Pt(242,438,0); 
Superior:Static Pallet(S1, S2, S3, Ppl, Ntp); 
C1:New Pt(64,500,0); 
C2:New Pt(64,628,0); 
C3:New Pt(-64,628,0); 
Conjunto:Static Pallet(C1, C2, C3, Ppl, Ntp); 
 
ProgramaFinal:Subr; 
Pega:Subr; -- Sub-rotina para pegar peças 
Down; 
Grasp; 
Up; 
End; 
Solta:Subr; -- Sub-rotina para soltar peças 
Down; 
Release; 
Up; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
End; 
End; 
SetPart(Inferior,1); -- Apontador = 1 
SetPart(Superior,1); -- Apontador = 1 
SetPart(Conjunto,1); -- Apontador = 1 
Inicio:; 
GetPart(Inferior); -- Move para a peça do pallet Inferior 
Pega; 
GetPart(Conjunto); -- Move a peça para o pallet Conjunto 
Solta; 
GetPart(Superior); -- Move para a peça do pallet Superior 
Pega; 
GetPart(Conjunto); -- Move a peça para o pallet Conjunto 
Solta; 
TestP(Conjunto,Ntp,Troca); -- Verifica se é a última peça 
NextPart(Inferior); -- Aponta para a próxima peça 
NextPart(Superior); -- Aponta para a próxima peça 
NextPart(Conjunto); -- Aponta para a próxima peça 
Branch(Inicio); -- Salta para o início 
Troca:; 
WriteO(0,1); -- Aciona os transportadores rotativos. 
Delay(1); -- Aguarda tempo antes de testar entradas 
TestI(0,0,Troca); -- Verifica se existe o Pallet Inferior 
TestI(1,0,Troca); -- Verifica se existe o Pallet Superior 
TestI(2,0,Troca); -- Verifica se existe o Pallet Conjunto 
WriteO(0,0); -- Desliga os transportadores rotativos 
 
 
Quadro 3 –Programa Final. 
 
 39
 
Este programa mostra o uso de sub-rotinas internas. Foi criada a sub-rotina Pega 
responsável por pegar uma peça e a sub-rotina Solta que faz o contrário. Cada sub-rotina 
é chamada duas vezes dentro da sub-rotina principal. 
 
 
Cada transportador possui um sensor na posição de trabalho que envia um nível alto 
quando um pallet está presente. Os sensores estão nas entradas digitais 0, 1 e 2. Após a 
montagem do último conjunto a saída digital 1 é levada ao nível alto, fazendo com que os 
três transportadores rotativos movimentem-se. Observe que, por simplificação, está 
sendo considerado que os acionamentos dos transportadores irão girar apenas 180o, 
mesmo que a saída digital permaneça em nível alto. 
 
 
A função do comando Delay na parte final do programa é permitir que os 
transportadores iniciem o giro e, por conseqüência, os sensores de posição sejam desativados. 
Se não existisse esse tempo os transportadores mal começariam a girar e já seriam 
paralisados. Os comandos TestI irão manter um looping enquanto os pallet’s não estiverem em 
suas posições (na simulação é necessário que se ative as três entradas digitais 
manualmente).. 
A Figura 7 apresenta um pequeno detalhe com relação ao posicionamento das 
peças na direção vertical. Para pegar e soltar a peça inferior o eixo vertical atinge seu fim 
de curso inferior (à esquerda). Da mesma forma esta também é a posição atingida para 
pegar a peça superior, ao centro. Do lado direito nota-se que quando a montagem é realizada 
o eixo vertical não atinge o curso inferior. Isso irá garantir a correta união das peças neste 
exemplo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 7 – Configuração física usada no Programa Final. 
 40
 
 
LIMITAÇÕES DO SIMULADOR 
 
Alguns detalhes e comandos da linguagem AML não foram implementados no simulador 
e estão listados a seguir (alguns já foram discutidos durante os artigos): 
• As linhas com rótulos não devem terminar com ponto-e-vírgula; 
 
• Uso de múltiplos comandos em uma mesma linha, separados por ponto-e-vírgula; 
 
• Uso de parâmetros em sub-rotinas; 
 
• Declaração de constantes do tipo texto (string) e do tipo agregado (aggregate); 
 
• Uso de tempo=0 nos comandos Delay, WaitI; 
 
• Comandos Iterate, Up(tempo) e Down(tempo). 
 
 
 
COMENTÁRIOS FINAIS 
 
Estes três artigos apresentaram uma linguagem de programação de robôs, algo difícil de 
ser encontrado em revistas, livros e até mesmo na Internet. Muitos detalhes da linguagem AML 
não puderam ser abordados devido às limitações de espaço. O manual da IBM consome cerca 
de 100 páginas tratando da linguagem e detalhando todos os comandos. Mas, apesar disso, o 
conteúdo apresentado é suficiente para entender a sua utilização. O conhecimento de uma 
linguagem permite que uma futura aprendizagem torne-se mais fácil, e foi esse o motivo de 
apresentar os diversos exemplos em AML. 
 
 
A disponibilidade de uso de um simulador para plataforma Windows facilita muito a 
assimilação, mesmo tendo algumas limitações na atual versão. A grande vantagem do 
simulador ser baseado no robô Scara IBM 7535 está no fato de que todos os movimentos do 
braço são executados no plano XY, simplificando muito a visualização dos resultados. 
 
 
REFERÊNCIA 
 
IBM, AML/Entry Version 3 User’s Guide, IBM Manufacturing System – Software Library, First 
 
Edition, 1984. 
 
 
IBM, AML/Entry Version 3 User’s Guide, IBM Manufacturing System – Software Library, First 
 
Edition, 1984. 
 
 
IBM,AML/Entry Version 3 User’s Guide, IBM Manufacturing System – Software Library, First 
 
Edition, 1984. 
Gorgulho Júnior, J. H. C., Conhecendo o Robô SCARA, Revista Mecatrônica Atual, Ano 3, 
edição no 13, página 35, Dezembro/2003 - Janeiro/2004.

Outros materiais