Você está na página 1de 123

CURSO DE PROGRAMAÇÃO

PARA ROBÔ ABB

MODELO IRC5

1
1 – Visão Geral do Sistema

O robô é formado por duas partes, sendo painel do controlador e o manipulador. A


interface entre o homem e a máquina é feita através de uma unidade de
programação (Flex Pendant), que mostra o estado atual do robô, inclusive no caso
de diagnóstico de falhas além de servir como um terminal de programação para
elaboração de programas e comandos para o robô.

Diferentemente dos modelos S4, a família IRC5, controla um manipulador, ou


pode controlar até 4 manipuladores simultaneamente, e a figura 1, mostra as duas
possibilidades, onde no caso de operar mais de 1 manipulador, se faz necessário
a inclusão de outros módulos de potência associados ao controlador . O que
veremos a seguir é uma ilustração do conjunto formado pelo controlador com
apenas um manipulador e a possibilidade de conexão para mais de um
manipuladores, formando o robô como um todo. A conexão entre o manipulador e
o painel de controle é feita através de dois cabos: um de potência por onde passa
alimentação para os motores e também para os freios, sendo estes estacionários
e outro cabo de comando por onde passam os sinais dos “Resolvers”, que são os
dispositivos de controle de posição para cada um dos 6 eixos que o robô possui.
Também existe a possibilidade de se ter mais um cabo, onde este é utilizado para
conexões do cliente, tipo válvulas solenóides, sensores etc.

Figura 1

2
Note que na figura anterior o painel de controle possui um modulo sobre o outro,
este é um modelo de painel do IRC5, este robô pode ser encontrado com uma
configuração um pouco diferente, onde o painel principal é bem menor, contendo
apenas um gabinite.
Numa visão geral do sistema, podemos ter a configuração apresentada na figura
2, onde podemos ter o sistema do robô conectado a um notebook ou PC, bem
como uma conexão numa rede local para salvar, por exemplo, um programa do
robô na rede interna de uma empresa.

Figura 2

3
2 – Conexão com robô via notebook:

Como vimos anteriormente, é possível utilizarmos de um notebook para conexão


com o robô, tanto para monitoramento de entradas e saídas, alteração de
programa, etc.

Na aquisição de um robô novo IRC5, o cliente adquire a licença de uso do Robot


Studio On Line, ferramenta esta muito importante para entrar em modo on line
com o robô.
A seguir será apresentado o procedimento para conseguir adquirir uma licença,
bem como a conexão com o controlador.

2.1 – Aquisição da licença para Robot Studio On Line:

A licença adquirida da ABB é direcionada a um determinado equipamento, onde


os dados deste, irão constar na licença recebida, pois quando conectado a rede, o
sistema da ABB lê por exemplo a marca do notebook, TCP-IP, etc, e estes dados
constam na licença.
Portanto caso queira que a licença seja criado para um determinado PC ou
notebook, use este para conectar a rede no momento de iniciar o processo a
seguir.

- Insira o CD do Robot Studio do robô no leitor de CD do micro;


- Se o CD não abrir automaticamente, selecione em Iniciar a opção executar;
- Na opção abrir digite a letra do drive em que esta o CD;
- Caso esteja no drive E, fica E:\launch.exe, seguido de OK;
- Selecione o idioma desejado;
- No menu de instalação click na opção RobotStudioOnLine;
- O sistema vai apresentar um guia de instalação que deve ser seguido.

4
Após a instalação deve-se requerer a chave de licença do produto junto a ABB, e
para isso, siga as instruções apresentadas a seguir.

- No menu Iniciar selecione Programas;


- Selecione o programa ABB Industrial IT;
- Selecione a opção Robotics IT;
- Opte pelo item Lisencing;
- Finalmente selecione a opção License Key Request Wizard.
- Siga as instruções através do assistente de instalação.

Quando o assistente tiver terminado um arquivo de solicitação de licença é salva


na sua máquina.

- Anexe o arquivo de solicitação da chave de licença a um e-mail;


- Envie esse e-mail para softwarefactory@se.abb.com;

Após este procedimente, aguarde alguns minutos e você vai receber no e-mail
especificado na solicitação, uma chave de licença.

2.2 – Como instalar a chave de licença do Robot Studio Online:

No e-mail que a ABB vai enviar no e-mail indicado na solicitação da chave, ira
conter um anexo, contendo um arquivo da chave de licença.

- Extraia esse arquivo do e-mail e instale no micro;


- Click duas vezes na chave de licença, abrindo o assistente de instalação;
- Basta seguir as instruções do assistente de instalação da chave de licença;

5
Agora o software esta pronto para rodar, necessitando então a configuração do
seu micro para que seja possível conectar On Line com o robô, e para isso basta
seguir as instruções apresentadas a seguir.

2.3 – Configuração do PC para conexão com robô via Robot Studio On Line:

Essa conexão, é feita como se fosse uma conexão normal de internet, onde pode
ser utilizado o cabo fornecido junto com o equipamento, e a configuração do
micro, deve ser feito da seguinte maneira.

- Selecione a opção Iniciar do seu micro;


- Selecione a opção Control Panel;
- Selecione a opção Network Connections;
- Com dois click selecione a Local 6rea Connection como mostrado na figura 3.

Figura 3

6
- Com essa seleção, a tela mostrada na figura 4 aparecera na tela:

Figura 4

7
- No campo This Connections uses the following items, click na opção
Internet Protocol (TCP/IP), mesmo que já esteja selecionado.
- Agora selecione a opção Properties com isso teremos a tela mostrada na
figura 5.

Figura 5

Parametrizar como mostrado na figura acima, e pressione a tecla de OK, para


confirmar a configuração.
Neste momento o seu micro esta pronto para se conectar com o robô via o
software do Robot Studio On Line.

8
E para conectar-se a porta de comunicação do robô basta, conectar o cabo de
rede no plug apropriado na parte frontal do painel do robô, como mostrado na
figura 6.

Figura 6

3 – Unidade de Programação

9
Para efetuar o comando manual e automático deste sistema, utilizamos uma
unidade de programação onde é possível efetuar movimentos do robô, elaboração
de programas, manipulação de parâmetros, entradas e saídas, etc.
Através dela se tem um comando total do status do robô, bem como a
manipulação de dados e códigos de erros ocorridos durante a movimentação e
programação do robô.
Para familiarizar com esta unidade, apresentaremos as funções de cada um dos
botões, funções da tela de touch screem, bem como o manuseio do robô através
do joystick para movimentação em manual do manipulador.

Figura 7

Figura 8

10
Figura 9

A figura 10, mostra a finalidade de cada campo dentro da área de trabalho do flax
pendant.

Figura 10

11
Na parte superior do Flex Pendant temos as seguintes informações, como
mostrado na figura 11 abaixo.

Figura 11

4 – Carga de dados de calibração:

12
Os dados de calibração do robô, são armazenados na placa da SMB (Serial
Mesummnent Board), localizado na base de cada robô, onde estes dados são
automaticamente transferidos para o controlador quando o robô é ligado, desta
forma não sendo necessário efetuar nenhum ajuste ou alteração de parâmetro.

4.1 – Como verificar se o robô precisa ser calibrado:

Para verificar se o robô necessita de calibração, selecione o menu ABB, e em


seguida a opção Calibration. Neste momento o sistema ira apresentar uma lista
das unidades mecânicas contidas no sistema.
Nesta tela existem duas colunas, onde a primeira mostra a unidade mecânica e a
segunda apresenta o status do robô. Ele pode estar como Calibrated ou Not
Calibrated.
Caso esteja como Calibrated, o robô não necessita de calibração, porém se
estiver como Not Calibrated, será necessário efetuar a atualização dos
contadores de revolução dos motores.

4.2 – Atualização dos contadores de revolução:

13
Ainda na tela de Calibration, selecione a unidade desejada, com isso a tela da
figura 12 será exibida do display do Flex Pendant.

Figura 12

Mova o robô para as marcas mecânicas de calibração e toque na opção Update


Revolution Counters, onde com este comando ira aparecer a tela mostrada na
figura 13.

Figura 13

14
Selecione a opção Yes, neste momento o robô vai exibir no display do Flex
Pendant a tela mostrada na figura 14, indicando qual eixo não está calibrado, onde
podemos adicionar ou apagar a seleção de calibração para um eixo especifico
tocando o eixo desejado, ou até mesmo a seleção de todos os eixos.

Figura 14

Estando os eixos selecionados como mostrado na figura anterior, toque na opção


Update, na parte inferior do Flex Pendante, com isso a opção mostrada na figura
15 será exibida no display. Para finalizar a calibração toque na opção Update.

Figura 15

15
Enquanto o robô estiver exibindo a tela mostrada na figura 16, o sistema esta
atualizando os contadores. Ao terminar, toque na opção Close na parte inferior do
Flex Pendante por duas vezes, com isso o processo de atualização dos
contadores está encerrada.

Figura 16

16
4.3 – Calibração do sistema de motores:

Ainda no menu de calibração, selecione a opção Cal. Parameters, com essa


seleção teremos as opções apresentadas na figura 17.

Figura 17

As opções encontradas nesta tela têem as seguintes finalidades.

Load Motor Calibration – Nesta opção é possível efetuar a carga dos valores de
calibração dos motores do robô, onde estes são carregados via um determinado
arquivo. Podendo ser do PenDrive, Ram Disk, ou outro periférico.
Cabe ressaltar que é importantíssimo saber se estes dados são corretos, pois os
dados de calibracao dos motores, caso não sejam corretos, vão modificar a
posição do programa.

Edit Motor Calibration Offset – Utilizado quando se deseja entrar com os dados
de calibracao em modo manual, ou seja, digitando os valores manualmente
através do Flex Pendant, onde os valores de calibração podem ser obtidos do
disquete de backup do robô.

17
Fine Calibration – Esta opção é utilizada quando de uma manutenção mecânica
do robô, sendo esta a troca de um motor, caixa de redução, punho, resolver, etc.
Onde nestes casos tem-se uma mudança de referencia entre a parte mecânica e a
eletrônica.

4.4 – Memória da placa SMB:

A placa SMB guarda os principais dados de resolver dos motores do manipulador,


dados estes utilizados para controle de velocidade e posição de cada eixo do
robô, onde esta é capaz de armazenar os dados de até 7 eixos.
Estes dados são utilizados pelo controlador através da SMB, e estes dados são
transferidos automaticamente para o controlador no momento em que ligamos o
robô.
Na SMB são armazenados o numero de serie do robô, dados de calibração de
cada eixo, dados de precisão absoluta e dados de SIS. Estes dados têem o seu
conteúdo alterado quando fazemos uma troca do manipulados, troca SMB, troca
do controlador ou quando alteramos os valores de calibracao como mostrado no
capitulo 4.3 na função Edit Motor Calibration Offset.

- No caso em que foi mencionada a troca do controlador e este é novo, ao


ligarmos o sistema, os dados contidos na SMB é carregado automaticamente no
controlador, não sendo necessária uma ação manual para efetuar a carga dos
parâmetros de SMB no controlador.

- Se houver uma troca de uma SMB, e esta é uma peça nova, ao ligarmos o
sistema após a troca, os dados contidos no controlador, são carregados
automaticamente na nova placa da SMB.

- Também pode ocorrer o caso em que o controlador trocado não é um


equipamento novo, logo os dados contidos no controlador serão diferentes dos

18
dados contidos na SMB. Neste caso se faz necessário a atualização dos dados do
controlador a partir dos dados contidos na SMB.

- Se for efetuado a troca de uma SMB, e esta não for uma peça nova, será
necessário limpar os dados antigos da SMB, e depois atualizar os dados a partir
das informações contidas no controlador.

- Diferente das possibilidades anteriores, podemos fazer a alteração dos valores


de calibração via Robot Studio On LIne, ou através do Flex Pendant. Neste caso,
os dados de controlador serão diferentes dos dados contidos na SMB, logo os
dados da SMB devem ser atualizados a partir dos dados contidos no controlador.

Para as situações descritas anteriormente, no Flex Pendant, podemos efetuar


esses ajustes, da seguinte maneira.

Entre no menu ABB e selecione a opção Calibration, selecione a unidade de robô


desejada e em seguida toque na opção SMB Memory, como mostrado na figura
18.

Figura 18

19
Nesta tela temos 3 opções de comando onde temos as seguintes funções.

Show Status – Mostra os dados contidos na SMB e controlador, e se estes dados


são validos ao não, onde podemos observar se existe ou não a necessidade de
fazer uma atualização dos dados de controlador ou de SMB.

Update – Nesta opção, temos as possibilidades de se efetuar a atualização dos


dados tanto da SMB para controlador, como os dados de controlador para SMB,
onde quando tocarmos na opção Update, a tela da figura 19 será exibida no
display do Flex Pendant.

Figura 19

Na primeira opção, os dados do controlador serão atualizados a partir dos dados


