Escolar Documentos
Profissional Documentos
Cultura Documentos
MODELO IRC5
1
1 – Visão Geral do Sistema
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:
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.
Após este procedimente, aguarde alguns minutos e você vai receber no e-mail
especificado na solicitação, uma chave de licença.
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.
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.
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
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
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.
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
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
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:
Figura 17
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.
- 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.
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.
Figura 18
19
Nesta tela temos 3 opções de comando onde temos as seguintes funções.
Figura 19
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.
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
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
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.
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
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
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.
Figura 27
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.
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.
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.
Este modo automático pode ser executado de três modos diferentes sendo:
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.
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
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.
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.
Dimension – Utilizado quando se deseja fazer uma matriz contendo vários TCP’s.
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
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
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.
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
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ô.
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
Figura 44
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.
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
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.
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.
Dimension – Utilizado quando se deseja fazer uma matriz contendo vários Work
Objects.
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.
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.
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
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
Figura 54
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.
50
Figura 55
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
Figura 58
Nos passos a seguir será explicado o funcionamento de cada opção desta tela.
52
Figura 59
Figura 60
Figura 61
53
Figura 62
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
55
ferramenta. Para se obter este tipo de movimento, será necessário seguir os
passos indicados a seguir:
Figura 64
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
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.
Figura 66
58
11 – Programando o robô:
59
Figura 67
- [\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.
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
Parameters – Este só deve ser utilizado caso a chamada da rotina seja via
variável;
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
64
Figura 61
Figura 62
Figura 63
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
Figura 62
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:
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
15.3 – MOVE C:
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
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
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
PulseDO do 10
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
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
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;
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
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
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;
11.2 Comment
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
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.
10.8 WaitDI
Este comando é utilizado para esperar até que um sinal de entrada digital seja
ligado ou desligado.
WaitDI di_10, 1;
75
- [\MaxTime] – É o tempo máximo que o sistema fica esperando uma
entrada ir a nível 1.
16.6 - WaitTime:
WaitTime 1.2
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
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:
PROC MoveLDO(
robtarget ToPoint,
speeddata Speed
\num T,
zonedata Zone,
PERS tooldata Tool
\PERS wobjdata WObj,
VAR signaldo Signal,
dionum Value)
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.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.
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.
PROC main()
WHILE nModeloMolde< =0 DO
rMensagem 10\nModel:=nModeloMolde;
WaitTime 0.1;
ENDWHILE
CallByVar "rMolde",nModeloMolde;
ENDPROC
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.
- 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.
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
Definição da porta
VAR iodev com1;
VAR iodev iodev1;
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.
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
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.
12.1 – TPErase
85
Este comando é usado para limpar tudo que estiver escrito no display da unidade
de programação.
TPEraser:
12.2 – TPWrite
TPErase;
TPWrite “ Execução de programa iniciada “
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.
86
O numero de peças produzidas é = 10
12.3 – TPReadFK
- 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.
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.
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.
13.1 – Add
Add reg1, 3:
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;
13.3 – Decr
Decr reg1;
13.4 – Incr
Incr reg1;
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.
14.2 – IF
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.
91
dentro da estrutura, é associado também a uma condição, como mostrado no
exemplo a seguir:
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
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
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
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.
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.
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:
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.
98
ISignalDI= Habilita interrupções a partir de um sinal de entrada 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.
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.
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:
- [\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.
-[\T] – Quando se deseja que o movimento do robô seja executado por tempo e
não por velocidade.
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:
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.
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.
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:
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:
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.
FOR i FROM 1 TO 5
MoveJ p30{i}, v1000,z10, Toll0;
END FOR
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
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:
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
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
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:
110
Neste exemplo o deslocamento do trecho do programa, é baseado na diferença
entre as posições pAproximacao e o pCirculo.
25 – System Parameters
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
112
Address= Endereço físico no barramento CAN ;
113
25.3 – Definindo sinais de entrada e saída
114
Dentro desse parâmetro, ainda é possível configurar:
Store= Se YES o sinal de saída digital permanece com seu último estado caso
ocorra uma queda de energia.
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;
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.
Estado do sistema:
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.
Definindo Autorização:
Escolha Types, veja que existem vários tipos de autorização e os nomes
começam com Authorize ... :
Função:
118
Função:
119
Na unidade de programação, é possível configurar até 5 teclas para eventos de
I/O.
Parâmetro
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.
Parâmetro
Parâmetro
Upper Joint Bound= Limite superior do eixo por software. Lembrando que esses
valores estão em radianos;
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
123