Você está na página 1de 86

Manual

EcoTalk para EcoRPC


para firmware da versão 5.0

G077PT03
Fecho da redacção em: 08/2009
Manual habilitado em: 11.02.2008
EcoTalk para EcoRPC

Índice

1 Grupo Movimento 4
1.1 LIN 4
1.2 PTP 5
1.3 CIRC 6
1.4 SHIFT 8
1.5 RESHIFT 8
2 Grupo Processo 9
2.1 GUN 9
2.2 SETBRUSH 10
2.3 WAIT_PROCESS_READY 10
2.4 SETPROCESSCOMMAND 11
2.5 SET_SEAMTOLERANCE 11
2.6 GUN DIRECT 11
2.7 SETBRUSH_DIRECT 12
3 Ajustes dinâmicos 12
3.1 VEL 13
3.2 ACC 14
3.3 JERK 15
3.4 RAMP 16
4 Ajustes geométricos 18
4.1 SETOBJECT 18
4.2 SETTOOL 18
4.3 OVERLAP 19
4.4 SETINTMODE 22
5 Outros 23
5.1 RECEIVE 23
5.2 SET 24
5.3 MAINRUN 24
5.4 RSELECT 24
5.5 RDESELECT 25
5.6 DELAY 25
5.7 ROUTINE 25
5.8 END_ROUTINE 26
5.9 GET_Variante 26
5.10 SET_SEAMTOLERANCE 27
5.11 TCP_SPEED_CHECK 27
5.12 PRINTSTR 27
5.13 GET_REPAIRTYPE 28
5.14 GET_DEGRADE_MODE 28
5.15 SET_MOTION_STATE 29
5.16 GET_MOTION_STATE 30
5.17 WAIT_MOTION_STATE 30
5.18 SET_PROCESS_STATE 30
5.19 GET_PROCESS_STATE 31
5.20 WAIT_PROCESS_STATE 31
5.21 DATA_RECORDING 32
5.22 SET_STIFFNESS 32
6 Instruções 33
6.1 Criação de variáveis 33
6.2 Atribuição de valores 33
6.3 Comentário 33
6.4 WAIT 33

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 1 de 84


6.5 CALL 34
6.6 LABEL 34
6.7 GOTO 34
6.8 IF … GOTO … 35
6.9 LOOP 35
6.10 RETURN 35
6.11 IF…THEN…END_IF 36
6.12 ELSE 36
6.13 ELSIF…THEN 37
6.14 WHILE…DO…END_WHILE 37
6.15 Operações lógicas 38
7 Tracking 39
7.1 Tracking 39
7.2 WAIT_CONVEYOR 39
7.3 WAIT_PAINTPOSITION 40
7.4 GET_PAINTPOSITION 40
7.5 WAIT_PURGEONPAINTPOS 41
7.6 CHECK_CONVEYOR 42
7.7 SETTRACKINGMODE 42
8 Handler 43
8.1 SET_SENSOR 43
8.2 SET_CHECK 44
8.3 GET_PART 45
8.4 RECEIVE_ORDER 45
8.5 SET_ORDER 46
8.6 RECEIVE_HANDLERPOS 47
8.7 SET_INIPOS 47
8.8 SET_ENDPOS 48
8.9 SET_MODULE 49
8.10 CHECK_TORQUE 50
9 Timer 51
9.1 TIMERSTART 51
9.2 TIMERSTOP 51
10 Gluing 52
10.1 SET_PLC_ORDER 52
10.2 RECEIVE_PLC_ORDER 52
11 Exemplos de programação 53
11.1 Programação dos robôs handling 53
11.1.1 Programa do robô de aplicação 54
11.1.2 Vários robôs de aplicação comandam um robô de handling 56
11.1.3 Programa do robô de handling 57
11.1.4 O robô de aplicação é simultaneamente o robô de handling 59
11.1.5 Sistema de sensores de carga 61
12 Explicações complementares 63
12.1 Ajustes dinâmicos e geométricos 63
12.2 Trigger 67
12.3 Tracking 73
12.3.1 Programas de Tracking 73
12.3.2 Seguimento do objecto 74
12.3.2.1 Determinação teórica e prática do valor WAIT_CONVEYOR 75
12.3.3 Determinação da coordenada X do objecto durante o Tracking 77
12.3.4 Deslocamento do arranque do programa durante o Tracking 78
12.3.5 Regras e comandos proibidos 79
12.3.6 Criação de um programa Teach-In 80

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 2 de 84


12.3.6.1 Programa principal 81
12.3.6.2 Módulo de pintura FRENTE 81
12.4 Deslocamento principal e avanço 82

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 3 de 84


1 Grupo Movimento

1.1 LIN

Macro: LIN(Point)

Parâmetro: Point: [A, B, C, D, E, F, Aux1]

Efeito: A macro LIN destina-se ao deslocamento linear sobre a pista


(trajectória).

SingleStep: O sistema efectua o avanço linear


para macros LIN no modo SingleStep.

Definir pontador
de registos: Se o pontador de registos for definido
numa macro LIN, é possível continuar
os processos no modo SingleStep e
no modo contínuo.

Repos dourado: Repos dourado é possível.

Sistemas de
coordenadas: Axis, World, Object.

Exemplo: LIN(P1)

Fig.: Movimento LIN

O robô desloca-se linearmente para o ponto P1

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 4 de 84


1.2 PTP

Macro: PTP(Point)

Parâmetro: Point: [A, B, C, D, E, F, Aux1]

Efeito: Uma macro PTP é um erro de cor no modo "Ponto-a-ponto".


Todos os movimentos PTP são movimentos PTP síncronos.
Um comando PTP, com ponto de destino nas coordenadas
de eixo, só pode ser suavizado dinamicamente a partir de
um comando cartesiano. No ponto de destino cartesiano,
nas coordenadas de objecto, são também incluídos no
cálculo os respectivos deslocamentos. Não existem
informações sobre os turns do eixo manual.

SingleStep: O sistema efectua o avanço para as


macros PTP no modo SingleStep PTP.

Definir pontador
de registos: Se o pontador de registos for definido
numa macro PTP, é possível continuar
os processos no modo SingleStep e
no modo contínuo.

Repos dourado: Repos dourado é possível.

Sistemas de
coordenadas: Axis, World, Object

Exemplo: PTP(P1)

Fig.: Movimento PTP

O robô avança Point-To-Point para o ponto P1

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 5 de 84


1.3 CIRC

Macro: CIRC(Point, Point)

Parâmetro: Point: [A, B, C, D, E, F, Aux1]

Efeito: A macro CIRC destina-se ao deslocamento circular sobre a


pista. O primeiro parâmetro da macro CIRC é interpretado
como ponto de ajuda. O segundo parâmetro da macro CIRC
é interpretado como ponto final circular. Através da macro
CIRC não é no entanto possível programar um círculo
completo.

SingleStep: O sistema efectua o avanço circular


para macros CIRC no modo
SingleStep. No entanto, não é possível
avançar para o ponto de ajuda.

Definir pontador
de registos: Se o pontador de registos for definido
numa macro CIRC, é possível
continuar os processos no modo
SingleStep e no modo contínuo. No
entanto, só é efectuado o avanço
linear para o ponto final do movimento
circular.

Repos dourado: Repos dourado é possível

Sistemas de
coordenadas: Axis, World, Object.

Exemplo: CIRC(P1, P2)


P1 - ponto de ajuda
P2 - ponto final

Fig.: Comando CIRC

O robô avança circularmente sobre o ponto de ajuda P1 até ao ponto final P2

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 6 de 84


De modo a integrar correctamente um segmento circular numa pista
existente, deve ter-se atenção aos vectores de direcção dos vários
elementos. No P2 os vectores de direcção do círculo e do deslocamento
linear, entre P1 e P2, não estão em conformidade. Isto obriga a uma
suavização (passagem de voo) do ponto P2 e, eventualmente, ao resultado
de a pista desejada não corresponder mais ao resultado pretendido. No
entanto, no P4 o vector de direcção do círculo está em conformidade com a
trajectória entre P4 e P5 e, por conseguinte, também com os respectivos
vectores de direcção. O resultado é uma passagem correcta e limpa do
segmento circular para o deslocamento linear.

1 Vector de direcção do círculo no P2


2 Vector de direcção da trajectória entre P1 e P2
3 Vector de direcção do círculo no P4e

Fig.: Integração de um segmento circular

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 7 de 84


1.4 SHIFT

Macro: SHIFT(Shift)

Parâmetro: Shift: [x, y, z, A7]

Efeito: Com a macro SHIFT são deslocados todos os pontos


seguintes no programa, com base nos valores
parametrizados. Nos pontos nas coordenadas dos eixos só é
possível deslocar o eixo 7. No caso de se seguirem dois
comandos SHIFT (um a seguir ao outro), os deslocamentos
não são calculados uns com os outros, mas é realizado um
deslocamento absoluto de acordo com o valor do último
comando SHIFT.
X Deslocamento do TCP na direcção x
Y Deslocamento do TCP na direcção y
Z Deslocamento do TCP na direcção z
A7 Deslocamento do eixo 7

Exemplo: SHIFT(S1) Desloca P1 em 100 mm na direcção x


LIN(P1)

SHIFT(S2) Desloca P2 e P3 em 200 mm na direcção x


LIN(P2)
LIN(P3)

S1(X=100 Y=0 Z=0 A7=0)


S2(X=200 Y=0 Z=0 A7=0)

1.5 RESHIFT

Macro: RESHIFT()

Parâmetro: -

Efeito: Repõe novamente em zero um deslocamento predefinido


com SHIFT para todos os componentes.

Exemplo: SHIFT(S1) Desloca P1 em 100 mm na direcção x


LIN(P1)
SHIFT(S2) Desloca P2 e P3 em 200 mm na direcção x
LIN(P2)
LIN(P3)
RESHIFT() Anula todos os deslocamentos

S1(X=100 Y=0 Z=0 A7=0)


S2(X=200 Y=0 Z=0 A7=0)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 8 de 84


2 Grupo Processo

2.1 GUN

Macro: GUN(GunNumber, Command, Point, Triggerframe)

Parâmetro: GunNumber: Gun1, Gun2, Gun3


Command: GunOn, GunOff
Point: Ponto no qual o Trigger deve accionar
Triggerframe: Alinhamento do nível Trigger.

Efeito: A macro GUN liga ou desliga o pulverizador no ponto


programado. O ponto POINT não é um ponto que é incluído
no cálculo da pista, mas é um novo ponto no qual o Trigger
deve accionar.
É possível avançar para este ponto no modo SingleStep.
O Gun-Trigger representa uma superfície circular. O Trigger
é accionado assim que o TCP cortar esta área. Para poder
definir completamente um círculo é necessário o centro do
círculo, o raio do círculo e o alinhamento da superfície do
círculo no espaço. O centro do círculo é definido com o
parâmetro Point da macro GUN. O raio do círculo não pode
ser definido no programa Teach. É utilizado um valor
parametrizado dos ficheiros de configuração. A orientação
da superfície do círculo é determinada pelo parâmetro
Triggerframe da macro GUN.
Os valores do parâmetro Triggerframe são calculados
durante a primeira execução da macro e escritos na
respectiva variável.

Exemplo: GUN(Gun1 GunOn P22 T11)


...
GUN(Gun1 GunOff P23 T12)

Em nenhumas circunstâncias é permitido que um Triggerframe já utilizado


(no exemplo supra ilustrado o parâmetro T11) seja utilizado uma segunda
vez.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 9 de 84


2.2 SETBRUSH

Macro: SETBRUSH(GunNumber, BrushNumber, Point,


Triggerframe)

Parâmetro: GunNumber: Gun1, Gun2, Gun3


BrushNumber: 1 ... n
Point: Ponto no qual o Trigger deve accionar
Triggerframe: Alinhamento do nível Trigger.

Efeito: A macro SETBRUSH acciona, no ponto programado, os


parâmetros do aplicador. O ponto POINT não é um ponto
que é incluído no cálculo da pista, mas é um novo ponto na
pista, no qual o Trigger deve accionar. É possível avançar
para este ponto no modo SingleStep.
O Brush-Trigger representa uma superfície circular.
O Trigger é accionado assim que o TCP cortar esta área.
Para poder definir completamente um círculo é necessário o
centro do círculo, o raio do círculo e o alinhamento da
superfície do círculo no espaço. O centro do círculo é
definido com o parâmetro Point da macro SETBRUSH.
O raio do círculo não pode ser definido no programa Teach.
É utilizado um valor parametrizado dos ficheiros de
configuração. A orientação da superfície do círculo é
determinada pelo parâmetro Triggerframe da macro
SETBRUSH. Os valores do parâmetro Triggerframe são
calculados durante a primeira execução da macro e escritos
na respectiva variável.

Exemplo: SETBRUSH(Gun1 5 P22 T11)

Em nenhumas circunstâncias é permitido que um Triggerframe já utilizado


(no exemplo supra ilustrado o parâmetro T11) seja utilizado uma segunda
vez.

2.3 WAIT_PROCESS_READY

Macro: WAIT_PROCESS_READY()

Efeito: A macro WAIT_PROCESS_READY pára o programa.


O programa Teach-In aguarda até o comando de processos
atingir o estado "Ready".

Exemplo: WAIT_PROCESS_READY()

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 10 de 84


2.4 SETPROCESSCOMMAND

Macro: SETPROCESSCOMMAND(Command, Point, Triggerframe)

Parâmetro: Command: EndOfBody, DoSoftPurge


Point: Ponto no qual o Trigger deve accionar
Triggerframe: Alinhamento do nível Trigger