contidos na SMB.

Na segunda opção, os dados da SMB serão atualizados a partir dos dados


contidos no controlador.

20
Qualquer uma das opções selecionadas apresentará uma tela solicitando a
confirmação do comando, se estiver certo da operação, toque na opção Yes, com
isso o comando de atualização será executado, não se esqueça que esta
operação altera os dados do manipulador ou do controlador e não pode ser
desfeita.

Advanced – Utilizado para apagar os dados da memória da SMB, ou do


controlador, normalmente usado quando se faz uma troca do controlador ou da
SMB e este não é um componente novo.
A primeira opção é usada para apagar os dados do controlador, quando este foi
substituído e não é um dispositivo novo, e precisa receber dados a partir de uma
SMB.
A segunda opção é usada para apagar os dados da SMB, quando esta foi
substituída, e não é uma placa nova, logo precisa receber dados, a partir de um
controlador.
Portanto para efetuar o ajuste, selecione a opção desejada e toque na opção
Clear. Com isso os dados são apagados, sendo necessário agora transferir os
dados da SMB para controlador, ou controlador para SMB, de acordo com a
necessidade.

21
5 – Salvar e carregar programas:

Os programas utilizados no robô podem ser carregados tanto do Hard Disk como
do Pen Drive, onde para isso, tocando no menu ABB, a tela mostrada na figura 20
será mostrada no display do Flex Pendant.

Figura 20

Toque na opção Program Editor no menu de opções na tela do Flex Pendant,


com isso será exibida a uma tela no display do Flex Pendant, como mostrado na
figura 21.

Figura 21

22
Toque no menu Modules para listar os módulos já existentes, após este comando
será exibido no display do Flex Pendant a tela mostrada na figura 22.

Figura 22

Toque na opção File, com este comando temos as seguintes opções:

New Modulo – Usado quando se deseja criar um novo modulo de programa.

Load Module – Usado para carregar um modulo de programa já existente,


podendo este estar em um Pen Drive ou no Hard Disk do robô. A figura 23
mostrada abaixo mostra essa tela através do display do Flex Pendant.

Figura 23

23
Selecione o drive desejado, e vá selecionando o caminho dentro da unidade, até
que encontre o modulo desejado. Note que quando encontrar o módulo desejado
e tocar sobre ele, na parte inferior da unidade de programação onde está escrito
File Name, o nome do modulo vai aparecer escrito nesta posição, estando o nome
do módulo selecionado, pressione a opção OK na parte inferior do Flex Pendant.
Com esse procedimento, o modulo de programa foi aberto do Pen Drive ou do
Hard Disk do robô dependendo de qual foi a seleção do caminho de abertura do
arquivo.

Save Module As – Através deste comando é possível salvar um módulo de


programa que etseja rodando na área de trabalho do robô. Para isso, entre no
menu ABB e selecione a opção Program Editor, com isso a será mostrada a tela
como na figura 21. Toque sobre a opção Modules, e com isso será exibido no
display do Flex Pendant uma tela como mostrado na figura 22.
Selecione o módulo que deseja salvar, toque na opção File, em seguida selecione
a opção Save Module As... selecione o caminho como mostrado na figura 23 e
pressione a opção Ok na parte inferior do Flex Pendant.

Change Declaration – Utilizado quando se deseja mudar o nome dado a um


determinado módulo.

Delete Modulo – Usado quando se deseja excluir um determinado módulo da


memória de trabalho do robô.

24
Também existe a possibilidade de salvar ou carregar programas, através de um
menu especifico, para isso selecione o menu ABB, e toque na opção Backup and
Restore, ao executar este comando, a tela mostrada na figura 24 será exibida no
display do Flax Pendant.

Figura 24

A opção Backup Current System, executa um backup a partir do controlador


para uma unidade de Pen Drive, ou outro dispositivo. Ao selecionar esta opção
será apresentado no display do Flex Pendant, uma tela como mostrada na figura
25.

Figura 25

25
As funções contidas tela opção são:

Backup folder – Nome que será dado ao arquivo contendo o backup do robô,
onde para digitar esse nome, basta tocar na opção --- na linha adequada, com
isso ira aparecer do display um teclado alfanumérico, onde é possível digitar o
nome desejado, e ao terminar pressione a opção OK na parte inferior do Flex
Pendant.

Backup path – Este é o caminho que o controlador vai utilizar para efetuar o
backup, ou seja, se será no Hard Disk, Pen Drive, etc. Para determinar esse
caminho, toque na opção --- na linha adequada, com isso será exibido no display a
tela mostrada na figura 26.

Figura 26

Agora no display da unidade você estará visualizando as opções de drive


disponíveis para se fazer o backup, toque na unidade desejada, com isso será
exibido o conteúdo dessa unidade.

26
Ira aparecer no display da unidade um teclado alfa numérico onde é possível
determinar o nome do backup. Digite o nome e toque na opção de OK na parte
inferior do Flex Pendant.
Observe que o nove dado agora aparece na lista de arquivo da unidade. Toque no
arquivo que você criou, e observe que agora ele aparece na linha de comando so
Select Folder, em seguida toque na opção de OK na parte inferior do Flex
Pendant. Neste instante o robô volta a tela mostrada na figura 25, porém observe
que o arquivo que você criou agora aparece à frente do drive escolhido.

Backup will be created at – Nesta posição, apenas é mostrado as seleções


apresentadas anteriormente.

Estando tudo conforme desejado, toque na opção Backup na parte inferior do


Flex Pendant, com isso o robô inicia a execução, mostrando no display uma tela
como mostrado na figura 27.

Figura 27

A opção Restore System, executa a carga de um determinado backup na


memória do controlador, a partir do Pen Drive, ou outro dispositivo. Ao selecionar

27
esta opção, será apresentado no display do Flex Pendant a tela mostrada na
figura 28.

Figura 28

Esta tela é utilizada para selecionar o caminho onde está localizado o backup que
irá ser carregado no robô, para isso toque na opção ---, com isso será exibido no
display uma tela como mostrado na figura 26.

Selecione o drive onde esta o backup a ser carregado, em seguida selecione o


arquivo e pressione a opção OK, agora o sistema volta a tela mostrada na figura
28, porém apresentado o caminho selecionado.

Estando tudo certo, toque na opção Restore. Com isso a tela da figura 29 sera
exibida no display.

28
Figura 29

Ao tocar na opção YES o robô inicia o processo de restore, quando isso ocorrer, o
drive colocado na USB, não deve ser removido até que o sistema termine de
executar o restart. Caso deseja cancelar estando o robô mostrando a tela da figura
29, basta tocar na opção No, com isso sento abortada a operação.

OBS: Sempre que se efetua um Restore, o sistema executa um warm start,


com isso caso tenha no robô algum programa que não foi salvo todas as
modificações serão perdidas. Portanto antes de executar um restore,
certifique-se se não há nenhum módulo a ser salvo.

6 – Como criar um módulo de programa:

29
Antes de se inicar uma programação, é necessário criar o modulo de programa,
que nada mais que que o nome dado a célula em que o robô vai operar.
Para criar esse módulo, entre no menu ABB mostrado na figura 20, e selecione a
opção Program Editor, com isso será exibido no display do Flex Pendant uma
tela como mostrado na figura 21. Toque no item escrito Modules, com isso será
apresentado uma tela, como mostrado na figura 22. Selecione a opção File na
parte inferior do Flex Pendant, e em seguida a opção New Module. Neste
momento será exibida no display do Flex Pendant a tela mostrada na figura 30.

Figura 30

Na posição Name o robô da uma opção de nome, caso deseja mudar este nome,
toque na opção ABC..., com isso abrirá uma tela com um teclado alfanumérico,
onde é possível trocar o nome do módulo, na esquencendo que este de ter no
máximo 16 caracters.
Na posição Type deve-se selecionar se o módulo é de programa ou sistema.
Normalmente o módulo selecionado é de programa.
Estando a declaração do módulo completada, toque na opção Ok na parte inferior
da tela do Flex Pendant. Com este procedimento o módulo já está criado.

8 – Definição de TCP:

30
O TCP ( Tool Center Point ) é um ponto fixado na flange do robô, onde todos os
cálculos de posição, massa, centro de massa etc são relacionados a esta posição.
Originalmente o TCP do robô está na flange, e isso torna-se em um problema
quando é fixado uma ferramenta e se faz necessário um ajuste de posição e
angulo, e esta movimentação é relacionada a ferramenta, pois por exemplo, se
tivermos que ajustar uma garra ou ferramenta de solda, e neste necessitarmos de
apenas mudar o ângulo, esse ajuste será extremamente demorado e perigoso,
visto que a posição da garra ou dos eletrodos não ficarão fixos.

Com o objetivo de solucionar este problema, existe a possibilidade de mudar o


TCP da flange do robô para a ferramenta, e para isso existem duas maneira de se
fazer, sendo:

A primeira possibilidade é em manual, onde as dimensões da ferramenta serão


digitadas manualmente, o que não se torna um método confiável, pois existem
ferramentas onde essas dimensões, tornam-se bastante difíceis de se obter,
causando erros na posição desejada do TCP.

A segunda possibilidade é o modo automático, onde as dimensões da ferramenta


são medidas pelo próprio robô, através de um sistema próprio de medição.

Este modo automático pode ser executado de três modos diferentes sendo:

1. Método dos 4 pontos

Este método apenas define o TCP do robô, não importando a direção


dos eixos X, Y e Z, o que é um pouco desconfortável quando se é
necessário um ajuste, por exemplo, da altura de um eletrodo em
relação a uma chapa a ser soldada.

2. Método dos 5 pontos

31
Semelhante ao método dos 4 pontos, ele executa a definição do
TCP, porém neste método o robô insere a direção do eixo Z, que
sempre será perpendicular ao flange do robô, caso a ferramenta
também esteja perpendicular. Se por exemplo for uma ferramenta
curva, a direção de Z será perpendicular a face da ferramenta.

3. Método dos 6 pontos

Semelhante ao método dos 5 pontos , ele executa TCP, define a


direção do eixo Z, e também define a direção do eixo X, construindo
assim um plano cartesiano completo no TCP da ferramenta, ou seja
você define qual a direção de cada eixo do sistema do plano
cartesiano da ferramenta.

Para definir um TCP, primeiramente é necessário criar a variável ToolData, com o


nome desejado. Pra isso selecione o Menu ABB, como mostrado na figura 20, e
em seguida toque na opção Jogguing. Com isso será exibido no display do Flex
Pendant, a tela mostrada na figura 31.

Figura 31

32
Agora toque na opção Tool, com isso será exibido no display do Flex Pendant, a
tela mostrada na figura 32.

Figura 32

Na parte inferior do Flex Pendant selecione a opção New, com isso será exibido
uma tela como mostrado na figura 33.

Figura 33

Na figura 33 aparecerá uma opção de declaração onde o robô utiliza um nome


seqüencial ao tool0, e o restante da declaração também semelhante.
As opções contidas na declaração tem as seguintes propriedades.

33
Name – Nome da variável declarada, onde para alterar o nome alternativo, basta
tocar na opção ---, com isso vai abrir uma tela com um teclado alfanumérico, onde
é possível alterar o nome da variável.

Scope – Nesta opção é possível se definir se a variável pode ser usada em


qualquer modulo, sendo programada como Global, se ela é de uso de apenas um
módulo, devendo ser parametrizada como Local, ou se ela é uma rotina de task,
devendo esta ser parametrizada como Task.

Storage type – Neste item se define se é Variável, onde seu valor muda a cada
Restart no robô, se é de modo Persistent que pode ser mudado seu valor no
programa ou se é de modo Constant onde seu conteúdo é imutável.

Module – É possível determinar se a rotina é de uso apenas de um módulo


programando como Module, ou se é de uso geral programando como User.

Dimension – Utilizado quando se deseja fazer uma matriz contendo vários TCP’s.

8.1 – Método dos 4 pontos

34
Será necessário que se tenha um ponto fixo onde seja possível ser alcançado pelo
robô em quatro pontos diferentes, com uma inclinação de aproximadamente 45°, e
isto pode ser feito como é mostrado na figura 34.

Figura 34

Encontrado um ponto para fixar a referência, será necessário ativar o novo TCP,
que você irá ajustar automaticamente pelo robô.
Através do menu ABB selecione a opção Jogging, depois toque na opção tool,
em seguida selecione o TCP desejado tocando sobre o nome do mesmo.
Na parte inferior do Flex Pendant, selecione a opção Edit, depois toque na opção
Define. Com isso, será exibida no display do Flex Pendant a tela mostrada na
figura 35.

Figura 35

A opção No. of points é utilizada quando se deseja utilizar mais de 4 pontospara


se definir o TCP, cabendo ressaltar que o mínimo é 4 e o máximo é e 9 pontos.

35
Onde normalmente se utiliza 4 pontos para se calcular o TPC, cabendo ressaltar
que normalmente se usa 4 pontos, pois esta são suficientes para um baixo erro de
cálculo.

Agora mova o robô para o primeiro ponto de ajuste como mostrado na figura 36,
depois toque sobre o Point 1, e em seguida selecione a opção Modify Position,
na parte inferior do Flex Pendant. Note que no item Status do primeiro ponto
apareceu a palavra Modified, indicando que o ponto já esta salvo, e
automaticamente o cursor já mudou para o Point 2.

Figura 36

Ao ser efetuado o ajuste do primeiro ponto, mova o robô para o segundo ponto,
como mostrado na figura 37 e toque na opção Modify Position.

Figura 37

Ao ser efetuado o ajuste do segundo ponto, mova o robô para o terceiro ponto,
como mostrado na figura 38 e toque na opção Modify Position.

36
Figura 38

Finalmente mova o robô para o quarto ponto, como mostrado na figura 39 e toque
na opção Modify Position.

Figura 39

Agora toque na opção OK na parte inferior do Flex Pendant, para confirmar os


ajustes efetuados anteriormente.

Com isso irá ser exibido uma tela no display do Flex Pendant, como mostrado na
figura 40.

37
Figura 40

Nesta tela são apresentados três dados importantes,que devem ser analisados
antes de se confirmar os ajustes com o OK na parte inferior do Flex Pendant:

Max Error – Esta diferença indica qual foi o máximo erro ocorrido entre os
quatro pontos, sendo que este valor caso seja muito alto, dependendo do
processo a ser executado como por exemplo solda MIG, pode causar
problemas durante o processo. Em caso de manuseio, este valor não é
muito critico, pois apenas se necessita uma movimentação de ângulo, sem
que haja precisão deste.

Min Error - Esta diferença indica qual foi o mínimo erro ocorrido entre os
quatro pontos.

Mean Error – Este parâmetro indica qual foi o erro médio na detecção
automática do novo TCP.

8.2 – Método dos 5 pontos ( TCP & Z ):

38
Para se executar o método dos cinco pontos, o procedimento utilizado é o mesmo
executado para o método dos 4 pontos, onde no momento em que for executar a
seleção do método, o programador deverá selecionar o método TCP & Z.
Ao selecionar este método, além dos 4 pontos normais, também ira aparecer um
quinto ponto, onde este será utilizado para se definir o positivo do eixo Z, visto que
a direção sempre deve ser perpendicular a face da ferramenta em questão.
Estando os 4 pontos marcados, mova o cursor para o quinto item Elongator Point
Z, mova o com a ferramenta perpendicular ao ponto de referência, em seguida
mova o robô para a direção positiva do eixo Z ( para cima ou para baixo), e
pressione a tecla Modify Position na parte inferior do Flex Pendant. A figura 41
ilustra como o eixo Z deve ser movido.

Figura 41

Observe que a coordenada do eixo X continua a mesma, semelhante a


coordenada original da flange do robô, pois neste método apenas determinamos
a direção do eixo Z.

8.3 – Método dos 6 pontos ( TCP & Z ):

39
Para se executar o método dos seis pontos, o procedimento utilizado é o mesmo
executado para o método dos cinco pontos, onde no momento em que for
executar a seleção do método, o programador deverá selecionar TCP & Z,X.
Ao selecionar este método, além dos 4 pontos normais, também irá aparecer o
quinto ponto que é o Elongator Point Z descrito anteriormente e o sexto ponto,
Elongator Point X, onde este será utilizado para se definir a direção positiva do
eixo X,
Estando os 4 pontos e Elongator Point Z marcados, mova o robô para a direção
positiva do eixo X, toque na opção Modify Position na parte inferior do Flex
Pendant. A figura 42 ilustra uma possibilidade de como o eixo X deve ser movido.

Figura 42

Observe que agora o eixo X da ferramenta possui uma direção diferente daquela
localizada no TCP0 da flange do robô.

9 – Definindo um WORK OBJECT:

40
Quando um robô é montado na fabrica, existem os eixos coordenados X, Y e Z
com o zero localizado na base do robô como pode ser verificado na figura 43.

Figura 43

Quando este robô é instalado em uma determinada aplicação, muitas vezes os


seus eixos coordenados, não estão paralelos aos eixos do equipamento, isto
torna-se em um problema, pois durante a elaboração do programa de trabalho, os
movimentos do robô não irão acompanhar os eixos do produto processado.
E além dos eixos estarem diferentes, podemos ter ângulos de inclinação do
produto em relação ao robô dificultando os ajustes do programador ou operador
do sistema. Este esta situação pode ser observada na figura 44.

Figura 44

Com o objetivo de resolver esta questão, é possível criar um sistema de eixos


para o robô, paralelo ao eixos do equipamento em que ele foi instalado, sem a
necessidade de termos que mudar a posição do robô ou do equipamento
associado a ele.

41
O método utilizado para se definer um plano cartesiano é de 3 pontos, pois
precisamos apenas três pontos, sendo que para marcarmos dois pontos para o
eixo X e um ponto para Y, criamos um plano, e onde houver o cruzamento das
retas, será criado o eixo Z, a figura 45 ilustra essa condição.

Figura 45

Através da regra da mão direita isto é facilmente definido como mostrado na figura
46.

Figura 46

Na reta do eixo X aponte o dedo indicador como indica a seta da figura 46;
Se o dedo médio estiver apontado para a direção de Y1, teremos os eixos
coordenados como mostrado na figura 47.

42
Figura 47

Para que você tenha o Y positivo para cima, será necessário apontar o dedo
médio para cima, com isso o positivo de Z também mudará para cima.

Portanto escolha a melhor posição para os eixos coordenados dentro do sistema


da célula, antes de iniciar o processo, para não correr o risco de ter algum eixo
com direção na propicia aos ajustes durante a programação.

Da mesma forma do TCP, o WORK OBJECT deve possuir um nome, ou seja, a


persistente onde iremos guardar os dados do novo WORK OBJECT.

Para criar a variável com o nome do workobject, selecione no menu ABB, a opção
Jogging, em seguida toque na opção Work object, com isso será exibida no
display do Flex Pendant uma tela como mostrado na figura 48.

43
Figura 48

Selecione a opção New na parte inferior do Flex Pendant, com isso será exibido
no display do Flex Pendant, uma tela como mostrado na figura 49.

Figura 49

Na figura 49 aparecerá uma opção de declaração onde o robô utiliza um nome


seqüencial ao wobj0, e o restante da declaração também semelhante. As opções
contidas na declaração tem as seguintes propriedades.

44
Name – Nome da variável declarada, onde para alterar o nome alternativo, basta
tocar na opção ---, com isso vai abrir uma tela com um teclado alfanumérico, onde
é possível alterar o nome da variável.

Scope – Nesta opção é possível se definir se a variável pode ser usada em


qualquer modulo, sendo programada como Global, se ela é de uso de apenas um
módulo, devendo ser parametrizada como Local, ou se ela é de uma rotina de
task, devendo esta ser parametrizada como Task.

Storage type – Neste item se define se é Variável, onde seu valor muda a cada
Restart no robô, se é de modo Persistent que pode ser mudado seu valor no
programa ou se é de modo Constant onde seu conteúdo é imutável.

Module – É possível determinar se a rotina é de uso apenas de um módulo


programando como Module, ou se é de uso geral programando como User.

Dimension – Utilizado quando se deseja fazer uma matriz contendo vários Work
Objects.

Estando finalizada a declaração da variável, toque em cima do nome fazendo com


que a tarja azul fique sobre ela e em seguida toque na opção Edit na parte inferior
do Flex Pendant, e em seguida selecione a opção Define. Com isso será exibido
no display do Flex Pendantuma tela como mostrado na figura 50.

45
Figura 50

Mova o robô para o primeiro ponto, toque sobre a opção User Point X1 na parte
inferior do Flex Pendant selecione a opção Modify Position e mantendo o robô na
mesma posição, nova o cursor para Object Point X1 e pressione Modify
Position.
Agora mova o robô para o segundo ponto do eixo X, e selecione a opção User
Point X2 e selecione a opção Modify Position, e mantendo o robô na mesma
posição, nova o cursor para Object Point X2 e pressione Modify Position.
Finalmente, mova o robô para o ponto User Point Y1, e selecione a opção
Modify Position, e mantendo o robô na mesma posição selecione Object Point
Y1e pressione a opção Modify Position na parte inferior do Flex Pendant.

Estendo terminado os ajuste toque na opção Ok na parte inferior do Flax Pendant,


para finalizar o cálculo do novo work object.

Com isso, podemos considerar que os eixos coordenados do robô estão paralelos
ao do objeto em questão, facilitando desta forma o manuseio do robô durante a
programação, visto que o robô agora se move paralelamente ao produto, ou a
mesa em que o produto será processado.

46
A partir de agora o robô está pronto para ser programado, pois já determinamos o
TCP da ferramenta e o Work Object já está definido.

10 – Movimento em modo manual:

A parte relativa a movimentação do robô, é bastante importante no momento da


programação, também fundamental quando esta se fazendo ajuste de processo
durante a produção, visto que neste momento, a pessoa responsável, não dispõe

47
de tempo para isso, em virtudo da pressão exercida pelo fluxo de produção. Em
função disso, vamos ver todos os tipos de possibilidades de movimentação do
robô, fazendo uso do TCP e Work Object criados no capitulo anterior.
Primeiramente entraremos na tela de visualização do Jogging, onde se é possível
visualizar posição física do robô dentro do plano cartesiano, TCP selecionado, tipo
de movimento, direção de movimentação do joystick, movimentação incremental,
etc. Para isso toque no menu ABB e selecione a opção Jogging, com isso será
mostrado no display do Flax Pendant a tela mostrada na figura 51.

Figura 51

Esta tela nos disponibiliza dados bastante importantes, com relação a


movimentação e a posição real do robô.

Desta forma será descrito a diante esses dados, para podermos analisar cada
situação. O posicionamento do robô relacionado ao TCP e Work Object é
mostrado na figura 52.

48
Figura 52

Onde temos a posição dos eixos cartesianos, bem como a posição dos quartenios,
que indica a rotação do programa dentro do plano cartesiano em que foi criado.
O robô se movimenta via joystick em modo manual, onde podemos observar a sua
direção de movimento, observando a figura 53, cabendo ressaltar que a direção
mostrada, considera o operador frente ao robô.

Figura 53

Quando estamos movimentando o robô normalmente já selecionamos o TCP,


Workobject, tipo de movimentação etc, e na figura 54, são apresentados esses
dados.

Figura 54

As informações contidas na figura 54, são:

49
Mechanical unit – Mostra qual manipulador esta sendo manuseado no momento,
e no caso de existir apenas uma manipulador a informação contida sempre será
ROB_1... e caso deseja mudar de manipulador bastar dar um duplo click sobre
esta opção e selecionar o manipulador desejado.

Absolute accuracy – Não ativado.

Motion mode – Mostra o tipo de movimento do robô, podendo ser Linear,


Reorientação de ferramenta ou eixo a eixo.

Coordinate system – Define se o movimento sra relacionado a coordenada


World, Base, Tool ou via Workobject.

Tool – Mostra o TCP selecionado dentre os existentes no modulo de programa.

Work object - Mostra o Work object selecionado dentre os existentes no módulo


de programa.

Payload – Mostra o controle de carga do robô dentre os existentes no módulo.

Joystick lock – Utilizado para bloquear ou liberar o joystick, total ou parcialmente.

Incremental – Serve para desabilitar e habitar o modo incremental, assim como o


modo do incremento.

Apesar de ser possível selecionar todas as opções de movimento através desta


tela, também é possível efetuar essas alterações de configuração através de uma
tecla de atalho, como mostrado na figura 55.

50
Figura 55

Esta opção localiza-se na parte inferior direita do Flex Pendant. O interessante, é


que esta tecla de atalho esta sempre disponível em qualquer tela de trabalho,
facilitanto desta forma o manuseio do robô.

Tocando nesta opção, teremos um novo menu que será apresentado na lateral
direita do Flex Pendant, como mostrado na figura 56.

Figura 56

onde, quando tocamos nesta opção, no display do Flex Pendant é exibida uma
tela como mostrado na figura 57

51
Figura 57

Nesta tela temos representado graficamente, as ultimas seleções feitas para


movimentação do robô. Porém, assim como da tela de Jogging, podemos efetuar
qualquer seleção de movimento, TCP, etc. Para isto basta tocarmos na opção
Show Details, onde será exibida uma tela de seleção que nos da a possibilidade
de alterar a qualquer momento o modo ou a coordenada em que o robô ira
trablahar, esta tela é mostrada na figura 58.

Figura 58

Nos passos a seguir será explicado o funcionamento de cada opção desta tela.

52
Figura 59

Figura 60

O conjunto de teclas mostradas na figura 61, são responsáveis pelo tipo de