Efeito: A macro coloca um sinal na parte processual do comando.


O sinal é accionado por um Trigger na pista.

Exemplo: SETPROCESSCOMMAND(EndOfBody, P1, trigger0)

2.5 SET_SEAMTOLERANCE

Macro: SET_SEAMTOLERANCE(Tolerance)

Parâmetro: Tolerance: [Real]

Efeito: Com o parâmetro é definido um valor percentual, segundo o


qual a quantidade de material aplicada deve divergir do valor
nominal predefinido.
Esta funcionalidade só é suportada na área "Sealing"!

Exemplo: SETPROCESSCOMMAND(5.0)

2.6 GUN DIRECT

Macro: GUN_DIRECT(Number, Command)

Parâmetro: Number: Gun1, Gun2, Gun3


Command: GunOn, GunOff

Efeito: A macro GUN_DIRECT comanda a(s) agulha(s) principal(is)


do aplicador, assim que o TCP tiver atingido o ponto da pista
previamente programado. Esta função pode ser, por
exemplo, utilizada
para a verificação do caudal.

Exemplo: GUN_DIRECT(GUN1, GunOn)



GUN_DIRECT(GUN1, GunOff)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 11 de 84


2.7 SETBRUSH_DIRECT

Macro: SETBRUSH_DIRECT(Number, Brush)

Parâmetro: Number: Gun1, Gun2, Gun3


Brushr: 1 ... n [INT]

Efeito: A macro SETBRUSH_DIRECT permite a definição de um


Brush
sem para isso utilizar um Trigger. Esta
função pode ser, por exemplo, utilizada para a verificação do
caudal.

Exemplo: SETBRUSH_DIRECT(GUN1, 31)

3 Ajustes dinâmicos

Se, devido à limitação de alguns eixos, a cinemática não for capaz de atingir
ajustes dinâmicos parametrizados para a pista, estes são reduzidos
internamente no valor máx. admissível para a respectiva situação.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 12 de 84


3.1 VEL

Macro: VEL(Velocity)

Parâmetro: Velocity: Path_Val Velocidade da pista em mm/s.


Rot_Val Velocidade de orientação do
eixo Z em °/s.
RotZ_Val Velocidade da reorientação em
torno do eixo Z em °/s.
PTP_Perc Velocidade dos eixos relativamente
à velocidade máxima dos eixos

Descrição Intervalo de valores


Path_ Val [mm/s²] 0 - 1500
Rot_Val [°/s²] 0 - 500
PTP_Perc [%] 0 - 100

Efeito: Com o comando VEL é definida a velocidade para os


movimentos subsequentes.

O parâmetro Path_Val define a velocidade para um


deslocamento linear.
Os parâmetros Rot_Val e RotZ_Val definem a velocidade do
eixo virtual de orientação Z (Rot_Val) e a velocidade da
reorientação do eixo de orientação virtual Z (RotZ_Val). Se
estes dois parâmetros forem seleccionados de modo que a
velocidade do eixo de orientação virtual Z seja inferior à
velocidade da pista, a velocidade da pista é respectivamente
limitada. O valor para RotZ_Val não tem que ser
parametrizado, visto que este parâmetro recebe
automaticamente o valor parametrizado para Rot_Val!
O parâmetro PTP_Perc define a velocidade de um
movimento PTP. A velocidade da pista é composta pela
soma das diversas velocidades percentuais dos eixos. A
velocidade máxima à qual se refere o valor percentual
parametrizado está definida para cada eixo no ficheiro
McRobot.cfg.