movimento que o robô vai executar

Figura 61

O conjunto de tecla mostrados apresentadas na figura 62, têem a função de


selecionar o tipo de coordena ou movimentação eixo a eixo do robô.

53
Figura 62

11 – Movimento do robô eixo a eixo:

Para movimentação eixo a eixo, será necessário executar o procedimento a


seguir.

54
Com a configuração finalizada, o robô ira responder aos movimentos,
comomostrado na figura 63, onde cabe mencionar que os movimentos dos eixos
são independentes.

Figura 63

12 – Movimento do robô via coordenadas de base:

Este tipo de movimento é bastante utilizado, quando se deseja fazer movimentos


retilíneos através de interpolação dos 6 eixos do robô, mantendo fixo o ângulo da

55
ferramenta. Para se obter este tipo de movimento, será necessário seguir os
passos indicados a seguir:

Com as seleções efetuadas da coordenada de base, os movimentos do robô se


fazem de acordo com o movimento do joystick do Flex Pendant, ou seja, o robô
acompanha as direções físicas de movimento do joystick.
Isto pode ser acompanhado seguindo as setas indicativas na figura mostrada a
seguir.

Figura 64

13 - Movimento do robô via coordenada de reorientação da ferramenta:

Este tipo de movimento é bastante importante, quando o robô está sendo


manipulado no produto, e neste caso se faz necessário uma mudança do ângulo

56
da ferramenta, sem que o seu TCP mude de posição em relação ao plano
cartesiano da base, ou seja, todo robô se movimenta para que o TCP da
ferramenta se mantenha inerte com exceção do ângulo.
Para que isso ocorra se faz necessário algumas seleções, como mostrado a
seguir.

Efetuando esses comandos, o robô irá se movimentar de acordo com a figura 65.
Observe que os movimentos do robô não mais são em uma determinada direção,
mas executa o movimento em torno dos eixos cartesianos.

Figura 65

14 – Movimento do robô via coordenada de ferramenta:

Neste tipo de movimento o robô relaciona-se à ferramenta, porém os movimentos


executados acompanham as direções dos eixos cartesianos, com uma diferença

57
do movimento de base, pois para ferramenta a direção de movimento do eixo Z é
trocada com o eixo X, e nesta condição o eixo Z sempre estará apontando para
onde a ferramenta estiver orientada.
Para obter este tipo de movimento, siga o procedimento a seguir.

Com este procedimento agora é possível movimentar o robô observando o tipo de


movimento que ele executará, como mostrado na figura 66.

Figura 66

Este tipo de movimento é muito importante, por exemplo, quando estamos


ajustando um robô de solda ponto e precisamos aproximar ou recuar o eletrodo de
uma chapa, não importa o ângulo da ferramenta, pois se o eletrodo está
perpendicular a chapa, o movimento do robô também ira ser perpendicular, não
alterando assim a orientação da ferramenta.

58
11 – Programando o robô:

11.1 – Instruções de movimento do robô:

As funções de movimento do robô MóveJ, MoveL e MoveC, podem sofrer alguns


tipos de interferências através de argumentos que se podem inserir nas linhas de
movimento.
Normalmente as linhas de movimentos têm como parâmetros básicos e
necessários as opções como motrada na figura 67.

59
Figura 67

Porém quando se deseja ter um pouco mais de controle, utilizamos os seguintes


argumentos:

- [\Conc] – Quando o usuário não necessita de uma sincronização com


equipamentos externos, ou no acionamento de sinais de saída ou ate mesmo de
sinais de entrada, este argumento é ocultado. Como já é sabido, os controladores
S4 aumentaram sua velocidade em relação aos modelos S3, pois o
processamento de comandos lógicos ocorrem durante os movimentos do robô, ou
seja, quando o robô esta executando uma instrução de movimentos, inúmeras
instruções de lógicas estão sendo executadas a frente. Com relação a velocidade
de processamento, tornando desta forma o sistema bem mais rápido. No entanto
essa particularidade pode causar alguns problemas, como por exemplo, uma
saída ser acionada num momento errado.
O argumento [\Conc] sendo ativado, limita a execução do programa em 5 linhas a
frente, não deixando desta forma uma determinada saída ser ligada fora de uma
posição desejada.

- [\T] – Este argumento tem a função de controlar o movimento do robô por tempo
e não por velocidade. Esta condição é comumente utilizada quando o robô precisa
entrar em uma esteira em movimento, o mesmo não dispõe de placas de
Conveyor Tracking. Desta forma todos os movimentos do robô são sincronizados
por tempo utilizando a formula develocidade relacionado ao espaço e o tempo:

- [\V] – Este argumento tem a função de controlar a velocidade do robô não mais
pelas velocidades pré-definidas, mas por valores numéricos que podem ser
alterados durante a execução do programa.

- [\Z] – Este argumento tem a função de controlar a zona de aproximação do robô


a um determinado ponto não mais pelas zonas pré-definidas, mas por valores
numéricos que podem ser alterados durante a execução do programa.

60
- [\WObj] – Este argumento tem a função de ativar um determinado plano
cartesiano em uma linha de movimento conforme a necessidade.

15.1 – MOVE J:

Este tipo de movimento é usado para se unir dois pontos, ou seja, mover o robô
de uma posição conhecida para uma outra posição também conhecida, porém o
robô controla apenas o ponto de partida e o ponto de chegada, não controlando o
trajeto, ou seja, o robô movimenta o menor numero de eixos possíveis para atingir
os pontos, sem executar interpolação, isto quer dizer que caso tenha um obstáculo
próximo ao robô o mesmo pode colidir, causando uma quebra da ferramenta ou
até mesmo um dano a estrutura do manipulador. Portanto é muito importante
saber analisar o momento de se utilizar esta instrução dentro das linhas de
programação do robô.
Para editar um programa selecione o ícone ABB, na parte superior da unidade de
programação, com isso ira aparecer o um menu como mostrado na figura 68.

Figura 68

61
Selecione a opção Program Editor, como já foi criado um módulo de programa
anteriormente, a tela mostrada na figura 69, será exibida no display do Flex
Pendant.

Figura 69

O próximo passo será criar uma rotina de programa, para que possamos editar o
programa do robô, para isso pressione a opção Rotine, na parte superior da
unidade de programação, após este comando será exibido no display do flex
pendant, afigura mostrada na figura 70.

Figura 70

62
Toque no menu File selecionando a opção New Rotine, com esse comando será
exibido no display do flex pendant a tela mostrada na figura 71.

Figura 71

Nesta tela devemos parametrizar a declaração da nova rotina como:

Name – Nome da rotina;

Type – Se a rotina é do tipo Procedure, Function ou Trap;

Parameters – Este só deve ser utilizado caso a chamada da rotina seja via
variável;

Data Type – Não utilizado;

Modulo – Determina em qual módulo esta rotina será utilizada;

E as demais declaração serão feitas caso esta rotina seja declarada como Error
Handler.
Ao terminar a declaração toque na opção OK para que a rotina seja declarada.
Neste momento ela já vai ser visualizada na tela do Plex Pendant

63
Para editar a rotina basta tocar na opção Show Rotine.

Estando o robô na posição desejada toque na opção Add Instruction, com isso
irá aparecer uma lista de instruções, toque na opção MoveJ, com esse comando o
sistema vai criar uma linha de comando como mostrado na figura 60 e caso queira
mais uma linha basta tocar novamente na opção de MoveJ.

Figura 60

Onde está o asterisco são guardadas as coordenadas de robô referente a esse


ponto, sendo interessante nomeá-lo, pois se necessitar mover o robô para este
ponto novamente em outra posição do programa, basta selecioná-lo numa lista e
não será necessário marcar o ponto novamente, e também existem algumas
funções do robô que serão possíveis de se executar caso este ponto possua um
nome.
Para criar um ponto de movimento do robô com um nome específico, pressione o
menu ABB, com isso será exibido na display do flex pendant uma tela como
mostrado na figura 61.

64
Figura 61

Selecione na lista mostrada no display do flex pendant a opção Program Data,


uma lista de data types será exibida na tela do flex pendant, como mostrado na
figura 62.

Figura 62

Escolha a variável de Robtarget, tocando nesta opção no display do flex pendant,


neste instante, será exibida uma tela como mostrada na figura 63.

Figura 63

Em seguida temos o controle de velocidade, onde este pode ir até ao máximo de


7000mm/s. Se programarmos um V100 diz que o robô irá movimentar-se de um
ponto P1 para um ponto P2 a uma velocidade de 100mm/s, este movimento pode
também ser efetuado por controle de tempo.
A função seguinte controla a zona de aproximação do ponto, ou seja, quando o
robô está se aproximando de um determinado ponto pré-marcado, e ele entra na
zona de aproximação, o sistema considera que o robô já atingiu o ponto
programado e muda a direção de movimento para o próximo ponto marcado,

65
ganhando com isso em velocidade e protegendo a integridade do sistema
mecânico do manipulador, em um ponto em que não se necessite tanta precisão
fazendo o contorno com mais suavidade. Na figura 61 temos um ponto de
movimento com uma zona de aproximação.
Esta zona só deve ser programada com precisão, caso o próximo comando seja
por exemplo o acionamento de uma garra, pois caso não haja precisão, o robô irá
acionar a garra antes mesmo de ter atingido o ponto desejado.
Na figura 61, temos um caso onde programamos uma zona de 30, isso cabe dizer
que o raio da esfera é de 30mm.

Figura 61

E Tool1 é a ferramenta utilizada no robô, pois em um robô podemos ter varias


ferramentas trabalhando ao mesmo tempo, e para facilitar os ajustes, podemos
ativar diferentes ferramentas a cada linha de movimento, caso seja necessário.
O movimento do robô após executar o programa da figura 60, terá a trajetória
mostrada na figura 62.

Figura 62

O movimento executado não é linear, pois o robô utilizou o menor número de


eixos para fazer o movimento, pois foi utilizado MOVE J.
Caso necessite fazer uma modificação do ponto pré-programado, mova o robô
para nova posição, e pressione a opção Modify Position, o robô vai exibir uma

66
tela pedindo confirmação da alteração, toque na opção Modify, caso deseje
alterar a posição, ou toque em Cancel, mantendo a posição original.

15.2 – MOVE L:

Semelhantemente ao MoveJ criamos o MoveL, onde estando o robô na posição


desejada toque na opção Add Instruction, com isso ira aparecer uma lista de
instruções, toque na opção MoveL.
Com esse comando o sistema vai criar uma linha de comando como mostrado na
figura 63, e caso deseje criar uma nova linha basta tocar novamente na opção.

Figura 63

A diferença básica é que neste tipo de movimento o robô irá interpolar todos os
eixos simultaneamente, para que seja executado um movimento linear, ou seja,
neste caso o robô controlará o ponto de partida e o ponto de chegada, além de
controlar todo o trajeto do robô, mantendo sempre o ângulo da ferramenta durante
o movimento, este função é exemplificada na figura 64 a seguir:

67
Figura 64

Caso necessite fazer uma modificação do ponto pré-programado, mova o robô


para nova posição, e pressione a opção Modify Position, o robô vai exibir uma
tela pedindo confirmação da alteração, toque na opção Modify, caso deseje
alterar a posição, ou toque em Cancel, mantendo a posição original.

15.3 – MOVE C:

Este comando é sempre utilizado, quando se deseja executar um arco ou um


circulo completo com trajetória perfeita. Onde cabe observar que sempre que se
utiliza um MoveC, automaticamente são criados dois pontos, onde o primeiro é o
raio do arco, ou da circunferência e o segundo é o ponto final do movimento.
Então neste caso precisamos criar um ponto de partida para a execução do arco,
podendo este ser um MoveJ ou um MoveL. e em seguida criarmos um MoveC.
Para criar um programa que execute o arco mostrado na figura 66, primeiro
criamos uma linha de MoveJ ou MoveL, selecionando a opção Add Instruction,
em seguida no menu selecione a opção MoveL, assim teremos o ponto de inicio
do arco. Depois toque na menu Next, ate visualizar a instrução MoveC, tocando
sobre esta opção, criando o movimento circular, com isso teremos o programa
como mostrado na figura 65.

68
Figura 65

Note que para instrução de MoveC, o sistema do controlador criou uma linha com
dois pontos de movimentos, referente ao raio do arco, bem como o ponto final do
arco.
Neste caso o robô parte do ponto P1, passando pelo ponto P2 controlado pelo raio
do arco, chegando a P3 finalizando o movimento.
Esse programa executará um movimento em arco como pode ser observado na
figura 66.

Figura 66

Caso tenhamos a necessidade de fazer um circulo fechado, o mais indicado seria


um programa executando dois semicírculos, garantindo desta forma o fechamento
total da circunferência, e para isso temos que criar um programa como mostrado
abaixo na figura 67 a seguir.

Figura 67

69
Este programa irá executar um círculo, como pode ser observado na figura 68.
Também observe que o segundo ponto do segundo MoveC utilizou o ponto P1 do
MoveL, isto foi feito para garantir que o ponto de partida e de chegada fossem o
mesmo, e também cabe observar que a zona do ponto 1 e a do segundo MoveC
estão com fine, para garantir que tenhamos precisão no inicio e no fim do circulo.
Veja na figura 68 como ficará a execução do programa mostrado na figura 67.

Figura 68

Caso necessite fazer uma modificação do ponto pré-programado, mova o robô


para nova posição, e pressione a opção Modify Position, o robô vai exibir uma
tela pedindo confirmação da alteração, toque na opção Modify, caso deseje
alterar a posição, ou toque em Cancel, mantendo a posição original.
10 – Manipulação de entradas e saídas

A seguir será apresentado como fazer manipulação com os sinais de entradas e


saídas.

10.1 – InvertDO

Este comando inverte o valor do sinal de saída, ou seja, se o sinal for 0 ela passa
para 1 e vice-versa. Por exemplo

InvertDO do 10;

70
Esta linha de programa faz com que o sinal da saída 10 seja invertido, ou seja se
o sinal atual for 1 a saída vai para 0, e caso seja 0 a saída vai para 1.

10.2 – PulseDO

Este comando é utilizado para gerar um pulso controlado em uma determinada


saída. Por exemplo:

PulseDO do 10

Este comando executa um pulso na saída 10 de 0.2 s. Caso necessite de valores


diferentes de 0.2s, será necessário inserir o argumento [ \Plength ], onde através
deste determina-se qualquer valor de pulso, onde o step mínimo será de 0.01 s, e
o step máximo será de 32s. A execução da próxima instrução começa
imediatamente após o processamento da instrução PulseDO, ou seja a próxima
instrução não depende do comprimento do pulso.

10.3 – Reset

Este comando é utilizado para levar o valor de um sinal de saída digital para 0.

Reset do_10;

Com este comando o sinal de saída do_10 é levado para 0. Porém deve-se ter
uma atenção especial, pois se o sinal tiver sido parametrizado pelo modo
invertido, a saída irá para 1 e não para 0.

10.4 – Set

Este comando leva o valor de um sinal de saída digital para nível 1

71
Set do_10;

Com este comando o sinal do_10 é levado para 1. Porém deve-se ter uma
atenção especial, pois se o sinal tiver sido parametrizado pelo modo invertido, a
saída irá para 0 e não para 1.

10.5 – SetAO

Este comando é utilizado para mudar o valor de um sinal de saída analógico

SetAO ao1, 3.0;

O sinal da saída analógica ao1 terá seu valor de saída carregado em 3.0V

10.6 – SetDO

Este comando é utilizado para mudar o valor de um sinal de saída digital tanto
para 1 como para 0, sendo também possível inserir um tempo de atraso onde
basta incluir o argumento [ Sdelay], onde no caso de um tempo de atraso, este
deve estar na faixa de 0.1s a 32s.

SetDO\Sdelay:=1.0, do_10, 1;

A saída do_10 será levada para nível 1, com um atraso programado de 1 s.


Entretanto a execução do programa continuará com a execução do programa,
independente do tempo de atraso. Caso seja omitido o argumento [\Sdelay], tão
logo seja acionado a saída o sistema já faz a transição do mesmo.

10.7 – SetGO

72
Este comando é utilizado para mudar o valor de um grupo de sinais de saídas
digitais, podendo também ser inserido atrasos. Caso seja omitido o argumento \
Sdelay, tão logo seja acionado o grupo de saída o sistema já faz a transição do
mesmo

SetGO\Sdelay := 1.2., go1, 13;

O sinal do grupo go1 terá seu valor carregado com o valor decimal 13, com um
atraso de 1.2 s, desde que este grupo tenha 4 bits, ou seja, considerando que este
grupo seja formado pelas saídas de 4 a 7 e o bit mais significativo seja o 7,
teremos:

Saída 4 = 1
Saída 5 = 1
Saída 6 = 0
Saída 7 = 1

11 – VARIOUS

Pressione na parte superior do teclado o menu IP1, em seguida escolha a opção


VARIOUS.

11.1 – “ := ”

Esta instrução é utilizada para designar um novo valor ao dado, sendo que este
valor pode ser tanto uma constante ou até mesmo uma expressão aritmética,
como por exemplo, uma soma ou subtração.

Reg4 := 200;

Este comando faz com que o registro Reg4 seja igual ao valor 200

73
Re4 := Reg3 + 1;

Esta é uma forma de se fazer um contador utilizando esta função.

11.2 Comment

É utilizado somente para tornar o programa mais fácil de se entender, ou seja ,


não possui nenhuma ação no programa, apenas utilizado para comentar linhas de
comando durante a programação.

! Efetua contagem de peça


Re4 := Reg3 + 1;

11.3 WaitTime

Este comando é utilizado para esperar um tempo determinado, este pode ser
usado para garantir que os eixos do robô fiquem parados.

WaitTime 1.2

A execução do programa para por 1.2 s


Este comando tem como argumento o [\InPos], onde o robô apenas vai começar
a contagem de tempo quando o manipulador já tiver atingido uma posição
preveamente programada.

WaitTime\Inpos 1.2

74
Após a parada física do robô a execução do programa espera por um tempo de
1.2 s, antes de prosseguir com as próximas instruções.

11.4 WaitUntil

Este comando é utilizado para esperar até que uma combinação lógica seja
satisfeita, como por exemplo, esperar por um conjunto de entradas digitais.

WaitUntil di3=1 And di1=0 And di2=0

A execução do programa só irá continuar quando a di3=1 e di1=0 e di2=0, e


também se for necessário que o robô esteja parado para iniciar a verificação, será
necessário ativar o argumento [\InPos].
Caso essa espera não seja satisfeita e se necessite continuar a execução do
programa, faz-se necessário o uso do argumento [\MaxTime ], onde este espera
por um tempo programado, não ocorrendo a combinação teremos a continuação
da execução do programa. Porém esse argumento gera um erro devido a
combinação não ter ocorrida antes do termino do tempo. Fazendo ser necessário
o uso do argumento [\TimeFlag], que no caso tem a função de carregar um flag,
indicando que o tempo foi excedido e a função foi abortada.

10.8 WaitDI

Este comando é utilizado para esperar até que um sinal de entrada digital seja
ligado ou desligado.

WaitDI di_10, 1;

Este comando faz com que a execução do programa só prossiga quando a


entrada digital di_10 estiver em nível 1.
Como argumento deste comando, temos as seguintes funções:

75
- [\MaxTime] – É o tempo máximo que o sistema fica esperando uma
entrada ir a nível 1.

- [\TimeFlag] – Flag de erro, quando o tempo de espera é atingido este flag


vai a TRUE e caso contrário será FALSE. Este flag pode ser utilizado para
se tomar alguma decisão durante a execução do programa.

16.6 - WaitTime:

Este comando é utilizado para esperar por um tempo determinado, e depois


continuar a execução do programa. Por exemplo, selecione a instrução WaitTime,
na lista de instruções automaticamente será criado uma linha de comando como
mostrado abaixo.

WaitTime 1.2

A execução do programa pára por 1.2 s

Neste caso se for necessário que o robô esteja parado para depois iniciar a
contagem do tempo. Será necessário inserir o argumento [ \InPos ].

WaitTime\Inpos 1.2

Após a parada mecânica do manipulador a execução do programa espera por um


tempo de 1.2 s

4.1 – Movimento com evento de sinal de saída:

Quando existe a necessidade de se acionar uma determina saída do robô ao final


de um movimento, podemos aplicar as funções MoveLDO, MoveJDO ou

76
MoveCDO. Estas instruções teem como finalidade acionar um determinado sinal
de saída no momento em que o robô entra na zona de aproximação do ponto.
Onde este sinal pode ser parametrizado para ser levado a 0 ou a 1, dependendo
da aplicação. Para exemplificar esta função temos:

CONST robtarget pCargaMonovia;


PERS tooldata toolVentosa;
PERS wobjdata

MoveLDO pCaragaMonovia, v100, z1, toolVentosa\WObj:=wobjMonovia,do4_DentroMonov,0;

Neste exemplo, quando o robô aproxima do ponto pCargaMonovia, estando o


mesmo a 1mm do ponto a saída do4_DentroMonov, é levada a nível 0.
Igualmente para MoveJDO e MoveCDO é possível se executar a função.
Estes comandos são sub-rotinas especificas declaradas como system, para
facilitarem a programação, sendo estas escritas como mostrado abaixo.

PROC MoveLDO(
robtarget ToPoint,
speeddata Speed
\num T,
zonedata Zone,
PERS tooldata Tool
\PERS wobjdata WObj,
VAR signaldo Signal,
dionum Value)

VAR triggdata my_triggdata;

TriggIO my_triggdata,0\DOp:=Signal,Value;
TriggL ToPoint,Speed\T?T,my_triggdata,Zone,Tool\WObj?WObj;
ENDPROC

77
Neste exemplo as variáveis que possuem \ precedendo o nome são funções
opcionais, as variáveis que terminam em virgula, são funções obrigatórias na
montagem da instrução.
Aqui o sinal de saída Signal, vai a um valor pré-programado 0 ou 1, quando o
robô chegar a 0mm da zona de aproximação do ponto ToPoint.

6 – Controle de aceleração e desaceleração do robô:

6.1 – AccSet:

Este comando tem por finalidade fazer o controle das rampas de aceleração e
desaceleração do robô. Este comando tem os seguintes argumentos.

- Acc – Tem a função de controlar a aceleração e a desaceleração sendo esta


uma porcentagem da máxima dada por 100%.
- Ramp – Este argumento faz o controle do coeficiente com que a aceleração e
desaceleração aumentam durante o processo de arranque e parada do robô.

A função AccSet, normalmente é utilizada quando se necessita controlar a partida


e a parada do robô numa aplicação em que o produto manipulado é frágil, ou
quando a carga é alta, ou até mesmo com o intuito de se preservar a integridade
mecânica do manipulador.

7 – Chamada de rotinas via variável:

Esta função é muito utilizada, quando o processo tem varias sub-rotinas


semelhantes, como por exemplo, a produção de peças diferentes, mas com

78
rotinas semelhantes. Sendo assim, podemos utilizar a função CallByVar, onde
esta tem a função de fazer a chamada de uma sub-rotina, através de uma variável
numérica, desta forma minimizando consideravelmente o numero de linhas de
programa, bem como facilitar o entendimento da estrutura do programa como um
todo.

Para exemplificar a aplicação desta função temos o seguinte exemplo:

PERS num nModeloMolde:=0;

PROC main()
WHILE nModeloMolde< =0 DO
rMensagem 10\nModel:=nModeloMolde;
WaitTime 0.1;
ENDWHILE
CallByVar "rMolde",nModeloMolde;
ENDPROC

Neste exemplo existem varias rotinas de produtos distintos, nomeados como


rMolde1, rMolde2, rMolde3.............
A função CallByVar, faz a chamada das rotinas através da string “rMolde”
somado ao registro numerico nModeloMolde.

A função CallByVar, nada mais é que uma sub-rotina declarada como system,
onde a base dessa sub-rotina é dada pela função como mostrado a seguir;

PROC CallByVar(
string Name,
num Number)

79
IF (Number-Trunc(Number)<>0) OR (Number<0) THEN
ErrWrite "CallByVar fault","Argument Number is not an integer or"\RL2:="is negative.";
Stop;
EXIT;
ENDIF
%Name+NumToStr(Number,0)%;
ENDPROC

Nesta rotina a variável Name, trás o nome da rotina, que no nosso exemplo é o
rMolde, a variável Number, trás o numero da rotina, onde no caso de for o
numero 3, teremos a chamada da rotina rMolde3.
A função propriamente dita enta na função %Name+NumToStr(Number,0)%, e
as outras instruções apenas são utiilizadas caso haja alguma falha de chamada,
sendo que estas falhas são para números não inteiros e números diferentes de 0.

Esta função pode ser comparada a função TEST, porem este torna o programa
muito longo devido a numero de CASE associados a função.

8 – Ativando cronômetros nas linhas de programa:

Em algumas aplicações, se faz necessária a ativação de contadores de tempo


para controle de processo, por exemplo.

- Para iniciar esse contador de tempo, se faz necessário zerar o contador, e para
isso utilizamos a instrução ClkReset.
- Para interronper a contagem de tempo deve-se utilizar o comando ClkStop,
onde logo após o comando o contador para acumulando o valor da contagem.
- Para iniciar o contador a função ClkStart deve ser ativada.

A rotina a seguir mostra um exemplo de aplicação das funções de clock.

ClkStop clTempoVacuo;