Exemplo: VEL(V1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 13 de 84


3.2 ACC

Macro: ACC(Acceleration)

Parâmetro: Acceleration: Path_Acc Aceleração da pista em mm/s².


Sem qualquer função na PTP
Path_Dcc Desaceleração da pista
em mm/s². Sem qualquer
função na PTP
Rot_Acc Aceleração de orientação do
eixo Z em °/s²
RotZ_Acc Aceleração de reorientação em
torno do eixo Z em °/s²
PTP_Perc Valor percentual da aceleração
máxima do eixo. Apenas com
efeito na PTP.

Descrição Intervalo de valores


Path_Acc [mm/s²] 0 - 8000
Path_Dcc [mm/s²] 0 - 8000
Rot_Acc [°/s²] 0 - 5000
PTP_Perc [%] 0 - 100

Efeito: Com o comando ACC é definida a aceleração/desaceleração


para os movimentos (deslocamentos) subsequentes.

O parâmetro Path_Acc define a aceleração e o parâmetro


Path_Dcc define a desaceleração para um deslocamento
linear.
Os parâmetros Rot_Acc e RotZ_Acc definem a
aceleração/desaceleração do eixo de orientação virtual Z
(Rot_Val) e a aceleração/desaceleração durante a
reorientação do eixo de orientação virtual Z (RotZ_Val). Se
estes parâmetros forem escolhidos, de forma que a
aceleração/desaceleração seja inferior ao realmente
necessário para o movimento (deslocamento), a velocidade
da pista é respectivamente limitada.
O valor para RotZ_Acc não tem que ser parametrizado,
visto que este parâmetro recebe automaticamente o
valor parametrizado para Rot_Acc!
O parâmetro PTP_Acc define a aceleração/desaceleração
para um movimento PTP. A aceleração de
pista/desaceleração da pista é composta pela soma das
várias acelerações/desacelerações percentuais dos eixos. A
aceleração/desaceleração à qual se refere o valor percentual
parametrizado está definida para cada eixo no ficheiro
McRobot.cfg como valor separado para aceleração e
desaceleração.

Exemplo: ACC(A1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 14 de 84


3.3 JERK

Macro: JERK(Jerk)

Parâmetro: Jerk: Path_Val


Rot_Val
RotZ_Val
PTP_Perc

Com o comando JERK é definido o impulso para o movimento seguinte.

Descrição Símbolo Utilizado em Intervalo


de valores
Impulso da pista [mm/s³] Path_Val Kart 0 - 1015
Impulso de orientação do eixo Z [°/s³] Rot_Val Kart Zrot 0 - 1015
Impulso de orientação no eixo Z [°/s³] RotZ_Val Não é Não é
utilizado utilizado
Impulso do eixo [%] PTP_Perc PTP, Aux 0 - 100

Efeito: Com o impulso é possível parametrizar a intensidade de


modificação da aceleração. Através da redução do impulso é
possível reduzir ou evitar uma tendência de vibração da
cinemática.
A redução do impulso e consequentemente a alteração dos
valores por defeito podem, no entanto, ter forte influência
sobre o comportamento dinâmico da cinemática. Um
possível efeito, neste contexto, é a alteração da geometria
das rampas de aceleração.
O valor para RotZ_Val não tem que ser parametrizado,
visto que este parâmetro recebe automaticamente o
valor parametrizado para Rot_Val!

Exemplo: JERK(J1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 15 de 84


3.4 RAMP

Macro: RAMP(Ramp)
Parâmetro: Ramptype: Trapez, Sinus, Triangle
Rampfactor: [Real]
Esta macro define o tipo de rampa e o factor de rampa.
Os tipos de rampas são:

Rampa Definição Intervalo de valores para o factor de


rampa
Rampa trapezoidal Trapez 0.0 < RAMP <= 0.5
Rampa triangular Triangle Nenhum parâmetro
necessário/possível
Seno quadrado Sinus 0.0 < RAMP < 1.0

Efeito: Destina-se à definição de um formato de rampa especial


com um factor de formato. O tipo de rampa é seleccionado a
partir de uma lista de enumeração.

Rampa trapezoidal:
Rampa mais dura, na qual a aceleração/desaceleração é
mais brusca, de modo a atingir uma fase mais longa possível
com aceleração constante. O valor a parametrizar para esta
rampa define o local em que a aceleração da fase deve
iniciar com aceleração constante. Nas rampas indicadas na
figura seguinte foi uma vez parametrizado o valor 0,15 e uma
vez o valor 0,5.

Rampa triangular:
Forma especial de uma rampa trapezoidal, na qual não
existe nenhuma fase com aceleração constante
(corresponde a uma rampa trapezoidal com o valor
parametrizado 0,5). Esta forma de rampa incita, por norma, a
cinemática para a vibração e é, por este motivo, raramente
utilizada.

1 Velocidade
2 Aceleração
3 Rampa de aceleração
4 Tempo
Fig.: Rampas trapezoidais e triangulares

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 16 de 84


Rampa de seno quadrado:
Rampa mais suave, durante a qual a aceleração não
aumenta tão rapidamente como na rampa trapezoidal e na
qual a aceleração se modifica ao longo de todo o processo
de aceleração. Por norma, este tipo de rampa incita a
cinemática para uma vibração mais reduzida. O valor a
parametrizar para este tipo de rampa define o local onde se
situa o ponto de aceleração máxima. Na figura seguinte foi
parametrizado o valor 0,5.

1 Velocidade
2 Aceleração
3 Rampa de aceleração
4 Tempo

Fig.: Rampa de seno quadrado

Exemplo: RAMP(R1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 17 de 84


4 Ajustes geométricos

4.1 SETOBJECT

Macro: SETOBJECT(Object)

Parâmetro: Object: [x,y,z,a,b,c]

Efeito: Define a posição de um objecto. Se pretender deslocar o


objecto com a ajuda de um sistema de câmara, é necessário
utilizar o comando SETOBJECT em combinação com
RECEIVE. Esta opção só é possível nas instalações
Stop&Go.

Exemplo: SETOBJECT(01)

Se for utilizado um sistema Vision, é necessário utilizar após cada comando


SETOBJECT também o comando RECEIVE (VISION, DATA).

4.2 SETTOOL

Macro: SETTOOL(Tool)

Parâmetro: Tool: [x,y,z,a,b,c]

Efeito: Com o comando SETTOOL é definida uma ferramenta.


Desta forma é possível deslocar o TCP do flange do eixo
manual para o ponto de impacto do jacto de pulverização.
Isto é estritamente necessário para receber uma trajectória
correcta da pista.

Exemplo: SETTOOL(T1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 18 de 84


4.3 OVERLAP

Macro: OVERLAP(Overlap)

Parâmetro: Overlap: Mode


Vel_Perc
Path_Val
Rot_Val
RotZ_Val
Axis_Perc

Mode:
No PHG estão disponíveis mais tipos de passagem de voo (trajectórias de
suavização) do que podem ser, de facto, utilizadas. Apenas os três tipos
seguintes podem ser realmente processados pelo comando e portanto
utilizados.

Tipo de passagem de Definição


voo
Nenhuma passagem de Fine O sistema avança com paragem precisa
voo para cada ponto.
Passagem de voo Vel Durante a passagem de voo dinâmica é
dinâmica definido a que quebra da velocidade, na
rampa de travagem, é iniciada a
suavização.
Passagem de voo Cart Se possível, a pista é percorrida a uma
cartesiana velocidade constante. Neste caso os
cantos são suavizados com o valor
parametrizado.

Para a parametrização dos tipos de passagem de voo é sempre apenas


necessário um parâmetro.
Na tabela seguinte é atribuído aos diversos tipos de passagem de voo
(suavização) o respectivo parâmetro.

Parâmetro de Nome Intervalo Descrição


passagem de voo de valores
Nenhuma passagem de -- -- Nenhuma parametrização
voo -> FINE necessária
Valor percentual da Vel_Perc 0-100 É utilizado durante a
velocidade (ver exemplo passagem de voo dinâmica
1)
Distância em relação ao Path_Val 0-500 É utilizada durante a
ponto [mm] passagem de voo cartesiana.
(ver exemplo 2)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 19 de 84


Exemplo 1: Passagem de voo dinâmica

O início mais próximo da passagem de voo é o centro do


segmento (um segmento é a pista entre dois pontos).
→ Nos 100% parametrizados é depois iniciada a passagem
de voo, se o robô iniciasse com o processo de travagem, de
modo a atingir no ponto P2 uma paragem precisa. Desta
forma é possível evitar uma quebra prematura da velocidade
pela passagem de voo. O resultado é uma trajectória
dinâmica optimizada. Esta vantagem é relativa em valores
inferiores a 100%. A velocidade não é constante durante a
passagem de voo!

Fig.: Passagem de voo dinâmica

→ Se forem parametrizados 50%, o sistema inicia a


passagem de voo, assim que o robô tiver desacelerado para
os 50% da velocidade parametrizada.

Se modificar os parâmetros dinâmicos com que é realizado o


avanço para um segmento, modifica-se também o raio da
passagem de voo.
Ex.: Em caso de redução das velocidades, o raio de
passagem de voo é mais pequeno, e maior em
caso de aumento.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 20 de 84


Exemplo 2: Passagem de voo cartesiana

O início de passagem de voo mais próximo é o centro de um


segmento. O valor parametrizado define a distância em
relação a P2, a partir da qual é iniciada a passagem de voo.

1 Valor parametrizado

Fig.: Passagem de voo cartesiana

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 21 de 84


4.4 SETINTMODE

Macro: SETINTMODE(Intmode)

Parâmetro: Intmode: WRISTJOINT, ZROTATION

Tipo de interpolação Definição Descrição


Interpolação do WRISTJOINT Sem consideração
ângulo do eixo das posições do
manual eixo manual
Rotação Z ZROTATION Valor padrão
2 interpolação angular predefinido

Efeito: Através do comando é possível definir o modo de


interpolação para a orientação na pista. Na troca do modo de
interpolação não é todavia possível realizar uma interpolação
a uma velocidade constante. O perfil de velocidade resulta
depois da passagem de voo definida.

Exemplo: SETINTMODE(WRISTJOINT)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 22 de 84


5 Outros

5.1 RECEIVE

Macro: RECEIVE(BitNr, State)

Parâmetro: BitNr: CollisionX1, …, CollisionX8


CollisionY1, …, CollisionY8
Vision

State: High, Low, Data

Efeito: CollisionX1
Avanço do bloco é parado até o bit de colisão assumir um
estado.

Exemplo: RECEIVE(CollisionX1, High)


Aguardar até o bit de colisão 2 estar definido
RECEIVE (CollisionX1, Low)
Aguardar o bit de colisão 2 estar reposto

Efeito: Vision
Aguardar até a medição online (p. ex. ISRA ou VMT, ...) ser
lida.

Exemplo: RECEIVE(VISION, DATA)

Se for utilizado um sistema Vision, após cada comando SETOBJECT é


necessário utilizar também o comando RECEIVE (VISION, DATA).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 23 de 84


5.2 SET

Macro: SET(BitNr, State)

Parâmetro: BitNr: CollisionX1, …, CollisionX8


CollisionY1, …, CollisionY8

Vision State: High, Low, Data

Efeito: CollisionX1
Definir ou repor um bit de colisão, avanço é parado

Exemplo: SET(CollisionX1, High)


SET(CollisionX1, Low)

Efeito: Vision
Solicitação de um registo vector do sistema Vision, avanço é
parado

Exemplo: SET(Vision, Data)

5.3 MAINRUN

Macro: MAINRUN()

Parâmetro: --

Efeito: Pára o avanço do comando e aguarda pelo deslocamento


principal do comando.

Exemplo: MAINRUN()

5.4 RSELECT

Macro: RSELECT(Name)

Parâmetro: Nome: [String]

Utilização: Imediatamente após a ROUTINE.

Efeito: Define o contexto para uma cinemática definida. Este


comando é fundamental para escrever um programa de
movimentação. A cinemática é indicada como String.
O nome tem que estar em conformidade com o nome
definido no McRobot.cfg.

Exemplo: RSELECT("R11")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 24 de 84


5.5 RDESELECT

Macro: RDESELECT(Name)

Parâmetro: Nome: [String]

Utilização: Imediatamente antes de END_ROUTINE().

Efeito: Desbloqueia novamente o contexto. A cinemática é indicada


como String. O nome tem que estar em conformidade com o
nome definido no McRobot.cfg.

Exemplo: RDESELECT("R11")

5.6 DELAY

Macro: DELAY(tempo)

Parâmetro: Tempo : [s]

Efeito: Pára a execução do programa durante [tempo].

Exemplo: DELAY(1.5)

5.7 ROUTINE

Esta macro não é indicada no PHG e também não pode ser inserida, mas é
automaticamente definida durante a criação de um programa.
Contudo, a macro é indicada no 3D-OnSite.

Macro: ROUTINE()

Utilização: Primeiro comando no programa.

Efeito: O comando ROUTINE define o início de um programa


Teach-In.

Exemplo: ROUTINE(Auto1)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 25 de 84


5.8 END_ROUTINE

Esta macro não é indicada no PHG e também não pode ser inserida, mas é
automaticamente definida durante a criação de um programa.
Contudo, a macro é indicada no 3D-OnSite.

Macro: END_ROUTINE

Utilização: Último comando no programa.

Efeito: O comando END_ROUTINE define o fim de um programa


Teach-In.

Exemplo: END_ROUTINE

5.9 GET_Variante

Macro: GET_Variante(Name)

Parâmetro: Nome: ParedeTraseiraPorta, TraseiraCentroDireita,


TraseiraCentroEsquerda, FarolimDireita,
FarolimEsquerda, D_ColunaDireita,
D_ColunaEsquerda, CapôDireita,
CapôCentro, CapôEsquerda, PrimeiroVeículo

Efeito: Com este comando pode ser consultado um bit de variante


individual. Se o bit for 1, é realizado o retorno da função
TRUE. O avanço não é parado, visto que a informação está
incluída nos dados da carroçaria.

Exemplo: GET_VARIANTE(TraseiraCentroEsquerda) fornece TRUE,


se o bit de variante for TraseiraCentroEsquerda 1.

IF GET_VARIANTE(TraseiraCentroEsquerda) THEN
GUN( GUN1 ,GunOn ,P4 ,TR2 );
END_IF;

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 26 de 84


5.10 SET_SEAMTOLERANCE

Macro: SET_SEAMTOLERANCE(Percentagem)

Parâmetro: Percentagem: %

Efeito: Define a tolerância do controlo da quantidade de costuras


em %. O valor é apenas válido para a costura seguinte
(GunOn até GunOff) e é depois novamente ajustado no valor
por defeito

Exemplo: SET_SEAMTOLERANCE(25)

5.11 TCP_SPEED_CHECK

Macro: SET_SPEED_CHECK(Command, Percentagem)

Parâmetro: Command: TRUE, FALSE


Percentagem: %

Efeito: Com a macro TCP_SPEED_CHECK é possível ligar/desligar


uma monitorização da velocidade e definir um factor entre
0.0 e 1.0 como valor limite. Se a relação entre a velocidade
da pista real e programada descer abaixo deste factor, o
sistema transmite uma mensagem de erro e o movimento é
parado.

Exemplo: SET_SEAMTOLERANCE(TRUE, 5.0)


SET_SEAMTOLERANCE(FALSE, 0.0)

5.12 PRINTSTR

Macro: PRINTSTR(STRING)

Parâmetro: STRING: Texto aleatório

Efeito: Com a macro PRINTSTR é possível inserir, a partir do


programa "Teach", um texto no Trace do comando.

Exemplo: PRINTSTR("Texto que deve ser indicado")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 27 de 84


5.13 GET_REPAIRTYPE

Macro: GET_REPAIRTYPE(Name)

Parâmetro: Nome: ParedeTraseiraPorta, TraseiraCentroDireita,


TraseiraCentroEsquerda, FarolimDireita, …
(os nomes podem variar pontualmente)

Efeito: Com este comando pode ser consultado um bit de variante


individual. Se o bit for 1, é realizado o retorno da função
TRUE. O avanço não é parado, visto que a informação está
incluída nos dados da carroçaria.

Exemplo: GET_REPAIRTYPE(TraseiraCentroEsquerda ) fornece


TRUE, se o bit de variante for TraseiraCentroEsquerda 1.

IF GET_ REPAIRTYPE(TraseiraCentroEsquerda) THEN


GUN( GUN1 ,GunOn ,P4 ,TR2 );
END_IF;

5.14 GET_DEGRADE_MODE

Macro: GET_DEGRADE_MODE(Name)

Parâmetro: Nome: R11, R12, …


(os nomes podem variar pontualmente)

Efeito: Com este comando pode ser consultado um bit de reparação


individual. Se o bit for 1, é realizado o retorno da função
TRUE. O avanço não é parado, visto que a informação está
incluída nos dados da carroçaria.

Exemplo: GET_DEGRADE_MODE (R11) fornece TRUE, se o bit de


reparação for R11 1.

GET_DEGRADE_MODE (R11) THEN


CALL Reparação()
END_IF;

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 28 de 84


5.15 SET_MOTION_STATE

Macro: SET_MOTION_STATE(Group, Job, Run)

Parâmetro: Group: GrindBrake, TorqueMon, BrakeCheck,


InBellCleaner

Job: Joint1, Joint2, Joint3, Joint4, Joint5, Joint6,


Joint7, Robot, True, False

RUN: MainRun, PreRun

Exemplo: SET_MOTION_STATE(GrindBrake, Joint1, MainRun)

Efeito: Com este comando é iniciado o processo "Suavizar travão".


No exemplo superior o processo "Suavizar travão" é iniciado
de forma síncrona com o deslocamento principal para o eixo
1 (ver também o capítulo 12.4 Descrição do avanço e do
deslocamento principal).

Exemplo: SET_MOTION_STATE(InBellCleaner, True, PreRun)

Efeito: Com este comando a variável InBellCleaner é ajustada em


True ou False.
Este estado pode ser novamente consultado com a macro
GET_MOTION_STATE
(ver a respectiva macro).
No exemplo superior a variável InBellCleaner é ajustada em
True no avanço.

As combinações de parâmetros que não são indicadas estão reservadas


para desenvolvimentos posteriores, mas que de momento ainda não
dispõem de nenhuma funcionalidade.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 29 de 84


5.16 GET_MOTION_STATE

Macro: GET_MOTION_STATE(Group, Job)

Parâmetro: Group: GrindBrake, TorqueMon, BrakeCheck,


InBellCleaner

Job: Joint1, Joint2, Joint3, Joint4, Joint5, Joint6,


Joint7, Robot, True, False

Exemplo: GET_MOTION_STATE(InBellCleaner, True)

Efeito: Neste comando o estado da variável InBellCleaner é


comparado com o valor entregue.
Se o resultado desta comparação for verdadeiro, a função
devolve GET_MOTION_STATE True.

Exemplo: GET_MOTION_STATE(InBellCleaner, False)

Consulta se a variável InBellCleaner é False.


Se a variável for False, a função GET_MOTION_STATE
devolve True.

As combinações de parâmetros que não são indicadas estão reservadas


para desenvolvimentos futuros, mas que de momento ainda não dispõem de
nenhuma funcionalidade.

5.17 WAIT_MOTION_STATE

Esta macro está reservada para desenvolvimentos futuros, mas de momento


não está munida de nenhuma função

5.18 SET_PROCESS_STATE

Macro: SET_PROCESS_STATE(Group, Job)

Parâmetro: Group: AbortBody

Job: On (True), Off (False)

RUN: MainRun, PreRun

Exemplo: SET_PROCESS_STATE(AbortBody, ON, PreRun)

Efeito: Com este exemplo a variável AbortBody é ajustada em True.


(ver também 7.6 CHECK_CONVEYOR).
No exemplo superior a variável AbortBody é ajustada em
True no avanço.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 30 de 84


5.19 GET_PROCESS_STATE

Macro: GET_PROCESS_STATE(Group, Job)

Parâmetro: Group: Hightension, AbortBody, NoPaint,


GoHomeAtEnd

Job: On (True), Off (False)

Efeito: Com este comando o estado das variáveis Hightension,


AbortBody, NoPaint, ou GoHomeAtEnd é comparado com o
valor transferido.

Exemplo: GET_PROCESS_STATE(Hightension, True)

Consulta, se a variável está Hightension ON (True).


Se a variável estiver True (Hightension On), esta consulta
devolve True.

Exemplo: GET_PROCESS_STATE(Hightension, False)

Consulta, se a variável está Hightension OFF (False).


Se esta variável for False, esta consulta devolve True.

As combinações de parâmetros que não são indicadas estão reservadas


para desenvolvimentos futuros, mas que de momento ainda não dispõem de
nenhuma funcionalidade.

5.20 WAIT_PROCESS_STATE

Macro: WAIT_PROCESS_STATE(Group, Job)

Parâmetro: Group: Hightension, AbortBody, NoPaint,


GoHomeAtEnd

Job: TRUE, FALSE

Efeito: Com este comando é esperado com forma síncrona do


deslocamento principal pelo estado das variáveis
Hightension, AbortBody, NoPaint ou GoHomeAtEnd.

Exemplo: WAIT_PROCESS_STATE(Hightension, True)

Aguardar até a variável ser Hightension ON (True).

Exemplo: WAIT_PROCESS_STATE(Hightension, False)

Aguardar até a variável ser Hightension OFF (False).

As combinações de parâmetros que não são indicadas estão reservadas


para desenvolvimentos futuros, mas que de momento ainda não dispõem de
nenhuma funcionalidade.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 31 de 84


5.21 DATA_RECORDING

Apenas para o uso interno Dürr. Não é permitida a utilização desta macro na
instalação do cliente.

5.22 SET_STIFFNESS

Apenas para o uso interno Dürr. Não é permitida a utilização desta macro na
instalação do cliente.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 32 de 84


6 Instruções

6.1 Criação de variáveis

De modo a criar no PHG uma variável para uma condição (IF, WHILE,
ELSIF) é necessário criar primeiro a macro desejada, na qual a variável deve
ser utilizada. Através da selecção da condição é possível criar uma nova
variável através das teclas Substituir → VAR, Variável → Novo. A seguir, é
possível utilizar neste programa a variável criada.

6.2 Atribuição de valores

Comando: :=

Efeito: Através do carácter ":=" é possível atribuir um valor a uma


variável, anteriormente definida numa macro.

Exemplo: bool1 := TRUE

6.3 Comentário

Comando: //

Efeito: Todos os caracteres constantes numa linha, a seguir a "//",


são interpretados como comentário.

Exemplo: // Isto é um comentário

6.4 WAIT

Macro: WAIT expressão

Parâmetro: Expressão: [Macro] [Variável]

Efeito: O programa é parado neste ponto, até a variável assumir o


estado True.

Exemplo: WAIT Bool1

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 33 de 84


6.5 CALL

Macro: CALL Name

Parâmetro: Expressão: [Programa]

Efeito: Com CALL é possível aceder a um subprograma que se


encontra no mesmo projecto.

Exemplo: CALL SubProg1()

6.6 LABEL

Macro: LABEL Name

Parâmetro: Name [STRING]

Efeito: LABEL define um jump label, para o qual é possível avançar


com GOTO (ver também a macro GOTO).

Exemplo: LABEL SUPERIOR

6.7 GOTO

Macro: GOTO expressão

Parâmetro: Expressão: [LABEL]

Efeito: Com GOTO é possível avançar para um ponto definido com


LABEL. Os avanços (saltos) só podem ser realizados dentro
de um programa. Para cada GOTO tem que existir também
um respectivo LABEL.

Exemplo: LABEL SUPERIOR


GOTO SUPERIOR

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 34 de 84


6.8 IF … GOTO …

Macro: IF expressão1 GOTO expressão2

Parâmetro: Expressão1: [Macro] [Variável]


Expressão2: [LABEL]

Efeito: Se a expressão for verdadeira, o sistema avança com GOTO


para um ponto assinalado com LABEL.

Exemplo: IF MyBool GOTO SUPERIOR

6.9 LOOP

Macro: LOOP expressão

Parâmetro: Expressão: [Variável] [INT]

Efeito: O código situado entre LOOP e END_LOOP é executado


várias vezes, consoante o valor que a expressão assume
entre
LOOP e DO.

Exemplo: LOOP 10 DO


END_LOOP

6.10 RETURN

Macro: RETURN

Parâmetro: --

Efeito: Com o comando RETURN é retrocedido de um subprograma


para um programa principal.

Exemplo: RETURN

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 35 de 84


6.11 IF…THEN…END_IF

Macro: IF expressão THEN

Parâmetro: Expressão: [Macro] [Variável]

Efeito: Se a expressão for verdadeira, a parte do programa situada


entre IF e END_IF é executada.
Caso contrário é imediatamente executada a parte do
programa após END_IF.
Para cada IF tem que existir um END_IF.
A profundidade de encadeamento máx. admissível é
ilimitada. Na realidade esta só é limitada pela capacidade de
memória.

Exemplo: IF RECEIVE_HANDLERPOS(Handler2, Part3, Pos2) THEN


CALL r11_6265();
END_IF;

6.12 ELSE

Macro: ELSE

Efeito: Se a condição da consulta IF anterior não for afirmativa, o


sistema executa as instruções segundo o comando ELSE.

Exemplo: IF RECEIVE_HANDLERPOS(Handler2, Part3, Pos2) THEN


CALL r11_6265();
ELSE
CALL pos.interm.();
END_IF;

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 36 de 84


6.13 ELSIF…THEN

Macro: ELSIF expressão THEN

Parâmetro: Expressão: [Macro] [Variável]

Efeito: Com ELSIF é possível expandir a instrução IF a outras


consultas. Se a expressão a seguir a IF for verdadeira, as
instruções segundo IF são executadas e depois é continuado
com as instruções segundo END_IF. Caso contrário é
verificada a expressão da primeira expressão ELSIF. Se esta
for verdadeira, as instruções serão executadas segundo
ELSIF, etc.

Exemplo: IF RECEIVE_HANDLERPOS(Handler2, Part3, Pos2) THEN


CALL r11_6265();
ELSIF RECEIVE_HANDLERPOS(Handler2, Part3, Pos3)
THEN
CALL r11_6266();
END_IF;

6.14 WHILE…DO…END_WHILE

Macro: WHILE expressão

Parâmetro: Expressão: [BOOL]

Efeito: WHILE implica que as instruções entre WHILE e


END_WHILE sejam executadas, enquanto a expressão a
seguir a WHILE for verdadeira.

Exemplo: WHILE TRUE DO


// Instrução
END_WHILE

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 37 de 84


6.15 Operações lógicas

Nas macros WAIT, IF…GOTO, IF...THEN…END_IF, ELSIF…THEN,


WHILE…DO…END_WHILE e LOOP é possível trabalhar com operadores.
Os operadores disponíveis são ilustrados na figura seguinte.

Fig.: Operadores

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 38 de 84


7 Tracking

7.1 Tracking

Macro: TRACKING(Tracking)

Parâmetro: Tracking: On Liga a função de Tracking.


Off Desliga a função de Tracking.
Com On é depois possível voltar
a ligar a função de Tracking.
Finished Termina a função de Tracking,
descartando o objecto de
Tracking. Uma nova colocação
e activação da função de
Tracking não é possível.
Resume Reactiva a função de Tracking
que fora terminada com Off.

Efeito: Com o comando TRACKING é comandada a função de


Tracking.

Exemplo: TRACKING(On)
TRACKING(Off)
TRACKING(Resume)
TRACKING(Finished)

7.2 WAIT_CONVEYOR

Macro: WAIT_CONVEYOR(Conveyor)

Parâmetro: Conveyor: [Real]

Efeito: O comando WAIT_CONVEYOR pára o avanço do bloco.


O robô aguarda até a dimensão de transporte atingir o valor
programado (em mm). Este valor é referente ao ponto, no
qual o robô foi sincronizado com o transportador. Este ponto
de sincronização situa-se maioritariamente por baixo da
entrada da cabina.
Este comando é utilizado para esperar até o objecto situar-
se no interior da cabina, até o módulo estar no raio de acção
do robô.
O comando WAIT_CONVEYOR deve ser programado antes
de TRACKING(On). Este não é permitido entre os comandos
TRACKING(On) e TRACKING(Finished).

Exemplo: WAIT_CONVEYOR (200.0)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 39 de 84


7.3 WAIT_PAINTPOSITION

Macro: WAIT_PAINTPOSITION(Paintposition)

Parâmetro: Paintposition: [Real]

Efeito: O comando WAIT_PAINTPOSITION pára o avanço do bloco.


O robô aguarda até a dimensão do objecto atingir o valor
programado (em mm). Este valor é referente ao ponto, no
qual o Tracking foi iniciado com TRACKING(On). Nesta
posição encontra-se a posição do objecto 0.
Este comando é utilizado para esperar até o objecto se situar
no interior da cabina, de modo que o módulo seguinte se
situe dentro do raio de acção do robô e para evitar, durante
uma paragem do transporte, que o robô inicie programas
que não se situem completamente no seu raio de acção ou
na estação.
Este comando só é permitido entre os comandos
TRACKING(On) e TRACKING(Finished).

Exemplo: WAIT_ PAINTPOSITION (100.0)

7.4 GET_PAINTPOSITION

Macro: GET_PAINTPOSITION(GreaterSmaller Paintposition)

Parâmetro: Paintposition: [Real]


GreaterSmaller: Greater, Smaller, Equal

Efeito: O comando GET_PAINTPOSITION pára o avanço do bloco.


A condição só é analisada, momentos antes de o
deslocamento principal atingir este ponto. Isto acontece no
momento mais tarde possível, durante o qual a continuação
do programa ainda é possível sem uma quebra da
velocidade.
De acordo com o valor de devolução é depois possível
utilizar uma consulta IF para criar um salto para uma parte
do programa atribuída.
Este comando só é permitido entre os comandos
TRACKING(On) e TRACKING(Off).

Exemplo: LIN(P1)
GUN(Gun1 GunOn)
LIN(P2)
LIN(P3)
IF GET_ PAINTPOSITION (GREATER 100.0) THEN
GUN(Gun1 GunOff)
ELSE
LIN(P4)
LIN(P5)
GUN(Gun1 GunOff)
END_IF

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 40 de 84


7.5 WAIT_PURGEONPAINTPOS

Macro: WAIT_PURGEONPAINTPOS(Paintposition)

Parâmetro: Paintposition: [Real]

Efeito: O comando WAIT_PURGEONPAINTPOS pára o avanço do


bloco. O robô aguarda até a dimensão do objecto atingir o
valor programado (em mm). Este valor é referente ao ponto
no qual o Tracking foi iniciado com TRACKING(On). Nesta
posição encontra-se a posição do objecto 0.
Este comando é utilizado para esperar até o objecto seguinte
situar-se no interior da cabina, até o módulo estar no raio de
acção do robô. Assim que o objecto atingir a posição
programada, a macro volta com FALSE. É executado o salto
ELSE.
Se o robô detectar, durante este período, que o comando de
processos pretende iniciar um ciclo de lavagem, então volta
a macro TRUE. O sistema não continua a esperar e avança
imediatamente para a execução do salto IF. Este comando
só é permitido entre os comandos TRACKING(On) e
TRACKING(Finished).

Exemplo: LIN(P1)
GUN(Gun1 GunOn)
LIN(P2)
LIN(P3)
IF GET_ PAINTPOSITION (GREATER 100.0) THEN
LIN(P33)
GUN(Gun1 GunOff)
LIN(WAIT)
IF WAIT_PURGEONPAINTPOS(300) THEN
LIN(PURGEPOS)
LIN(WAIT)
WAIT_PAINTPOSITION(300)
ELSE
// Continuar a pintar
END_IF
ELSE
LIN(P4)
LIN(P5)
GUN(Gun1 GunOff)
END_IF

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 41 de 84


7.6 CHECK_CONVEYOR

Macro: CHECK_CONVEYOR(Conveyor)

Parâmetro: Conveyor: [Real]

Efeito: Se o valor de transporte for excedido pelo


WAIT_CONVEYOR, o sistema transmite um erro.
O comando CHECK_CONVEYOR permite evitar a colocação
deste erro, fornecendo um valor de retorno que pode ser
analisado numa instrução. Na instrução pode agora ser
executado um salto, sinalizando, por exemplo, que o objecto
não foi pintado e em seguida é avançado para a posição
Home.

Exemplo: IF CHECK_CONVEYOR(400.0) OR
GET_PROCESS_STATE(NoPaint, ON) THEN

SET_PROCESS_STATE(AbortBody, ON, PreRun)


CALL r21home()
RETURN

END_IF

WAIT_CONVEYOR( 400.0 )

7.7 SETTRACKINGMODE

Macro: SETTRACKINGMODE (mode)

Parâmetro: Mode: LineTracking, RailTracking

Efeito: A macro comuta numa estação com Railtracking o robô para


o modo Tracking Linetracking.
O comando só pode ser utilizado se a função Tracking
estiver activa. Os programas de movimentação devem ser
sempre criados no modo onde serão mais tarde utilizados.
Um robô que é normalmente utilizado no modo Railtracking
tem que ser ajustado com a macro para o modo
Linetracking, para que os programas possam ser
programados
para o modo Linetracking!

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 42 de 84


8 Handler

8.1 SET_SENSOR

Macro: SET_SENSOR(Unit, Tarefa, Reforço, Ciclos de procura)

Parâmetro: Unit: Unit1, Unit2, …, UnitX

Tarefa: Calibrate, Gain, MaxLimit, MaxLimitOff,


MinLimit, MinLimitOff, SearchCycle,
CheckPart, Stop

Reforço: c25_0, c23_5, c22_0, …, cUndef

Ciclos de procura: 0-5

Efeito: A macro SET_SENSOR pode ser utilizada para 3 tarefas:


Para todas as 3 tarefas tem que ser parametrizado um
sensor (Unit).

1. Se pretender equilibrar a ponte de medição é necessário


definir o segundo parâmetro (Tarefa) em Calibrate.
O terceiro parâmetro (Reforço) deve ser ajustado em
cUndef. O quarto parâmetro (Ciclos de procura) deve ser
ajustado em 0.
2. Se pretender definir um factor de reforço é necessário
ajustar o segundo parâmetro em Gain. Com o terceiro
parâmetro é seleccionado o valor do factor de reforço.
Neste caso o quarto parâmetro também é ajustado em 0.
3. Se pretender definir a quantidade de ciclos de procura
para o controlo das peças, é necessário ajustar o
segundo parâmetro em SearchCycle. O terceiro
parâmetro é ajustado em cUndef e através do quarto
parâmetro é definida a quantidade dos ciclos de procura
(1-5).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 43 de 84


8.2 SET_CHECK

Macro: SET_CHECK(Unit, Tarefa, Limites de força)

Parâmetro: Unit: Unit1, Unit2, …, UnitX

Tarefa: Calibrate, Gain, MaxLimit, MaxLimitOff,


MinLimit, MinLimitOff, SearchCycle,
CheckPart, Stop

Limites de
força: Variável do tipo SENSORVALUE. Se estiver
definida a tarefa "CheckPart", o nome da
variável tem que ser "PartValue" e a variável
tem que ser criada para o projecto global.
Nas restantes tarefas o nome da variável é
de escolha livre.

Efeito: MaxLimit: Monitorização dos limites de força


parametrizados na chamada, relativos aos
valores superiores

MaxLimitOff: Desactivação da monitorização de força


MaxLimit

MinLimit: Monitorização dos limites de força


parametrizados na chamada, relativos aos
valores inferiores

MinLimitOff: Desactivação da monitorização de força


MinLimit

CheckPart: Iniciar o controlo das peças para os limites


de força parametrizados na chamada. Se a
peça não for encontrada (GET_PART), o
movimento do robô é executado
inversamente de GET_PART até
SET_CHECK
(ver 11.1.5).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 44 de 84


8.3 GET_PART

Macro: GET_PART(Unit, Tarefa, Limites de força)

Parâmetro: Unit: Unit1, Unit2, …, UnitX

Tarefa: CheckPart, Stop (apenas nos interruptores)

Limites de
força: Variável do tipo SENSORVALUE. Se estiver
definida a tarefa "CheckPart", o nome da
variável tem que ser "PartValue" e a variável
tem que ser criada para o projecto global.
Nas restantes tarefas o nome da variável é
de escolha livre.

Efeito: Análise do controlo de peças anteriormente iniciado


(SET_CHECK) → Peça identificada / não identificada. Se a
peça não for identificada, o sistema retrocede até
SET_CHECK.
Se a função de aprendizagem tiver sido activada através de
uma PHG-User-Page específica, é possível escrever os
limites de força, identificados entre SET_CHECK e
GET_PART, na variável "PartValue" através desta
PHG-User-Page.

8.4 RECEIVE_ORDER

Macro: RECEIVE_ORDER(SourcePartTV, SourcePosTV,


DestPartTV, DestPosTV)

Parâmetro: SourcePartTV = Parte Start do Handler, p. ex. "NoPart" ou


"RearHood",
nome de variável de livre escolha do tipo
PART

SourcePosTV = Posição Start do Handler, p. ex.


"HomePos" ou "WaitPos",
nome de variável de livre escolha do tipo
POSITION

DestPartTV = Parte End do Handler, p. ex. "NoPart" ou


"RearHood",
nome de variável de livre escolha do tipo
PART

DestPosTV = Posição End do Handler, p. ex.


"HomePos" ou "WaitPos",
nome de variável de livre escolha do tipo
POSITION

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 45 de 84


Efeito: O robô avança para o estado "Handler". O programa pára
neste comando até o Handler sair deste estado através de
um "Finish" de todos os robôs por ele encarregues. Durante
o estado são automaticamente consultadas as entradas de
encarregamento Handler (Interfaces para CLP) e, de acordo
com a posição real e nominal, é executado um programa.
Estes programas são definidos via "SET_MODULE".
"SourcePartTV" e "SourcePosTV" definem a posição inicial e
"DestPartTV" e "DestPosTV" definem a posição final do
Handler, relativamente ao estado do Handler. O feedback
das posições (das peças) para os robôs encarregues é
realizado automaticamente via CLP.

8.5 SET_ORDER

Macro: SET_ORDER(handler, part, pos)

Parâmetro: handler = robô handling a encarregar,


p. ex. "D11" ou "D12",
nome de variável de livre escolha do tipo
HANDLER

part = peça a manusear, p. ex. "RearHood" ou


"FrontDoor",
nome de variável de livre escolha do tipo
PART

pos = posição de destino da peça, p. ex.


"HalfOpen" ou "FullOpen",
nome de variável de livre escolha do tipo
POSITION

Efeito: Tarefa para manuseador "handler", posicionar a parte "part"


em posição "pos". P. ex. em pos = "WaitPos" o sistema deve
avançar para a posição de espera diante da peça. P.
ex. com pos = "End" é sinalizado que o "handler" não é mais
necessário e que pode avançar para a sua posição de fim de
curso (ver 8.4). P. ex. com pos = "Cancel" a saída da tarefa
(Interfaces para CLP) no "handler" é definida em 0
(=> nenhuma tarefa).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 46 de 84


8.6 RECEIVE_HANDLERPOS

Macro: RECEIVE_HANDLERPOS(handler, part, pos)

Parâmetro: handler = robô handling encarregue, p. ex. "D11"


ou "D12",
nome de variável de livre escolha do tipo
HANDLER

part = peça manuseada, p. ex. "RearHood" ou


"FrontDoor",
nome de variável de livre escolha do tipo
PART

pos = posição de destino da peça, p. ex.


"HalfOpen" ou "FullOpen",
nome de variável de livre escolha do tipo
POSITION

Efeito: O programa pára neste comando até o manuseador


"handler" atingir a posição "pos" da peça "part". Após
recepção do feedback (via CLP), a tarefa do "handler" é
apagada.
Se o manuseador "handler" não estiver seleccionado, o
comando volta imediatamente e devolve FALSE! Este caso
tem que ser eventualmente capturado no programa
(ver 11.1.1).

8.7 SET_INIPOS

Macro: SET_INIPOS(part, pos)

Parâmetro: part = peça manuseada, p. ex. "RearHood" ou


"FrontDoor",
nome de variável de livre escolha do tipo
PART

pos = posição de inicialização da peça, p. ex.


"FullClose" ou "FullOpen",
nome de variável de livre escolha do tipo
POSITION

Efeito: Aqui é possível atribuir a uma peça "part", antes da chamada


de RECEIVE_ORDER, a posição de inicialização "pos". O
ajuste por defeito é, p. ex., "FullClose", isto significa que se a
posição inicial de uma peça estiver "Fechada" não é
necessário utilizar SET_INIPOS.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 47 de 84


8.8 SET_ENDPOS

Macro: SET_ENDPOS(part, pos)

Parâmetro: part = peça manuseada, p. ex. "RearHood" ou


"FrontDoor",
nome de variável de livre escolha do tipo
PART

pos = posição final da peça, p. ex. "FullClose" ou


"FullOpen",
nome de variável de livre escolha do tipo
POSITION

Efeito: Aqui é possível atribuir a uma peça "part", antes da chamada


de RECEIVE_ORDER, a posição final "pos". Ao afastar-se
da peça "part" é depois resinalizada a posição "pos" para
esta peça (Interfaces para CLP). O ajuste por defeito é, p.
ex., "FullClose", isto significa que se a posição final de uma
peça estiver "Fechada" não é necessário utilizar
SET_ENDPOS.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 48 de 84


8.9 SET_MODULE

Macro: SET_MODULE(SourcePartTV, SourcePosTV, DestPartTV,


DestPosTV, modName)

Parâmetro: SourcePartTV = Parte Start, p. ex. "NoPart" ou


"FrontDoor",
nome de variável de livre escolha do
tipo PART

SourcePosTV = Posição Start, p. ex. "HomePos" ou


"FullOpen",
nome de variável de livre escolha do
tipo POSITION

DestPartTV = Parte de destino, p. ex. "NoPart" ou


"FrontDoor",
nome de variável de livre escolha do
tipo PART

DestPosTV = Posição de destino, p. ex. "HomePos"


ou "FullOpen",
nome de variável de livre escolha do
tipo POSITION

modName = STRING aleatório,


nome do programa a chamar
durante RECEIVE_ORDER
(ver 8.4)

Efeito: Durante a passagem de uma posição real para uma posição


nominal, durante o estado "Handler" ("RECEIVE_ORDER") é
automaticamente executado um programa. Cada um destes
programas tem que ser dado a conhecer por SET_MODULE
do comando, antes de chamar RECEIVE_ORDER.

Exemplo: Start: "NoPart", "HomePos"


Destino: "RearHood", "FullOpen"
Neste caso deve ser, por exemplo, executado o programa
"Home_FullOpen", portanto:
SET_MODULE(NoPart, HomePos, RearHood, FullOpen,
"Home_FullOpen”),
(ver também 11.1.3)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 49 de 84


8.10 CHECK_TORQUE

Macro: CHECK_TORQUE (Order, Activate, Axis, Boundary,


OnlyMonitoring)

Parâmetro: Order: ObserveMaxLimit, ObserveMinLimit,


PartDetectPosDir, PartDetectNegDir
Activate: StartCheck, StopCheck
Axis: 1…n [INT]
Boundary: -x…0…x [REAL]
OnlyMonitoring: TRUE, FALSE

Efeito: ObserveMaxLimit:
O momento medido não pode exceder o valor predefinido.

ObserveMinLimit:
O momento medido não pode ser inferior ao valor
predefinido.

PartDetectPosDir:
O momento medido tem que exceder, pelo menos, num ciclo
o valor predefinido

StartCheck:
Activação da monitorização

StopCheck:
Terminar a monitorização

Axis: Eixo do robô a monitorizar

Boundary: Valor limite com carácter

True:
É realizada uma comparação, incluindo reacção de erro

False:
É apenas realizado o registo dos momentos, sem reacção de
erro

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 50 de 84


9 Timer

9.1 TIMERSTART

Macro: TIMERSTART()

Efeito: Inicia a medição para determinar os tempos que são


necessários para a função "Variável Distância de Ciclos".

9.2 TIMERSTOP

Macro: TIMERSTOP()

Efeito: Termina a medição para determinar os tempos que são


necessários para a função "Variável Distância de Ciclos".

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 51 de 84


10 Gluing

10.1 SET_PLC_ORDER

Macro: SET_PLC_ORDER (Task,Step)

Parâmetro: Task: Grupo de programas

Step: Transition

Efeito: Definição de um pedido ao CLP.


Um pedido é sempre composto por um grupo de programas
e uma respectiva transição. O grupo de programas e a
transição devem combinar logicamente, caso contrário o
comando transmite um erro.

10.2 RECEIVE_PLC_ORDER

Macro: RECEIVE_PLC_ORDER (Task,Step)

Parâmetro: Task: Grupo de programas

Step: Transition

Efeito: Consulta, se o pedido previamente definido com


SET_PLC_ORDER foi executado e se foi transmitido um
sinal de resposta pelo CLP. A macro pára o avanço e, por
conseguinte, também os movimentos do robô.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 52 de 84


11 Exemplos de programação

11.1 Programação dos robôs handling

A programação da função de handling baseia-se na funcionalidade de um


robô de aplicação encarregar um robô de handling para deslocar uma peça
para uma determinada posição ou avançar para uma posição de espera, à
frente de uma peça. O robô de aplicação pode depois esperar até o robô de
handling sinalizar que a respectiva peça ou o próprio robô estão na
respectiva posição. Cada robô de aplicação pode comunicar com até 4 robôs
de handling. Cada robô de handling é capaz de manusear até 4 diferentes
peças.

Applikationsroboter Handlingsroboter

SET_ORDER(handler, part, pos)

RECEIVE_ORDER(
SourcePartTV, SourcePosTV,
DestPartTV, DestPosTV)

RECEIVE_HANDLERPOS(
handler, part, pos)

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 53 de 84


11.1.1 Programa do robô de aplicação

Todos os comandos para encarregar os robôs de handling e para consultar


as posições (das peças) são criados no programa principal. O comando para
o encarregamento é SET_ORDER(handler, part, pos) (ver 8.5). O comando
para a consulta das posições (das peças) é
RECEIVE_HANDLERPOS(handler, part, pos) (ver 8.6).

Exemplos para comandos do robô de aplicação para um dos seus robôs de


handling:

1. Handler "D11" deve avançar para a posição de espera, à frente da


peça "RearDoor":
SET_ORDER(D11 ,RearDoor ,WaitPos)

2. Aguardar até Handler "D11" estar na posição de espera, à frente da


peça "RearDoor":
RECEIVE_HANDLERPOS(D11 ,RearDoor ,WaitPos)

3. Handler "D12" deve posicionar a peça "FrontDoor" na posição


"FullOpen":
SET_ORDER(D12 ,FrontDoor ,FullOpen)

4. Aguardar até Handler "D12" ter posicionado a peça "FrontDoor" na


posição "FullOpen":
RECEIVE_HANDLERPOS(D12 ,FrontDoor ,FullOpen)

5. Handler "D11" não é mais necessário e pode avançar para a sua


posição de fim de curso "DestPartTV", "DestPosTV" (ver 8.4):
SET_ORDER(D11, NoPart, End)

Se o "handler" tiver sido deseleccionado na visualização, o


RECEIVE_HANDLERPOS(handler, part, pos) retorna imediatamente e
devolve FALSE. Esta queda tem que ser eventualmente evitada no
programa principal, de modo a evitar colisões:

IF RECEIVE_HANDLERPOS(D12, FrontDoor, FullOpen) THEN


TV()
ELSE
zwipos()
END_IF

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 54 de 84


Um completo programa principal poderia ter o seguinte aspecto:

RSELECT("R11")
//
SETTOOL( BELL2_200 )
SETOBJECT( OBJ1 )
VEL( V400 )
ACC( A3500 )
//
PTP( R11HOME )
//
SET_ORDER( D11 ,RearDoor ,FullOpen )
SET_ORDER( D12 ,FrontDoor ,FullOpen )
//
IF RECEIVE_HANDLERPOS(D11, RearDoor, FullOpen)
THEN
IF RECEIVE_HANDLERPOS(D12, FrontDoor,
FullOpen) THEN
BS()
TH()
ELSE
//
END_IF
ELSE
//
END_IF
//
SET_ORDER( D11 ,RearDoor ,FullClose )
RECEIVE_HANDLERPOS( D11 ,RearDoor ,FullClose )
SET_ORDER( D11 ,RearDoor ,WaitPart )
RECEIVE_HANDLERPOS( D11 ,RearDoor ,WaitPart )
//
IF RECEIVE_HANDLERPOS(D12, FrontDoor, FullOpen)
THEN
TV()
SET_ORDER( D12 ,FrontDoor ,FullClose )
ELSE
//
END_IF
//
VEL( V500 )
ACC( A3500 )
PTP( R11HOME )
//
SET_ORDER( D11 ,NoPart ,End )
SET_ORDER( D12 ,NoPart ,End )
//
RDESELECT("R11")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 55 de 84


11.1.2 Vários robôs de aplicação comandam um robô de handling

Se vários robôs de aplicação podem comandar o mesmo robô de handling,


ocorrerão situações em que os pedidos dos robôs de aplicação serão
diferentes. Tem que existir uma instância de decisão que define qual e
quando o robô de aplicação pode enviar os seus comandos ao robô de
handling. Esta decisão é tomada pelo CLP com base nas seguintes regras:

Regra 1: Se existirem pedidos de dois robôs, o sistema ignora o pedido


do robô cujo pedido foi o último a ser processado.
Regra 2: É dada preferência ao robô que comandou menos vezes o robô
de handling.
Regra 3: R11 antes de R12 antes de R21 antes de R22.
Regra 4: O pedido "Finish" só é transmitido ao robô de handling, assim
que todos os robôs de aplicação pedirem este comando.

A seguir segue-se um exemplo com os robôs de aplicação R11, R12, R21 e


o robô de handling H22.

R11 e R12 comandam o robô de handling a "abrir completamente" a porta.


R21 envia o pedido "abrir parcialmente". Neste exemplo o pedido (comando)
dos robôs R11 e R21 chega simultaneamente ao CLP. Pouco depois chega
o comando de R12. Isto significa que o comando de R12 é ignorado, numa
primeira fase. O CLP tem que optar entre R11 e R21. A regra 1 não se aplica
porque ainda não foi processado nenhum comando. Neste caso é aplicada a
regra 3.

O robô de handling recebe portanto de R11 o comando de "abrir


completamente" a porta. Após abrir a porta o robô de handling sinaliza para
todos os robôs que a posição está "completamente aberta". Os robôs R11 e
R12 estão à espera desta resposta. Os dois robôs continuam a executar os
respectivos programas de Teach. No final do modo ambos enviam o
comando "fechar parcialmente" (Pos3). Visto que o CLP do robô R11 já
enviou um comando para o robô de handling, este é agora ignorado
(Regra 1). A escolha incide sobre os robôs R12 e R21. Agora é transmitido o
comando de R12 (Regra 3). Desta forma H22 desloca a porta para a posição
"parcialmente fechada". Os robôs 11 e 12 executam os seus programas.
O robô 21espera.

Assim que o robô R12 tiver concluído, este envia o comando "terminar",
avança para a posição inicial e termina o seu programa. O robô 11 transmite
o comando "posição de espera". Visto que o sistema já processou os
comandos do robô 12, são agora processados os comandos do robô 21.
O robô de handling avança para a posição "semi-aberto" e o robô 21 inicia a
aplicação. De seguida o robô transmite o comando "terminar", avança para a
posição inicial e termina o seu programa. Agora é novamente processado o
comando do robô 12. O robô de handling avança para a "posição de espera"
e o robô 12 inicia a aplicação. De seguida o robô transmite o comando
"terminar", avança para a posição inicial e termina o seu programa.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 56 de 84


O CLP verifica agora que todos os robôs de pintura seleccionados
transmitem o comando "terminar" (Regra 4) e transmite o comando para o
robô de handling. Este avança, de seguida, para a posição inicial e termina o
seu programa.

Agora o programador Teach-In tem que assegurar que a sequência


processual também funciona, se o robô 11 for o último a transmitir o seu
comando (ex. avaria durante a lavagem, etc.). Neste caso, o robô de
handling executaria em primeiro lugar o comando "abrir parcialmente" em
vez do comando "abrir completamente", etc.

11.1.3 Programa do robô de handling

O comando central de um programa de um robô de handling é a macro


RECEIVE_ORDER(SourcePartTV, SourcePosTV, DestPartTV, DestPosTV)
(ver 8.4). Com este comando o robô coloca-se no "estado handler", ou seja,
transforma-se no robô de handling e passa a receber os comandos, executa
os comandos e transmite sinais de resposta sobre a sua posição ou as
posições das peças por ele manuseado.

Durante a activação do "estado handler" o robô tem que conhecer a sua


posição de partida (via "SourcePartTV" e "SourcePosTV"), assim como as
posições iniciais de todas as suas peças (eventualmente via "SET_INIPOS",
ver 8.7). Na qualidade de valores de partida por defeito, todas as peças têm
a posição 4 (corresponde p. ex. a "FullClose"). Dependendo desta posição
de partida e do primeiro comando, é executado um programa para atingir a
posição ordenada. Partindo deste novo estado real e da próxima tarefa, é
novamente executado um programa, etc.

Se o Handler tiver terminado uma parte e depois avançar para a próxima,


este transmite para a parte concluída a respectiva posição de fim de curso,
eventualmente "pos" de "SET_ENDPOS(part, pos)" (ver 8.8). Neste caso o
valor final por defeito é a posição 4, ou seja, p. ex. "FullClose".

Por fim é transmitido por todos os robôs o comando "terminar" e o robô de


handling avança da posição actual para "DestPartTV", "DestPosTV".

Antes de chamar RECEIVE_ORDER é necessário que todos os nomes do


programa que pretende executar sejam inseridos no programa principal do
handler através da macro "SET_MODULE" (ver 8.9).

O gráfico seguinte mostra a quantidade máxima de possíveis deslocamentos


(programas), durante o manuseamento de 2 peças. O gráfico será diferente,
no caso de um outro número de peças. Neste caso as linhas correspondem
aos programas (deslocamentos do handler). Por linha são possíveis as duas
direcções.

Os deslocamentos realmente realizáveis dependem de quais as linhas


definidas com um comando "SET_MODULE" com o respectivo programa.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 57 de 84


Part1 Pos4 Part2 Pos4

Part1 Pos3 Part2 Pos3

Part1 Pos2 Part2 Pos2

Part1 Pos1 Part2 Pos1

WaitPos1 WaitPos2

HomePos

Como posição de partida (SourcePartTV, SourcePosTV) do estado do


handler (RECEIVE_ORDER) pode ser escolhida qualquer posição.

Como posição final (DestPartTV, DestPosTV) só podem ser seleccionadas


posições de espera e a posição Home.

Um completo programa principal poderia ter o seguinte aspecto:

RSELECT("D11")
//
SETTOOL( TOOL_30_P )
SETOBJECT( OBJ1 )
//
SET_MODULE( RearDoor ,WaitPart ,RearDoor ,FullOpen ,"CL_OP" )
SET_MODULE( RearDoor ,FullOpen ,RearDoor ,FullClose ,"OP_CL" )
SET_MODULE( RearDoor ,FullClose ,RearDoor ,WaitPart ,"WAIT" )
SET_MODULE( RearDoor ,WaitPart ,NoPart ,HomePos ,"HOME" )
SET_MODULE( RearDoor ,FullOpen ,RearDoor ,WaitPart ,"OP_WAIT" )
//
SET_SENSOR( Unit1 ,Calibrate ,cUndef ,0 )
SET_SENSOR( Unit1 ,Gain ,c8_5 ,0 )
SET_CHECK( Unit1 ,MaxLimit ,CollisionValue )
//
RECEIVE_ORDER( RearDoor ,WaitPart ,NoPart ,HomePos )
//
RDESELECT("D11")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 58 de 84


11.1.4 O robô de aplicação é simultaneamente o robô de handling

Neste caso, o programa principal é composto por chamadas alternantes de


programas de aplicação e SET_ORDER e por chamadas de
RECEIVE_ORDER com chamadas precedentes de SET_MODULE e,
opcionalmente, também SET_INIPOS e SET_ENDPOS, dependendo se o
robô está a aplicar, está a ser comandado ou se manuseia peças. Neste
caso é necessário ter em atenção que o robô tem que se desbloquear
eventualmente sozinho do estado handler, enviando a si próprio o comando
"terminar" com SET_ORDER. Este "terminar" tem que ser definido num
programa handler. No exemplo indicado, o último comando nos dois
programas "C_op" e "dummy" tem que ser p. ex.:

SET_ORDER(R31, NoPart, End).

No presente exemplo de um programa principal, um robô encarrega-se de


abrir a cobertura. Este é engatado mecanicamente. De seguida é executada
a aplicação. Por fim encarrega-se de agarrar e de fechar a cobertura.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 59 de 84


RSELECT("R31")
//
VEL( Vel_600 )
ACC( ACC4000 )
SETOBJECT( OBJ1 )
SETTOOL( Swirl )
//
SET_SENSOR( Unit1, Calibrate, cUndef, 0 )
SET_SENSOR( Unit1, Gain, c14_5, 0 )
//
SET_ORDER( R31, RearHood, FullOpen )
//
SET_MODULE( RearHood, WaitPart, RearHood, FullOpen, "C_op" )
SET_MODULE( RearHood, FullOpen, RearHood, WaitPart, "r31stwa" )
SET_ENDPOS( RearHood, FullOpen )
//
RECEIVE_ORDER( RearHood, WaitPart, RearHood, WaitPart )
//
SET_ORDER( R31, RearHood, Cancel )
//
r31_7401()
r31_6349()
//
SET_ORDER( R31, RearHood, FullOpen )
//
SET_MODULE( RearHood, WaitPart, RearHood, FullOpen, "dummy" )
SET_MODULE( RearHood, FullOpen, RearHood, WaitPart, "C_cl" )
SET_INIPOS( RearHood, FullOpen )
//
RECEIVE_ORDER( RearHood, WaitPart, RearHood, WaitPart )
//
SET_ORDER( R31, RearHood, Cancel )
//
RDESELECT("R31")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 60 de 84


11.1.5 Sistema de sensores de carga

Explicações para o seguinte exemplo de programa:

- Através de "SET_CHECK(Unit1, MaxLimit, CollisionValue)" é iniciada


uma identificação de colisão geral com um valor predefinido
(CollisionValue).
- Via "SET_CHECK(Unit1, MaxLimit, OverloadValue)" é iniciado o
controlo de sobrecarga, com os valores predefinidos, para o respectivo
componente.
- O controlo de sobrecarga é desactivado com "SET_CHECK(Unit1,
MaxLimitOff, OverloadValue)".
- Com "SET_CHECK(Unit1, MinLimit, MinValue)" é iniciada uma
identificação geral com um valor predefinido (MinValue). Agora é
verificado de forma permanente se os valores não atingem um dos
valores limite definidos.
Utilização apenas nos dispositivos de abertura das coberturas, visto
nestes incidir uma carga no sensor durante a aplicação.
- O controlo da cobertura é novamente fechado via
"SET_CHECK(Unit1, MinLimitOff, MinValue)".
- Com "SET_SENSOR(Unit1, SearchCycle, cUndef, 3)" são definidas as
tentativas com as quais deve ser tentado agarrar uma peça. Neste
exemplo o sistema tenta no máximo três vezes agarrar uma peça.
- Via "SET_CHECK(Unit1, CheckPart, PartValue)" é iniciado o controlo
das peças com o valor previamente programado (PartValue).
- Com "GET_PART(Unit1, CheckPart, PartValue)" é depois analisado o
controlo de peças previamente iniciado.

Se na pista, situada entre "SET_CHECK(Unit1, CheckPart, PartValue)" e


"GET_PART(Unit1, CheckPart, PartValue)", a carga previamente
programada não for excedida, o sistema assume que a peça não foi
agarrada. Visto que através da macro "SET_SENSOR(Unit1, SearchCycle,
cUndef, 3)" foram configurados três ciclos, o robô retrocede a pista até ao
comando "SET_CHECK(Unit1, CheckPart, PartValue)" e tenta agora no
máx. mais duas vezes agarrar a peça, avançando novamente para a frente
até "GET_PART(Unit1, CheckPart, PartValue)". Se não conseguir agarrar a
peça após três tentativas, o sistema transmite um erro.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 61 de 84


RSELECT("H12")
//
SETTOOL( TOOL_30_P )
SETOBJECT( OBJ1 )
//
SET_CHECK( Unit1, MaxLimit, CollisionValue )
//
PTP(P0)
LIN( P1 )
VEL( Vel_500 )
//
SET_CHECK( Unit1, MaxLimit, OverloadValue )
//
LIN( P2 )
//
SET_SENSOR( Unit1, SearchCycle, cUndef, 3 )
SET_CHECK( Unit1, CheckPart, PartValue )
//
LIN( P3 )
GET_PART( Unit1, CheckPart, PartValue )
//
LIN( P4 )
LIN( P5 )
//
SET_CHECK( Unit1, MinLimit, MinValue )
LIN( P6 )
SET_CHECK( Unit1, MinLimitOff, MinValue )
//
RDESELECT("H12")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 62 de 84


12 Explicações complementares

12.1 Ajustes dinâmicos e geométricos

Se não for realizada uma distinção específica, são válidas as seguintes


explicações para a versão do comando 5 e superior.

Estrutura de um programa:

RSELECT("R22")
SETTOOL( Ecobell200 )
SETOBJECT( W211 )

VEL(V100)
ACC(A3500)
OVERLAP(NODEC10)
...
LIN(P1)
VEL(V200)
ACC(A4000)
OVERLAP(NODEC20)
LIN(P2)
LIN(P3)
OVERLAP(NODEC10)
LIN(P4)
LIN(P5)
OVERLAP(NODEC30)
LIN(P6)
LIN(P7)
LIN(P8)
LIN(P9)

RDESELECT("R22")

No programa é definido após o ponto LIN(P1) a velocidade VEL(V200), a


aceleração ACC(A4000) e o comando de passagem de voo
OVERLAP(NODEC20). Os comandos só têm efeito a partir do ponto S2. No
ponto P1 tem portanto ainda efeito o comando OVERLAP(NODEC10).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 63 de 84


O ângulo da pista em torno do ponto P4 é < 18°. O ângulo da pista < 18° é
automaticamente alterado, por razões dinâmicas, para uma passagem de
voo dinâmica. Este é também o caso se no exemplo superior tiver sido
prévia e explicitamente definida uma passagem de voo cartesiana
(OVERLAP(NODEC10)). Durante a passagem de voo (suavização) dinâmica
é abdicado da precisão absoluta da pista em favor de um melhor
comportamento dos picos de aceleração. Assim sendo, o esquema de pista
de dois cantos de passagem de voo com 17,9° e 18,1° pode ser diferente,
apesar da forma geométrica ser idêntica.

Regra para a passagem de voo (suavização):


Se metade do comprimento do segmento for maior que o valor
parametrizado para a passagem de voo, então este é utilizado.
Se metade do comprimento do segmento for mais pequeno do que o valor
parametrizado para a passagem de voo, o valor é reduzido internamente no
comando para metade do comprimento do segmento.

Nos pontos P5 até P9 é, de seguida, exemplificado o comportamento do


comando durante a passagem de voo.
Na trajectória de P5 para P6 o valor parametrizado para a passagem de voo
é do mesmo tamanho como metade da trajectória (segmento). Assim sendo,
o comando não interfere neste ponto. No segmento de P6 para P7 a metade
do comprimento do segmento é, no entanto, mais curta do que o valor para a
passagem de voo. Neste caso o valor para a passagem de voo é definido em
metade do comprimento do segmento.
Assim sendo, é possível utilizar durante um processo de suavização o valor
parametrizado pelo utilizador para a primeira metade de suavização. Na
segunda metade é reduzido devido ao comprimento do segmento da área de
suavização.
Nas trajectórias de P7 para P8 e de P8 para P9, o valor parametrizado é
reduzido, em ambos os casos, pelo comando para metade do comprimento
do segmento.
A geometria da pista suavizada é uma parábola da 5.ª ordem.

1 Centro de um segmento

Fig.: Pista de exemplo

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 64 de 84


Devido ao comportamento previamente descrito do comando durante a
passagem de voo, é possível (ver figuras) modificar o comportamento da
trajectória através da introdução de um novo ponto no segmento LIN.

Pista original

Fig.: Pista de partida

Pista com ponto introduzido (P4), onde o comportamento da pista


(trajectória) é modificado por comprimentos de segmento mais pequenos.

Pista alterada

Fig.: Nova pista com ponto introduzido

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 65 de 84


Excepções relativamente ao comportamento de comando previamente
referido:

Fig.: Excepções relativamente ao comportamento do comando

Pretende-se que a partir do ponto P7 o robô mantenha uma velocidade da


pista de 100 mm/s. De acordo com o comportamento do comando (descrito
no início deste capítulo), este iria iniciar apenas a partir do ponto S1 o
processo de desaceleração de 500mm/s para 100mm/s. Se, todavia, devido
à desaceleração (DCC) predefinida, a trajectória entre S1e P7 não for
suficiente para atingir no ponto P7 a velocidade predefinida de 100 mm/s, o
robô inicia a desaceleração a partir do ponto S2.
➾ O início de uma desaceleração é seleccionado de forma que a velocidade
é atingida no ponto programado!
Esta relação é apenas válida numa redução da velocidade da pista e não
durante o aumento da velocidade da pista.
Durante o aumento da velocidade da pista, o processo de aceleração é
sempre iniciado no ponto parametrizado. Se a trajectória disponível for
insuficiente para atingir a velocidade predefinida, o comando permanece
abaixo da mesma e atinge-a apenas após conclusão da fase de aceleração.
Este aspecto do comportamento do comando deve ser particularmente
respeitado durante a desaceleração parametrizada (DCC)!

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 66 de 84


12.2 Trigger

Pontos de Trigger (disparo)

Os pontos de disparo são utilizados em programas de pintura. Estes têm a


função de activar o processo em pontos predefinidos. Por processo
subentende-se neste caso
- Abrir agulha principal
- Fechar agulha principal
- Seleccionar Brush
- Comando na parte processual do comando (a iniciar processo de
lavagem, etc.).
.

No EcoRPC os Trigger estão conectados a um ponto programado.


Através deste Trigger é definido um círculo com um diâmetro de 9,99 metros.
Desta forma é assegurado que os Trigger disparam sempre.
Existem dois tipos de Trigger. Estes distinguem-se em termos de
comportamento, ou seja, onde os Trigger se encontram na pista (trajectória)
programada.

Trigger, que pertencem ao movimento LIN, são designados por Trigger de


segmento.
Trigger, que pertencem aos movimentos PTP, CIRC, são designados por
Trigger de nível.

A seguir são descritos os detalhes para os Trigger.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 67 de 84


Trigger de segmento

Durante cada deslocação ao longo da pista, o sistema realiza um recálculo


da orientação do círculo de disparo, verticalmente em relação ao segmento e
guardado como vector de direcção nos parâmetros de disparo. O ponto de
intersecção do círculo de disparo e do segmento divide o segmento em duas
secções. Da relação entre a primeira secção e o comprimento total do
segmento resulta um valor percentual. O Trigger dispara assim que este
valor percentual for atingido na pista real (suavizada).
Se agora o segmento LIN (pertencente ao Trigger) for deslocado através da
reprogramação de um ponto (P2_1 zu P2_2), o círculo do Trigger é
recalculado e o valor percentual do segmento é recalculado. Neste caso é
provocado um deslocamento do ponto de disparo do Trigger de SP1_1 para
SP1_2.

1 Nível do Trigger

Fig.: Trigger do parâmetro de segmento

Por este motivo recomenda-se que, após o deslocamento de um segmento,


o respectivo ponto de disparo seja novamente reposicionado para a posição
desejada na pista (3D-OnSite) ou proceder a uma reprogramação.
Para poder avançar para um Trigger é necessário activar o modo Step.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 68 de 84


Trigger de nível

Este é utilizados para movimentos PTP e CIRC. Tal como nos Trigger de
parâmetros de segmentos, nos Trigger de nível o círculo de disparo e o
ponto de accionamento do Trigger são recalculados durante cada execução
do programa. A perpendicular pelo ponto de disparo na pista (segmento)
define o ponto de comutação. No entanto não é calculado nenhum valor
percentual como nos Trigger de segmento. Neste tipo de Trigger, o sistema
avança sempre para o ponto de disparo programado e não para o ponto de
comutação.

1 Nível do Trigger

Fig.: Trigger de nível

Neste caso também se recomenda, após o deslocamento das pistas, voltar a


deslocar o Trigger para a pista (3D-OnSite) ou reprogramar.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 69 de 84


Os dois tipos de Trigger distinguem-se no comportamento durante a
passagem de voo. Um Trigger de nível (T3) não accionaria no exemplo
seguinte, visto que a pista realmente percorrida não iria penetrar o nível de
Trigger (P1 para P2 é um movimento PTP). Se P1 para P2 for um
movimento LIN, é utilizado um Trigger de parâmetro de segmento. Visto que
aqui é calculado um valor percentual para o Trigger, no qual o Trigger
dispara, o Trigger accionaria aprox. no ponto SP1. Devido a este
comportamento aconselha-se, sempre que possível, utilizar os Trigger
apenas nos segmentos LIN.

Fig.: Comportamento durante a passagem de voo

Por norma, os Trigger só são accionados uma vez por execução do


programa. Uma utilização múltipla de Trigger não é portanto possível.
Conforme ilustrado na figura seguinte, um Trigger só é accionado durante a
primeira passagem do nível de Trigger e não durante a segunda e terceira
vez. Um Trigger não é utilizado várias vezes.

1 Nível do Trigger
2 Trigger acciona
3 Trigger não acciona

Fig.: Execução múltipla de um Trigger

Pontos de Trigger/pontos de comutação só podem ser accionados no modo


STEP.

Por segmento podem ser utilizados no máximo 8 Trigger.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 70 de 84


Se um Trigger não accionar, o sistema transmite um erro, o comando
interrompe o programa e a agulha principal é fechada. Este comportamento
previne a contaminação da célula e da carroçaria com sujidade, através de
um GunOff Trigger não accionado.

Além disso, durante a utilização de Trigger é necessário ter atenção que a


sequência dos comandos no programa Teach esteja em conformidade com a
sequência geométrica dos pontos na pista. O controlo da sequência
geométrica pelo comando elimina erros que podem, por exemplo, ser
causados por uma programação defeituosa de pontos Trigger.
No programa seguinte, a sequência dos comandos no programa Teach
transmite a ideia de que o programa executará primeiro um GunOn e depois
um GunOff.

LIN(P1);
GUN(GUN1, GunOn, T1, trigger0);
GUN(GUN1, GunOff, T2, trigger1);
LIN(P2);

Se agora observarmos a posição geométrica dos pontos na pista, é possível


ver que primeiro será executado o GunOff (T2) e depois o GunOn (T1). Sem
um controlo da sequência geométrica isto conduziria a uma abertura
involuntária da agulha principal. Pelo controlo é todavia accionado um erro e
a agulha principal não é aberta.

Fig.: Sequência errada dos Trigger

A seguir novamente a ordem correcta dos pontos para o programa.

Fig.: Ordem correcta dos Trigger

Se os pontos de Trigger não se situarem na intersecção do segmento de


pista correcta, devido a um deslocamento posterior dos pontos da pista,
estes normalmente não accionarão. No entanto, para p. ex. prevenir a falta
de costuras completas, foi implementado um mecanismo no EcoRPC que
acciona, neste caso, o Trigger no ponto de partida e final do respectivo
segmento.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 71 de 84


Na figura "Deslocamento automático de pontos de comutação de Trigger" o
primeiro ponto de comutação do Trigger é deslocado da posição SP1 para
SP1_2 e o segundo ponto de comutação de Trigger é deslocado da posição
SP2 para SP2_2.

1 Segmento pertencente aos Trigger


2 Situação de partida
3 Situação após alteração

Fig.: Deslocamento automático de pontos de comutação de Trigger

Se a trajectória de deslocamento necessária de um ponto de Trigger


(para situar-se novamente no segmento necessário) exceder metade do
comprimento do segmento, o deslocamento não será executado, e em vez
disso é transmitido um erro.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 72 de 84


12.3 Tracking
12.3.1 Programas de Tracking
Nos programas de Tracking é importante que os pontos da pista e de Trigger
estejam programados no sistema de coordenadas.

1 Flange
2 Tool
3 Objecto
4 Sistema de coordenadas auxiliar A1
5 Sistema de coordenadas auxiliar A2
6 Mundo
7 Base
8 Sistema de coordenadas auxiliar A2
9 Sistema de coordenadas auxiliar A1
10 Matriz Link (dados da máquina)
11 Base (dados da máquina)

Fig.: Sistemas de coordenadas do comando

Nas instalações Linetracking o robô não dispõe do eixo 7. Este tem que
seguir o objecto com os eixos 1 até 6. O sistema Linetracking baseia-se na
característica que todos os pontos da pista e de Trigger estejam
programados nas coordenadas de objecto. Assim que o objecto se mover no
transportador, o sistema de coordenadas do objecto também se desloca, e
consequentemente os pontos com o objecto.

Nas instalações Railtracking o robô dispõe de um eixo 7. Este compensa


completamente o movimento do objecto com o eixo 7. O movimento dos
eixos 1 até 6 corresponde ao movimento de uma instalação Stop-and-Go.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 73 de 84


12.3.2 Seguimento do objecto

Ficheiros onde estão guardados os respectivos valores

(1) Configuração do comando (BCU)


(2) Tabela de atribuição de tipo para cada tipo
(3) Programa Teach
(4) Configuração do comando (BCU)

Antes da entrada na estação existe um iniciador (Data Check), a partir do


qual o EcoRPC (BCU) entrega o objecto. Se a parte processual estiver
pronta (carroçaria anterior foi pintada até ao fim), é possível começar com os
preparativos para a actual carroçaria entregue.
Após o iniciador Data Check existe ainda um segundo iniciador
(Start de zonas/Part Detect), a partir do qual o objecto é seguido no BCU. A
partir deste ponto o objecto é entregue à parte móvel, se os preparativos da
parte processual estiverem terminados nesta fase. Se a parte processual
ainda se encontrar na fase de preparação, a entrega do objecto é retida até
à conclusão dos preparativos.
Assim que o objecto for entregue à parte móvel é iniciada a execução do
respectivo programa de movimentação e o robô avança, por exemplo, para a
posição preliminar. Neste programa a parte móvel avança, por norma, para
um comando WAIT_CONVEYOR ou aguarda pelo mesmo.

Se os preparativos da parte processual não estiverem concluídos, assim que


o objecto alcançar a ConveyorStopPosition, o transportador é parado pelo
EcoRPC através do CLP. A autorização de transporte é bloqueada, até o
processo ter concluído os seus preparativos.

O transportado é novamente desbloqueado assim que o processo estiver


pronto.
Assim que o objecto atingir o valor definido no ponto WAIT_CONVEYOR, o
sistema executa o programa de movimentação em espera. Assim que o
objecto atingir o ponto TRACKINGENDPOSITION, a carroçaria é retirada da
célula pelo EcoRPC (BCU).
A distância entre a posição ConveyorStopPosition e WAIT_CONVEYOR tem
que ser maior do que o trajecto que o transportador necessita para parar.

Para criar um programa Teach-In é importante conhecer o ponto


TRACKINGSTARTPOSITION. A distância deste ponto até ao ponto onde
deve ser iniciada a pintura é importante para o comando
WAIT_CONVEYOR. A determinação deste valor é descrita no capítulo
seguinte.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 74 de 84


O segundo ponto importante é o ponto onde o CLP pára o transportador,
assim que os preparativos do processo estiverem concluídos. O ponto de
partida do programa de pintura não pode ser neste ponto.
Estes pontos devem ser definidos e documentados pelo programador Teach-
In, após consultar o programador CLP.

12.3.2.1 Determinação teórica e prática do valor WAIT_CONVEYOR

Teoria:

Este comando é utilizado em instalações Rail e Linetracking para sincronizar


o início do programa (primeiro módulo de pintura) com a posição da
carroçaria.

Na entrada da cabina encontra-se um iniciador (BERO), o qual foi definido a


determinada altura pelo início Skid. Este é o ponto de sincronização: Psin.
A partir deste ponto é conhecida a posição da carroçaria (e Skid).
O CLP recebe este sinal e transmite-o, com um atraso, para o EcoRPC. Este
atraso é específico das instalações dos CLP e é utilizado para a ligação
lógica técnica de segurança (p. ex. se o iniciador 5s estiver definido, tem que
ser o Skid e o sinal é transmitido para o EcoRPC).

O ponto no qual é realizada a transmissão do sinal é designado por PRPC.


O trajecto que o transportador percorre de Psin até PRPC é designado por dsps.
Durante a programação do primeiro módulo de pintura, a carroçaria e o Skid
encontram-se numa posição definida, que é o ponto de partida (início Skid)
Pstart.

O valor WAIT_CONVEYOR é calculado da seguinte forma:

Distância Bero até ao ponto de partida menos dsps


Isto corresponde à distância entre a transmissão do sinal para o EcoRPC e o
ponto de partida.
Fórmula: WAIT_CONVEYOR = (Pstart –Psin)-dsps = Pstart-PRPC

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 75 de 84


Prática:

Marcar o início do Skid na posição Teach do primeiro módulo. Posicionar o


Skid, com carroçaria, à frente do BERO na entrada. Seleccionar o programa
principal.
Definir para WAIT_CONVEYOR um valor completo, que seja maior do que o
valor a determinar (mais do que entre Bero e a posição Skid marcada
durante o primeiro arranque do módulo).

Enquanto a carroçaria é transportada, na Tracking Userpage é indicada uma


contagem decrescente. Parar agora o transportador.
O restante valor da contagem decrescente tem que ser agora a distância
entre a actual posição Skid e a posição Skid marcada durante o primeiro
arranque do módulo. Medir esta distância com uma fita métrica. A diferença
destes dois valores é a diferença entre o valor WAIT_CONVEYOR correcto e
o valor WAIT_CONVEYOR registado no programa principal.

Corrigir este valor.

1 Skid
2 Iniciador (BERO)
3 Transmissão do sinal para EcoRPC
4 Skid durante o arranque do módulo

Fig.: Determinação do valor WAIT_CONVEYOR

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 76 de 84


12.3.3 Determinação da coordenada X do objecto durante o Tracking

Nas instalações Linetracking, o seguimento do objecto de pintura é realizado


através de um sistema de coordenadas de objecto móvel, ou seja, os pontos
Teach permanecem iguais enquanto o respectivo sistema de coordenadas
de referência se encontra em movimento, numa posição síncrona em relação
ao transportador.

O objecto é apenas definido uma vez no programa principal e tem que ser
definido com muita precisão onde este se situa nos dados CAD e/ou nas
fichas técnicas (maioritariamente no centro do eixo dianteiro).

Por norma o objecto é medido. Para este trabalho é necessário um


determinado número de pontos de referência no objecto. As coordenadas
destas referências estão definidas num sistema de coordenadas local e
referentes ao objecto. Assim sendo, recomenda-se que a coordenada X, da
origem deste sistema de coordenadas, seja marcada no sistema conforme
exemplificado a seguir:

Uma referência (p. ex. orifício reflector) tem a coordenada X –577. Isto
significa que a origem do sistema de coordenadas da carroçaria se encontra
577 mm mais na direcção positiva (sistema de coordenadas do objecto) ou
na direcção negativa (sistema de coordenadas de mundo). Percorrer este
trajecto com o TCP e marcar a posição com uma linha no objecto. Este é o
objecto X=0.

Transportar a carroçaria para a posição onde pretende programar o primeiro


módulo.

Avançar com um TCP definido para a linha marcada e ler a coordenada X


nas coordenadas mundo da indicação POS do PHG. Este é o valor X para o
objecto necessário no programa principal.

A partir de agora o objecto situar-se-á, durante todo o processo, na posição


correcta.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 77 de 84


12.3.4 Deslocamento do arranque do programa durante o Tracking

Por vezes acontece que, após a programação de vários módulos, é


identificado que uma parte do objecto/da carroçaria não é alcançada. Ou
acontece também que se identifica que o tempo de ciclo pode ser reduzido,
se a pintura for iniciada mais tarde, porque o robô recupera em relação à
carroçaria. Ou o programador pretende eliminar tempos de espera
desnecessários nos e entre os módulos. Para estes casos é necessário um
deslocamento do arranque do programa.

Isto é realizado em 3 passos:

1. Alteração do valor WAIT_CONVEYOR com a dimensão desejada.


Para um arranque mais cedo deve reduzir-se este valor e para um
arranque mais tardio deve aumentar-se este valor. Desta forma o
objecto situar-se-á na nova posição, no momento do arranque do
programa.

2. Alteração da coordenada X do objecto com a mesma dimensão como


WAIT_CONVEYOR. Para um arranque mais cedo deve reduzir-se
este valor e para um arranque mais tardio deve aumentar-se este
valor. Desta forma todos os pontos de movimentação voltam a situar-
se no objecto.

3. Adaptação de todos os valores para WAIT_PAINTPOSITION (posição


de espera para uma posição específica do objecto nos e entre os
módulos de pintura).
IMPORTANTE: para um arranque mais cedo deve aumentar-se e para
um arranque mais tardio deve reduzir-se o valor, ou seja, exactamente
ao contrário do WAIT_CONVEYOR e Object. Isto pode implicar que
alguns valores WAIT_PAINTPOSITION fiquem negativos. Visto isto
não ser permitido, eles têm que ser apagados!

Para Railtracking (Tracking de 7 eixos) é adicionalmente necessário deslocar


todos os valores do eixo 7 com a mesma dimensão como
WAIT_CONVEYOR (marcar, de preferência em 3DOnSite, na lista de
variáveis a coluna do eixo 7 e registar o Offset pretendido!).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 78 de 84


12.3.5 Regras e comandos proibidos

- Os comandos TRACKING(On), TRACKING(Off),


TRACKING(Finished), WAIT_CONVEYOR() só podem ser utilizados
uma vez no programa principal.
- O sistema de coordenadas tem que ser definido no programa principal
com o comando SETOBJECT, antes do comando TRACKING(On). Se
o comando SETOBJECT for utilizado a seguir ao comando
TRACKING(On), têm que ser utilizados os mesmos dados de objecto
como no programa principal.
- O comando WAIT_PAINTPOSITION encontra-se maioritariamente no
programa principal.
- Os pontos que devem ser deslocados no Tracking (Rail/Line) têm que
ser programados no sistema de coordenadas do objecto.

Reacção do comando à utilização de PTP e pontos de eixo no Tracking.

World Object Axis


RailTracking

PTP Error Rel / Warning Rel


Lin/Circ Error Rel Axis-> Obj / Warning

LineTracking

PTP Error Rel / Warning Error


Lin/Circ Error Rel Error

Rel significa que o ponto é deslocado relativamente.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 79 de 84


12.3.6 Criação de um programa Teach-In

Antes de ser possível executar um programa Tracking, primeiro é necessário


transferir um objecto para o comando com a macro SETOBJECT. Este
objecto é depois seguido com a função de Tracking activada. Com a ajuda
da definição do objecto podem ser corrigidas rotações e deslocamentos do
objecto, em relação ao robô.
De seguida o objecto é transportado para dentro da cabina, até o primeiro
módulo (sujeito a pintura) alcançar a área de trabalho do robô. A distância
entre o ponto, no qual o CLP envia o sinal Part Detect, e a actual posição do
objecto tem que ser programada com a macro WAIT_CONVEYOR.
No programa de exemplo o objecto foi transportado 2000 mm para dentro.
O WAIT_CONVEYOR(2000) é programado em conformidade. A partir deste
ponto o robô deve seguir o objecto. Para esse efeito é activado o Tracking
com o comando TRACKING(ON). CALL"FRENTE"() chama agora o módulo
de pintura FRENTE. Aqui estão contidos os comandos de processo e
tecnológicos para o objecto sujeito a pintura.
Para a programação do segundo módulo (CENTRO), o objecto é agora
transportado até o segundo módulo se encontrar completamente na área de
trabalho do robô. Preferencialmente o segundo módulo deve ser iniciado
imediatamente a seguir à conclusão do primeiro. O trajecto de transporte
percorrido, durante o primeiro módulo, pode ser determinado através da
cronometragem do tempo do módulo (Trajecto=Tempo x Velocidade de
transporte).
A distância entre o valor de transporte, no qual o primeiro módulo foi iniciado,
e o novo valor de transporte é utilizada no comando
WAIT_PAINTPOSITION. No programa de exemplo, o objecto foi
transportado para dentro da cabina em 500 mm adicionais. O comando
WAIT_PAINTPOSITION(500) é agora programado em conformidade. Visto
que o robô no modo automático teria realizado este seguimento adicional de
500 mm (após o processamento do módulo para a FRENTE), através da
User-Page Tracking é necessário definir o mesmo valor (500) como posição
actual de Tracking para o robô. Agora é possível programar o segundo
móvel. Com o mesmo procedimento são agora programados todos os
restantes módulos de pintura. Por fim é necessário terminar no programa
principal o Tracking com as macros TRACKING(OFF) e
TRACKING(Finished). De seguida o robô é deslocado para a posição inicial
com o comando CALL"HOME"(). Por fim é necessário voltar a definir o valor
de Tracking em 0, através da User-Page Tracking.

Informação complementar:
O comando SETOBJECT é fundamental para a posição correcta do
programa. O programa será sempre executado no mesmo local,
independentemente do WAIT_CONVEYOR. Este comando é responsável
pela sincronização da carroçaria e do programa!

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 80 de 84


12.3.6.1 Programa principal

RSELECT("R11")

SETTOOL(DEFROBTOOL)
SETOBJECT(BODY1)
VEL( VEL1000 )
ACC( ACC3000 )

PTP(STARTPOS)
WAIT_CONVEYOR(2000)
TRACKING(On)

CALL VORNE()
WAIT_PAINTPOSITION (500)
CALL CENTRO()

WAIT_PAINTPOSITION (1000)
CALL TRASEIRA()

TRACKING(Off)
TRACKING(Finished)

CALL HOME()

RDESELECT("R11")

12.3.6.2 Módulo de pintura FRENTE

SELECT("R11")

VEL(VEL1000)
ACC(ACC3000)

OVERLAP( NODEC100)

LIN(P2)
SETBRUSH(GUN1, 5, P10, T10)
GUN(GUN1, GunOn, P11, T11)
LIN(P3)
LIN(P4)
LIN(P5)
LIN(P6)
GUN(GUN1, GunOff, P12, T12)
LIN(P7)

RDESELECT("R11")

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 81 de 84


12.4 Deslocamento principal e avanço

Este capítulo tem o intuito de explicar a diferença entre os termos


"deslocamento principal" e "avanço".
O deslocamento principal é a parte do comando que é responsável pelo
movimento do robô (esta parte transmite os dados de posição para os
accionamentos). O avanço é uma parte do comando que trabalha para o
deslocamento principal. Este trabalha de forma adiantada ao deslocamento
principal, lê os comandos (macro) e executa cálculos relativamente ao
planeamento da pista.
Se um programa for executado no modo "Continuous", o comando inicia a
sua execução na linha 0. Neste momento de partida, o avanço e o
deslocamento principal ainda se situam na mesma posição. No passo
seguinte do comando, o deslocamento principal executa a linha 1 e o avanço
executa a linha 1 e a linha 2. No passo seguinte, o deslocamento principal
alcança a linha 2 e procede à sua execução, enquanto o avanço já está a
processar a linha 3 e 4. Segundo este esquema, o avanço vai-se adiantando
em relação ao deslocamento principal. Isto acontece até o adiantamento do
avanço ultrapassar um limite parametrizado no comando. A partir deste
ponto, o avanço mantém a distância em relação ao deslocamento principal
no valor parametrizado.

Linha 0
Linha 1 LIN( TH_1 )
Linha 2 LIN( TH_2 )
Linha 3 LIN( TH_3 )
Linha 4 LIN( TH_4 )
Linha 5 LIN( TH_5 )
Linha 6 LIN( TH_6 )
Linha 7 LIN( TH_7 )
Linha 8 LIN( TH_8 )
Linha 9 LIN( TH_9 )
Linha 10 LIN( TH_10 )

Na realidade um comando de movimentação não pode ser executado num


ciclo do deslocamento principal, sendo necessários 100 ou mais ciclos. Isto
provoca que o avanço atinja o adiantamento parametrizado
(p. ex. 50 comandos) passado pouco tempo (o deslocamento principal
encontra-se eventualmente ainda no processamento do primeiro ou do
segundo comando).
Relativamente ao exemplo supracitado isto significa que a posição do
deslocamento principal é idêntica à posição do robô no espaço cartesiano,
que o robô atingiu realmente o ponto TH 2, mas que o avanço já procedeu à
leitura do ponto TH_10 na linha 10.
Se os programas fossem compostos por apenas pontos, estes pormenores
do comando não teriam qualquer importância para o utilizador, visto que os
pontos (movimentos) pertencem ao tipo de comandos que são lidos no
avanço (todos os comandos são) e depois executados no deslocamento
principal (nem todos os comandos são).

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 82 de 84


No entanto, existem dois tipos de comandos principais. Existem comandos
que são executados no avanço e existem comandos onde é possível
seleccionar manualmente quando o comando é executado (no avanço ou no
deslocamento principal).
Especialmente no que se refere ao último, é importante ter noção sobre o
comportamento do comando, de modo a poder decidir correctamente sobre
a aplicação dos comandos. De forma geral pode-se dizer que nos comandos
onde o robô deve deslocar-se para uma posição específica no espaço, é
necessário um processamento no deslocamento principal: no caso de
comandos que devem ser processados o mais cedo possível, é no entanto
necessário um processamento no modo de avanço.

© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 83 de 84


© Dürr 2008 • G077PT03 EcoTalk para EcoRPC • Página 84 de 84

Você também pode gostar