80
ClkReset clTempoVacuo;
ClkStart clTempoVacuo;
nTentativas:=nTentativas+1;
fTempoVacuo:=TRUE;
WHILE di1VACUOSTATO=0 AND fTempoVacuo=TRUE DO
TPErase;
TPWrite "===================================== ";
TPWrite "Falha na formacao de vacuo";
TPWrite "===================================== ";
nTempoVacuo:=ClkRead(clTempoVacuo);
IF nTempoVacuo>2 THEN
fTempoVacuo:=FALSE;
ELSE
fTempoVacuo:=TRUE;
ENDIF
ENDWHILE

5 – Leitura de porta serial do robô:

Em algumas aplicações do robô, se faz necessário a utilização de leitura de uma


porta serial do robô. No caso do robô ABB, este é equipado com duas portas
seriais, sendo SIO1 e SIO2. Através destas portas, é possível ler uma
determinada string, composta de números de coordenas, como por exemplo, num
sistema em que a aplicação possui um sistema de visão, e este alimenta o robô
indicando a variação de um determinado produto, a partir de um padrão pré-
definido. Como exemplo de aplicação desta função temos:

Definição da porta
VAR iodev com1;
VAR iodev iodev1;

Definição de string para leitura da porta


VAR string sio1:="sio1:";

81
Definição de uma string para acumular string da posição.
PERS string stLeituraPorta:="00001.32,00021.03,00005,18";

stLeituraPorta:="";
Open sio1,com1\Read;
PulseDO\PLength:=0.2,do7_LiberaLeitur;
stLeituraPorta:=ReadStr(com1\Time:=10);
Close com1;

O comando Open libera a leitura as porta SIO1, através da com1, após a abertura
da porta o robô fica esperando por no máximo 10s, chegando uma string, o robô
continua a execução do programa, mas caso não chegue nada, o robô para a
execução do programa, indicando TimeOut na leitura da porta serial.

5.1 – Conversão de string para valor numérico:

Ainda seguindo o exemplo anterior de leitura de porta serial, utilizaremos algumas


instruções que associadas a leitura da porta serial, são capazes de pegar uma
string e converte-la em valores numéricos.

PROC rLeituraDeslocam()
! Programa de leitura da porta serial
stLeituraPorta:="";
Open sio1,com1\Read;
PulseDO\PLength:=0.2,do7_LiberaLeitur;
stLeituraPorta:=ReadStr(com1\Time:=10);
Close com1;
stDeslocamentoX:=StrPart(stLeituraPorta,1,6);
stDeslocamentoY:=StrPart(stLeituraPorta,8,6);
stDeslocamentoZ:=StrPart(stLeituraPorta,15,6);
fDeslocamentoX:=StrToVal(stDeslocamentoX,nCoorrecaoX);

82
fDeslocamentoY:=StrToVal(stDeslocamentoY,nCoorrecaoY);
fDeslocamentoZ:=StrToVal(stDeslocamentoZ,nCoorrecaoZ);
ENDPROC

O comando StrPart deste exemplo, corta da stLeituraPorta do caracter 1 com


comprimento 6 e guarda na variável stDeslocamentoX. Na variável
stDeslocamentoY é acumulado da posição 8 com comprimento 6 e em
stDeslocamentoZ da posição 15 com comprimento 6.
No passo seguinte a função StrVal, pega o conteúdo de stDeslocamentoX,
converte para valor numérico devolvendo o resultado dentro da variável
nCoorrecaoX. Caso ocorra alguma falha no partilhamento da string o robô faz a
variável fDeslocamentoX igual a TRUE. Com este procedimento é possível fazer
uma leitura de um deslocamento através de um sistema de visão e realimentar o
robô, desta forma fazendo compensação de variação de processo.

9 – Controle de configuração do manipulador:

Durante certos movimentos do robô, ocorrem casos em que para o robô manter a
trajetória programada e permanecer com o TCP no ângulo determinado pelo
programa, o robô passa por situações em que a configuração dos eixos não se
tornam possíveis e se isso ocorrer, o programa do robô para, e é gerada uma
falha de configuração dos eixos, não sendo possível a continuidade do programa.
Para contornar essa situação, o robô disponibiliza a instrução ConfJ ou ConfL,
onde estas devem ser inseridas antes da linha que apresentou o problema, porem
o comando deve ser associado ao argumento [\Off]. Com isso o robô consegue
passar pela posição de erro gerando apenas uma pequena alteração no ângulo de
trajetória da ferramenta. Para voltar a situação normal, se faz necessário a
ativação do argumento [\On], onde o robô volta a controlar a configuração dos
eixos. Esta função quando aplicada ao MoveJ, podem causar acidentes, pois o
robô executa movimentos indesejados muito longe da trajetória normal, podendo

83
bater em dispositivos, produtos, ou ate causando acidentes em pessoas. Um
exemplo de aplicação seria:

IF Present(Direita)=TRUE THEN
rMENSAGEM;
ConfL\Off;
MoveL pMov_Coroa{1},v100,z1,tGear_1\WObj:=wobjCoroa_Dir;
MoveL pMov_Coroa{4},v100,z10,tGear_1\WObj:=wobjCoroa_Dir;
ConfL\On;
ELSEIF Present(Esqueda)=TRUE THEN
rMENSAGEM;
ConfL\Off;
MoveL pMov_Coroa{1},v100,z1,tGear_1\WObj:=wobjCoroa_Esq;
MoveL pMov_Coroa{4},v150,z10,tGear_1\WObj:=wobjCoroa_Esq;
ConfL\On;
ENDIF

84
12 – Comunicação com o display da unidade de programação.

Pressione na parte superior do teclado o menu IP1, em seguida escolha a opção


COMMUNICATE.

Os comandos que serão apresentados a seguir são utilizados para efetuar


comunicação via display da unidade de programação, bem como atribuir funções
as teclas da parte inferior da unidade de programação, como mostrado na figura a
seguir.

12.1 – TPErase

85
Este comando é usado para limpar tudo que estiver escrito no display da unidade
de programação.

TPEraser:

Aplicado quando se deseja limpar todos os caracteres do display da unidade de


programação.

12.2 – TPWrite

Este comando é utilizado para escrever um texto no display da unidade de


programação, normalmente é utilizado junto com um TPErase, e no máximo pode-
se ter 80 caracteres. Caso deseje escrever em apenas uma linha utilizar no
maximo 40 caracteres.

TPErase;
TPWrite “ Execução de programa iniciada “

Neste comando podemos inserir os seguintes argumentos:

- [ \Num ] Com este argumento é possível visualizar por exemplo o valor de um


determinado contador.

TPErase;
TPWrite “ O numero de peças produzidas é = “ \Num:=reg1;

Se por exemplo o número de peças produzidas for 10, após o sinal de igual irá
aparecer o número 10.

Com isso a linha da string ficará como :

86
O numero de peças produzidas é = 10

- [\Bool] – Este argumento apresenta um resultado booleano logo após o termino


da string, podendo este ser FALSE ou TRUE.

- [\Pos] – Este argumento apresenta um valor de posição do robô, composta dos


valores de X, Y e Z, como por exemplo, uma posição atual do robô.

-[\Orient] – Este argumento apresenta os quartenios de rotação de um


determinado ponto do programa dentro um determinado plano cartesiano do robô,
onde estes valores serão dados como q1, q2, q3 e q4.

12.3 – TPReadFK

Este comando é utilizado para programar as teclas da parte inferior da unidade de


programação, sendo possível escrever um texto acima da mesma.
Nesta linha de comando, temos os seguintes argumentos:

- REG – Para que o sistema identifique qual tecla foi pressionada, elas são
definidas de 1 a 5, e este número é carregado dentro do registro programado em
REG
- ANSWER – Posição onde será escrito uma string, solicitando o acionamento de
uma das 5 teclas programáveis.
- FK1 – Primeira tecla de função, e esta quando pressionada carrega o número 1
no REG
- FK2 – Segunda tecla de função, e esta quando pressionada carrega o número 2
no REG
- FK3 – Terceira tecla de função, e esta quando pressionada carrega o número 3
no REG
- FK4 – Quarta tecla de função, e esta quando pressionada carrega o número 4 no
REG

87
- FK5 – Quinta tecla de função, e esta quando pressionada carrega o número 5 no
REG
- [ \MaxTime ] – Pode-se programar um tempo máximo para que a tecla seja
pressionada, e caso o tempo expire o robô continua a execução do programa.
- [\DIBreak] – Aqui é possível programar uma di, e quando esta é levada a nível 1,
o robô continua a execução do programa mesmo que nenhuma tecla seja
pressionada.
- [ \BreakFlag ] – Caso nenhuma tecla seja pressionada no tempo programado,
esta função evita que a execução do programa seja interrompida por falha de
execução de programa.

TPReadFK nReceita,"Confirma receita do novo vidro ?","Sim",””,"Nao",””,””;


IF nReceita=1 THEN
nAlturaVidro{nModeloReceita}:=nAlturaReceita;
nLarguraVidro{nModeloReceita}:=nLarguraReceita;
nExpessuraVidro{nModeloReceita}:=nExpessuraReceit;
nColunaVidroPall{nModeloReceita}:=nColunaReceita;
nNumeroVidro{nModeloReceita}:=nQuantidReceita;
ENDIF
TPReadFK nReceita,"Deseja montar outra receita ?","Sim",””,"Nao",””,””;
IF nReceita=3 THEN
fMontarReceita:=FALSE;
ENDIF
Se pressionar a tecla Sim, o reg1 será carregado com o número 1
Se pressionar Não será carregado com o número 3 e assim sucessivamente.

12.4 – TPReadNum

88
Este comando é utilizado para fazer a leitura de um número no teclado numérico,
e também possui os argumentos [ \MaxTime ], [ \DIBreak ] e[ \BreakFlag ], que
possuem funções semelhantes as anteriores descritas.

Como exemplo deste comando podemos ter:

TPErase;
TPReadNum nModeloReceita,"Selecione numero da receita desejada ?";
TPErase;
TPReadNum nAlturaReceita,"Qual a altura do vidro da receita ?";
TPErase;
TPReadNum nLarguraReceita,"Qual a largura do vidro da receita ?";
TPErase;
TPReadNum nColunaReceita,"Quantas colunas de vidro tem no pallet ?";

13 – Funções matemáticas.

Pressione na parte superior do teclado o menu IP1, em seguida escolha a opção


MATHEMATICS.

13.1 – Add

Este comando é utilizado para adicionar um valor numérico a uma variável

Add reg1, 3:

Neste comando é somado o valor 3 ao conteúdo do registro reg1

13.2 – Clear

89
É utilizado para apagar uma variável numérica ou persistente, ou seja, a variável
assume o valor zero.

Clear reg1;

O valor do registro reg1=0

13.3 – Decr

Este comando é utilizado para subtrair 1 de uma variável numérica.

Decr reg1;

O registro 1 é decrementado de uma unidade.

13.4 – Incr

Este comando é utilizado para somar 1 em uma variável numérica.

Incr reg1;

O registro 1 é incrementado em.uma unidade.

14 – Comandos de comparações

90
Pressione na parte superior do teclado o menu IP1, em seguida escolha a opção
PROG. FLOW

14.1 – Compact IF

Este comando é usado somente quando uma única instrução é executada se uma
dada condição é satisfeita. Onde neste caso a estrutura do IF convencional, é
oculta.

If reg1 > 3 Set do3

Se o registro reg1 for maior que 3 fazer a saída do3 igual a 1

14.2 – IF

Este comando é utilizado quando a partir de uma condição, se queira executar


mais de um comando, como mostrado abaixo:

IF reg1 > 3 THEN


Reg1 = 0;
Set do1;
ELSE
Rotina1
Reg1 = Reg1 + 1
ENDIF

Se reg1 for maior que 3, então faça o reg1 igual a 0 e ligue a saída 1, se isto não
acontecer execute a rotina1 e incrementa 1 no reg1.

Em alguns casos onde exista a necessidade de se utilizar por exemplo um IF


dentro do outro, a melhor forma de se fazer será, utilizando um ELSEIF, que

91
dentro da estrutura, é associado também a uma condição, como mostrado no
exemplo a seguir:

IF nIndexLeitura=1 AND fFiltro2=TRUE THEN


pPosSensor_2:=CPos(\Tool:=toolVentosa\WObj:=wobjBando);
nPosSensor_2_Y:=pPosSensor_2.y;
nIndexLeitura:=2;
fFiltro2:=FALSE;
ELSEIF nIndexLeitura=2 AND fFiltro4=TRUE THEN
pPosSensor_4:=CPos(\Tool:=toolVentosa\WObj:=wobjBando);
nPosSensor_4_Y:=pPosSensor_4.y;
fFiltro4:=FALSE;
ENDIF

14.3 – For

Este comando é utilizado quando se deseja repetir uma instrução por um certo
número de vezes, sem que haja um controle por uma determinada variável

FOR i FROM 1 TO 10 DO
Rotina1
ENDFOR

O comando executa a rotina1 por 10 vezes, depois continua a execução do


programa.

Como exemplo de aplicação do FOR, temos:

92
FOR nLinhaVidro FROM nLinhaMatriz TO nNumeroVidro DO
IF di13_PresencaP1=1 AND di14_PresencaP2=1 THEN
nIndexLeitura:=1;
rHomeDescarga0;
nLinhaMatriz:=nLinhaVidro;
nPosicaoVidroX:=(nLinhaVidro-1)*nExpessuraVidro;
rControleVacuoAr\LigaVacuo1\LigaVacuo2;
ENDIF
IF di15_PresencaP3=1 AND di16_PresencaP4=1 THEN
rHomeDescarga180;
ENDIF
ENDFOR

14.4 – WHILE

Semelhante ao comando anterior ele repete a execução de comandos, porém


depende de uma variável de controle, ou seja, ele só continua a repetir a instrução
enquanto uma condição seja satisfeita.

WHILE reg1<10 DO
Rotina1;
Reg1:=Reg1+1
ENDWHILE

A rotina1 será executada apenas enquanto o reg1 for menor que 10, depois disso
o elo é desfeito.

14.5 – TEST

93
Esta função é utilizada quando se deseja testar e fazer a verificação de uma
variável numérica, que pode assumir varia possibilidades.
Como exemplo deste comando poderemos ter o seguinte exemplo:

TEST nColuna
CASE 1:
rDescarga1Camada;
CASE 2:
rDescarga2Camada;
CASE 4:
rDescarga4Camada;
ENDTEST

Instruções diferentes são executadas dependendo do valor do registrador


nColuna, onde se for 1 executa a rotina rDescarga1Camada, se for 2 executa a
rotina rDescarga2Camada, se for 4 executa a rotina rDescarga4Camada.

14.6 – Stop

94
Instrução utilizada para parar o robô quando alguma situação ocorre, utilizando o
exemplo da função TEST acima poderíamos fazer:

TEST reg1
CASE 1;
Rotina1;
CASE 2;
Rotina2;
CASE 3;
Rotina3;
DEFAULT;
Stop;
ENDTEST

Portanto se nenhuma situação ocorrer o robô será parado pela função STOP.
Como argumento deste comando temos:
- [\NoRegain] – Caso este argumento seja ativado, quando no caso de o robô sair
da posição após a parada, o sistema não retornará a posição corrente e sim
continuará a execução do programa, da posição atual do robô.
Caso este argumento seja omitido, sempre que o robô sair da trajetória do
movimento pré-programado, o sistema ira perguntar se deseja voltar o robô a
posição pré-programada, e caso a resposta seja YES, primeiro o robô corrige a
posição para depois continar a execução do programa.

14.7 – GOTO e LABEL

95
Instruções que são utilizadas em conjunto quando se deseja saltar um bloco de
programa, tanto para frente como para trás.

GOTO b1;
-
b1;
Observe que para ter um GOTO é sempre necessário indicar para onde o
programa vai, sendo esta indicação dada pelo LABEL.

Este comando não é muito utilizado, pois o programa se torna mais sofisticado
quando, é utilizado por exemplo, a função WHILE, já mostrada anteriormente.

Como exemplo de GOTO temos a seguinte rotina.

b:
TPErase;
TPReadNum nAjuste,"Digite senha de validacao";
IF nAjuste=nSENHA_VALIDACAO THEN
GOTO a;
ELSE
TPReadFK nAjuste,"Deseja tentar novamente ?","Sim","","Nao","","";
IF nAjuste=1 THEN
GOTO b;
ENDIF
ENDIF
a:

Aplicando a função WHILE para executar esta rotina temos:

96
WHILE fFimAjuste=TRUE DO
TPErase;
TPReadNum nAjuste,"Digite senha de validacao";
IF nAjuste=nSenhaValidacao THEN
fFimAjuste=FALSE;
ELSE
TPReadFK nAjuste,"Deseja tentar novamente ?","Sim","","Nao","","";
IF nAjuste=3 THEN
fFimAjuste=FALSE;
ENDIF
ENDIF
ENDWHILE

15 – ProcCall

Este comando é utilizado para chamar uma procedure, ou seja, uma sub-rotina,
onde toda vez que for selecionado, no display da unidade de programação ira
aparecer a lista de sub-rotinas existentes, para que seja feito a seleção da rotina
desejada.

16 – Interrupções

97
Com uma interrupção, é possível executar uma rotina exclusivamente de lógica,
quase em paralelo com o processamento normal de movimento do robô, esta
rotina sempre será executada quando do acontecimento da transição de um
determinado evento, como por exemplo, a transição positiva de uma di. Esta
rotina de lógica deve ser criada como uma rotina normal, porém na declaração da
rotina ela deve ser como TRAP ROTINA.

16.1 – Tipos de instruções de Interrupções

Connect = Associa uma determinada interrupção á uma rotina TRAP.

IDelete= Cancela (deleta)uma interrupção.

IDisable= Desabilita todas interrupções durante a execução do programa.

IEnable= Habilita todas interrupções durante a execução do programa.

ISignalAI= Habilita interrupções a partir de um sinal de entrada analógica. É bom


especificarmos determinadas condições a serem satisfeitas:
─ AIO_ABOVE_HIGH: Valor lógico do sinal acima de High Value;
─AIO_BELOW_HIGH: Valor lógico do sinal abaixo de High Value;
─AIO_ABOVE_LOW: Valor lógico do sinal acima de Low Value;
─AIO_BELOW_LOW: Valor lógico do sinal abaixo de Low Value;
─AIO_BETWEEN: Valor lógico do sinal entre High/Low Value;
─AIO_OUTSIDE: Valor lógico do sinal acima de High Value ou abaixo de Low
Value;
─AIO_ALWAYS: Independente de High ou Low Value.

ISignalAO= Habilita interrupções a partir de um sinal de saída analógica,usado


também com as mesmas condições acima descritas.

98
ISignalDI= Habilita interrupções a partir de um sinal de entrada digital.

ISignalDO= Habilita interrupções a partir de um sinal de saída digital.

Sleep= É usado para desativar uma interrupção única até que seja novamente
ordenada a ativação da mesma. Qualquer interrupção gerada quando esse for
acionado, será totalmente ignorado.

ITimer= Ordena uma interrupção com um determinado tempo pré-programado.

IWatch= Ativa uma interrupção que foi anteriormente ordenada, mas que havia
sido desativada com o ISleep.

Exemplo de interrupção:

PROC main()
WHILE flag_RESET=FALSE DO
CONNECT intABRE_PORTA WITH trapPORTA;
ISignalDI\Single,diAbert_Porta,1,intABRE_PORTA;
ENDWHILE
IF diAjuste_Pos=1 rAJUSTE_POSICAO;
IF diSelec_Operac=1 THEN
rCOLAGEM;
ELSE
rPRIMER;
ENDIF
rHOME_POSITION;
IF flag_PORTA=TRUE rABRE_PORTA;
ENDPROC
ENDMODULE

TRAP trapPORTA
flag_PORTA:=TRUE;
ENDTRAP
No exemplo anterior a função ISignalDI, é acompanhada do argumento [\Single],
isto ocorre, pois uma conexão, pode acontecer uma única vez após o inicio do
programa, sendo possível uma nova conexão, apenas após ser executado um

99
StartMain no robô. Com o argumento [\Single], a linha de comando pode passar
pela conexão sem que haja falha de execução.

17 – Pesquisas usando o robô

SearchL= É usado para pesquisar uma posição quando movendo o ponto central
da ferramenta ( TCP ) linearmente.

SearchC= É usado para pesquisar uma posição quando movendo o ponto central
da ferramenta ( TCP ) circularmente.

Exemplo de pesquisas:

SearchL di1, sp, pProcura, v500, TollPortatraseiraPQ249Le;

O TCP do TollportatraseiraPQ249LE é movido linearmente em direção à posição


pProcura numa velocidade de 500 mm/s, quando o sinal di1 é ligado, a posição é
guardada em sp e o robô continua seu processo. Muito usado em paletização para
retirar e colocar o objeto em questão.
Para esse tipo de instrução, há também vários argumentos que devemos
considerar, sendo eles:

- [\Stop] – Com este argumento ativado, o robô para o mais rápido possível não
importando se o TCP continua na trajetória de movimento calculada, após o
acionamento da input di1.

- [PStop] – Com este argumento, o robô para o mais rápido possível, mantendo o
TCP na trajetória de movimento, após o acionamento da input di1.

- [\SStop] – Com este argumento o robô faz uma parada suave no movimento,
mantendo o TCP dentro da trajetória calculada.

100
- [\Sup] – Este argumento funciona como um filtro, caso o sinal a ser buscado,
sofra algum tipo de ruído durante o movimento, sendo assim ele garante que a
leitura será feita apenas na primeira transição do sinal.

-[\Flanks] – Com este argumento acionado, é possível selecionar se a transição


do sinal será positiva ou negativa.

-[\T] – Quando se deseja que o movimento do robô seja executado por tempo e
não por velocidade.

18 – Definindo interpolação em torno de pontos singulares

SingArea é usado para definir como o robô se move perto de pontos singulares
onde na execução do programa não ocorra nenhum erro de singularidade.

Argumentos:

SingArea [ \Wrist ] = O robô em determinada posição, pode não entender sua


orientação da ferramenta, principalmente se os eixos 4 e 6 estão próximos a um
paralelismo entre si. Este argumento evita erros singularidade nessa situação.

SingArea [ \Off ] = Usado quando nenhum ponto singular é ultrapassado, ou


quando a orientação não pode ser mudada. Caso não haja necessidade de usar
essa instrução no seu programa o próprio robô determina que o argumento \Off é
ligado via default

19 – Funções Trigg

101
As funções Trigg são usadas para ligar sinais de saída ou rodar rotinas de
interrupção em posições fixas, tudo isso no mesmo instante que o robô se move
num determinado ponto no espaço, seja esse linear, circular ou com movimento
dos eixos.

As principais instruções são:

TriggEquip

A ferramenta gunon abre no ponto p2, quando o TCP está 10mm antes do p1,
nisso o sinal gun é ligado. Mas quando o TCP está á 0.1 s antes de p2 a pinça já
está toda aberta acelerando assim o processo.

TriggInt

102
A rotina de interrupção trap1 é executada quando o TCP está á 5mm antes do
ponto p1 ou p2.

TriggL

O sinal de saída gun é ligado quando o TCP passa pelo ponto médio do trajeto de
canto de p1.

20 – Posição absoluta dos eixos

103
É usado para mover o robô para uma posição absoluta, não linear definida nas
posições de qualquer um dos seis eixos.

Exemplo de Deslocamento:

MoveAbsJ pSincronismo, v500, fine, ToolGripper

Podemos definir como posição de sincronismo, dados estes guardados dentro do


DataTypes / JointTarget desde que seja inserido o valor zero em todos os eixos.
Isso garante que essa instrução define que todos os motores estão nas marcas
físicas de sincronismo.

21 – Ordens Matriciais

É possível deixar seu programa mais “enxuto“, quando é projetado em sua rotina
fatores determinantes com matrizes. Isso nos auxilia muito, pois sempre será
usado níveis lógicos onde não se pode ver o que está acontecendo, mas como
exemplo, pode-se fazer um único programa para fazer outros eventos com
movimentos e lógicas, é algo parecido com ordens Indexadas de um PLC.

Para se definir uma Matriz de movimentos, deve-se primeiro criar em Data Types
um ROBTARGET qualquer, logo entrar em TYPES e selecionar NEW ARRAY. O
robô lhe perguntará qual será a dimensão dessa matriz, lembrando que mesmo no
robô, segue-se a ordem de Linhas X Colunas de cada vetor no espaço ( no caso
de movimentação ). Declara-se então, qual a ordem que você deseja. É
importante saber que:

Constant= Valor imutável pelo programa, ex: ─ ROBTARGET;

104
Persistent= Pode ser mudado pelo programa, ex: ─ TOOL DATA;

Variable= Valor que pode ser mudado com o programa, mas que não é salvo pelo
mesmo após um StartMain, ex: ─ NUM.

Exemplo de um programa para fixar o uso de matrizes:

FOR i FROM 1 TO 5
MoveJ p30{i}, v1000,z10, Toll0;
END FOR

Exemplo de outros programas com matriz de string:

PROC rMENSAGEM(
num nINDEX_MENSAGEM)

TPErase;
TPWrite "-----------------------------------------------------------";
TPWrite "* *";
TPWrite "* *";
TPWrite "* *";
TPWrite "* *";
TPWrite strCONTROLE:=strMENSAGEM{nINDEX_MENSAGEM};
TPWrite "* *";
TPWrite "* *";
TPWrite "* *";
TPWrite "* *";
TPWrite "------------ SERVNEWS ROBOTICA -----------";
WaitTime 0.1;
ENDPROC

22 – Chamada de rotina através de variáveis:

105
Esta função é comumente utilizada, quando se deseja montar uma rotina genérica
para varias operações, e a chamada da rotina é executada e juntamente com a
chamada são agregados parâmetros, que podem sem Num, RobTarget, Bool,
Switch, etc.
Um exemplo para se entender melhor este tipo de chama e dado abaixo,
aplicando a função Switch:

IF di13_PresencaP1=1 AND di14_PresencaP2=1 AND di15_PresencaP3=1 THEN


MoveLOffs(pDescargaPallet,nPosicaoVidroX,0,0),v1000,z10,toolVentosa1
rControleVacuoAr\LigaVacuo1 \LigaVacuo3;
MoveLOffs(pDescargaPallet,nPosicaoVidroX,40,50),v100,z5,toolVentosa1
MoveLOffs(pDescargaPallet,(nPosicaoVidroX100),0,200),v1000,z10,toolVentosa1
WHILE di5_MaquinaOk=0 DO
rMensagem 10;
ENDWHILE
ENDIF

PROC rControleVacuoAr(
\switch LigaVacuo1
\switch LigaVacuo2
\switch LigaVacuo3
\switch LigaVacuo)

IF Present(LigaVacuo1) THEN
SetGO goLigaVacuo,1;
WHILE di9_VacuoOk_1=0 AND di13_PresencaP1:=1 DO
rMensagem 1;
ENDWHILE
ENDIF

IF Present(LigaVacuo2) THEN

106
SetGO goLigaVacuo,2;
WHILE di10_VacuoOk_2=0 AND di14_PresencaP2:=1 DO
rMensagem 2;
ENDWHILE
ENDIF
IF Present(LigaVacuo3) THEN
SetGO goLigaVacuo,4;
WHILE di11_VacuoOk_3=0 AND di15_PresencaP3:=1 DO
rMensagem 3;
ENDWHILE
ENDIF
IF Present(LigaVacuo4) THEN
SetGO goLigaVacuo,8;
WHILE di12_VacuoOk_4=0 AND di16_PresencaP4:=1 DO
rMensagem 4;
ENDWHILE
ENDIF
ENDPROC

23 – Rotação de plano cartesiano:

Com esta função, é possível se fazer uma rotação do programa aplicativo dentro
um determinado plano cartesiano, controlando o ângulo de movimento desejado,
através dos quartenius localizados no robtarget do ponto em questão.
Para isto, se faz necessário o uso das formulas apresentadas a seguir:

107
Rotação em torno do eixo X

Rotação em torno do eixo Y

Roracao em torno do eixo Z

As formulas
apresentadas devem
ser utilizadas de

108
acordo com o eixo em que se deseja fazer a rotação. Como exemplo de aplicação
em eixo Z temos:

PROC rRotacaoEixoZ()
nQ4_Atual:=0;
FOR index FROM 1 TO nNumeroDentes DO
nPosicao:=index-1;
nQuartenio_1:=(Sqrt(Cos(((360/ nNumeroDentes)+Cos(((360/
nNumeroDentes +2))/2;
nQuartenio_4:= (Sqrt(1-Cos(((360/ nNumeroDentes)-Cos(((360/
nNumeroDentes)+1))/2;
nQ4_Anterior:=nQ4_Atual;
nQ4_Atual:= nQuartenio _4;
nQ4_Diferenca:=nQ4_ Atual - nQ4_ Anterior;
IF nQ4_ Diferenca <=0 THEN
nQuartenio _4:= nQuartenio _4*(-1);
ENDIF
orientQuart.q1:= nQuartenio _1;
orientQuart.q2:=0;
orientQuart.q3:=0;
orientQuart.q4:= nQuartenio _4;
wobjCoroa_Esq.uframe.rot:=orientQuart;
ConfL\Off;
MoveL pPrePosicEsq,v150,z5,tGear_1\WObj:=wobjCoroa_Esq;
ConfL\On;
ENDFOR
ENDPROC

24 – Deslocamento de programa:

109
Executado através do comando PDispOn (Program Displacement On), serve para
definir e ativar um deslocamento de um programa, ou partes de um programa.
Esse deslocamento pode ser utilizado após uma procura, ou quando trajetórias de
movimentos são similares ou se repetem em diferentes lugares do programa.
E para desativar este comando utilizamos o comando complementar PDispOff,
que tem a função de desativar o deslocamento.
Como exemplo deste comando, temos a seguinte aplicação:

MoveL pAproximacao_1, TCP1\WObj:=wobj4316;


PDispOn *, TCP1\WObj:=wobj4316;
Circle TRUE,pRaio_1, 5.5,v80,wobj4316;
PDispOff;

Neste exemplo o deslocamento se fará pela diferença da posição atual do robô em


relação ao ponto gravado no PDispOn.

Ativando o argumento [ \ExeP ], é possível colocar o ponto de referencia, dentro


do comando PDispOn, para este caso temos o seguinte exemplo:

MoveL pAproximacao_1, TCP1\WObj:=wobj4316;


PDispOn pAproximacao_1, pCirculo_1, TCP1\WObj:=wobj4316;
Circle TRUE,pRaio_1, 5.5,v80,wobj4316;
PDispOff;

110
Neste exemplo o deslocamento do trecho do programa, é baseado na diferença
entre as posições pAproximacao e o pCirculo.

25 – System Parameters

25.1 – Subdivisão de parâmetros

Existem vários tópicos diferentes que são apresentados nesses níveis:

Tópico Parâmetros que são afetados Nome arquivos

111
Controller Rotinas e eventos SYS.CFG
Comunication Canais seriais SIO.CFG
IO Signals Placas de E/S EIO.CFG
Manipulator Robô e eixos externos MOC.CFG
Teach Pendant Acesso a unidade programação MMC.CFG

25.2 – IO Signals

Escolhendo no Topics IOSignals e escolhendo no Types IOUnits , todas as


unidades definidas serão mostradas:

Dentro desse parâmetro, ainda é possível configurar:

Unit Name= Nome da unidade;

Unit Type= Tipo da placa, seja ela virtual ou física;

Unit Bus= Define se a mesma é fisica ou se é do barramento de simulação;

112
Address= Endereço físico no barramento CAN ;

Digital Outputs= Número de sinais de saída digital a serem usadas naquela


placa;
Digital Inputs= Número de sinais de entrada digital a serem usadas naquela
placa;
Analog Inputs= Número de sinais de entrada analógica a serem usadas naquela
placa;
Analog Outputs= Número de sinais de saída analógica a serem usadas naquela
placa;
PollRate= Taxa de atualização de dados, min.0,001 , max. 1 segundo;

Disabled= Indica que a placa não está presente no barramento na inicialização;

113
25.3 – Definindo sinais de entrada e saída

Escolha no Types User Signals , todos os sinais definidos são mostrados:

114
Dentro desse parâmetro, ainda é possível configurar:

SignalName= Nome do sinal;

UnitName= Placa em que esse sinal está ligado;

SignalType= Se esse é do tipo DI,DO,AI e AO;

SignalNumber= Canal físico;

Inverted= Se YES, inverte os sinais de 0 para 1 e vice-versa;

Store= Se YES o sinal de saída digital permanece com seu último estado caso
ocorra uma queda de energia.

24.4 – Definindo grupos de entrada e saída

SignalType= Se esse é GI ou GO;

Group Length= É onde se determina o comprimento da palavra ao qual se está


fazendo o grupo. O comprimento deve ser especificado de tal modo onde todo

115
grupo esteja na mesma unidade, o comprimento máximo é 16, ou seja, é que esse
grupo receba ou envie um Word com 65536 em decimal;

StartSignal= É o canal físico da placa com o BIT menos significativo, o restante é


conectado automaticamente a partir desse;

25.5 – Definindo referências cruzadas

Escolha no Types Cross Connections , todas as definições são mostradas:

É possível fazer um LINK de uma saída numa entrada e vise-versa.

25.6 – Configurando entradas de sistema

Escolha no Types System Inputs , todas as entradas de sistema são mostradas:

116
Ação:

MotorOn= Ao receber esse sinal externo, o robô passa para MOTORS ON;

MotorOff= Ao receber esse sinal externo, o robô passa para MOTORS OFF;

Start= Inicia o programa a partir da posição que o robô se encontra, desde que já
esteja com MOTORS ON ligado;
Stop= Para o robô suavemente por Hold, o mesmo não pode ser inicializado caso
esse sinal esteja em 1;
ResetEstop= Reseta parada de emergência, e o robô pode então ser passado
para MOTORS ON.

25.7 – Configurando Saídas de sistema

Escolha no Types System Outputs , todas as saídas de sistema são mostradas:

Estado do sistema:

CycleON= Indica que o programa está em execução;

EmStop= Robô está em estado de emergência;

RunchOK= Cadeia de permissão está ok;

Error= Ocorreu um erro na execução do programa.

26 – Trabalhando com Privilégios

117
No robô, é possível trabalhar com a opção de Autorização e Confirmação,
limitando assim o acesso a certos comandos usando por exemplo níveis de
( senhas ) ao usuário.

Escolha no SystemParameters e no Edit Change Pass Code , para definir os


níveis, no robô existem 4 tipos de níveis ao usuário:

Operator= Acessível a todos usuários, não é necessário senha;

Service= Associado a manutenção, é necessário senha;

Programmer= Relacionado a programação e testes, é necessário senha;

Service & Programmer= Relacionado a programação e Manutenção, é


necessário senha para um dos dois.

A senha pode ter no máximo 8 dígitos.

Definindo Autorização:
Escolha Types, veja que existem vários tipos de autorização e os nomes
começam com Authorize ... :

Escolha no Types Authotize System Parameters.

Função:

Launch= Autoriza abrir uma janela;

Change Code= Autoriza trocar de senha;

Delete Inst= Autoriza apagar um Parâmetro.

Escolha no Types Authotize Program.

118
Função:

ModPos= Autoriza modificar uma posição;

EditProgram= Autoriza trocar de programa;

Delete Instr= É autorizado apagar qualquer instrução da rotina RAPID;

Delete Object=É autorizado apagar Rotinas, Módulos ou dados;

Conf.Start= Confirma a posição do ponteiro no programa.

26.1 – Teclas Programáveis

119
Na unidade de programação, é possível configurar até 5 teclas para eventos de
I/O.

Escolha no Topics TeachPendant e no Types Programmable Keys.

Parâmetro

Key= Designa-se a tecla P1 á P5;

Type= Se o sinal é DI ou DO;

Connection= Nome do sinal ;

Key Pressed= Se esse for DO, defini-se como essa saída deverá ser acionada:
TOGGLE ─> Muda o último estado que havia permanecido;
PULSE ─> Default num pulso de 0.2 s é gerado;
SET ─> Liga em 1 ou 0;
PRESS/RELEASE ─> Permanece em 1 enquanto o botão estiver
pressionado.

Allow in Auto= Se YES, define que esse sinal pode ser interpretado em mesmo o
robô estnado em modo automático.

27 – Manipulador ( Robô )

120
Nesse parâmetro é descrito todas as configurações aplicáveis ao controle de
movimento do Robô em si.

Escolha no Topics Manipulator e no Types Motor Calib.

Parâmetro

Name= Nome do motor;

Calibration Offset= A posição do resolver quando esse estava na última


calibração, nota-se que esses valores estão em radianos;

Cal Offset Valid= Diz se o Offset de calibração está definido;

Commutador Offset= É a posição do resolver do motor comparado ao “zero”


elétrico em relação ao estator, nota-se que esses valores estão em radianos;

Com Offset valid= Diz se o Offset de comutação está definido.

27.1 – Definindo a Área de Trabalho

Escolha no Topics Manipulator e no Types Arm.

Parâmetro

Name= O nome do eixo;

Upper Joint Bound= Limite superior do eixo por software. Lembrando que esses
valores estão em radianos;

Lower Joint Bound= Limite inferior do eixo;

Calibration Position= A posição do eixo quando o mesmo foi calibrado.

28 – Cadeia de Permissão

121
Analisar a placa DSQC 331 via Manual do Produto capítulo 9,10 e 11 ( Guia de
Detecção de falhas e Circuito elétrico).

122
29 – Erros

Existem 9 tipos de erros, que são classificados como:

1-Operacional 10.000 Trocas de estado


2-System 20.000 Mensagens relacionadas com o controle
3-Hardware 30.000 Erros na inicialização e de hardware
4-Program 40.000 Erros de programas
5-Motion 50.000 Movimentação do robô
6-Operator 60.000 Unidade de Programação
7-Internos 70.000 Erros de versão ou de software
8-I/O Communication 80.000 Erros relacionados a comunicação de E/S
9-User Definidos pelo usuário

Todos esses podem ser vistos dentro do Service e no Manual do Guia do


Usuário.

123

Você também pode gostar