Você está na página 1de 657

3HAC 5770-1

Para BaseWare OS 3.2

Tipos e Sistema de Dados

DataTypes do Sistema e Rotinas

Instruções

Funções

Índice
As informações contidas neste documento estão sujeitas a alterações sem aviso prévio e não deverão ser inter-
pretadas como um compromisso da ABB Robotics AB. A ABB Robotics AB não assume qualquer responsabil-
idade por eventuais erros que possam surgir neste documento.

Em nenum caso deverá a ABB Robotics AB ser responsabilizada por danos casuais ou de consequência que
surjam a partir da utilização deste documento, ou do software e hardware aqui descritos.

Este documento ou parte dele não poderá ser copiado ou reproduzido sem permissão, por escrito, da ABB Prod-
ucts AB e não poderá ser cedido a uma terceira parte, nem ser utilizado para qualquer propósito não autorizado.
A transgressão será motivo de processo.

Cópias adicionais deste documento poderão ser obtidas a partir da ABB Robotics AB com seu pagamento à
vista.

© ABB Robotics AB

Número do artigo: 3HAC 5770-1


Emissão: Para BaseWare OS 3.2

ABB Robotics AB
S-721 68 Västerås
Suécia
Tipos de dados
CONTENTS

aiotrigg Condição de disparo de E/S analógica


bool Valores lógicos
byte Valores decimais 0 - 255
clock Medição de tempo
confdata Dados de configuração do robô
dionum Valores digitais 0 - 1
errnum Numeração de erros
extjoint Posição dos eixos externos
intnum Identificação de interrupção
iodev Canais seriais e arquivos
jointtarget Dado de posição do eixo
load data Dado de carga
loadsession Sessão de carregamento do programa
mecunit Unidade Mecânica
motsetdata Dados de ajustes de movimento
num Valores numéricos (registradores)
orient Orientação
o_jointtarget Dados de posição de eixo original
o_robtarget Dado da posição original
pos Posições (somente X, Y e Z)
pose Transformações de coordenadas
progdisp Deslocamento do programa
robjoint Posição “joint” dos eixos do robô
robtarget Dado de posição
shapedata Dados da forma da zona global
signalxx Sinais digitais e analógicos
speeddata Dado de velocidade
string Strings
symnum Número simbólico
taskid Identificação de tarefa
testsignal Sinal de teste
tooldata Dados da ferramenta
tpnum Número da janela da Unidade de programação
triggdata Eventos de posicionamento - trigg
tunetype Servo tune type
wobjdata Dado do objeto de trabalho

Data Types do Sistema e Rotinas 1-1


Tipos de dados

wzstationary Dados da zona global estacionária


wztemporary Dados da zona global temporária
zonedata Dados de zona

1-2 Data Types do Sistema e Rotinas


Tipos de dados aiotrigg

aiotriggCondição de disparo de E/S analógica

aiotrigg (Disparo de E/S analógica) é usado para definir a condição na qual gerar uma
interrupção para um sinal de entrada ou saída analógico.

Descrição
Os dados do tipo aiotrigg definem a maneira como um limiar baixo e um limiar alto
serão usados para determinar se o valor lógico de um sinal analógico satisfaz uma con-
dição para gerar uma interrupção.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAI \Single, ai1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Determina que uma interrupção ocorra na primeira vez que o valor lógico do
sinal de entrada analógica ai1 estiver entre 0,5 e 1,5. Em seguida, é feita uma
chamada à rotina de interceptação iroutine1.

Dados predefinidos
As seguintes constantes simbólicas do tipo de dados aiotrigg são predefinidas,
podendo ser usadas ao especificar uma condição para as instruções ISignalAI e ISig-
nalAO.

Valor Constante simbólica Comentário

1 AIO_ABOVE_HIGH O sinal irá gerar interrupções caso esteja acima do valor alto espe-
cificado

2 AIO_BELOW_HIGH O sinal irá gerar interrupções caso esteja abaixo do valor alto espe-
cificado

3 AIO_ABOVE_LOW O sinal irá gerar interrupções caso esteja acima do valor baixo
especificado

4 AIO_BELOW_LOW O sinal irá gerar interrupções caso esteja abaixo do valor baixo
especificado

5 AIO_BETWEEN O sinal irá gerar interrupções caso esteja entre os valores baixo e
alto especificados

6 AIO_OUTSIDE O sinal irá gerar interrupções caso esteja abaixo do valor baixo
especificado ou acima do valor alto especificado

7 AIO_ALWAYS O sinal irá sempre gerar interrupções

Data Types do Sistema e Rotinas 1-aiotrigg-3


aiotrigg Tipos de dados

Características
aiotrigg é um tipo de dados pseudônimo de num e, conseqüentemente, herda suas cara-
cterísticas.

Informações relacionadas
Descrito em:
Interrupção de um sinal de entrada analógico Instruções - ISignalAI
Interrupção de um sinal de saída analógico Instruções - ISignalAO
Tipos de dados em geral, tipos de
dados pseudônimos Características básicas -
Tipos de dados

1-aiotrigg-4 Data Types do Sistema e Rotinas


Tipos de dados bool

bool Valores lógicos

Bool é usado para valores lógicos (true/false).

Descrição
O valor do dado tipo booleano pode ser tanto TRUE quanto FALSE.

Exemplos
flag1 := TRUE;

flag é associado ao valor TRUE.

VAR bool highvalue;


VAR num reg1;
.
highvalue := reg1 > 100;

highvalue é associado ao valor TRUE se reg1 for maior que 100; senão, FALSE
será associado.

IF highvalue Set do1;

O sinal do1 é setado se highvalue é TRUE.

highvalue := reg1 > 100;


mediumvalue := reg1 > 20 AND NOT highvalue;

mediumvalue é associado ao valor TRUE se reg1 está entre 20 e 100.

Informação relacionada
Descrito em:
Expressões lógicas Características Básicas - Expressões
Operações usando valores lógicos Características Básicas - Expressões

Data Types do Sistema e Rotinas 1-bool-5


bool Tipos de dados

1-bool-6 Data Types do Sistema e Rotinas


Tipos de dados byte

byte Valores decimais 0 - 255

Byte é usado para valores decimais (0 - 255) conforme a faixa de um byte.

Este tipo de dado é usado em conjunto com instruções e funções que manuseiam as
manipulações de bits e convertem características.

Descrição
Os dados de tipo byte representam um valor de byte decimal.

Exemplos
CONST num parity_bit := 8;

VAR byte data1 := 130;

Definição de uma variável data1 com um valor decimal 130.

BitClear data1, parity_bit;

Número de bit 8 (parity_bit) na variável data1 será fixado em 0, ex. o conteúdo


da variável data1 será trocado de 130 para 2 (representação decimal).

Manuseio de erro
Se um argumento do tipo byte tiver um valor que não esteja na faixa entre 0 e 255, é
replicado um erro no programa de execução.

Características
Byte é um tipo de dado pseudônimo para num, que herda as suas características.

Informações relacionadas
Descritas em:
Tipos de dados pseudônimo Características Básicas- Tipos de
Dados
Funções bit Sumário RAPID - Funções Bit

Data Types do Sistema e Rotinas 1-byte-7


byte Tipos de dados

1-byte-8 Data Types do Sistema e Rotinas


Tipos de dados clock

clock Medição de tempo

Clock é usado para medição de tempo. Um clock funciona como um relógio usado para
cronometrar.

Descrição
Dado do tipo clock armazena uma medição de tempo em segundos e tem uma
resolução de 0.01 segundos.

Exemplo
VAR clock clock1;

ClkReset clock1;

O clock, clock1, é declarado e resetado. Antes de usar ClkReset, ClkStart, ClkStop e


ClkRead, você deve declarar uma variável do tipo clock no seu programa.

Limitações
O tempo máximo que pode ser armazenado em uma variável clock é aproximadamente
49 dias (4,294,967 segundos). As instruções ClkStart, ClkStop e ClkRead registram
overflows em um evento que possa ocorrer.

Um clock deve ser declarado como uma variável tipo VAR, e não como uma variável
tipo persistente.

Características
Clock é um tipo de dado non-value e não pode ser usado em operações de valores ori-
entados.

Informação relacionada
Descrito em:
Sumário do Tempo e Instruções de Dado Sumário RAPID - Sistema & Tempo
Características de tipos de dados non-value Características Básicas - Tipos de
dados (Data types)

Data Types do Sistema e Rotinas 1-clock-9


clock Tipos de dados

1-clock-10 Data Types do Sistema e Rotinas


Tipos de dados confdata

confdata Dados de configuração do robô

Confdata é usado para definir configurações dos eixos do robô.

Descrição
Todas posições do robô são definidas e armazenadas usando coordenadas retangulares.
Enquanto calcula as posições correspondentes dos eixos, normalmente existirão duas
ou mais soluções possíveis. Isto significa que o robô está apto a executar a mesma
posição, isto é, a ferramenta está na mesma posição e com a mesma orientação, em di-
ferentes posições ou configurações dos eixos do robô.

Alguns tipos de robô usam métodos numéricos iterativos para determinar as posições
dos eixos do robô. Nesses casos, os parâmetros de configuração podem ser usados para
definir bons valores iniciais para as junções, para serem usados pelo procedimento iter-
ativo.

Para uma indicação não ambígua dessas possíveis configurações, a configuração do


robô é especificada usando quatro valores de eixos. Para um eixo rotativo, esses val-
ores definem o quadrante atual do eixo do robô. Os quadrantes são numerados 0, 1, 2,
etc. (eles também podem ser negativos). O número do quadrante é conectado ao ângulo
atual dos eixos. Para cada eixo, quadrante 0 é a revolução do primeiro quarto, 0-90°,
em uma direção positiva da posição zero; quadrante 1 é a próxima revolução, 90-180°,
etc. Quadrante -1 é a revolução 0° - (-90°), etc. (veja Figura 1).

-4 -1 0 3

-3 -2 1 2

Figura 1 Os quadrantes de configuração do eixo 6.

Para um eixo linear, o valor define um intervalo métrico para o eixo do robô. Para cada
eixo, o valor 0 significa uma posição entre 0 e 1 metro, 1 significa uma posição entre
1 e 2 metros. Para valores negativos, -1 significa uma posição entre -1 e 0 metro, etc.
(veja a Figura 2).

Manual de Referência Rápida 7-confdata-11


confdata Tipos de dados

-3 -2 -1 0 1 2 3
x (m)
-3 -2 -1 0 1 2 Valor de configuração
Figura 2 Valores de configuração para um eixo linear

Dados de configuração do robô para IRB540, 640


É usado somente o parâmetro de configuração cf6.

Dados de configuração do robô para IRB1400, 2400, 3400, 4400, 6400


São usados somente os três parâmetros de configuração cf1, cf4 e cf6.

Dados de configuração do robô para IRB5400


São usados todos os quatro paraâmetros de configuração. cf1, cf4, cf6 para os eixos 1,
4 e 6 respectivamente e cfx para o eixo 5.

Dados de configuração do robô para 6400C


O IRB 6400 requer uma forma ligeiramente diferente para designar sem ambiguidade
a configuração de um robô. A diferença está na interpretação do confdata cf1.

cf1 é usado para selecionar uma das duas configurações possíveis dos eixos principais
(eixos 1, 2 e 3):

- cf1 = 0 é a configuração para a frente


- cf1 = 1 é a configuração para trás.

A Figura 3 mostra um exemplo de uma configuração para a frente e de uma


configuração para trás dando a mesma posição e orientação.

7-confdata-12 Manual de Referência Rápida


Tipos de dados confdata

PARA A FRENTE,
cf1 = 0
PARA TRÁS,
cf1 = 1.

Figura 3 A mesma posição e orientação com duas configurações de eixos principais diferentes.

A configuração para a frente é a parte frontal da área de trabalho do robô com o braço
apontado para a frente. A configuração para trás é a peça de serviço da área de trabalho
com o braço apontado para trás.

Dados de configuração do robô para IRB5404, 5406


Os robôs possuem dois eixos de rotação (braços 1 e 2) e um eixo linear (braço 3).

cf1 é usado para o eixo rotativo 1

cfx é usado para o eixo rotativo 2

cf4 e cf6 não são usados

Dados de configuração do robô para IRB5413, 5414, 5423


Os robôs possuem dois eixos lineares (braços 1 e 2) e um ou dois eixos rotativos
(braços 4 e 5) (Braço 3 travado)

cf1 é usado para o eixo linear 1

cfx é usado para o eixo linear 2

cf4 é usado para o eixo rotativo 4

cf6 não é usado

Manual de Referência Rápida 7-confdata-13


confdata Tipos de dados

Dados de configuração do robô para IRB840


O robô possui três eixos lineares (braços 1, 2 e 3) e um eixo rotativo (braço 4)

cf1 é usado para o eixo linear 1

cfx é usado para o eixo linear 2

cf4 é usado para o eixo rotativo 4

cf6 não é usado

Devido à estrutura basicamente linear do robô, a definição correta dos parâmetros de


configuração c1, cx é de pouca importância.

Componentes
cf1 Tipo de dado: num

Eixo rotativo:

O quadrante atual do eixo 1, expresso como valor positivo ou negativo.

Eixo linear:

O intervalo métrico atual do eixo 1, expresso como valor positivo ou negativo.

cf4 Tipo de dado: num

Eixo rotativo:

O quadrante atual do eixo 4, expresso como valor positivo ou negativo.

Eixo linear:

O intervalo métrico atual do eixo 4, expresso como valor positivo ou negativo.

cf6 Tipo de dado: num

Eixo rotativo:

O quadrante atual do eixo 6, expresso como valor positivo ou negativo.

Eixo linear:

O intervalo métrico atual do eixo 6, expresso como valor positivo ou negativo.

cfx Tipo de dado: num

Eixo rotativo:

7-confdata-14 Manual de Referência Rápida


Tipos de dados confdata

O quadrante atual do eixo 5 para o robô IRB5400, expresso como valor positivo
ou negativo. Para outros robôs, usando o quadrante atual do eixo 2, expresso
como valor positivo ou negativo.

Eixo linear:

O intervalo métrico atual do eixo 2, expresso como valor positivo ou negativo.

Exemplo
VAR confdata conf15 := [1, -1, 0, 0]

Uma configuração do robô conf15 é definida como abaixo:

- A configuração do eixo 1 é o quadrante 1, por exemplo, 90-180o.


- A configuração do eixo 4 é o quadrante -1, por exemplo, 0-(-90o).
- A configuração do eixo 6 é o quadrante 0, por exemplo, 0 - 90o.
- A configuração do eixo 5 é o quadrante 0, por exemplo, 0 - 90o

Estrutura
< dataobject of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >

Informação relacionada
Descrito em:
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas
Tratamento de dados de configuração Movimento e Princípios de E/S - Con-
figuração do Robô

Manual de Referência Rápida 7-confdata-15


confdata Tipos de dados

7-confdata-16 Manual de Referência Rápida


Tipos de dados dionum

dionum Valores digitais 0 - 1

Dionum (digital input output numeric) é usado para valores digitais (0 ou 1).

Este tipo de dado é usado em conjunto com instruções e funções que tratem de sinais
de entradas ou saídas digitais.

Descrição
Dado do tipo dionum representa um valor digital 0 ou 1.

Exemplos
CONST dionum close := 1;

Definição de uma constante close com valor igual a 1.

SetDO grip1, close;

O sinal grip1 é setado para close, isto é, 1.

Tratamento de erros
Se um argumento do tipo dionum tiver um valor que não seja 0 ou 1, um erro será indi-
cado na execução do programa.

Características
Dionum é suposto um tipo de dado num e conseqüentemente tem suas características.

Informação relacionada
Descrito em:
Sumário de instruções entrada/saída Sumário RAPID -
Sinais de Entrada e Saída
Configuração de E/S Guia do Usuário -
Paramêtros do Sistema
Tipos de dados suposto Características Básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-dionum-17


dionum Tipos de dados

1-dionum-18 Data Types do Sistema e Rotinas


Tipos de dados errnum

errnum Numeração de erros

Errnum é usado para descrever todos os erros recuperáveis (não fatais) que ocorram
durante a execução do programa, como uma divisão por zero.

Descrição
Se o robô detecta um erro durante a execução do programa, este pode ser processado
por um tratamento de erros da rotina. Exemplos de erros são valores muito altos divi-
didos por zero. A variável do sistema ERRNO, de tipo errnum, é associada a diferentes
valores dependendo da natureza do erro. O tratamento de erros talvez esteja apto a cor-
rigir um erro lendo esta variável e então a execução do programa pode continuar de
maneira correta.

Um erro pode também ser criado no programa usando a instrução RAISE. Este tipo de
erro particular pode ser detetado no tratamento de erros especificando um número de
erro (entre 1 e 90 ou escolhido com a instrução BookErrNo) como um argumento de
RAISE.

Exemplos
reg1 := reg2 / reg3;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg3 := 1;
RETRY;
ENDIF

Se reg3 = 0, o robô detecta um erro quando for fazer a divisão. Este erro,
entretanto, pode ser detectado e corrigido associando reg3 ao valor 1. Seguindo
isto, a divisão pode ser executada novamente e a execução do programa pode
continuar.

CONST errnum machine_error := 1;


.
IF di1=0 RAISE machine_error;
.
ERROR
IF ERRNO=machine_error RAISE;

Um erro ocorre em uma máquina (detectado pelo significado do sinal de entrada


di1). Um salto é dado para o tratamento de erros na rotina, a qual chama o trata-
mento de erros de uma rotina de chamada onde o erro talvez possa ser corrigido.
A constante, machine_error, é usada para fazer com que o tratamento de erros
saiba exatamente qual tipo de erro tenha ocorrido.

Data Types do Sistema e Rotinas 1-errnum-19


errnum Tipos de dados

Dados pré-definidos
A variável do sistema ERRNO pode ser usada para ler a última mensagem de erro que
ocorreu. Um número de constantes pré-definidas pode ser usado para determinar o tipo
de erro que tenha ocorrido.

Nome Causa do erro


ERR_ALRDYCNT A variável de interrupção já está ligada à rotina TRAP
ERR_ARGDUPCND Mais que um argumento condicional presente para
o mesmo parâmetro
ERR_ARGNAME O argumento é uma expressão, não presente ou do tipo
interruptor quando executando ArgName
ERR_ARGNOTPER O argumento não é uma referência persistente
ERR_ARGNOTVAR O argumento não é uma referência variável
ERR_AXIS_ACT O eixo não está ativo
ERR_AXIS_IND O eixo não está independente
ERR_AXIS_MOVING O eixo está em movimento
ERR_AXIS_PAR O eixo do parâmetro na instrução TesSign eSetCurrRef
está errado.
ERR_CALLIO_INTER Se um pedido IOEnable ou IODisable é interrompido
por outro pedido à mesma unidade
ERR_CALLPROC Erro de chamado de procedimento (nãoprocedimento)
no tempo de execução (ligação tardia)
ERR_CNTNOTVAR CONNECT “target” não é uma referência variável

ERR_CNV_NOT_ACT O portador não está ativado.

ERR_CNV_CONNECT A instrução WaitWobj já está ativa.

ERR_CNV_DROPPED O objeto que a instrução WaitWobj estava


aguardando foi largado.

ERR_DEV_MAXTIME Limite de tempo quando executando instruções ReadBin,


ReadNum ou ReadStr
ERR_DIVZERO Divisão por zero
ERR_EXCRTYMAX Número máximo de tentativas executadas
ERR_EXECPHR Uma tentativa foi feita para executar uma instrução
usando um placeholder
ERR_FILEACC Um arquivo é acessado incorretamente
ERR_FILEOPEN Um arquivo não pode ser aberto
ERR_FILNOTFND Arquivo não encontrado
ERR_FNCNORET Valor sem retorno
ERR_FRAME Impossível calcular novo frame
ERR_ILLDIM Dimensão incorreta
ERR_ILLQUAT Tentativa de usar orientação ilegal (quaternion)
ERR_ILLRAISE Número de erro no RAISE fora da área

1-errnum-20 Data Types do Sistema e Rotinas


Tipos de dados errnum

ERR_INOMAX Não existem mais números de interrupção disponíveis


ERR_IODISABLE Limite de tempo quando executando IODisable
ERR_IOENABLE Limite de tempo quando executando IOEnable
ERR_IOERROR Erro de E/S da instrução Save
ERR_LOADED O módulo do programa já está carregado
ERR_LOADID_FATAL Somente uso interno em LoadId
ERR_LOADID_RETRY Somente uso interno em LoadId
ERR_MAXINTVAL O valor inteiro é muito grande
ERR_MODULE Nome de módulo incorreto na instrução Save
ERR_NAME_INVALID Se o nome da unidade não existe ou a unidade não tem
permissão para ser desativada
ERR_NEGARG Argumento negativo não é permitido
ERR_NOTARR Dado não é um caracter
ERR_NOTEQDIM A dimensão do caracter usada ao chamar a rotina não
coincide com seus parâmetros
ERR_NOTINTVAL Não é um valor inteiro
ERR_NOTPRES Um parâmetro é usado, apesar do fato que o argumento
correspondente não foi usado na rotina de chamado
ERR_OUTOFBND O índice do caracter está fora dos limites permitidos
ERR_PATH Caminho de destino ausente na instrução Save
ERR_PATHDIST Distância de recuperação muito longa para a instrução
StartMove
ERR_PID_MOVESTOP Somente uso interno em LoadId
ERR_PID_RAISE_PP Erro a partir de ParIdRobValid ou ParIdPosValid
ERR_RANYBIN_EOF Fim de arquivo detectado antes de todos os bytes serem
lidos na instrução ReadAnyBin
ERR_RCVDATA Foi feita uma tentativa para ler um dado não numérico
com ReadNum
ERR_REFUNKDAT Referência a dados inteiros desconhecidos
ERR_REFUNKFUN Referência a uma função desconhecida
ERR_REFUNKPRC Referência a um procedimento desconhecido no
tempo de ligação ou no tempo de execução (ligação
tardia)
ERR_REFUNKTRP Referência a um desvio desconhecido
ERR_SC_WRITE Erro durante comunicação com computador externo
ERR_SIGSUPSEARCH O sinal já é um valor positivo no início
do processo de busca
ERR_STEP_PAR Parâmetro Step em SetCurrRef está errado
ERR_STRTOOLNG O string é muito longo
ERR_SYM_ACCESS Erro de acesso do símbolo de leitura/escrita
ERR_TP_DIBREAK Uma instrução TPRead foi interrompida por uma entrada
digital
ERR_TP_MAXTIME Limite de tempo quando executando uma instrução
TPRead

Data Types do Sistema e Rotinas 1-errnum-21


errnum Tipos de dados

ERR_UNIT_PAR Unidade de parâmetro Mech_ em TestSign e SetCurrRef


está errado
ERR_UNKINO Desconhecido número de interrupção
ERR_UNKPROC Referência incorreta à sessão de carregamento na
instrução WaitLoad
ERR_UNLOAD Erro de descarga na instrução UnLoad ou WaitLoad
ERR_WAIT_MAXTIME Limite de tempo quando executando uma instrução
WaitDI ou WaitUntil
ERR_WHLSEARCH Sem parada de busca

Características
Errnum é um tipo de dado suposto num e consequentemente tem as suas características.

Informação relacionada
Descrito em:
Recuperação de erros Sumário RAPID - Recuperação de
Erros
Características Básicas - Recuperação
de Erros
Tipos de dados em geral, supostos Características Básicas - Tipos de
dados

1-errnum-22 Data Types do Sistema e Rotinas


Tipos de dados extjoint

extjoint Posição dos eixos externos

Extjoint é usado para definir as posições de eixo dos eixos externos, posicionadores ou
peças de trabalho dos robôs.

Descrição
O robô pode controlar até seis eixos externos em adição aos seis eixos internos, isto é
um total de doze eixos. Os seis eixos externos são nomeados logicamente: a, b, c, d, e,
f. Cada eixo lógico pode ser conectado a um eixo físico e, neste caso, a conexão é defi-
nida nos parâmetros do sistema.

Dado do tipo extjoint é usado para manter valores de posição de cada eixo lógico a - f.

Para cada eixo lógico conectado à um eixo físico, a posição é definida como abaixo:

- Para eixo rotacional – a posição é definida como a rotação em graus em relação


à posição de calibração.
- Para eixo linear – A posição é definida como a distância em mm em relação à
posição de calibração.

Se um eixo lógico não é conectado a um físico, o valor 9E9 é usado como um valor
positivo, indicando que o eixo não está conectado. Durante o tempo de execução, o
dado de posição para cada eixo é verificado e este é verificado se o eixo correspondente
está conectado ou não. Se o valor da posição armazenada não condiz com a conexão
atual do eixo, aplica-se o seguinte:

- Se a posição não está definida no dado de posição (valor é 9E9), o valor será
ignorado se o eixo está conectado e não ativado. Mas se o eixo está ativado, isto
irá resultar em um erro.
- Se a posição está definida no dado de posição, embora o eixo não esteja
conectado, o valor será ignorado.

Se um offset de um eixo externo é usado (instrução EOffsOn ou EOffsSet), as posições


são especificadas no sistema de coordenadas ExtOffs.

Componentes
eax_a (eixo externo a) Tipo de dado: num

A posição do eixo externo lógico “a”, expresso em graus ou mm (dependendo do


tipo de eixo).

eax_b (eixo externo b) Tipo de dado: num

A posição do eixo externo lógico “b”, expresso em graus ou mm (dependendo do


tipo de eixo).

Data Types do Sistema e Rotinas 1-extjoint-23


extjoint Tipos de dados

...

eax_f (eixo externo f) Tipo de dado: num

A posição do eixo externo lógico “f”, expresso em graus ou mm (dependendo do


tipo de eixo).

Exemplo
VAR extjoint axpos10 := [ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ;

A posição do posicionador externo, axpos10, é definida como abaixo:

- A posição do eixo externo lógico “a” é setada para 11, expresso em graus ou
mm (dependendo do tipo de eixo).
- A posição do eixo externo lógico “b” é setada para 12.3, expresso em graus ou
mm (dependendo do tipo de eixo).
- Eixos c ao f não são definidos.

Estrutura
< dataobject of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informação relacionada
Descrito em:
Dados de posicionamento Tipo de dados - robtarget
Sistema de coordenadas ExtOffs Instruções - EOffsOn

1-extjoint-24 Data Types do Sistema e Rotinas


Tipos de dados intnum

intnum Identificação de interrupção

Intnum (interrupt numeric) é usado para identificar uma interrupção.

Descrição
Quando uma variável do tipo intnum é conectada à uma rotina “trap”, para ela é dada
um valor específico identificando a interrupção. Esta variável é então usada em todas
as partes com a interrupção, como quando ordenando ou desabilitando uma inter-
rupção.

Mais de uma identificação de interrupção podem ser conectadas à mesma rotina “trap”.
A variável do sistema INTNO pode também ser associada à uma rotina “trap” para
determinar o tipo de interrupção que ocorre.

Exemplos
VAR intnum feeder_error;
.
CONNECT feeder_error WITH correct_feeder;
ISignalDI di1, 1, feeder_error;

Uma interrupção é gerada quando a entrada di1 é setada para 1. Quando isto
acontece, um chamado é feito para a rotina ”trap” correct_feeder.

Data Types do Sistema e Rotinas 1-intnum-25


intnum Tipos de dados

VAR intnum feeder1_error;


VAR intnum feeder2_error;
.
PROC init_interrupt();
.
CONNECT feeder1_error WITH correct_feeder;
ISignalDI di1, 1, feeder1_error;
CONNECT feeder2_error WITH correct_feeder;
ISignalDI di2, 1, feeder2_error;
.
ENDPROC
.
TRAP correct_feeder
IF INTNO=feeder1_error THEN
.
ELSE
.
ENDIF
.
ENDTRAP

Uma interrupção é gerada quando tanto a entrada di1 ou di2 é setada 1. Um cha-
mado é então feito para a rotina “trap” correct_feeder. A variável do sistema
INTNO é usada na rotina “trap” para encontrar qual o tipo de interrupção que
tenha ocorrido.

Limitações
O número máximo de variáveis ativas do tipo intnum é sempre (entre CONNECT e IDe-
lete) limitado a 40. O número máximo de interrupções, na fila de execução da rotina
TRAP é sempre limitado a 30.

Características
Intnum é um tipo de dado suposto num e então tem suas características.

Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Tipos de dados, supostos Características Básicas-
Tipos de dados

1-intnum-26 Data Types do Sistema e Rotinas


Tipos de dados iodev

iodev Canais seriais e arquivos

Iodev (I/O device) é usado para canais seriais, como uma impressora e arquivos.

Descrição
Dado do tipo iodev contém uma referência para um arquivo ou canal serial. Isto pode
ser ligado a uma unidade física através da instrução Open e então usado para leitura ou
escrita.

Exemplo
VAR iodev file;
.
Open "flp1:LOGDIR/INFILE.DOC", file\Read;
input := ReadNum(file);

O arquivo INFILE.DOC é aberto para leitura. Enquanto recebemos leitura do


arquivo, file é usado como uma referência em vez do nome do arquivo.

Características
Iodev é um tipo de dado non-value.

Informação relacionada
Descrito em:
Comunicação via canais seriais Sumário RAPID - Comunicação
Configuração de canais seriais Guia do Usuário - Parâmetros
do Sistema
Características dos tipos de dado non-value Características Básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-iodev-27


iodev Tipos de dados

1-iodev-28 Data Types do Sistema e Rotinas


Tipos de dados jointtarget

jointtarget Dado de posição do eixo

Jointtarget é usado para definir a posição que o robô e os eixos externos irão se mover
com a instrução MoveAbsJ.

Descrição
Jointtarget define cada posição individual dos eixos, tanto para o robô, como para os
eixos externos.

Componentes
robax (eixos do robô) Tipo de dado: robjoint

Posição de eixo dos eixos do robô em graus.

Posição de eixo é definida como uma rotação em graus dos eixos respectivos
(braço) em uma direção positiva ou negativa da posição de calibração dos eixos.

extax (eixos externos) Tipo de dado: extjoint

A posição dos eixos externos.

A posição é definida como abaixo para cada eixo individual (eax_a, eax_b ...
eax_f):

- Para eixo rotacional, a posição é definida como a rotação em graus em relação


a posição de calibração.
- Para eixo linear, a posição é definida como a distância em mm em relação a
posição de calibração.

Eixos externos eax_a ... são eixos lógicos. Como o número de eixo lógico e o
número de eixo físico estão relacionados, estes são definidos nos parâmetros do
sistema.

O valor 9E9 é definido para eixos que não estão conectados. Se o eixo definido
no dado de posição difere do eixo ao qual está conectado na execução do pro-
grama, aplica-se o seguinte:

- Se a posição não está definida no dado de posição (valor 9E9) o valor será igno-
rado, se o eixo está conectado e não ativado. Mas se o eixo estiver ativo irá
resultar em erro.
- Se a posição está definida no dado de posição ainda que o eixo não esteja
conectado, o valor é ignorado.

Data Types do Sistema e Rotinas 1-jointtarget-29


jointtarget Tipos de dados

Exemplos
CONST jointtarget calib_pos := [ [ 0, 0, 0, 0, 0, 0], [ 0, 9E9, 9E9, 9E9, 9E9, 9E9] ];

A posição de calibração normal para IRB2400 é definida no calib_pos através do


dado tipo jointtarget. A posição normal de calibração 0 (graus ou mm) é também
definida para o eixo externo lógico a. Os eixos externos b ao f não estão defini-
dos.

Estrutura
< dataobject of jointtarget >
< robax of robjoint >
< rax_1 of num >
< rax_2 of num >
< rax_3 of num >
< rax_4 of num >
< rax_5 of num >
< rax_6 of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informação relacionada
Descrito em:
Mover para posição de eixo Instruções - MoveAbsJ
Instruções de posicionamento Sumário RAPID - Movimento
Configuração de eixos externos Guia do Usuário - Parâmetros do
Sistema

1-jointtarget-30 Data Types do Sistema e Rotinas


Tipos de dados loaddata

load data Dado de carga

Loaddata é usado para descrever cargas acopladas à interface mecânica do robô


(montada no flange do robô).

Dado de carga normalmente define a carga sustentada (gripload é definida pela


instrução Grip Load) pelo robô, isto é, a carga presa a garra do robô. A carga da
ferramenta é especificada no dado de ferramenta (tooldata) o qual inclue o dado de
carga.

Descrição
Cargas especificadas são usadas para definir um modelo de dinâmica do robô para que
os movimentos possam ser controlados da melhor maneira possível.

É muito importante definir sempre a carga real da ferramenta e a carga


sustentada do robô, quando utilizado. Definições incorretas de dados de carga
podem resultar em sobrecarga da estrutura mecânica do robô.

Se um dado de carga incorreto é especificado, isto frequentemente tem as seguintes


consequências:

- Se o dado de carga especificado é maior que o valor real da carga;


-> O robô não utilizará sua capacidade máxima
-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”.
- Se o dado de carga especificado é menor que o valor real da carga;
-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”
-> Risco de sobrecarga da estrutura mecânica

A carga sustentada é conectada e desconectada usando a instrução GripLoad.

Componentes
mass Tipo de dado: num

O peso da carga em kg.

cog (centro de gravidade) Tipo de dado: pos

O centro de gravidade da carga útil (x, y, z) em mm, expressa no sistema de


coordenadas da ferramenta. Se uma ferramenta estacionária é usada, significa o
centro de gravidade da ferramenta segurando o objeto de trabalho.

Data Types do Sistema e Rotinas 1-loaddata-31


loaddata Tipos de dados

aom (momento dos eixos) Tipo de dado: orient

Carga da ferramenta (consulte a figura 1)

A orientação do sistema de coordenadas é definida pelos eixos de inércia da carga


útil. Expressa no sistema de coordenadas da ferramenta como um quatérnion (q1,
q2, q3, q4). Se uma ferramenta estacionária é usada, significa os eixos de inércia
para a ferramenta segurando o objeto de trabalho.

A orientação do sistema de coordenadas da carga da ferramenta precisa coincidir


com a orientação do sistema de coordenadas do punho. Ela deve ser sempre
definida como 1, 0, 0, 0.

Carga útil (consulte as figuras 1 e 2)

A orientação do sistema de coordenadas definido pelos eixos de inércia da carga


útil. Expressa no sistema de coordenadas da ferramenta como um quatérnion (q1,
q2, q3, q4). O sistema de coordenadas do objeto se uma ferramenta estacionária
for usada.

A orientação do sistema de coordenadas da carga útil precisa coincidir com a


orientação do sistema de coordenadas do punho. Ela deve ser sempre definida
como 1, 0, 0, 0.

Devido a essa limitação, a melhor maneira é definir a orientação do sistema de


coordenadas da ferramenta (estrutura da ferramenta) para coincidir com o
sistema de coordenadas do punho.

Sistema de coordenadas de punho


Y
Z IY Sist. de coordenadas de carga da ferramenta -
Eixos de inércia de carga da ferramenta
IZ
Y’
Z’
IX
X Sist. de coordenadas da ferramenta
TCP X’

IY’

IZ’
Sist. coordenadas carga útil-
Eixos de inércia carga útil
IX’
Figura 4 Restrição na orientação no sistema de coordenadas de carga da ferramenta
e carga útil.

1-loaddata-32 Data Types do Sistema e Rotinas


Tipos de dados loaddata

Sistema de coordenadas de punho

Z Garra
Y Sist.de coordenadas de ferramenta
Z
Y’
Sistema de coordenadas
X
Z’ de carga sustentada -
Eixos de inércia de carga
sustentada
X
Carga sustentada

X’ Centro de gravidade carga sustentada


Figura 5 Centro de gravidade e eixos de inércia da carga sustentada.

ix (inércia x) Tipo de dados: num

O momento de inércia da carga perto de seu eixo-x relativo ao seu centro de


massa, em kgm2.

A definição correcta dos momentos de inércia permitirá o uso ótimo do


planejador de trajeto e controle de eixos. Isto pode ser de especial importância
quando se tratar de grandes folhas de metal, etc. Todos os momentos de inércia
ix, iy e iz iguais a 0 kgm2 implicam um ponto.

Geralmente, os momentos de inércia somente deverão ser definidos quando a


distância da flange de montagem ao centro de gravidade é menor do que a
dimensão da carga (ver Figura 6).

carga útil
distância
x
dimensão

Figura 6 O momento de inérica deve ser geralmente definido quando a distância é menor do que a
dimensão de carga.

iy (inércia y) Tipo de dados: num

O momento de inércia da carga perto de seu eixo-y, expressa em kgm2.

Data Types do Sistema e Rotinas 1-loaddata-33


loaddata Tipos de dados

Para mais informações, veja ix.

iz (inércia z) Tipo de dados: num

O momento de inércia da carga perto de seu eixo-z, expressa em kgm2.

Para mais informações, veja ix.

Exemplos
PERS loaddata piece1 := [ 5, [50, 0, 50], [1, 0, 0, 0], 0, 0, 0];

A carga sustentada na Figura 1 é descrita usando os valores seguintes:

- Peso 5 kg.
- O centro de gravidade é x = 50, y = 0 e z = 50 mm no sistema de coordenadas
de ferramenta.
- A carga sustentada é uma carga em um ponto.

Set gripper;
WaitTime 0.3;
GripLoad piece1;

Conexão da carga sustentada, piece1, especificada ao mesmo tempo como a garra


do robô e a carga da piece1.

Reset gripper;
WaitTime 0.3;
GripLoad load0;

Desconexão de uma carga sustentada, especificada ao mesmo tempo como a


liberação do robô da carga sustentada.

Limitações
A carga sustentada deve somente ser definida como uma variável persistente (PERS) e
não em uma rotina. Valores atuais são então salvos quando armazenar o programa no
disquete e recuperados quando carregar o programa.

Argumentos de dado tipo carga na instrução GripLoad deve somente ser uma
persistente inteira (não elemento de caracter ou componente de registro).

Dado pré-definido
A carga load0 define uma carga sustentada, cujo peso é igual a 0 kg, isto é, sem carga.
Esta carga é usada como um argumento na instrução GripLoad para desconectar uma
carga sustentada.

1-loaddata-34 Data Types do Sistema e Rotinas


Tipos de dados loaddata

A carga load0 pode sempre ser acessada do programa, mas não pode ser alterada (ela
é armazenada no módulo do sistema BASE).

PERS loaddata load0 := [ 0, [0, 0, 0], [1, 0, 0, 0],0, 0 ,0 ];

Estrutura
< dataobject of loaddata >
< mass of num >
< cog of pos >
< x of num >
< y of num >
< z of num >
< aom of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< ix of num >
< iy of num >
< iz of num >

Informação relacionada
Descrito em:
Sistemas de coordenadas Movimento e Princípios de E/S -
Sistemas de coordenadas
Definição de cargas da ferramenta Tipos de dados - tooldata
Ativação de carga sustentada Instruções - GripLoad

Data Types do Sistema e Rotinas 1-loaddata-35


loaddata Tipos de dados

1-loaddata-36 Data Types do Sistema e Rotinas


Tipos de dados loadsession

loadsession Sessão de carregamento do programa

Loadsession é usado para definir sessões de carregamento diferentes de módulos de


programa do RAPID.

Descrição
Dados do tipo loadsession são usados nas instruções StartLoad e WaitLoad para
identificar a sessão de carregamento. Loadsession contém apenas uma referência à
sessão de carregamento.

Características
Loadsession é um tipo de dados non-value, não podendo ser usado em operações
orientadas para valor.

Informações relacionadas
Descrito em:
Carregando módulos de programa
durante a execução Instruções - StartLoad, WaitLoad
Características de tipos de dados non-value Características básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-loadsession-37


loadsession Tipos de dados

1-loadsession-38 Data Types do Sistema e Rotinas


Tipos de dados mecunit

mecunit Unidade Mecânica

Mecunit é usado para definir as diferentes unidades mecânicas as quais podem ser con-
troladas e acessadas pelo robô e pelos programas.

Os nomes das unidades mecânicas são definidos nos parâmetros do sistema e, conse-
qüentemente, não devem ser definidas no programa.

Descrição
Dado do tipo mecunit somente contém uma referência para unidade mecânica.

Limitações
Dado do tipo mecunit não deve ser definido no programa. O tipo de dado, por outro
lado, pode ser usado como um parâmetro quando declarando uma rotina.

Dado pré-definido
As unidades mecânicas definidas nos parâmetros do sistema podem sempre ser aces-
sadas pelo programa (dados instalados).

Características
Mecunit é um tipo de dado non-value. Isto significa que dados deste tipo não permitem
operações de orientação de valores.

Informação relacionada
Descrito em:
Ativação/Desativação de unidades mecânicas Instruções - ActUnit, DeactUnit
Configuração de unidades mecânicas Guia do Usuário - Parâmetros do
Sistema
Características de tipos de dados non-value Características Básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-mecunit-39


mecunit Tipos de dados

1-mecunit-40 Data Types do Sistema e Rotinas


Tipos de dados motsetdata

motsetdata Dados de ajustes de movimento

Motsetdata é usado para definir um número de ajustes de deslocamento que afeta todas
instruções de posicionamento no programa:

- Velocidade máxima e sobreposição de velocidade


- Dados de aceleração
- Comportamento ao redor de pontos de singularidade
- Gerenciamento de diferentes configurações do robô
- Cancelamento da resolução do caminho
- Supervisão de movimentação

Este tipo de dados normalmente não é usado já que essas configurações só podem ser
definidas usando as instruções VelSet, AccSet, SingArea, ConfJ, ConfL, PathResol e
MotionSup.

Os valores atuais destes ajustes de movimento podem ser acessados usando a variável
do sistema C_MOTSET.

Descrição
Os ajustes de movimento atuais (armazenados na variável do sistema C_MOTSET)
afetam todos os movimentos.

Componentes
vel.oride Tipo de dado: veldata/num

Velocidade é uma porcentagem da velocidade programada.

vel.max Tipo de dado: veldata/num

Velocidade máxima em mm/s.

acc.acc Tipo de dado:accdata/num

Aceleração e desaceleração como uma porcentagem dos valores normais.

acc.ramp Tipo de dado:accdata/num

A relação na qual a aceleração e desaceleração incrementam como uma porcen-


tagem dos valores normais.

Data Types do Sistema e Rotinas 1-motsetdata-41


motsetdata Tipos de dados

sing.wrist Tipo de dado: singdata/bool

Desvio permitido da orientação da ferramenta a fim de evitar a singularidade do


punho.

sing.arm Tipo de dado: singdata/bool

Desvio permitido da orientação da ferramenta a fim de evitar a singularidade do


braço (não implementado).

sing.base Tipo de dado: singdata/bool

Desvio permitido da orientação da ferramenta.

conf.jsup Tipo de dado: confsupdata/bool

Supervisão da configuração do eixo é ativada durante a movimentação do eixo.

conf.lsup Tipo de dado: confsupdata/bool

Supervisão da configuração do eixo é ativada durante movimentação linear e cir-


cular.

conf.ax1 Tipo de dado: confsupdata/num

Desvio máximo permitido em graus para o eixo 1 (não usado nesta versão).

conf.ax4 Tipo de dado: confsupdata/num

Desvio máximo permitido em graus para o eixo 4 (não usado nesta versão).

conf.ax6 Tipo de dado: confsupdata/num

Desvio máximo permitido em graus para o eixo 6 (não usado nesta versão).

pathresol Tipo de dados: num

Sobreposição atual em porcentagem da resolução de trajecto configurada.

motionsup Tipo de dados: bool

Estado RAPID refletido (TRUE = Ativado e FALSE = Desativado) da função de


supervisão de movimentação.

tunevalue Tipo de dados: num

Sobreposição RAPID corrente em percentagem do valor de afinação (tunevalue)


para a função de supervisão de deslocamento

Limitações
Um e somente um dos componentes sing.wrist, sing.arm ou sing.base talvez tenha o

1-motsetdata-42 Data Types do Sistema e Rotinas


Tipos de dados motsetdata

valor igual a TRUE.

Exemplo
IF C_MOTSET.vel.oride > 50 THEN
...
ELSE
...
ENDIF

Partes diferentes do programa são executadas dependendo da sobreposição da


velocidade atual.

Dado predefinido
C_MOTSET descreve ajustes de movimentos atuais do robô e pode sempre ser aces-
sado do programa (dado instalado). C_MOTSET, por outro lado, pode somente ser
alterado usando um número de instruções, não por associação.

Os valores default para parâmetros de movimentos setados são:

- para partida a frio


- quando um novo programa é carregado
- quando executar um programa do início.

PERS motsetdata C_MOTSET := [


[ 100, 500 ], -> veldata
[ 100, 100 ], -> accdata
[ FALSE, FALSE, TRUE ], -> singdata
[ TRUE, TRUE, 30, 45, 90], -> confsupdata
[100 ], -> path resolution
[TRUE ], -> motionsup
[100 ] ]; -> tunevalue

Data Types do Sistema e Rotinas 1-motsetdata-43


motsetdata Tipos de dados

Estrutura
<dataobject of motsetdata>
<vel of veldata > -> Afetado pela instrução VelSet
< oride of num >
< max of num >
<acc of accdata > -> Afetado pela instrução AccSet
< acc of num >
< ramp of num >
<sing of singdata > -> Afetado pela instrução SingArea
< wrist of bool >
< arm of bool >
< base of bool >
<conf of confsupdata > -> Afetado pelas instruções ConfJ e ConfL
< jsup of bool >
<lsup of bool >
< ax1 of num >
< ax4 of num >
< ax6 of num >
<pathresol of num> -> Afetado pela instrução PathResol
<motionsup of bool> -> Afetada pela instrução MotionSup
<tunevalue of num> -> Afetada pela instrução TuneValue

Informações relacionadas
Descritas em:

Instruções de parâmetros de movimento Sumário RAPID -


Ajustes de Movimentação

1-motsetdata-44 Data Types do Sistema e Rotinas


Tipos de dados num

num Valores numéricos (registradores)

Num é usado para valores numéricos; exemplo: contadores.

Descrição
O valor de um tipo de dado numérico pode ser

- um valor inteiro; ex. -5,


- um número decimal; ex. 3.45.

Este também pode ser escrito como uma exponencial; ex.2E3 (= 2*103 = 2000), 2.5E-
2 (= 0.025).

Inteiros entre -8388607 e +8388608 são sempre armazenados como inteiros exatos.

Números decimais são somente números aproximados e não devem ser, portanto, usa-
dos como comparações is equal to ou is not equal to. Em casos de divisões, e operações
usando números decimais, o resultado também será um número decimal; isto é, não um
inteiro exato.

Ex. a := 10;
b := 5;
IF a/b=2 THEN Como o resulatdo de a/b não é um
inteiro, esta condição não é satisfeita
... necessariamente.

Exemplo
VAR num reg1;
.
reg1 := 3;

reg1 é associado ao valor 3.

a := 10 DIV 3;
b := 10 MOD 3;

Divisão inteira onde a é associado à um inteiro (=3) e b é associado ao restante


(=1).

Dado pré-definido
A constante pi (π) está sempre definida no módulo do sistema BASE.

CONST num pi := 3.1415926;

Data Types do Sistema e Rotinas 1-num-45


num Tipos de dados

As constantes EOF_BIN e EOF_NUM já estão definidas no sistema.

CONST num EOF_BIN := -1;

CONST num EOF_NUM := 9.998E36

Informações relacionadas
Descritas em:
Expressões numéricas Características Básicas - Expressões
Operações usando valores numéricos Características Básicas - Expressões

1-num-46 Data Types do Sistema e Rotinas


Tipos de dados o_jointtarget

o_jointtarget Dados de posição de eixo original

o_jointtarget (original joint target) é usado em combinação com a função Absolute


Limit Modpos. Quando esta função é usada para modificar uma posição, a posição
original é armazenada como um dado do tipo o_jointtarget.

Descrição
Se a função Absolute Limit Modpos é ativada e uma posição nomeada em uma
instrução de movimento é modificada com a função Modpos, então a posição original
programada é salva.

Exemplo de um programa antes do Modpos:

CONST jointtarget jpos40 := [[0, 0, 0, 0, 0, 0],


[0, 9E9, 9E9, 9E9, 9E9, 9E9]];
...
MoveAbsJ jpos40, v1000, z50, tool1;

O mesmo programa depois do ModPos no qual o ponto jpos40 é corrigido para 2 graus
para o eixo do robô 1:

CONST jointtarget jpos40 := [[2, 0, 0, 0, 0, 0],


[0, 9E9, 9E9, 9E9, 9E9, 9E9]];
CONST o_jointtarget o_jpos40 := [[0, 0, 0, 0, 0, 0],
[0, 9E9, 9E9, 9E9, 9E9, 9E9]];
...
MoveAbsJ jpos40, v1000, z50, tool1;

O ponto original programado agora está salvo no o_jpos40 (como um dado tipo
o_jointtarget) e o ponto modificado salvo no jpos40 (como um dado tipo jointtarget).

Salvando o ponto original programado, o robô pode monitorar que a distância Modpos
do ponto em questão está dentro dos limites aceitáveis do ponto original programado.

O nome convencional fixado significa que um ponto original programado com o nome
xxxxx pode ser salvo com o nome o_xxxxx usando Absolute Limit Modpos.

Componentes
robax (eixos do robô) Tipo de dado: robjoint

Posições dos eixos dos eixos dos robôs em graus.

extax (eixos externos) Tipo de dado: extjoint

A posição dos eixos externos.

Data Types do Sistema e Rotinas 1-o_jointtarget-47


o_jointtarget Tipos de dados

Estrutura
< dataobject of o_jointtarget >
< robax of robjoint>
< rax_1 of num >
< rax_2 of num >
< rax_3 of num >
< rax_4 of num >
< rax_5 of num >
< rax_6 of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informação relacionada
Descrito em:
Posição do dado Tipos de Dados - Jointtarget
Configuração do Limite Modpos Guia do Usuário - Parâmetros do Sis-
tema

1-o_jointtarget-48 Data Types do Sistema e Rotinas


Tipos de dados orient

orient Orientação

Orient é usado para orientações (como a orientação de uma ferramenta) e rotações


(como rotação de um sistema de coordenadas).

Descrição
A orientação é descrita em forma de um quaternion que consiste de quatro elementos:
q1, q2, q3 e q4. Para maiores informações de como estes são calculados, veja abaixo.

Componentes
q1 Tipo de dado: num

Quaternion 1.

q2 Tipo de dado: num

Quaternion 2.

q3 Tipo de dado: num

Quaternion 3.

q4 Tipo de dado: num

Quaternion 4.

Exemplo
VAR orient orient1;
.
orient1 := [1, 0, 0, 0];

A orientação orient1 é associada ao valor q1=1, q2-q4=0; isto correspodente à


não rotação.

Limitações
A orientação deve ser normalizada; isto é, a soma dos quadrados deve ser igual a 1.
q 12 + q 22 + q 32 + q 42 = 1

Data Types do Sistema e Rotinas 1-orient-49


orient Tipos de dados

O que é um Quaternion?

A orientação de um sistema de coordenadas (como a de uma ferramenta) pode ser


descrita como uma matriz rotacional que descreve a direção dos eixos de um sistema
de coordenadas em relação a um sistema referencial (veja Figura 1).

z
z

x
y Sistema de
Sistema de
coordenadas
coordenadas
rotacionadas
x referencial
y
Figure 7 A rotação de um sistema de coordenadas é descrito por um Quaternion.

Os sistemas de coordenadas de eixos rotacionais (x, y, z) são vetores os quais podem


ser expressos em um sistema de coordenadas referencial como abaixo:

x = (x1, x2, x3)


y = (y1, y2, y3)
z = (z1, z2, z3)

Isto significa que a componente x do vetor x no sistema de coordenadas referencial será


x1, a componente y será x2, etc.

Estes três vetores podem ser colocados juntos na matriz, uma matriz rotacional, onde
cada um dos vetores forma uma das colunas:

x1 y1 z1
x2 y2 z2
x3 y3 z3

Um quaternion é somente um caminho mais simples para descrever esta matriz rota-
cional; os quaternions são calculados baseados nos elementos da matriz rotacional:
x1 + y2 + z3 + 1
q1 = -----------------------------------------
2
x 1 – y2 – z3 + 1
q2 = ----------------------------------------
2
sinal q2 = sinal (y3-z2)
y 2 – x1 – z3 + 1
q3 = ----------------------------------------
2
sinal q3 = sinal (z1-x3)
z3 – x 1 – y2 + 1
q4 = ----------------------------------------
2
sinal q4 = sinal (x2-y1)

1-orient-50 Data Types do Sistema e Rotinas


Tipos de dados orient

Exemplo 1

Uma ferramenta é orientada para que seu eixo Z’ esteja alinhado (na mesma direção
com o eixo X do sistema de coordenadas de base). O eixo Y’da ferramenta cor-
responde ao eixo Y do sistema de coordenadas (veja Figura 2). Como é a orientação da
ferramenta definida no dado de posicionamento (robtarget)?

A orientação da ferramenta em uma posição programada é normalmente relacionada


ao sistema de coordenadas do objeto de trabalho usado. Neste exemplo, nenhum objeto
de trabalho é usado e o sistema de coordenadas de base é igual ao sistema de coorde-
nadas global. Então, a orientação é relacionada ao sistema de coordenadas de base.

X
Figure 8 A direção de uma ferramenta de acordo com o exemplo 1.

Os eixos terão as seguintes relações:

x’ = -z = (0, 0, -1)
y’ = y = (0, 1, 0)
z’ = x = (1, 0, 0)
0 0 1
Os quais correspondem a seguinte matriz rotacional: 0 1 0
–1 0 0
A matriz rotacional resulta em um quaternion correspondente:

0+1+0+1 2
q1 = ----------------------------------- = ------- = 0,707
2 2

0–1–0+1
q2 = ---------------------------------- = 0
2

1–0–0+1 2
q3 = ---------------------------------- = ------- = 0,707 sinal q3 = sinal (1+1) = +
2 2

0–0–1+1
q4 = ---------------------------------- = 0
2

Exemplo 2

A direção da ferramenta é rotacionada em 30osobre os eixos X’ e Z’ em relação ao sis-


tema de coordenadas de punho (veja Figura 2). Como é a orientação da ferramenta
definida no dado de ferramenta (tooldata)?

Data Types do Sistema e Rotinas 1-orient-51


orient Tipos de dados

X Z´

Figure 9 A direção da ferramenta de acordo com o exemplo 2.

Os eixos terão as seguintes relações:

x’ = (cos30o, 0, -sen30o)
y’ = (0, 1, 0)
z’ = (sen30o, 0, cos30o)
cos 30 ° 0 sen30 °
Os quais correspondem a seguinte matriz rotacional: 0 1 0
– sen30 ° 0 cos 30 °
A matriz rotacional resulta em um quaternion correspondente:
cos 30 ° + 1 + cos 30° + 1
q1 = ---------------------------------------------------------------- = 0,965926
2

cos 30° – 1 – cos 30° + 1


q2 = ---------------------------------------------------------------- = 0
2

sinal q3 = sinal (sen30o+sen30o) = +


1 – cos 30° – cos 30° + 1
q3 = ---------------------------------------------------------------- = 0,258819
2

cos 30° – cos 30° – 1 + 1


q4 = ---------------------------------------------------------------- = 0
2

Estrutura
<dataobject of orient>
<q1 of num>
<q2 of num>
<q3 of num>
<q4 of num>

Informação relacionada
Descrito em:
Operações em orientações Características Básicas - Expressões

1-orient-52 Data Types do Sistema e Rotinas


Tipos de dados o_robtarget

o_robtarget Dado da posição original

o_robtarget (original robot target) é usado em combinação com a função Absolute


Limit Modpos. Quando esta função é usada para modificar uma posição, a posição
original é armazenada como um dado do tipo o_robtarget.

Descrição
Se a função Absolute Limit Modpos é ativada e uma posição nomeada em uma
instrução de movimento é modificada com a função Modpos, então a posição original
programada é salva.

Exemplo de um programa antes do Modpos:

CONST robtarget p50 := [[500, 500, 500], [1, 0, 0, 0], [1, 1, 0, 0],
[500, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
MoveL p50, v1000, z50, tool1;

O mesmo programa depois do ModPos no qual o ponto p50 é corrigido para 502 na
direção de x:

CONST robtarget p50 := [[502, 500, 500], [1, 0, 0, 0], [1, 1, 0, 0],
[500, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST o_robtarget o_p50 := [[500, 500, 500], [1, 0, 0, 0], [1, 1, 0, 0],
[ 500, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
MoveL p50, v1000, z50, tool1;

O ponto original programado agora está salvo no o_p50 (como um dado tipo
o_robtarget) e o ponto modificado salvo no p50 (como um dado tipo robtarget).

Salvando o ponto original programado, o robô pode monitorar que a distância Modpos
do ponto em questão está dentro dos limites aceitáveis do ponto original programado.

O nome convencional fixado significa que um ponto original programado com o nome
xxxxx pode ser salvo com o nome o_xxxxx usando Absolute Limit Modpos.

Componentes
trans (translação) Tipo de dado: pos

A posição (x, y e z) do ponto central da ferramenta expressa em mm.

rot (rotação) Tipo de dado: orient

A orientação da ferramenta, expressa na forma de um quaternion (q1, q2, q3 e

Data Types do Sistema e Rotinas 1-o_robtarget-53


o_robtarget Tipos de dados

q4).

robconf (configuração do robô) Tipo de dado: confdata

A configuração do eixo do robô (cf1, cf4, cf6 e cfx).

extax (eixos externos) Tipo de dado: extjoint

A posição dos eixos externos.

Estrutura
< dataobject of o_robtarget >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< robconf of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informação relacionada
Descrito em:
Dado de posição Tipos de dados - Robtarget
Configuração do Limite Modpos Guia do Usuário - Parâmetros do
Sistema

1-o_robtarget-54 Data Types do Sistema e Rotinas


Tipos de dados pos

pos Posições (somente X, Y e Z)

Pos é usado para posições (somente X, Y e Z).

O tipo de dado robtarget é usado para posição do robô incluindo a orientação da ferra-
menta e a configuração dos eixos.

Descrição
Dado do tipo pos descreve as coordenadas de uma posição: X, Y e Z.

Componentes
x Tipo de dado: num

O valor X da posição.

y Tipo de dado: num

O valor Y da posição.

z Tipo de dado: num

O valor Z da posição.

Exemplos
VAR pos pos1;
.
pos1 := [500, 0, 940];

A posição pos1 é associada ao valor: X=500 mm, Y=0 mm, Z=940 mm.

pos1.x := pos1.x + 50;

A posição pos1 é deslocada 50 mm na direção X.

Estrutura
<dataobject of pos>
<x of num>
<y of num>
<z of num>

Data Types do Sistema e Rotinas 1-pos-55


pos Tipos de dados

Informação relacionada
Descrito em:
Operações com posições Características Básicas - Expressões
Posição do robô incluindo orientação Tipos de dados - robtarget

1-pos-56 Data Types do Sistema e Rotinas


Tipos de dados pose

pose Transformações de coordenadas

Pose é usado para trocar de um sistema de coordenadas para outro.

Descrição
Dado do tipo pose descreve como um sistema de coordenadas é deslocado e rotacio-
nado com relação a outro sistema de coordenadas. O dado pode, por exemplo,
descrever como o sistema de coordenadas de ferramenta é localizado e orientado em
relação ao sistema de coordenadas de punho.

Componentes
trans (translação) Tipo de dado: pos

O deslocamento na posição (x, y e z) do sistema de coordenadas.

rot (rotação) Tipo de dado: orient

A rotação do sistema de coordenadas.

Exemplo
VAR pose frame1;
.
frame1.trans := [50, 0, 40];
frame1.rot := [1, 0, 0, 0];

A transformação da coordenada frame1 é associada a um valor que que corre-


sponde a um deslocamento de posição, onde X=50 mm, Y=0 mm, Z=40 mm;
entretanto, não existe rotação.

Estrutura
<dataobject of pose>
<trans of pos>
<rot of orient>

Informação relacionada
Descrito em:
O que é um Quaternion? Tipos de dados - orient

Data Types do Sistema e Rotinas 1-pose-57


pose Tipos de dados

1-pose-58 Data Types do Sistema e Rotinas


Tipos de dados progdisp

progdisp Deslocamento do programa

Progdisp é usado para armazenar o deslocamento do programa atual do robô e eixos


externos.

Este tipo de dado normalmente não tem que ser usado desde que o dado seja setado
usando instruções PDispSet, PDispOn, PDispOff, EOffsSet, EOffsOn e EOffsOff. Ele
só é usado para armazenar temporariamente o valor atual para ser usado mais tarde.

Descrição
Os valores atuais do deslocamento do programa podem ser acessados usando a var-
iável do sistema C_PROGDISP.

Para maiores informações, veja as instruções PDispSet, PDispOn, EOffsSet e EOffsOn.

Componentes
pdisp (deslocamento do programa) Tipo de dado: pose

O deslocamento do programa pelo robô, expresso usando uma translação e


rotação. A translação é expressa em mm.

eoffs (offset externo) Tipo de dado: extjoint

O offset para cada eixo externo. Se o eixo é linear, o valor é expresso em mm; se
ele é rotacional, o valor é expresso em graus.

Exemplo
VAR progdisp progdisp1;
.
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;
.
progdisp1:=C_PROGDISP;
PDispOff;
EOffsOff;
.
PDispSet progdisp1.pdisp;
EOffsSet progdisp1.eoffs;

Primeiro, um deslocamento de programa é ativado por uma posição encontrada.


Então, esta é temporariamente desativada armazenando o valor na variável
progdisp1 e, mais tarde, reativada usando as instruções PDispSet e EOffsSet.

Data Types do Sistema e Rotinas 1-progdisp-59


progdisp Tipos de dados

Dado pré-definido
A variável do sistema C_PROGDISP descreve o deslocamento do programa atual do
robô e eixos externos, e pode sempre ser acessada através do programa (dado insta-
lado). C_PROGDISP, por outro lado, pode somente ser alterado usando um número de
instruções, não por associação.

Estrutura
< dataobject of progdisp >
<pdisp of pose>
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< eoffs of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informação relacionada
Descrito em:
Instruções definindo deslocamento do programa Sumário RAPID -
Ajustes de Movimento
Sistemas de coordenadas Movimento e Princípios de E/S -
Sistemas de Coordenadas

1-progdisp-60 Data Types do Sistema e Rotinas


Tipos de dados robjoint

robjoint Posição “joint” dos eixos do robô

Robjoint é usado para definir a posição de eixo em graus dos eixos do robô.

Descrição
Dado do tipo robjoint é usado para armazenar as posições de eixo em grau dos eixos
do robô 1 a 6. Posição de eixo é definida como a rotação em graus para um eixo respec-
tivo (braço) em uma direção positiva ou negativa da posição de calibração do eixo.

Componentes
rax_1 (eixo 1 do robô) Tipo de dado: num

A posição do eixo 1 em graus em relação a posição de calibração.

...

rax_6 (eixo 6 do robô) Tipo de dado: num

A posição do eixo 6 em graus em relação a posição de calibração.

Estrutura
< dataobject of robjoint >
< rax_1 of num >
< rax_2 of num >
< rax_3 of num >
< rax_4 of num >
< rax_5 of num >
< rax_6 of num >

Informação relacionada
Descrito em:
Dado de posição “joint” Tipos de dados - jointtarget
Mover para posição “joint“ Instruções - MoveAbsJ

Data Types do Sistema e Rotinas 1-robjoint-61


robjoint Tipos de dados

1-robjoint-62 Data Types do Sistema e Rotinas


Tipos de dados robtarget

robtarget Dado de posição

Robtarget (robot target) é usado para definir a posição do robô e eixos externos.

Descrição
Dado de posição é usado para definir a posição em uma instrução de posicionamento
para qual o robô e eixos externos irão se mover.

Como o robô está apto a executar a mesma posição de diversas maneiras, a config-
uração do eixo também é especificada. Esta define os valores do eixo se estes estão em
um caminho ambíguo, por exemplo:

- se o robô está uma posição para frente ou para trás,


- se o eixo 4 aponta para baixo ou para cima,
- se o eixo 6 tem uma revolução negativa ou positiva.

A posição é definida baseada no sistema de coordenadas do objeto de trabalho,


incluindo qualquer deslocamento de programa. Se a posição é programada com
outro objeto de trabalho diferente do usado na instrução, o robô não irá se mover
da maneira esperada. Tenha certeza de usar o mesmo objeto de trabalho usado
nas instruções de posicionamento do programa. O uso incorreto pode ferir
alguém ou danificar o robô ou outro equipamento.

Componentes
trans (translação) Tipo de dado: pos

A posição (x, y e z) do ponto central da ferramenta expresso em mm.

A posição especificada em relação ao sistema de coordenadas do objeto atual,


incluindo o deslocamento do programa. Se nenhum objeto de trabalho é especi-
ficado, este será o sistema de coordenadas global.

rot (rotação) Tipo de dado: orient

A orientação da ferramenta, expressa em forma de um quaternion (q1, q2, q3 e q4).

A orientação é especificada em relação ao sistema de coordenadas do objeto


atual, incluindo o deslocamento do programa. Se nenhum objeto de trabalho é
especificado, este será o sistema de coordenadas global.

robconf (configuração do robô) Tipo de dado: confdata

A configuração do eixo do robô (cf1, cf4, cf6 e cfx). Esta é definida em forma de
um quadrante de revolução atual do eixo 1, eixo 4 e eixo 6. O primeiro quadrante

Data Types do Sistema e Rotinas 1-robtarget-63


robtarget Tipos de dados

positivo de revolução 0-90 o é definido como 0. A componente cfx é usada


somente no modelo de robô IRB5400.

Para maiores informações, veja tipo de dado confdata.

extax (eixos externos) Tipo de dado: extjoint

A posição dos eixos externos.

A posição é definida para cada eixo individual (eax_a, eax_b ... eax_f) como
abaixo:

- Para eixos rotacionais, a posição é definida como uma rotação em graus em


relação a posição de calibração.
- Para eixos lineares, a posição é definida como a distância em mm em relação a
posição de calibração.

Eixos externos eax_a ... são eixos lógicos. O número do eixo lógico e o número
do eixo físico estão relacionados, isto é definido nos parâmetros do sistema.

O valor 9E9 é definido para eixos que não estão conectados. Se o eixo definido
no dado de posição difere do eixo que está atualmente conectado na execução do
programa, se aplica o seguinte:

- Se a posição não está definida no dado de posição (valor 9E9), o valor será igno-
rado, se o eixo estivar conectado e não ativado. Mas se o eixo está ativado, isto
resultará em um erro.
- Se a posição é definida em um dado de posição embora o eixo não esteja
conectado, o valor é ignorado.

Exemplos
CONST robtarget p15 := [ [600, 500, 225.3], [1, 0, 0, 0], [1, 1, 0, 0],
[ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ];

Uma posição p15 é definida como abaixo:

- A posição do robô: x = 600, y = 500 e z = 225.3 mm no sistema de coordenadas


de objeto.
- A orientação da ferramenta na mesma direção como no sistema de coordenadas
de objeto.
- A configuração do eixo do robô: eixo 1 e 4 na posição 90-180o, eixo 6 na
posição 0-90o.
- A posição dos eixos externos lógicos, a e b, expressos em graus ou mm (depen-
dendo do tipo de eixo). Eixos c à f não são definidos.

1-robtarget-64 Data Types do Sistema e Rotinas


Tipos de dados robtarget

VAR robtarget p20;


...
p20 := CRobT();
p20 := Offs(p20,10,0,0);

A posição p20 é setada para a mesma posição que a posição atual do robô chamando a
função CRobT. A posição é então movida 10 mm na direção x.

Limitações
Quando usar a função de edição configurável Absolute Limit Modpos, o número de
caracteres no nome do dado tipo robtarget, é limitado em 14 (em outros casos 16).

Estrutura
< dataobject of robtarget >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< robconf of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Data Types do Sistema e Rotinas 1-robtarget-65


robtarget Tipos de dados

Informação relacionada
Descrito no:
Instruções de posicionamento Sumário RAPID - Movimento
Sistemas de coordenadas Movimento e Princípio de E/S - Siste-
mas de Coordenadas
Tratamento de dado de configuração Movimento e Princípio de E/S -
Configuração do Robô
Configuração de eixos externos Guia do Usuário - Parâmetros do
Sistema
O que é um Quaternion? Tipos de dados - Orient

1-robtarget-66 Data Types do Sistema e Rotinas


Tipos de dados shapedata

shapedata Dados da forma da zona global


shapedata é usado para descrever a geometria de uma zona global.

Descrição
As zonas globais podem ser definidas em três formas geométricas diferentes:

- uma caixa quadrada com todos os lados paralelos ao sistema de coordenadas


global e definida por uma instrução WZBoxDef
- uma esfera definida por uma instrução WZSphDef
- um cilindro paralelo ao eixo z do sistema de coordenadas global e definido por
uma instrução WZCylDef

A geometria de uma zona global é definida por uma das instruções anteriores e a ação
de uma zona global é definida pela instrução WZLimSup ou WZDOSet.

Exemplo
VAR wzstationary pole;
VAR wzstationary conveyor;
...
PROC ...
VAR shapedata volume;
...
WZBoxDef \Inside, volume, p_corner1, p_corner2;
WZLimSup \Stat, conveyor, volume;
WZCylDef \Inside, volume, p_center, 200, 2500;
WZLimSup \Stat, pole, volume;
ENDPROC

Um conveyor é definido com uma caixa e a supervisão desta área é ativada. Um


pole é definido como um cilindro e a supervisão desta zona é também ativada.
Se o robô entrar em uma destas áreas, a movimentação pára.

Características
shapedata é um tipo de dados sem valor.

Data Types do Sistema e Rotinas 1-shapedata-67


shapedata Tipos de dados

Informações relacionadas
Descritas em:
Zonas globais Deslocamento e Principios E/S
Zonas Globais
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando supervisão de limite de zona global Instruções - WZLimSup
Ativando conjunto de saída digital de zona Instruções - WZDOSet
global

1-shapedata-68 Data Types do Sistema e Rotinas


Tipos de dados signalxx

signalxx Sinais digitais e analógicos

Tipos de sinal com signalxx são usados para sinais de entradas e saídas digitais e
analógicas.

Os nomes dos sinais são definidos nos parâmetros do sistema e não são, consequente-
mente, definidos no programa.

Descrição
Tipo de dado Usado para
signalai sinais de entradas analógicas
signalao sinais de saídas analógicas
signaldi sinais de entradas digitais
signaldo sinais de saídas digitais
signalgi grupos de sinais de entradas digitais
signalgo grupos de sinais de saídas digitais

Variáveis do tipo signalxo contêm somente uma referência ao sinal. O valor é definido
usando uma instrução, ex. DOutput.

Variáveis do tipo signalxi contêm uma referência a um sinal, bem como a possibilidade
de reaver o valor diretamente no programa, caso seja usado em contexto de valor.

O valor do sinal de entrada pode ser lido diretamente no programa, como no ex.:

! Digital input
IF di1 = 1 THEN ...

! Digital group input


IF gi1 = 5 THEN ...

! Analog input
IF ai1 > 5.2 THEN ...

Limitações
Dado do tipo signalxx normalmente não é definido no programa. Entretanto, se isto
ocorrer, uma mensagem de erro será mostrada logo que uma instrução ou função que
se refira a este sinal seja executada. O tipo de dado pode, por outro lado, ser usado
como um parâmetro quando uma rotina é declarada.

Dado pré-definido
Os sinais definidos nos parâmetros do sistema podem sempre ser acessados por um
Data Types do Sistema e Rotinas 1-signalxx-69
signalxx Tipos de dados

programa usando variáveis de sinais pré-definidos (dado instalado). Isto deve


entretanto ser verificado pois se outro dado com o mesmo nome é definido, estes sinais
não poderão ser usados.

Características
Signalxo é um tipo de dado non-value. Logo, dados deste tipo não permitem operações
com valores orientados.
Signalxi é um tipo de dado semi-value.

Informação relacionada
Descrito em:
Sumário de instruções de entrada/saída Sumário RAPID -
Sinais de Entradas e Saídas
Funcionalidade de Entrada/Saída em geral Movimento e Principios E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
Sistema
Características de tipos de dados non-value Características Básicas - Tipos de
dados

1-signalxx-70 Data Types do Sistema e Rotinas


Tipos de dados speeddata

speeddata Dado de velocidade

Speeddata é usado para especificar a velocidade que o robô e eixos externos são mo-
vimentados.

Descrição
Dado de velocidade define a velocidade:

- do movimento do centro da ferramenta,


- da reorientação da ferramenta,
- do movimento dos eixos externos rotacional ou linearmente.

Quando diferentes tipos de movimentos são combinados, uma das velocidades fre-
quentemente limita os movimentos. A velocidade dos outros movimentos serão reduz-
idas de maneira que todos os movimentos sejam finalizados ao mesmo tempo.

A velocidade é também reduzida pela performace do robô. Isto difere, dependendo do


tipo do robô e do trajeto do movimento.

Componentes
v_tcp (velocidade do tcp) Tipo de dado: num

A velocidade do ponto central da ferramenta (TCP) em mm/s.

Se uma ferramenta estacionária ou eixos externos coordenados são usados, a


velocidade é especificada em relação ao objeto de trabalho.

v_ori (velocidade de orientação) Tipo de dado: num

A velocidade de reorientação em relação ao TCP expresso em graus/s.

Se uma ferramenta estacionária ou eixos externos coordenados são usados, a


velocidade é especificada em relação ao objeto de trabalho.

v_leax (vel. de eixos externos lineares) Tipo de dado: num

A velocidade dos eixos externos lineares em mm/s.

v_reax (vel. de eixos externos rotacionais) Tipo de dado: num

A velocidade dos eixos externos rotacionais em graus/s.

Data Types do Sistema e Rotinas 1-speeddata-71


speeddata Tipos de dados

Exemplo
VAR speeddata vmedium := [ 1000, 30, 200, 15 ];

O dado de velocidade vmedium é definido com as seguintes velocidades:

- 1000 mm/s para o TCP.


- 30 graus/s para reorientação da ferramenta.
- 200 mm/s para eixos externos lineares.
- 15 graus/s para eixos externos rotacionais.

vmedium.v_tcp := 900;

A velocidade do TCP é alterada para 900 mm/s.

Dado pré-definido
Um número de dados de velocidade já estão definidos no módulo do sistema BASE.

Nome Veloc.TCP Orientação Eixo ext. linear Eixo ext. rotacional


v5 5 mm/s 500o/s 5000 mm/s 1000o/s
v10 10 mm/s 500o/s 5000 mm/s 1000o/s
v20 20 mm/s 500o/s 5000 mm/s 1000o/s
v30 30 mm/s 500o/s 5000 mm/s 1000o/s
v40 40 mm/s 500o/s 5000 mm/s 1000o/s
v50 50 mm/s 500o/s 5000 mm/s 1000o/s
v60 60 mm/s 500o/s 5000 mm/s 1000o/s
v80 80 mm/s 500o/s 5000 mm/s 1000o/s
v100 100 mm/s 500o/s 5000 mm/s 1000o/s
v150 150 mm/s 500o/s 5000 mm/s 1000o/s
v200 200 mm/s 500o/s 5000 mm/s 1000o/s
v300 300 mm/s 500o/s 5000 mm/s 1000o/s
v400 400 mm/s 500o/s 5000 mm/s 1000o/s
v500 500 mm/s 500o/s 5000 mm/s 1000o/s
v600 600 mm/s 500o/s 5000 mm/s 1000o/s
v800 800 mm/s 500o/s 5000 mm/s 1000o/s
v1000 1000 mm/s 500o/s 5000 mm/s 1000o/s
v1500 1500 mm/s 500o/s 5000 mm/s 1000o/s
v2000 2000 mm/s 500o/s 5000 mm/s 1000o/s
v2500 2500 mm/s 500o/s 5000 mm/s 1000o/s
v3000 3000 mm/s 500o/s 5000 mm/s 1000o/s
v4000 4000 mm/s 500o/s 5000 mm/s 1000o/s
v5000 5000 mm/s 500o/s 5000 mm/s 1000o/s
vmax 5000 mm/s 500o/s 5000 mm/s 1000o/s
v6000 6000 mm/s 500o/s 5000 mm/s 1000o/s
v7000 7000 mm/s 500o/s 5000 mm/s 1000o/s

1-speeddata-72 Data Types do Sistema e Rotinas


Tipos de dados speeddata

Estrutura
< dataobject of speeddata >
< v_tcp of num >
< v_ori of num >
< v_leax of num >
< v_reax of num >

Informação relacionada
Descrito em:
Instruções de posicionamento Sumário RAPID - Movimento
Movimento/Velocidade em geral Movimento e Princípios de E/S - Po-
sicionamento na Execução do Pro-
grama
Definindo velocidade máxima Instruções - VelSet
Configuração dos eixos externos Guia do Usuário - Parâmetros do Sis-
tema
Performace de movimento Especificação do Produto

Data Types do Sistema e Rotinas 1-speeddata-73


speeddata Tipos de dados

1-speeddata-74 Data Types do Sistema e Rotinas


Tipos de dados string

string Strings

String é usado para caracteres em string (*string;text string)

Descrição
Um string de caracteres consiste em um certo número de caracteres (um máximo de
80) cercados por aspas (").

p.ex "Este é um caracter string".

Se as aspas fizerem parte do string, deverão ser escritas duas vezes,

p.ex "Este string contém um ""carácter".

Exemplo
VAR string text;
.
text := "start welding pipe 1";
TPWrite text;

O texto start welding pipe 1 está escrito na unidade de programação.

Limites
Um string poderá ter de 0 a 80 caracteres; inclusive as aspas extras.

Um string poderá conter qualquer dos caracteres especificados pela ISO 8859-1 assim
como caracteres de controle (não caracteres ISO 8859-1 com um código numérico
entre 0 e 255).

Data Types do Sistema e Rotinas 1-string-75


string Tipos de dados

Dados predefinidos
Um número de constantes predefinidas está disponível no sistema, e poderão ser usadas
juntamente com as funções string.

Nome Conjunto de caracteres

STR_DIGIT <dígito> ::=


0|1|2|3|4|5|6|7|8|9

STR_UPPER <letra maiúscula> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z|À|Á|Â|Ã
|Ä|Å|Æ|Ç|È|É|Ê|Ë|Ì|Í
| Î | Ï | 1) | Ñ | Ò | Ó | Ô | Õ | Ö | Ø
| Ù | Ú | Û | Ü | 2) | 3)

STR_LOWER <letra minúscula> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z|à|á|â|ã
|ä|å|æ|ç|è|é|ê|ë|ì|í
| î | ï | 1) | ñ | ò | ó | ô | õ | ö | ø
| ù | ú | û | ü | 2) | 3) | ß | ÿ

STR_WHITE <caracter em branco> ::=

1) Letra "eth" islandesa.


2) Letra "Y" com acento agudo.
3) Letra "thorn" islandesa.

As constantes flp1, ram1disk e stEmpty já estão definidas no módulo BASE do sistema.

CONST string flp1 :="flp1:"

CONST string ram1disk :="ram1disk:"

CONST string stEMPTY :="";

Informações relacionadas
Descritas em:
Operações usando strings Características Básicas - Expressões
Valores de string Características básicas-Elementos
Básicos

1-string-76 Data Types do Sistema e Rotinas


Tipos de dados symnum

symnum Número simbólico

Symnum é usado para representar um inteiro com uma constante simbólica.

Descrição
Uma constante symnum é criada para ser usada quando verificamos o retorno do valor
das funções OpMode e RunMode. Veja exemplo abaixo.

Exemplo
IF RunMode() = RUN_CONT_CYCLE THEN
.
.
ELSE
.
.
ENDIF

Dado pré-definido
As seguintes constantes simbólicas do tipo de dado symnum são pré-definidas e podem
ser usadas quando verificamos retorno de valores pelas funções OpMode e RunMode.

Valor Constante simbólica Comentário

0 RUN_UNDEF Modo de execução indefinido

1 RUN_CONT_CYCLE Modo de execução contínuo ou ciclo

2 RUN_INSTR_FWD Modo de execução instrução p/ frente

3 RUN_INSTR_BWD Modo de execução instrução p/ trás

4 RUN_SIM Modo de execução simulado

Valor Constante simbólica Comentário

0 OP_UNDEF Modo de operação indefinido

1 OP_AUTO Modo de operação automático

2 OP_MAN_PROG Modo de operação manual


màx. 250 mm/s

3 OP_MAN_TEST Modo de operação manual


velocidade plena, 100%

Data Types do Sistema e Rotinas 1-symnum-77


symnum Tipos de dados

Características
Symnum é um tipo de dado suposto do tipo num e consequentemente tem sua caracterís-
ticas.

Informação relacionada
Descrito em:
Tipos de dados em geral Características Básicas - Tipos de
dados

1-symnum-78 Data Types do Sistema e Rotinas


Tipos de dados Dado do sistema

Dado do sistema
Dado do sistema é um dado interno do robô que pode ser acessado e lido pelo pro-
grama. Ele pode ser usado para ler um estado atual, por exemplo, a velocidade máxima
atual.

A tabela seguinte contém uma lista de todos os dados do sistema.

Nome Descrição Tipo de Dado Alterado Ver também

C_MOTSET Ajustes do deslocamento atual, isto é: motsetdata Instruções Tipos de dados - motsetdata
- Velocidade máx. e sobreposição - VelSet Instruções - VelSet
- aceleração máxima - AccSet Instruções - AccSet
- movimento entre pontos singulares - SingArea Instruções - SingArea
- monitorando a configuração do eixo - ConfL,ConfJ Instruções - ConfL, ConfJ
- resolução do caminho - PathResol Instruções - PathResol
- supervisão da movimentação com valor de afi- - MotionSup Instruções - MotionSup
nação

C_PROGDISP Deslocamento do programa atual do robô e eixos progdisp Instruções Tipos de dados - progdisp
externos. - PDispSet Instruções - PDispSet
- PDispOn Instruções - PDispOn
- PDispOff Instruções - PDispOff
- EOffsSet Instruções - EOffsSet
- EOffsOn Instruções - EOffsOn
- EOffsOff Instruções - EOffsOff

ERRNO O último erro que ocorreu errnum O robô Tipos de dados - errnum
Sumário RAPID -
Reconhecimento de Erros

INTNO A última interrupção que ocorreu intnum O robô Tipos de dados - intnum
Sumário RAPID -Interrupções

Data Types do Sistema e Rotinas 1-Dado do sistema-79


Dado do sistema Tipos de dados

1-Dado do sistema-80 Data Types do Sistema e Rotinas


Tipos de dados taskid

taskid Identificação de tarefa


Taskid é usado para identificar tarefas de programa disponíveis no sistema.

Os nomes das tarefas de programa são definidos nos parâmetros de sistema e, conse-
qüentemente, não devem ser definidos no programa.

Descrição
Dados do tipo taskid contêm somente uma referência à tarefa de programa.

Limitações
Dados do tipo taskid não devem ser definidos no programa. Por outro lado, o tipo de
dados pode ser usado como um parâmetro na declaração de uma rotina.

Dados predefinidos
As tarefas de programa definidas nos parâmetros de sistema podem sempre ser acessa-
das a partir do programa (dados instalados).

Para todas as tarefas de programa do sistema, variáveis predefinidas do tipo de dados


taskid estarão disponíveis. A identidade da variável será "nome da tarefa"+"Id", ex.
para a tarefa MAIN, a identidade da variável será MAINId, TSK1 - TSK1Id etc.

Características
Taskid é um tipo de dados non-value. Isso significa que dados desse tipo não permitem
operações orientadas para valor.

Informações relacionadas
Descrito em:
Salvando módulos de programa Instrução - Save
Configuração de tarefas de programa Guia do Usuário - Parâmetros do
sistema
Características de tipos de dados non-value Características básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-taskid-81


taskid Tipos de dados

1-taskid-82 Data Types do Sistema e Rotinas


Tipos de dados errnum

testsignal Sinal de teste


O tipo de dados testsignal é utilizado quando o teste do sistema do robô é executado.

Descrição
Vários sinais de teste predefinidos estão disponíveis no sistema do robô. O tipo de
dados testsignal está disponível para simplificar a programação de instruções relativas
a manutenção e testes.

Exemplos
TestSign 2, revolution_counter, Orbit, 2, 1, 0;

revolution_counter é uma constante do tipo de dados testsignal.

Dados predefinidos
Várias constantes predefinidas para os vários sinais de teste do sistema do robô são car-
regadas no sistema quando da inicialização. O manual de serviço descreve de maneira
mais completa os sinais de teste.

Características
Testsignal é um tipo de dados pseudônimo para num e, conseqüentemente, herda suas
características.

Informações relacionadas
Descrito em:
Tipos de dados em geral, Características básicas -
tipos de dados pseudônimos Tipos de dados

Data Types do Sistema e Rotinas 1-errnum-83


errnum Tipos de dados

1-errnum-84 Data Types do Sistema e Rotinas


Tipos de dados tooldata

tooldata Dados da ferramenta

Tooldata é utilizado para descrever as características de uma ferramenta, por ex., uma
ponta de soldagem ou uma pinça.

Se a ferramenta estiver fixa no espaço (ferramenta estacionária), dados de ferramenta


comuns serão definidos para essa ferramenta e para a pinça que segura o objeto de
trabalho.

Descrição
Os dados da ferramenta afeta os movimentos do robô das seguintes formas:

- O ponto central da ferramenta (TCP) refere-se ao ponto que irá satisfazer o


desempenho de velocidade e o caminho especificado. Se a ferramenta for
reorientada ou se eixos externos forem usados, somente esse ponto seguirá o
caminho desejado na velocidade programada.
- Se uma ferramenta estacionária for usada, a velocidade e o caminho
programados estarão relacionados ao objeto de trabalho.
- As posições programadas referem-se à posição do TCP atual e a orientação em
relação ao sistema de coordenadas da ferramenta. Isso significa que se, por
exemplo, uma ferramenta for trocada por estar danificada, o programa antigo
ainda poderá ser usado se o sistema de coordenadas for redefinido.

Os dados de ferramenta também são usados ao mover o robô para:

- Definir o TCP que não deve ser movido quando a ferramenta é reorientada.
- Definir o sistema de coordenadas para facilitar a movimentação ou rotação nas
direções da ferramenta.

É importante sempre definir a carga de ferramenta atual e, quando utilizada, a


carga útil do robô também. Definições incorretas de dados da carga podem
resultar em sobrecarga da estrutura mecânica do robô.

Quando dados de ferramenta incorretos são especificados, isso pode acarretar as


seguintes conseqüências:

- Se o valor da carga especificada for maior que o valor real da carga;


-> O robô não será utilizado em sua capacidade máxima
-> A precisão da trajetória será afetada, incluindo um risco de “overshooting”
- Se o valor da carga especificada for inferior ao valor real da carga;
-> A precisão da trajetória será afetada, incluindo um risco de “overshooting”
-> Risco de sobrecarga da estrutura mecânica

Manual de Referência do RAPID 7-tooldata-85


tooldata Tipos de dados

Componentes
robhold (robô segurar) Tipo de dados: bool

Define se o robô está segurando a ferramenta:

- TRUE -> O robô está segurando a ferramenta.


- FALSE -> O robô não está segurando a ferramenta, por ex., uma ferramenta
estacionária.

tframe (estrutura da ferramenta) Tipo de dados: pose

O sistema de coordenadas da ferramenta, ou seja:

- A posição do TCP (x, y e z), em mm, expressa no sistema de coordenadas do


punho (veja a figura 1).
- A orientação do sistema de coordenadas da ferramenta, expressa no sistema de
coordenadas do punho como um quatérnio (q1, q2, q3 e q4) (veja a figura 1).

Se uma ferramenta estacionária for utilizada, a definição será feita em relação ao


sistema de coordenadas global.

Se a direção da ferramenta não for especificada, o sistema de coordenadas da


ferramenta e o sistema de coordenadas do punho irão coincidir.

O orifício de controle
O sistema de coordenadas do punho
Y
Z

O sistema de coordenadas da ferramenta

TCP
Y’
X
X’
Z’
Figura 10 Definição do sistema de coordenadas da ferramenta.

7-tooldata-86 Manual de Referência do RAPID


Tipos de dados tooldata

tload (carga da ferramenta) Tipo de dados: loaddata

A carga da ferramenta, ou seja:

- O peso da ferramenta, em kg.


- O centro de gravidade da ferramenta (x, y e z), em mm, expresso no sistema de
coordenadas do punho.
- A orientação do sistema de coordenada da carga da ferramenta, expressa no
sistema de coordenada do punho, defininindo os eixos de inércia da ferramenta.
A orientação do sistema de coordenadas da carga da ferramenta deve coincidir
com a orientação do sistema de coordenadas do punho. Deve ser sempre
definida como 1, 0, 0, 0.
- Os momentos de inércia da ferramenta em relação ao seu centro de massa
emtorno dos
eixos coordenados da carga da ferramenta, em kgm2.
Se todos os componentes inerciais forem definidos como tendo 0 kgm2, a
ferramenta será tratado como um ponto de massa.

O sistema de coordenadas do punho


Y IY
Sistema de coordenadas da carga da ferrame
Z Eixos inerciaisde carga da ferramenta
IZ

TCP
IX Y’
X Sistema de coordenadas da ferrame
X’
Z’

Figura 11 Definições de parâmetros de carga da ferramenta

Para obter maiores informações (como o sistema de coordenadas para ferramenta


estacionária ou restrições), consulte o tipo de dados loaddata.

Se uma ferramenta estacionária for usada, a carga da pinça ao segurar o objeto


de trabalho deverá ser definida.

Observe que somente a carga da ferramenta deve ser especificada. A carga útil
manuseada por uma pinça é conectada e desconectada por meio da instrução
GripLoad.

Manual de Referência do RAPID 7-tooldata-87


tooldata Tipos de dados

Exemplos
PERS tooldata gripper := [ TRUE, [[97.4, 0, 223.1], [0.924, 0, 0.383 ,0]],
[5, [23, 0, 75], [1, 0, 0, 0], 0, 0, 0]];

A ferramenta da Figura 10 é descrita utilizando-se os seguintes valores:

- O robô está segurando a ferramenta.


- O TCP está situado em um ponto 223,1 mm diretamente para fora do eixo 6 e
97,4 mm ao longo do eixo X do sistema de coordenadas do punho.
- As direções X e Z da ferramenta são giradas 45o em relação ao sistema de
coordenadas do punho.
- A ferramenta pesa 5 kg.
- O centro de gravidade encontra-se a um ponto situado 75 mm diretamente para
fora do eixo 6 e 23 mm ao longo do eixo X do sistema de coordenadas do
punho.
- A carga pode ser considerada um ponto de massa, ou seja, sem nenhum
momento de inércia.

gripper.tframe.trans.z := 225.2;

O TCP da ferramenta, gripper, é ajustado como 225,2 na direção z.

Limitações
Os dados da ferramenta devem ser definidos como uma variável persistente (PERS) e
não devem ser definidos dentro de uma rotina. Em seguida, os valores atuais serão
salvos quando o programa for armazenado em disquete, sendo recuperados no
carregamento.

Argumentos do tipo de dados de ferramenta em qualquer instrução de movimento


devem ser somente um persistente por inteiro (e não um elemento de matriz ou
componente de registro).

Dados predefinidos
A ferramenta tool0 define o sistema de coordenadas do punho, sendo a origem o centro
do flange de montagem. Tool0 pode sempre ser acessada a partir do programa, mas
nunca pode ser alterada (ela é armazenada no módulo de sistema BASE).

PERS tooldata tool0 := [ TRUE, [ [0, 0, 0], [1, 0, 0 ,0] ],


[0.001, [0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0] ];

7-tooldata-88 Manual de Referência do RAPID


Tipos de dados tooldata

Estrutura
< dataobject de tooldata >
< robhold de bool >
< tframe de pose >
< trans de pos >
< x de num >
< y de num >
< z de num >
< rot de orient >
< q1 de num >
< q2 de num >
< q3 de num >
< q4 de num >
< tload de loaddata >
< mass de num >
< cog de pos >
< x de num >
< y de num >
< z de num >
< aom de orient >
< q1 de num >
< q2 de num >
< q3 de num >
< q4 de num >
< ix de num >
< iy de num >
< iz de num >

Informações relacionadas
Descrito em:
Instruções de posicionamento Resumo do RAPID - Movimento
Sistema de coordenadas Princípios de movimento e E/S -
Sistemas de coordenadas
Definição de cara útil Instruções - Gripload
Definição de carga Tipos de dados - Dados de carga

Manual de Referência do RAPID 7-tooldata-89


tooldata Tipos de dados

REVISION PAGE
Document Registration number: MAN93046.URD
REVISADO POR DEP NOME DATA ASSINATURA

Autor KCF Sven-Erik Johansson

Projeto KCx Håkan Brantmark

Assunto KCx Håkan Brantmark

Outros

Documentação do Usuário MT Mats Källman 940308

Qualidade: Manual do KCR Mats Myhr 940303


Usuário

Teste: Manual do Usuário KC F Runge 940215

Fact: Manual de Usuário KCF HB, SEJ 940214

Final: Manual do Usuário MT

REVISION

REV. PAGE (P) DESCRIPTION DATE


CHAPT (C) DEPT./SIGN.

0.40 All First release, Approved by 921207 KCF/SEJ


Review I (Protocol ROL92067.MIN) KC/HB,TB, KCF/LÖ, ÅO, MT/MK
All Review2 (Protocol ROL92071.MIN) KCR/MM,SEL,JES, KCF/PE,ALL,SJ
A1 User documentation. Approved by KC/HB, KCF/SEJ 920217 MT/MK
w1.1 Acc. ROL93057.RPT and ROL93061.RPT 930509 KCF/SEJ
A2 User documentation. Approved by KC/HB, KCF/SEJ 930618 MT/MK
A3 English 930903 MT/MK
A4 M94, minor changes 940308 MT/MK
w4.1 Limitations/Only entire PERS 950127 KCF/SE
w4.2 Correction of tool0 definition 960204 KCF/SEJJ
w4.3 Restriction for tload 960225 KC/SEJ,JES
w4.4 Improvement limitation aom 981201 KSG/SEJO

7-tooldata-90 Manual de Referência do RAPID


Tipos de dados tpnum

tpnum Número da janela da Unidade de programação

tpnum se usa para representar o número da janela da Unidade de programação com


uma constante simbólica.

Descrição
Uma constante tpnum se destina a ser usada na instrução TPShow. Veja o exemplo
abaixo.

Exemplo
TPShow TP_PROGRAM;

A Production Window fica ativa se o sistema está no modo AUTO e a Program


Window fica ativa se o sistema está no modo MAN, após a execução desta
instrução.

Dados predefinidos
As seguintes constantes simbólicas do tipo de dados tpnum estão predefinidas e podem
ser usadas na instrução TPShow:

Valor Constante simbólica Comentário

1 TP_PROGRAM AUTO: Production Window


MAN: Program Window

2 TP_LATEST Última janela da Unidade de


programação usada

3 TP_SCREENVIEWER Janela do Visualizador de tela, se essa


opção estiver ativa

Características
tpnum é um pseudônimo de num e conseqüentemente herda suas características.

Data Types do Sistema e Rotinas 1-tpnum-91


tpnum Tipos de dados

Informações relacionadas
Descrito em:
Tipos de dados em geral, pseudônimos Características básicas - Data Types

Comunicação usando a unid. programação Resumo RAPID - Communication

Troca de janela na unidade de programação Instruções - TPShow

1-tpnum-92 Data Types do Sistema e Rotinas


Tipos de dados triggdata

triggdata Eventos de posicionamento - trigg

Triggdata é usado para armazenar dado sobre um evento de posicionamento durante a


movimentação do robô.

Um evento de posicionamento pode ter a forma de setar um sinal de saída ou executar


uma rotina de interrupção numa posição específica ao longo do trajeto de movimen-
tação do robô.

Descrição
Para definir as condições de uma respectiva medição de um evento de posicionamento,
variáveis do tipo triggdata são usadas. Os conteúdos dos dados da variável são forma-
dos em um programa usando as instruções TriggIO ou TriggInt, e são usadas junto com
as instruções TriggL, TriggC ou TriggJ.

Exemplo
VAR triggdata gunoff;

TriggIO gunoff, 5 \DOp:=gun, off;

TriggL p1, v500, gunoff, fine, gun1;

O sinal de saída digital gun é setado para o valor off quando o TCP está a 5mm
antes do ponto p1.

Características
Triggdata é um tipo de dado non-value.

Informação relacionada
Descrito em:
Definição dos triggs Instruções - TriggIO, TriggInt
Utilização dos triggs Instruções - TriggL, TriggC,
TriggJ
Características de tipos de dados non-value Características Básicas - Tipos de
dados

Data Types do Sistema e Rotinas 1-triggdata-93


triggdata Tipos de dados

1-triggdata-94 Data Types do Sistema e Rotinas


Tipos de dados tunetype

tunetype Servo tune type

Tunetype é usado para representar um inteiro com uma constante simbólica.

Descrição
Uma constante tunetype destina-se a ser usada como um argumento para a instrução
TuneServo. Veja o exemplo abaixo.

Exemplo
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;

Dados predefinidos
As constantes simbólicas seguintes do tipo de dado tunetype são predefinidas e podem
ser usadas como um argumento para a instrução TuneServo.

Valor Constante simbólica Comentário

0 TUNE_DF Reduz overshoots

1 TUNE_KP Afeta o ganho do controle de posição

2 TUNE_KV Afeta o ganho do controle de veloci-


dade

3 TUNE_TI Afeta o tempo de integração do con-


trole de velocidade

4 TUNE_FRIC_LEV Afeta o nível de compensação do atrito

5 TUNE_FRIC_RAMP Afeta a rampa de compensação do


atrito

6 TUNE_DG Reduz overshoots

7 TUNE_DH Reduz vibrações com cargas pesadas

8 TUNE_DI Reduz erros de caminho

9 TUNE_DK Reservado para uso futuro

Características
Tunetype é um tipo de dados igual para num e, conseqüentemente, herda suas ca-
racterísticas.

Data Types do Sistema e Rotinas 1-tunetype-95


tunetype Tipos de dados

Informações relacionadas
Descrito em:
Tipo de dados em geral, tipo de dados iguais Características Básicas - Tipos de
Dados
Uso do tipo de dados tunetype Instruções - TuneServo

1-tunetype-96 Data Types do Sistema e Rotinas


Tipos de dados wobjdata

wobjdata Dado do objeto de trabalho

Wobjdata é usado para descrever o objeto de trabalho que o robô solda, processa, mo-
vimenta, etc.

Descrição
Se objetos de trabalho são definidos em uma instrução de posicionamento, a posição
será baseada em coordenadas do objeto de trabalho. As vantagens disto são as seguin-
tes:

- Se o dado de posicionamento é colocado manualmente, como em uma pro-


gramação off-line, os valores podem freqüentemente ser tirados de um
desenho.
- Programas podem ser reutilizados rapidamente seguindo alterações na insta-
lação do robô. Se, por exemplo, a fixação é movida, somente o sistema de
coordenadas do usuário deve ser redefinido.
- Variações de como o objeto de trabalho é anexado podem ser compensadas.
Para isto, entretanto, algum tipo de sensor será necessário para posicionar o
objeto de trabalho.

Se uma ferramenta estacionária ou eixos externos coordenados são usados o objeto de


trabalho deve ser definido, desde que o trajeto e a velocidade estejam relacionados ao
objeto de trabalho ao invés do TCP.

Dado do objeto de trabalho pode também ser usado para movimentação:

- O robô pode ser movimentado nas direções do objeto de trabalho.


- A posição atual apresentada é baseada no sistema de coordenadas do objeto de
trabalho.

Componentes
robhold (robot hold) Tipo de dado: bool

Define se o robô está segurando ou não o objeto de trabalho:

- TRUE -> O robô está segurando o objeto de trabalho, isto é, usando uma fer-
ramenta estacionária.
- FALSE -> O robô não está segurando o objeto de trabalho, isto é, a ferra-
menta está fixada no robô.

Data Types do Sistema e Rotinas 1-wobjdata-97


wobjdata Tipos de dados

ufprog (base do usuário programada) Tipo de dado: bool

Define se um sistema de coordenadas fixado pelo usuário é usado ou não:

- TRUE -> Sistema de coordenadas fixado pelo usuário.


- FALSE -> Sistema de coordenadas do usuário móvel, isto é, eixos externos
coordenados são usados.

ufmec (un. mecânica da base do usuário) Tipo de dado: string

A unidade mecânica com a qual o robô se movimenta são coordenadas. Somente


especificado no caso de sistema de coordenadas do usuário móvel (ufprog é
FALSE).

Especificado com o nome que é definido nos parâmetros do sistema, exemplo:


"orbit_a".

uframe (base do usuário) Tipo de dado: pose

O sistema de coordenadas do usuário, isto é, a posição da superfície de trabalho


ou fixação atual (veja Figura 1):

- A posição de origem do sistema de coordenadas (x, y e z) em mm.


- A rotação do sistema de coordenadas, expressa como um quaternion (q1, q2, q3,
q4).

Se a ferramenta está fixada no robô, o sistema de coordenadas do usuário é defi-


nido no sistema de coordenadas global (no sistema de coordenadas do punho se
uma ferramenta estacionária for usada).

Quando os eixos externos coordenados são usados (ufprog é FALSE), o sistema


de coordenadas do usuário é definido nos parâmetros do sistema.

oframe (base do objeto) Tipo de dado: pose

O sistema de coordenadas do objeto, isto é, a posição do objeto de trabalho atual


(veja Figura 1):

- A posição de origem do sistema de coordenadas (x, y e z) em mm.


- A rotação do sistema de coordenadas, expressa como um quaternion (q1, q2, q3,
q4).

O sistema de coordenadas do objeto é definido no sistema de coordenadas do


usuário.

1-wobjdata-98 Data Types do Sistema e Rotinas


Tipos de dados wobjdata

Coordenadas de ferramenta
Y
TCP
X

Z Z
Z Coordenadas do usuário
Y Z Ccoord. do objeto

Z X Y
Coordenadas de base Y X

Y X

X
Coordenadas global
Figure 12 Os vários sistemas de coordenadas do robô (quando a ferramenta está fixada no
robô).

Exemplo
PERS wobjdata wobj2 :=[ FALSE, TRUE, "", [ [300, 600, 200], [1, 0, 0 ,0] ],
[ [0, 200, 30], [1, 0, 0 ,0] ] ];

O objeto de trabalho na Figura 1 é descrito usando os seguintes valores:

- O robô não está segurando o objeto de trabalho.


- O sistema de coordenadas fixado pelo usuário é usado.
- O sistema de coordenadas do usuário não é rotacionado e as coordenadas da sua
origem são x = 300, y = 600 e z = 200 mm no sistema de coordenadas global.
- O sistema de coordenadas do objeto não é rotacionado e as coordenadas da sua
origem são x = 0, y = 200 e z = 30 mm no sistema de coordenadas do usuário.

wobj2.oframe.trans.z := 38.3;

- A posição do objeto de trabalho wobj2 é ajustada 38.3 mm na direção z.

Limitações
O dado do objeto de trabalho deve ser definido como uma variável persistente (PERS)
e não deve ser definido em uma rotina. Os valores atuais são então salvos quando o
programa é armazenado no disquete e são recuperados quando o programa é carregado.

Argumentos do tipo de dado objeto de trabalho em qualquer instrução de movimento


deve sempre ser uma persistente inteira (não um elemento matricial ou componente de
registro).

Data Types do Sistema e Rotinas 1-wobjdata-99


wobjdata Tipos de dados

Dado pré-definido
O dado de objeto de trabalho wobj0 é definido como uma maneira do sistema de
coordenadas do objeto coincidir com o sistema de coordenadas global. O robô não seg-
ura o objeto de trabalho.

Wobj0 pode sempre ser acessado pelo programa, mas nunca pode ser alterado (ele está
armazenado no módulo de sistema BASE).

PERS wobjdata wobj0 := [ FALSE, TRUE, "", [ [0, 0, 0], [1, 0, 0 ,0] ],
[ [0, 0, 0], [1, 0, 0 ,0] ] ];

Estrutura
< dataobject of wobjdata >
< robhold of bool >
< ufprog of bool>
< ufmec of string >
< uframe of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< oframe of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >

Informação relacionada
Descrito em:
Instruções de posicionamento Sumário RAPID - Movimento
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas
Eixos externos coordenados Movimento e Princípios de E/S - Siste-
mas de Coordenadas

1-wobjdata-100 Data Types do Sistema e Rotinas


Tipos de dados wobjdata

Calibração de eixos externos coordenados Guia do Usuário - Parâmetros do Sis-


tema

Data Types do Sistema e Rotinas 1-wobjdata-101


wobjdata Tipos de dados

1-wobjdata-102 Data Types do Sistema e Rotinas


Tipos de dados wzstationary

wzstationary Dados da zona global estacionária


wzstationary (zona global estacionária) é usada para identificar uma zona global esta-
cionária e somente pode ser usada em uma rotina de eventos conectada ao evento
POWER ON.

Uma zona global é supervisionada enquanto o robô se movimenta, tanto durante a


execução do programa como durante a movimentação. Se o TCP do robô atingir esta
zona global, o movimento pára ou um sinal de saída digital é ajustado ou reposto.

Descrição
Uma zona global wzstationary é definida e ativada por uma instrução WZLimSup ou
WZDOSet.

WZLimSup ou WZDOSet dá um valor numérico à variável ou dado persistente do tipo


de dados stationary. O valor identifica a zona global.

Uma zona global estacionária está sempre ativa e é eliminada somente na partida a
quente (desligue e ligue o sistema ou mude os parâmetros do sistema). Não é possível
desativar, ativar ou eliminar uma zona global estacionária através das instruções
RAPID.

As zonas globais estacionárias deverão ser ativadas desde a ligação e deverão ser defi-
nidas em uma rotina de eventos POWER ON ou em uma tarefa semiestática.

Exemplo
VAR wzstationary conveyor;
...
PROC POWER_ON()
VAR shapedata volume;
...
WZBoxDef \Inside, volume, p_corner1, p_corner2;
WZLimSup \Stat, conveyor, volume;
ENDPROC

Um conveyor é definido como uma caixa quadrada (o volume abaixo da correia).


Se o robô atingir este volume, o movimento é parado.

Limitações
Um dado wzstationary pode somente ser definido como uma variável (VAR) ou como
um dado persistente (PERS). Ele pode ser global na tarefa ou local dentro de um
módulo, mas não local dentro de uma rotina.

Data Types do Sistema e Rotinas 1-wzstationary-103


wzstationary Tipos de dados

Os argumentos do tipo wzstationary devem ser somente dados inteiros (não elementos
de matriz ou componentes de registro).

O valor init para o tipo de dados wzstationary não é usado pelo sistema. Quando usando
uma variável persistente em um sistema multitarefas, ajuste o valor init para 0 em
ambas as tarefas, ex. PERS wzstationary share_workarea: = [0];

Características
wzstationary é dado do tipo pseudônimo de wztemporary e herda as suas característi-
cas.

Informações relacionadas
Descritas em:
Zonas Globais Principios de Deslocamento e E/S -
Zonas Globais
Forma da zona global Tipos de Dados - shapedata.
Zona global temporária Tipos de dados - wztemporary
Ativando espaço de trabalho restrito Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet

1-wzstationary-104 Data Types do Sistema e Rotinas


Tipos de dados wztemporary

wztemporary Dados da zona global temporária


wztemporary (zona global temporária) é usada para identificar uma zona global tem-
porária e pode ser usada em qualquer parte do programa RAPID para a tarefa MAIN.

Uma zona global é supervisionada enquanto o robô se movimenta durante a execução


do programa e a movimentação. Se o TCP do robô entrar nesta zona global, o mo-
vimento é parado e um sinal de saída digital é ajustado ou reposto.

Descrição
Uma zona global wztemporary é definida e ativada por uma instrução WZLimSup ou
WZDOSet.

WZLimSup ou WZDOSet dá um valor numérico à variável ou dado persistente do tipo


wztemporary. O valor identifica a zona global.

Uma vez definida e ativada, uma zona global temporária pode ser desativada por
WZDisable, ativada novamente por WZEnable e eliminada por WZFree.

Todas as zonas globais temporárias do sistema são automaticamente eliminadas e


todos os objetos de dados do tipo wztemporary na tarefa MAIN são ajustados para 0:

- quando um novo programa é carregado na tarefa MAIN


- ao iniciar a execução do programa a partir do início da tarefa MAIN

Exemplo
VAR wztemporary roll;
...
PROC ...
VAR shapedata volume;
CONST pos t_center := [1000, 1000, 1000];
...
WZCylDef \Inside, volume, p_center, 400, 1000;
WZLimSup \Temp, roll, volume;
ENDPROC

Uma variável wztemporary, roll, é definida como um cilindro. Se o robô atingir


esse volume, o movimento será interrompido.

Limitações
Um dado wztemporary pode ser definido como uma variável (VAR) ou como um dado
persistente (PERS). Ele pode ser global na tarefa ou local dentro do módulo, mas não
local dentro de uma rotina.

Manual de Referência do RAPID 7-wztemporary-105


wztemporary Tipos de dados

Os argumentos do tipo wztemporary devem somente ser dados inteiros (não elementos
de matriz ou componentes de registro).

Uma zona global temporária só pode ser definida (WZLimSup ou WZDOSet) e liberada
(WZFree) na tarefa MAIN. Definições de zonais globais temporárias no fundo pode-
riam afetar a execução do programa na tarefa MAIN. As instruções WZDisable e
WZEnable podem ser usadas na tarefa de segundo plano. Ao usar uma variável per-
sistente em um sistema multitarefa, ajuste o valor init para 0,
ex. PERS wztemporary share_workarea := [0];

Estrutura
<dataobject of wztemporary>
<wz of num>

Informações relacionadas
Descritas em:
Zonas Globais Principios de Deslocamento e E/S -
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Zona global estacionária Tipos de dados - wzstationary
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Desativar zona global Instruções - WZDisable
Eliminar zona global Instruções - WZFree

7-wztemporary-106 Manual de Referência do RAPID


Tipos de dados zonedata

zonedata Dados de zona

Zonedata é usado para especificar como uma posição será finalizada, isto é, quão
próximo da posição programada o eixo deverá estar antes de mover-se em direção a
próxima posição.

Descrição
Uma posição pode ser finalizada em forma de um ponto parado ou de um ponto de pas-
sagem.

Um ponto parado significa que o robô e eixos externos devem chegar na posição espe-
cificada (ficar parado) antes da execução do programa continuar com a próxima
instrução.

Um ponto de passagem significa que a posição programada nunca é atingida.Em vez


disso, a direção de movimento é alterada antes da posição ser atingida.Podem ser defi-
nidas duas zonas (graus) diferentes para cada posição:

- A zona para o trajeto do TCP.


- A zona expandida para reorientação da ferramenta e para os eixos externos
.

Zona da trajetória Posição


TCP programada

Início de reorientação em direção


à posição seguinte

Início do trajeto de escanteio TCP


Zona expandida

Figura 13 As zonas de um ponto de passagem.

As zonas funcionam da mesma maneira durante o movimento do eixo, mas a dimensão


da zona pode diferir um pouco da que foi programada.

A dimensão da zona não pode ser superior a metade da distância até à posição mais
próxima (para a frente ou para trás). Se for especificada uma zona com uma dimensão
maior, esta é automaticamente reduzida pelo robô

Data Types do Sistema e Rotinas 1-zonedata-107


zonedata Tipos de dados

A zona para o trajeto do TCP

Um trajeto circular (parábola) é criado assim que a borda da zona seja alcançada
(veja Figura 13).

A zona para reorientação da ferramenta

A reorientação começa logo que o TPC atinge a zona expandida. A ferramenta é


reorientada de forma a que a orientação seja a mesma que sai da zona como se
estivesse na mesma posição quando os pontos de parada foram programados.A
reorientação será mais uniforme se a dimensão da zona for aumentada, e há
menos risco de ter que reduzir a velocidade para executar a reorientação.

Figura 14a Três posições são programadas, a última com uma orientação de ferramenta difer-
ente.

Figura 14b Se todas as posições são pontos de parada, a execução do programa será como esta.

Tamanho da zona
Figura 14c Se a posição mediana for um ponto de passagem, a execução do programa será como
esta.

A zona para eixos externos

Eixos externos iniciam o movimento em direção à próxima posição logo que o


TCP alcance a zona para eixos externos. Desta forma, um eixo mais lento pode
iniciar a aceleração um estágio mais cedo e então executar igualmente.

Zona reduzida
Com reorientações maiores da ferramenta ou com maiores movimentos dos eixos
externos, a zona expandida e mesmo a zona TPC podem ser reduzidas pelo robô.
A zona será definida como a dimensão relativa mais pequena da zona com base

1-zonedata-108 Data Types do Sistema e Rotinas


Tipos de dados zonedata

nos componentes da zona (veja a página seguinte) e o movimento programado.


90 mm 60 mm
MoveL com 200 mm movimentos pzone_ori
da ferramenta, 25o de reorientação pzone_tcp
P1 da ferramenta e com a zona z60 P2
As dimensões relativas da zona são
pzone_tcp
________________________ = 60/200 = 30%
comprimento do movimento P1 - P2 9o
pzone_ori zone_ori
________________________ = 90/200 = 45%
comprimento do movimento P1 - P2
zone_ori
________________________ = 9o/25o = 36%
ângulo de reorientação P1 - P2

Figura 15 Exemplo de zona reduzida para reorientação da ferramenta para 36% do movimento
devido a zone_ori.

MoveL com 200 mm movimentos 90 mm 60 mm


da ferramenta, 60o de reorientação pzone_ori pzone_tcp 9o
da ferramenta e da zona z60 zone_ori

P1 P2

As dimensões relativas da zona são


pzone_tcp
________________________ = 60/200 = 30%
comprimento do movimento P1 - P2
zone_ori
________________________ = 9o/60o = 15%
ângulo de reorientação P1 - P2

Figura 16 Exemplo de zona reduzida para reorientação da ferramenta e da trajetória do TCP


para 15% do movimento devido a zone_ori.

Quando eixos externos estão ativos, eles afetam os tamanhos relativos da zona con-
forme as fórmulas abaixo:

pzone_eax
________________________
comprimento do movimento P1 - P2

zone_leax
________________________
comprimento do movimento máx. linear do eixo ext. P1 - P2

zone_reax
________________________
ângulo de reorientação máx. do eico externo rotativo P1 - P2

NOTA: Se a zona do TCP for reduzida devido a zone_ori, zone_leax ou zone_reax, o


planejador de trajetória entrará em um modo que possa gerenciar o caso de nenhum
movimento do TCP. Se houver um movimento do TCP quando estiver nesse modo, a
velocidade não será compensada pela curvatura da trajetória em uma zona de canto.
Isso causará, por exemplo, uma redução de velocidade de 30% em um canto de 90
graus. Se isso for um problema, aumente o componente de zona de limitação.

Data Types do Sistema e Rotinas 1-zonedata-109


zonedata Tipos de dados

Componentes
finep (ponto fino) Tipo de dado: bool

Define se o movimento deve terminar como um ponto de parada (ponto fino) ou


como um ponto de passagem.

- TRUE -> O movimento finaliza como um ponto parado.


As componentes restantes não são usadas.
- FALSE -> O movimento finaliza como um ponto de passagem.

pzone_tcp (zona do trajeto do TCP) Tipo de dado: num

O tamanho (o raio) da zona em mm.

A zona expandida será definida como a dimensão relativa mais pequena da zona
com base nos seguintes componentes e no movimento programado.

pzone_ori (zona do trajeto de orientação) Tipo de dado: num

O tamanho da zona (o raio) para a reorientação da ferramenta. O tamanho é defi-


nido como a distância do TCP em relação ao ponto programado em mm.

A dimensão deve ser maior do que o valor correspondente para pzone_tpc.Se for
especificado um valor mais baixo, a dimensão é automaticamente aumentada
para ficar igual a pzone_tcp.

pzone_eax (zona do trajeto dos eixos externos) Tipo de dado: num

O tamanho da zona (o raio) para eixos externos. O tamanho é definido como a


distância do TCP em relação ao ponto programado em mm.

A dimensão deve ser maior do que o valor correspondente para pzone_tcp.

Se for especificado um valor mais baixo, a dimensão é automaticamente aumen-


tada para ficar igual a pzone_tcp.

zone_ori ( zona da orientação) Tipo de dado: num

O tamanho da zona para a reorientação da ferramenta em graus. Se o robô está


segurando o objeto de trabalho, isto significa o ângulo de rotação do objeto de
trabalho.

zone_leax ( zona p/eixos externos lineares) Tipo de dado: num

O tamanho da zona para eixos externos lineares em mm.

zone_reax ( zona p/eixos externos rotacionais) Tipo de dado: num

O tamanho da zona para eixos externos rotacionais em graus.

1-zonedata-110 Data Types do Sistema e Rotinas


Tipos de dados zonedata

Exemplos
VAR zonedata path := [ FALSE, 25, 40, 40, 10, 35, 5 ];

O dado de zona path é definido com as seguintes características:

- O tamanho da zona para o trajeto do TCP é 25 mm.


- O tamanho da zona para reorientação da ferramenta é 40 mm (movimento do
TCP).
- O tamanho da zona para eixos externos é 40 mm (movimento do TCP).

Se o TCP ainda se mantiver imóvel, ou se houver uma grande reorientação, ou


se houver um movimento muito grande dos eixos externos em relação à zona,
nesse caso aplica-se o seguinte:

- O tamanho da zona para reorientação da ferramenta é 10 graus.


- O tamanho da zona de eixos externos lineares é 35 mm.
- O tamanho da zona de eixos externos rotacionais é 5 graus.

path.pzone_tcp := 40;

O tamanho da zona do trajeto do TCP é ajustado para 40 mm.

Dados predefinidos
Um número de dados de zona já estão definidos no módulo do sistema BASE.

Pontos de parada

Nome
fine 0 mm

Pontos de passagem

Movimento TCP Roerientação da ferramenta


Nome Trajeto TCPOrientação Eixos ext. Orientação Eixos linearesEixos rota-

Data Types do Sistema e Rotinas 1-zonedata-111


zonedata Tipos de dados

tivos
z1 1 mm 1 mm 1 mm 0.1 o 1 mm 0.1 o
z5 5 mm 8 mm 8 mm 0.8 o 8 mm 0.8 o
z10 10 mm 15 mm 15 mm 1.5 o 15 mm 1.5 o
z15 15 mm 23 mm 23 mm 2.3 o 23 mm 2.3 o
z20 20 mm 30 mm 30 mm 3.0 o 30 mm 3.0o
z30 30 mm 45 mm 45 mm 4.5 o 45 mm 4.5 o
z40 40 mm 60 mm 60 mm 6.0 o 60 mm 6.0 o
z50 50 mm 75 mm 75 mm 7.5 o 75 mm 7.5 o
z60 60 mm 90 mm 90 mm 9.0 o 90 mm 9.0 o
z80 80 mm 120 mm 120 mm 12 o 120 mm 12 o
z100 100 mm 150 mm 150 mm 15 o 150 mm 15 o
z150 150 mm 225 mm 225 mm 23 o 225 mm 23 o
z200 200 mm 300 mm 300 mm 30 o 300 mm 30 o

Estrutura
< data object of zonedata >
< finep of bool >
< pzone_tcp of num >
< pzone_ori of num >
< pzone_eax of num >
< zone_ori of num >
< zone_leax of num >
< zone_reax of num >

Informação relacionada
Descrito em:
Instruções de posicionamento Sumário RAPID - Movimento
Movimentos/Trajetos em geral Movimento e Princípios de E/S - Posi-
cionamento na Execução do Programa
Configuração dos eixos externos Guia do Usuário - Parâmetros do Sis-
tema

1-zonedata-112 Data Types do Sistema e Rotinas


Instruções

ÍNDICE

“:=” Designa um valor


AccSet Reduz a aceleração
ActUnit Ativa uma unidade mecânica
Add Adiciona um valor numérico
AliasIO Define sinal de E/S com pseudônimo
Break Parada na execução do programa
ProcCall Chama uma nova rotina
CallByVar Chamar um procedimento com uma variável
Clear Apaga um valor
ClearIOBuff Limpar buffer de entrada de
um canal serial
ClkReset Zera o cronômetro
ClkStart Liga o cronômetro
ClkStop Parar o cronômetro
Close Fecha um arquivo ou um canal serial
Comment Comentário
ConfJ Controla a config. durante movimento eixo a eixo
ConfL Monitora a configuração durante movimento linear
CONNECT Conecta uma interrupção a uma rotina trap
DeactUnit Desativa uma unidade mecânica
Decr Decremento de 1
EOffsOff Desativa o offset para eixos externos
EOffsOn Ativa o offset para eixos externos
EOffsSet Ativa o offset para eixos externos usando um valor
ErrWrite Escreve uma Mensagem de Erro
EXIT Termina a execução do programa
ExitCycle Interromper ciclo atual e iniciar seguinte
FOR Repete por um certo número de vezes
GetSysData Dados do sistema Get
GOTO Vai para uma nova instrução
GripLoad Define a carga do robô
IDelete Cancela uma interrupção
IDisable Desabilita interrupções
IEnable Habilita interrupções
Compact IF Se uma condição é alcançada, então... (uma instrução)
IF Se uma condição é satisfeita, então ...; do contrário ...

Data Types do Sistema e Rotinas 2-113


Instructions

Incr Incrementa de 1
InvertDO Inverte o valor de um sinal de saída digital
IODisable Desativar unidade de E/S
IOEnable Ativar unidade de E/S
ISignalAI Interrupções de sinal de entrada analógico
ISignalAO Interrupções do sinal de saída analógica
ISignalDI Ordena interrupções de um sinal de entrada digital
ISignalDO Interrupções de um sinal de saída digital
ISleep Desativa uma interrupção
ITimer Ordena uma interrupção com tempo determinado
IVarValue Ordena uma variável de valor de interrupção
IWatch Ativa uma interrupção
label Nome da linha
Load Carregar o módulo de um programa durante a execução
MechUnitLoad Define uma carga para
uma unidade mecânica
MoveAbsJ Move o robô para posição absoluta de junção
MoveC Move o robô circularmente
MoveJ Move o robô com movimento eixo a eixo
MoveL Move o robô linearmente
MoveCDO Move circularmente o robô
e ajusta a saída digital no canto
MoveJDO Move o robô por movimento de eixo e ajusta a saída digital no canto
MoveLDO Move o robô linearmente
e ajusta a saída digital no canto
MoveCSync Movimenta circularmente o robô
e executa um procedimento RAPID
MoveJSync Move o robô por movimento de eixo
e executa um procedimento RAPID
MoveL Sync Move linearmente o robô
e executa um procedimento RAPID
Open Abre um arquivo ou canal serial
PathResol Sobrepor a resolução do caminho
PDispOff Desativa deslocamento de programa
PDispOn Ativa deslocamento de programa
PDispSet Ativa deslocamento de programa usando um valor
PulseDO Gera um pulso de um sinal de saída digital
RAISE Chama um tratamento de erro

2-114 Data Types do Sistema e Rotinas


Instructions

ReadAnyBin Ler dados de um


arquivo ou canal serial binário
Reset Desliga um sinal de saída digital
RestoPath Retoma a trajetória após uma interrupção
RETRY Reinicia seguindo um erro
RETURN Termina a execução de uma rotina
Rewind Rebobinar a posição do arquivo
Save Salvar um módulo de programa
SearchC Pesquisa circularmente usando o robô
SearchL Pesquisa linearmente usando o robô
Set Liga um sinal de saída digital
SetAO Muda o valor de um sinal de saída analógico
SetDO Muda o valor de um sinal de saída digital
SetGO Muda o valor de um grupo
de sinais de saída digital
SingArea Define interpolação em torno de pontos singulares
SpyStart Iniciar gravação de dados
em tempo de execução
SpyStop Interromper gravação de dados
em tempo de execução
SoftAct Ativa o servo soft
SoftDeact Desativa o servo soft
StartLoad Carregar um módulo de programa durante a execução
StartMove Reinicia o movimento do robô
Stop Parar a execução do programa
StopMove Pára o movimento do robô
StorePath Salva a trajetória quando ocorre uma interrupção
TEST Dependendo do valor de uma expressão ...
TestSign Saída dos sinais de teste
TPErase Apaga texto impresso na unidade de programação
TPReadFK Lê teclas de função
TPReadNum Lê um número da unidade de programação
TPShow Trocar janela na unidade de programação
TPWrite Escreve na unidade de programação
TriggC Movimento circular do robô com eventos
TriggEquip Define uma posição-tempo fixo por
um evento de E/S
TriggInt Define uma posição relacionada à interrupção

Data Types do Sistema e Rotinas 2-115


Instructions

TriggIO Define uma posição fixada por um evento de E/S


TriggJ Movimentos dos eixos do robô com eventos
TriggL Movimentos lineares do robô com eventos
TRYNEXT Pula uma instrução que causou um erro
TuneReset Desliga o ajuste de servo
TuneServo Ajuste de Servo
UnLoad Descarregar um módulo de um programa durante a execução
WaitDI Espera um sinal de entrada digital
WaitDO Espera até que um sinal de saída digital seja ligado
WaitLoad Conecta o módulo carregado à tarefa
VelSet Muda a velocidade programada
WHILE Repetir enquanto ...
Write Escreve em um arquivo tipo texto ou canal serial
WriteAnyBin Escreve dados em um
canal serial ou arquivo binário
WriteBin Escreve para um canal serial binário
WriteStrBin Escrever uma string para um canal serial binário
WaitTime Espera um tempo determinado
WaitUntil Espera uma condição ser satisfeita
WZBoxDef Definir uma zona global em forma de caixa
WZCylDef Definir uma zona global em forma de cilindro
WZDisable Desativar a supervisão da zona global temporária
WZDOSet Ativar a zona global para ajustar a saída digital
WZEnable Ativar supervisão da zona global temporária
WZFree Eliminar supervisão da zona global temporária
WZLimSup Ativar supervisão do limite da zona global
WZSphDef Definir uma zona global em forma de esfera

2-116 Data Types do Sistema e Rotinas


Instruções “:=”

“:=” Designa um valor


A instrução “:=” é usada para designar um novo valor ao dado. Este valor pode ser
desde um valor constante até uma expressão aritmética, ex. reg1+5*reg3.

Exemplos
reg1 := 5;

Para reg1 é designado o valor 5.

reg1 := reg2 - reg3;

Para reg1 é designado o valor do cálculo reg2-reg3.

counter := counter + 1;

counter é aumentado em um.

Argumentos
Data := Value
Data DataType: All

Um novo valor é designado ao dado.

Value DataType:Same as Data

O valor desejado.

Exemplos
tool1.tframe.trans.x := tool1.tframe.trans.x + 20;

O TCP para tool1 é deslocado 20 mm na direção-X.

pallet{5,8} := Abs(value);

A um elemento na matriz pallet é designado um valor igual ao valor absoluto da


variável value.

Data Types do Sistema e Rotinas 2-“:=”-117


“:=” Instruções

Limitações
O dado (o dado o qual o dado deve ser mudado) não deve ser

- uma constante
- um tipo de dado sem valor.

O dado e o valor devem ter tipos de dado similares (o mesmo).

Sintaxe
(EBNF)
<designação de destino> ’:=’ <expressão> ’;’
<designação de destino> ::=
<variável>
| <persistente>
| <parâmetro>
| <VAR>

Informações relacionadas
Descrito em:
Expressões Características Básicas- Expressões
DataType sem valor Características Básicas - Tipo de dados
Designando um valor inicial ao dado Características Básicas - Dados
Designando manualmente um valor ao dado Programando e Testando

2-“:=”-118 Data Types do Sistema e Rotinas


Instruções AccSet

AccSet Reduz a aceleração


AccSet é usado quando manipula-se cargas frágeis. Permite acelerações e desaceler-
ações lentas, que resulta em suaves movimentos do robô.

Exemplos
AccSet 50, 100;

A aceleração é limitada em 50% do valor normal.

AccSet 100, 50;

A rampa de aceleração é limitada em 50% do valor normal.

Argumentos
AccSet Acc Ramp
Acc DataType: num

Aceleração e desaceleração como uma porcentagem do valor normal.


100% corresponde a aceleração máxima. Valor máximo: 100%.
Valor de entrada < 20% dá 20% de aceleração máxima.

Ramp DataType: num

A taxa de aceleração e desaceleração aumenta como uma porcentagem do valor


normal (veja Figure 17). Solavancos podem ser restringidos por redução deste
valor.
100% corresponde a taxa máxima. Valor máximo: 100%.
Valor de entrada < 10% dá 10% de taxa máxima.

Data Types do Sistema e Rotinas 2-AccSet-119


AccSet Instruções

Aceleração

Tempo
AccSet 100, 100, i.e.aceleração normal
Aceleração Aceleração

Tempo Tempo
AccSet 30, 100 AccSet 100, 30
Figure 17 Reduzindo a aceleração resulta em movimentos suaves.

Execução do programa
A aceleração é aplicada ao robô e para eixos externos, até que uma nova instrução Acc-
Set seja executada.

O valor default (100%) são automaticamente fixados

- numa partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
AccSet
[ Acc ’:=’ ] < expressão (IN) do num > ’,’
[ Ramp ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Instruções de posicionamento Sumário RAPID - Movimento

2-AccSet-120 Data Types do Sistema e Rotinas


Instruções ActUnit

ActUnit Ativa uma unidade mecânica


ActUnit é usada para ativar uma unidade mecânica.

Pode ser usada para determinar qual é unidade a ser ativada quando, por exemplo, uni-
dades de drive comuns são usadas.

Exemplo
ActUnit orbit_a;

Ativação do orbit_a da unidade mecânica.

Argumentos
ActUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit

O nome da unidade mecânica a ser ativada.

Execução do programa
Quando o robô e eixos externos tiverem que chegar ao mesmo tempo, a unidade
mecânica especificada é ativada. Isto significa que é controlada e monitorada pelo
robô.

Se várias unidades mecânicas compartilham uma unidade de drive comum, a ativação


de uma dessas unidades também irá conectar aquela unidade à unidade de drive
comum.

Limitações
A instrução ActUnit não pode ser usada em

- um programa de sequência StorePath ... RestoPath


- uma rotina RESTART

A instrução de movimento anterior a essa instrução deve ser concluída com um ponto
de parada, a fim de fazer um reinício dessa instrução se houver uma falha de energia.

Data Types do Sistema e Rotinas 2-ActUnit-121


ActUnit Instruções

Sintaxe
ActUnit
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’;’

Informações relacionadas
Descrito em:
Desativando unidades mecânicas Instruções - DeactUnit
Unidades mecânicas DataTypes - mecunit
Outros exemplos Instruções - DeactUnit

2-ActUnit-122 Data Types do Sistema e Rotinas


Instruções Add

Add Adiciona um valor numérico


Add é usado para adicionar ou subtrair um valor de uma variável numérica ou de uma
persistente.

Exemplos
Add reg1, 3;

3 é adicionado em reg1, i.e. reg1:=reg1+3.

Add reg1, -reg2;

O valor de reg2 é subtraído de reg1, i.e. reg1:=reg1-reg2.

Argumentos
Add Name AddValue
Name DataType: num

O nome da variável ou persistente a ser mudada.

AddValue DataType: num

O valor a ser adicionado.

Sintaxe
Add
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’,’
[ AddValue ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Incrementa uma variável em 1 Instruções - Incr
Decrementa uma variável em 1 Instruções - Decr
Alterando dado usando uma expressão Instruções - :=
arbitrária, ex. multiplicação

Data Types do Sistema e Rotinas 2-Add-123


Add Instruções

2-Add-124 Data Types do Sistema e Rotinas


Instruções AliasIO

AliasIO Define sinal de E/S com pseudônimo


AliasIO é usado para definir um sinal de qualquer tipo com um pseudônimo
ou para usar sinais em módulos de tarefa internos.

Os sinais com pseudônimos podem ser usados em programas genéricos predefinidos,


sem qualquer modificação do programa antes de executar em diferentes instalações de
robô.

A instrução AliasIO deve ser executada antes de qualquer uso do sinal real. Consulte
o exemplo 1 abaixo para módulos carregados e o exemplo 2 abaixo para módulos
internos.

Exemplo 1
VAR signaldo alias_do;

PROC prog_start()
AliasIO config_do, alias_do;
ENDPROC

A rotina prog_start é conectada ao evento START nos parâmetros do sistema. O


sinal de saída digital alias_do definido pelo programa é conectado ao sinal de
saída digital config_do configurado no início do programa (começa o programa
pelo início).

Argumentos
AliasIO FromSignal ToSignal
FromSignal Tipo de dados: signalxx ou
string

Módulos carregados:

O nome identificador de sinal conforme o sinal de configuração (tipo de dados


signalxx) do qual o descritor de sinal é copiado. O sinal deve ser definido na con-
figuração de E/S.

Módulos internos:

Uma referência (CONST, VAR, PERS ou parâmetro destes) contendo o nome do


sinal (tipo de dados string) a partir do qual o descritor de sinal, após a pesquisa
no sistema, é copiado. O sinal deve ser definido na configuração de E/S.

ToSignal Tipo de dados: signalxx

O identificador de sinal conforme o programa (tipo de dados signalxx) para o

Data Types do Sistema e Rotinas 2-AliasIO-125


AliasIO Instruções

qual o descritor de sinal é copiado. O sinal deve ser declarado no programa


RAPID.

O mesmo tipo de dados deve ser usado (ou find) para os argumentos FromSignal e
ToSignal , devendo ser do tipo signalxx (signalai, signalao, signaldi, signaldo, signalgi
ou signalgo).

Execução do programa
O valor descritor de sinal é copiado do sinal fornecido no argumento FromSignal para
o sinal fornecido no argumento ToSignal.

Exemplo 2
VAR signaldi alias_di;

PROC prog_start()
CONST string config_string := "config_di";
AliasIO config_string, alias_di;
ENDPROC

A rotina prog_start é conectada ao evento START nos parâmetros do sistema. O


sinal de saída digital alias_di, definido pelo programa, é conectado ao sinal de
saída digital configurado config_di (via constante config_string) no início do pro-
grama (começa o programa pelo início).

Limitação
Ao iniciar o programa, o sinal de pseudônimo não pode ser usado até que a instrução
AliasIO seja executada.

A instrução AliasIO deve ser colocada na

- rotina de evento executada no início do programa (evento START) ou


- na parte do programa executada após cada início de programa (antes do uso do
sinal)

A instrução AliasIO não está disponível para programação a partir da Unidade de pro-
gramação (somente a partir do Criador de programas). A opção Funções do desen-
volvedor é necessária.

2-AliasIO-126 Data Types do Sistema e Rotinas


Instruções AliasIO

Sintaxe
AliasIO
[ FromSignal ’:=’ ] < reference (REF) of anytype> ’,’
[ ToSignal ’:=’ ] < variable (VAR) of anytype> ’;’

Informações relacionadas
Descrito em:
Instruções de entrada/saída Resumo RAPID -
Sinais de entrada e saída
Funcionalidade de entrada/saída em geral Princípios de E/S e movimentação -
Princípios de E/S
Configuração de E/S Guia do Usuário -
Parâmetros do Sistema
Definindo rotinas de evento Guia do Usuário -
Parâmetros do Sistema
Módulos de tarefa carregados/internos Guia do Usuário -
Parâmetros do Sistema

Data Types do Sistema e Rotinas 2-AliasIO-127


AliasIO Instruções

2-AliasIO-128 Data Types do Sistema e Rotinas


Instruções Break

Break Parada na execução do programa


Break é usado para fazer uma parada imediata na execução do programa para efeito de
análise (de bug) do programa RAPID.

Exemplo
..
Break;
...

Para a execução do programa e é possível analisar variáveis, valores etc. para


efeitos de análise (de bug).

Execução do programa
A instrução pára a execução do programa imediatamente, sem esperar que o robô e os
eixos externos alcancem seus pontos de destino programados para movimentos sendo
feitos ao mesmo tempo. A execução do programa pode, então, ser reiniciada a partir
da próxima instrução.

Se houver uma instrução Break em alguma rotina de evento, a rotina será executada
desde o início do próximo evento.

Sintaxe
Break’;’

Informações relacionadas
Descrito em:
Parando ação do programa Instruções - Stop
Parando após um erro fatal Instruções - Exit
Acabando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove

Data Types do Sistema e Rotinas 2-Break-129


Break Instruções

2-Break-130 Data Types do Sistema e Rotinas


Instruções ProcCall

ProcCall Chama uma nova rotina


Uma chamada de rotina é usada para transferir a execução do programa para outra
rotina. Quando a rotina foi completamente executada, a execução do programa con-
tinua com a instrução seguinte a chamada da rotina.

É possível enviar um número de argumentos para a nova rotina. Estes controlam o


comportamento da rotina e torna possível que a mesma rotina seja usada para diversas
tarefas.

Exemplos
weldpipe 1;

Chama a rotina weldpipe1.

errormessage;
Set do1;
.

PROC errormessage()
TPWrite "ERROR";
ENDPROC

A rotina errormessage é chamada. Quando esta rotina está pronta, a execução do


programa retorna para a instrução seguinte do chamado da rotina, Set do1.

Argumentos
Procedure { Argument }
Procedure Identificador

O nome da rotina a ser chamada.

Argument DataType: De acordo com a


declaração do procedimento

Os argumentos da rotina (de acordo com os parâmetros da rotina).

Exemplo
weldpipe2 10, lowspeed;

Chama a rotina weldpipe2, incluindo dois argumentos.

Data Types do Sistema e Rotinas 2-ProcCall-131


ProcCall Instruções

weldpipe3 10 \speed:=20;

Chama a rotina weldpipe3, incluindo argumento obrigatório e um opcional.

Limitações
Os argumentos da rotina devem estar de acordo com seus parâmetros:

- Todos os argumentos obrigatórios devem ser incluídos.


- Eles devem ser colocados na mesma ordem.
- Eles devem ser do mesmo tipo de dado.
- Eles devem ser do tipo correto com relação ao modo de acesso (entrada, variável
ou persistente).

Uma rotina pode chamar outra rotina que, por sua vez, chama outra rotina, etc. Uma
rotina também pode chamar a si mesma, i.e. uma chamada recursiva. O número de
níveis de rotina permitido depende do número de parâmetros, mas normalmente é per-
mitido mais que 10 níveis.

Sintaxe
(EBNF)
<procedure> [ <argument list> ] ’;’

<procedure> ::= <identifier>

Informações relacionadas
Descrito em:
Argumentos, parâmetros Características Básicas - Rotinas
Mais exemplos Exemplos de programas

2-ProcCall-132 Data Types do Sistema e Rotinas


Instruções CallByVar

CallByVarChamar um procedimento com uma variável


CallByVar (Chamar com variável) pode ser usada para chamar procedimentos com
nomes especifícos, isto é. proc_name1, proc_name2, proc_name3 ... proc_namex
através de uma variável.

Exemplo
reg1 := 2;
CallByVar “proc”, reg1;

O procedimento proc2 é chamado.

Argumentos
CallByVar Name Number
Name Data type: string

A primeira parte do nome do procedimento, isto é proc_name.

Number Data type: num

O valor númerico para o número do procedimento. Este valro é convertido para


uma string e dá a 2(segunda) parte do nome do procedimento, isto é, 1.O valor
deve ser um inteiro positivo.

Exemplo
Seleção estática de chamada do procedimento

TEST reg1
CASE 1:
lf_door door_loc;
CASE 2:
rf_door door_loc;
CASE 3:
lr_door door_loc;
CASE 4:
rr_door door_loc;
DEFAULT:
EXIT;
ENDTEST

Dependendo do valor de registro reg1 is 1, 2, 3 ou 4, procedimentos diferentes


são chamados que performam o tipo de trabalho apropriado para a porta sele-

Data Types do Sistema e Rotinas 2-CallByVar-133


CallByVar Instruções

cionada .
A localização da porta no argumento door_loc.

Seleção dinâmica de chamada do procedimento com sintaxe RAPID

reg1 := 2;
%”proc”+NumToStr(reg1,0)% door_loc;

O procedimento proc2 é chamado com o argumento door_loc.

Limitação: Todos os procedimentos têm que ter um nome especifico, isto é,


proc1, proc2, proc3.

Seleção dinâmica de chamada de procedimento com CallByVar

reg1 := 2;
CallByVar “proc”,reg1;

O procedimento proc2 é chamado.

Limitação: Todos os procedimentos têm que ter um nome especifico, proc1,


proc2, proc3, e não pode ser usado nenhum argumento.

Limitações
Apenas pode ser utilizado para chamar procedimentos sem parâmetros.

A execução de CallByVar demora um pouco mais de tempo do que a execução de uma


chamada de procedimento normal.

Tratamento de erros
Em caso de referência a um procedimento desconhecido, a variável ERRNO do sistema
é ajustada para ERR_REFUNKPRC.

Em caso de erro de chamada de procedimento (não procedimento), a variável ERRNO


do sistema é ajustada para ERR_CALLPROC.

Estes erros poem ser manipulados pelo manipulador de erros.

Sintaxe
CallByVar
[Name ‘:=’] <expression (IN) of string>’,’
[Number ‘:=‘] <expression (IN) of num>’;’

2-CallByVar-134 Data Types do Sistema e Rotinas


Instruções CallByVar

Informação relacionada
Descrito em:
Procedimentos de chamada Características Básicas- Rotinas
Guia do Usuário- A Linguagem de
Programação RAPID

Data Types do Sistema e Rotinas 2-CallByVar-135


CallByVar Instruções

2-CallByVar-136 Data Types do Sistema e Rotinas


Instruções Clear

Clear Apaga um valor


Clear é usado para apagar uma variável numérica ou persistente, i.e. fica igual a 0.

Exemplo
Clear reg1;

Reg1 é apagado, i.e. reg1:=0.

Argumentos
Clear Name
Name DataType: num

O nome da variável ou persistente a ser apagada.

Sintaxe
Clear
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Informações relacionadas
Descrito em:
Incremento a variável em1 Instruções - Incr
Decremento a variável em1 Instruções - Decr

Data Types do Sistema e Rotinas 2-Clear-137


Clear Instruções

2-Clear-138 Data Types do Sistema e Rotinas


Instruções ClkReset

ClkReset Zera o cronômetro


ClkReset é usado para zerar o relógio que funciona como cronômetro.

Esta função pode ser usada antes de usar o relógio para ter certeza que ele está no 0.

Exemplo
ClkReset clock1;

O relógio clock1 é zerado.

Argumentos
ClkReset Clock
Clock DataType: clock

O nome do relógio que é zerado.

Execução do programa
Quando o relógio é zerado, ele é colocado em 0.

Se o relógio está marcando, ele poderá ser parado e então zerado.

Sintaxe
ClkReset
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras instruções do relógio Sumário RAPID - Sistema & Hora

Data Types do Sistema e Rotinas 2-ClkReset-139


ClkReset Instruções

2-ClkReset-140 Data Types do Sistema e Rotinas


Instruções ClkStart

ClkStart Liga o cronômetro


ClkStart é usado para ligar o cronômetro.

Exemplo
ClkStart clock1;

O relógio clock1 é ligado.

Argumentos
ClkStart Clock
Clock DataType: clock

O nome do relógio a ser ligado.

Execução do programa
Quando o relógio é ligado, ele irá contar os segundos até que seja parado.

O relógio continua a contar quando o programa que o iniciou é parado. Entretanto, o


evento que você deseja marcar o tempo pode não ser válido. Por exemplo, se o pro-
grama estava medindo o tempo de espera para um sinal de entrada, o sinal pode ter sido
recebido quando o programa estava parado. Neste caso, o programa não será capaz de
"ver"o evento que ocorreu enquanto o programa estava parado.

O relógio continua a contar quando o robô é desligado, enquanto a bateria back-up


retiver o programa que contém a variável relógio.

Se o relógio está marcando ele pode ser lido, parado ou zerado.

Exemplo
VAR clock clock2;

ClkReset clock2;
ClkStart clock2;
WaitUntil DInput(di1) = 1;
ClkStop clock2;
time:=ClkRead(clock2);

O tempo de espera para di1 tornar-se 1 é marcado.

Data Types do Sistema e Rotinas 2-ClkStart-141


ClkStart Instruções

Sintaxe
ClkStart
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora

2-ClkStart-142 Data Types do Sistema e Rotinas


Instruções ClkStop

ClkStop Parar o cronômetro


ClkStop é usado para parar o cronômetro.

Exemplo
ClkStop clock1;

O relógio clock1 é parado.

Argumentos
ClkStop Clock
Clock DataType: clock

O nome do relógio a ser parado.

Execução do programa
Quando o relógio é parado, ele pára de contar o tempo.

Se um relógio é parado, ele pode ser lido, reiniciado ou zerado.

Sintaxe
ClkStop
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora
Mais exemplos Instruções - ClkStart

Data Types do Sistema e Rotinas 2-ClkStop-143


ClkStop Instruções

2-ClkStop-144 Data Types do Sistema e Rotinas


Instruções Close

Close Fecha um arquivo ou um canal serial


Close é usado para fechar um arquivo ou um canal serial.

Exemplo
Close channel2;

O canal serial referido por channel2 é fechado.

Argumentos
Close IODevice
IODevice DataType: iodev

O nome (referência) do arquivo ou canal serial a ser fechado.

Execução do programa
O arquivo ou canal serial especificado é fechado e deve ser reaberto antes de ler ou
escrever. Se ele já estava fechado, a instrução é ignorada.

Sintaxe
Close
[IODevice ’:=’] <variável (VAR) do iodev>’;’

Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-Close-145


Close Instruções

2-Close-146 Data Types do Sistema e Rotinas


Instruções ClearIOBuff

ClearIOBuff Limpar buffer de entrada de


um canal serial
ClearIOBuff (Limpar Buffer de E/S) é usado para limpar o buffer de entrada de um
canal serial. Todos os caracteres; do canal serial de entrada que passam pelo buffer são
descartados.

Exemplo
VAR iodev channel2;
...
Open "sio1:", channel2 \Bin;
ClearIOBuff channel2;

O buffer de entrada do canal serial referido por channel2 é limpo.

Argumentos
ClearIOBuff IODevice
IODevice Tipo de dados: iodev

O nome (referência) do canal serial cujo buffer de entrada deve ser limpo.

Execução do programa
Todos os caracteres do canal serial de entrada que passam pelo buffer são descartados.
As próximas instruções de leitura esperam nova entrada do canal.

Limitações
Essa instrução só pode ser usada em canais seriais.

Sintaxe
ClearIOBuff
[IODevice ’:=’] <variable (VAR) of iodev>’;’

Data Types do Sistema e Rotinas 2-ClearIOBuff-147


ClearIOBuff Instruções

Informações relacionadas
Descrito em:
Abertura de um canal serial Resumo RAPID - Comunicação

2-ClearIOBuff-148 Data Types do Sistema e Rotinas


Instruções comment

Comment Comentário
Comment é usado somente para tornar o programa mais fácil de entender. Não tem
efeito na execução do programa.

Exemplo
! Vai para a posição acima do palete
MoveL p100, v500, z20, tool1;

É inserido um comentário no programa para torná-lo mais fácil de entender.

Argumentos
! Comment
Comment Text string

Nenhum texto.

Execução do programa
Nada acontece quando você executa esta função.

Sintaxe
(EBNF)
’!’ {<character>} <newline>

Informações relacionadas
Descrito em:
Caracteres permitidos em um comentário Características Básicas-
Elementos básicos
Comentários com dado e declaração de Características Básicas-
rotina Elementos básicos

Data Types do Sistema e Rotinas 2-comment-149


comment Instruções

2-comment-150 Data Types do Sistema e Rotinas


Instruções ConfJ

ConfJ Controla a config. durante movimento eixo a eixo


ConfJ (Configuration Joint) é usado para especificar se a configuração do robô deve
ou não ser controlada durante movimento eixo a eixo. Se não é controlada, o robô pode
algumas vezes utilizar uma configuração diferente daquela o qual foi programado.

Com Conf\Off o robô não pode conectar a configuração de eixos principais - o robô -
irá procurar uma solução com a mesma configuração dos eixos principais como fosse
a atual. Move-se para a configuração de punho mais próxima para os eixos 4 e 6.

Exemplos
ConfJ \Off;
MoveJ *, v1000, fine, tool1;

O robô se move para a posição e a orientação programadas. Se esta posição pode


ser alcançada de diferentes maneiras, com diferentes configurações de eixo, a
posição possível mais próxima é escolhida.

ConfJ \On;
MoveJ *, v1000, fine, tool1;

O robô se move para a posição, orientação e configuração de eixo programado.


Se isto não é possível, a execução do programa para.

Argumentos
ConfJ [\On] | [\Off]
\On DataType: switch

O robô sempre se move para a configuração de eixo programada. Se isto não for
possível utilizando a posição e orientação programada, a execução do programa
pára.

O robô IRB5400 se mmove para a configuração de eixo programada ou para uma


configuração de eixo perto da programada. A execução do programa não pára se
for impossível atingir a configuração de eixo programada.

\Off DataType: switch

O robô sempre se move para a configuração de eixo mais próxima.

Execução do programa
Se o argumento \On (ou nenhum argumento) é escolhido, o robô sempre se moverá

Data Types do Sistema e Rotinas 2-ConfJ-151


ConfJ Instruções

para a configuração de eixo programada. Se isto não é possível utilizando a posição e


orientação programada, a execução do programa para antes de iniciar movimento.

Se o argumento \Off é escolhido, o robô sempre se move para a configuração de eixo


mais próxima. Esta pode ser diferente da programada se a configuração foi especificada
manualmente de forma errada, ou se um deslocamento de um programa foi rea-lizado.

O controle é ativado por default. Este é automaticamente colocado em

- uma partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
ConfJ
[ ’\’ On] | [ ’\’ Off] ’;’

Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Princípios de Movimento -
Configuração do robô

Configuração do robô
durante movimento linear Instruções - ConfL

2-ConfJ-152 Data Types do Sistema e Rotinas


Instruções ConfL

ConfL Monitora a configuração durante movimento linear


ConfL (Configuration Linear) é usado para especificar se a configuração do robô deve
ou não ser monitorada durante movimento linear ou circular. Se ele não é monitorado,
a configuração no tempo de execução pode diferir daqueles do tempo programado. Isto
pode resultar em movimentos inesperados do robô quando o modo é mudado para
movimento do punho.

NOTA: A monitoração da configuração não é usada no robô IRB5400.

Exemplos
ConfL \On;
MoveL *, v1000, fine, tool1;

A execução do programa pára quando a configuração programada não é possível


de ser alcançada a partir da posição atual.

SingArea \Wrist;
Confl \On;
MoveL *, v1000, fine, tool1;

O robô se move para a posição, orientação e configuração de eixo de punho pro-


gramadas. Se isto não é possível, a execução do programa pára.

ConfL \Off;
MoveL *, v1000, fine, tool1;

Nenhuma mensagem de erro é mostrada no display quando a configuração pro-


gramada não é a mesma que a configuração estipulada pela execução do pro-
grama.

Argumentos
ConfL [\On] | [\Off]
\On DataType: switch

A configuração do robô é monitorada.

\Off DataType: switch

A configuração do robô não é monitorada.

Data Types do Sistema e Rotinas 2-ConfL-153


ConfL Instruções

Execução do programa
Durante movimento linear ou circular, o robô sempre se move para a posição e orien-
tação programada que tem a configuração de eixo mais próxima possível. Se o argu-
mento \On (ou nenhum argumento) é escolhido, então o robô checa se a configuração
de eixo de punho programada pode ser alcançada pela atual posição. Se ela não pode
ser alcançada, a execução do programa pára. Entretanto, é possível reiniciar o programa
novamente, mas os eixos do punho continuarão com configuração errada. Num ponto
de parada, o robô checa que as configurações alcançadas de todos os eixos, e não
somente dos eixos do punho.

Se SingArea\Wrist é também usado, o robô sempre se move para a configuração dos


eixos do punho programada e num ponto de parada ficando a configuração dos eixos
para serem checadas.

Se o argumento \Off é escolhido, não há monitoramento.

Monitoramento é ativado default. Esta é automaticamente colocado em

- uma partida a frio


- quando um novo programa é carregado
- quando começa a execução de um programa desde o início.

Sintaxe
ConfL
[ ’\’ On] | [ ’\’ Off] ’;’

Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Movimentos e Princípios E/S-
Configuração do robô
Configuração do robô durante movimento Instruções - ConfJ
eixo a eixo

2-ConfL-154 Data Types do Sistema e Rotinas


Instruções CONNECT

CONNECT Conecta uma interrupção a uma rotina trap


CONNECT é usado para achar a identificação de uma interrupção e conectá-la a rotina
trap.

A interrupção é definida ordenando um evento de interrupção e especificando sua iden-


tificação. Assim, quando tal evento ocorrer, a rotina trap é automaticamente executada.

Exemplo
VAR intnum feeder_low;
CONNECT feeder_low WITH feeder_empty;
ISignalDI di1, 1 , feeder_low;

Uma interrupção identificada feeder_low é criada na qual é conectada a uma


rotina trap feeder_empty. A interrupção é definida como entrada di1 está em nível
lógico alto. Em outras palavras, quando este sinal torna-se alto (igual a um), uma
rotina trap feeder_empty é executada.

Argumentos
CONNECT Interrupt WITH Trap routine
Interrupt DataType: intnum

A variável que deve ser designada na interrupção identificada.


Esta não deve ser declarada dentro de uma rotina (dado de rotina).

Trap routine Identifier

O nome da rotina trap .

Execução de programa
A variável é designada a uma interrupção identificada na qual pode então ser usada
quando ordena ou desabilita interrupções. Esta identificação é também conectada para
especificar uma rotina trap.

Note que um evento pode ser manipulado, uma interrupção também deve ser ordenada,
por exemplo, o evento especificado.

Limitações
Uma interrupção (identidade de interrupção) não pode ser conectada mais de uma vez

Data Types do Sistema e Rotinas 2-CONNECT-155


CONNECT Instruções

na rotina trap.
Interrupções diferentes, entretanto, pode ser conectada à mesma rotina trap.

Quando uma interrupção tinha sido conectada a uma rotina trap, ela não pode ser
reconectada ou transferida a uma outra rotina; ela deve primeiro ser apagada usando a
instrução IDelete.

Tratamento de erros
Se a variável de interrupção já está ligada à rotina TRAP, a variável do sistema ERRNO
é ajustada para ERR_ALRDYCNT.

Se a variável de interrupção não for uma variável de referência, a variável do sistema


ERRNO é ajustada para ERR_CNTNOTVAR.

Se não se encontrarem disponíveis mais números de interrupção, a variável do sistema


ERRNO é ajustada para ERR_INOMAX.

Estes erros podem ser manuseados no tratamento de ERROS.

Sintaxe
(EBNF)
CONNECT <destino da conexão> WITH <trap>‘;’

<destino da conexão> ::= <variável>


| <parâmetro>
| <VAR>
<trap> ::= <identidade>

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações sobre interrupções Características básicas- Interrupções

2-CONNECT-156 Data Types do Sistema e Rotinas


Instruções DeactUnit

DeactUnit Desativa uma unidade mecânica


DeactUnit é usada para desativar uma unidade mecânica.

Também pode ser usada para determinar qual unidade deve ser ativada quando, por
exemplo, unidades de drive comum são usadas.

Exemplos
DeactUnit orbit_a;

Desativação da unidade mecânica orbit_a.

MoveL p10, v100, fine, tool1;


DeactUnit track_motion;
MoveL p20, v100, z10, tool1;
MoveL p30, v100, fine, tool1;
ActUnit track_motion;
MoveL p40, v100, z10, tool1;

A unidade track_motion será estacionário quando o robô se move para p20 e p30.
Depois disso, ambos o robô e o track_motion se moverão para p40.

MoveL p10, v100, fine, tool1;


DeactUnit orbit1;
ActUnit orbit2;
MoveL p20, v100, z10, tool1;

A unidade orbit1 é desativada e a orbit2 ativada.

Argumentos
DeactUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit

O nome da unidade mecânica que deve ser desativada.

Execução do programa
Quando o robô e eixos externos tiverem que chegar ao mesmo tempo, a unidade
mecânica especificada é desativada. Isto significa que ela não será controlada nem
monitorada até ser reativada.

Se várias unidades mecânicas compartilham uma unidade de drive, a desativação de


uma das unidades mecânicas também será desconectada da unidade de drive comum.

Data Types do Sistema e Rotinas 2-DeactUnit-157


DeactUnit Instruções

Limitações
A instrução DeactUnit não pode ser usada

- na sequência do programa StorePath ... RestoPath


- na rotina RESTART
- quando um dos eixos na unidade mecânica está no modo independente.

A instrução de movimento anterior a esta instrução, deve ser terminada com um ponto
de parada, a fim de fazer um reinício dessa instrução se houver uma falha de energia.

Sintaxe
DeactUnit
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’;’

Informações relacionadas
Descrito em:
Ativando unidades mecânicas Instruções - ActUnit
Unidades mecânicas DataTypes- mecunit

2-DeactUnit-158 Data Types do Sistema e Rotinas


Instruções Decr

Decr Decremento de 1
Decr é usado para subtrair 1 de uma variável numérica ou persistente.

Exemplo
Decr reg1;

1 é subtraído de reg1, i.e. reg1:=reg1-1.

Argumentos
Decr Name
Name DataType: num

O nome da variável ou persistente a ser subtraída.

Exemplo
TPReadNum no_of_parts, "Quantas partes devem ser produzidas? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE

É perguntado ao operador para entrar com o número de partes a serem produzi-


das. A variável no_of_parts é usada para contar o número que ainda deve ser
produ-zido.

Sintaxe
Decr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Data Types do Sistema e Rotinas 2-Decr-159


Decr Instruções

Informações relacionadas
Descrito em:
Incrementa a variável em 1 Instruções - Incr
Subtraindo qualquer valor de uma variável Instruções - Add
Alterando dados usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação

2-Decr-160 Data Types do Sistema e Rotinas


Instruções EOffsOff

EOffsOff Desativa o offset para eixos externos


EOffsOff (External Offset Off) é usado para desativar o offset para eixos externos.

O offset para eixos externos é ativado pela instrução EOffsSet ou EOffsOn e se aplica
a todos os movimentos até que algum outro offset para eixos externos seja ativado ou
até que o offset para eixos externos seja desativado.

Exemplos
EOffsOff;

Desativação do offset para eixos externos.

MoveL p10, v500, z10, tool1;


EOffsOn \ExeP:=p10, p11;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
EOffsOff;
MoveL p40, v500, z10, tool1;

O offset é definido como uma diferença entre a posição de cada eixo no p10 e
p11. Este deslocamento afeta o movimento para p20 e p30,mas não para p40.

Execução do programa
Offsets para eixos externos ativos são desligados.

Sintaxe
EOffsOff ‘;’

Informações relacionadas
Descrito em:
Definição de offset usando duas posições Instruções - EOffsOn
Definição de offset usando valores Instruções - EOffsSet
Desativação do deslocamento do robô Instruções - PDispOff

Data Types do Sistema e Rotinas 2-EOffsOff-161


EOffsOff Instruções

2-EOffsOff-162 Data Types do Sistema e Rotinas


Instruções EOffsOn

EOffsOn Ativa o offset para eixos externos


EOffsOn (External Offset On) é usado para definir e ativar o offset para eixos externos
usando duas posições.

Exemplos
MoveL p10, v500, z10, tool1;
EOffsOn \ExeP:=p10, p20;

Ativação do offset para eixos externos. Isto é calculado para cada eixo baseado
na diferença entre as posições p10 e p20.

MoveL p10, v500, fine, tool1;


EOffsOn *;

Ativação do offset para eixos externos. Desde que o ponto de parada foi usado
na instrução anterior, o argumento \ExeP não tem que ser usado. O deslocamento
é calculado com base na diferença entre a posição atual de cada eixo e o ponto
programado (*) gravado na instrução.

Argumentos
EOffsOn [ \ExeP ] ProgPoint
[\ExeP ] (Executed Point) DataType: robtarget

A nova posição dos eixos no momento da execução do programa. Se este argu-


mento é omitido, é usada a atual posição dos eixos no momento da execução do
programa.

ProgPoint (Programmed Point) DataType: robtarget

A posição original dos eixos no momento da programação.

Execução do programa
O offset é calculado como uma diferença entre ExeP e ProgPoint para cada eixo
externo separadamente. Se ExeP não foi especificado, a atual posição dos eixos no
momento da execução do programa é usada no lugar. Desde que a atual posição dos
eixos é usada, os eixos não deverão se mover quando EOffsOn é executado.

Este offset é então usado para deslocar a posição dos eixos externos em uma posição
de instrução subsequente e permanece ativo até outro offset ser ativado (a instrução

Data Types do Sistema e Rotinas 2-EOffsOn-163


EOffsOn Instruções

EOffsSet ou EOffsOn) ou até que o offset para eixos externos seja desativado (a
instrução EOffsOff).

Somente um offset para cada eixo externo individual pode ser ativado por vez. Por
outro lado, vários EOffsOn podem ser programados um após o outro e, se isto ocorre,
os diferentes offsets serão adicionados.

O offset do eixo externo é automaticamente fixado para

- uma partida a frio


- quando um novo programa é carregado
- quando começa execução do programa desde o início.

Exemplo
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;

Uma busca é realizada na qual a posição procurada do robô e do eixo externo é


gravada na posição psearch. Qualquer movimento realizado após isto parte desta
posição usando um programa de deslocamento do robô e do eixo externo. Isto é
calculado baseado em diferenças entre a posição procurada e o ponto programado
(*) gravado na instrução.

Sintaxe
EOffsOn
[ ‘\’ ExeP ’:=’ < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’;’

Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição de offset usando valores Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas

2-EOffsOn-164 Data Types do Sistema e Rotinas


Instruções EOffsSet

EOffsSet Ativa o offset para eixos externos usando um valor


EOffsSet (External Offset Set) é usado para definir e ativar o offset para eixos externos
usando valores.

Exemplo
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
.
EOffsSet eax_a_p100;

Ativação do offset eax_a_p100 para eixo externo, significando (fornecido que o


eixo externo “a” é linear) que:

- O sistema de coordenada ExtOffs está deslocado 100 mm do eixo lógico “a”


(veja Figura 1).
- Contanto que este offset seja ativado, todas as posições estarão deslocadas 100
mm na direção do eixo x.
.

100
Sistema de Coordenada
Normal

0 +X
Sistema de Coordenada
ExtOffs

0 +X
Figure 18 Deslocamento de um eixo externo.

Argumentos
EOffsSet EAxOffs
EAxOffs (External Axes Offset) DataType: extjoint

O offset para eixo externo é definido como tipo de dado extjoint, expresso em:

- mm para eixos lineares


- graus para rotação dos eixos

Data Types do Sistema e Rotinas 2-EOffsSet-165


EOffsSet Instruções

Execução do programa
O offset para eixo externo é ativado quando a instrução EOffsSet é ativada e permanece
ativo até outro offset ser ativado (a instrução EOffsSet ou EOffsOn) ou até o offset para
eixos externos ser desativado (o EOffsOff).

Somente um offset para eixo externo pode ser ativado por vez. Offsets não podem ser
adicionados um ao outro usando EOffsSet.

O offset para eixos externos é automaticamente fixado para

- uma partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
EOffsSet
[ EAxOffs ’:=’ ] < expressão (IN) do extjoint> ’;’

Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição do offset usando duas posições Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Definição de dado do tipo extjoint DataType - extjoint
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas

2-EOffsSet-166 Data Types do Sistema e Rotinas


Instruções ErrWrite

ErrWrite Escreve uma Mensagem de Erro


ErrWrite (Error Write) é usada para mostrar uma mensagem de erro na unidade de pro-
gramação e escrevê-la na lista de mensagem do robô.

Exemplo
ErrWrite “PLC error” , “Erro fatal no PLC” \RL2:=”Call service”;
Stop;

;
Stop;

Uma mensagem é gravada na lista do robô. A mensagem também é mostrada no


display da unidade de programação.

ErrWrite \ W, “ Search error”, “Não acertou na primeira busca”;


RAISE try_search_again;

A mensagem é gravada somente na lista do robô. A execução do programa então


continua.

Argumentos
ErrWrite [ \W ] Header Reason [ \RL2] [ \RL3] [ \RL4]
[ \W ] (Warning) DataType: switch

Dá um aviso que é gravado somente na lista de mensagem de erro do robô (não


mostra diretamente no display da unidade de programação).

Header DataType: string

Título da mensagem de erro (máx. 24 caracteres).

Reason DataType: string

Razão do erro (linha 1 de no máx. 40 caracteres).

[ \RL2] (Reason Line 2) DataType: string

Razão do erro (linha 2 de no máx. 40 caracteres).

[ \RL3] (Reason Line 3) DataType: string

Razão do erro (linha 3 de no máx. 40 caracteres).

[ \RL4] (Reason Line 4) DataType: string

Data Types do Sistema e Rotinas 2-ErrWrite-167


ErrWrite Instruções

Razão do erro (linha 4 de no máx. 40 caracteres).

Execução do programa
Uma mensagem de erro (máx. 5 linhas) é mostrada no display da unidade de pro-
gramação e escrita na lista de mensagem do robô.

ErrWrite sempre gera o programa erro no. 80001 ou no caso de aviso (argumento \W)
gera no. 80002.

Limitações
Comprimento total do “string” (Cabeçalho+Razão+\RL2+\RL3+\RL4) limitado a 145
caracteres.

Sintaxe
ErrWrite
[ ’\’ W ’,’ ]
[ Header ’:=’ ] < expressão (IN) do string> ‘,’
[ Reason ’:=’ ] < expressão (IN) do string>
[ ’\’ RL2 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL3 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL4 ’:=’ < expressão (IN) do string> ] ‘;’

Informações relacionadas
Descrito em:

Mostra a mensagem somente no display Instruções - TPWrite


da unidade de programação
Lista de mensagem Serviço

2-ErrWrite-168 Data Types do Sistema e Rotinas


Instruções EXIT

EXIT Termina a execução do programa


EXIT é usado para terminar a execução do programa. Reinício do programa será então
bloqueado, i.e. o programa somente pode ser reiniciado pela primeira instrução da
rotina principal (se o ponto de partida não foi movido manualmente).

A instrução EXIT deve ser usada quando ocorre um erro fatal ou quando a execução do
programa é parada permanentemente. A instrução Stop é usada para parar temporaria-
mente a execução do programa.

Exemplo
ErrWrite "Erro fatal","Estado ilegal";
EXIT;

A execução do programa pára e não pode ser reiniciada daquela posição do pro-
grama.

Sintaxe
EXIT ’;’

Informações relacionadas
Descrito em:
Parando a execução do programa Instruções - Stop
temporariamente

Data Types do Sistema e Rotinas 2-EXIT-169


EXIT Instruções

2-EXIT-170 Data Types do Sistema e Rotinas


Instruções ExitCycle

ExitCycle Interromper ciclo atual e iniciar seguinte


ExitCycle é usado para interromper o ciclo atual e mover o PP novamente para a
primeira instrução da rotina principal.

Se a execução estiver em modo contínuo, ela começará executando o ciclo seguinte.


Se estiver em modo cíclico, será interrompida na primeira instrução da rotina principal.

Exemplo
VAR num cyclecount:=0;
VAR intnum error_intno;

PROC main()
IF cyclecount = 0 THEN
CONNECT error_intno WITH error_trap;
ISignalDI di_error,1,error_intno;
ENDIF
cyclecount:=cyclecount+1;
! start to do something intelligent
....

ENDPROC

TRAP error_trap
TPWrite “ERROR, I will start on the next item”;
ExitCycle;
ENDTRAP

Isto iniciará o ciclo seguiunte se o sinal di_error for definido.

Execução do programa
A execução de ExitCycle na tarefa de programa MAIN produz os seguintes resultados
na tarefa MAIN:

- Interrupção dos movimentos do robô em andamento


- Todos os caminhos de robô não executados, em todos os níveis de caminho,
(em ambos os níveis normal e StorePath) são limpos
- Todas as instruções iniciadas mas não concluídas, em todos os níveis de
execução (em ambos os níveis normal e TRAP) são interrompidas
- O ponteiro de programa é movido para a primeira instrução da rotina principal
- A execução do programa continua no próximo ciclo

A execução de ExitCycle em alguma outra tarefa de programa (além de MAIN) produz


Manual de Referência do RAPID 8-ExitCycle-171
ExitCycle Instruções

os seguintes resultados na tarefa real:

- Todas as instruções iniciadas mas não concluídas, em todos os níveis de


execução (em ambos os níveis normal e TRAP) são interrompidas
- O ponteiro de programa é movido para a primeira instrução da rotina principal
- A execução do programa continua com o próximo ciclo

ExitCycle não afeta nenhuma das outras coisas modais no programa e no sistema,
como:

- Os valores reais de variáveis ou dados persistentes


- Quaisquer configurações de movimento tais como seqüência de StorePath-
RestoPath, zonas gobais, etc.
- Diretórios, arquivos abertos, etc.
- Interrupções definidas, etc.

Sintaxe
ExitCycle’;’

Informações relacionadas
Descrito em:
Parar após erro fatal Instruções - EXIT
Terminar execução do programa Instruções - EXIT
Parar para ações do programa Instruções - Stop
Terminar execução de uma rotina Instruções - RETURN

8-ExitCycle-172 Manual de Referência do RAPID


Instruções ExitCycle

Manual de Referência do RAPID 8-ExitCycle-173


ExitCycle Instruções

8-ExitCycle-174 Manual de Referência do RAPID


Instruções FOR

FOR Repete por um certo número de vezes


FOR é usado quando uma ou várias instruções são repetidas um número de vezes.

Se as instruções são repetidas contanto que uma dada condição é encontrada, a


instrução WHILE é usada.

Exemplo
FOR i FROM 1 TO 10 DO
routine1;
ENDFOR

Repete a rotina 10 vezes.

Argumentos
FOR Loop counter FROM Start value TO End value
[STEP Step value] DO ... ENDFOR
Loop counter Identificador

O nome do dado que conterá o valor do atual loop counter.


O dado é declarado automaticamente e o nome não deve portanto ser o mesmo
nome de qualquer dado que já existe.

Start value DataType: Num

O valor inicial desejado do loop counter.


(usualmente valores inteiros)

End value DataType: Num

O valor final desejado do loop counter.


(usualmente valores inteiros)

Step value DataType: Num

O valor pelo qual o loop counter é incrementado (ou decrementado) para cada loop.
(usualmente valores inteiros)

Se este valor não é especificado, o passo deste valor será automaticamente fixado
em 1 (ou -1 se o valor inicial for maior que o valor final).

Data Types do Sistema e Rotinas 2-FOR-175


FOR Instruções

Exemplo
FOR i FROM 10 TO 2 STEP -1 DO
a{i} := a{i-1};
ENDFOR

Os valores de uma forma geral, são ajustados ascendentes para que


um{10}:=a{9}, a{9}:=a{8} etc.

Execução do programa
1. As expressões para o início, fim e passo destes valores são calculados.
2. Ao loop counter é atribuido o valor inicial.
3. O valor do loop counter é checado para ver se este valor está entre o valor inicial e
final, ou se ele é igual ao valor inicial ou final. Se o valor do loop counter estiver fora
destes limites, o loop FOR pára, e a execução do programa continua com a instrução
ENDFOR.
4. As instruções no loop FOR são executadas.
5. O loop counter é incrementado (ou decrementado) de acordo com o passo deste
valor.
6. O loop FOR é repetido, iniciando do ponto 3.

Limitações
O loop counter (do DataType num) pode somente ser acessado de dentro do loop FOR
e consequentemente mascarar outro dado e rotina que tem o mesmo nome. Ele pode
somente ser lido (não atualizado) na instrução de loop FOR.

Valores decimais para início, final e passo destes valores, sem combinação com exata
condição de finalização para o loop FOR, não pode ser usado (se indefinidos ou não o
último loop é rodado).

Sintaxe
(EBNF)
FOR <loop variável> FROM <expressão> TO <expressão>
[ STEP <expressão> ] DO
<lista de instrução>
ENDFOR
<loop variável> ::= <identificador>

2-FOR-176 Data Types do Sistema e Rotinas


Instruções FOR

Informações relacionadas
Descrito em:

Expressões Características Básicas - Expressões


Identificadores Características Básicas -
Elementos básicos

Data Types do Sistema e Rotinas 2-FOR-177


FOR Instruções

2-FOR-178 Data Types do Sistema e Rotinas


Instruções GetSysData

GetSysData Dados do sistema Get


GetSysData busca o valor e o nome do símbolo opcional, para os dados do sistema
atual do tipo de dados especificado.

Com esta instrução será possível buscar dados e o nome da Ferramenta (Tool) ou
Objeto deTrabalho (Work Obkect) ativos no momento.

Exemplo
PERS tooldata curtoolvalue := [TRUE, [[0, 0, 0], [1, 0, 0, 0]],
[0, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0]];
VAR string curtoolname;

GetSysData curtoolvalue;

Copia o valor do dado da ferramenta ativa atual para a variável persistente cur-
toolvalue.

GetSysData curtoolvalue \ObjectName := curtoolname;

Copia também o nome da ferramenta ativa atual para a variável curtoolname.

Argumentos
GetSysData DestObject [\ ObjectName ]
DestObject Tipo de dados: anytype

Persistente para armazenamento dos valores dos dados do sistema ativo atual.

O tipo de dados deste argumento também especifica o tipo de dados do sistema


a buscar ( Ferramenta ou Objeto de Trabalho).

[\ObjectName] Tipo de dados: string

Argumento de opção (variável ou persistente) para também buscar o nome do


dado do sistema ativo atual.

Execução do programa
Quando executar a instrução GetSysData o valor do dado atual é guardado no per-
sistente especificado no argumento DestObject.

Se for usado o argumento \ObjectName, o nome do dado atual é guardado na variável


especificada ou persistente no argumento ObjectName.

Data Types do Sistema e Rotinas 2-GetSysData-179


GetSysData Instruções

Os dados do sistema atual para Ferramenta ou Objeto de Trabalho são ativados pela
execução de qualquer instrução de movimento ou poderão ser ajustados manualmente
na janela de deslocamento lento (jog).

Sintaxe
GetSysData
[ DestObject’:=’] < persistente(PERS) of anytype>
[’\’ObjectName’:=’ < expressão (INOUT) of string> ] ’;’

Informações relacionadas
Descritas em:
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata

2-GetSysData-180 Data Types do Sistema e Rotinas


Instruções GOTO

GOTO Vai para uma nova instrução


GOTO é usado para transferir a execução do programa para outra linha (um label) den-
tro da mesma rotina.

Exemplos
GOTO next;
.
next:

Execução do programa continua com a instrução next.

reg1 := 1;
next:
.
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;

O loop do programa next é executado por cinco vezes.

IF reg1>100 GOTO highvalue;


lowvalue:
.
GOTO ready;
highvalue:
.
ready:

Se reg1 é maior que 100, o loop de programa highvalue é executado; de outra


forma o loop lowvalue é executado.

Argumentos
GOTO Label
Label Identificador

O identificador de onde a execução do programa irá continuar.

Limitações
Só é possível para transferir a execução do programa para um label dentro da mesma
rotina.

Só é possível para transferir a execução do programa para um label dentro de uma

Data Types do Sistema e Rotinas 2-GOTO-181


GOTO Instruções

instrução IF ou TEST, se a instrução GOTO também for localizada dentro do mesmo


ramo daquela instrução.

Só é possível para transferir a execução do programa para um label dentro de uma


instrução FOR ou WHILE, se a instrução GOTO também for localizada dentro daquela
instrução.

Sintaxe
(EBNF)
GOTO <identificador>’;’

Informações relacionadas
Descrito em:
Identificador Instruções - label
Outras instruções que trocam Sumário RAPID -
o fluxo do programa Controlando o fluxo do programa

2-GOTO-182 Data Types do Sistema e Rotinas


Instruções GripLoad

GripLoad Define a carga do robô


GripLoad é usado para definir a carga a qual o robô segura em sua garra.

Descrição
É muito importante definir sempre a carga real da ferramenta e a carga
sustentada do robô, quando utilizado. Definições incorretas de dados de carga
podem resultar em sobrecarga da estrutura mecânica do robô.

Se um dado de carga incorreto é especificado, isto frequentemente tem as seguintes


consequências:

- Se o dado de carga especificado é maior que o valor real da carga;


-> O robô não utilizará sua capacidade máxima
-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”.

Se o dado de carga especificado é menor que o valor real da carga;


-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”
-> Risco de sobrecarga da estrutura mecânica

Exemplos
GripLoad piece1;

A garra do robô segura a carga chamada piece1.

GripLoad load0;

A garra do robô libera todas as cargas.

Argumentos
GripLoad Load
Load DataType: loaddata

O dado de carga que descreve a carga atual.

Execução do programa
A carga especificada afeta a performance do robô.

Data Types do Sistema e Rotinas 2-GripLoad-183


GripLoad Instruções

A carga padrão, 0 kg, é automaticamente definida

- num arranque a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
GripLoad
[ Load ’:=’ ] < persistente (PERS) do loaddata > ’;’

Informações relacionadas
Descrito em:
Definição do dado de carga DataTypes - loaddata
Definição da carga da ferramenta DataTypes - tooldata

2-GripLoad-184 Data Types do Sistema e Rotinas


Instruções IDelete

IDelete Cancela uma interrupção


IDelete (Interrupt Delete) é usado para cancelar (deletar) uma interrupção.

Se uma interrupção é somente desabilitada temporariamente, a instrução ISleep ou


IDisable deve ser usada.

Exemplo
IDelete feeder_low;

A interrupção feeder_low é cancelada.

Argumentos
IDelete Interrupt
Interrupt DataType: intnum

A identificação da interrupção.

Execução do programa
A definição da interrupção é completamente apagada. Para definí-la novamente, ela
primeiro deve ser reconectada a uma rotina trap.

A instrução deve ser precedida por um ponto de parada. Caso contrário a interrupção
será desativada antes que o ponto final seja alcançado.

Interrupções não tem que ser apagadas; isto é feito automaticamente quando

- um novo programa é carregado


- começa o programa desde o início
- o ponteiro do programa é movido para o início da rotina

Sintaxe
IDelete
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Data Types do Sistema e Rotinas 2-IDelete-185


IDelete Instruções

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desabilita temporariamente uma interrupção Instruções - ISleep
Desabilita temporariamente todas interrupções Instruções - IDisable

2-IDelete-186 Data Types do Sistema e Rotinas


Instruções IDisable

IDisable Desabilita interrupções


IDisable (Interrupt Disable) é usada para desabilitar todas as interrupções temporaria-
mente. Ela pode, por exemplo, ser usada particularmente numa parte sensível do pro-
grama onde nenhuma interrupção é permitida atuar no caso de distúrbio na execução
normal do programa.

Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

Nenhuma interrupção enquanto o canal serial estiver sendo lido.

Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas numa pilha. Quando as interrupções forem permitidas novamente, a(s) inter-
rupção(ões) do programa então começam, imediatamente a serem geradas, executadas
na sequência “first in - first out” da pilha.

Sintaxe
IDisable‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Permitindo interrupcões Instruções - IEnable

Data Types do Sistema e Rotinas 2-IDisable-187


IDisable Instruções

2-IDisable-188 Data Types do Sistema e Rotinas


Instruções IEnable

IEnable Habilita interrupções


IEnable (Interrupt Enable) é usado para habilitar interrupções durante execução do
programa.

Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

Nenhuma interrupção é permitida enquanto o canal serial estiver sendo lido.


Quando terminar de ler, as interrupções são novamente permitidas.

Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas em uma fila. Quando interrupções são permitidas uma vez ou mais (IEna-
ble), a interrupção(s) do programa então imediatamente começa gerando, a execução
da sequência “first in - first out” primeiro a entrar primeiro a sair. A execução do pro-
grama então continua no programa usual e interrupções que ocorram após isto, estarão
de acordo logo que, elas ocorram.

Interrupções são sempre permitidas quando um programa é começado desde o início.


Interrupções desabilitadas pela instrução ISleep não são afetadas pela instrução IEna-
ble.

Sintaxe
IEnable‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Não permitindo interrupções Instruções - IDisable

Data Types do Sistema e Rotinas 2-IEnable-189


IEnable Instruções

2-IEnable-190 Data Types do Sistema e Rotinas


Instruções Compact IF

Compact IF Se uma condição é alcançada, então... (uma


instrução)
Compact IF é usada somente quando uma única instrução é executada se a dada con-
dição é alcançada.

Quando instruções diferentes são executadas, dependendo se a condição especificada


é alcançada ou não, a instrução IF é usada.

Exemplos
IF reg1 > 5 GOTO next;

Se reg1 é maior que 5, a execução do programa continua para o label next.

IF counter > 10 Set do1;

O sinal do1 é ligado se counter > 10.

Argumentos
IF Condition ...
Condition DataType: bool

A condição que deve ser satisfeita para que a instrução seja executada.

Sintaxe
(EBNF)
IF <expressão condicional> ( <instrução> | <SMT>) ’;’

Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas - Expressões
IF com várias instruções Instruções - If

Data Types do Sistema e Rotinas 2-Compact IF-191


Compact IF Instruções

2-Compact IF-192 Data Types do Sistema e Rotinas


Instruções IF

IF Se uma condição é satisfeita, então ...; do contrário ...


IF é usado quando instruções diferentes são usadas dependendo se a condição é
alcançada ou não.

Exemplos
IF reg1 > 5 THEN
Set do1;
Set do2;
ENDIF

Os sinais do1 e do2 são ligados somente se reg1 é maior que 5.

IF reg1 > 5 THEN


Set do1;
Set do2;
ELSE
Reset do1;
Reset do2;
ENDIF

Os sinais do1 e do2 são ligados ou desligados dependendo se reg1 é maior que
5 ou não.

Argumentos
IF Condition THEN ...
{ELSEIF Condition THEN ...}
[ELSE ...]
ENDIF
Condition DataType: bool

A condição deve ser satisfeita pelas instruções entre THEN e ELSE/ELSEIF


para ser executada.

Exemplo
IF counter > 100 THEN
counter := 100;
ELSEIF counter < 0 THEN
counter := 0;
ELSE
counter := counter + 1;

Data Types do Sistema e Rotinas 2-IF-193


IF Instruções

ENDIF

Counter é incrementado em 1. Entretanto, se o valor do counter está fora do lim-


ite 0-100, é designado ao counter o valor limite correspondente.

Execução do programa
As condições são testadas, em ordem sequencial, até que uma delas seja satisfeita. A
execução do programa continua com as instruções associadas àquela condição. Se ne-
nhuma das condições for satisfeita, a execução do programa continua com as instruções
seguindo ELSE. Se mais de uma condição for alcançada, somente as instruções rela-
cionadas com a primeira daquelas condições são executadas.

Sintaxe
(EBNF)
IF <expressão condicional> THEN
< lista de instruções>
{ELSEIF <expressão condicional> THEN < lista de instruções> | <EIF>}
[ELSE
< lista de instruções>]
ENDIF

Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas- Expressões

2-IF-194 Data Types do Sistema e Rotinas


Instruções Incr

Incr Incrementa de 1
Incr é usado para somar 1 a uma variável numérica ou persistente.

Exemplo
Incr reg1;

1 é adicionado a reg1, i.e. reg1:=reg1+1.

Argumentos
Incr Name
Name DataType: num

O nome da variável ou persistente a ser mudada.

Exemplo
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Num:=no_of_parts;
ENDWHILE

O número de partes produzidas atualizado na unidade de programação a cada


ciclo. A produção continua contanto que o sinal stop_production não seja ligado.

Sintaxe
Incr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Informações relacionadas
Descrito em:
Decrementando uma variável em 1 Instruções - Decr
Adicionando qualquer valor a uma variável Instruções - Add
Alterando dado usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação

Data Types do Sistema e Rotinas 2-Incr-195


Incr Instruções

2-Incr-196 Data Types do Sistema e Rotinas


Instruções InvertDO

InvertDO Inverte o valor de um sinal de saída digital


InvertDO (Invert Digital Output) inverte o valor de um sinal de saída digital (0 -> 1 e
1 -> 0).

Exemplo
InvertDO do15;

O atual valor do sinal do15 é invertido.

Argumentos
InvertDO Signal
Signal DataType: signaldo

O nome do sinal a ser invertido.

Execução do programa
O atual valor do sinal é invertido (veja Figure 19).
:

1
Nível do sinal
0
Execução da instrução InvertDO
Execução da instrução InvertDO
1
Nível do sinal
0

Figure 19 Inversão de um sinal de saída digital.

Sintaxe
InvertDO
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-InvertDO-197


InvertDO Instruções

Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral Entrada/Saída Movimento e Princípios de E/S -
Princípios de E/S
Configuração da E/S Parâmetros do Sistema

2-InvertDO-198 Data Types do Sistema e Rotinas


Instruções IODisable

IODisable Desativar unidade de E/S


IODisable é usada para desativar uma unidade E/S durante a execução do programa
(somente no sistema S4C).

As unidades de E/S são ativadas automaticamente após a inicialização, se elas


estiverem definidas nos parâmetros do sistema. Quando necessário por qualquer razão,
as unidades de E/S podem ser desativadas ou ativadas durante a execução do programa.

Exemplo
IODisable “cell1”, 5;

Desativar a unidade de E/S com o nome cell1.Aguarde máx. 5 s.

Argumentos
IODisable UnitName MaxTime
UnitName Tipo de dados: string

O nome da unidade de E/S a ser desativada (com o mesmo nome como foi con-
figurada).

MaxTime Tipo de dados: núm

O período máximo de tempo de espera, expresso em segundos. Se este tempo


acabar antes da unidade de E/S ter acabado os passos de desativar, o tratamento
de erros, se existir um, será chamado com o código de erro ERR_IODISABLE.
Se não existir nenhum tratamento de erros, a execução será parada.

Para desativar uma unidade de E/S demora cerca de 2-5 s.

Execução do programa
A unidade de E/S especificada inicia os passos de desativar. A instrução fica pronta
quando os passos de desativar tiverem acabado. Se MaxTime acabar antes da unidade
de /S ter terminado os passos de desativar, um erro recuperável será gerado.

Depois de desativar uma unidade de E/S, qualquer ajuste de saídas nesta unidade resul-
tará em um erro.

Data Types do Sistema e Rotinas 2-IODisable-199


IODisable Instruções

Exemplo
PROC go_home()
VAR num recover_flag :=0;
...
! Start to disable I/O unit cell1
recover_flag := 1;
IODisable “cell1”, 0;
! Move to home position
MoveJ home, v1000,fine,tool1;
! Wait until disable of I/O unit cell1 is ready
recover_flag := 2;
IODisable “cell1”, 5;
...
ERROR
IF ERRNO = ERR_IODISABLE THEN
IF recover_flag = 1 THEN
TRYNEXT;
ELSEIF recover_flag = 2 THEN
RETRY;
ENDIF
ELSEIF ERRNO = ERR_EXCRTYMAX THEN
ErrWrite “Erro IODisable”, “Not possible to disable I/O unit cell”;
Stop;
ENDIF
ENDPROC

Para poupar o tempo de ciclo, a cell1 da unidade de E/S é desativada durante o


movimento do robô para a posição home. Com o robô na posição home, um teste
é feito para estabelecer se cell1 da unidade de E/S está totalmente desativada.
Após o número máx. de novas tentativas (5 com um tempo de espera de 5 s), a
execução do robô parará com uma mensagem de erro.

O mesmo princípio pode ser usado com IOEnable (isto poupará mais tempos de
ciclo comparado com IODisable).

Sintaxe
IODisable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’

2-IODisable-200 Data Types do Sistema e Rotinas


Instruções IODisable

Informações relacionadas
Descrito em:
Ativando uma unidade de E/S Instruções - IOEnable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e E/S -
I/O Principles
Configuração de E/S Guia do Usuário - Parâmetros do sis-
tema

Data Types do Sistema e Rotinas 2-IODisable-201


IODisable Instruções

2-IODisable-202 Data Types do Sistema e Rotinas


Instruções IOEnable

IOEnable Ativar unidade de E/S


IOEnable é usado para ativar uma unidade de E/S durante a execução do programa
(somente no sistema S4C).

As unidades de E/S são automaticamente ativadas após a inicialização, se elas


estiverem definidas nos parâmetros do sistema. Quando necessário por qualquer razão,
as unidades de E/S podem ser desativadas ou ativadas durante a execução do programa.

Exemplos
IOEnable “cell1”, 5;

Ativar a unidade de E/S com o nome cell1. Aguarde máx. 5 s.

Argumentos
IOEnable UnitName MaxTime
UnitName Tipo de dados: string

O nome da unidade de E/S a ser desativada (com mesmo nome como confi-
gurado).

MaxTime Tipo de dados: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acabar antes da unidade de E/S ter terminado os passos de desativar, o
tratamento de erros, se existir um, será chamado com o código de erro
ERR_IOENABLE. Se não existir um tratamento de erros, a execução será
parada.

Para ativar uma unidade de E/S demora cerca de 2-5 s.

Execução do programa
A unidade de E/S especificada inicia os passos de ativar. A instrução está pronta
quando os passos de ativar terminarem. Se MaxTime acabar antes da unidade de E/S
ter terminados os passos de ativar, um erro recuperável será gerado.

Após uma seqüencia de IODisable - IOEnable, todas as saídas para a unidade de E/S
corrente serão ajustadas para os valores antigos (antes de IODisable).

Data Types do Sistema e Rotinas 2-IOEnable-203


IOEnable Instruções

Exemplo
IOEnable pode também ser usado para checar se alguma unidade de E/S está
desconectada por alguma razão.

VAR num max_retry:=0;


...
IOEnable “cell1”, 0;
SetDO cell1_sig3, 1;
...
ERROR
IF ERRNO = ERR_IOENABLE THEN
IF max_retry < 5 THEN
WaitTime 1;
max_retry := max_retry + 1;
RETRY;
ELSE
RAISE;
ENDIF
ENDIF

Antes de usar sinais em cell1 da unidade de E/S, um teste é feito, se tentando ati-
var a unidade de E/S com um excesso de tempo após 0 seg. Se o teste falhar, é
feito um jump para o tratamento de erros. No tratamento de erros, a execução do
programa aguarda 1 seg. e uma nova tentativa é feita. Após 5 novas tentativas, o
erro ERR_IOENABLE é propagado para o chamador desta rotina.

Sintaxe
IOEnable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’

2-IOEnable-204 Data Types do Sistema e Rotinas


Instruções IOEnable

Informações relacionadas
Descrito em:
Mais exemplos Instruções - IODisable
Disativando uma unidade de E/S Instruções - IODisable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
sistema

Data Types do Sistema e Rotinas 2-IOEnable-205


IOEnable Instruções

2-IOEnable-206 Data Types do Sistema e Rotinas


Instruções ISignalAI

ISignalAI Interrupções de sinal de entrada analógico


ISignalAI (entrada analógica de sinal de interrupção) é usada para ordenar e ativar
interrupções oriundas de um sinal de entrada analógico.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAI \Single, ai1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Ordena uma interrupção para ocorrer na primeira vez que o valor lógico do sinal
de entrada analógica ai1 estiver entre 0,5 e 1,5. Em seguida, uma chamada é feita
à rotina de interceptação iroutine1.

ISignalAI ai1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado for maior que 0,1.

ISignalAI ai1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 for inferior a 0,5 ou superior a 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado for maior que 0,1.

Argumentos
ISignalAI [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch

Especifica se a interrupção deve ocorrer uma vez ou ciclicamente.

Se o argumento Single estiver definido, a interrupção ocorrerá, no máximo, uma


vez. Se o argumento for omitido, haverá uma interrupção toda vez que sua con-
dição for satisfeita.

Signal Tipo de dados: signalai

O nome do sinal que deverá gerar as interrupções.

Data Types do Sistema e Rotinas 2-ISignalAI-207


ISignalAI Instruções

Condition Tipo de dados: aiotrigg

Especifica como HighValue e LowValue definem a condição a ser satisfeita:

- AIO_ABOVE_HIGH: valor lógico do sinal acima de HighValue


- AIO_BELOW_HIGH: valor lógico do sinal abaixo de HighValue
- AIO_ABOVE_LOW: valor lógico do sinal acima de LowValue
- AIO_BELOW_LOW: valor lógico do sinal abaixo de LowValue
- AIO_BETWEEN: valor lógico do sinal entre LowValue
e HighValue
- AIO_OUTSIDE: valor lógico do sinal acima de HighValue ou
abaixo de LowValue
- AIO_ALWAYS: independente de HighValue e LowValue

HighValue Tipo de dados: num

Valor lógico alto para definir a condição.

LowValue Tipo de dados: num

Valor lógico baixo para definir a condição.

DeltaValue Tipo de dados: num

Define a diferença mínima de sinal lógico para que uma nova interrupção seja
gerada. O valor de sinal real comparado com o valor de referência armazenado
deve ser maior que o DeltaValue especificado para que uma nova interrupção seja
gerada.

[\DPos] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico positivas produzirão novas


interrupções.

[\DNeg] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico negativas produzirão novas


interrupções.

Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar interrupções.

Interrupt Tipo de dados: intnum

A identificação da interrupção. Essa interrupção deve ter sido conectada anteri-


ormente a uma rotina de interceptação através da instrução CONNECT.

2-ISignalAI-208 Data Types do Sistema e Rotinas


Instruções ISignalAI

Execução do programa
Quando o sinal satisfaz as condições especificadas (tanto Condition quanto DeltaV-
alue), uma chamada é feita à rotina de interceptação correspondente. Quando isso tiver
sido executado, a execução do programa continuará de onde a interrupção ocorreu.

Condições para geração da interrupção

Para que uma interrupção seja ordenada, toda vez que o sinal é amostrado, o valor do
sinal é lido, salvo e, posteriormente, utilizado como valor de referência para a condição
DeltaValue.

No tempo de subscrição da interrupção, se for especificado DeltaValue = 0 e após o


tempo de subscrição da interrupção, toda vez que o sinal for amostrado, seu valor é
comparado com HighValue e LowValue, conforme Condition e considerando DeltaV-
alue, para gerar ou não uma interrupção. Se o novo valor lido satisfizer o HighValue e
o LowValue especificados, (Condition), mas sua diferença quando comparado com o
último valor de referência armazenado for menor ou igual ao argumento DeltaValue,
nenhuma interrupção ocorrerá. Nenhuma interrupção ocorrerá também se o sinal de
diferença não estiver na direção especificada (argumento \DPos ou \DNeg).

O valor de referência armazenado para a condição DeltaValue é atualizado com o novo


valor lido para uso posterior em qualquer amostra se as seguintes condições forem sat-
isfeitas:

- Argumento Condition com HighValue e LowValue


(dentro dos limites)
- Argumento DeltaValue
(alteração de sinal suficiente em qualquer direção, independente da opção
\DPos ou \DNeg especificada)

O valor de referência só é atualizado no momento da amostragem, e não no tempo de


subscrição da interrupção.

Uma inteiro também é gerada na amostragem para atualização do valor de referência


se a direção da diferença do sinal estiver de acordo com o argumento especificado
(qualquer direção, \DPos ou \DNeg).

Se a opção \Single for utilizada, somente uma interrupção será gerada.


Se a opção \Single não for usada (interrupção cíclica), a cada amostragem do valor do
sinal, um novo teste das condições especificadas será feito (tanto Condition quanto
DeltaValue), comparando o valor de sinal real e o último valor de referência armaze-
nado, para gerar ou não uma interrupção.

Data Types do Sistema e Rotinas 2-ISignalAI-209


ISignalAI Instruções

Condição para geração de interrupção no momento de subscrição da interrupção

Amostrar antes da subscrição da interrupção

RefValue := CurrentValue

Interrupção subscrição
Falso
CurrentValue testado em relação a
Condition, HighValue e LowValue

Verdadeiro

Falso
DeltaValue = 0

Verdadeiro

Interrupção gerada

Continuar

2-ISignalAI-210 Data Types do Sistema e Rotinas


Instruções ISignalAI

Condição para geração de interrupção a cada amostragem, após a subscrição da


interrupção

Nova amostra

Falso
CurrentValue verificado em relação a
Condition, HighValue e LowValue
Verdadeiro

Verdadeiro
Não há DPos ou DNeg especificado e
ABS(CurrentValue - RefValue) > DeltaValue
Falso

DPos especificado e Verdadeiro


(CurrentValue - RefValue) > DeltaValue

Falso

Verdadeiro
DNeg especificado e
(RefValue - CurrentValue) > DeltaValue

Falso
RefValue := CurrentValue

ABS(CurrentValue - RefValue) > DeltaValue Interrupção


gerada
Falso
Verdadeiro

RefValue := CurrentValue

Continuar

Data Types do Sistema e Rotinas 2-ISignalAI-211


ISignalAI Instruções

Exemplo 1 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_BETWEEN, 6.1, 2,2, 1.0, sig1int;

A amostra 1 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 0 é maior que
DeltaValue.

A amostra 2 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 1 é maior que
DeltaValue.

As amostras 3, 4 e 5 não irão gerar interrupção alguma porque a diferença de sinal


é menor que DeltaValue.

A amostra 6 irá gerar uma interrupção.

As amostras de 7 a 10 não irão gerar interrupções porque o sinal está acima de


HighValue

A amostra 11 não irá gerar interrupção porque a diferença de sinal comparada


com a amostra 6 é igual a DeltaValue.

A amostra 12 não irá gerar interrupção alguma porque a diferença de sinal com-
parada com a amostra 6 é inferior a DeltaValue.

2-ISignalAI-212 Data Types do Sistema e Rotinas


Instruções ISignalAI

Exemplo 2 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_BETWEEN, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado nas amostras 1 e 2 porque o sinal está


dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.
Nenhuma interrupção será gerada porque as alterações de sinal estão em direção
negativa.

A amostra 6 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal na direção positiva comparada com a
amostra 2 é maior que DeltaValue.

Data Types do Sistema e Rotinas 2-ISignalAI-213


ISignalAI Instruções

Exemplo 3 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI \Single, ai1, AIO_OUTSIDE, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado na amostra 7 porque o sinal está den-


tro dos limites e a diferença absoluta de sinal entre o valor real e o último valor
de referência armazenado é maior que 1,0.

A amostra 8 irá gerar uma interrupção porque o valor do sinal está acima de
HighValue e a diferença de sinal na direção positiva comparada com a amostra 7
é maior que DeltaValue.

2-ISignalAI-214 Data Types do Sistema e Rotinas


Instruções ISignalAI

Exemplo 4 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_ALWAYS, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado nas amostras 1 e 2 porque o sinal está


dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.

A amostra 6 irá gerar uma interrupção porque a diferença de sinal na direção


positiva comparada com a amostra 2 é maior que DeltaValue.

As amostras 7 e 8 irão gerar uma interrupção porque a diferença de sinal na


direção positiva comparada com a amostra anterior é maior que DeltaValue.

Um novo valor de referência é armazenado nas amostras 11 e 12 porque o sinal


está dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.

Data Types do Sistema e Rotinas 2-ISignalAI-215


ISignalAI Instruções

Tratamento de erros
Na subscrição de interrupção em um sinal de entrada analógico, uma interrupção será
feita para cada alteração no valor analógico que satisfaça a condição especificada ao
ordenar a subscrição da interrupção. Se o valor analógico estiver ruidoso, várias inter-
rupções poderão ser geradas, mesmo que somente um ou dois bits no valor analógico
tenham sido alterados.

Para evitar interrupções devidas a pequenas alterações no valor de entrada analógica,


defina DeltaValue com um nível maior que 0 para que nenhuma interrupção seja gerada
até que uma alteração no valor analógico seja maior que o DeltaValue especificado.

Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.

HighValue deve estar acima de LowValue.

DeltaValue deve ser 0 ou positivo.

As limitações para a identificação da interrupção são as mesmas que para ISignalDI.

Sintaxe
ISignalAI
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalai>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’

2-ISignalAI-216 Data Types do Sistema e Rotinas


Instruções ISignalAI

Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada Instruções - ISignalAO
analógica
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de Características básicas - Interrupções
interrupções
Mais exemplos Tipos de dados - intnum
Parâmetros de sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES

Data Types do Sistema e Rotinas 2-ISignalAI-217


ISignalAI Instruções

2-ISignalAI-218 Data Types do Sistema e Rotinas


Instruções ISignalAO

ISignalAO Interrupções do sinal de saída analógica


ISignalAO (saída analógica do sinal de interrupção) é usado para ordenar e ativar
interrupções a partir de um sinal de saída analógica.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAO \Single, ao1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Ordena uma interrupção para ocorrer na primeira vez que o valor lógico do sinal
de saída analógica ao1 estiver entre 0,5 e 1,5. Em seguida, uma chamada é feita
à rotina de interceptação iroutine1.

ISignalAO ao1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado anteriormente for maior que 0,1.

ISignalAO ao1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver abaixo de 0,5 ou acima de 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado anteriormente for
maior que 0,1.

Argumentos
ISignalAO [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch

Especifica se a interrupção deve ocorrer uma vez ou ciclicamente.

Se o argumento Single estiver definido, a interrupção ocorrerá somente uma vez.


Se o argumento for omitido, haverá uma interrupção toda vez que sua condição
for satisfeita.

Signal Tipo de dados: signalao

O nome do sinal que deve gerar interrupções.

Data Types do Sistema e Rotinas 2-ISignalAO-219


ISignalAO Instruções

Condition Tipo de dados: aiotrigg

Especifica como HighValue e LowValue definem a condição a ser satisfeita:

- AIO_ABOVE_HIGH: o valor lógico do sinal está acima de HighValue


- AIO_BELOW_HIGH: o valor lógico do sinal está abaixo de HighValue
- AIO_ABOVE_LOW: o valor lógico do sinal está acima de LowValue
- AIO_BELOW_LOW: o valor lógico do sinal está abaixo de LowValue
- AIO_BETWEEN: o valor lógico do sinal está entre LowValue
e HighValue
- AIO_OUTSIDE: o valor lógico do sinal está acima de HighValue ou
abaixo de LowValue
- AIO_ALWAYS: independente de HighValue e LowValue

HighValue Tipo de dados: num

Valor lógico alto para definir a condição.

LowValue Tipo de dados: num

Valor lógico baixo para definir a condição.

DeltaValue Tipo de dados: num

Define a diferença de sinal lógico mínima para a geração de uma nova inter-
rupção. O valor real do sinal comparado com o valor de referência armazenado
anteriormente deve ser maior que o DeltaValue especificado para que uma nova
interrupção seja gerada.

[\DPos] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico positivas produzirão novas


interrupções.

[\DNeg] Tipo de dados: switch

Especifica que somente diferenças de sinal negativas produzirão novas inter-


rupções.

Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar novas interrupções.

Interrupt Tipo de dados: intnum

A Identificação da interrupção. Essa interrupção deve ter sido conectada anteri-


ormente a uma rotina de interceptação através da instrução CONNECT.

2-ISignalAO-220 Data Types do Sistema e Rotinas


Instruções ISignalAO

Execução do programa
Consulte as instruções ISignalAI para obter informações sobre:

- Execução do programa
- Condição para geração de interrupções
- Mais exemplos

Os mesmos princípios de ISignalAOsão válidos para ISignalAI.

Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.

HighValue precisa estar acima de LowValue.

DeltaValue precisa ser 0 ou positivo.

As limitações para a identidade da interrupção são as mesmas que para ISignalDO.

Sintaxe
ISignalAO
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalao>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’

Data Types do Sistema e Rotinas 2-ISignalAO-221


ISignalAO Instruções

Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada analógicaInstruções - ISignalAI
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de interrupçõesCaracterísticas básicas - Inter-
rupções
Mais exemplos Tipos de dados - intnum
Parâmetros do sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES

2-ISignalAO-222 Data Types do Sistema e Rotinas


Instruções ISignalDI

ISignalDI Ordena interrupções de um sinal de entrada digital


ISignalDI (Interrupt Signal Digital In) é usado para ordenar e habilitar interrupções de
um sinal de entrada digital.

Os sinais de sistema também podem produzir interrupções.

Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.

ISignalDI di1,0,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocado em 0.

ISignalDI \Single, di1,1,sig1int;

Ordena uma interrupção que ocorre somente na primeira vez que o sinal de
entrada digital di1 é colocado em 1.

Argumentos
ISignalDI [ \Single ] Signal TriggValue Interrupt
[ \Single ] DataType: switch

Especifica se a interrupção ocorre somente uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre uma vez. Se o argumento é


omitido, a interrupção irá ocorrer toda vez que a condição é satisfeita.

Signal DataType: signaldi

O nome do sinal que gera as interrupções.

TriggValue DataType: dionum

O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.

O valor é especificado como 0 ou 1 ou como um valor simbólico (por ex. high/


low). O sinal é disparado na transição para 0 ou 1.

Manual de Referência do RAPID 8-ISignalDI-223


ISignalDI Instruções

TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).

Interrupt DataType: intnum

A identidade da interrupção. Este deve ter sido previamente conectado a uma


rotina trap por meio da instrução CONNECT.

Execução do programa
Quando o sinal assume o valor especificado, uma chamada é feita para a correspon-
dente rotina trap. Quando isto é executado, a execução do programa continua de onde
a interrupção ocorreu.

Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 20).

1
Nível do sinal
0
Interrupção ocorre
Ordem de interrupção

Ordem de interrupção
1
Nível do sinal
0
Interrupção ocorre
Figura 20 Interrupção de um sinal de entrada digital no nível de sinal 1.

Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem antes ser apagada. Interrupções devem portanto serem manipuladas como mostra
em uma das alternativas abaixo.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC

Toda ativação de interrupções é feita no início do programa. Estas instruções são

2-ISignalDI-224 Data Types do Sistema e Rotinas


Instruções ISignalDI

então deixadas fora do fluxograma principal do programa.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC

A interrupção é eliminada no final do programa e, em seguida, é reativada. É de


notar que, neste caso, a interrupção fica inativo durante um curto período de
tempo.

Sintaxe
ISignalDI
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ TriggValue ’:=’ ] < expressão (IN) do dionum >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’

Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de saída Instruções - ISignalDO
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum

Manual de Referência do RAPID 8-ISignalDI-225


ISignalDI Instruções

2-ISignalDI-226 Data Types do Sistema e Rotinas


Instruções ISignalDO

ISignalDOInterrupções de um sinal de saída digital


ISignalDO (Interrupt Signal Digital Out) é usado para ordenar e habilitar interrupções
de um sinal de saída digital.

Sinais do sistema também podem gerar interrupções.

Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1,1,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.

ISignalDO do1,0,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocado em 0.

ISignalDO\Single, do1,1,sig1int;

Ordena uma interrupção que ocorre somente na primeira vez que o sinal de saída
digital do1 colocado em 1.

Argumentos
ISignalDO [ \Single ] Signal TriggValue Interrupt
[ \Single ] Data type: switch

Especifica se a interrupção ocorre somente uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre uma vez. Se o argumento é


omitido, a interrupção irá ocorrer toda vez que a condição é satisfeita.

Signal Data type: signaldo

O nome do sinal que gera as interrupções.

TriggValue Data type: dionum

O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.

O valor é especificado como 0 ou 1 ou como um valor simbólico (ex. high/low).


O sinal é disparado na transição para 0 ou 1.

Manual de Referência do RAPID 8-ISignalDO-227


ISignalDO Instruções

TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).

Interrupt Data type: intnum

A identidade da interrupção. Este deve ter sido previamente conectado a uma


rotina trap por meio da instrução CONNECT.

Execução do programa
Quando o sinal assume o valor especificado (0 ou 1), uma chamada é feita para a rotina
de interceptação correspondente. Quando isto é executado, a execução do programa
continua de onde a interrupção ocorreu.

Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 21).

1
Nível do sinal
0
Interrupção ocorre
Ordem de interrupção

Ordem de interrupção
1
Nível do sinal
0
Interrupção ocorre
Figura 21 Interrupção de um sinal de entrada digital no nível de sinal 1.

Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem antes ser apagada. Interrupções devem portanto serem manipuladas como mostra
em uma das alternativas abaixo.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC

Toda ativação de interrupções é feita no início do programa. Estas instruções são

8-ISignalDO-228 Manual de Referência do RAPID


Instruções ISignalDO

então deixadas fora do fluxograma principal do programa.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC

A interrupção é apagada no final do programa, e é então reativada. Neste caso,


poderá ser notado que a interrupção está inativa por um curto período.

Sintaxe
ISignalDO
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ TriggValue ’:=’ ] < expression (IN) of dionum >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’

Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de entrada Instruções - ISignalDI
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum

Manual de Referência do RAPID 8-ISignalDO-229


ISignalDO Instruções

8-ISignalDO-230 Manual de Referência do RAPID


Instruções ISleep

ISleep Desativa uma interrupção


ISleep (Interrupt Sleep) é usado para desativar uma interrupção individual temporaria-
mente.

Durante o tempo de desativação, quaisquer interrupções geradas do tipo especificado


serão descartadas sem a execução de qualquer rotina de interceptação.

Exemplo
ISleep sig1int;

A interrupção sig1int é desativada.

Argumentos
ISleep Interrupt
Interrupt DataType: intnum

A variável (identificação da interrupção) da interrupção.

Execução do programa
Quaisquer interrupções geradas do tipo especificado serão descartadas sem a execução
de qualquer rotina de interceptação, até que a interrupção seja reativada através da
instrução IWatch. Interrupções geradas enquanto ISleep está ativa são ignoradas.

Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
ISleep timeint;
WriteBin ch1, buffer, 30;
IWatch timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “The serial communication is broken”;
EXIT;
ENDIF

Manual de Referência do RAPID 8-ISleep-231


ISleep Instruções

ENDTRAP

Comunicação através do canal serial ch1 é monitorada por meio de interrupções


que são geradas a cada 60 segundos. A rotina trap checa se a comunicação está
funcionando. Entretanto, quando a comunicação está em progresso, estas inter-
rupções não são permitidas.

Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas ou ativadas. Se o
número da interrupção for desconhecido, a variável do sistema ERRNO será ajustada
para ERR_UNKINO (veja "Data types - errnum"). O erro pode então ser manuseado
no tratamento de erros.

Sintaxe
ISleep
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Habilitando uma interrupção Instruções - IWatch
Desabilitando todas as interrupções Instruções - IDisable
Cancelando uma interrupção Instruções - IDelete

8-ISleep-232 Manual de Referência do RAPID


Instruções ITimer

ITimer Ordena uma interrupção com tempo determinado


ITimer (Interrupt Timer) é usado para ordenar e habilitar uma interrupção com tempo
determinado.

Esta instrução pode ser usada, por exemplo, para checar a posição do equipamento pe-
riférico uma vez a cada minuto.

Exemplos
VAR intnum timeint;
CONNECT timeint WITH iroutine1;
ITimer 60, timeint;

Ordena uma interrupção que ocorre ciclicamente a cada 60 segundos. Uma cha-
mada é feita à uma rotina trap iroutine1.

ITimer \Single, 60, timeint;

Ordena uma interrupção que ocorre uma vez depois de 60 segundos.

Argumentos
ITimer [ \Single ] Time Interrupt
[ \Single ] DataType: switch

Especifica se a interrupção ocorre uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre somente uma vez. Se o


argumento é omitido, a interrupção irá ocorrer cada vez no tempo especificado.

Time DataType: num

O tempo que deve passar antes que a interrupção ocorra.

O valor é especificado em segundos. Se Single é ligado, este tempo não pode ser
menor que 0.05segundos. O tempo correspondente para interrupções cíclicas é
0.25 seconds.

Interrupt DataType: intnum

A variável (identidade de interrupção) da interrupção. Esta deve ter sido previa-


mente conectada a uma rotina trap por meio da instrução CONNECT.

Execução do programa
A rotina trap correspondente é automaticamente chamada no dado tempo seguindo a

Data Types do Sistema e Rotinas 2-ITimer-233


ITimer Instruções

ordem de interrupção. Quando isto é executado, a execução do programa continua de


onde a interrupção ocorreu.

Se uma interrupção ocorre ciclicamente, uma nova contagem do tempo é iniciada


quando a interrupção ocorre.

Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “A comunicação serial está rompida”;
EXIT;
ENDIF
ENDTRAP

Comunicação através do canal serial ch1 por meio de interrupções que são gera-
das a cada 60 segundos. A rotina trap checa se a comunicação está funcionando.
Se ela não está, a execução do programa é interrompida e uma mensagem de erro
aparece.

Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem ser primeiramente apagada. Veja Instruções - ISignalDI.

Sintaxe
ITimer
[ ’\’Single ’,’]
[ Time ’:=’ ] < expressão (IN) do num >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações em interrupções dirigidas Características Básicas- Interrupções

2-ITimer-234 Data Types do Sistema e Rotinas


Instruções ITimer

IVarValue Ordena uma variável de valor de interrupção


IVarVal(Variável de Valor de Interrupção) é usado para ordenar e habilitar uma inter-
rupção quando o
valor de uma variável acedida via o interface de sensor serial tiver sido alterada.

Esta instrução pode ser usada, por exemplo, para volumes de costura ou valores de
intervalo de
um detetor de costuras.

Exemplos
LOCAL PERS num adtVlt{25}:=[1,1.2,1.4,1.6,1.8,2,2.16667,2.33333,2.5,...];
LOCAL PERS num adptWfd{25}:=[2,2.2,2.4,2.6,2.8,3,3.16667,3.33333,3.5,...];
LOCAL PERS num adptSpd{25}:=10,12,14,16,18,20,21.6667,23.3333,25[,...];
LOCAL CONST num GAP_VARIABLE_NO:=11;
PERS num gap_value;
VAR intnum IntAdap;

PROC main()
! Setup the interrupt. The trap routine AdapTrp will be called
! when the gapvariable with number ‘GAP_VARIABLE_NO’ in
! the sensor interface has been changed. The new value will be available
! in the PERS gp_value variable.
CONNECT IntAdap WITH AdapTrp;
IVarValue GAP_VARIABLE_NO, gap_value, IntAdap;

! Start welding
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ENDPROC

TRAP AdapTrap
VAR num ArrInd;

!Scale the raw gap value received


ArrInd:=ArrIndx(gap_value);

! Update active welddata PERS variable ‘adaptWd’ with


! new data from the arrays of predefined parameter arrays.
! The scale gapvalue is used as index in the voltag, wirefeed and speed arrays.
adaptWd.weld_voltage:=adptVlt{ArrInd};
adaptWd.weld_wirefeed:=adptWfd{ArrInd};
adaptWd.weld_speed:=adptSpd{ArrInd};

!Request a refresh of AW parameters using the new data inadaptWd


ArcRefresh;
ENDTRAP

Data Types do Sistema e Rotinas 2-ITimer-235


ITimer Instruções

Argumentos
IVarValue VarNo Value, Interrupt
VarNo Tipo de dados: num

O número da variável a ser supervisionada.

Value Tipo de dados: num

Uma variável PERS que irá conter o novo valor de Varno.

Interrupt Tipo de dados: intnum

A variável (identidade de interrupção) da interrupção. Isto deverá ter sido


conectada a um sinal de Trig por meio da instrução CONNECT.

Execução do programa
O sinal de Trig correspondente é automaticamente chamado em um determinado tempo
a seguir à ordem de interrupção. Quando isto tiver sido executado, a execução do pro-
grama continua a partir de onde ocorreu a interrupção.

Limitações
A mesma variável para a identidade de interrupção não pode ser usada mais de cinco
vezes, sem primeiro ser eliminada.

Sintaxe
IVarValue
[ VarNo ’:=’ ] < expression (IN) of num >’,’
[ Value ’:=’ ] < persistent(PERS) of num >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’

Informação relacionada
Descrita em:
Sumário de interrupts Sumário RAPID - Interrupts
Mais informações sobre Características básicas - Interrupts
o gerenciamento de interrupts

2-ITimer-236 Data Types do Sistema e Rotinas


Instruções IWatch

IWatch Ativa uma interrupção


IWatch (Interrupt Watch) é usada para ativar uma interrupção que foi anteriormente
ordenada, mas que tinha sido desativada com ISleep.

Exemplo
IWatch sig1int;

A interrupção sig1int que anteriormente estava desativada, é ativada.

Argumentos
IWatch Interrupt
Interrupt DataType: intnum

Variável (identificação) da interrupção.

Execução do programa
Reativa mais uma vez as interrupções do tipo especificado. Contudo, as interrupções
geradas enquanto a instrução ISleep estava em vigor são ignoradas.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;
.
ISleep sig1int;
weldpart1;
IWatch sig1int;

Durante a execução da rotina weldpart1, nenhuma interrupção é permitida pelo


sinal di1.

Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas. Se o número da inter-
rupção for desconhecido, a variável do sistema ERRNO será ajustada para
ERR_UNKINO (veja "Data types - ernum"). O erro pode ser manuseado no tratamento
de erros.

Manual de Referência do RAPID 8-IWatch-237


IWatch Instruções

Sintaxe
IWatch
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desativando uma interrupção Instruções - ISleep

2-IWatch-238 Data Types do Sistema e Rotinas


Instruções label

label Nome da linha


Label é usado para nomear uma linha do programa. Usando a instrução GOTO , este
nome também pode ser usado para mover a execução do programa.

Exemplo
GOTO next;
.
next:

A execução do programa continua com a instrução em seguida de next.

Argumentos
Label:
Label Identificador

O nome que se deseja dar à linha.

Execução do programa
Nada acontece quando você executa esta instrução.

Limitações
O label não pode ser o mesmo que

- qualquer outro label dentro da mesma rotina,


- o nome de qualquer dado dentro da mesma rotina.

Um rótulo oculta um dado global e rotinas com o mesmo nome dentro da rotina nela
localizada .

Sintaxe
(EBNF)
<identificador>’:’

Data Types do Sistema e Rotinas 2-label-239


label Instruções

Informações relacionadas
Descrito em:
Identificadores Características Básicas-
Elementos básicos
Movendo exec. do programa para um label Instruções - GOTO

2-label-240 Data Types do Sistema e Rotinas


Instruções Load

Load Carregar o módulo de um programa durante a


execução
Load é usado para carregar um módulo de um programa na memória durante a
execução.

O módulo do programa carregado será adicionado aos módulos já existentes na


memória do programa.

Um módulo de sistema ou de programa pode ser carregado em modo estático (padrão)


ou dinâmico:

Modo estático
Tabela 1 Como operações diferentes afetam módulos de sistema ou de programa
carregados estaticamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não afetado Não carregado

Módulo de sistema Não afetado Não afetado

Modo dinâmico
Tabela 2 Como operações diferentes afetam módulos de sistema ou de programa
carregados dinamicamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não carregado Não carregado

Módulo de sistema Não carregado Não carregado

Os módulos carregados, tanto estática quanto dinamicamente, podem ser descarrega-


dos pela instrução UnLoad.

Exemplo
Carregar ram1disk \File:="PART_A.MOD";

Carrega o módulo do programa PART_A.MOD de ram1disk na memória do pro-


grama. (ram1disk é uma constante string pré-definida "ram1disk:"). Carrega
módulo de programa em modo dinâmico.

Data Types do Sistema e Rotinas 2-Load-241


Load Instruções

Argumentos
Load [\Dynamic] FilePath [\File]
[\Dynamic] Data type: switch

A opção ativa o carregamento de um módulo de programa em modo dinâmico.


Caso contrário, o carregamento ocorre em modo estático.

FilePath Data type: string

A trajetória do arquivo e o nome do arquivo que vai ser carregado na memória do


programa. O nome do arquivo será excluído quando o argumento \File for usado.

[\File] Data type: string

Quando o nome do arquivo não se encontra incluído no argumento FilePath, o


mesmo terá de ser definido junto com este argumento.

Execução do programa
A execução do programa espera que o módulo do programa acabe o carregamento antes
de passar à instrução seguinte.

De modo a obter uma boa estrutura do programa, que seja de fácil compreensão e
manutenção, o carregamento e o descarregamento dos módulos do programa deverão
ser executados a partir do módulo principal que está sempre presente na memória do
programa durante a execução.

Depois de ter sido carregado, o módulo do programa será conectado e inicializado. A


inicialização do módulo carregado ajusta todas as variáveis no nível do módulo para os
seus valores iniciais. As referências por resolver serão aceites se o parâmetro Tasks do
sistema estiver ligado (BindRef = NO). Contudo, quando o programa é inicializado, a
função Program/File/Check do programa da unidade de programação não verificará as
referências não resolvidas se o parâmetro BindRef = NO. Aparecerá um parâmetro run
time error na execução de uma referência por resolver

Exemplos
Load \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD";

Carregue o módulo do programa DOOR1.MOD de ram1disk no diretório


DOORDIR na memória do programa. O módulo de programa é carregado em
modo dinâmico.

Load \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo de cima mas com outra sintaxe.

2-Load-242 Data Types do Sistema e Rotinas


Instruções Load

Load "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que os dois exemplos acima, mas o módulo é carregado em modo


estático.

Limitações
Não é permitido carregar um módulo de programa que contenha uma rotina principal.

As rotinas TRAP, os passos os sistema E/S e outras tarefas do programa não podem ser
executadas durante o carregamento.

Evite usar um disquete flexível para carregamento uma vez que a leitura de um dis-
quete flexível demora muito tempo.

Uma parada do programa durante a execução da instrução Load resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.

Tratamento de erros
Se um arquivo nas instruções Load não for encontrado, nesse caso a variável do sis-
tema é ERRNO é ajustada para ERR_FILNOTFND. Se o módulo já está carregado na
memória do programa então a variável do sistema ERRNO é ajustada para
ERR_LOADED (veja “Data types - errnum”). Os erros acima mencionados podem ser
manuseados no tratamento de erros.

Sintaxe
Load
[‘\’Dynamic ‘,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’

Data Types do Sistema e Rotinas 2-Load-243


Load Instruções

Informações relacionadas
Descrito em:
Descarregar um módulo do programa Instruções - UnLoad
Carregar um módulo de programa em Instruções - StartLoad-WaitLoad
paralelo com a execução de um outro
programa
Aceitar referências por resolver Parâmetros do Sistema- Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef

2-Load-244 Data Types do Sistema e Rotinas


Instruções MechUnitLoad

MechUnitLoad Define uma carga para


uma unidade mecânica
MechUnitLoad é usado para definir uma carga para uma unidade mecânica externa.
(A carga para o robô é definida com a instrução GripLoad)

Essa instrução deve ser usada para todas as unidades mecânicas com modelo dinâmico
em servo para obter o melhor desempenho em movimentação.

A instrução MechUnitLoad deve sempre ser executada após a execução da instrução


ActUnit.

Exemplo
IRBP_L

eixo 1

Figure 22 Uma unidade mecânica chamada IRBP_L, do tipo IRBP L

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, load0;

Ativa a unidade mecânica IRBP_L e define a carga load0 (correspondente a


nenhuma carga), montada no eixo 1.

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, fixture1;

Ativa a unidade mecânica IRBP_L e define a carga fixture1, correspondente ao


arranjo de fixação fixture1 montado no eixo 1.

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, workpiece1;

Ativa a unidade mecânica IRBP_L e define a carga workpiece1 correspondente


ao arranjo de fixação montado e à peça de trabalho chamada workpiece1 no eixo
1.

Data Types do Sistema e Rotinas 2-MechUnitLoad-245


MechUnitLoad Instruções

Argumentos
MechUnitLoad MechUnit AxisNo Load
MechUnit (Unidade mecânica) Tipo de dados: mecunit

O nome da unidade mecânica.

AxisNo (Número do eixo) Tipo de dados: num

O número do eixo dentro da unidade mecânica que segura a carga.

Load Tipo de dados: loaddata

Os dados de carga que descrevem a carga atual a ser definida.

Execução do programa
Após a execução de MechUnitLoad, quando os eixos externos e do robô se estabilizam,
a carga especificada é definida para o eixo e a unidade mecânica especificados. Isso sig-
nifica que a carga é controlada e monitorada pelo sistema de controle.

A carga padrão na partida a frio para um determinado tipo de unidade mecânica é a


carga máxima predefinida para esse tipo de unidade mecânica.

Quando alguma outra carga é usada, a carga real para o eixo e a unidade mecânica deve
ser redefinida com essa instrução. Deve ser sempre feito após a ativação da unidade
mecânica.

A carga definida permanece depois de uma reiniciação por falha de energia.


A carga definida também permanece depois de uma reiniciação do programa após a ati-
vação manual de algumas outras unidades mecânicas da janela de movimentação.

X Fixação
Sistema de coordenadas de atuação final
para a unidade mecânica

Peça de trabalho

O centro de gravidade para a carga (fixação + peça de trabalho)


Y Unidade mecânica

Figure 23 Carga montada no atuador de extremidade de uma unidade mecânica.

2-MechUnitLoad-246 Data Types do Sistema e Rotinas


Instruções MechUnitLoad

Exemplo

IRBP_K

eixo 2

eixo 1

eixo 3

Figure 24 Uma unidade mecânica chamada IRBP_K do tipo IRBP K com três eixos.

MoveL homeside1, v1000, fine, gun1;


...
ActUnit IRBP_K;

A unidade mecânica IRBP_K inteira é ativada.

MechUnitLoad IRBP_K, 2, workpiece1;

Define a carga workpiece1 na unidade mecânica IRBP_K, eixo 2.

MechUnitLoad IRBP_K, 3, workpiece2;

Define a carga workpiece2 na unidade mecânica IRBP_K, eixo 3.

MoveL homeside2, v1000, fine, gun1

Os eixos da unidade mecânica IRBP_K são movidos para a posição de


comutação homeside2 com a carga montada em ambos os eixos 2 e 3.

Limitações
A instrução de movimento anterior a essa instrução deve ser terminada com um ponto
de parada para tornar uma reiniciação dessa instrução possível após uma falha de ener-
gia.

Data Types do Sistema e Rotinas 2-MechUnitLoad-247


MechUnitLoad Instruções

Sintaxe
MechUnitLoad
[MechUnit ’:=’ ] < variable (VAR) of mecunit> ’,’
[AxisNo ’:=’ ] <expression (IN) of num ’,’
[ Load ’:=’ ] < persistent (PERS) of loaddata > ’;’

Informações relacionadas
Descrito em:
Identificação de carga para unidades LoadID&CollDetect
mecânicas externas - Programa muloadid.prg
Unidades mecânicas Tipos de dados - mecunit
Definição de dados de carga Tipos de dados - loaddata
Definição de carga para o robô Instruções - GripLoad
Tipos de dados - tooldata

2-MechUnitLoad-248 Data Types do Sistema e Rotinas


Instruções MoveCSync

MoveCSync Movimenta circularmente o robô


e executa um procedimento RAPID
MoveCSync (Move Circular Synchronously) é usada para mover o ponto central da fer-
ramenta (TCP), circularmente a um dado destino. O procedimento RAPID especificado
será executado a meio do trajeto de canto no ponto de destino. Durante o movimento, a
orientação permanece normalmente inalterada em relação ao círculo.

Exemplos
MoveCSync p1, p2, v500, z30, tool2, “proc1”;

O TCP da ferramenta, tool2, é movido em círculo para a posição p2, com o dado
de velocidade v500 e dado de zona z30. O círculo estará definido a partir da
posição inicial, do ponto do círculo p1 e do ponto de destino p2. O procedimento
proc1 será executado no meio do trajeto de canto em p2.

Argumentos
MoveCSync CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
ProcName
CirPoint Tipos de dados: robtarget

O ponto do círculo do robô. É uma posição no círculo entre o ponto inicial e o


ponto de destino. Para obter alta precisão, deverá estar situado a meio trajeto
entre os pontos inicial e de destino. Se estiver muito próximo do ponto inicial ou
do ponto de destino, o robô poderá dar uma advertência. O ponto do círculo é
definido como uma posição indicada ou armazenada diretamente na instrução
(marcada com um * na instrução). A posição dos eixos externos não será usada.

ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição in-
dicada ou armazenada diretamente na instrução (marcada com um * na
instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade que se aplicam aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e dos eixos externos.

[ \T ] (Time) Tipos de dados: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual se movem o robô e os eixos externos. Será depois substituído pelos dados
da velocidade correspondente.

Data Types do Sistema e Rotinas 2-MoveCSync-249


MoveCSync Instruções

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho do


trajeto de canto.

Tool Tipos de dados: tooldata

A ferramenta é usada quando o robô se move. O TCP é o ponto que é deslocado


para o ponto de destino especificado.

[ \WObj] (Objeto de Trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas do objeto) para o qual é relacionada


a posição do robô na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, for usado um TCP esta-
cionário ou eixos de coordenadas externas, este argumento deverá ser especifi-
cado.

ProcName (Nome de Procedimento) Tipos de Dados: string

Indica o procedimento RAPID a ser executado a meio do trajeto de canto no


ponto de destino.

Execução do programa
Para maiores informações sobre movimentos circulares, ver a instrução MoveC.

O procedimento RAPID especificado será executado quando o TCP alcançar o meio do


trajeto de canto no ponto de destino da instrução MoveCSync conforme Figura 1:

MoveCSync p2, p3, v1000, z30, tool2, “my_proc”;


Quando TCP estiver aqui, p4
my_proc será executado
p1
Zona
p3
p2

Figura 25 Execução de procedimento RAPID definido pelo usuário a meio do trajeto de canto.

2-MoveCSync-250 Data Types do Sistema e Rotinas


Instruções MoveCSync

Para pontos de parada recomendamos usar a seqüência de programação “normal” com


MoveC + outras instruções RAPID em seqüência.

Execução de procedimentos RAPID especificados em modos de execução diferentes:

Modo de execução: Execução de procedimento RAPID:


Contínuo ou cíclico Conforme esta descrição
Em escada à frente No ponto de parada
Em escada atrás De forma alguma

Limitações
Limitações gerais conforme instrução MoveC.

Comutação do modo de execução, após a parada do programa de contínuo ou em ciclo


para em escada à frente ou atrás, resulta em erro. Este erro comunica ao usuário, que a
comutação de modo poderá resultar em execução falhada do procedimento RAPID em
fila sobre o trajeto. Este erro poderá ser evitado se o programa for parado com StopInstr
antes da comutação de modo.

A instrução MoveCSync não poderá ser usada no nível TRAP .


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveCSync
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName ‘:=’ ] < expressão (IN) de string > ] ’;’

Data Types do Sistema e Rotinas 2-MoveCSync-251


MoveCSync Instruções

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de dados - speeddata
Definição de dados de zona Tipos de dados - zonedata
Definição de ferramentas Tipos de dados - tooldata
Definição de objetos de trabalho Tipos de dados - wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S -
Sistemas de Coordenadas

2-MoveCSync-252 Data Types do Sistema e Rotinas


Instruções MoveAbsJ

MoveAbsJ Move o robô para posição absoluta de junção


MoveAbsJ (Move Absolute Joint) é usado para mover o robô para uma posição abso-
luta, definida nas posições dos eixos.

Esta instrução somente precisa ser usada quando:

- o ponto de parada é um único ponto


- para posições ambíguas no IRB 6400C, ex. para movimentos com a ferramenta
sobre o robô.

A posição final do robô, durante o movimento com MoveAbsJ, não é afetado pela fer-
ramenta e objeto de trabalho nem pelo deslocamento de programa. Entretanto, o robô
usa aqueles dados para calcular a carga, velocidade TCP, e o trajeto de canto. As mes-
mas ferramentas podem ser usadas como instruções de movimentos adjacentes.

O robô e eixos externos são movidos para a posição de destino ao longo de uma tra-
jetória não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveAbsJ p50, v1000, z50, tool2;

O robô com a ferramenta tool2, é movido ao longo de um trajeto não -linear para
uma posição de eixo absoluta, p50, com dado de velocidade v1000 e dado de
zona z50.

MoveAbsJ *, v1000\T:=5, fine, grip3;

O robô com a ferramenta grip3, é movido ao longo de um trajeto não-linear para


um ponto de parada que é guardado como uma posição de eixo absoluta na
instrução (marcada com um *). O movimento completo dura 5 s.

Argumentos
MoveAbsJ [ \Conc ] ToJointPos [\NoEOffs] Speed [ \V ] | [ \T ]
Zone [ \Z ] Tool [ \WObj ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas enquanto o robô está em movimento. O


argumento é usado para encurtar o tempo do ciclo quando, por exemplo, comu-
nicando com equipamento externo, se a sincronização não é necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento for omitido e o ToPoint não for um ponto de parada, a

Manual de Referência do RAPID 8-MoveAbsJ-253


MoveAbsJ Instruções

instrução subsequente será executada algum tempo antes do robô ter atingido a
zona programada.

ToJointPos (To Joint Position) DataType: jointtarget

O destino da posição absoluta eixo a eixo do robô e eixos externos. É definido


como uma posição nomeada ou guardado diretamente na instrução (marcada com
um * na instrução).

[ \NoEOffs ] (No External Offsets) Data type: switch

Se o argumento NoEOffs estiver definido, o movimento com MoveAbsJ não será


afetado por deslocamentos ativos para eixos externos.

Speed DataType: speeddata

O dado de velocidade que aplica-se aos movimentos. O dado de velocidade


define a velocidade do ponto central da ferramenta, a reorientação da ferramenta
e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a precisão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso durante o movimento.

A posição do TCP e da carga na ferramenta são definidas no dado de ferramenta.


A posição do TCP é usada para decidir a velocidade e o trajeto de canto para o
movimento.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho usado durante o movimento.

8-MoveAbsJ-254 Manual de Referência do RAPID


Instruções MoveAbsJ

Este argumento pode ser omitido se a ferramenta é sustentada pelo robô.


Entretanto, se o robô segura o objeto de trabalho, i.e. a ferramenta é estacionária
ou com coordenadas de eixos externos, então o argumento deve ser especificado.

No caso de uma ferramenta estacionária ou coordenada de eixos externos, o dado


usado pelo sistema para decidir a velocidade e o trajeto de canto para o movi-
mento, é definido no objeto de trabalho.

Execução do programa
Um movimento com MoveAbsJ não é afetado pelo reposicionamento do programa
ativo e, quando executado com a opção \NoEOffs, não há deslocamento para eixos
externos.
Sem a opção \NoEOffs, os eixos externos no alvo de destino são afetados pelo deslo-
camento ativo para eixos externos.

A ferramenta é movida para o destino da posição absoluta da junçãocom interpolação


dos ângulos do eixo. Isto significa que cada eixo é movido com velocidade constante
de eixo e que todos os eixos alcançam o destino da posição absoluta eixo a eixo ao
mesmo tempo, que resulta em uma trajetória não linear.

Generalizando, o TCP é movido numa velocidade programada aproximada. A ferra-


menta é reorientada e os eixos externos são movidos ao mesmo tempo que o TCP se
move. Se a velocidade programada para reorientação ou para eixos externos não pode
ser atingida, a velocidade do TCP será reduzida.

Um trajeto de canto é gerado normalmente quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado num dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
apropriada posição absoluta eixo a eixo.

Exemplos
MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;

A ferramenta, grip3, é movida ao longo de uma trajetória não-linear para a


posição absoluta eixo a eixo carregado na instrução. O movimento é realizado
com dado fixado em v2000 e z40, a velocidade e tamanho da zona do TCP são
2200 mm/s e 45 mm respectivamente.

MoveAbsJ \Conc, *, v2000, z40, grip3;

A ferramenta, grip3, é movido ao longo de uma trajetória não-linear para a


posição absoluta eixo a eixo carregado na instrução. Instruções lógicas subse-
quentes são executadas enquanto o robô se move.

MoveAbsJ \Conc, * \NoEOffs, v2000, z40, grip3;

Mesmo movimento que acima, mas o movimento não é afetado por deslocamen-
tos ativos para eixos externos.

Manual de Referência do RAPID 8-MoveAbsJ-255


MoveAbsJ Instruções

GripLoad obj_mass;
MoveAbsJ start, v2000, z40, grip3 \WObj:= obj;

O robô move o objeto de trabalho obj em relação a uma ferramenta fixada grip3
ao longo de uma trajetória não-linear para uma posição absoluta de eixo start.

Tratamento de erros
Quando rodando um programa, uma checagem é feita para que os argumentos Tool e
\WObj não contenham dados contraditórios com relação a ferramenta móvel ou esta-
cionária respectivamente.

Limitações
Para que seja possível rodar o programa para trás com a instrução MoveAbsJ envolvida,
e evitando problemas com pontos singulares ou áreas ambíguas, é essencial que as
instruções subsequentes preencham certos requisitos, como o que segue (veja Figure
1).

Ponto singular

MoveJ
MoveAbsJ

Área ambígua

Qualquer movim.
MoveAbsJ
MoveAbsJ

Figure 1 Limitação para rodar programa para trás com MoveAbsJ.

8-MoveAbsJ-256 Manual de Referência do RAPID


Instruções MoveAbsJ

Sintaxe
MoveAbsJ
[ ’\’ Conc ’,’ ]
[ ToJointPos ’:=’ ] < expression (IN) of jointtarget >
[ ’\’ NoEoffs ] ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[Zone ’:=’ ] < expression (IN) of zonedata >
[ ’\’ Z ‘:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ] ’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de jointtarget DataTypes - jointtarget
Definção de velocidade DataTypes - speeddata
Definção de dado de zona DataTypes - zonedata
Definição de ferramentas DataTypes - tooldata
Definição de objetos de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Execução de programa concomitante Movimento e Príncipios E/S -
Sincronização usando instruções lógicas

Manual de Referência do RAPID 8-MoveAbsJ-257


MoveAbsJ Instruções

8-MoveAbsJ-258 Manual de Referência do RAPID


Instruções MoveC

MoveC Move o robô circularmente


MoveC é usado para mover o ponto central da ferramenta (TCP) circularmente para um
certo destino. Durante o movimento, a orientação normalmente permanece relativo ao
círculo.

Exemplos
MoveC p1, p2, v500, z30, tool2;

O TCP da ferramenta, tool2, é movida circularmente para a posição p2, com


dado de velocidade v500 e dado de zona z30. O círculo é definido pela posição
de início, o ponto do círculo p1 e o ponto de destino p2.

MoveC *, *, v500 \T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido circularmente para um ponto fino guar-


dado na instrução (marcado pelo segundo *). O ponto do círculo também é guar-
dado na instrução (marcado pelo primeiro *). O movimento completo leva 5
segundos.

MoveL p1, v500, fine, tool1;


MoveC p2, p3, v500, z20, tool1;
MoveC p4, p1, v500, fine, tool1;

Um círculo completo é realizado se as posições são as mesmas que as mostradas


na Figura 2.

p1

p4 p2

p3
Figura 2 Um círculo completo é realizado por duas instruções MoveC .

Argumentos
MoveC [ \Conc ] CirPoint ToPoint Speed [ \V ] | [ \T ] Zone [ \Z]
Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas imediatamente. Este argumento é usado

Data Types do Sistema e Rotinas 2-MoveC-259


MoveC Instruções

para encurtar o tempo do ciclo quando, por exemplo, comunicando com equipa-
mento externo, se a sincronização não é necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento é omitido e ToPoint não é um ponto de parada, a instrução sub-


sequente somente é executada depois do robô ter alcançado a zona programada
especificada.

CirPoint DataType: robtarget

O ponto do círculo do robô. O ponto do círculo é uma posição no círculo entre o


ponto de partida e o ponto de destino. Para obter a melhor exatidão, ele deve ser
colocado a meio caminho entre os pontos de partida e de destino. Se ele é colo-
cado muito próximo de um desse pontos, o robô pode dar uma advertência. O
ponto do círculo é definido como uma posição nomeada ou guardada diretamente
na instrução (marcada com um * na instrução). A posição de eixos externos não
são usados.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô e eixos externos se movem. Ele é então substituído pelo correspondente
dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

2-MoveC-260 Data Types do Sistema e Rotinas


Instruções MoveC

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada de objeto) o qual a posição do robô


na instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
na sequência para o círculo relativo a um objeto de trabalho a ser executado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
O robô e unidades externas são movidas para o ponto de destino como segue:

O TCP da ferramenta é movido circularmente a uma velocidade constante programada.

A ferramenta é reorientada a uma velocidade constante, desde a orientação do ponto


de partida até à orientação do ponto de destino.

A reorientação é realizada relativa a uma trajetória circular. Assim, se a orientação rel-


ativa a trajetória é a mesma nos pontos de partida e de destino, a orientação relativa
permanece inalterada durante o movimento (veja Figura 3).

CirPoint

Orientação ferramenta
Ponto de partida

ToPoint

Figura 3 Orientação da ferramenta durante movimento circular.

Data Types do Sistema e Rotinas 2-MoveC-261


MoveC Instruções

- A orientação no ponto do círculo não é crítica; ela somente é usada para distin-
guir entre duas direções possíveis de reorientação. A exatidão de reorientação
ao longo da trajetória depende somente da orientação nos pontos de partida e de
destino.
- Coordenada de eixos externos são executadas numa velocidade constante para
que elas cheguem ao ponto de destino ao mesmo tempo que os eixos do robô.
A posição na posição de círculo não é usada.

Se não é possível atingir a velocidade programada para a reorientação ou para eixos


externos, a velocidade do TCP será reduzida.

O trajeto de canto é normalmente gerado quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado no dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveC *, *, v500 \V:=550, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movido circularmente para uma posição guardada


na instrução. O movimento é realizado com dado fixado em v500 e z40; a veloci-
dade e tamanho da zona do TCP são 550 mm/s e 45 mm respectivamente.

MoveC \Conc, *, *, v500, z40, grip3;

O TCP da ferramenta, grip3, é movido circularmente para uma posição guardada


na instrução. O ponto do círculo também é guardado na instrução. Instruções ló-
gicas subsequentes são executadas enquanto o robô se move.

MoveC cir1, p15, v500, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido circularmente para uma posição, p15, via
o ponto do círculo cir1. Estas posições estão especificadas no sistema de coorde-
nada de objeto para fixture.

Limitações
Uma mudança no modo de execução do programa de frente para trás ou vice versa,
enquanto o robô está parado numa trajetória circular, não é permitido e irá resultar
numa mensagem de erro.

A instrução MoveC (ou qualquer outra instrução incluindo o movimento circular)


nunca deve ser inicializada desde o início com o TCP entre o ponto circular e o ponto
final. Caso contrário, o robô não seguirá o trajeto programado (posicionamento em
redor do trajeto circular noutra direção em comparação com a que está programada).

2-MoveC-262 Data Types do Sistema e Rotinas


Instruções MoveC

Certifique-se de que o robô possa alcançar o ponto do círculo durante a execução do


programa e divida o segmento do círculo se necessário.

Sintaxe
MoveC
[ ’\’ Conc ’,’ ]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções
Lógicas

Data Types do Sistema e Rotinas 2-MoveC-263


MoveC Instruções

2-MoveC-264 Data Types do Sistema e Rotinas


Instruções MoveCDO

MoveCDO Move circularmente o robô


e ajusta a saída digital no canto
MoveCDO (Move Circular Digital Output) é usada para mover, em círculo, o ponto cen-
tral da ferramenta (TCP) para um dado destino. A saída digital especificada será ajus-
tada/rearmada no meio do trajeto de canto no ponto de destino. Durante o mo-
vimento, a orientação permanece normalmente inalterada em relação ao círculo .

Exemplos
MoveCDO p1, p2, v500, z30, tool2, do1,1;

O TCP da ferramenta, tool2, é movimentado em círculo para a posição p2, com


os dados de velocidade v500 e dados de zona z30. O círculo é definido a partir
da posição de partida, o ponto do círculo p1 e do ponto de destino p2. A saída
do1 é ajustada no meio do trajeto do canto em p2.

Argumentos
MoveCDO CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
Signal Value
CirPoint Tipos de dados: robtarget

O ponto do círculo do robô. O ponto do círculo do robô é uma posição sobre o


círculo entre o ponto inicial e o ponto de destino. Para obter a melhor precisão,
deverá ficar a meio trajeto entre os pontos inicial e de destino. Se ficar situado
muito próximo do ponto inicial ou ponto de destino, o robô poderá emitir uma
advertência. O ponto do círculo é definido como uma posição indicada ou guar-
dada diretamente na instrução (marcada com um * na instrução). A posição dos
eixos externos não é usada.

ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e dos eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em segundos, durante o


qual o robô e os eixos externos se movem. É depois substituído pelos dados de
velocidade correspondentes.

Data Types do Sistema e Rotinas 2-MoveCDO-265


MoveCDO Instruções

Zone Data type: zonedata

Dados da zona para movimento. Os dados da zona descrevem o tamanho do tra-


jeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se movimenta. O ponto central da ferramenta


é o ponto que se move para o ponto de destino especificado.

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas do objeto) para o qual a posição do


robô na instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição estará relacionada com
o sistema de coordenadas globais. Se, de outro modo, for usado um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado
em relação a um círculo, para o objeto de trabalho ser executado.

Signal Tipos de dados: signaldo

O nome do sinal digital de saída a ser mudado.

Value Tipos de dados: dionum

O valor desejado do sinal (0 ou 1).

Execução do programa
Ver a instrução MoveC para mais informaçãoes sobre o movimento circular.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto para os pontos


flutuantes conforme Figura 1.
.

CirPoint

Ponto inicial Ajuste/Rearme


do sinal

Próximo
ToPoint ponto
Zona
Figura 4 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveCDO.

Para os pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveC + SetDO. Mas se usar ponto de parada na instrução MoveCDO, o sinal de saída
digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

2-MoveCDO-266 Data Types do Sistema e Rotinas


Instruções MoveCDO

O sinal de E/S será ajustado/rearmado no modo execução, continuamente, para a frente


em escada, mas para trás não poderá ser em escada.

Limitações
Limitações gerais conforme instrução MoveC.

Sintaxe
MoveCDO
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados da zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definiçaõ de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronização Usando Instruções Lógi-
cas

Data Types do Sistema e Rotinas 2-MoveCDO-267


MoveCDO Instruções

2-MoveCDO-268 Data Types do Sistema e Rotinas


Instruções MoveJDO

MoveJDO Move o robô por movimento de eixo e


ajusta a saída digital no canto
MoveJDO (Move Joint Digital Output) é usada para mover rapidamente o robô de um
ponto a outro quando este movimento não tiver que ser em linha reta. O sinal de saída
digital especificado é ajustado/rearmado ao meio do trajeto de canto.

O robô e os eixos externos deslocam-se para a posição de destino ao longo de um ca-


minho não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveJDO p1, vmax, z30, tool2, do1, 1;

O ponto central da ferramenta (TCP), tool2, move-se ao longo de um trajeto não


linear para a posição, p1, com dados de velocidade vmax e dados de zona z30. A
saída do1 é definida ao meio do trajeto de canto em p1.

Argumentos
MoveJDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e os eixos externos. É definido como uma posição


indicada e guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos dados: speeddata

Os dados de velocidade aplicam-se a movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e eixos externos .

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em segundos, durante o


qual o robô se move. É substituído depois pelos dados de velocidade correspon-
dentes.

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho do


trajeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se mover. O ponto central da ferramenta é o


ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveJDO-269


MoveJDO Instruções

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô está


relacionado na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.

Signal Tipos de dados: signaldo

O nome do sinal de saída digital a ser alterado.

Value Tipos de dados: dionum

O valor desejado de sinal (0 ou 1).

Execução de programa
Ver a instrução MoveJ para maiores informações sobre o movimento de eixo.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto para pontos flu-
tuantes conforme Figura 1.

p3

Ajusta o sinal do1 para 1

MoveJDO p2, v1000, z30, tool2, do1, 1;

p1 p2
Zona

Figura 5 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveJDO.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveJ + SetDO. Mas se usar o ponto de parada na instrução MoveJDO, o sinal de saída
digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

O sinal especificado E/S é ajustado/rearmado no modo execução de forma contínua e


para a frente em escada, mas nunca para trás em escada.

2-MoveJDO-270 Data Types do Sistema e Rotinas


Instruções MoveJDO

Sintaxe
MoveJDO
[ ToPoint ’:=’ ] < expressão (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) of speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Velocidade de definição Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenads
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas

Data Types do Sistema e Rotinas 2-MoveJDO-271


MoveJDO Instruções

2-MoveJDO-272 Data Types do Sistema e Rotinas


Instruções MoveJ

MoveJ Move o robô com movimento eixo a eixo


MoveJ é usado para mover o robô rapidamente de um ponto a outro quando o movi-
mento não tem que ser em linha reta.

O robô e eixos externos movem-se ao ponto de destino ao longo de uma trajetória não
linear. Todos os eixos alcançam o ponto de destino ao mesmo tempo.

Exemplos
MoveJ p1, vmax, z30, tool2;

O ponto central da ferramenta (TCP) da ferramenta, tool2, é movido ao longo de


uma trajetória não linear para a posição, p1, com dado de velocidade vmax e dado
de zona z30.

MoveJ *, vmax \T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não linear para
o ponto de parada guardado na instrução (marcado com um *). O movimento
completo leva 5 segundos.

Argumentos
MoveJ [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas enquanto o robô está se movendo. Este


argumento é usado para encurtar o tempo do ciclo quando, por exemplo, comu-
nicando com equipamento externo, se a sincronização não for necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento for omitido e a ToPoint, não for um ponto de parada, a


instrução subsequente será executada algum tempo antes do robô ter alcançado
a zona programada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Data Types do Sistema e Rotinas 2-MoveJ-273


MoveJ Instruções

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado.

Execução do programa
O ponto central da ferramenta é movido para a posição de destino com interpolação dos
ângulos do eixo. Isto significa que cada eixo é movido com velocidade constante de
eixo e que todos os eixos alcançam o ponto de destino ao mesmo tempo, que resulta em
uma trajetória não linear.

Generalizando, o TCP é movido numa velocidade programada aproximada (apesar de


os eixos externos serem coordenados ou não). A ferramenta é reorientada e os eixos
externos são movidos ao mesmo tempo que o TCP se move. Se a velocidade progra-
mada para reorientação ou para eixos externos não pode ser atingida, a velocidade do

2-MoveJ-274 Data Types do Sistema e Rotinas


Instruções MoveJ

TCP será reduzida.

Um trajeto de canto é gerado normalmente quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado num dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveJ *, v2000\V:=2200, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movida ao longo de uma trajetória não-linear para


a posição carregada na instrução. O movimento é realizado com dado fixado em
v2000 e z40, a velocidade e tamanho de zona do TCP são 2200 mm/s e 45 mm
respectivamente.

MoveJ \Conc, *, v2000, z40, grip3;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não-linear para


uma posição carregada na instrução. Instruções lógicas subsequentes são exe-
cutadas enquanto o robô se move.

MoveJ start, v2000, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não-linear para


uma posição, start. Esta posição é especificada no sistema de coordenada do
objeto para fixture.

Sintaxe
MoveJ
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’

Data Types do Sistema e Rotinas 2-MoveJ-275


MoveJ Instruções

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Ló-
gicas

2-MoveJ-276 Data Types do Sistema e Rotinas


Instruções MoveLDO

MoveLDO Move o robô linearmente


e ajusta a saída digital no canto
MoveLDO (Move Linearly Digital Output) é usada para mover linearmente o ponto
central da ferramenta (TCP) para um dado destino. O sinal de saída digital especificado
será ajustado/rearmado ao meio do trajeto do canto.

Quando o TCP for permanecer estacionário, esta instrução poderá ser também usada
para reorientar a ferramenta.

Exemplo
MoveLDO p1, v1000, z30, tool2, do1,1;

O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. A saída do1 será justada a meio do tra-
jeto do canto em p1.

Argumentos
MoveLDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. Está definida como uma posição
indicada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipo de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Definem a velocidade do


ponto central da ferramenta, a reorientação da ferramenta e eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total em segundos, durante o


qual o robô se move. É substituído depois pelos dados de velocidade correspon-
dentes .

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Dados de zona descrevem o tamanho do tra-


jeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se move. O ponto central da ferramenta é o


ponto deslocado para a posição de destino especificada.

Data Types do Sistema e Rotinas 2-MoveLDO-277


MoveLDO Instruções

[ \WObj] (Work Object) Data type: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô está


relacionada na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.

Signal Tipos de dados: signaldo

O nome do sinal de saída digital a ser alterado.

Value Tipos de dados: dionum

O valor desjado de sinal (0 ou 1).

Execução do programa
Ver a instrução MoveL para maiores informações acerca de movimentos lineares.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto por pontos flu-
tuantes conforme Figura 1.

p3

Ajusta o sinal do1 para 1

MoveLDO p2, v1000, z30, tool2, do1, 1;

p1 p2
Zona

Figura 6 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveLDO.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveL + SetDO. Mas, se usar o ponto de parada na instrução MoveLDO, o sinal de
saída digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

O sinal especificado E/S é ajustado/rearmado no modo execução contínuamente e para


a frente em escada, mas nunca para trás em escada.

2-MoveLDO-278 Data Types do Sistema e Rotinas


Instruções MoveLDO

Sintaxe
MoveLDO
[ ToPoint ’:=’ ] < expressão (IN)de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objeto de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas

Data Types do Sistema e Rotinas 2-MoveLDO-279


MoveLDO Instruções

2-MoveLDO-280 Data Types do Sistema e Rotinas


Instruções MoveL

MoveL Move o robô linearmente


MoveL é usado para mover o ponto central da ferramenta (TCP) linearmente para um
dado destino. Quando o TCP tiver de permanecer estacionário, esta instrução pode
também ser usada para reorientar a ferramenta.

Exemplo
MoveL p1, v1000, z30, tool2;

O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dado
de velocidade v1000 e dado de zona z30.

MoveL *, v1000\T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido linearmente para um ponto fino guardado


na instrução (marcado com um *). O movimento completo leva 5 segundos.

Argumentos
MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas imediatamente. Este argumento é usado


para encurtar o tempo do ciclo quando, por exemplo, comunicar com equipa-
mento externo, se a sincronização não for necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento é omitido e ToPoint não é um ponto de parada, a instrução


subsequente somente é executada depois do robô ter alcançado a zona progra-
mada especificada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

Data Types do Sistema e Rotinas 2-MoveL-281


MoveL Instruções

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mentena instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para que realize um movimento linear relativo ao objeto de trabalho.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

2-MoveL-282 Data Types do Sistema e Rotinas


Instruções MoveL

Execução do programa
O robô e unidades externas são movimentados para posição de destino como segue:

- O TCP da ferramenta é movido linearmente a uma velocidade constante pro-


gramada.
- A ferramenta é reorientada em intervalos iguais ao longo do trajeto.
- Os eixos externos não coordenados são executados a uma velocidade constante
para que elas cheguem ao ponto de destino ao mesmo tempo que os eixos do
robô.

Se não é possível atingir a velocidade programada para a reorientação ou para eixos


externos, a velocidade do TCP será reduzida.

O trajeto de canto é normalmente gerado quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado no dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveL *, v2000 \V:=2200, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movido linearmente para uma posição guardada


na instrução. O movimento é realizado com dado fixado em v2000 and z40; a
velocidade e tamanho da zona do TCP são 2200 mm/s e 45 mm respectivamente.

MoveL \Conc, *, v2000, z40, grip3;

O TCP da ferramenta, grip3, é movido linearmente para uma posição guardada


na instrução. Instruções lógicas subsequentes são executadas enquanto o robô se
move.

MoveL start, v2000, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido linearmente para uma posição, start. A


posição especificada na coordenada de sistema de objeto para fixture.

Data Types do Sistema e Rotinas 2-MoveL-283


MoveL Instruções

Sintaxe
MoveL
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataType - speeddata
Definição de dado de zona DataType - zonedata
Definição de ferramenta DataType - tooldata
Definição de objeto de trabalho DataType - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Lóg-
icas

2-MoveL-284 Data Types do Sistema e Rotinas


Instruções MoveJSync

MoveJSync Move o robô por movimento de eixo


e executa um procedimento RAPID
MoveJSync (Move Joint Synchronously) é usado para deslocar o robô de um ponto a
outro rapidamente quando este movimento não tiver que ser em linha reta. O procedi-
mento especificado RAPID é executado a meio do trajeto de canto no ponto de destino.

O robô e os eixos externos movem-se para a posição de destino ao longo de um trajeto


não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveJSync p1, vmax, z30, tool2, “proc1”;

O ponto central da ferramenta (TCP) tool2, é movido ao longo de um trajeto não


linear para a posição p1, com dados de velocidade vmax e dados de zona z30. O
procedimento proc1, é executado no meio do trajeto de canto em p1.

Argumentos
MoveJSync ToPoint Speed [ \T ] Zone Tool [ \WObj ]
ProcName
ToPoint Tipo de dados: robtarget

O ponto de destino do robô e eixos externos. Está definido como uma posição
indicada ou guardado diretamente na instrução (marcado com * na instrução).

Speed Tipo de dados: speeddata

Os dados de velocidade que se aplicam aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total em seg., durante o qual o
robô se move. É depois substituído pelos dados de velocidade correspondentes

Zone Data type: zonedata

Dados de zona para o movimento.Os dados de zona descrevem o tamanho


gerado do trajeto de canto.

Tool Data type: tooldata

A ferramenta em uso quando o robô se move. O ponto central da ferramenta


(TCP) é o ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveJSync-285


MoveJSync Instruções

[ \WObj] (Objeto de Trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô na


instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, forem usados eixos exter-
nos ou TCP estacionário, este argumento deverá se especificado.

ProcName (Nome de Procedimento) Tipos de dados: string

Nome do procedimento RAPID a ser executado no meio do trajeto de canto no


ponto de destino.

Execução do programa
Ver a instrução MoveJ para maiores informações acerca do movimento de eixo.

O procedimento especificado RAPID será executado quando o TCP alcançar o meio do


trajeto de canto no ponto de destino da instrução MoveJSync conforme Figura 1:

MoveJSync p2, v1000, z30, tool2, “my_proc”;


p3

Quando TCP estiver aqui,


my_proc será executado
Zone
p2

p1

Figura 7 Execução de procedimento RAPID definido pelo usuário no meio do trajeto de canto.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveJ + outras instruções RAPID em seqüência.

Execução do procedimento RAPID especificado em modos de execução diferentes:

2-MoveJSync-286 Data Types do Sistema e Rotinas


Instruções MoveJSync

Modos de execução: Execução de procedimento RAPID :


Contínuo ou cíclico Conforme esta descrição
Para a frente em escada No ponto de parada
Para trás em escada De forma alguma

Limitações
Comutar o modo de execução após a parada do programa, de contínuo ou cíclico, para
em escada para a frente ou para trás resultará em erro. Este erro comunicará ao usuário
que a comutação de modo poderá resultar em execução falhada do procedimento
RAPID, em fila, para execução sobre o caminho. Este erro poderá ser evitado se o pro-
grama for parado, antes da comutação de modo, com StopInstr.

A instrução MoveJSync não poderá ser usada no nível TRAP.


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveJSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) de num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ’;’

Informações relacionadas
Descritas em:
Outras posições de funcionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas

Data Types do Sistema e Rotinas 2-MoveJSync-287


MoveJSync Instruções

2-MoveJSync-288 Data Types do Sistema e Rotinas


Instruções MoveLSync

MoveL Sync Move linearmente o robô


e executa um procedimento RAPID
MoveLSync (Move Lineary Synchronously) é usada para mover linearmente o ponto de
centro da ferramenta (TCP) para um dado ponto de destino.

Quando o TCP for permanecer estacionário, esta instrução poderá ser usada para reo-
rientar a ferramenta.

Exemplo
MoveLSync p1, v1000, z30, tool2, “proc1”;

O TCP da ferramenta tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. O procedimento proc1 é executado ao
meio do caminho da aresta em p1.

Argumentos
MoveLSync ToPoint Speed [ \T ] Zone Tool
[ \WObj ] ProcName
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientaçãoda ferramenta e os eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em seg., durante o qual o
robô se move. Será substituído pelos dados de velocidade correspondentes.

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho


gerado do caminho da aresta.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se move. O ponto de centro da ferramenta é


o ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveLSync-289


MoveLSync Instruções

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (Sistema de coordenadas) para o qual a posição do robô na


instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado.

ProcName (Nome do Procedimento) Tipos de dados: string

O nome do procedimento RAPID a ser executado a meio do caminho da aresta


no ponto de destino.

Execução do programa
Ver a instrução MoveL para mais informações acerca dos movimentos lineares.

O procedimento RAPID especificado será executado quando o TCP alcançar o meio do


caminho da aresta no ponto de destino da instrução MoveLSync conforme Figure 1:

MoveLSync p2, v1000, z30, tool2, “my_proc”;


p3

Quando TCP estiver aqui,


my_proc será executado
Zona
p2

p1

Figure 8 Execução de procedimento RAPID definido pelo usuário no meio do caminho da aresta.

Para pontos de parada recomenda-se usar a sequência de programação “normal” com a


instrução MoveL + outras instruções RAPID em sequência.

Execução de procedimentos RAPID especificados em modos de execução diferentes:

2-MoveLSync-290 Data Types do Sistema e Rotinas


Instruções MoveLSync

Modos de execução: Execução do procedimento RAPID :


Contínuamente ou cíclico Conforme esta descrição
Para a frente em escada No ponto de parada
Para trás em escada De modo algum

Limitações
A comutação do modo de execução, após a parada do programa, de contínuo ou cíclico
para em escada para a frente ou para trás, resultará em erro. Este erro comunica ao
usuário, que a comutação de modo poderá resultar em execução falhada dos procedi-
mentos RAPID em fila , execução sobre o caminho. Este erro poderá ser evitado se o
programa for parado com StopInstr antes de comutar o modo de execução..

A instrução MoveLSync não poderá ser usada no nível TRAP.


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveLSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ‘;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Resumo RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Deslocamento em geral Deslocamento e Principios E/S
Sistemas de coordenadas Deslocamento e Principios E/S -
Sistemas de Coordenadas

Data Types do Sistema e Rotinas 2-MoveLSync-291


MoveLSync Instruções

2-MoveLSync-292 Data Types do Sistema e Rotinas


Instruções Open

Open Abre um arquivo ou canal serial


Open é usado para abrir um arquivo ou canal serial para leitura ou escrita.

Exemplo
VAR iodev logfile;
...
Open "flp1:" \File:= "LOGDIR/LOGFILE1.DOC", logfile;

O arquivo LOGFILE1.DOC na unidade flp1: (disquete), diretório LOGDIR, é


aberto para escrita. O nome de referência logfile é usado mais tarde no programa
quando escrevendo no arquivo.

Argumentos
Open Object [\File] IODevice [\Read] | [\Write] | [\Append] [\Bin]
Object DataType: string

O objeto de E/S a ser aberto, ex. "flp1:", "ram1disk:" ou "sio1:"

[\File] DataType: string

O nome do arquivo a ser aberto, ex. "LOGDIR/LOGFILE1.DOC"

O caminho completo também pode ser especificado no argumento Object,


ex. "flp1:LOGDIR/LOGFILE.DOC".

IODevice DataType: iodev

Uma referência ao arquivo ou canal serial a ser aberto. Essa referência é então
usada para ler e escrever no arquivo ou canal serial.

[\Read] DataType: switch

Abre um arquivo ou canal serial para leitura. Ao ler de um arquivo, a leitura é


feita desde o início do arquivo.

[\Write] DataType: switch

Abre um arquivo ou canal serial para escrita. Se o arquivo selecionado já existe,


seu conteúdo é apagado. Qualquer coisa escrita em seguida, é escrita do início
do arquivo.

[\Append] DataType: switch

Abre um arquivo ou canal serial para escrita. Se o arquivo selecionado já existe,

Manual de Referência do RAPID 8-Open-293


Open Instruções

qualquer coisa escrita em seguida, é escrita no final do arquivo.

Ao abrir um arquivo ou canal serial com \Append e sem os argumentos \Bin, a


instrução abre um canal serial ou um arquivo baseado ou em caractere para
escrita.

Ao abrir um arquivo ou canal serial com \Append e argumentos \Bin, a instrução


abre um canal serial ou arquivo binário para leitura e escrita.

Os argumento \Read, \Write e \Append são mutuamente exclusivos. Se nenhum


deles for especificado, a instrução atuará da mesma forma que o argumento
\Write para canais seriais ou arquivos baseados em caractere (instrução sem argu-
mento \Bin) e da mesma forma que o argumento \Append para canais seriais ou
arquivos binários (instrução com argumento \Bin).

[\Bin] DataType: switch

O arquivo ou canal serial é aberto em um modo binário.


Se nenhum dos argumentos \Read, \Write ou \Append for especificado, a
instrução abrirá um canal serial ou arquivo binário para leitura e escrita, com o
ponteiro de arquivo no final do arquivo

O conjunto de instruções para acessar umcanal serial ou arquivo binário é diferente do


conjunto de instruções para acessar um arquivo baseado em caractere.

Exemplo
VAR iodev printer;
...
Open "sio1:", printer \Bin;
WriteStrBin printer, "Esta é uma mensagem para a impressora\0D";
Close printer;

O canal serial sio1: é aberto para leitura e escrita binária.


O nome de referência printer é usado mais tarde quando for escrever e fechar o
canal serial.

Execução do programa
O canal serial/arquivo especificado é aberto para que possa ser lido ou escrito.

É possível abrir o mesmo arquivo físico várias vezes ao mesmo tempo, mas cada cha-
mada da instrução Open retorna uma referência diferente ao arquivo (tipo de dados
iodev). É posível, por exemplo, ter um ponteiro de escrita e um ponteiro de leitura di-
ferente para o mesmo arquivo ao mesmo tempo.

A variável iodev usada ao abrir um canal serial ou arquivo precisa estar livre de uso: se
ela tiver sido usada anteriormente para abrir um arquivo, esse arquivo terá de ser
fechado antes da veiculação de uma nova instrução Open com a mesma variável iodev.

8-Open-294 Manual de Referência do RAPID


Instruções Open

Tratamento de erros
Se um arquivo não pode ser aberto, a variável de sistema ERRNO é fixada para
ERR_FILEOPEN. Este erro pode então ser manipulado no manipulador de erro.

Sintaxe
Open
[Object ’:=’] <expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>] ’,’
[IODevice ’:=’] <variable (VAR) of iodev>
[’\’Read] | [’\’Write] | [’\’Append]
[’\’Bin] ’;’

Informações relacionadas
Descrito em:
Escrevendo e lendo de Sumário RAPID - Comunicação
arquivos ou canais seriais

Manual de Referência do RAPID 8-Open-295


Open Instruções

8-Open-296 Manual de Referência do RAPID


Instruções PathResol

PathResol Sobrepor a resolução do caminho


PathResol (Path Resolution) é usada para sobrepor o tempo de amostra do trajeto
geométrico configurado, definido nos parâmetros do sistema do manipulador.

Descrição
A resolução do trajeto afeta a precisão do trajeto interpolado e o tempo de ciclo do pro-
grama. Melhora a precisão do trajeto e reduz o tempo de ciclo quando o parâmetro
PathSampleTime é diminuído. Um parâmetro PathSampleTime com um valor muito
baixo afecta a carga da CPU em aplicações mais exigentes. Todavia, o uso da resolução
do caminho configurado estandard (PathSampleTime 100%) evitará problemas de
carga da CPU e fornecerá precisão de trajeto suficiente na maioria das situações.

Exemplo do uso de PathResol:

Movimentos críticos dinâmicos (carga máxima, elevada velocidade, movimentações


de junções combinadas perto do limite da área de trabalho) podem causar problemas
de carga da CPU. Aumente o parâmetro PathSampleTime.

Os eixos externos de baixo desempenho podem causar problemas de carga da CPU


durante a coordenação. Aumente o parâmetro PathSampleTime.

Soldando a arco com ondulação de alta freqüência pode requerer uma alta resolução
do trajeto interpolado. Diminua o parâmetro PathSampleTime.

Pequenos circulos ou pequenos movimentos combinados com mudanças de direção


podem diminuir a qualidade de desempenho do trajeto e aumentarem o tempo de ciclo.
Diminua o parâmetro PathSampleTime.

Colando com grande reorientações e pequenas zonas de aresta pode causar variações
de velocidade. Diminua o argumento de PathSampleTime.

Exemplo
MoveJ p1,v1000,fine,tool1;
PathResol 150;

Com o robô em um ponto de parada, o tempo de amostra do trajeto é aumentado


para 150% do configurado.

Argumentos
PathResol PathSampleTime
PathSampleTime Tipo de dados: num

Sobrepor como uma percentagem do tempo de amostra do caminho configurado.

Data Types do Sistema e Rotinas 2-PathResol-297


PathResol Instruções

100% corresponde ao tempo de amostra do caminho configurado.


Dentro do intervalo 25-400%.

Um valor mais baixo do parâmetro PathSampleTime aumenta a resolução do


caminho (precisão do caminho).

Execução do programa
As resoluções de caminho de todas as instruções de posicionamento subseqüentes são
afetadas até uma nova instrução PathResol ser executada. Isto afetará a resolução do
trajeto durante a execução do programa de todos os movimentos (nível de trajeto
padrão e nível de trajeto após StorePath) e também durante a movimentação.

O valor, por omissão, para sobrepor o tempo de amostra do caminhoé 100%. Este valor
é automaticamente ajustado

- em uma partida a frio


- quando um novo programa é carregado
- quando iniciando a execução de programa desde o início.

A sobreposição corrente do tempo de amostra do caminho pode ser lida a partir da var-
iável C_MOTSET (tipo de dados motsetdata) no componente pathresol.

Limitações
O robô terá que estar parado em um ponto de parada antes da sobreposiçãodo tempo de
amostra do caminho. Quando existir um caminho de aresta no programa, o programa
criará então um ponto de parada (advertência 50146) e não será possível reiniciar nesta
instrução a seguir a uma falha de corrente.

Sintaxe
PathResol
[PathSampleTime ’:=’ ] < expressão (IN) de num> ’;’

Informações relacionadas
Descritas em:
Instruções de posicionamento Movimentação e Princípios E/S
- Movimentação
Ajustes de deslocamento Sumário RAPID - Ajustes de Movi-
mentação
Configuração da resolução do caminho Parâmetros de sistema - Otimização da
CPU

2-PathResol-298 Data Types do Sistema e Rotinas


Instruções PDispOff

PDispOff Desativa deslocamento de programa


PDispOff (Program Displacement Off) é usado para desativar um deslocamento de
programa.

Deslocamento de programa é ativado pela instrução PDispSet ou PDispOn e se aplica


a todos os movimentos até ser desativado ou até que outro deslocamento de programa
seja ativado .

Exemplos
PDispOff;

Desativação de um deslocamento de programa.

MoveL p10, v500, z10, tool1;


PDispOn \ExeP:=p10, p11, tool1;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
PDispOff;
MoveL p40, v500, z10, tool1;

Um deslocamento de programa é definido como a diferença entre as posições


p10 e p11. Este deslocamento afeta o movimento para p20 e p30, mas não para
p40.

Execução do programa
O deslocamento do programa é desligado. Isto significa que o sistema de coordenada
de deslocamento de programa é o mesmo que o sistema de coordenada de sistema do
objeto, e desta maneira todas as posições programadas serão relacionadas para o
último.

Sintaxe
PDispOff ‘;’

Data Types do Sistema e Rotinas 2-PDispOff-299


PDispOff Instruções

Informações relacionadas
Descrito em:
Definição de deslocamento de programa Instruções - PDispOn
usando duas posições
Definição de deslocamento de programa Instruções - PDispSet
usando valores

2-PDispOff-300 Data Types do Sistema e Rotinas


Instruções PDispOn

PDispOn Ativa deslocamento de programa


PDispOn (Program Displacement On) é usado para definir e ativar um deslocamento
de programa usando duas posições do robô.

Deslocamento de programa é usado, por exemplo, após uma busca ter sido realizada,
ou quando padrões de movimento similares são repetidos em diferentes lugares do pro-
grama.

Exemplos
MoveL p10, v500, z10, tool1;
PDispOn \ExeP:=p10, p20, tool1;

Ativação de um deslocamento de programa (movimento paralelo). Este é calcu-


lado baseado em diferenças entre posições p10 e p20.

MoveL p10, v500, fine, tool1;


PDispOn *, tool1;

Ativação de um deslocamento de programa (movimento paralelo). Desde que


um ponto de parada foi usado na instrução anterior, o argumento \ExeP não pre-
cisa ser usado. O deslocamento é calculado com base na diferença entre a atual
posição atual do robô e o ponto programado (*) guardado na instrução.

PDispOn \Rot \ExeP:=p10, p20, tool1;

Ativação de um deslocamento de programa incluindo uma rotação. Este é calcu-


lado baseado em diferenças entre posições p10 e p20.

Argumentos
PDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]
[\Rot ] (Rotation) DataType: switch

A diferença na orientação da ferramenta é levada em consideração e isto envolve


a rotação do programa.

[\ExeP ] (Executed Point) DataType: robtarget

A nova posição do robô no momento da execução do programa.


Se este argumento é omitido, é usada a atual posição do robô no momento da
execução do programa.

ProgPoint (Programmed Point) DataType: robtarget

A posição original do robô no momento da programação.

Data Types do Sistema e Rotinas 2-PDispOn-301


PDispOn Instruções

Tool DataType: tooldata

A ferramenta usada durante a programação , i.e. o TCP para o qual a posição


ProgPoint está relacionada.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) para o qual a posição ProgPoint


está relacionada.

Este argumento pode ser omitido e, se isto ocorre, a posição é relacionada com o
sistema de coordenada mundial. Entretanto, se um TCP estacionário ou eixos
externos coordenados são usados, este argumeto deve ser especificado.

Ambos argumentos Tool e \WObj são usados para calcular o ProgPoint durante a
programação e para calcular a posição atual durante a execução do programa se
nenhum argumento ExeP está programado.

Execução do programa
Deslocamento de programa significa que o sistema de coordenada ProgDisp é transla-
dado em relação ao sistema de coordenada de objeto. Desde que todas as posições este-
jam relacionadas ao sistema de coordenadas ProgDisp, todas as posições programadas
também serão deslocadas . Veja Figure 9.

y
Nova
posição, ExeP

y
Posição
original, ProgPoint

x
Deslocamento de programa Sistema de Coordenada deslocamento de programa
(ProgDisp)
x
Sistema de Coordenada de objeto

Figure 9 Deslocamento de uma posição programada usando deslocamento de programa.

Deslocamento de programa é ativado quando a instrução PDispOn é executada e per-


manece ativa até ser desativada (a instrução PDispOff) ou até que algum outro deslo-
camento de programa seja ativado (a instrução PDispSet ou PDispOn).

Somente um deslocamento de programa pode estar ativo por vez. Várias instruções
PDispOn, por outro lado, podem ser programadas uma após a outra e, neste caso, dif-
erentes deslocamentos de programa são adicionados.

Deslocamento de programa é calculado como a diferença entre ExeP e ProgPoint. Se


ExeP não foi especificado, a atual posição do robô no momento da execução do pro-
grama é então usada. Já que é a posição atual do robô que é usada, o robô não deverá
se mover quando PDispOn é executada.

2-PDispOn-302 Data Types do Sistema e Rotinas


Instruções PDispOn

Se o argumento \Rot é usado, a rotação também é calculada baseada na orientação da


ferramenta nas duas posições. O deslocamento será calculado de tal forma que a nova
posição (ExeP) terá a mesma posição e orientação em relação ao sistema de coorde-
nada de deslocamento, ProgDisp, como a antiga posição (ProgPoint) tinha em relação
ao sistema de coordenada original (veja Figure 10).

Nova
y posição, ExeP

y
Nova
Posição
original, ProgPoint
orientação x

Orientação
original Deslocamento de programa Sistema de coordenada de deslocamento de programa
(ProgDisp)
x
Sistema de coordenada de objeto

Figure 10 Translação e rotação de uma posição programada.

O deslocamento de programa é automaticamente desligado

- numa partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Exemplo
PROC draw_square()
PDispOn *, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
PDispOff;
ENDPROC
.
MoveL p10, v500, fine, tool1;
draw_square;
MoveL p20, v500, fine, tool1;
draw_square;
MoveL p30, v500, fine, tool1;
draw_square;

A rotina draw_square é usada para executar o mesmo padrão de movimento em


três diferentes posições, baseada nas posições p10, p20 e p30. Veja Figure 11.

Data Types do Sistema e Rotinas 2-PDispOn-303


PDispOn Instruções

p30
p10
p20

Figure 11 Usando deslocamento de programa, padrões de movimento podem ser reusados.

SearchL sen1, psearch, p10, v100, tool1\WObj:=fixture1;


PDispOn \ExeP:=psearch, *, tool1 \WObj:=fixture1;

Uma busca é realizada e a posição pesquisada do robô é guardada na posição


psearch. Qualquer movimento realizado após isto inicia desta posição usando um
deslocamento de programa (movimento paralelo). O último é calculado baseado
na diferença entre a posição pesquisada e o ponto programado (*) guardado na
instrução. Todas as posições estão baseadas no sistema de coordenada de objeto
fixture1.

Sintaxe
PDispOn
[ ’\’ Rot ’,’ ]
[ ’\’ ExeP ’:=’ ] < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata>
[ ‘\’WObj ’:=’ < persistente (PERS) do wobjdata> ] ‘;’

Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição de deslocamento de programa Instruções - PDispSet
usando valores
Sistemas de coordenadas Princípios de movimento -
Sistemas de Coordenadas
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Mais exemplos Instruções - PDispOff

2-PDispOn-304 Data Types do Sistema e Rotinas


Instruções PDispSet

PDispSet Ativa deslocamento de programa usando um valor


PDispSet (Program Displacement Set) é usado para definir e ativar um deslocamento
de programa usando valores.

Deslocamento de programa é usado, por exemplo, quando padrões de movimento si-


milares são repetidos em vários lugares diferentes no programa.

Exemplo
VAR pose xp100 := [ [100, 0, 0], [1, 0, 0, 0] ];
.
PDispSet xp100;

Ativação do deslocamento de programa xp100 , significa que:

- O sistema de coordenada ProgDisp é deslocado 100 mm do sistema de coorde-


nada de objeto, na direção positiva do eixo-x (veja Figure 12).
- Uma vez que, o deslocamento de programa é ativado, todas as posições serão
deslocadas 100 mm na direção do eixo-x.

Objeto ProgDisp

100 X
Figure 12 100 mm de deslocamento de programa ao longo do eixo-x.

Argumentos
PDispSet DispFrame
DispFrame (Displacement Frame) DataType: pose

O deslocamento de programa é definido como um dado do tipo pose.

Execução do programa
Deslocamento de programa envolve translação e/ou rotação do sistema de coordenadas
ProgDisp em relação ao sistema de coordenada de objeto. Uma vez que todas as
posições são relativas ao sistema de coordenada ProgDisp , todas as posições progra-
madas também serão deslocadas. Veja Figure 13.

Data Types do Sistema e Rotinas 2-PDispSet-305


PDispSet Instruções

Nova
y posição

y
Nova
Posição
original
orientação x

Orientação
original Deslocamento de programa Sistema de Coodenada de Deslocamento de programa
(ProgDisp)
x
Sistema de Coordenada de Objeto

Figure 13 Translação e rotação da posição programada.

Deslocamento de programa é ativado quando a instrução PDispSet é executada e per-


manece ativa até que o deslocamento de programa seja desativado (a instrução PDis-
pOff) ou outro deslocamento de programa seja ativado (a instrução PDispSet ou
PDispOn).

Somente um deslocamento de programa pode estar ativo ao mesmo tempo. Desloca-


mento de programa não pode ser adicionado a um outro usando PDispSet.

O deslocamento de programa é automaticamente desligado:

- numa partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
PDispSet
[ DispFrame ’:=’ ] < expressão (IN) do pose> ’;’

Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição do deslocamento de programa Instruções - PDispOn
usando duas posições
Definição do dado do tipo pose DataTypes - pose
Sistemas de coordenadas Princípios de Movimento -
Sistema de Coordenadas
Exemplos de como deslocamento de programa Instruções - PDispOn
podem ser usados

2-PDispSet-306 Data Types do Sistema e Rotinas


Instruções PulseDO

PulseDO Gera um pulso de um sinal de saída digital


PulseDO é usado para gerar um pulso de um sinal de saída digital.

Exemplos
PulseDO do15;

Um pulso com comprimento de pulso de 0.2 s é gerado num sinal de saída do15.

PulseDO \PLength:=1.0, ignition;

Um pulso com comprimento de pulso de 1.0 s é gerado num sinal ignition.

Argumentos
PulseDO [ \PLength ] Signal
[ \PLength ] (Pulse Length) DataType: num

O comprimento de pulso em segundos (0.1 - 32s).


Se o argumento é omitido, um pulso de 0.2 segundos é gerado.

Signal DataType: signaldo

O nome do sinal no qual o pulso é gerado.

Execução do programa
Um pulso é gerado com um comprimento de pulso especificado (veja Figure 14).
:

Comprimento de pulso

1
Nível do sinal
0
Execução da instrução PulseDO
Execução da instrução PulseDO
1
Nível do sinal
0
Figure 14 Geração de um pulso de um sinal de saída digital.

Data Types do Sistema e Rotinas 2-PulseDO-307


PulseDO Instruções

A próxima instrução é executada diretamente após o pulso começar. O pulso pode então
ser ligado/desligado sem afetar o resto da execução do programa.

Limitações
O comprimento do pulso tem uma resolução de 0.01 segundos. Valores programados
que diferem deste são arredondados.

Sintaxe
PulseDO
[ ’\’ PLength ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de Entrada/Saída Movimentos e Princípios de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros
do Sistema

2-PulseDO-308 Data Types do Sistema e Rotinas


Instruções RAISE

RAISE Chama um tratamento de erro


RAISE é usado para criar um erro no programa e então chamar o tratamento de erro da
rotina. RAISE pode também ser usado no tratamento de erro para transmitir o erro atual
para o tratamento de erro da rotina chamada.

A instrução pode, por exemplo, ser usada para pular para um nível mais alto na estru-
tura de um programa, ex. para o tratamento de erro na rotina principal, se um erro
ocorre num nível mais baixo.

Exemplo
IF ...
IF ...
IF ...
RAISE escape1;
.
ERROR
IF ERRNO=escape1 RAISE;

A rotina é interrompida para permití-lo se remover de um nível mais baixo no


programa. Um salto ocorre para o tratamento de erro da rotina chamada.

Argumentos
RAISE [ Error no. ]
Error no DataType: errnum

Número do erro: Qualquer número 1-90 que o tratamento de erro possa usar para
localizar o erro que ocorreu (a variável de sistema ERRNO ).

Também é possível reservar um número de erro fora do intervalo 1-90 com a


instrução BookErrNo.

Número do erro deve ser especificado fora do tratamento de erro na instrução


RAISE para que possa transferir a execução para o tratamento de erro da rotina.

Se a instrução está presente no tratamento de erro da rotina, o número do erro não


precisa ser especificado. Neste caso, o erro é transferido para o tratamento de
erro da rotina chamada.

Execução do programa
A execução do programa continua no tratamento de erro da rotina. Após o tratamento

Data Types do Sistema e Rotinas 2-RAISE-309


RAISE Instruções

de erro ser executado, a execução do programa pode continuar com:

- a rotina que chamou a rotina em questão (RETURN),


- o tratamento de erro da rotina que chamou a rotina em questão (RAISE).

Se a instrução RAISE está presente no tratamento de erro da rotina, a execução do pro-


grama continua no tratamento de erro da rotina que chamou a rotina em questão. O
mesmo número de erro permanece ativo.

Se a instrução RAISE está presente numa rotina trap, o erro está de acordo com o trata-
mento de erro do sistema.

Tratamento de erros
Se o número de erros estiver fora da gama, a variável do sistema ERRNO é ajustada
para ERR_ILLRAISE (veja "Data type - errnum"). Este erro pode ser manuseado no
tratamento de erros.

Sintaxe
(EBNF)
RAISE [<error number>] ’;’

<error number> ::= <expression>

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Reservar números de erros Instruções - BookErrNo

2-RAISE-310 Data Types do Sistema e Rotinas


Instruções ReadAnyBin

ReadAnyBin Ler dados de um


arquivo ou canal serial binário
ReadAnyBin (Ler Qualquer Binário) é usado para ler qualquer tipo de dados de um
arquivo ou canal serial binário.

Exemplo
VAR iodev channel2;
VAR robtarget next_target;
...
Open "sio1:", channel2 \Bin;
ReadAnyBin channel2, next_target;

O próximo alvo de robô a ser executado, next_target, é lido do canal referido por
channel2.

Argumentos
ReadAnyBin IODevice Data [\Time])
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial binário a ser lido.

Data Tipo de dados: ANYTYPE

O VAR ou PERS no qual os dados lidos serão armazenados.

[\Time] Tipo de dados: num

O tempo máx. para a operação de leitura (tempo limite), em segundos. Se esse


argumento não for especificado, o tempo máx. será definido como 60 segundos.

Se esse tempo expirar antes do término da operação de leitura, a rotina de trata-


mento de erros será chamada com o código de erro ERR_DEV_MAXTIME. Se
não houver rotina de tratamento de erros, a execução será interrompida.

A função de tempo limite também é utilizada durante a interrupção do programa,


sendo notificada no programa RAPID, ao iniciar.

Execução do programa
Tantos bytes quantos forem necessários para os dados especificados serão lidos do
arquivo ou canal serial binário especificado.

Data Types do Sistema e Rotinas 2-ReadAnyBin-311


ReadAnyBin Instruções

Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para leitura binária.

Os dados a serem lidos por essa instrução devem ter um tipo de dados value do tipo
atomic, string ou record. Tipos de dados semi-value e non-value não podem ser usados.

Dados de matrizes não podem ser usados.

Observe que a variável VAR ou PERS, para armazenamento dos dados lidos, pode ser
atualizada em várias etapas. Portanto, aguarde sempre até que toda a estrutura de dados
seja atualizada, até o uso dos dados lidos de um TRAP ou tarefas de um outro pro-
grama.

Tratamento de erros
Se um erro ocorrer durante a leitura, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.

Se o final do arquivo for detectado antes de todos os bytes serem lidos, a variável de
sistema ERRNO será definida como ERR_RANYBIN_EOF. Assim, esse erro pode ser
tratado na rotina de tratamento de erros.

Exemplo
CONST num NEW_ROBT:=12;
CONST num NEW_WOBJ:=20;
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
VAR wobjdata cur_wobj;

Open "sio1:", channel\Bin;

! Espera pelo caractere de opcode


input := ReadBin (channel \Time:= 0.1);
TEST input
CASE NEW_ROBT:
ReadAnyBin channel, cur_robt;
CASE NEW_WOBJ:
ReadAnyBin channel, cur_wobj;
ENDTEST

Close channel;

Como primeira etapa, o opcode da mensagem é lido do canal serial. Conforme


esse opcode, um robtarget ou um wobjdata é lido do canal serial.

2-ReadAnyBin-312 Data Types do Sistema e Rotinas


Instruções ReadAnyBin

Sintaxe
ReadAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>
[’\’Time’:=’ <expression (IN) of num>]’;’

Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos

Escrita de dados em um canal serial binário Instruções - WriteAnyBin


ou arquivo

Data Types do Sistema e Rotinas 2-ReadAnyBin-313


ReadAnyBin Instruções

2-ReadAnyBin-314 Data Types do Sistema e Rotinas


Instruções Reset

Reset Desliga um sinal de saída digital


Reset é usado para levar o valor de um sinal de saída digital para zero.

Exemplos
Reset do15;

O sinal do15 é levado para 0.

Reset weld;

O sinal weld é levado para 0.

Argumentos
Reset Signal
Signal Tipo de dado: signaldo

O nome do sinal a ser levado para zero.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a 1.

Sintaxe
Reset
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-Reset-315


Reset Instruções

Informações relacionadas
Descrito em:
Ligando um sinal de saída digital Instruções - Set
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-Reset-316 Data Types do Sistema e Rotinas


Instruções RestoPath

RestoPath Retoma a trajetória após uma interrupção


RestoPath é usado para retomar uma trajetória que foi guardada num estágio anterior
usando a instrução StorePath.

Exemplo
RestoPath;

Retoma a trajetória que foi guardada anteriormente usando StorePath.

Execução do programa
O atual movimento de trajetória do robô e de eixos externos é apagado e a trajetória
guardada anteriormente usando StorePath é retomada. Entretanto, nada se move até
que a instrução StartMove seja executada ou um retorno seja feito usando RETRY de
um manipulador de erro.

Exemplo
ArcL p100, v100, seam1, weld5, weave1, z10, gun1;
...
ERROR
IF ERRNO=AW_WELD_ERR THEN
gun_cleaning;
RETRY;
ENDIF
...
PROC gun_cleaning()
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL pclean, v100, fine, gun1;
...
MoveL p1, v100, fine, gun1;
RestoPath;
ENDPROC

No caso de um erro de solda, a execução do programa continua num manipulador de


erro da rotina, que por sua vez, chama gun_cleaning. O movimento de trajetória que
está sendo executado no momento é então guardado e o robô se move para a posição
pclean onde o erro é retificado. Quando isto for feito, o robô retorna para aposição
onde o erro ocorreu, p1, e guarda o movimento original novamente. A solda é então
automaticamente reiniciada, significando que o robô primeiro é revertido ao longo da
trajetória antes de iniciar a solda e a execução do programa pode continuar

Data Types do Sistema e Rotinas 2-RestoPath-317


RestoPath Instruções

Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.

A instrução de movimento a qual precede a instrução deve ser terminada com um ponto
de parada.

Sintaxe
RestoPath‘;’

Informações relacionadas
Descrito em:
Guardando trajetórias Instruções - StorePath
Mais exemplos Instruções - StorePath

2-RestoPath-318 Data Types do Sistema e Rotinas


Instruções RETRY

RETRY Reinicia seguindo um erro


RETRY é usado para reiniciar a execução do programa após um erro ter ocorrido.

Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg4 := 1;
RETRY;
ENDIF

Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o manipulador de erro, que inicializa reg4. A
instrução RETRY é então usada para saltar de um manipulador de erro e outra ten-
tativa é feita para completar a divisão.

Execução do programa
A execução do programa continua (re-executa) com a instrução que causou o erro.

Tratamento de erros
Se o número máximo de reinicializações (4) for excedido, a execução do porgrama
pára com uma mensagem de erro e a variável do sistema ERRNO é definida para
ERR_EXCRTYMAX (veja "Data types - errnum").

Limitações
A instrução pode somente existir no manipulador de erro da rotina. Se o erro foi criado
usando a instrução RAISE, a execução do programa não pode ser reiniciada com a
instrução RETRY, então deve ser usada a instrução TRYNEXT.

Sintaxe
RETRY ’;’

Data Types do Sistema e Rotinas 2-RETRY-319


RETRY Instruções

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Continua com a próxima instrução Instruções - Trynext

2-RETRY-320 Data Types do Sistema e Rotinas


Instruções RETURN

RETURN Termina a execução de uma rotina


RETURN é usado para terminar a execução de uma rotina. Se a rotina é uma função, o
valor da função também é retornado.

Exemplos
errormessage;
Set do1;
.

PROC errormessage()
TPWrite "ERROR";
RETURN;
ENDPROC

O procedimento errormessage é chamado. Quando o procedimento chega na


instrução RETURN, a execução do programa retorna para a instrução seguindo
o procedimento chamado, Set do1.

FUNC num abs_value(num value)


IF value<0 THEN
RETURN -value;
ELSE
RETURN value;
ENDIF
ENDFUNC

A função retorna o valor absoluto do número.

Argumentos
RETURN [ Return value ]
Return value DataType: De acordo com a declaração

de função

O valor de retorno da função.

O valor de retorno deve ser especificado na instrução RETURN presente na


função.

Se a instrução está presente no procedimento ou rotina trap, um valor de retorno


não precisa ser especificado.

Data Types do Sistema e Rotinas 2-RETURN-321


RETURN Instruções

Execução do programa
O resultado da instrução RETURN pode variar, dependendo do tipo de rotina que é
usada em:

- Rotina principal: Se uma parada no programa foi ordenada no final do ciclo, o


programa pára. Do contrário, a execução do programa continua
com a primeira instrução da rotina principal.
- Procedimento: A execução do programa continua com a instrução seguindo o
procedimento chamado.
- Função: Retorna o valor da função.
- Rotina trap: A execução do programa continua de onde a interrupção ocor-
reu.
- Manipulador de erro: Num procedimento:
A execução do programa continua com a rotina que chamou a
rotina com o manipulador de erro (com a instrução seguindo o
procedimento chamado).
Numa função:
O valor da função é retornado.

Sintaxe
(EBNF)
RETURN [ <expressão> ]’;’

Informações relacionadas
Descrito em:
Funções e Procedimentos Características Básicas - Rotinas
Rotinas trap Características Básicas - Interrupções
Tratamento de erros Características Básicas -
Reconhecimento de Erro

2-RETURN-322 Data Types do Sistema e Rotinas


Instruções Rewind

Rewind Rebobinar a posição do arquivo


Rewind ajusta a posição do arquivo para o início do arquivo.

Exemplo
Rewind iodev1;

O arquivo referido como iodev1 terá a posição de arquivo ajustada para o início
do arquivo.

Argumentos
Rewind IODevice
IODevice Tipo de dados: iodev

Nome (referência) do arquivo a ser rebobinado.

Execução do programa
O arquivo especificado é rebobinado para o início.

Data Types do Sistema e Rotinas 2-Rewind-323


Rewind Instruções

Exemplo
! IO device and numeric variable for use together with a binary file
VAR iodev dev;
VAR num bindata;

! Open the binary file with \Write switch to erase old contents
Open "flp1:"\File := "bin_file",dev \Write;
Close dev;

! Open the binary file with \Bin switch for binary read and write access
Open "flp1:"\File := "bin_file",dev \Bin;
WriteStrBin dev,"Hello World";

! Rewind the file pointer to the beginning of the binary file


! Read contents of the file and write the binary result on TP
! (gives 72 101 108 108 111 32 119 111 114 108 100 )
Rewind dev;
bindata := ReadBin(dev);
WHILE bindata <> EOF_BIN DO
TPWrite " " \Num:=bindata;
bindata := ReadBin(dev);
ENDWHILE

! Close the binary file


Close dev;

A instrução Rewind é usada para rebobinar um arquivo binário para o início para
que o conteúdo do arquivo possa ser lido novamente com ReadBin.

Sintaxe
Rewind
[IODevice ’:=’] <variável (VAR) de iodev>’;’

Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos Sumário RAPID - Comunicação

2-Rewind-324 Data Types do Sistema e Rotinas


Instruções Save

Save Salvar um módulo de programa


Save é usado para salvar um módulo de programa.

O módulo de programa especificado na memória do programa será salvo com o ca-


minho de arquivo original (especificado em Load ou StartLoad) ou com um caminho
de arquivo especificado.

Também é possível salvar um módulo do sistema no caminho de arquivo especificado.

Exemplo
Load "ram1disk:PART_B.MOD";
...
Save "PART_B";

Carregar o módulo de programa, cujo nome de arquivo é PART_B.MOD, de


ram1disk para a memória do programa.

Salvar o módulo de programa PART_B com o caminho de arquivo original


ram1disk com o nome de arquivo original PART_B.MOD.

Argumentos
Save [\Task] ModuleName [\FilePath] [\File]

[\Task] Tipo de dados: taskid

A tarefa de programa na qual o módulo de programa deve ser salvo.

Se esse argumento for omitido, o módulo de programa especificado na tarefa de


programa atual (em execução) será salvo.

Para todas as tarefas de programa do sistema, variáveis predefinidas do tipo de


dados taskid estarão disponíveis. A identidade da variável será "nome da
tarefa"+"Id", ex. para a tarefa MAIN, a identidade da variável será MAINId,
TSK1 - TSK1Id etc.

ModuleName Tipo de dados: string

O módulo de programa a ser salvo.

[\FilePath] Tipo de dados: string

O caminho de arquivo e o nome de arquivo do lugar onde o módulo de programa

Data Types do Sistema e Rotinas 2-Save-325


Save Instruções

deve ser salvo. O nome de arquivo deve ser excluído quando o argumento \File é
usado.

[\File] Tipo de dados: string

Quando o nome de arquivo é excluído no argumento \FilePath, ele deve ser espe-
cificado com esse argumento.

O argumento \FilePath só pode ser omitido para módulos de programa carregados com
Load ou StartLoad-WaitLoad e o módulo de programa será armazenado no mesmo des-
tino que o especificado nessas instruções. Para armazenar o módulo de programa em
outro destino, também é possível usar o argumento \FilePath.

Para poder salvar um módulo de programa que, anteriormente, foi carregado a partir da
unidade de programa, computador externo ou configuração do sistema, é necessário
usar o argumento \FilePath.

Execução do programa
A execução do programa espera pelo término do salvamento do módulo de programa
antes de passar para a próxima instrução.

Exemplo
Save "PART_A" \FilePath:="ram1disk:DOORDIR/PART_A.MOD";

Salvar o módulo de programa PART_A em ram1disk no arquivo PART_A.MOD


e no diretório DOORDIR.

Save "PART_A" \FilePath:="ram1disk:” \File:=“DOORDIR/PART_A.MOD";

O mesmo que acima, mas com outra sintaxe.

Save \Task:=TSK1Id, "PART_A" \FilePath:="ram1disk:DOORDIR/PART_A.MOD";

Salvar o módulo de programa PART_A da tarefa de programa TSK1 no destino


especificado. Este é um exemplo no qual a instrução Save é executada em uma
tarefa de programa e o salvamento é feito em outra tarefa de programa.

Limitações
Rotinas de interceptação (TRAP), eventos de E/S do sistema e outras tarefas de pro-
grama não podem ser executadas durante a operação de salvamento. Portanto, quais-
quer operações dessa espécie serão atrasadas.

A operação de salvamento pode interromper atualizações de dados PERS feitas passo


a passo a partir de outras tarefas de programa. Isso irá resultar em dados PERS incon-

2-Save-326 Data Types do Sistema e Rotinas


Instruções Save

sistentes como um todo.

Uma parada do programa durante a execução de uma instrução Save pode resultar em
uma parada de proteção com os motores desligados e na exibição da mensagem de erro
"20025 Stop order timeout" na Unidade de programação.

Evite movimentos do robô durante o salvamento.

Tratamento de erros
Se o módulo de programa não puder ser salvo por não haver nome de módulo, por este
ser desconhecido ou ser ambíguo, a variável de sistema ERRNO será definida como
ERR_MODULE.

Se o arquivo salvo não puder ser aberto por falta de permissões, por não existir o
diretório ou por não haver espaço no dispositivo, a variável de sistema ERRNO será
definida como ERR_IOERROR.

Se o argumento \FilePath não for especificado para módulos de programa carregados


a partir da Unidade de programação, Parâmetros do sistema ou um computador
externo, a variável de sistema ERRNO será definida como ERR_PATH.

Os erros acima podem ser tratados na rotina de tratamento de erros.

Sintaxe
Save
[ ‘\’ Task ‘:=‘ <variable (VAR) of taskid> ‘,’ ]
[ ModuleName ‘:=‘ ] <expression (IN) of string>
[ ‘\’ FilePath ‘:=‘<expression (IN) of string> ]
[ ‘\’ File ‘:=‘ <expression (IN) of string>] ‘;’

Informações relacionadas
Descrito em:
Tarefas de programa Tipos de dados - taskid

Data Types do Sistema e Rotinas 2-Save-327


Save Instruções

2-Save-328 Data Types do Sistema e Rotinas


Instruções SearchC

SearchC Pesquisa circularmente usando o robô


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

Durante o movimento, o robô supervisiona um sinal de entrada digital. Quando o valor


do sinal muda, o robô lê imediatamente a posição atual.

Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchC , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.

Exemplos
SearchC sen1, sp, cirpoint, p10, v100, probe;

O TCP da probe é movido circularmente em direção à posição p10 numa veloci-


dade de v100. Quando o valor do sinal do1 é ligado, a posição é guardada em sp.

SearchC \Stop, sen1, sp, cirpoint, p10, v100, probe;

O TCP da probe é movido circularmente em direção à posição p10. Quando o


valor do sinal do1 é ligado, a posição é guardada em sp e o robô pára imediata-
mente.

Argumentos
SearchC [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal [ \Flanks ]
SearcPoint CirPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ] [ \Corr
]
[ \Stop ] (Stiff Stop) Data type: switch

O movimento do robô é parado, o mais rapidamente possível, sem manter o TCP


na trajetória (parada agressiva), quando o valor do sinal de pesquisa fica ativo.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, i.e. para a posição onde o sinal mudou.

[ \PStop ] (Path Stop) DataType: switch

O movimento do robô é parado, o mais rapidamente possível, enquanto mantém


o TCP na trajetória (parada suave), quando o valor do sinal de pesquisa é ligado.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, ou seja, para a posição onde o sinal mudou.

[ \SStop ] (Smooth Stop) Data type: switch

O movimento do robô é interrompido tão rapidamente quanto possível, ao

Manual de Referência RAPID 8-SearchC-329


SearchC Instruções

mesmo tempo em que se mantém o TCP próximo do caminho ou no caminho


(parada suave), quando o valor do sinal de pesquisa muda para ativo. Entretanto,
o robô é movido por uma distância um tanto pequena antes de parar, não sendo
movido de volta para a posição pesquisada, ou seja, a posição na qual o sinal
mudou. SStop é mais rápido que PStop. No entanto, quando o robô se move mais
rapidamente que 100 mm/s, ele pára na direção da tangente do movimento, o que
o faz deslizar um pouco para fora do caminho.

[ \Sup ] (Supervision) DataType: switch

A instrução Search é sensível à mudança de sinal durante todo o movimento


(pesquisa flutuante), i.e. mesmo após a troca do primeiro sinal ter sido relatado.
Se mais de um sinal ocorrer durante a pesquisa, a execução do programa pára.

Se o argumento \Stop, \PStop, \SStop ou \Sup for omitido, o movimento continu-


ará (pesquisa flutuante) para a posição especificada no argumento ToPoin (o
mesmo que com o argumento \Sup).

Signal DataType: signaldi

O nome do sinal a supervisionar.

[\Flanks ] Data type: switch

As extremidades positiva e negativa do sinal são válidas para uma pesquisa com
sucesso.

Se o argumento \Flanks é omitido, somente a extremidade positiva do sinal é


válida para o sucesso da pesquisa e uma supervisão de sinal será ativada no início
do processo de pesquisa. Isso significa que, se o sinal tem um valor positivo no
início do processo de pesquisa, o movimento do robô é parado, o mais
rapidamente possível, mantendo o TCP na trajetória (parada suave). Entretanto,
o robô é movido uma pequena distância antes de parar e não é movido de novo
para a posição inicial. Um erro recuperável pelo usuário
(ERR_SIGSUPSEARCH) será gerado e pode ser tratado pelo tratamento de
erros.

SearchPoint DataType: robtarget

A posição do TCP e eixos externos quando o sinal de search foi acionado. A


posição é especificada no sistema de coordenada mais externa, levando em con-
sideração a ferramenta especificada, o objeto de trabalho e o sistema de coorde-
nada ProgDisp/ExtOffs ativo.

CirPoint DataType: robtarget

O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

8-SearchC-330 Manual de Referência do RAPID


Instruções SearchC

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchC sempre usa um ponto de parada como um dado de zona para
o destino.

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que as posições do robô na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em entrada de correcções pela instrução CorrWrite


serão adicionados no trajeto e na posição de destino, em estando presente este
argumento.

Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.

O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.

Manual de Referência RAPID 8-SearchC-331


SearchC Instruções

Quando uma pesquisa flutuante é usada (por exemplo, quando o argumento \Sup é
especificado), o movimento do robô sempre continua para o ponto de destino progra-
mado. Quando uma pesquisa é feita usando a opção \Stop ou \PStop ou \SStop, o mov-
imento do robô pára quando o primeiro sinal é detectado.

A instrução SearchC retorna a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 15.

Sem chave \Flanks Com chave \Flanks


1 1
0 time 0 time

= Reação da instrução quando


altera o sinal

Figura 15 Deteção de sinal disparada por Flank (as posições são guardadas somente quando o
sinal é alterado a primeira vez).

Exemplo
SearchC \Sup, sen1\Flanks, sp, cirpoint, p10, v100, probe;

O TCP do probe é movido circularmente em direção à posição p10. Quando o


valor do sinal sen1 é alterado para ativo ou passivo, a posição é guardada em sp.
Se o valor do sinal muda duas vezes, a execução do programa pára.

Limitações
O dado de zona para a instrução de posicionamento que precede o SearchC deve ser
usado cuidadosamente. O início da pesquisa, por exemplo, quando o sinal E/S está
pronto para reativar, não é, neste caso o ponto de destino programado na instrução de
posicionamento anterior, mas um ponto ao longo da real trajetória do robô. Figura 16
ilustra um exemplo de alguma coisa que pode estar errada quando outro dado de zona
que não o fine é usado.

A instrução SearchC nunca poderá ser reiniciada após um ponto de círculo ter passado.
Caso contrário o robô não fará o trajeto programado (posicionamento em torno da tra-
jetória circular em uma outra direção comparada com a programada).

8-SearchC-332 Manual de Referência do RAPID


Instruções SearchC

Ponto inicial com


dado de zona z10 Objeto de pesquisa

Ponto final

Ponto inicial com


dado de zona fine

Figura 16 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.

Distância típica de parada usando uma velocidade de pesquisa de 50 mm/s:

- sem TCP na trajetória (opção \Stop) 1-3 mm


- com TCP na trajetória (opção \PStop) 12-16 mm
- com TCP próximo à trajetória (opção \SStop) 7-10 mm

Tratamento de erros
Um erro é relatado durante uma pesquisa quando:

- não ocorre o sinal de deteção - isto gera o erro ERR_WHLSEARCH


- mais de um sinal de deteção ocorre – isto gera um o erroERR_WHLSEARCH,
somente se o argumento \Sup é usado.
- o sinal já tem um valor positivo no início do processo de pesquisa. Isto gera o
erro ERR_SIGSUPSEARCH, somente se o argumento \Flanks é omitido.

Erros podem ser tratados de diferentes formas dependendo do modo de execução sel-
ecionado :

Para frente continuamente / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado . A variável de sistema ERRNO é ajustada para
ERR_WHLSEARCH e o erro pode ser tratado no tratamento de erro da rotina.

Para frente continuamente / Para frente instrução por instrução /


ERR_SIGSUPSEARCH
Nenhuma posição é retornada e o movimento sempre pára, tão rapidamente
quanto possível, no início do trajeto de pesquisa. A variável do sistema ERRNO
é ajustada para ERR_SIGSUPSEARCH e o erro pode ser tratado no tratamento
de erro da rotina.

Para frente instrução por instrução / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado. Execução do programa pára com uma mensagem de erro.

Manual de Referência RAPID 8-SearchC-333


SearchC Instruções

Para trás instrução por instrução


Durante a execução para trás, a instrução realiza somente o movimento sem sinal
de supervisão.

Sintaxe
SearchC
[ ’\’ Stop’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’ ] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks]’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ CirPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Pesquisas lineares Instruções - SearchL
Escreve em uma entrada de correcções Instruções - CorrWrite
Movimento circular Movimento e Princípios de E/S -
Posicionamento durante a execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S
Mais exemplos de pesquisa Instruções - SearchL

8-SearchC-334 Manual de Referência do RAPID


Instruções SearchL

SearchL Pesquisa linearmente usando o robô


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

Durante o movimento, o robô supervisiona um sinal de entrada digital. Quando o valor


do sinal muda para o pedido, o robô lê imediatamente a posição atual.

Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchL , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.

Exemplos
SearchL sen1, sp, p10, v100, probe;

O TCP do probe é movido linearmente em direção à posição p10 numa veloci-


dade de v100. Quando o valor do sinal do1 é ligado, a posição é guardada em sp..

SearchL \Stop, sen1, sp, p10, v100, probe;

O TCP do probe é movido linearmente em direção à posição p10. Quando o valor


do sinal do1 é ligado, a posição é guardada em sp e o robô pára imediatamente.

Argumentos
SearchL [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal
[ \Flanks ] SearchPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]
[ \Corr ]
[ \Stop ] (Stiff Stop) Data type: switch

O movimento do robô é parado, o mais rapidamente possível, sem manter o TCP


na trajetória, quando o valor do sinal de pesquisa é alterado para ativo.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, i.e. para a posição onde o sinal mudou.

[ \PStop ] (Path Stop) DataType: switch

O movimento do robô é interrompido, o mais rapidamente possível, enquanto


mantém o TCP na trajetória (parada suave), quando o valor do sinal de pesquisa
é alterado para ativo. Entretanto, o robô se move uma pequena distância antes de
parar e não volta para trás para a posição pesquisada, ou seja, para a posição onde
o sinal mudou.

[ \SStop ] (Smooth Stop) Data type: switch

O movimento do robô é interrompido tão rapidamente quanto possível, enquanto

Manual de Referência do RAPID 8-SearchL-335


SearchL Instruções

matém o TCP próximo à trajetória ou na trajetória (parada suave), quando o valor


do sinal de pesquisa muda para ativo. Entretanto, o robô é movido por uma
pequena distância antes de parar e não é movido de volta para a posição
pesquisada, ou seja, a posição na qual o sinal mudou. SStop é mais rápido que
PStop. No entanto, quando o robô se move mais rapidamente que 100 mm/s, ele
pára na direção da tangente do movimento, o que o faz desviar-se um pouco da
trajetória.

[\Sup ] (Supervision) DataType: switch

A instrução search é sensível à mudança de sinal durante todo o movimento


(pesquisa flutuante), i.e. mesmo após a troca do primeiro sinal ter sido relatada.
Se mais de um sinal ocorrer durante a pesquisa, a execução do programa pára.

Se o argumento \Stop, \PStop, \SStop ou \Sup for omitido, o movimento continu-


ará (pesquisa flutuante) para a posição especificada no argumento ToPoint (o
mesmo que com o argumento \Sup).

Signal DataType: signaldi

O nome do sinal a supervisionar.

[\Flanks ] Data type: switch

As extremidades positiva e negativa d sinal são válidas para uma pesquisa de


sucesso.

Se o argumento \Flanks é omitido, somente a extremidade positiva do sinal será


válida para uma pesquisa de sucesso e a supervisão de sinal será ativada no início
Isso significa que se o sinal tem o valor positivo já no início do processo de
pesquisa, o movimento do robô é parado, tão rapidamente quanto possível,
enquanto mantém o TCP na trajetória (parada suave). Um erro recuperável pelo
usuário (ERR_SIGSUPSEARCH) será gerado e pode ser tratado pela rotina de
tratamento de erros.

SearchPoint DataType: robtarget

A posição do TCP e eixos externos quando o sinal de search foi acionado. A


posição é especificada no sistema de coordenada mais externo, levando em con-
sideração a ferramenta e o objeto de trabalho e o sistema de coordenadas
ProgDisp/ExtOffs ativo.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchL sempre usa um ponto de parada como um dado de zona para
o destino.

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

8-SearchL-336 Manual de Referência do RAPID


Instruções SearchL

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão adicionados na trajetória e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.

O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.

Se uma pesquisa flutuante é usada, por exemplo, o argumento \Sup é especificado, o


movimento do robô sempre continua para o ponto de destino programado. Se uma
pesquisa é feita usando a opção \Stop, \PStop ou \SStop, o movimento do robô pára
quando o primeiro sinal é detectado.

A instrução SearchL guarda a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 17.

Manual de Referência do RAPID 8-SearchL-337


SearchL Instruções

Sem interruptor \Flanks Com interruptor \Flanks


1 1
0 tempo 0 tempo

= Reação de instrução quando


o sinal é trocado

Figura 17 Deteção de sinal por disparo de Flank (a posição é guardada somente quando o sinal
é trocado a primeira vez)

Exemplos
SearchL \Sup, sen1\Flanks, sp, p10, v100, probe;

O TCP da probe é movido linearmente em direção à posição p10. Quando o valor


do sinal sen1 é alterado para ativo ou passivo, a posição é guardada em sp. Se o
valor do sinal muda duas vezes, a execução do programa pára após terminado o
processo de pesquisa.

SearchL \Stop, sen1, sp, p10, v100, tool1;


MoveL sp, v100, fine, tool1;
PDispOn *, tool1;
MoveL p100, v100, z10, tool1;
MoveL p110, v100, z10, tool1;
MoveL p120, v100, z10, tool1;
PDispOff;

No início do processo de pesquisa, será feita uma verificação no sinal sen1 e, se


o sinal já tem um valor positivo, a execução do programa pára. Caso contrário, o
TCP da tool1 é movido linearmente em direção à posição p10. Quando o valor
do sinal sen1 é alterado para ativo, a posição é guardada em sp e o robô se move
de volta a este ponto. Usando um programa de deslocamento, o robô então se
move relativo à posição de pesquisa, sp.

Limitações
O dado de zona para a instrução de posicionamento que precede o SearchL deve ser
usado cuidadosamente. O início da pesquisa, i.e. quando o sinal E/S está pronto para
reativa, neste caso, não é o ponto de destino programado na instrução e na verdade,
instrução de posicionamento anterior, mas um ponto ao longo da real trajetória do robô.
Figura 18 a Figura 20 ilustram exemplos de coisas que podem estar erradas quando
outro dado de zona que não o fine é usado.

8-SearchL-338 Manual de Referência do RAPID


Instruções SearchL

Ponto de partida com


dado de zona fine

Ponto de partida com


dado de zona z10 Objeto de pesquisa
Ponto final

Figura 18 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.

Ponto de partida com


dado de zona fine

Ponto de partida com


dado de zona z10 Objeto de pesquisa
Ponto final

Figura 19 Deteção não encontrada porque foi usado o dado de zona errado.

Ponto de partida com


dado de zona fine

Ponto de partida com Objeto de pesquisa


dado de zona z10
Ponto final

Figura 20 Deteção não encontrada porque foi usado o dado de zona errado.

Distância típica de parada usando uma velocidade de pesquisa de 50 mm/s:

- sem TCP na trajetória (opção \Stop) 1-3 mmm


- com TCP na trajetória (opção \PStop) 12-16 mm
- com TCP próximo à trajetória (opção \SStop) 7-10 mm

Tratamento de erros
Um erro é relatado durante uma pesquisa quando:

- não ocorre o sinal de deteção - isto gera o erro ERR_WHLSEARCH.


- mais de um sinal de deteção ocorre – isto gera o erro ERR_WHLSEARCH
somente se o argumento \Sup é usado.
- o sinal já tem um valor positivo no início do processo de pesquisa - isto gera o
erro ERR_SIGSUPSEARCH somente se o argumento \Flanks é omitido.

Manual de Referência do RAPID 8-SearchL-339


SearchL Instruções

Erros podem ser tratados de diferentes formas, dependendo do modo de execução sel-
ecionado :

Para frente continuamente / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado . A variável de sistema ERRNO é fixada para
ERR_WHLSEARCH e o erro pode ser manipulado no tratamento de erro da
rotina.

Para frente continuamente / Para frente instrução por instrução /


ERR_SIGSUPSEARCH
Nenhuma posição é retornada e o movimento sempre pára, o mais rapidamente
possível, no início da trajetória de pesquisa. A variável do sistema ERRNO é
ajustada para ERR_SIGSUPSEARCH e o erro pode ser tratado no tratamento de
erros da rotina.

Para frente instrução por instrução/ ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado. Execução do programa pára com uma mensagem de erro.

Para trás instrução por instrução


Durante a execução para trás, a instrução realiza somente o movimento sem
supervisão de sinal.

Exemplo
VAR num fk;
.
MoveL p10, v100, fine, tool1;
SearchL \Stop, sen1, sp, p20, v100, tool1;
.
ERROR
IF ERRNO=ERR_WHLSEARCH THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN
TPWrite “O sinal da instrução SearchL já é elevado!”;
TPReadFK fk,”Tentar novamente após reajuste manual do sinal
?”,”YES”,””,””,””,”NO”;
IF fk = 1 THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSE
Stop;
ENDIF
ENDIF

Se o sinal já está ativo no início do processo de pesquisa, uma caixa de diálogo


do usuário será ativada (TPReadFK ...;). Reajuste o sinal e pressione YES na
caixa de diálogo. O robô retorna a p10 e tenta mais uma vez. Caso contrário, a
execução do programa pára.

8-SearchL-340 Manual de Referência do RAPID


Instruções SearchL

Se o sinal está passivo no início do processo de pesquisa, o robô pesquisa desde


a posição p10 até p20. Se nenhum sinal é detetado, o robô retorna a p10 e tenta
mais uma vez.

Sintaxe
SearchL
[ ’\’ Stop ’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks] ’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Pesquisas circulares Instruções - SearchC
Escrever em entrada de correções Instruções - CorrWrite
Movimento linear Movimento e Princípios de E/S -
Posicionamento na execução do pro-
grama
Definição de velocidade Tipos de dados - speeddata
Definição de ferramenta Tipos de dados - tooldata
Definição de objeto de trabalho Tipos de dados - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S

Manual de Referência do RAPID 8-SearchL-341


SearchL Instruções

8-SearchL-342 Manual de Referência do RAPID


Instruções Set

Set Liga um sinal de saída digital


Set é usado para levar o valor de um sinal digital para um.

Exemplos
Set do15;

O sinal do15 é levado para 1.

Set weldon;

O sinal weldon é levado para 1.

Argumentos
Set Signal
Signal DataType: signaldo

O nome do sinal a ser levado para um.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a zero.

Sintaxe
Set
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-Set-343


Set Instruções

Informações relacionadas
Descrito em:
Levando um sinal de saída digital para zero Instruções - Reset
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-Set-344 Data Types do Sistema e Rotinas


Instruções SetAO

SetAO Muda o valor de um sinal de saída analógico


SetAO é usado para mudar o valor de um sinal de saída analógico.

Exemplo
SetAO ao2, 5.5;

O sinal ao2 é levado para 5.5.

Argumentos
SetAO Signal Value
Signal DataType: signalao

O nome do sinal de saída analógico a ser alterado.

Value DataType: num

O valor desejado para o sinal.

Execução do programa
O valor programado é tabelado (de acordo com os parâmetros do sistema) antes de ser
enviado ao canal físico. Veja Figure 21.

Valor físico do
sinal de saída (V, mA, etc.)

MAX SINAL

MAX PROGRAMA

Valor lógico no
programa
MIN PROGRAMA

MIN SINAL

Figure 21 Diagrama de como o valor do sinal analógico é tabelado.

Data Types do Sistema e Rotinas 2-SetAO-345


SetAO Instruções

Exemplo
SetAO weldcurr, curr_outp;

O sinal weldcurr é levado para o mesmo valor que o atual valor da variável
curr_outp.

Sintaxe
SetAO
[ Signal ’:=’ ] < variável (VAR) do signalao > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-SetAO-346 Data Types do Sistema e Rotinas


Instruções SetDO

SetDO Muda o valor de um sinal de saída digital


SetDO é usado para mudar o valor de um sinal de saída digital, com ou sem um tempo
de atraso.

Exemplos
SetDO do15, 1;

O sinal do15 é levado para 1.

SetDO weld, off;

O sinal weld é levado para off.

SetDO \SDelay := 0.2, weld, high;

O sinal weld é levado para high com um atraso de 0.2 s. Entretanto, a execução
do programa continua com a próxima instrução.

Argumentos
SetDO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) DataType: num

A mudança de tempo de atraso é dado em segundos (0.1 - 32s).


A execução do programa continua diretamente com a próxima instrução. Após o
tempo de atraso dado, o sinal é mudado sem afetar o resto da execução do pro-
grama.

Se o argumento é omitido, o valor do sinal é mudado diretamente.

Signal DataType: signaldo

O nome do sinal a ser mudado.

Value DataType: dionum

O valor desejado para o sinal.

O valor está especificado como 0 ou 1.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal está invertido nos parâmetros
do sistema, o valor do canal físico é o oposto.

Data Types do Sistema e Rotinas 2-SetDO-347


SetDO Instruções

Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) de num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) de signaldo > ’,’
[ Value ’:=’ ] < expressão (IN) de dionum > ’;’

Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Princípios de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário -
Parâmetros do Sistema

2-SetDO-348 Data Types do Sistema e Rotinas


Instruções SetGO

SetGO Muda o valor de um grupo


de sinais de saída digital
SetGO é usado para mudar o valor de um grupo de sinais de saída digitais, com ou sem
atraso de tempo.

Exemplo
SetGO go2, 12;

O sinal go2 é levado para 12. Se go2 compreende 4 sinais, ex. saídas 6-9, as saí-
das 6 e 7 são levadas para zero, enquanto as saídas 8 e 9 são levadas a um.

SetGO \SDelay := 0.4, go2, 10;

O sinal go2 é levada para 10. Se go2 compreende 4 sinais, ex. saídas 6-9, as
saídas 6 e 8 são levadas para zero, enquanto as saídas 7 e 9 são levadas a um, com
um atraso de 0.4 s. Entretanto, a execução do programa continua com a próxima
instrução.

Argumentos
SetGO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) Data type: num

Atrasa a alteração pelo período de tempo estabelecido em segundos (0.1 - 32s).


A execução do programa continua diretamente com a próxima instrução. Após o
atraso de tempo especificado, o valor dos sinais é alterado sem afetar a restante
execução do programa.

Se o argumento é omitido, o valor é mudado diretamente.

Signal DataType: signalgo

O nome do grupo de sinais a ser mudado.

Value DataType: num

O valor desejado para o grupo de sinais (inteiro positivo).

O valor permitido depende do número de sinais do grupo:

Data Types do Sistema e Rotinas 2-SetGO-349


SetGO Instruções

No. de sinais Valor permitido No. de sinais Valor permitido


1 0-1 9 0 - 511
2 0-3 10 0 - 1023
3 0-7 11 0 - 2047
4 0 - 15 12 0 - 4095
5 0 - 31 13 0 - 8191
6 0 - 63 14 0 - 16383
7 0 - 127 15 0 - 32767
8 0 - 255 16 0 - 65535

Execução do programa
O valor programado é convertido para um número binário sem sinal. Este número
binário é enviado ao grupo de sinal, o que resulta em sinais individuais no grupo que
são levados para 0 ou 1. Devido a atrasos internos, o valor do sinal pode ser indefinido
por um curto período de tempo.

Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signalgo > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Outras instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios de E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-SetGO-350 Data Types do Sistema e Rotinas


Instruções SingArea

SingArea Define interpolação em torno de pontos singulares


SingArea é usado para definir como o robô se move perto de pontos singulares.

SingArea é usado também para definir a interpolação circular e linear para robôs com
menos de seis eixos.

Exemplos
SingArea \Wrist;

A orientação da ferramenta pode ser mudada ligeiramente para que passe por um
ponto singular (eixos 4 e 6 em linha).

Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta interpolada. Usando SingArea \Wrist, o robô poderá con-
cluir o movimento mas a orientação da ferramenta será ligeiramente alterada.

SingArea \Off;

A orientação da ferramenta não pode diferir da orientação programada. Se passar


por um ponto singular, um ou mais eixos podem realizar um movimento de
varredura, resultando na redução da velocidade.

Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta programada. Como um resultado o robô parará.

Argumentos
SingArea [ \Wrist] | [ \Off]
[ \Wrist ] Tipo de Dados: switch

A orientação da ferramenta pode diferir um pouco para evitar a singularidade do


punho. Usada quando eixos 4 e 6 são paralelos (eixo 5 a 0 graus). É também
usado para interpolação circular e linear de robôs com menos de seis eixos onde
é permitido diferir a orientação da ferramenta

[\Off ] Tipo de Dados: switch

A orientação da ferramenta não pode diferir. Usado quando nenhum ponto sin-
gular é ultrapassado, ou quando a orientação não pode ser mudada.

Se nenhum dos argumentos for especificado, a execução do programa usa auto-


maticamente o argumento por omissão do robô. Para robôs com seis eixos o
argumento por omissão é \Off

Data Types do Sistema e Rotinas 2-SingArea-351


SingArea Instruções

Execução do programa
Se o argumento \Wrist for especificado, a orientação será interpolada eixo-a-eixo para
evitar pontos singulares. Desta forma, o TCP segue a trajetória correta, mas a orien-
tação da ferramenta desvia um tanto. Isto também ocorre quando um ponto singular não
é ultrapassado.

A interpolação especificada se aplica a todos os movimentos subsequentes até que uma


nova instrução SingArea seja executada.

O movimento somente é afetado na execução de interpolação linear ou circular.

Por omissão, a execução do programa usa automaticamente o argumento /Off para


robôs com seis eixos. Robôs com com menos de seis eixos poderão usar o argumento /
/Off (IRB640) ou o argumento/Wrist por omissão. Isto é automaticamente ajustado na
rotina de evento SYS_RESET.

- uma partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa desde o início.

Sintaxe
SingArea
[ ’\’ Wrist ] | [ ’\’ Off ] ’;’

Informações relacionadas
Descritas em:
Singularidade Princípios de Movimentação -
Singularidade
Interpolação Princípios de Movimentação -
Posicionamento durante a Execução
do Programa

2-SingArea-352 Data Types do Sistema e Rotinas


Instruções SoftAct

SoftAct Ativa o servo soft


SoftAct (Soft Servo Activate) é usado para ativar o chamado servo ”soft” de qualquer
eixo do robô ou unidades mecânicas externas.

Exemplo
SoftAct 3, 20;

Ativação do servo soft no eixo 3, com valor de suavidade 20%.

SoftAct 1, 90 \Ramp:=150;

Ativação do servo soft no eixo 1, com valor de suavidade 90% e fator de rampa
150%.

SoftAct \MechUnit:=orbit1, 1, 40 \Ramp:=120;

Ativação do servo soft no eixo 1, para a unidade mecânica orbit1, com valor de
suavidade 40% e fator de rampa 120%

Argumentos
SoftAct [\MechUnit] Axis Softness [\Ramp ]
[\MechUnit] (Unidade Mecânica) Tipo de Dados: mecunit

O nome da unidade mecânica. Se este argumento for omitido, significa que o


servo soft está ativado para o eixo do robô especificado.

Axis Tipo de Dados: num

Número do do robô ou eixo externo para trabalhar com o servo soft.

Softness Tipo de Dados: num

Valor de suavidade em porcentagem (0 - 100%). 0% significa suavidade mínima


(máx. rigidez), e 100% significa máx. suavidade.

Ramp Tipo de Dados: num

Fator da rampa em porcentagem (>= 100%). O fator da rampa é usada para con-
trolar o ajuste do soft servo. Um fator 100% significa um valor normal; com val-
ores maiores de soft servo é ajustado mais suavemente (rampa longa). O valor
default para fator de rampa é 100 %.

Data Types do Sistema e Rotinas 2-SoftAct-353


SoftAct Instruções

Execução do programa
Suavidade é ativada no valor especificado para o atual eixo. Um valor de suavidade é
válido para todos os movimentos, até que um novo valor de suavidade seja programado
para o eixo atual, ou até que o soft servo seja desativado por uma instrução.

Limitações
O servo suave de qualquer robô ou eixo externo é sempre desativado em caso de falha
de energia. Essa limitação pode ser contornada no programa do usuário, ao reiniciar
após uma falha de energia.

O mesmo eixo não deve ser ativado duas vezes, a menos que haja uma instrução de
movimento no meio. Desta maneira, a próxima sequência do programa deve ser evi-
tada, caso contrário haverá um solavanco no movimento do robô:

SoftAct n , x;
SoftAct n , y;
(n = eixo do robô n, x e y valores de suavidade)

Sintaxe
SoftAct
[’\’MechUnit ’:=’ < variável (VAR) de mecunit> ’,’]
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[Softness ’:=’ ] < expressão (IN) do num>
[ ’\’Ramp ’:=’ < expressão (IN) do num> ]’;’

Informações relacionadas
Descritas em:
Comportamento com o servo soft engatado Movimentação e Princípios E/S -
Posicionamento na execução do
programa

2-SoftAct-354 Data Types do Sistema e Rotinas


Instruções SoftDeact

SoftDeact Desativa o servo soft


SoftDeact (Soft Servo Deactivate) é usado para desativar o chamado servo ”soft” em
todos os robôs e eixos externos.

Exemplo
SoftDeact;

Desativa o soft servo em todos os eixos.

SoftDeact \Ramp:=150;

Desativa o soft servo em todos os eixos, com fator ramp de 150%.

Argumentos
SoftDeact [\Ramp ]

Ramp Data type: num

Fator ramp em porcentagem (>= 100%). O fator ramp é usado para controlar a
desativação do soft servo. Um fator 100% representa o valor normal; com
valores maiores, o soft servo é desativado mais lentamente (ramp mais longo). O
valor padrão do fator ramp é de 100 %.

Execução do programa
O servo soft é desativado para todos os robôs e eixos externos.

Sintaxe
SoftDeact’;’

Informações relacionadas
Descritas em:
Ativando o soft servo Instruções - SoftAct

Data Types do Sistema e Rotinas 2-SoftDeact-355


SoftDeact Instruções

2-SoftDeact-356 Data Types do Sistema e Rotinas


Instruções SpyStart

SpyStart Iniciar gravação de dados


em tempo de execução
SpyStart é usado para iniciar a gravação de dados de instrução e tempo durante a
execução.

Os dados de execução serão armazenados em um arquivo para análise posterior.

Os dados armazenados têm como finalidade a depuração do programa RAPID, especí-


fico para sistema multitarefa (necessário somente para SpyStart - SpyStop em uma
tarefa de programa).

Exemplo
SpyStart "ram1disk:spy.log";

Inicia a gravação dos dados em tempo de execução no arquivo spy.log, no ram-


disk.

Argumentos
SpyStart File
File Tipo de dados: string

O caminho e o nome do arquivo que irá conter os dados de execução.

Execução do programa
O arquivo especificado é aberto para escrita e os dados de tempo de execução
começam a ser gravados no arquivo.

A gravação dos dados em tempo de execução fica ativa até:

- a execução da instrução SpyStop


- que a execução do programa comece do início
- o carregamento de um novo programa
- a próxima partida a quente

Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.

Data Types do Sistema e Rotinas 2-SpyStart-357


SpyStart Instruções

Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).

Tratamento de erros
Se o arquivo da instrução SpyStart não puder ser aberto, a variável de sistema ERRNO
será definida como ERR_FILEOPEN (veja “Tipos de dados - errnum”). Assim, esse
erro poderá ser tratado na rotina de tratamento de erros.

Formato de arquivo
TASK INSTR IN CODE OUT

MAIN ConfJ\Off; 691310:READY :691310


----- SYSTEM TRAP-----
MAIN ConfL\Off; 691450:READY :691450
MAIN def_wz; 691450:READY :691450
MAIN WZSphDef\Inside,volume,[p1.trans.x+xtrans691450:READY :691450
MAIN WZDOSet\Temp,wz1\Inside,volume,do1,1; 691460:READY :691460
----- SYSTEM TRAP-----
MAIN WZSphDef\Inside,volume,[p2.trans.x+xtrans,691460:READY :691460
MAIN WZDOSet\Temp,wz2\Inside,volume,do2,1; 691860:READY :691860
...
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 693910:WAIT :694010
----- SYSTEM TRAP -----
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 726820:WAIT :726820
----- SYSTEM TRAP -----
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 740300:READY :740300
MAIN writepos; 740300:READY :740300
...
MAIN SpyStop; 827610:

A coluna TASK mostra a tarefa de programa executada


A coluna INSTR mostra a instrução executada na tarefa de programa especificada
A coluna IN mostra, em ms, o momento de entrada da instrução executada
A coluna CODE mostra se a instrução está pronta (READY) ou
se a instrução espera (WAIT) conclusão no momento OUT
A coluna OUT mostra, em ms, o momento em que a instrução executada é deixada

Todos os tempos são dados em ms (valores relativos), com resolução de 10 ms.

----- SYSTEM TRAP----- significa que o sistema está fazendo algo mais do que exe-
cutar instruções do RAPID.

Se houver uma chamada a algum procedimento (módulo) NOSTEPIN, a lista de saída


mostrará somente o nome do procedimento que tiver feito a chamada. Isso se repete
para cada instrução executada na rotina NOSTEPIN.

2-SpyStart-358 Data Types do Sistema e Rotinas


Instruções SpyStart

Sintaxe
SpyStart
[File’:=‘]<expression (IN) of string>‘;’

Informações relacionadas
Descrito em:
Interromper a gravação de dados de execução Instruções - SpyStop

Data Types do Sistema e Rotinas 2-SpyStart-359


SpyStart Instruções

2-SpyStart-360 Data Types do Sistema e Rotinas


Instruções SpyStop

SpyStop Interromper gravação de dados


em tempo de execução
SpyStop é usado para interromper a gravação de dados de tempo durante a execução.

Os dados, que podem ser úteis para otimizar o tempo do ciclo de execução, são arma-
zenados em um arquivo para análise posterior.

Exemplo
SpyStop;

Interrompe a gravação de dados em tempo de execução no arquivo especificado


pela instrução SpyStart anterior.

Execução do programa
A gravação de dados de execução é interrompida e o arquivo especificado pela
instrução SpyStart é fechado.
Se nenhuma instrução SpyStart tiver sido executada antes, a instrução SpyStop será
ignorada.

Exemplos
IF debug = TRUE SpyStart "ram1disk:spy.log";
produce_sheets;
IF debug = TRUE SpyStop;

Se o sinalizador debug é verdadeiro, inicia a gravação de dados de execução no


arquivo spy.log, no ramdisk; efetua produção real, interrompe a gravação e fecha
o arquivo spy.log.

Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.

Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).

Data Types do Sistema e Rotinas 2-SpyStop-361


SpyStop Instruções

Sintaxe
SpyStop’;’

Informações relacionadas
Descrito em:
Iniciar gravação de dados de execução Instruções - SpyStart

2-SpyStop-362 Data Types do Sistema e Rotinas


Instruções Load

StartLoad Carregar um módulo de programa durante a


execução
O módulo de programa carregado será adicionado aos módulos já existentes na
memória do programa.

Um módulo de sistema ou de programa pode ser carregado em modo estático (padrão)


ou em modo dinâmico:

Modo estático
Tabell 3 Como diversas operações afetam módulos do sistema ou programas carregados estat-
icamente.

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não afetado Não carregado

Módulo do sistema Não afetado Não afetado

Modo dinâmico
Tabell 4 Como diversas operações afetam módulos do sistema ou programas carregados dinam-
icamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não carregado Não carregado

Módulo do sistema Não carregado Não carregado

Ambos os módulos carregados estaticamente e dinamicamente podem ser descarrega-


dos pela instrução UnLoad.

Exemplo
VAR loadsession load1;

! Inicia o carregamento do novo módulo de programa PART_B, que contém a rotina


routine_b
! em modo dinâmico
StartLoad \Dynamic, ram1disk \File:="PART_B.MOD", load1;

! Executando em paralelo no módulo antigo PART_A que contém routine_a


%"routine_a"%;

! Descarregamento do módulo de programa antigo PART_A


UnLoad ram1disk \File:="PART_A.MOD";

Data Types do Sistema e Rotinas 2-Load-363


Load Instruções

! Espera até que o carregamento e a vinculação do novo módulo de programa PART_B


esteja pronto
WaitLoad load1;

! Execução no novo módulo de programa PART_B


%"routine_b"%;

Inicia o carregamento do módulo de programa PART_B.MOD de ram1disk na


memória do programa com a instrução StartLoad. El paralelo como carrega-
mento, o programa executa routine_a no módulo PART_A.MOD. Em seguida, a
instrução WaitLoad espera pela conclusão do carregamento e da vinculação. O
módulo é carregado em modo dinâmico.

A variável load1 armazena a identificação da sessão de carregamento, atualizada


por StartLoad e referida por WaitLoad.

Para reduzir o tempo de carregamento, as instruções UnLoad e WaitLoad podem


ser combinadas na instrução WaitLoad pelo uso do argumento de opção
\UnLoadPath.

Argumentos
StartLoad [\Dynamic] FilePath [\File] LoadNo
[\Dynamic] Tipo de dados: switch

A opção ativa o carregamento de um módulo de programa em modo dinâmico.


Caso contrário, o carregamento ocorre em modo estático.

FilePath Tipo de dados: string

O caminho e o nome do arquivo que será carregado na memória do programa. O


nome do arquivo deve ser excluído quando o argumento \File é usado.

[\File] Tipo de dados: string

Quando o nome do arquivo é excluído no argumento FilePath, ele deve ser defi-
nido com esse argumento.

LoadNo Tipo de dados: loadsession

Há uma referência à sessão de carregamento que deve ser usada na instrução


WaitLoad para conectar o módulo de programa carregado à tarefa de programa.

Execução do programa
A execução de StartLoad apenas ordenará o carregamento e, em seguida, continuará
diretamente com a próxima instrução, sem esperar pela conclusão do carregamento.

2-Load-364 Data Types do Sistema e Rotinas


Instruções Load

Em seguida, a instrução WaitLoad esperará primeiro pela conclusão do carregamento,


caso este ainda não tenha terminado, para então ser vinculado e inicializado. A inicial-
ização do módulo carregado define todas as variáveis em nível de módulo com seus
valores iniciais.

Referências não resolvidas serão aceitas se o parâmetro de sistema para Tasks/BindRef


estiver definido como NO. No entanto, quando o programa é iniciado ou a função Pro-
gram Window/File/Check Program da unidade de programação é utilizada, nenhuma
verificação de referências não resolvidas será feita se BindRef = NO. Haverá um erro
em tempo de execução ao executar uma referência não resolvida.

Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é usar Vinculação posterior. Isso possibilita especificar a rotina a ser chamada
com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o parâmetro
BindRef pode ser definido como YES (comportamento padrão). O método de Vincu-
lação posterior é preferível.

Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve
ser feito a partir do módulo principal, que está sempre presente na memória do pro-
grama durante a execução.

Exemplos
StartLoad \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD", load1;

Carrega o módulo de programa DOOR1.MOD a partir de ram1disk no diretório


DOORDIR para a memória de programa. O módulo de programa é carregado em
modo dinâmico.

StartLoad \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;

O mesmo que acima, porém com outra sintaxe.

StartLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;

O mesmo que os dois exemplos acima, mas o módulo é carregado em modo


estático.

StartLoad \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;


...
WaitLoad load1;

é o mesmo que

Load \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

Limitações
Não é permitido carregar um módulo de sistema ou módulo de programa que contenha

Data Types do Sistema e Rotinas 2-Load-365


Load Instruções

uma rotina principal.

Sintaxe
StartLoad
[‘\’Dynamic ‘,’]
[FilePath ‘:=‘] <expressão (IN) de string>
[‘\’File ‘:=‘ <expressão (IN) de string> ] ‘,’
[LoadNo ‘:=‘] <variável (VAR) de loadsession> ‘;’

Informações relacionadas
Descrito em:
Conectar o módulo carregado à tarefa Instruções - WaitLoad
Sessão de carregamento Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema - Controller/
Task/
BindRef

2-Load-366 Data Types do Sistema e Rotinas


Instruções StartMove

StartMove Reinicia o movimento do robô


StartMove é usado para retomar o movimento do robô e eixos externos quando este foi
parado pela instrução StopMove.

Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;

O robô inicia o movimento novamente quando a entrada ready_input for ligada.

Execução do programa
Qualquer processo associado com o movimento de parada é reiniciado ao mesmo
tempo que o movimento retoma.

Tratando o erro
Se o robô estiver muito longe do trajeto (mais do que 10mm ou 20 graus) para realizar
o início do movimento de interrompido, a variável de sistema ERRNO é ligada a
ERR_PATHDIST. Este erro pode então ser manipulado no manipulador de erro.

Sintaxe
StartMove’;’

Informações relacionadas
Descrito em:
Parando movimentos Instruções - StopMove
Mais exemplos Instruções - StorePath

Data Types do Sistema e Rotinas 2-StartMove-367


StartMove Instruções

2-StartMove-368 Data Types do Sistema e Rotinas


Instruções Stop

Stop Parar a execução do programa


Stop é usado para parar temporariamente a execução do programa.

A execução do programa também pode ser parada usando a instrução EXIT. Entretanto,
isto somente pode ser feito se a tarefa for concluída, ou se um erro fatal ocorrer, já que
a execução do programa não pode ser reiniciado com EXIT.

Exemplo
TPWrite "A via para o computador está danificada";
Stop;

A execução do programa pára após uma mensagem ter sido escrita na unidade de
programação.

Argumentos
Stop [ \NoRegain ]
[ \NoRegain ] Tipo de dado: switch

Especifica que o próximo início de programa seja no modo manual, indepen-


dentemente se o robô e eixos externos devem retornar à posição de parada. No
modo automático o robô e eixos externos sempre retornam a posição de parada.

Se o argumento NoRegain for ligado, o robô e eixos externos não serão recuper-
ados para a posição de parada (se elas foram movidas para fora da posição).

Se o argumento for omitido e se o robô ou eixos externos forem movidos para


fora da posição de parada, o robô apresenta uma questão na unidade de pro-
gramação. O usuário pode então responder, se o robô deve ou não voltar para a
posição de parada.

Execução do programa
Esta instrução pára a execução do programa assim que o robô e eixos externos
alcançam o ponto de destino programado para o movimento realizado naquele
momento. A execução do programa pode então ser reiniciada pela próxima instrução.

Se houver uma instrução Stop em alguma rotina de evento, a rotina será executada a
partir do início do próximo evento.

Data Types do Sistema e Rotinas 2-Stop-369


Stop Instruções

Exemplo
MoveL p1, v500, fine, tool1;
TPWrite "Mova o robô para a posição do canto 1 do pallet";
Stop \NoRegain;
p1_read := CRobT();
MoveL p2, v500, z50, tool1;

A execução do programa pára com o robô em p1. O operador move o robô para
p1_read. Para o início do próximo programa, o robô não retorna para p1, então a
posição p1_read pode ser guardada no programa.

Limitações
A instrução de movimento que precede esta instrução deve ser terminada com um
ponto de parada, para que seja possível reiniciar nesta instrução seguindo uma falha de
energia.

Sintaxe
Stop
[ ’\’ NoRegain ]’;’

Informações relacionadas
Descrito em:
Parando após um erro fatal Instruções - Exit
Terminando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove

2-Stop-370 Data Types do Sistema e Rotinas


Instruções StopMove

StopMove Pára o movimento do robô


StopMove é usado para parar o movimento do robô e eixos externos temporariamente.
Se a instrução StartMove for dada, o movimento é retomado.

Esta instrução pode, por exemplo, ser usada numa rotina trap para parar o robô tempo-
rariamente quando uma interrupção ocorre.

Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;

O movimento do robô pára até que a entrada ready_input seja ligada.

Execução do programa
Os movimentos do robô e eixos externos param sem que os freios sejam acionados.
Qualquer processo associado com os movimentos em progresso é parado ao mesmo
tempo que o movimento for parado.

A execução do programa continua sem aguardar que o robô e os eixos externos parem
(posição fixa).

Exemplos
VAR intnum intno1;
...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;

TRAP go_to_home_pos
VAR robtarget p10;

StopMove;
StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Quando a entrada di1 é ajustada em 1 é ativada uma interrupção que, por sua vez,

Data Types do Sistema e Rotinas 2-StopMove-371


StopMove Instruções

ativa a rotina interrompida go_to_home_pos. O movimento atual é imediata-


mente interrompido e o robô move-se para a posição home. Quando di1 é ajus-
tado em 0, o robô volta para a posição em que ocorreu a interrupção e continua a
movimentar-se na trajetória programada.

VAR intnum intno1;


...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;

TRAP go_to_home_pos ()
VAR robtarget p10;

StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Exemplo igual ao anterior, mas o robô não muda para a posição home até a
instrução de movimento atual estar terminada.

Sintaxe
StopMove’;’

Informações relacionadas???
Descrito em:
Continuando o movimento Instruções - StartMove
Interrupções Sumário RAPID - Interrupções
Características Básicas - Inter-
rupções???

2-StopMove-372 Data Types do Sistema e Rotinas


Instruções StorePath

StorePath Salva a trajetória quando ocorre uma interrupção


StorePath é usado para salvar a trajetória do movimento em uso quando um erro ou
interrupção ocorrer. O tratamento de erro ou rotina trap podem então iniciar um novo
movimento e, seguindo isto, reiniciar o movimento que foi salvo anteriormente.

Esta instrução pode ser usada para ir para uma posição de serviço ou para limpar a
tocha (solda arco), pinça (solda ponto) ou pistola ( aplicação de cola), por exemplo,
quando um erro ocorre.

Exemplo
StorePath;

A atual trajetória do movimento é salva para uso posterior.

Execução do programa
A atual trajetória do movimento do robô e eixos externos é salva. Após isto, outro mo-
vimento pode ser iniciado na rotina trap ou no tratamento de erro. Quando a razão para
o erro ou interrupção for retificada, a trajetória do movimento salva pode ser reinici-
ada.

Exemplo
TRAP machine_ready;
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL p100, v100, fine, tool1;
...
MoveL p1, v100, fine, tool1;
RestoPath;
StartMove;
ENDTRAP

Quando ocorre uma interrupção que ativa a rotina trap machine_ready, a tra-
jetória do movimento que o robô está executando no momento é parada no fim
da instrução (ToPoint) e salva. Após isto, o robô corrige a interrupção, por exem-
plo, substituindo uma peça na máquina e o movimento normal é reiniciado.

Data Types do Sistema e Rotinas 2-StorePath-373


StorePath Instruções

Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.

Somente uma trajetória do movimento pode ser guardada por vez.

Sintaxe
StorePath‘;’

Informações relacionadas
Descrito em:
Recuperando uma trajetória Instruções - RestoPath
Mais exemplos Instruções - RestoPath

2-StorePath-374 Data Types do Sistema e Rotinas


Instruções TEST

TEST Dependendo do valor de uma expressão ...


TEST é usado quando diferentes instruções devem ser executadas dependendo do valor
de uma expressão ou dado.

Se não há muitas alternativas, a instrução IF..ELSE também pode ser usada.

Exemplo
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Escolha ilegal";
Stop;
ENDTEST

Instruções diferentes são executadas dependendo do valor de reg1. Se o valor for


1-3 routine1 é executada. Se o valor for 4, a routine2 é executada. Caso con-
trário, uma mensagem de erro é impressa e a execução pára.

Argumentos
TEST Test data {CASE Test value {, Test value} : ...}
[ DEFAULT: ...] ENDTEST
Test data DataType: All

O dado ou expressão com o qual o valor teste será comparado.

Test value DataType: o mesmo do ’testdata’

O valor no qual o ’test data’ deve ter para as instruções associadas para ser exe-
cutado.

Execução do programa
O ’test data’ é comparado com os ’test values’ na primeira condição CASE. Se a com-
paração for verdadeira, as instruções associadas são executadas. Após isso, a execução
do programa continua com a instrução após ENDTEST.

Se a primeira condição CASE não for satisfeita, outras condições CASE são testadas,
e assim por diante. Se nenhuma das condições for satisfeita, as instruções associadas
com DEFAULT são executadas (se isto estiver presente).

Data Types do Sistema e Rotinas 2-TEST-375


TEST Instruções

Sintaxe
(EBNF)
TEST <expressão>
{( CASE <valor teste> { ’,’ <valor teste> } ’:’
<lista de instrução> ) | <CSE> }
[ DEFAULT ’:’ <lista de instrução> ]
ENDTEST

<valor teste> ::= <expressão>

Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões

2-TEST-376 Data Types do Sistema e Rotinas


Instruções MoveL

TestSign Saída dos sinais de teste


TestSign é utilizado quando é necessário ter a saída dos sinais de teste no sistema do
robô. Espelhamento dos sinais de teste, ou seja, o ângulo do resolver para um eixo. O
sinal de teste é uma saída analógica para um dos dois pontos de conexão de saída de
teste.

Os sinais de teste do robô mestre não podem ser alcançados.

Exemplo
TestSign 1, resolver_angle, Orbit, 2, 4, 0;

O ponto de conexão 1 do sinal de teste fornecerá o valor do resolver_angle


(ângulo do resolver) para o Eixo orbital 2, escalado 4 vezes o valor nominal e
amostrado na taxa máxima (indicada por 0).

Argumentos
TestSign Output SignalId MechUnit Axis Scale Stime
Output Tipo de dados: num

Esse argumento especifica em qual dos dois pontos de conexão de saída o sinal
de teste estará disponível. Os valores possíveis são 1 e 2.

SignalId Tipo de dados: testsignal

O Nome do sinal de teste a ser enviado para a saída.

MechUnit (Unidade mecânica) Tipo de dados: mecunit

Argumento que contém o nome da unidade mecânica da qual recuperar o sinal


de teste.

Axis Tipo de dados: num

Argumento que contém o número do eixo da unidade mecânica da qual recuperar


o sinal de teste.

Scale Tipo de dados: num

O fator de escala da saída. Os valores possíveis são 1, 2, 4, 8, 16 e assim por


diante.

Data Types do Sistema e Rotinas 2-MoveL-377


MoveL Instruções

Stime (Tempo de amostragem) Tipo de dados: num

Tempo de amostragem, em segundos. O sinal de saída é atualizado com um novo


valor a cada amostra. O valor igual a 1 atualiza a saída uma vez por segundo e
um valor igual a 0 faz a atualização com a maior freqüência possível. O valor 0,01
corresponde a uma amostragem de 100 vezes por segundo.

Execução do programa
A instrução TestSign espelha um sinal no sistema do robô para uma saída. O espelha-
mento de um sinal de teste especificado fica ativo até que uma nova instrução TestSign
seja executada para a saída. Uma partida a quente do sistema do robô remove os sinais
de teste ativados no momento.

Tratamento de erros
Se houver um erro no parâmetro MechUnit, o parâmetro do sistema ERRNO será defi-
nido como ERR_UNIT_PAR. Se houver um erro no parâmetro Axis, ERRNO será
definido como ERR_AXIS_PAR.

Sintaxe
TestSign
[ Output ‘:=‘ ] < expressão (IN) de num> ‘,’
[ SignalId ‘:=‘ ] < expressão (IN) de testsignal>
[ MechUnit ‘:=‘ ] < variável (VAR) de mecunit> ‘,’
[Axis ‘:=‘ ] < expressão (IN) de num> ‘,’
[ Scale ‘:=‘ ] < expressão (IN) de num > ‘,’
[ Stime ‘:=‘ ] < expressão (IN) de num> ‘;’

2-MoveL-378 Data Types do Sistema e Rotinas


Instruções TPErase

TPErase Apaga texto impresso na unidade de programação


TPErase (Teach Pendant Erase) é usado para limpar o display da unidade de pro-
gramação.

Exemplo
TPErase;
TPWrite "Execução iniciada";

O display da unidade de programação é apagado antes da Execução iniciada ser


escrita.

Execução do programa
Todo o texto do display da unidade de programação é apagado. Na próxima vez que o
texto for escrito, ele será colocado na linha mais alta do display.

Sintaxe
TPErase;

Informações relacionadas
Descrito em:
Escrevendo na unidade de programação Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-TPErase-379


TPErase Instruções

2-TPErase-380 Data Types do Sistema e Rotinas


Instruções TPReadFK

TPReadFK Lê teclas de função


TPReadFK (Teach Pendant Read Function Key) é usado para escrever um texto acima
das teclas de função e para descobrir qual tecla está pressionada.

Exemplo
TPReadFK reg1, "Mais ?", stEmpty, stEmpty, stEmpty, "Sim", "Não";

O texto Mais ? é escrito no display da unidadede programação e as teclas de


função 4 e 5 são ativadas por meio de textos Sim e Não respectivamente (veja
Figura 22). A execução do programa espera até que uma das teclas de função 4
ou 5 seja pressionada. Em outras palavras, reg1 será fixado em 4 ou 5 depend-
endo de qual das teclas for pressionada.

Mais?

Sim Não

Figura 22 O operador pode colocar a informação via as teclas de função.

Argumentos
TPReadFK Answer Text FK1 FK2 FK3 FK4 FK5 [\MaxTime]
[\DIBreak] [\BreakFlag]
Answer DataType: num

A variável para qual, dependendo de qual tecla for pressionada, o valor numérico
1..5 é retornado. Se a tecla de função 1 for pressionada, 1 é retornado, eassim por
diante.

Text DataType: string

O texto de informação a ser escrito no ecrã (um máximo de 80 caracteres).

FKx (Function key text) DataType: string

O texto a ser escrito como uma orientação para a apropriada tecla de função (um
máximo de 7 caractéres). FK1 é a tecla do canto esquerdo.

Teclas de função sem pontos são especificadas pela constante string predefinida
stEmpty com valor string vazio (““).

Data Types do Sistema e Rotinas 2-TPReadFK-381


TPReadFK Instruções

[\MaxTime] DataType: num

A máxima quantidade de tempo [s] que a execução do programa espera. Se uma


tecla de função não for pressionada, o programa executa o tratamento de erro a
menos que o BreakFlag seja usado (veja abaixo). Use a constante
ERR_TP_MAXTIME para testar se o tempo máximo foi transcorrido.

[\DIBreak] (Digital Input Break) DataType: signaldi

O sinal digital que pode interromper o diálogo do operador. Se nenhuma tecla de


função for pressionada quando o sinal for setado em 1 (ou já é 1), o programa con-
tinua a executar no tratamento de erro, a menos que seja usado o BreakFlag (veja
abaixo). A constante ERR_TP_DIBREAK pode ser usada para testar se isto ocor-
reu ou não.

[\BreakFlag] DataType: errnum

A variável que irá manter o código de erro se “maxtime” ou “dibreak” for usado.
Se esta variável opcional for omitida, o tratamento de erro será executado. As
constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas para
escolher a causa.

Execução do programa
O texto de informação sempre é escrito numa linha nova. Se o display está completo com
texto, o corpo do texto é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.

Textos-curtos são escritos acima das teclas de função apropriadas. Teclas sem textos-
curtos são desativadas.

A execução do programa espera até que uma das teclas de função ativadas sejam pres-
sionada.

Descrição de pedido TPReadFK ou TPReadNum coincidente na unidade de


programação (pedido TP) a partir da mesma ou de outra tarefa de programa:

• Novo pedido TP de outra tarefa de programa não será focalizado (novo colocado em
fila de espera)
• Novo pedido TP de TRAP na mesma tarefa de programa será focalizado (antigo
colocado em fila de espera)
• Parada de programa será focalizada (antiga colocado em fila de espera)
• Novo pedido TP em parada de programa será focalizado (antigo colocado em fila de
espera)

Exemplo
VAR errnum errvar;

2-TPReadFK-382 Data Types do Sistema e Rotinas


Instruções TPReadFK

...
TPReadFK reg1, "Vai para a posição de serviço?" stEmpty, stEmpty, stEmpty, "Sim",
"Não" \MaxTime:= 600
\DIBreak:= di5\BreakFlag:= errvar;
IF reg1 = 4 or OR errvar = ERR_TP_DIBREAK THEN
MoveL service, v500, fine, tool1;
Stop;
ENDIF
IF errvar = ERR_TP_MAXTIME EXIT;

O robô é movido para a posição de serviço se a quarta tecla de função ("Sim")


for pressionada, ou se a entrada 5 for ativada. Se nenhuma resposta for dada den-
tro de 10 minutos, a execuçào é terminada.

Dados predifinidos

CONST string stEmpty := ““

A constante predifinida stEmpty deverá ser usada para Teclas de Função sem pontos.
Usando stEmpty em vez de ““ guarda cerca de 80 bytes para cada Tecla de Função sem
pontos.

Sintaxe
TPReadFK
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[Text’:=’] <expressão (IN) do string>’,’
[FK1 ’:=’] <expressão (IN) do string>’,’
[FK2 ’:=’] <expressão (IN) do string>’,’
[FK3 ’:=’] <expressão (IN) do string>’,’
[FK4 ’:=’] <expressão (IN) do string>’,’
[FK5 ’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>]’;’

Informações relacionadas
Descritas em:
Escrevendo ou lendo Sumário RAPID - Comunicação
na unidade de programação
Respondendo via unidade de programação Produção rodando

Data Types do Sistema e Rotinas 2-TPReadFK-383


TPReadFK Instruções

2-TPReadFK-384 Data Types do Sistema e Rotinas


Instruções TPReadNum

TPReadNum Lê um número da unidade de programação


TPReadNum (Teach Pendant Read Numerical) é usado para ler um número da unidade
de programação.

Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;

O texto Quantas unidades devem ser produzidas? é escrito no display da unidade


de programação. A execução do programa espera até que um número seja infor-
mado pelo teclado numérico da unidade de programação. Aquele número é guar-
dado em reg1.

Argumentos
TPReadNum Answer String [\MaxTime] [\DIBreak]
[\BreakFlag]
Answer DataType: num

A variável para que o número que entra via unidade de programação seja retor-
nado.

String DataType: string

O texto de informação a ser escrito na unidade de programação (um máximo de


80 caractéres).

[\MaxTime] DataType: num

A quantidade máxima de tempo que a execução do programa espera. Se nenhum


número for colocado dentro deste tempo, o programa continua a executar no
tratamento de erro a menos que o BreakFlag seja usado (veja abaixo). A cons-
tante ERR_TP_MAXTIME pode ser usada para testar se o tempo máximo foi ou
não transcorrido.

[\DIBreak] (Digital Input Break) DataType: signaldi

O sinal digital que pode interromper o diálogo com o operador. Se nenhum


número for inserido quando o sinal é setado para 1 (ou já está em 1), o programa
continua a execução no tratamento de erro a menos que o BreakFlag seja usado
(veja abaixo). A constante ERR_TP_DIBREAK pode ser usada para testar se
isto ocorreu ou não.

[\BreakFlag] DataType: errnum

A variável que irá manter o código de erro se o “maxtime” ou “dibreak” for

Data Types do Sistema e Rotinas 2-TPReadNum-385


TPReadNum Instruções

usado. Se esta variável opcional for omitida, o tratamento de erro será executado.
As constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas
para selecionar a causa.

Execução do programa
O texto de informação é sempre escrito numa linha nova. Se o display está completo
com o corpo do texto, é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.

A execução do programa espera até que um número sejam escrito no teclado numérico
(seguido de Enter ou OK).

Referência a TPReadFK sobre a descrição do pedido TPReadFK ou TPReadNum


coincidente na unidade de programação a partir da mesma ou de outra tarefa de
programa.

Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
FOR i FROM 1 TO reg1 DO
produce_part;
ENDFOR

O texto Quantas unidades devem ser produzidas? é escrito no display da unidade


de programação. A rotina produce_part é então repetida o número de vezes que
foi informada via unidade de programação.

Sintaxe
TPReadNum
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[String’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>] ’;’

2-TPReadNum-386 Data Types do Sistema e Rotinas


Instruções TPReadNum

Informações relacionadas
Descrito em:
Escrevendo e lendo na Sumário RAPID - Comunicação
unidade de programação
Entrando com um número na unidade Produção rodando
de programação
Exemplos de como usar os argumentos Instruções - TPReadFK
MaxTime, DIBreak e BreakFlag

Data Types do Sistema e Rotinas 2-TPReadNum-387


TPReadNum Instruções

2-TPReadNum-388 Data Types do Sistema e Rotinas


Instruções TPShow

TPShowTrocar janela na unidade de programação


TPShow (Teach Pendant Show) é usado para selecionar a Janela da Unidade de
Programação no RAPID.

Exemplos
TPShow TP_PROGRAM;

A Janela de Produção ficará ativa se o sistema estiver no modo AUTO e a Janela


do Programa ficará ativa se o sistema estiver no modo MAN após a execução esta
instrução.

TPShow TP_LATEST;

A última janela da unidade de programação usada antes da janela da unidade de


programação atual ficará ativa após a execução desta instrução.

Argumentos
TPShow Window
Window Data type: tpnum

A janela a ser exibida:

TP_PROGRAM = Janela de Produção se em modo AUTO.


Janela do Programa se em modo MAN.

TP_LATEST = Última janela da unidade de programação


usada antes da janela atual

TP_SCREENVIEWER = Janela do visualizador de tela, se a opção


Visualizador de tela estiver ativa.

Dados predefinidos
CONST tpnum TP_PROGRAM := 1;
CONST tpnum TP_LATEST := 2;
CONST tpnum TP_SCREENVIEWER := 3;

Manual de Referência do RAPID 8-TPShow-389


TPShow Instruções

Execução do programa
A janela da unidade de programação selecionada ficará ativada.

Sintaxe
TPShow
[Window’:=’] <expression (IN) of tpnum> ‘;’

Informações relacionadas
Descrito em:
Comunicar usando a unidade Sumário RAPID - Comunicação
de programação
Número da janela da unidade de programação Tipos de dados - tpnum
-

8-TPShow-390 Manual de Referência do RAPID


Instruções TPWrite

TPWrite Escreve na unidade de programação


TPWrite (Teach Pendant Write) é usado para escrever um texto na unidade de pro-
gramação. Também pode ser escrito um valor de um certo dado.

Exemplos
TPWrite "Execução iniciou";

O texto Execução iniciada é escrito na unidade de programação.

TPWrite "Nº de peças produzidas="\Num:=reg1;

Se, por exemplo, a resposta para No. de peças produzidas=5, entra 5 em vez de
reg1 na unidade de programação.

Argumentos
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]
String DataType: string

O texto a ser escrito (um máximo de 80 caractéres).

[\Num] (Numeric) DataType: num

O dado cujo valor numérico deve ser escrito depois do texto.

[\Bool] (Boolean) DataType: bool

O dado cujo valor lógico deve ser escrito depois do texto.

[\Pos] (Position) DataType: pos

O dado cuja posição deve ser escrito depois do texto.

[\Orient] (Orientation) DataType: orient

O dado cuja orientação deve ser escrito depois do texto.

Execução do programa
Texto escrito na unidade de programação sempre começa numa nova linha. Quando o
display está completo com texto, este texto é movido uma linha para cima. Textos que
são maiores que a largura da unidade de programação (40 caractéres) são divididos em
duas linhas.

Data Types do Sistema e Rotinas 2-TPWrite-391


TPWrite Instruções

Se um dos argumentos \Num, \Bool, \Pos ou \Orient for usado, seu valor é primeira-
mente convertido em um texto antes que seja adicionado ao primeiro texto. A con-
versão de valor para texto ocorre como segue:

Argumento Valor Texto


\Num 23 "23"
\Num 1.141367 "1.14137"
\Bool TRUE "TRUE"
\Pos [1817.3,905.17,879.11] "[1817.3,905.17,879.11]"
\Orient [0.96593,0,0.25882,0] "[0.96593,0,0.25882,0]"

O valor é convertido em um “string” com formato RAPID padrão. Isso significa em


princípio 6 dígitos importantess. Se a parte decimal é menor que 0.000005 ou maior que
0.999995, o número é arredondado para um inteiro.

Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e portanto não
podem ser usados simultanemente na mesma instrução.

Sintaxe
TPWrite
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]’;’

Informações relacionadas
Descrito em:
Apagando e lendo Sumário RAPID - Comunicação
a unidade de programação

2-TPWrite-392 Data Types do Sistema e Rotinas


Instruções TriggC

TriggC Movimento circular do robô com eventos


TriggC (Trigg Circular) é usado para ligar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô se move em uma trajetória cir-
cular.

Um ou mais (máx. 4) eventos podem ser definidos usando a instruções TriggIO,


TriggEquip ou TriggInt e posteriormente estas definições que são referenciadas na
instrução TriggC.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveL p1, v500, z50, gun1;


TriggC p2, p3, v500, gunon, fine, gun1;

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

TriggC p2, p3, v500,gunon, fine, gun1;


Ponto inicial p1 Ponto final p3

Ponto de círculo p2

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 23 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggC [\Conc] CirPoint ToPoint Speed [ \T ]
Trigg_1 [ \T2 ] [ \T3 ] [ \T4] Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch

As instruções subsequentes são executadas imeditamente. Este argumento é


usado para diminuir o tempo de ciclo quando, por exemplo, comunicar com equi-
pamento externo e quando não é necessária sincronização. Também pode ser
usado para ajustar a execução da trajetória do robô, para evitar avisos no trajeto
de escanteio 50024, ou falhas do limite de Desaceleração 40082.

Quando usar o argumento \Conc, o número de instruções de movimento em


sucessão a limitado a 5. Numa secção de programa que inclua StorePath.Resto-

Data Types do Sistema e Rotinas 2-TriggC-393


TriggC Instruções

Path, não são permitidas instruções de movimento com o argumento \Conc.

Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado a zona programada.

CirPoint DataType: robtarget

O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

2-TriggC-394 Data Types do Sistema e Rotinas


Instruções TriggC

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio criada.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução está relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.

As atividades de gatilho definidas são realizadas, tão logo as condições de gatilho


forem satisfeitas, quando o robô estiver posicionado cada vez mais perto do ponto
final,. As condições de gatilho são satisfeitas a uma certa distância antes do ponto final
da instrução, ou a uma certa distância depois do ponto inicial da instrução, ou em um
certo ponto no tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggC p1, p2, v500, trigg1, fine, gun1;
TriggC p3, p4, v500, trigg1, fine, gun1;

Data Types do Sistema e Rotinas 2-TriggC-395


TriggC Instruções

...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está numa


posição 0.1 s antes do ponto p2 ou p4 respectivamente.

Limitações
Se o ponto de partida atual se desviar do normal, de modo a que o comprimento total
de posicionamento da instrução TriggC seja menor do que o usual, pode acontecer que
algumas ou todas as condições trigger sejam cumpridas imediatamente e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa no programa do usuário não pode estar baseada
numa sequência normal de atividades de gatilho para um “movimento incompleto”.

A instrução TriggC nunca deve ser reiniciada após o ponto de círculo já ter passado.
Caso contrário o robô não fará a trajetória programada (posicionamento em torno de
uma trajetória circular executará em outra direção quando comparada com aquela pro-
gramada).

Sintaxe
TriggC
[’\’ Conc ’,’]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

2-TriggC-396 Data Types do Sistema e Rotinas


Instruções TriggC

Informações relacionadas
Descrito em:
Movimento linear com gatilhos Instruções - TriggL
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip,
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento circular Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento

Data Types do Sistema e Rotinas 2-TriggC-397


TriggC Instruções

2-TriggC-398 Data Types do Sistema e Rotinas


Instruções TriggEquip

TriggEquip Define uma posição-tempo fixo por


um evento de E/S
TriggEquip (Trigg Equipment) é usada para definir condições e ações para setar um
sinal digital, um grupo de sinais digital, ou um sinal de saída analógica numa posição
fixada ao longo da trajetória de movimento do robô com a possibilidade de fazer com-
pensar tempo no atraso do equipamento externo.

O dado definido é usado para implementar em uma ou mais instruções subsequentes


TriggL, TriggC ou TriggJ.

Exemplos
VAR triggdata gunon;

TriggEquip gunon, 10, 0.1 \DOp:=gun, 1;

TriggL p1, v500, gunon, z50, gun1;

A ferramenta gun1 abre no ponto p2, quando o TCP está 10 mm antes do ponto
p1. Para alcançar isto, o sinal de saída digital gun é setado para o valor 1, quando
o TCP está 0.1 s antes do ponto p2. A pinça está completamente aberta quando
o TCP alcança o ponto p2.

Ponto inicial TriggL p1, v500, gunon, z50, gun1; Ponto final p1

10 mm

Ponto p2 para abertura da pinça

Figura 24 Exemplo de uma posição-tempo fixada por um evento de E/S.

Argumentos
TriggEquip TriggData Distance [ \Start ] EquipLag
[ \DOp ] | [ \GOp ] | [\AOp ] SetValue [ \Inhib ]
TriggData Data type: triggdata

Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
usados nas instruções subsequentes TriggL, TriggC or TriggJ.

Distance Data type: num

Define a posição na trajetória onde o evento de equipamento E/S pode ocorrer.

Manual de Referência do RAPID 8-TriggEquip-399


TriggEquip Instruções

Especificado a distância em mm (valor positivo) do ponto final da trajetória do


movimento (aplicável se o argumento \ Start não está setado).

Para maiores detalhes, veja a seção entitulada Execução do Programa.

[ \Start ] Data type: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

EquipLag (Equipment Lag) Data type: num

Especifique o atraso para o equipamento externo em s.

Para compensação do atraso do equipamento externo, use valores de argumentos


positivos . Valores de argumentos positivos significam que o sinal de E/S é setado
pelo sistema do robô num tempo específico antes de o TCP físico alcançar a dis-
tância específica em relação ao ínicio do movimento ou ao ponto final.

Valores de argumentos negativos significam que o sinal de E/S é setado pelo sis-
tema do robô num tempo específico após o TCP físico ter passado a distância
específica em relação ao ínicio do movimento ou ao ponto final.

Ponto inicial Ponto final

Distância Distância
\Start

+ - + -

EquipLag

Figura 25 Uso do argumento EquipLag.

[ \DOp ] (Digital OutPut) Data type: signaldo

O nome do sinal, quando o sinal de saída digital pode ser mudado.

[ \GOp ] (Group OutPut) Data type: signalgo

O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.

[ \AOp ] (Analog Output) Data type: signalao

O nome do sinal, quando um sinal de saída analógico pode ser mudado.

SetValue Data type: num

Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).

8-TriggEquip-400 Manual de Referência do RAPID


Instruções TriggEquip

[ \Inhib ] (Inhibit) Data type: bool

O nome de uma flag variável persistente para impedir o setting do sinal em


tempo de execução.

Se este argumento opcional é usado e o valor atual da flag específica for TRUE
na posição-tempo para definição do sinal então o sinal específicado (DOp, GOp
or AOp) é setado para 0 invés do valor específicado.

Execução do programa
Quando rodando a instrução TriggEquip, a condição de gatilho é guardada numa var-
iável especificada para o argumento TriggData.

Quando uma das instruções TriggL, TriggC ou TriggJ é executada, o seguinte aplicado,
em relação às definições em TriggEquip:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân-
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0, o sinal de saída é


setado quando o TCP do robô está aqui

Figura 26 Posição-tempo fixado de E/S num trajeto de canto.

A interrupção de posição-tempo relacionada será gerada quando o ponto inicial (ponto


final) já passou, se a distância especificada do ponto final (ponto inicial) não está den-
tro do comprimento do movimento da atual instrução (Trigg...). Com o uso do argu-
mento EquipLag com tempo negativo (atraso), o sinal E/S pode ser setado após o ponto
final.

Exemplos
VAR triggdata glueflow;

TriggEquip glueflow, 1 \Start, 0.05 \AOp:=glue, 5.3;

MoveJ p1, v1000, z50, tool1;

Manual de Referência do RAPID 8-TriggEquip-401


TriggEquip Instruções

TriggL p2, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1 com compensação para
o atraso do equipamento de
0.05 s.

...
TriggL p3, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.

Limitações
Eventos de E/S à distância (com o argumento \Time) se destinam a pontos flutuantes
(trajeto de canto). Eventos de E/S à distância usando pontos de parada resultam em
menor precisão do que a especificada abaixo.

Relativamente a precisão para eventos de E/S à distância e usando pontos flutuantes, se


aplica o seguinte, quando se ajusta uma saída digital a uma distância especificada a
partir do ponto inicial ou do ponto final na instrução TriggL ou TriggC:

- A precisão especificada abaixo é válida para o parâmetro positivo EquipLag <


60 ms, equivalente ao intervalo de tempo no servo do robô (sem alterar o
parâmetro do sistema Event Preset Time).
- A precisão especificada abaixo é válida para o parâmetro positivo EquipLag <
configurado Event Preset Time (parâmetro do sistema).
- A precisão especificada abaixonão é válida para o parâmetro positivo EquipLag
> configurado Event Preset Time (parâmetro do sistema).Neste caso, se usa um
método aproximado no qual as limitações dinâmicas do robô não são
consideradas. SingArea \Wrist deve ser usado de modo a se atingir uma precisão
aceitável.
- A precisão especificada abaixo é válida para o parâmetro negativo EquipLag.

Eventos de E/S com ajuste de tempo (com o argumento \Time) se destina a pontos de
parada. Eventos de E/S com ajuste de tempo usando pontos flutuantes resulta em menor
precisão do que a especificada abaixo.
Eventos de E/S com ajuste de tempo somente podem ser especificados a partir do ponto
final do movimento. Esse tempo não pode exceder o tempo atual de frenagem do robô,
que é, no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500 mm/s
para o IRB2400 de 150 ms e de 250 ms para o IRB6400). Se o t empo especificado for
superior ao tempo atual de frenagem, o evento será gerado de qualquer modo, mas não
antes de ser iniciada a frenagem (mais tarde do que especificado). Entretanto, todo o
tempo do movimento para o movimento atual pode ser utilizado durante movimentos
pequenos e rápidos.

Valores típicos absolutos de precisão para conjunto de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjunto de saídas digitais +/- 2 ms.

8-TriggEquip-402 Manual de Referência do RAPID


Instruções TriggEquip

Sintaxe
TriggEquip
[ TriggData ’:=’ ] < variável (VAR) de triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) de num>
[ ’\’ Start ] ‘,’
[ EquipLag ’:=’ ] < expressão (IN) de num>
[ ’\’ DOp ’:=’ < variável (VAR) de signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) de signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) de signalao> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) de num>
[ ’\’ Inhibit ’:=’ < persistente (PERS) de bool> ] ‘,’

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição de outros triggs Instruções - TriggIO, TriggInt
Mais exemplos Data Types - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO
Configuração do tempo pré-definido Parâmetros do sistema - Robô
do evento

Manual de Referência do RAPID 8-TriggEquip-403


TriggEquip Instruções

8-TriggEquip-404 Manual de Referência do RAPID


Instruções TriggInt

TriggInt Define uma posição relacionada à interrupção


TriggInt é usado para definir condições e ações para a execução de uma rotina de inter-
rupção de uma posição no movimento de trajetória do robô.

O dado definido é usado para implementar em uma ou mais instruções TriggL, TriggC
ou TriggJ.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 5, intno1;
...
TriggL p1, v500, trigg1, z50, gun1;
TriggL p2, v500, trigg1, z50, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 é executada quando o TCP está numa


posição de 5 mm antes do ponto p1 ou p2 respectivamente.

Ponto inicial TriggL p1, v500, trigg1, fine, gun1; Ponto final p1 ou p2

5 mm

A interrupção é gerada
quando o ponto está aqui

Figura 27 Exemplo posição de interrupção relacionada.

Argumentos
TriggInt TriggData Distance [ \Start ] | [ \Time ]
Interrupt
TriggData DataType: triggdata

Variável para guardar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções TriggL, TriggC ou TriggJ subsequentes.

Distance DataType: num

Define a posição na trajetória onde a interrupção deve ser gerada.

Data Types do Sistema e Rotinas 2-TriggInt-405


TriggInt Instruções

Especifica a distância em mm (valores positivos) do ponto final da trajetória do


movimento (aplicável se o argumento \ Start ou \Time não está ligado).

Veja a seção entitulada Execução do programa para maiores detalhes.

[ \Start ] DataType: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

[ \Time ] DataType: switch

Usado quando o valor especificado para o argumento Distance é na verdade


tempo em segundos (valor positivo) ao invés de distância.

Interrupções de posições relacionadas no tempo somente podem ser usadas por


pouco tempo (< 1 s) antes que o robô alcance o ponto final da instrução. Veja a
seção entitulada Limitações para maiores detalhes.

Interrupt DataType: intnum

Variável usada para identificar uma interrupção.

Execução do programa
Quando rodando a instrução TriggInt, dado é guardado numa variável especificada para
o argumento TriggData e a interrupção que é especificada na variável para o argumento
Interrupt é ativada.

Depois, quando uma das instruções TriggL, TriggC ou TriggJ for executada, com
relação as definições em TriggInt, é aplicado o seguinte:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0,a interrução será


gerada quando o TCP do robô está aqui

Figura 28 Interrupção de posição relacionada num trajeto de canto.

2-TriggInt-406 Data Types do Sistema e Rotinas


Instruções TriggInt

A interrupção de posição relacionada será gerada quando o ponto inicial (ponto final)
já passou, se a distância especificada do ponto final (ponto inicial) não está dentro do
comprimento do movimento da atual instrução (Trigg...).

Exemplos
Este exemplo descreve programação de instruções que interagem para gerar inter-
rupções à interrupção relacionada:

VAR intnum intno2;


VAR triggdata trigg2;

- Declaração das variáveis intno2 e trigg2 (não pode ser iniciado).

CONNECT intno2 WITH trap2;

- Destinação dos números de interrupção que são guardados na variável intno2


- O número de interrução é dobrado para a rotina de interrupção trap2

TriggInt trigg2, 0, intno2;

- O número de interrução na variável intno2 é marcado quando usado


- A interrupção é ativada
- Condições de gatilhos definidas e número de interrupção são guardados na va-
riável trigg2

TriggL p1, v500, trigg2, z50, gun1;

- O robô se move para o ponto p1.


- Quando o TCP atinge o ponto p1 é gerada um interrupção e a rotina de inter-
rupção trap2 é executada.

TriggL p2, v500, trigg2, z50, gun1;

- O robô se move para o ponto p2


- Quando o TCP atinge o ponto p2 é gerada um interrupção e a rotina de inter-
rupção trap2 é executada mais uma vez.

IDelete intno2;

- O número de interrupção na variável intno2 é deletada.

Limitações
Os passos de interrupção à distância (sem o argumento \Time) se destinam a pontos flu-
tuantes (trajeto de canto). Os passos de interrupção à distância, usando pontos de
parada, resultam em menor precisão do que a especificada abaixo.

Data Types do Sistema e Rotinas 2-TriggInt-407


TriggInt Instruções

Os passos de interrupção em tempo útil (com o argumento \Time) se destinam a pontos


de parada. Estes passos, usando pontos flutuantes, resultam em menor precisão do que
a especificada abaixo.

Os passos de E/S em tempo útil somente podem ser especificados a partir do ponto final
do movimento. Este tempo não pode exceder o atual tempo de parada do robô, que é,
no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500mm/s, para o
IRB 4400 150 ms e 250 ms para o IRB6400). Se o tempo especificado for maior que o
tempo atual de parada, a interrupção será gerada de qualquer modo, mas não antes que
a parada seja iniciada (depois do especificado). Entretanto, o tempo completo do mov-
imento para o atual movimento pode ser utilizado durante movimentos lentos ou rápi-
dos.

Valores típicos absolutos de precisão para geração de interrupções +/- 5 ms.


Valores típicos repetidos de precisão para geração de interrupções +/- 2 ms.

Geralmente, há um atraso de 5 a 120 ms entre a geração da interrupção e a resposta,


dependendo do tipo de movimento que está sendo executado no momento da
interrupção.
Veja Características Básicas RAPID - Interrupções).

Para obter a melhor precisão quando ligando a saída em uma posição fixa ao longo da
trajetória do robô, você deve usar as instruções TriggIO ou TriggEquip em preferência
às instruções TriggInt com SetDO/SetGO/SetAO em uma rotina de interrupção.

Sintaxe
TriggInt
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ] ’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum> ’;’

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição da posição fixa E/S Instruções - TriggIO
Mais exemplos DataTypes - triggdata
Interrupções Características Básicas - Interrupções

2-TriggInt-408 Data Types do Sistema e Rotinas


Instruções TriggIO

TriggIO Define uma posição fixada por um evento de E/S


TriggIO é usado para definir as condições e as acções para ajustar um digital, um grupo
de digitais, ou um sinal de saída analógico numa posição fixa na trajetória do movi-
mento do robô.

Para obter uma posição fixa no passo de E/S, TriggIO compensa o tempo de espera no
sistema de controle (tempo de espera entre o robô e o servo) mas não um tempo de
espera qualquer no equipamento externo. Para compensar os dois tempos de espera uti-
lize TriggEquip.

O dado definido é usado para implementar em uma ou mais instruções subsequentes


TriggL, TriggC ou TriggJ.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 10 \DOp:=gun, 1;

TriggL p1, v500, gunon, z50, gun1;

O sinal de saída digital gun é ajustado para o valor 1 quando o TPC está 10 mm
antes do ponto p1.

Ponto inicial TriggL p1, v500, gunon, fine, gun1; Ponto final p1

10 mm

O sinal de saída gun é ligado


quando o ponto está aqui

Figura 29 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggIO TriggData Distance [ \Start ] | [ \Time ]
[ \DOp ] | [ \GOp ] | [\AOp ] | [\ProcID ] SetValue
[ \DODelay ]
TriggData DataType: triggdata

Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções subsequentes TriggL, TriggC ou TriggJ.

Manual de Referência do RAPID 8-TriggIO-409


TriggIO Instruções

Distance DataType: num

Define a posição na trajetória onde o evento E/S pode ocorrer.

Especificado a distância em mm (valores positivos) do ponto final da trajetória


do movimento (aplicável se o argumento \ Start ou \Time não está setado).

Para maiores detalhes, veja a seção entitulada Execução do Programa.

[ \Start ] DataType: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

[ \Time ] DataType: switch

Usado quando o valor especificado para o argumento Distance é na verdade


tempo em segundos (valor positivo) ao invés de distância.

Posição fixada para tempo somente podem ser usadas por pouco tempo (< 0.5 s)
antes que o robô alcance o ponto final da instrução. Para maiores detalhes, veja a
seção entitulada Limitações.

[ \DOp ] (Digital OutPut) DataType: signaldo

O nome do sinal, quando o sinal de saída digital pode ser mudado.

[ \GOp ] (Group OutPut) DataType: signalgo

O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.

[ \AOp ] (Analog Output) DataType: signalao

O nome do sinal, quando um sinal de saída analógico pode ser mudado.

[ \ProcID] (Process Identity) Data type: num

Não implementado para uso do cliente.

(A identidade do processo IPM para receber o evento. O seletor está especificado


no argumento SetValue.)

SetValue DataType: num

Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).

[ \DODelay] (Digital Output Delay) DataType: num

Tempo de atraso em segundos (valor positivo) para um sinal de saída digital ou


grupo de sinais de saída digital.

Somente usado para atrasar os sinais de saída digital, depois que o robô alcançou
a posição especificada. Não haverá atraso se o argumento for omitido.

O atraso não é sincronizado com o movimento.

8-TriggIO-410 Manual de Referência do RAPID


Instruções TriggIO

Execução do programa
Quando rodando a instrução TriggIO, a condição de gatilho é guardada numa variável
especificada para o argumento TriggData.

Quando uma das instruções TriggL, TriggC ou TriggJ é executada, em relação as defin-
ições em TriggIO, o seguinte é aplicado:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0, o sinal de saída é


ligado quando o ponto de trabalho do robô está aqui

Figura 30 Posição fixado de E/S num trajeto de canto.

A posição fixa E/S será produzida quando o ponto de partida (ponto final) correr, se a
distância especificada do ponto final (ponto de partida) não estiver incluída no compri-
mento do movimento da instrução atual (Trigg...).

Exemplos
VAR triggdata glueflow;

TriggIO glueflow, 1 \Start \AOp:=glue, 5.3;

MoveJ p1, v1000, z50, tool1;


TriggL p2, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1.

...
TriggL p3, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.

Manual de Referência do RAPID 8-TriggIO-411


TriggIO Instruções

Limitações
Os passos E/S à distância (sem o argumento \Time) se destinam a pontos flutuantes (tra-
jeto de canto). Os passos E/S à distância, usando pontos de parada, resultam em uma
precisão menor que a especificada abaixo.

Os passos E/S em tempo útil (com o argumento \Time) se destinam a pontos de parada.
Os passos E/S em tempo útil, usando pontos flutuantes, resultam em uma precisão
menor que a especificada abaixo. Estes passos só podem ser especificados a partir do
ponto final do movimento. Este tempo não pode exceder o tempo de frenagem atual do
robô que, é no máximo, aproximadamente de 0,5 s (valores típicos à velocidade de 500
mm/s para o IRB2400 150 ms e de 250 ms para o IRB6400). Se o tempo especificado
for superior ao tempo de frenagem atual, o passo será de qualquer forma produzido,
mas só depois da frenagem ser inicializada (mais tarde do que está especificado). No
entanto, todo o tempo de movimento relativo ao movimento atual pode ser usado
durante movimentos pequenos e rápidos.

Valores típicos absolutos de precisão para conjuntos de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjuntos de saídas digitais +/- 2 ms.

Sintaxe
TriggIO
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ]
[ ’\’ DOp ’:=’ < variável (VAR) do signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) do signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) do signalao> ] ‘,’
| [ ’\’ ProcID ’:=’ < expressão (IN) do num> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) do num>
[ ’\’ DODelay ’:=’ < expressão (IN) do num> ]

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição do tempo-posição passo E/S Instrução - TriggEquip
Definição de interrupções
de posição relacionada Instruções - TriggInt
Mais exemplos Tipos de dados - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO

8-TriggIO-412 Manual de Referência do RAPID


Instruções TriggJ

TriggJ Movimentos dos eixos do robô com eventos


TriggJ (Trigg Joint) é usado para ajustar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô se move rapidamente de um
ponto ao outro quando este movimento não for em linha reta.

Um ou mais (máx. 4) eventos podem ser definidos usando a instruções TriggIO,


TriggEquip ou TriggInt e posteriormente destas definições que são referenciadas na
instrução TriggJ.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveL p1, v500, z50, gun1;


TriggJ p2, v500, gunon, fine, gun1;

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

TriggJ p2, v500,gunon, fine, gun1; Ponto final p2


Ponto inicial p1

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 31 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggJ ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ]
ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

Data Types do Sistema e Rotinas 2-TriggJ-413


TriggJ Instruções

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

Zone DataType: zonedata

O dado de zona para o movimento. Dado de zona descreve o quão próximo ao


ponto de destino os eixos devem estar antes que a próxima instrução possa ser
executada.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução é relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.

2-TriggJ-414 Data Types do Sistema e Rotinas


Instruções TriggJ

Execução do programa
Veja a instrução MoveJ para informação sobre movimento eixo-a-eixo.

Tão logo as atividades de gatilho definidas são realizadas, as condições de gatilho


forem satisfeitas quando o robô estiver posicionado cada vez mais perto do ponto final,
. As condições de gatilho são satisfeitas a uma certa distância antes do ponto final da
instrução, ou a uma certa distância depois do ponto inicial da instrução, ou em um certo
ponto no tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, nen-
huma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggJ p1, v500, trigg1, fine, gun1;
TriggJ p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está


numa posição 0.1 s antes do ponto p1 ou p2 respectivamente.

Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".

Data Types do Sistema e Rotinas 2-TriggJ-415


TriggJ Instruções

Sintaxe
TriggJ
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’

Informações relacionadas
Descritas em:
Movimento linear com gatilhos Instruções - TriggL
Movimento circular com gatilhos Instruções - TriggC
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Movimento eixo-a-eixo Princípios de Movimentação -
Posicionamento na execução do
programa
Definição de velocidade Tipos de Dados - speeddata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objetos de trabalho Tipos de Dados - wobjdata
Movimentação em geral Princípios de Movimentação

2-TriggJ-416 Data Types do Sistema e Rotinas


Instruções TriggL

TriggL Movimentos lineares do robô com eventos


TriggL (Trigg Linear) é usado para ligar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô faz um movimento linear.

Um ou mais passos (4 no máximo) podem ser definidos usando as instruções TriggIO,


TriggEquip ou TriggInt e, em seguida, estas definições encontram-se referidas na
instrução TriggL.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveJ p1, v500, z50, gun1;


TriggL p2, v500, gunon, fine, gun1;

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

Ponto inicial p1 TriggL p2, v500, gunon, fine, gun1; Ponto final p2

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 32 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggL [\Conc] ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch

As instruções lógicas subsequentes são executadas imediatamente. Este argu-


mento é usado para diminuir o tempo de ciclo quando, por exemplo, comunicar
com o equipamento externo se a sincronização não for requerida. Também pode
ser usado para ajustar a execução da trajetória do robô, para evitar avisos do tra-
jeto de escanteio 50024, ou falhas de limite de Desaceleração 40082.

Quando usar o argumento \Conc, o número de instruções de movimento em


sucessão tem um limite de 5. Numa secção de programa que inclua StorePath-
RestoPath, não são permitidas instruções de movimento com o argumento \Conc.

Data Types do Sistema e Rotinas 2-TriggL-417


TriggL Instruções

Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado o ponto de parada espe-
cificado ou 100 ms antes da zona especificada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

2-TriggL-418 Data Types do Sistema e Rotinas


Instruções TriggL

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução está relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.

Tão logo as atividades de gatilho definidas são realizadas, as condições de gatilho são
satisfeitas quando o robô é posicionado cada vez mais perto do ponto final, . As con-
dições de gatilho são satisfeitas a uma certa distância antes do ponto final da instrução,
ou a uma certa distância depois do ponto inicial da instrução, ou em um certo ponto no
tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggL p1, v500, trigg1, fine, gun1;
TriggL p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está


numa posição 0.1 s antes do ponto p1 ou p2 respectivamente.

Data Types do Sistema e Rotinas 2-TriggL-419


TriggL Instruções

Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".

Sintaxe
TriggL
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Movimento circular com gatilhos Instruções - TriggC
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento linear Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento

2-TriggL-420 Data Types do Sistema e Rotinas


Instruções TRYNEXT

TRYNEXT Pula uma instrução que causou um erro


TRYNEXT é usada para saltar uma instrução que causou um erro. Ou seja, a próxima
instrução é executada.

Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg2:=0;
TRYNEXT;
ENDIF

Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o tratamento de erro, onde reg2 é colocado em 0. A
instrução TRYNEXT é então usada para continuar com a próxima instrução.

Execução do programa
Execução do programa continua com a instrução subsequente a instrução que causou
o erro.

Limitações
A instrução somente pode existir numa rotina do tratamento de erro.

Sintaxe
TRYNEXT’;’

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de erros

Data Types do Sistema e Rotinas 2-TRYNEXT-421


TRYNEXT Instruções

2-TRYNEXT-422 Data Types do Sistema e Rotinas


Instruções TuneReset

TuneReset Desliga o ajuste de servo


TuneReset é usada para desligar o ajuste de servo de todos os eixos do robô e unidades
mecânicas, retornando para seus valores normais.

Exemplo
TuneReset;

Desliga valores de servo de todos eixos, retornando para 100%.

Execução do programa
Os valores de servo de todos os eixos são desligados, retornando para 100%.

Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset

- na inicialização a frio
- quando um novo programa é carregado
- quando começando a execução do programa desde o início.

Sintaxe
TuneReset ’;’

Informações relacionadas
Descrito em:
Ajuste de Servo Instruções - TuneServo

Data Types do Sistema e Rotinas 2-TuneReset-423


TuneReset Instruções

2-TuneReset-424 Data Types do Sistema e Rotinas


Instruções TuneServo

TuneServo Ajuste de Servo


O TuneServo é usado para ajustar o comportamento dinâmico de eixos separados no
robô. Não é necessário usar TuneServo em circunstâncias normais, mas por vezes a
regulagem pode ser otimizada dependendo da configuração do robô e das característi-
cas de carregamento. Para os eixos externos, o TuneServo pode ser usado para
adaptação de carregamento.

O uso incorreto do TuneServo pode causar movimentos oscilantes ou torques que


podem danificar o robô. Você deve ter atenção a isto e ter muito cuidado quando
usar o TuneServo.

Evite utilizar os comandos TuneServo no momento em que o robô estiver em


movimento. Isso pode resultar em sobrecargas momentâneas da CPU, causando
paradas e indicação de erro.

Nota. Para se obter uma regulagem mais favorável, é essencial que sejam
utilizados os dados corretos do carregamento. Verifique isso antes de utilizar o
TuneServo.

Geralmente, os valores de regulagem mais favoráveis freqüentemente diferem entre os


diferentes robôs. A regulagem mais favorável pode, também, alterar com o tempo.

Melhorando a precisão do trajeto

Para a movimentação dos robôs em baixas velocidades, o TuneServo pode ser utilizado
para melhorar a precisão do trajeto através:

- Regulagem tune_kv e tune_ti (veja a descrição abaixo dos tipos de regulagem).


- Regulagem dos parâmetros de compensação da fricção (veja abaixo).

Esses dois métodos podem ser combinados.

Outras possibilidades para melhorar a precisão do trajeto:

- Diminuição da resolução do trajeto pode melhorar o trajeto. Nota: um valor


demasiadamente baixo da resolução do trajeto, causará problemas de
carregamento da CPU.
- A precisão de linhas retas pode ser melhorada, diminuindo a aceleração
utilizando AccSet. Exemplo: AccSet 20, 10.

Data Types do Sistema e Rotinas 2-TuneServo-425


TuneServo Instruções

Descrição

Tune_df

Tune_df é usado para reduzir as vibrações ou as oscilações na trajetória.

Existe sempre um valor adequado que pode variar dependendo da posição e compri-
mento de movimento. Este valor adequado pode ser encontrado por troca de ajuste de
servo em pequenos intervalos (1 - 2%) nos eixos que estão envolvidos neste comporta-
mento indesejado. Normalmente o ajuste adequado será encontrado entre 70% - 130%.
Valores mais baixos ou mais altos tem um efeito negativo e prejudicarão os movimen-
tos consideravelmente.

Quando o valor de ajuste do ponto inicial de um movimento difere consideravelmente


do valor de ajuste do ponto final, pode ser vantajoso em alguns casos usar um ponto
intermediário com uma zona para definir onde o valor de ajuste será trocado.

A seguir, alguns exemplos para o uso do TuneServo para ajustar o servo:

IRB6400, na aplicação de prensas (carga extendida e flexível), eixos 4 - 6: Reduz o


valor de ajuste de servo para os eixos do punho até o movimento aceitável. A alteração
no movimento não será notada até o valor adequado ser atingido. Um valor baixo pre-
judicará o movimento consideravelmente. Valor de ajuste típico é 25%.

IRB 6400, partes superiores da área de trabalho. O eixo 1 pode muitas vezes ser otimi-
zado com um valor de regulagem de 85% - 95%.

IRB 6400, movimento curto (<80 mm). O eixo 1 pode muitas vezes ser otimizado com
um valor de regulagem de 94% - 98%.

IRB 2400, com movimento de tração. Em alguns casos os eixos 2 - 3 podem ser otimi-
zados com um valor de regulagem de 110% - 130%. O movimento na trajetória pode
exigir um valor de regulagem diferente em comparação com o movimento nos ângulos
rectos da trajetória.

Trancos e oscilações podem ser reduzidos pelo decréscimo da aceleração ou pela rampa
de aceleração (AccSet), a qual irá, entretanto, aumentar o tempo do ciclo. Este é um
método alternativo para usar o TuneServo.

Tune_kp, tune_kv, tune_ti external axes

Este tipo de regulagem afeta o avanço da posição de controle (kp), o avanço da veloci-
dade de controle (kv) e o tempo de integração da velocidade de controle (ti) dos eixos
externos. São usados para adaptar os eixos externos a carregamentos de inércias difer-
entes. A regulagem base dos eixos externos pode igualmente ser simplificada usando
este tipo de regulagem.

2-TuneServo-426 Data Types do Sistema e Rotinas


Instruções TuneServo

Tune_kp, tune_kv, tune_ti robot axes

Para os eixos do robô, este tipo de regulagem têm outra importância e pode ser usada
para reduzir erros de trajetória numa velocidade reduzida (<500 mm/s).

Valores recomendados : tune_kv 100 - 180%, tune_ti 50 - 100%. Tune_kp não devem
ser usados para os eixos do robô. Os valores de tune_kv / tune_ti muito altos ou muito
baixos causam vibrações e oscilações. Nunca utilize este tipo de regulagem a uma
velocidade elevada ou quando a precisão de trajetória exigida estiver cumprida.

Ativando a regulagem tipo TUNE_DF com o valor de regulagem 90% no eixo 2 na


unidade mecânica IRB.

Compensação da fricção: tune_fric_lev and tune_fric_ramp

Esses tipos de regulagem podem ser utilizados para reduzir os erros do trajeto do robô
causados pela fricção e folga em velocidades baixas (10 - 200 mm/s). Esses erros de
trajeto aparecem quando um eixo do robô muda a direção do movimento. Ative a
compensação da fricção para um eixo, ajustando o parâmetro do sistema Friction ffw on
para TRUE (tópico: Robô, tipo: Parâmetros de controle).

O modelo de fricção é um nível constante com sinal oposto ao da direção da velocidade


do eixo. Friction ffw level (Nm) é o nível de fricção absoluta em velocidades (baixas)
e é maior do que Friction ffw ramp (rad/s) (veja figura).

fricção do motor em baixa velocidade (Nm)

Friction ffw level (Nm)

Friction ffw ramp (rad/s)

Velocidade do eixo do motor (rad/s)

Figure 33 Modelo de fricção

Tune_fric_lev sobrepõe-se ao valor do parâmetro do sistema Friction ffw level.

regulagemA regulagem Friction ffw level (utilizando tune_fric_lev) para cada eixo do
robô pode melhorar, consideravelmente, a precisão do trajeto dos robôs, na faixa de
velocidade de 20 - 100 mm/s. Para robôs maiores (especialmente o da família
IRB6400), o efeito será, entretanto, mínimo comparado com outras fontes de erros de
deslocamento que dominam esses robôs.

Tune_fric_ramp sobrepõe-se ao valor do parâmetro do sistema Friction ffw ramp. Na


maioria dos casos, não há necessidade de ajustar a Friction ffw ramp. O ajuste padrão
será apropriado.

Data Types do Sistema e Rotinas 2-TuneServo-427


TuneServo Instruções

Ajustar um eixo de cada vez. Altere o valor da regulagem em pequenas partes e


encontre o nível, que minimiza o erro de trajeto do robô, nas posições do trajeto em que
esse eixo específico muda a direção do movimento. Repita o mesmo procedimento para
o próximo eixo etc.

Os valores de regulagem final podem ser transferidos para os parâmetros do sistema.


Exemplo:

Friction ffw level = 1. Valor de regulagem final (tune_fric_lev) = 150%.

Ajuste Friction ffw level = 1,5 e o valor de regulagem = 100% (valor padrão) que
é equivalente.

Argumentos
TuneServo MecUnit Axis TuneValue [\Type]
MecUnit (Mechanical Unit) DataType: mecunit

O nome da unidade mecânica.

Axis DataType: num

O número do eixo atual na unidade mecânica (1 - 6).

TuneValue DataType: num

Valor de ajuste de servo em percentual (1 - 500). 100% é o valor normal.

[\Type] Data type: tunetype

Tipo do servo de regulagem. Os tipos disponíveis são TUNE_DF, TUNE_KP;


TUNE_KV e TUNE_TI. Estes tipos são pré-definidos no sistema com constantes.

Este argumento pode ser omitido quando usar o tipo de regulagem TUNE_DF.

Exemplo
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;

Ativando a regulagem tipo TUNE_DF com o valor de regulagem 110% no eixo


1 na unidade mecânica MHA160R1.

2-TuneServo-428 Data Types do Sistema e Rotinas


Instruções TuneServo

Execução do programa
O tipo de regulagem especificado e o valor de regulagem são ativados para os eixos
especificados. Este valor é aplicável para todos os movimentos até um novo valor ser
programado para o eixo atual, ou até os tipos de regulagem e valores para todos os
eixos serem reajustados usando a instrução TuneReset.

Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset

- na inicialização a frio
- quando um novo programa é carregado
- quando começando a execução do programa desde o início.

Limitações
Quaisquer ajustes de servo ativos retornarão sempre aos valores padrão em caso de
falha de energia. Essa limitação pode ser contornada no programa do usuário, ao
reiniciar após a falha de energia.

Sintaxe
TuneServo
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’,’
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[TuneValue ’:=’ ] < expressão (IN) do num> ’;’
[’\’ Type ’:=’ <expressão (IN) do tunetype>]’;’

Informações relacionadas
Descrito em:
Outros ajustes de movimento Sumário Rapid - Motion Settings
Tipos do servo de regulagem Data Types - tunetype
Reajustar todos os servos de regulagem Instruções - TuneReset
Regulagem dos eixos externos Parâmetros do sistema - Robô
Compensação da fricção Parâmetros do Sistema - Robô

Data Types do Sistema e Rotinas 2-TuneServo-429


TuneServo Instruções

2-TuneServo-430 Data Types do Sistema e Rotinas


Instruções UnLoad

UnLoad Descarregar um módulo de um programa durante a


execução
UnLoad é usado para descarregar um módulo de um programa na memória durante a
execução.

O módulo do programa tem de ter sido previamente carregado na memória do pro-


grama usando a instrução Load ou StartLoad - WaitLoad.

Exemplo
UnLoad ram1disk \File:="PART_A.MOD";

Descarregue o módulo do programa PART_A.MOD da memória do programa,


que foi previamente carregado na memória do programa com Load. (Veja
instruções Load). (ram1disk é uma string constante pré-definida "ram1disk:").

Argumentos
UnLoad [\Save] FilePath [\File]
[\Save] Data type: switch

Se esse argumento for usado, o módulo do programa será salvo antes do início
do descarregamento.
O módulo do progama será salvo no local original especificado na instrução
Load ou StartLoad.

FilePath Data type: string

O arquivo de trajetória e o nome do arquivo que vai ser descarregado da memória


do programa. O arquivo de trajetória e o nome do arquivo devem ser os mesmos
da instrução Load ou StartLoad previamente executada. O nome do arquivo será
excluído quando for usado o argumento \File.

[\File] Data type: string

Quando o nome do arquivo é excluído no argumento FilePath, este passo deve


ser definido com este argumento. O nome do arquivo deve ser o mesmo daquele
que foi utilizado previamente na instrução Load ou StartLoad.

Execução do programa
Para conseguir executar a instrução UnLoad no programa, uma instrução Load ou
StartLoad - WaitLoad com o mesmo caminho e nome deve ter sido executado antes no

Manual de Referência do RAPID 8-UnLoad-431


UnLoad Instruções

programa.

A execução do programa espera que o módulo do programa acabe o carregamento antes


de passar à instrução seguinte.

Após o módulo do programa ter sido descarregado, os restantes módulos do programa


serão lincados .

Para mais detalhes, consulte as instruções Load ou StartLoad - WaitLoad.

Exemplos
UnLoad "ram1disk:DOORDIR/DOOR1.MOD";

Descarregue o módulo do programa DOOR1.MOD da memória do programa,


que foi previamente carregado na memória do programa com Load. (See instruc-
tions
Load).

UnLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que acima, mas com outra sintaxe.

Unload \Save, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que acima, mas salva o módulo do programa antes de descarregar.

Limitações
Não é permitido descarregar um módulo de um programa que está sendo executado.

As rotinas TRAP, os passos do sistema E/S e outras tarefas do programa não podem ser
executados durante o descarregamento.

Evite usar um disquete flexível para carregamento uma vez que a leitura de um disquete
flexível demora muito tempo.

Uma parada do programa durante a execução da instrução UnLoad resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.

Tratamento de erros
Se o arquivo na instrução UnLoad não puder ser descarregado por causa de uma
execução que está correndo no módulo ou por causa de uma trajetória errada (módulo
não carregado com Load ou StartLoad) então a variável do sistema ERRNO é ajustada
para ERR_UNLOAD. Esse erro pode ser tratado na rotina de tratamento de erros.

8-UnLoad-432 Manual de Referência do RAPID


Instruções UnLoad

Sintaxe
UnLoad
[’\’Save ’,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’

Informações relacionadas
Descrito em:
Carregar o módulo de um programa Instruções - Load
Instruções - StartLoad-WaitLoad
Aceitar referências não resolvidas Parâmetros do Sistema - Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef

Manual de Referência do RAPID 8-UnLoad-433


UnLoad Instruções

8-UnLoad-434 Manual de Referência do RAPID


Instruções WaitDI

WaitDI Espera um sinal de entrada digital


WaitDI (Wait Digital Input) é usado para esperar até que um sinal de entrada digital seja
ligado.

Exemplo
WaitDI di4, 1;

A execução do programa continua somente após a entrada di4 ser ligada.

WaitDI grip_status, 0;

A execução do programa continua somente após a entrada grip_status ser desli-


gada.

Argumentos
WaitDI Signal Value [\MaxTime] [\TimeFlag]
Signal DataType: signaldi

O nome do sinal.

Value DataType: dionum

O valor desejado para o sinal.

[\MaxTime] (Maximum Time) DataType: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja alcançada, um tratamento de erro será
chamado, se existir um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver um tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) DataType: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.

Data Types do Sistema e Rotinas 2-WaitDI-435


WaitDI Instruções

Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.

Quando o robô está esperando, o tempo é supervisionado, e se este excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
caso o tempo exceda, caso contrário ele será colocado em FALSE.

Sintaxe
WaitDI
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ Value ’:=’ ] < expressão (IN) do dionum >
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime

2-WaitDI-436 Data Types do Sistema e Rotinas


Instruções WaitDO

WaitDOEspera até que um sinal de saída digital seja ligado


WaitDO (Wait Digital Output) é usado para esperar até que um sinal de saída digital
seja ligado.

Exemplo
WaitDO do4, 1;

A execução do programa continua somente após a entrada do4 ser ligada.

WaitDO grip_status, 0;

A execução do programa continua somente após a saída grip_status ser religada.

Argumentos
WaitDO Signal Value [\MaxTime] [\TimeFlag]
Signal Data type: signaldo

O nome do sinal.

Value Data type: dionum

O valor desejado para o sinal.

[\MaxTime] (Maximum Time) Data type: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja alcançada, um tratamento de erro será
chamado, se existir um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver um tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) Data type: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.

Data Types do Sistema e Rotinas 2-WaitDO-437


WaitDO Instruções

Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.

Quando o robô está esperando, o tempo é supervisionado, e se este excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
caso o tempo exceda, caso contrário ele será colocado em FALSE.

Sintaxe
WaitDO
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ Value ’:=’ ] < expression (IN) of dionum >
[’\’MaxTime ’:=’<expression (IN) of num>]
[’\’TimeFlag’:=’<variable (VAR) of bool>] ’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime

2-WaitDO-438 Data Types do Sistema e Rotinas


Instruções WaitLoad

WaitLoad Conecta o módulo carregado à tarefa


WaitLoad é utilizada para conectar o módulo (caso este seja carregado com
StartLoad) à tarefa de programa.

O módulo carregado deve ser conectado à tarefa de programa com a instrução


WaitLoad antes de qualquer de seus símbolos/rotinas ser usado.

O módulo de programa carregado será adicionado aos módulos já existentes na


memória de programa.

Essa instrução também pode ser combinada com a função para descarregar algum
outro módulo de programa para minimizar o número de vínculos (1 em vez de 2).

Exemplo
VAR loadsession load1;
...
StartLoad "ram1disk:PART_A.MOD", load1;
MoveL p10, v1000, z50, tool1 \WObj:=wobj1;
MoveL p20, v1000, z50, tool1 \WObj:=wobj1;
MoveL p30, v1000, z50, tool1 \WObj:=wobj1;
MoveL p40, v1000, z50, tool1 \WObj:=wobj1;
WaitLoad load1;
%"routine_x"%;
UnLoad "ram1disk:PART_A.MOD";

Carregue o módulo de programa PART_A.MOD a partir de ram1disk na


memória de programa. Paralelamente, mova o robô. Em seguida, conecte o novo
módulo de programa à tarefa de programa e chame a rotina routine_x do módulo
PART_A.

Argumentos
WaitLoad [\UnloadPath] [\UnloadFile] LoadNo
[\UnloadPath] Tipo de dados: string

O caminho e o nome do arquivo que será descarregado da memória de programa.


O nome do arquivo deve ser excluído quando o argumento \UnloadFile é usado.

Data Types do Sistema e Rotinas 2-WaitLoad-439


WaitLoad Instruções

[\UnloadFile] Tipo de dados: string

Quando o nome do arquivo é excluído no argumento \UnloadPath, ele deve ser


definido com esse argumento.

LoadNo Tipo de dados: loadsession

Isso é uma referência à sessão de carregamento, obtida pela instrução


StartLoad, para conectar o módulo de programa carregado à tarefa de programa.

Execução do programa
A instrução WaitLoad primeiro irá esperar pela conclusão do carregamento se este
ainda não tiver sido concluído e, em seguida, ele será vinculado e inicializado. A
inicialização do módulo carregado define todas as variáveis em nível de módulo com
seus valores de inicialização.

Referências não resolvidas serão aceitas se o parâmetro de sistema para Tasks/BindRef


estiver definido como NO. No entanto, quando o programa for iniciado ou a função da
unidade de programação Program Window/File/Check Program for utilizada, nenhuma
verificação de referências não resolvidas será feita se BindRef = NO. Haverá um erro
em tempo de execução ao executar uma referência não resolvida.

Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é utilizar Vinculação posterior. Isso torna possível especificar a rotina a ser
chamada com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o
parâmetro BindRef pode ser definido como YES (comportamento padrão). O método
de Vinculação posterior é preferível.

Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve ser
feito a partir do módulo principal, que está sempre presente na memória de programa
durante a execução.

Exemplos
StartLoad "ram1disk:DOORDIR/DOOR2.MOD", load1;
...
WaitLoad \UnloadPath:="ram1disk:DOORDIR/DOOR1.MOD", load1;

Carregue o módulo de programa DOOR2.MOD a partir de ram1disk no diretório


DOORDIR para a memória de programa e conecte o novo módulo à tarefa. O
módulo de programa DOOR1.MOD será descarregado da memória de programa.

StartLoad "ram1disk:" \File:="DOORDIR/DOOR2.MOD", load1;


! O robô pode fazer algum outro trabalho
WaitLoad \UnloadPath:="ram1disk:" \File:= "DOORDIR/DOOR1.MOD", load1;

equivale às instruções abaixo, mas o robô pode fazer algum outro trabalho
durante o tempo de carregamento e também fazê-lo mais rapidamente (somente
um vínculo).
2-WaitLoad-440 Data Types do Sistema e Rotinas
Instruções WaitLoad

Load "ram1disk:" \File:="DOORDIR/DOOR2.MOD";


UnLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

Tratamento de erros
Se não for possível localizar o arquivo especificado na instrução StartLoad, a variável
de sistema ERRNO será definida como ERR_FILNOTFND na execução de WaitLoad.

Se o argumento LoadNo referir-se a uma sessão de carregamento desconhecida, a var-


iável de sistema ERRNO será definida como ERR_UNKPROC.

Se o módulo já estiver carregado na memória de programa, a variável de sistema


ERRNO será definida como ERR_LOADED.

Os erros seguintes só podem ocorrer quando o argumento \UnloadPath é utilizado na


instrução WaitLoad:

- Se o módulo de programa especificado no argumento \UnloadPath não puder


ser descarregado devido a uma operação em andamento dentro do módulo, a
variável de sistema ERRNO será definida como ERR_UNLOAD.
- Se o módulo de programa especificado no argumento \UnloadPath não puder
ser descarregado devido ao módulo de programa não ter sido carregado com
Load ou StartLoad-WaitLoad a partir do programa RAPID, a variável de sis-
tema ERRNO também será definida como ERR_UNLOAD.

Esses erros poderão ser tratados na rotina de tratamento de erros.

Sintaxe
WaitLoad
[ [ ‘\’ UnloadPath ‘:=‘ <expressão (IN) de string> ]
[ ‘\’ UnloadFile ‘:=‘ <expressão (IN) de string> ] ‘,’ ]
[ LoadNo ‘:=‘ ] <variável (VAR) de loadsession> ‘;’

Data Types do Sistema e Rotinas 2-WaitLoad-441


WaitLoad Instruções

Informações relacionadas
Carregar um módulo de programa
durante a execução Instruções - StartLoad
Carregar sessão Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema -
Controller/Task/BindRef

2-WaitLoad-442 Data Types do Sistema e Rotinas


Instruções VelSet

VelSet Muda a velocidade programada


VelSet é usado para aumentar ou diminuir a velocidade programada para todas as
instruções de posicionamento subsequentes. Esta instrução também é usada para ma-
ximizar a velocidade.

Exemplo
VelSet 50, 800;

Todas as velocidades programadas são diminuídas em 50% do valor da


instrução. A velocidade do TCP não é, entretanto, permitida exceder 800 mm/s.

Argumentos
VelSet Override Max
Override DataType: num

Velocidade desejada como uma porcentagem da velocidade programada. 100%


corresponde a velocidade programada.

Max DataType: num

Velocidade máxima do TCP em mm/s.

Execução do programa
A velocidade programada de todas as instruções de posicionamento subsequentes é
afetada até uma nova instrução VelSet ser executada.

O argumento Override afeta:

- Todos os componentes de velocidade (TCP, orientação, rotação e eixos externos


lineares) em speeddata.
- A velocidade programada ultrapassa a instrução de posicionamento (o argu-
mento \V).
- Movimentos temporizados.

O argumento Override não afeta:

- A velocidade de soldagem em welddata.


- A velocidade de aquecimento e preenchimento em seamdata.

O argumento Max somente afeta a velocidade do TCP.

Data Types do Sistema e Rotinas 2-VelSet-443


VelSet Instruções

Os valores default para Override e Max são 100% e 5000 mm/s respectivamente. Estes
valores são automaticamente ligados

- numa partida a frio


- quando um novo programa é carregado
- quando começa a execução do programa no início.

Exemplo
VelSet 50, 800;
MoveL p1, v1000, z10, tool1;
MoveL p2, v2000, z10, tool1;
MoveL p3, v1000\T:=5, z10, tool1;

A velocidade é 500 mm/s para ponto p1 e 800 mm/s para p2. Isso dá 10 segundos
para mover de p2 para p3.

Limitações
A velocidade máxima não é levada em consideração quando o tempo é especificado na
instrução de posicionamento.

Sintaxe
VelSet
[ Override ’:=’ ] < expressão (IN) do num > ’,’
[ Max ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Definição de velocidade DataTypes - speeddata
Instruções de posicionamento Sumário RAPID - Movimentação

2-VelSet-444 Data Types do Sistema e Rotinas


Instruções WHILE

WHILE Repetir enquanto ...


WHILE é usado quando um número de instruções devem ser repetidas enquanto uma
condição é satisfeita.

Se for possível determinar previamente o número de repetições, a instrução FOR pode


ser usada.

Exemplo
WHILE reg1 < reg2 DO
...
reg1 := reg1 +1;
ENDWHILE

Repete as instruções no ciclo WHILE enquanto reg1 < reg2.

Argumentos
WHILE Condition DO ... ENDWHILE
Condition DataType: bool

A condição que deve ser satisfeita para que as instruções no ciclo WHILE sejam
executadas.

Execução do programa
1. A condição é calculada. Se a condição não é satisfeita, o ciclo WHILE termina e a
execução do programa continua com a instrução seguinte a ENDWHILE.
2. As instruções no loop WHILE são executadas.
3. O ciclo WHILE é repetido, começando pela primeira instrução.

Sintaxe
(EBNF)
WHILE <expressão condicional> DO
<lista de instrução>
ENDWHILE

Manual de Referência do RAPID 8-WHILE-445


WHILE Instruções

Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões

8-WHILE-446 Manual de Referência do RAPID


Instruções Write

Write Escreve em um arquivo tipo texto ou canal serial


Write é usado para escrever em um arquivo tipo texto ou canal serial. O valor de certo
dado pode ser escrito como um texto.

Exemplos
Write logfile, "Execução iniciada";

O texto Execução iniciada foi escrito no arquivo com nome de referência logfile.

Write logfile, "Nr de partes produzidas="\Num:=reg1;

O texto Nr de partes produzidas=5, por exemplo, foi escrito no arquivo com


nome de referência logfile (assumindo que o conteúdo de reg1 é 5).

Argumentos
Write IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient]
[\NoNewLine]
IODevice DataType: iodev

O nome (referência) do atual arquivo ou canal serial.

String DataType: string

O texto a ser escrito.

[\Num] (Numeric) DataType: num

Os dados cujos valores numéricos são escritos após o texto.

[\Bool] (Boolean) DataType: bool

Os dados cujos valores booleanos são escritos após o texto.

[\Pos] (Position) DataType: pos

Os dados cuja posição é escrita após o texto.

[\Orient] (Orientation) DataType: orient

Os dados cuja orientação é escrita após o texto.

[\NoNewLine] DataType: switch

Omite o caracter de linha de alimentação que normalmente indica o fim do texto.

Data Types do Sistema e Rotinas 2-Write-447


Write Instruções

Execução do programa
O texto é escrito para um arquivo ou canal serial especificado. Se o argumento \NoN-
ewLine não é usado, um caracter de linha de alimentação (LF) também é escrito.

Se um dos argumentos \Num, \Bool, \Pos ou \Orient é usado, seu valor é convertido
para um texto antes de ser adicionado ao primeiro texto. A conversão de valor para
texto ocorre como segue:

Argumento Valor Texto


\Num 23 "23"
\Num 1.141367 "1.14137"
\Bool TRUE "TRUE"
\Pos [1817.3,905.17,879.11] "[1817.3,905.17,879.11]"
\Orient [0.96593,0,0.25882,0] "[0.96593,0,0.25882,0]"

O valor é convertido em um “string” com formato RAPID padrão. Isto significa em


princípio 6 dígitos importantes. Se a parte decimal for menor que 0.000005 ou maior
que 0.999995, o número é arredondado para um inteiro.

Exemplo
VAR iodev printer;
.
Open "sio1:", printer\Write;
WHILE DInput(stopprod)=0 DO
produce_part;
Write printer, "Parte produzida ="\Num:=reg1\NoNewLine;
Write printer, " "\NoNewLine;
Write printer, CTime();
ENDWHILE
Close printer;

Uma linha, incluindo o número da parte produzida e da hora atual, é impressa a


cada ciclo. A impressora é conectada ao canal serial sio1:. A mensagem impressa
pode ser parecida com esta:

Parte produzida = 473 09:47:15

Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e não podem
ser usados simultanemente na mesma instrução.

Esta instrução somente pode ser usada por arquivos ou canais seriais que foram abertos
para escrita.

2-Write-448 Data Types do Sistema e Rotinas


Instruções Write

Tratamento de Erro
Se um erro ocorrer durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode ser então tratado em uma rotina de tratamento de erro.

Sintaxe
Write
[IODevice’:=’] <variável (VAR) do iodev>’,’
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]
[’\’NoNewLine]’;’

Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-Write-449


Write Instruções

2-Write-450 Data Types do Sistema e Rotinas


Instruções WriteBin

WriteBin Escreve para um canal serial binário


WriteBin é usado para escrever um número de bytes para um canal serial binário.

Exemplo
WriteBin channel2, text_buffer, 10;

10 caractéres da lista text_buffer são escritos para um canal referido ao channel2.

Argumentos
WriteBin IODevice Buffer NChar
IODevice DataType: iodev

Nome (referência) do atual canal serial.

Buffer DataType: array of

num

A lista (variedade) contendo os números (caractéres) a serem escritos.

NChar (Number of Characters) DataType: num

O número de caractéres a ser escrito do Buffer.

Execução do programa
O número especificado de números (caractéres) na lista a ser escrita para o canal serial.

Limitações
Esta instrução somente pode ser usada para canais seriais que foram abertos para lei-
tura e escrita binária.

Tratamento de Erro
Se um erro ocorre durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode então ser tratado em uma rotina de tratamento de erro.

Data Types do Sistema e Rotinas 2-WriteBin-451


WriteBin Instruções

Exemplo
VAR iodev channel;
VAR num out_buffer{20};
VAR num input;
VAR num nchar;
Open "sio1:", channel\Bin;

out_buffer{1} := 5; ( enq )
WriteBin channel, out_buffer, 1;
input := ReadBin (channel \Time:= 0.1);

IF input = 6 THEN ( ack )


out_buffer{1} := 2; ( stx )
out_buffer{2} := 72; ( ’H’ )
out_buffer{3} := 101; ( ’e’ )
out_buffer{4} := 108; ( ’l’ )
out_buffer{5} := 108; ( ’l’ )
out_buffer{6} := 111; ( ’o’ )
out_buffer{7} := 32; (’’)
out_buffer{8} := StrToByte("w"\Char); ( ’w’ )
out_buffer{9} := StrToByte("o"\Char); ( ’o’ )
out_buffer{10} := StrToByte("r"\Char); ( ’r’ )
out_buffer{11} := StrToByte("l"\Char); ( ’l’ )
out_buffer{12} := StrToByte("d"\Char); ( ’d’ )
out_buffer{13} := 3; ( etx )
WriteBin channel, out_buffer, 13;
ENDIF

O "string" de texto Hello world (com caracteres de controle associados) é escrito


em um canal serial. A função StrToByte é usada nos mesmos casos para converter
um "string" em um dado de byte (num). ???

Sintaxe
WriteBin
[IODevice’:=’] <variável (VAR) do iodev>’,’
[Buffer’:=’] <variedade {*} (IN) do num>’,’
[NChar’:=’] <expressão (IN) do num>’;’

2-WriteBin-452 Data Types do Sistema e Rotinas


Instruções WriteBin

Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação
Converter um "string" em dados de byte Funções - StrToByte
Dados de byte Tipos de dados - byte

Data Types do Sistema e Rotinas 2-WriteBin-453


WriteBin Instruções

2-WriteBin-454 Data Types do Sistema e Rotinas


Instruções WriteAnyBin

WriteAnyBin Escreve dados em um


canal serial ou arquivo binário
WriteAnyBin (Write Any Binary) é usado para escrever qualquer tipo de dados em um
arquivo ou canal serial binário.

Exemplo
VAR iodev channel2;
VAR orient quat1 := [1, 0, 0, 0];
...
Open "sio1:", channel2 \Bin;
WriteAnyBin channel2, quat1;

O dado orient quat1 é escrito no canal referido por channel2.

Argumentos
WriteAnyBin IODevice Data
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial


binário para a operação de escrita.

Data Tipo de dados: ANYTYPE

O VAR ou PERS contendo o dado a ser escrito.

Execução do programa
Tantos bytes quantos forem necessários para o dado especificado são escritos no
arquivo ou canal serial binário especificado.

Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para escrita binária.

O dado a ser escrito por essa instrução precisa ter um tipo de dados value de tipo
atomic, string ou record. Os tipos de dados semi-value e non-value não podem ser usa-
dos.

Dados de matrizes não podem ser usados.

Data Types do Sistema e Rotinas 2-WriteAnyBin-455


WriteAnyBin Instruções

Tratamento de erros
Se ocorrer um erro durante a escrita, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.

Exemplo
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;

Open "sio1:", channel\Bin;

! Envia o caractere de controle enq


WriteStrBin channel, "\05";
! Espera o caractere de controle ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Envia a posição atual do robô
cur_robt := CRobT(\Tool:= tool1\WObj:= wobj1);
WriteAnyBin channel, cur_robt;
ENDIF

Close channel;

A posição atual do robô é escrita em um canal serial binário.

Sintaxe
WriteAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>’;’

Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos
Ler dados de um canal serial Funções - ReadAnyBin
ou arquivo binário

2-WriteAnyBin-456 Data Types do Sistema e Rotinas


Instruções WriteStrBin

WriteStrBinEscrever uma string para um canal serial binário


WriteStrBin (Escrever String Binária) é usado para escrever uma string para um canal
serial binário ou arquivo bináro.

Exemplo
WriteStrBin channel2, "Hello World\0A";

A string "Hello World\0A" é escrita para o canal referido como channel2. A


cadeia é, neste caso, terminada com uma linha nova \0A. Todos os caracteres e
valores hexadecimais escritos com WriteStrBin permanecerão inalterados pelo
sistema.

Argumentos
WriteStrBin IODevice Str
IODevice Tipo de dados: iodev

Nome (referência) do canal serial corrente.

Str (String) Tipo de dados: string

O texto a ser escrito.

Execução do programa
A string de texto é escrita para o canal serial ou arquivo especificado.

Limitações
Esta instrução pode somente ser usada para canais seriais ou arquivos que tenham sido
abertos para leitura ou escrita binária.

Tratamento de erros
Se um erro ocorrer durante a escrita, a variável de sistema ERRNO é ajustada para
ERR_FILEACC. Este erro pode ser tratado no tratamento de erros.

Data Types do Sistema e Rotinas 2-WriteStrBin-457


WriteStrBin Instruções

Exemplo
VAR iodev channel;
VAR num input;
Open "sio1:", channel\Bin;

! Send the control character enq


WriteStrBin channel, "\05";
! Wait for the control character ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Send a text starting with control character stx and ending with etx
WriteStrBin channel, "\02Hello World\03";
ENDIF

Close channel;

A string de texto Hello World (com caracteres de controlo associados em hexa-


decimais) é escrita para um canal serial binário.

Sintaxe
WriteStrBin
[IODevice’:=’] <variável (VAR) de iodev>’,’
[Str’:=’] <expressão (IN) de string>’;’

Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação

2-WriteStrBin-458 Data Types do Sistema e Rotinas


Instruções WaitTime

WaitTime Espera um tempo determinado


WaitTime é usado para esperar um tempo determinado. Esta instrução também pode ser
usada para fazer com que o robô e eixos externos fiquem parados.

Exemplo
WaitTime 0.5;

A execução do programa espera 0.5 segundo.

Argumentos
WaitTime [\InPos] Time
[\InPos] Tipo de dado: switch

Se este argumento é usado, o robô e eixos externos devem estar parados antes do
início da contagem do tempo de espera.

Time Tipo de dadoe: num

O tempo, expresso em segundos, que a execução do programa espera.

Execução do programa
A execução do programa pára temporariamente por um tempo determinado. Contudo
tratamentos de interrupção e outras funções similares ainda estão ativas.

Exemplo
WaitTime \InPos,0;

A execução do programa espera até que o robô e eixos externos fiquem parados.

Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada no ponto final, para que seja possível reiniciar nesta instrução seg-
uida de uma falha de energia.

O argumento \Inpos não pode ser usado juntamente com SoftServo.

Data Types do Sistema e Rotinas 2-WaitTime-459


WaitTime Instruções

Sintaxe
WaitTime
[’\’InPos’,’]
[Time ’:=’] <expressão (IN) do num>’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um sinal de entrada digital Instruções - WaitDI

2-WaitTime-460 Data Types do Sistema e Rotinas


Instruções WaitUntil

WaitUntil Espera uma condição ser satisfeita


WaitUntil é usado para esperar até que uma condição lógica seja satisfeita; por exem-
plo, pode esperar até que uma ou mais entradas sejam ligadas.

Exemplo
WaitUntil di4 = 1;

A execução do programa continua somente após a entrada di4 ser ligada.

Argumentos
WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag]
[\InPos] DataType: switch

Se este argumento é usado, o robô e eixos externos devem estar parados antes
que a condição comece a ser avaliada.

Cond DataType: bool

A expressão lógica que é esperada.

[\MaxTime] DataType: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja satisfeita, um tratamento de erro será cha-
mado, caso exista um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) DataType: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se a condição programada não é satisfeita na execução da instrução WaitUntil, a con-
dição é verificada novamente a cada 100 ms.

Quando o robô está esperando, o tempo é supervisionado, e se ele excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
se o tempo exceder, caso contrário ele será colocado em FALSE.

Data Types do Sistema e Rotinas 2-WaitUntil-461


WaitUntil Instruções

Exemplos
VAR bool timeout;
WaitUntil start_input = 1 AND grip_status = 1\MaxTime := 60
\TimeFlag := timeout;
IF timeout THEN
TPWrite "Nenhuma ordem recebida dentro do tempo esperado";
ELSE
start_next_cycle;
ENDIF

Se as duas condições de entrada não são alcançadas dentro de 60 segundos, uma


mensagem de erro será mostrada no display da unidade de programação.

WaitUntil \Inpos, di4 = 1;

A execução do programa espera até que o robô pare de se mover e a entrada di4
seja ligada.

Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada com um ponto final, para que seja possível reiniciar nesta instrução
seguida de uma falha de energia.

Sintaxe
WaitUntil
[’\’InPos’,’]
[Cond ’:=’] <expressão (IN) do bool>
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’

Informações relacionadas
Descrito em:
Espera um sinal de entrada digital Instruções - WaitDI
Espera um tempo determinado Instruções - WaitTime
Expressões Características Básicas - Expressões

2-WaitUntil-462 Data Types do Sistema e Rotinas


Instruções WZBoxDef

WZBoxDef Definir uma zona global em forma de caixa


WZBoxDef (Definição de Zona Global em Forma de Caixa) é usada para definir uma
zona global que tem a forma de uma caixa quadrada e com todos os lados paralelos aos
eixos do Sistema de Coordenadas Global.

Exemplo
.

canto2

Z
Y Caixa

canto1
Min. 10 mm
X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos corner1:=[200,100,100];
CONST pos corner2:=[600,400,400];
...
WZBoxDef \Inside, volume, corner1, corner2;

Definir uma caixa quadrada com coordenadas paralelas aos eixos do sistema de
coordenadas global e definida pelos cantos corner1 e corner2 opostos.

Argumentos
WZBoxDef (\Inside) | (\Outside) Shape LowPoint HighPoint
\Inside Tipo de dados: switch

Definir o volume interno da caixa.

\Outside Tipo de dados: switch

Definir o volume externo da caixa (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados para o sistema).

Manual de Referência do RAPID 8-WZBoxDef-463


WZBoxDef Instruções

LowPoint Tipo de dados: pos

Posição (x,y,x) em mm definindo um dos cantos da caixa.

HighPoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o canto diagonalmente oposto ao canto anterior.

Execução do programa
A definição da caixa é armazenada na variável do tipo shapedata (argumento Shape),
para uso futuro na instrução WZLimSup ou WZDOSet.

Limitações
As posições LowPoint e HighPoint têm de ser cantos opostos válidos (com valores de
coordenadas x, y e z diferentes).

Se o robô é usado para apontar LowPoint ou HighPoint, o objeto de trabalho wobj0 tem
de estar ativo (uso do componente trans em robtarget, por exemplo, trans como argu-
mento).

Sintaxe
WZBoxDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[LowPoint’:=’]<expressão (IN) de pos>’,’
[HighPoint’:=’]<expressão (IN) de pos>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando supervisão de limite de zona global Instruções - WZLimSup
Ativando conjunto de saídas digitais de zona
global Instruções - WZDOSet

8-WZBoxDef-464 Manual de Referência do RAPID


Instruções WZCylDef

WZCylDef Definir uma zona global em forma de cilindro


WZCylDef (Definição de Zona Global em Forma de Cilindro) é usada para definir uma
zona global que tem a forma de um cilindro e com o eixo do cilindro paralelo ao eixo
z do Sistema de Coordenadas Global.

Exemplo

R2

H2
Z
Y

C2

X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos C2:=[300,200,200];
CONST num R2:=100;
CONST num H2:=200;
...
WZCylDef \Inside, volume, C2, R2, H2;

Definir um cilindro com o centro do circulo inferior em C2, raio R2 e altura H2.

Argumentos
WZCylDef (\Inside) | (\Outside) Shape CentrePoint Radius Height
\Inside Tipo de dados: switch

Definir o volume interno do cilindro.

\Outside Tipo de dados: switch

Definir o volume externo do cilindro (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados do sistema).

Data Types do Sistema e Rotinas 2-WZCylDef-465


WZCylDef Instruções

CentrePoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o centro de uma das bases do cilindro.

Radius Tipo de dados: num

O raio do cilindro em mm.

Height Tipo de dados: num

A altura em mm do cilindro.
Se positiva (direção +z), o argumento CentrePoint é o centro do circulo inferior
do cilindro (como no exemplo acima).
Se negativa (direção -z), o argumento CentrePoint é o centro do circulo superior
do cilindro.

Execução do programa
A definição do cilindro é armazenada na variável do tipo shapedata (argumento
Shape), para uso futuro na instrução WZLimSup ou WZDOSet.

Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 tem de estar
ativo (uso do componente trans em robtarget, por exemplo, p1.trans como argumento).

Sintaxe
WZCylDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’,’
[Height’:=’]<expressão (IN) de num>’;’

2-WZCylDef-466 Data Types do Sistema e Rotinas


Instruções WZCylDef

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Ativando espaço de trabalho restrito Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet

Data Types do Sistema e Rotinas 2-WZCylDef-467


WZCylDef Instruções

2-WZCylDef-468 Data Types do Sistema e Rotinas


Instruções WZDisable

WZDisable Desativar a supervisão da zona global temporária


WZDisable (Desativar Zona Global) é usada para desativar a supervisão de uma zona
global temporária, previamente definida para parar o movimento ou para ajustar uma
saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre no volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place.

Argumentos
WZDisable WorldZone
WorldZone Tipo de dados: wztemporary

A zona global a ser desativada.

Execução do programa
A zona global temporária é desativada. Isto significa que a supervisão do TCP do robô,
relativa ao volume correspondente, é temporariamente parada. Pode ser reativada
através da instrução WZEnable.

Limitações
Somente uma zona global temporária podem ser desativada. Uma zona global esta-
cionária é sempre ativa.

Data Types do Sistema e Rotinas 2-WZDisable-469


WZDisable Instruções

Sintaxe
WZDisable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de Dados - wztemporary
Reativar zona global Instruções - WZEnable
Eliminar zona global Instruções - WZFree

2-WZDisable-470 Data Types do Sistema e Rotinas


Instruções WZDOSet

WZDOSet Ativar a zona global para ajustar a saída digital


WZDOSet (Ajustar Zona Global Digital) é usada para definir a ação e ativar uma zona
global para supervisão dos movimentos do robô.

Após esta instrução ser executada, quando o TCP do robô está dentro da zona global
definida ou se está aproximando dela, um sinal de saída digital é ajustado para o valor
especificado.

Exemplo
VAR wztemporary service;

PROC zone_output()
VAR shapedata volume;
CONST pos p_service:=[500,500,700];
...
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
ENDPROC

Um service de zona global temporária é definido no programa de aplicação que


ajusta o sinal do_service, quando o TCP do robô está dentro da esfera definida
durante a execução do programa ou a movimentação.

Argumentos
WZDOSet (\Temp) | (\Stat) WorldZone (\Inside) | (\Before) Shape
Signal SetValue
\Temp (Temporária) Tipo de dados: switch

A zona global a definir é uma zona global temporária.

\Stat (Estacionária) Tipo de dados: switch

A zona global a definir é uma zona global estacionária.

Um dos argumentos \Temp ou \Stat tem de ser especificado.

WorldZone Tipo de dados: wztempo-


rary

Variável ou persistente que será atualizada com a identidade (valor numérico) da


zona global.

Quando usando o parâmetro \Temp, o tipo de dados tem de ser wztemporary.


Quando usando o parâmetro \Stat, o tipo de dados tem de ser wzstationary.

Data Types do Sistema e Rotinas 2-WZDOSet-471


WZDOSet Instruções

\Inside Tipo de dados: switch

O sinal de saída digital será ajustado quando o TCP do robô estiver dentro do
volume definido.

\Before Tipo de dados: switch

O sinal de saída digital será ajustado antes do TCP do robô atingir o volume defi-
nido (o mais próximo possível antes do volume).

Um dos argumentos \Inside ou \Before tem de ser especificado.

Shape Tipo de dados: shapedata

A variável que define o volume da zona global.

Signal Tipo de dados: signaldo

O nome do sinal de saída digital que será alterado.

SetValue Tipo de dados: dionum

Valor desejado do sinal (0 ou 1) quando o TCP do robô está dentro do volume ou


exatamente antes de entrar no volume.

Quando fora ou muito próximo do volume, o signal é ajustado para o valor


oposto.

Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisonada e a saída será ajustada, quando a posição do TCP do robô estiver dentro
do volume (\Inside) ou se aproximar do limite do volume (\Before).

Exemplo
VAR wztemporary home;
VAR wztemporary service;
PERS wztemporary equip1:=[0];

PROC main()
...
! Definition of all temporary world zones
zone_output;
...
! equip1 in robot working space
WZEnable equip1;
...
! equip1 out of robot working space
WZDisable equip1;

2-WZDOSet-472 Data Types do Sistema e Rotinas


Instruções WZDOSet

...
! No use for equip1 any more
WZFree equip1;
...
ENDPROC

PROC zone_output()
VAR shapedata volume;
CONST pos p_home:=[800,0,800];
CONST pos p_service:=[800,800,800];
CONST pos p_equip1:=[-800,-800,0];
...
WZSphDef \Inside, volume, p_home, 50;
WZDOSet \Temp, home \Inside, volume, do_home, 1;
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
WZCylDef \Inside, volume, p_equip1, 300, 1000;
WZLimSup \Temp, equip1, volume;
! equip1 not in robot working space
WZDisable equip1;
ENDPROC

A definição das zonas globais temporárias home e service no programa de apli-


cação, que ajusta o sinal do_home ou do_service, quando o robô estiver dentro
da esfera home ou service respetivamente, durante a execução do porgrama ou
quando em movimento.

Também a definição de uma zona global temporária equip1, que está ativa
somente na parte do programa do robô quando equip1, está dentro da área de tra-
balho do robô. Nessa altura, o robô pára antes de entrar no volume equip1, tanto
durante a execução do programa como na movimentação manual. equip1 pode
ser desativado ou ativado a partir de outras tarefas de programa com o uso do
valor da variável persistente equip1.

Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.

Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.

Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.

Data Types do Sistema e Rotinas 2-WZDOSet-473


WZDOSet Instruções

Sintaxe
WZDOSet
(’\’Temp) | (’\’Stat) ’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>
(’\’Inside) | (’\’Before) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[Signal’:=’]<variável (VAR) de signaldo>’,’
[SetValue’:=’]<expressão (IN) de dionum>’;’

Informações relacionadas
Descritas em:
Zonas Globais Movimento e Princípios E/S-
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Definir zona global em forma de caixa
quadrada Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Modo de acesso de sinal Guia do usuário- Parâmetros do
Sistema, Sinais E/S

2-WZDOSet-474 Data Types do Sistema e Rotinas


Instruções WZEnable

WZEnable Ativar supervisão da zona global temporária


WZEnable (Ativar zona Global) é usada para reativar a supervisão de uma zona global
temporária, previamente definida para parar o movimento ou para ajustar uma saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
não entre no volume wzone especificado. Esta supervisão não é desempenhada
quando indo para p_place, mas é reativada antes de ir para p_home

Argumentos
WZEnable WorldZone
WorldZone Tipo de dados: wztemporary

Variável ou variável persistente do tipo wztemporary, que contém a identidade


da zona global a ser ativada.

Execução do programa
A zona global temporária é reativada.
Note que uma zona global é automaticamente ativada quando criada. Necessita
somente de ser reativada quando tiver sido previamente desativada por WZDisable.

Limitações
Somente uma zona global temporária pode ser desativada e reativada. Uma zona global
estacionária está sempre ativa.

Data Types do Sistema e Rotinas 2-WZEnable-475


WZEnable Instruções

Sintaxe
WZEnable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

Informações relacionadas
Descritas em:
Zonas Globais Temporárias Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de dados - wztemporary
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Desativar zona global Instruções - WZDisable
Eliminar zona global Instruções - WZFree

2-WZEnable-476 Data Types do Sistema e Rotinas


Instruções WZFree

WZFree Eliminar supervisão da zona global temporária


WZFree (Zona Global Livre) é usada para eliminar a definição de uma zona global
temporária, previamente definida para parar a movimentação ou ajustar uma saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
WZFree wzone;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre em um volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place, mas é reativada antes de ir para p_home.
Quando esta posição é atingida, a definição da zona global é eliminada.

Argumentos
WZFree WorldZone
WorldZone Tipo de dados: wztemporary

Variável ou variável persistente do tipo wztemporary que contém a identidade da


zona global a ser eliminada.

Execução do programa
A zona global temporária é primeiro desativada e depois a sua definição é eliminada.

Uma vez eliminada, a zona global temporária não pode ser reativada nem desativada.

Limitações
Somente uma zona global temporária pode ser eliminada. Uma zona global esta-
cionária está sempre ativa.

Data Types do Sistema e Rotinas 2-WZFree-477


WZFree Instruções

Sintaxe
WZFree
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de dados - wztemporary
Activar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Desativar zona global Instruções - WZDisable
Eliminar zona global Instruções - WZFree

2-WZFree-478 Data Types do Sistema e Rotinas


Instruções WZLimSup

WZLimSup Ativar supervisão do limite da zona global


WZLimSup (Supervisão do Limite da Zona Global) é usada para definir a ação e ativar
uma zona global para supervisão do espaço de trabalho do robô.

Após esta instrução ser executada, quando o TCP do robô atingir a zona global defin-
ida, o movimento é parado durante a execução do programa e a movimentação.

Exemplo
VAR wzstationary max_workarea;
...
PROC POWER_ON()
VAR shapedata volume;
...
WZBoxDef \Outside, volume, corner1, corner2;
WZLimSup \Stat, max_workarea, volume;
ENDPROC

A definição e ativação da zona global estacionária max_workarea, com a forma


da área externa de uma caixa (guardada temporariamente em volume) e a super-
visão da área de trabalho da ação. O robô pára com uma mensagem de erro antes
de entrar na área externa da caixa.

Argumentos
WZLimSup (\Temp) | (\Stat) WorldZone Shape
\Temp (Temporária) Tipo de dados: switch

A zona global a definir é uma zona global temporária.

\Stat (Estacionária) Tipo de dados: switch

A zona global a definir é uma zona global estacionária.

Um dos argumentos \Temp ou \Stat tem de ser especificado.

WorldZone Tipo de dados: wztemporary

Variável ou persistente que será atualizada com a identidade (valor numérico) da


zona global.

Quando usando o parâmetro \Temp, o tipo de dados tem de ser wztemporary.


Quando usando o parâmetro \Stat, o tipo de dados tem de ser wzstationary.

Data Types do Sistema e Rotinas 2-WZLimSup-479


WZLimSup Instruções

Shape Tipo de dados: shapedata

A variável que define o volume da zona global.

Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisionada. Se atingir a área definida, o movimento é parado.

Exemplo
VAR wzstationary box1_invers;
VAR wzstationary box2;

PROC wzone_power_on()
VAR shapedata volume;
CONST pos box1_c1:=[500,-500,0];
CONST pos box1_c2:=[-500,500,500];
CONST pos box2_c1:=[500,-500,0];
CONST pos box2_c2:=[200,-200,300];
...
WZBoxDef \Outside, volume, box1_c1, box1_c2;
WZLimSup \Stat, box1_invers, volume;
WZBoxDef \Inside, volume, box2_c1, box2_c2;
WZLimSup \Stat, box2, volume;
ENDPROC

A limitação da área de trabalho para o robô com as seguintes zonas globais esta-
cionárias:

- Fora da área de trabalho quando fora de box1_invers


- Fora da área de trabalho quando dentro de box2

Se esta rotina é conectada ao evento de sistema POWER ON, estas zonas globais
estarão sempre ativas no sistema, tanto para os movimentos de programa como
para os movimentos manuais.

Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.

Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.

Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.

2-WZLimSup-480 Data Types do Sistema e Rotinas


Instruções WZLimSup

Sintaxe
WZLimSup
(’\’Temp) | (’\Stat)’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’,’
[Shape’:=’] <variável (VAR) de shapedata>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa quadradaInstruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando saída relativa a uma zona Instruções - WZDOSet

Data Types do Sistema e Rotinas 2-WZLimSup-481


WZLimSup Instruções

2-WZLimSup-482 Data Types do Sistema e Rotinas


Instruções WZSphDef

WZSphDef Definir uma zona global em forma de esfera


WZSphDef (Definição da Zona Global em Forma de Esfera) é usada para definir uma
zona global que tem a forma de uma esfera.

Exemplo

Z
Y
C1

R1

X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos C1:=[300,300,200];
CONST num R1:=200;
...
WZSphDef \Inside, volume, C1, R1;

Definir uma esfera nomeada volume pelo seu centro C1 e pelo seu raio R1.

Argumentos
WZSphDef (\Inside) | (\Outside) Shape CentrePoint Radius
\Inside Tipo de dados: switch

Definir o volume dentro da esfera.

\Outside Tipo de dados: switch

Definir o volume dentro da esfera (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados para o sistema).

Data Types do Sistema e Rotinas 2-WZSphDef-483


WZSphDef Instruções

CentrePoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o centro da esfera.

Radius Tipo de dados: num

O raio da esfera em mm.

Execução do programa
A definição da esfera é armazenada no tipo de variável shapedata (argumento Shape),
para uso futuro nas instruções WZLimSup ou WZDOSet.

Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 deve estar
ativo (o uso do componente trans em robtarget, por exemplo, p1.trans como argu-
mento).

Sintaxe
WZSphDef
(’\’Inside) | (’\’Outside)’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet

2-WZSphDef-484 Data Types do Sistema e Rotinas


Funções
ÍNDICE

Abs Obtém o valor absoluto


ACos Calcula o valor do arco cosseno
Saída A Lê o valor de um sinal de saída analógica
ArgName Obter nome de argumento
ASin Calcula o valor arco seno
ATan Calcula o valor do arco tangente
ATan2 Calcula o valor do arco tangente2
ByteToStr Converte um byte em dados de “string”
CDate Lê a data atual como um texto
CJointT Lê os ângulos atuais dos eixos
ClkRead Lê um relógio usado para temporização
Cos Calcula o valor do cosseno
CPos Lê o dado (pos) da posição atual
CRobT Lê o dado (robtarget) da posição do robô
CTime Lê a hora atual como um texto
CTool Lê o dado da ferramenta atual
CWObj Lê o dado do objeto de trabalho atual
DefDFrame Define um frame de deslocamento
DefFrame Define um frame
Dim Obtém a dimensão de uma matriz
DotProd Produto Dot para vetores de duas pos
DOutput Lê o valor de um sinal de saída digital
EulerZYX Obtém os ângulos de Euler a partir da orientação
Exp Calcula o valor exponencial
FileTime Recuperar informação de tempo acerca de um arquivo
GOutput Lê o valor de um grupo de sinais de saída digital
GetTime Lê o tempo atual como um valor numérico
IsPers É Persistente
IsVar É Variável
MirPos Espelhando uma posição
ModTime Obter tempo de carga para módulo de carga
NOrient Normaliza a Orientação
NumToStr Converte um valor numérico em texto
Offs Desloca uma posição do robô
OpMode Lê o modo de operação
OrientZYX Constrói uma orientação de ângulos de Euler

Data Types do Sistema e Rotinas 3-485


Funções

ORobT Remove um deslocamento de uma posição


PoseInv Inverte a posição
PoseMult Multiplica o dado de posição
PoseVect Aplica uma transformação em um vetor
Pow Calcula a potência de um valor
Present Testa se um parâmetro opcional é usado
ReadBin Lê a partir de um canal ou arquivo serial binário
ReadMotor Lê os ângulos atuais do motor
ReadNum Lê um número de um arquivo ou do canal serial
ReadStr Lê um texto de um arquivo ou do canal serial
RelTool Faz um deslocamento relativo para a ferramenta
Round Arredonda um valor numérico
RunMode Lê o modo de funcionamento
Sin Calcula o valor do seno
Sqrt Calcula o valor da raiz quadrada
StrFind Busca de um caracter num texto
StrLen Dá o comprimento do texto
StrMap Mapeia um texto
StrMatch Busca por um modelo em um texto
StrMemb Verifica se um caracter pertence a um grupo
StrOrder Verifica se os textos estão ordenados
StrPart Encontra uma parte de um texto
StrToByte Converte um “string” em dados de byte
StrToVal Converte uma string num valor
Tan Calcula o valor da tangente
TestAndSet Testar variável e ajustar se fora de ajuste
TestDI Testa se uma entrada digital está acionada
Trunc Limita um Valor Numérico
ValToStr Converte um valor como um texto
VectMagn Magnitude de um vetor pos

3-486 Data Types do Sistema e Rotinas


Funções Abs

Abs Obtém o valor absoluto


Abs é usado para obter o valor absoluto, isto é, um valor positivo de um dado numérico.

Exemplo
reg1 := Abs(reg2);

Reg1 é designado como o valor absoluto do reg2.

Valor resultante Tipo de dado: num

O valor absoluto, isto é, um valor positivo numérico.

por ex. Valor de entrada Valor resultante


3 3
-3 3
-2.53 2.53

Argumentos
Abs (Entrada)
Entrada Tipo de dado: num

O valor de entrada.

Exemplo
TPRead Num no_of_parts, "Quantas peças devem ser produzidas? ";
no_of_parts := Abs(no_of_parts);

É solicitado ao operador que entre com o número de peças a serem produzidas.


Para garantir que o valor é maior que zero, o valor fornecido pelo operador é tor-
nado positivo.

Sintaxe
Abs ’(’
[ Input ’:=’ ] < expression (IN) of num > ’)’

Data Types do Sistema e Rotinas 3-Abs-487


Abs Funções

Uma função com um valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

3-Abs-488 Data Types do Sistema e Rotinas


Funções ACos

ACos Calcula o valor do arco cosseno


ACos (Arc Cosine) é usado para calcular o valor do arco cosseno.

Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ACos(valor);

Valor resultante Tipo de dado: num

O valor do arco cosseno, expresso em graus, na faixa [0, 180].

Argumentos
ACos (Valor)
Valor Tipo de dado: num

O valor do argumento na faixa [-1, 1].

Sintaxe
Acos’(’
[Valor ’:=’] <expressão (IN) do num>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-ACos-489


ACos Funções

3-ACos-490 Data Types do Sistema e Rotinas


Funções GOutput

Saída A Lê o valor de um sinal de saída analógica


A Saída A é usada para ler o atual valor de um sinal de saída analógica.

Exemplo
If AOutput(ao4) > 5 THEN ...

Se o valor atual do sinal ao4 for maior que 5,então ...

Valor de retorno Data type: num

Valor atual do sinal.

O valor atual é escalado (de acordo com os parâmetros do sistema) antes de ser lido
pelo programa RAPID. Veja a Figura 34.

Valor físico do
sinal de saída (V, mA, etc.)

MAX SINAL

MAX PROGRAMA

Valor lógico
no programa
MIN PROGRAMA

MIN SINAL

Figura 34 Diagrama de como os valores dos sinais analógicos são escalados.

Argumentos
A Output (Signal)
Signal Data type: signalao

O nome da saída analógica a ser lida.

Data Types do Sistema e Rotinas 3-GOutput-491


GOutput Funções

Sintaxe
AOutput ’(’
[ Signal ’:=’ ] < variável (VAR) de signalao > ’)’

Uma função com um valor de retorno do tipo de dados num.

Informações relacionadas
Descrição em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de Movimentação e de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
Sistema

3-GOutput-492 Data Types do Sistema e Rotinas


Funções ASin

ASin Calcula o valor arco seno


ASin (Arc Sine) é usado para calcular o valor do arco seno.

Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ASin(valor);

Valor resultante Tipo de dado: num

O valor do arco seno, expresso em graus, na faixa [-90, 90].

Argumentos
ASin (Valor)
Valor Tipo de dado: num

O valor do argumento na faixa [-1, 1].

Sintaxe
ASin’(’
[Valor ’:=’] <expressão (IN) do num>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-ASin-493


ASin Funções

3-ASin-494 Data Types do Sistema e Rotinas


Funções ATan

ATan Calcula o valor do arco tangente


ATan (Arc Tangent) é usado para calcular o valor do arco tangente.

Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ATan(valor);

Valor resultante Tipo de dado: num

O valor do arco tangente, expresso em graus, na faixa [-90, 90].

Argumentos
ATan (Valor)
Valor Tipo de dado: num

O valor do argumento.

Sintaxe
ATan’(’
[Valor ’:=’] <expressão (IN) do num>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Arco tangente com o valor resultante dentro Funções - ATan2
da faixa [-180, 180]

Data Types do Sistema e Rotinas 3-ATan-495


ATan Funções

3-ATan-496 Data Types do Sistema e Rotinas


Funções ATan2

ATan2 Calcula o valor do arco tangente2


ATan2 (Arc Tangent2) é usado para calcular o valor do arco tangente2.

Exemplo
VAR num angulo;
VAR num valor_x;
VAR num valor_y;
.
.
angulo := ATan2(valor_y, valor_x);

Valor resultante Tipo de dado: num

O valor do arco tangente, expresso em graus, na faixa [-180, 180].

O valor será igual para ATan(y/x), mas dentro da faixa [-180, 180], já que a função usa
o sinal de ambos os argumentos para determinar o quadrante do valor resultante.

Argumentos
ATan2 (Y X)
Y Tipo de dado: num

O valor do argumento numerador.

X Tipo de dado: num

O valor do argumento denominador.

Sintaxe
ATan2’(’
[Y ’:=’] <expressão (IN) do num> ’,’
[X ’:=’] <expressão (IN) do num>
’)’

Uma função com o valor resultante do tipo de dado num.

Data Types do Sistema e Rotinas 3-ATan2-497


Atan2 Funções

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Arco tangente com apenas um argumento Funções - ATan

3-Atan2-498 Data Types do Sistema e Rotinas


Funções ByteToStr

ByteToStrConverte um byte em dados de “string”


ByteToStr (Byte To String) é usado para converter um byte em dados de “string” com
um formato definido de dados de byte.

Exemplo
VAR string con_data_buffer{5};
VAR byte data1 := 122;

con_data_buffer{1} := ByteToStr(data1);

O conteúdo do componente da matriz con_data_buffer{1} será "122" após a


função ByteToStr ... .

con_data_buffer{2} := ByteToStr(data1\Hex);

O conteúdo do componente da matriz con_data_buffer{2} será "7A" após a


função ByteToStr ... .

con_data_buffer{3} := ByteToStr(data1\Okt);

O conteúdo do componente da matriz con_data_buffer{3} será "172" após a


função ByteToStr ... .

con_data_buffer{4} := ByteToStr(data1\Bin);

O conteúdo do componente da matriz con_data_buffer{4} será "01111010"após


a função ByteToStr ... .

con_data_buffer{5} := ByteToStr(data1\Char);

O conteúdo do componente da matriz con_data_buffer{5} será "z" após a função


ByteToStr ... .

Valor de retorno Data type: string

O resultado da operação de conversão com o formato seguinte:

Formato: Caracteres: Comp.da string: Intervalo:


Dec .....: ’0’ - ’9’ 1-3 "0" - "255"
Hex .....: ’0’ - ’9’, ’A’ -’F’ 2 "00" - "FF"
Okt ......: ’0’ - ’7’ 3 "000" - "377"
Bin ......: ’0’ - ’1’ 8 "00000000" -
"11111111"
Char ....: Qualq. car. ASCII (*) 1 Um car. ASCII

(*) Se forem caracteres ASCII não graváveis, o formato de retorno será o for-
mato do código de caractere RAPID (ex. “\07” para o caractere de controle
BEL).
Data Types do Sistema e Rotinas 3-ByteToStr-499
ByteToStr Funções

Argumentos
ByteToStr (ByteData [\Hex] | [\Okt] | [\Bin] | [\Char])
ByteData Data type: byte

Dados de byte a serem convertidos.

Se o argumento de chave opcional for omitido, os dados serão convertidos para formato
decimal (Dec).

[\Hex] (Hexadecimal) Data type: switch

Os dados serão convertidos em formato hexadecimal.

[\Okt] (Octal) Data type: switch

Os dados serão convertidos em formato octal.

[\Bin] (Binary) Data type: switch

Os dados serão convertidos em formato binary.

[\Char] (Character) Data type: switch

Os dados serão convertidos em formato de caractere ASCII.

Limitações
O intervalo para o tipo de dados byte é 0 a 255 decimal.

Sintaxe
ByteToStr’(’
[ByteData ’:=’] <expression (IN) of byte>
[’\’ Hex ] | [’\’ Okt] | [’\’ Bin] | [’\’ Char]
’)’

Uma função com um valor de retorno do tipo de dados string.

3-ByteToStr-500 Data Types do Sistema e Rotinas


Funções Pow

Informações relacionadas
Descrito em:
Converter um “string” em dados de byte Instruções - StrToByte
Outras funções de bit (byte) Sumário RAPID - Funções de bit
Outras funções de “string” Sumário RAPID - Funções de “string”

Data Types do Sistema e Rotinas 3-Pow-501


Pow Funções

3-Pow-502 Data Types do Sistema e Rotinas


Funções CalcJointT

CalcJointT Calcula ângulos de junção


a partir de robtarget
CalcJointT (Calcular Alvo de Junção) é usado para calcular ângulos de junção dos
eixos externos e eixos do robô a partir de um dado robtarget especificado.

O dado robtarget de entrada deve ser especificado no mesmo sistema de coordenadas,


conforme especificado no argumento para Tool, WObj e na relocação do programa
ativo em tempo de execução (ProgDisp) e no deslocamento de eixos externos (EOffs).
O dado jointtarget retornado é expresso no sistema de coordenadas de calibração.

Exemplo
VAR jointtarget jointpos1;
CONST robtarget p1 := [...];

jointpos1 := CalcJointT(p1, tool1 \WObj:=wobj1);

O valor jointtarget correspondente ao valor robtarget p1 é armazenado em


jointpos1. A ferramenta tool1 e o objeto de trabalho wobj1 são usados para cal-
cular os ângulos de junção jointpos1.

Valor de retorno Tipo de dados: jointtarget

Os ângulos dos eixos do robô no lado do braço, em graus.

Os valores dos eixos externos, em mm para eixos lineares, em graus para eixos rota-
cionais.

Os valores retornados são sempre relacionados à posição de calibração.

Argumentos
CalcJointT ( Rob_target Tool [\WObj] )
Rob_target Tipo de dados: robtarget

A posição dos eixos externos e do robô no sistema de coordenadas mais externo,


em relação ao objeto de trabalho e à ferramenta especificados e na relocação do
programa ativo em tempo de execução (ProgDisp) e/ou deslocamento dos eixos
externos (EOffs).

Ferramenta Tipo de dados: tooldata

A ferramenta usada para cálculo dos ângulos de junção do robô.

Data Types do Sistema e Rotinas 3-CalcJointT-503


CalcJointT Funções

[\WObj] (Objeto de trabalho) Tipo de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) ao qual a posição do robô está rel-


acionada.

Se esse argumento for omitido, o objeto de trabalho wobj0 será usado.


Esse argumento precisa ser especificado caso seja utilizada ferramenta esta-
cionária, eixos externos coordenados ou transportador

Execução do programa
O jointtarget retornado é calculado a partir do robtarget de entrada.
Para calcular os ângulos de junção do robô, a Ferramenta especificada, o WObj
(incluindo o quadro de usuário coordenado) e o ProgDisp ativo em tempo de execução
são levados em consideração.
Para calcular a posição dos eixos externos, os EOffs ativos em tempo de execução são
levados em consideração.

O cálculo sempre seleciona a configuração do robô de acordo com os dados de config-


uração especificados nos dados robtarget de entrada. Instruções ConfL e ConfJ não afe-
tam esse princípio de cálculo. No caso de singularidade de punho, os eixos 4 dos robôs
serão ajustados em 0 grau.

No caso de alguma relocação de programa ativo (ProgDisp) e/ou deslocamento de


eixos externos (EOffs) quando do armazenamento de robtarget, a mesma relocação de
programa e/ou deslocamento de eixos externos deverá estar ativa quando da execução
de CalcJointT.

Sintaxe
CalcJointT’(’
[Rob_target ‘:=‘] <expression (IN) of robtarget> ‘,’
[Tool ’:=’ ] <persistent (PERS) of tooldata>
[’\’WObj ’:=’ <persistent (PERS) of wobjdata>] ‘)’

Uma função com um valor de retorno do tipo de dados jointtarget.

3-CalcJointT-504 Data Types do Sistema e Rotinas


Funções CalcJointT

Informações relacionadas
Descrito em:
Calcular robtarget a partir de jointtarget Funções - CalcRobT
Definição de posição Tipos de dados - robtarget
Definição de posição de junção Tipos de dados - jointtarget
Definição de ferramentas Tipos de dados - tooldata
Definição de objetos de trabalho Tipos de dados - wobjdata
Sistemas de coordenadas Princípios de E/S e movimentação -
Sistemas de coordenadas
Sistema de coordenadas de relocação
de programa Instruções - PDispOn
Sistema de coordenadas de deslocamento
de eixos externos Instruções - EOffsOn

Data Types do Sistema e Rotinas 3-CalcJointT-505


CalcJointT Funções

3-CalcJointT-506 Data Types do Sistema e Rotinas


Funções CalcRobT

CalcRobTCalcula robtarget a partir de jointtarget


CalcRobT (Calcular Alvo de Robô) é usado para calcular um dado robtarget a partir de
um dado jointtarget fornecido.

Essa função retorna um valor robtarget com a posição (x, y, z), orientação (q1 ... q4),
configuração de eixos do robô e posição de eixos externos.

O dado de entrada jointtarget deve ser especificado no sistema de coordenadas de


calibração.
O dado robtarget retornado é expresso no sistema de coordenadas mais externo,
levando em consideração a ferramenta especificada, o objeto de trabalho e a relocação
de programa ativo em tempo de execução (ProgDisp) e o deslocamento de eixos exter-
nos (EOffs).

Exemplo
VAR robtarget p1;
CONST jointtarget jointpos1 := [...];

p1 := CalcRobT(jointpos1, tool1 \WObj:=wobj1);

O valor robtarget correspondente ao valor jointtarget jointpos1 é armazenado em


p1. A ferramenta tool1 e o objeto de trabalho wobj1 são usados para calcular a
posição p1.

Valor de retorno Tipo de dados: robtarget

A posição dos eixos externos e do robô é retornada no tipo de dados robtarget e


expressa no sistema de coordenadas mais externo, levando em consideração a ferra-
menta especificada, o objeto de trabalho, a relocação de programa ativo em tempo de
execução (ProgDisp) e o deslocamento de eixos externos (EOffs).

Se não houver ProgDisp ativo, a posição do robô será expressa no sistema de coorde-
nadas do objeto.
Se não houver EOffs ativos, a posição dos eixos externos será expressa no sistema de
coordenadas de calibração.

Argumentos
CalcRobT ( Joint_target Tool [\WObj] )
Joint_target Tipo de dados: jointtarget

A posição de junção para os eixos externos e os eixos do robô em relação ao sis-


tema de coordenadas de calibração.

Data Types do Sistema e Rotinas 3-CalcRobT-507


CalcRobT Funções

Tool Tipo de dados: tooldata

A ferramenta usada para cálculo da posição do robô.

[\WObj] (Objeto de trabalho) Tipo de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) ao qual está relacionada a posição


do robô retornada pela função.

Se esse argumento for omitido, o objeto de trabalho wobj0 será usado.


Esse argumento precisa ser especificado caso se use ferramenta estacionária,
eixos externos coordenados ou transportador

Execução do programa
O robtarget retornado é calculado a partir do jointtarget de entrada.
Para calcular a posição cartesiana do robô, a Tool especificada, o WObj (incluindo o
quadro de coordenadas do usuário) e o ProgDisp ativo em tempo de execução serão
levados em consideração.
Para calcular a posição dos eixos externos, os EOffs ativos em tempo de execução são
levados em consideração.

Sintaxe
CalcRobT’(’
[Joint_target ’:=’ ] <expression (IN) of jointtarget> ‘,’
[Tool ’:=’ ] <persistent (PERS) of tooldata>
[’\’WObj ’:=’ <persistent (PERS) of wobjdata>] ’)’

Uma função com um valor de retorno do tipo de dados robtarget.

3-CalcRobT-508 Data Types do Sistema e Rotinas


Funções CalcRobT

Informações relacionadas
Descrito em:
Calcular jointtarget a partir de robtarget Funções - CalcJointT
Definição de posição Tipos de dados - robtarget
Definição de posição de junção Tipos de dados - jointtarget
Definição de ferramentas Tipos de dados - tooldata
Definição de objetos de trabalho Tipos de dados - wobjdata
Sistemas de coordenadas Princípios de E/S e movimentação -
Sistemas de Coordenadas
Sistema de coordenadas de relocação
de programa Instruções - PDispOn
Sistema de coordenadas de deslocamento
de eixos externos Instruções - EOffsOn

Data Types do Sistema e Rotinas 3-CalcRobT-509


CalcRobT Funções

3-CalcRobT-510 Data Types do Sistema e Rotinas


Funções CDate

CDate Lê a data atual como um texto


CDate (Current Date) é usado para ler a data atual do sistema.

Esta função é usada para apresentar a data atual ao operador no display da unidade de
programação ou colar a data atual em um arquivo de texto a ser escrito pelo programa.

Exemplo
VAR string data;

data := CDate();

A data atual pode ser armazenada na variável data.

Valor resultante Tipo de dado: string

A data atual em um texto.

O formato padrão da data é "ano-mês-dia", por ex. "1998-01-29".

Exemplo
data := CDate();
TPWrite "A data atual é: "+data;
Write logfile, data;

Esta data é escrita no display da unidade de programação e no arquivo de texto.

Sintaxe
CDate ’(’ ’)’

Uma função com o valor resultante do tipo string.

Informação relacionada
Descrita em:
Instruções de hora Sumário RAPID - Sistema & Hora
Ajuste do relógio do sistema Guia do Usuário - Parâmetros do Sistema

Data Types do Sistema e Rotinas 3-CDate-511


CDate Funções

3-CDate-512 Data Types do Sistema e Rotinas


Funções CJointT

CJointT Lê os ângulos atuais dos eixos


CJointT (Current Joint Target) é usado para ler os ângulos atuais dos eixos dos robô e
dos eixos externos.

Exemplo
VAR jointtarget eixos;

eixos := CJointT();

Os ângulos atuais dos eixos do robô e dos eixos externos são armazenados em
joints.

Valor resultante Tipo de dado: jointtarget

Os ângulos atuais, em graus, para os eixos do robô no lado do braço.

Os valores atuais para os eixos externos, em mm para eixos lineares, em graus para
eixos giratórios.

Os valores resultantes estão relacionados com a posição de calibração.

Sintaxe
CJointT’(’’)’

Uma função com um valor resultante do tipo de dado jointtarget.

Informação relacionada
Descrito em:
Definição do eixo Tipos de dados - jointtarget
Lendo o ângulo atual do motor Funções - ReadMotor

Data Types do Sistema e Rotinas 3-CJointT-513


CJointT Funções

3-CJointT-514 Data Types do Sistema e Rotinas


Funções ClkRead

ClkRead Lê um relógio usado para temporização


ClkRead é usado para ler um relógio que funciona como um cronômetro usado para
temporização.

Exemplo
reg1:=ClkRead(clock1);

O relógio clock1 é lido e o tempo, em segundos, é armazenado na variável reg1.

Valor resultante Tipo de dado: num

O tempo, em segundos, armazenado no relógio. Resolução de 0,010 segundos.

Argumentos
ClkRead (Relógio)
Relógio Tipo de dado: clock

O nome do relógio a ser lido.

Execução do programa
Um relógio pode ser lido quando ele está parado ou funcionando.

Uma vez que um relógio é lido ele pode ser lido de novo, reiniciado, parado ou
resetado.

Se o relógio exceder seu limite, a execução do programa é parada com uma mensagem
de erro.

Sintaxe
ClkRead ’(’
[ Relógio ’:=’ ] < variável (VAR) do clock > ’)’

Uma função com um valor resultante do tipo num.

Data Types do Sistema e Rotinas 3-ClkRead-515


ClkRead Funções

Informação relacionada
Descrito em:
Instruções de relógio Sumário RAPID - Sistema & Hora
Overflow do relógio Tipos de dados - clock
Mais exemplos Instruções - ClkStart

Interno
ClkRead age nas maneiras seguintes nos diferentes modos de execução de programas :

Modo Comportamento:
Para a frente Execução normal
Para a frenta - Passo a passo Execução normal
Simulado Execução normal
Para trás Não executado
Retorno imediato REAL_READY

3-ClkRead-516 Data Types do Sistema e Rotinas


Funções ClkRead

PÁGINA DE REVISÃO
Número de Registro do Documento: ROL93067.ARD
REVISTO PELO DEP NOME DATA ASSINATURA

Autor KCF Steve Simpson

Projeto KC Håkan Brantmark

Assunto KC Håkan Brantmark

Outros KCF SEJ, PE

Documentação do usuário MT Mats Källman 940303

Qualidade: Manual do KCR Mats Myhr 940303


usuário

Teste: Manual do usuário KC F Runge 940215

Fato: Manual do usuário KC KC/Brantmark, KCF/SEJ 940214

Final: Manual do usuário MT

REVISÃO
REV. PÁGINA (P) DESCRIÇÃO DATA
CAPÍT. (C) DEPT../ASSIN..

0.1 All Primeira emissão. 930505


KCF/SS
A1 All Encontro de revisão KC/HB, KCF/SEJ, SS, MT/MS 930608 KCF/SS
A2 Manual 930903 MT/MK
A3 M94, pequenas alterações 940303 MT/MK
w3.1 Acrescentado tempo de resolução no RW3.1 980303 KCF/SEJO

Data Types do Sistema e Rotinas 3-ClkRead-517


ClkRead Funções

3-ClkRead-518 Data Types do Sistema e Rotinas


Funções Cos

Cos Calcula o valor do cosseno


Cos (Cosine) é usado para calcular o valor do cosseno de um ângulo.

Exemplo
VAR num angulo;
VAR num valor;
.
.
valor := Cos(angulo);

Valor resultante Tipo de dado: num

O valor do cosseno na faixa = [-1, 1] .

Argumentos
Cos (Angulo)
Ângulo Tipo de dado: num

O valor do ângulo, expresso em graus.

Sintaxe
Cos’(’
[Angulo ’:=’] <expressão (IN) do num>
’)’

Uma função com um valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-Cos-519


Cos Funções

3-Cos-520 Data Types do Sistema e Rotinas


Funções CPos

CPos Lê o dado (pos) da posição atual


CPos (Current Position) é usado para ler a posição atual do robô.

Esta função resulta os valores de x, y, e z do TCP do robô como um dado do tipo pos.
Se a posição completa do robô (robtarget) tiver que ser lida, use a função CRobT.

Exemplo
VAR pos pos1;

pos1 := CPos(\Tool:=tool1 \WObj:=wobj0);

A posição atual do TCP do robô é armazenado na variável pos1. A ferramenta


tool1 e o objeto de trabalho wobj0 são usados para o cálculo da posição.

Valor resultante Tipo de dado: pos

A posição atual (pos) do robô com x, y e z no sistema de coordenadas, levando em con-


sideração a ferramenta especificada, o objeto de trabalho e o sistema de coordenadas
ProgDisp ativo.

Argumentos
CPos ([\Tool] [\WObj])
[\Tool] Tipo de dado: tooldata

A ferramenta usada para o cálculo da posição atual do robô.

Se este argumento for omitido, a ferramenta ativa atual é usada.

[\WObj] (Objeto de Trabalho) Tipo de dado: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição atual do


robô resultou pela função que está relacionado.

Se este argumento for omitido, o objeto de trabalho ativo atual é usado.

Durante a programação, é aconselhável sempre especificar os argumentos \Tool e


\WObj. A função irá então, sempre retornar a posição desejada, a menos que alguma
outra ferramenta ou objeto de trabalho tenham sido ativados manualmente.

Data Types do Sistema e Rotinas 3-CPos-521


CPos Funções

Execução do programa
As coordenadas resultantes representam a posição do TCP no sistema de coordenadas
ProgDisp.

Exemplo
VAR pos pos2;
VAR pos pos3;
VAR pos pos4;

pos2 := CPos(\Tool:=grip3 \WObj:=fixture);


.
.
pos3 := CPos(\Tool:=grip3 \WObj:=fixture);
pos4 := pos3-pos2;

As posições x, y e z do robô são armazenadasb em duas posições dentro do pro-


grama usando a função CPos. A ferramenta grip3 e o objeto de trabalho fixture
são usados para o cálculo da posição. As distâncias x, y e z movimentadas entre
estas posições são então calculadas e armazenadas na variável pos4, do tipo pos.

Sintaxe
CPos ’(’
[’\’Tool ’:=’ <persistente (PERS) do tooldata>]
[’\’WObj ’:=’ <persistente (PERS) do wobjdata>] ’)’

Uma função com o valor resultante do tipo de dado pos.

Informação relacionada
Descrito em:
Definição da posição Tipos de dados - pos
Definição das ferramentas Tipos de dados- tooldata
Definição dos objetos de trabalho Tipos de dados - wobjdata
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas
Lendo o robtarget atual Funções - CRobT

3-CPos-522 Data Types do Sistema e Rotinas


Funções CRobT

CRobT Lê o dado (robtarget) da posição do robô


CRobT (Current Robot Target) é usado para ler a posição atual do robô e dos eixos
externos.

Esta função resulta um valor robtarget com posição (x, y, z), orientação (q1 ... q4), con-
figuração dos eixos do robô e posição dos eixos externos. Se apenas os valores x, y, e
z do TCP (pos) tiverem que ser lidos, use a função CPos.

Exemplo
VAR robtarget p1;

p1 := CRobT(\Tool:=tool1 \WObj:=wobj0);

A posição atual dos eixos externos e do robô, é armazenada em p1. A ferramenta


tool1 e o objeto de trabalho wobj0 são usados para o cálculo da posição.

Valor resultante Tipo de dado: robtarget

A posição atual dos eixos externos e do robô no sistema de coordenadas, levando em


consideração a ferramenta especificada, o objeto de trabalho e o sistema de coordena-
das ProgDisp/ExtOffs ativo.

Argumentos
CRobT ([\Tool] [\WObj])
[\Tool] Tipo de dado: tooldata

A ferramenta usada para o cálculo da posição atual do robô.

Se este argumento for omitido, a ferramenta ativa atual é usada.

[\WObj] (Work Object) Tipo de dado: wobjdata

O objeto de trabalho (sistema de coordenada) para o qual a posição atual do robô


resultou pela função que está relacionado.

Se este argumento for omitido, o objeto de trabalho ativo atual é usado.

Durante a programação, é aconselhável sempre especificar os argumentos \Tool e


\WObj. A função irá então, sempre retornar a posição desejada, a menos que alguma
outra ferramenta ou objeto de trabalho tenham sido ativados manualmente.

Data Types do Sistema e Rotinas 3-CRobT-523


CRobT Funções

Execução do programa
As coordenadas resultantes representam a posição do TCP no sistema de coordenada
ProgDisp. Eixos externos são representados no sistema de coordenada ExtOffs.

Exemplo
VAR robtarget p2;

p2 := ORobT( RobT(\Tool:=grip3 \WObj:=fixture) );

A posição atual, no sistema de coordenadas de objeto (sem nenhum ProgDisp ou


ExtOffs), dos eixos externos e do robô é armazenada em p2. A ferramenta grip3
e o objeto de trabalho fixture são usados para o cálculo da posição.

Sintaxe
CRobT’(’
[’\’Tool ’:=’ <persistente (PERS) do tooldata>]
[’\’WObj ’:=’ <persistente (PERS) do wobjdata>] ’)’

Uma função com o valor resultante do tipo de dado robtarget.

Informação relacionada
Descrito em:
Definição da posição Tipos de dados - robtarget
Definição das ferramentas Tipos de dados- tooldata
Definição dos objetos de trabalho Tipos de dados - wobjdata
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas
Sistema de coordenadas ExtOffs Instruções - EOffsOn
Lendo o pos atual (apenas x, y, z) Funções - CPos

3-CRobT-524 Data Types do Sistema e Rotinas


Funções CTime

CTime Lê a hora atual como um texto


CTime é usado para ler a hora atual do sistema.

Esta função pode ser usada para apresentar a hora atual para o operador no display da
unidade de programação ou para colar a hora atual em um arquivo de texto a ser escrito
pelo programa.

Exemplo
VAR string hora;

hora := CTime();

A hora atual é armazenada na variável time.

Valor resultante Tipo de dado: string

A hora atual em um texto.

O formato padrão da hora é "hora:minutos:segundos", por ex. "18:20:46".

Exemplo
hora := CTime();
TPWrite “A hora atual é: “+hora;
Write logfile, hora;

A hora atual é escrita no display da unidade de programação e num arquivo


de texto.

Sintaxe
CTime ’(’ ’)’

Uma função com um valor resultante do tipo string.

Data Types do Sistema e Rotinas 3-CTime-525


CTime Funções

Informação relacionada
Descrito em:
Instruções de hora e data Sumário RAPID - Sistema & Hora
Ajuste do relógio do sistema Guia do Usuário - Parâmetros do Sis-
tema

3-CTime-526 Data Types do Sistema e Rotinas


Funções CTool

CTool Lê o dado da ferramenta atual


CTool (Current Tool) é usado para ler o dado da ferramenta atual.

Exemplo
PERS tooldata temp_tool:= [ TRUE, [ [0, 0, 0], [1, 0, 0 ,0] ],
[0.001, [0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0] ];

temp_tool := CTool();

O valor da ferramenta atual é armazenada na variável temp_tool.

Valor resultante Tipo de dado: tooldata

Esta função resulta um valor de tooldata contendo o valor da ferramenta atual, isto é,
a última ferramenta usada numa instrução de movimento.

O valor resultante representa a posição do TCP e a orientação no sistema de coordena-


das do punho, veja tooldata.

Sintaxe
CTool’(’’)’

Uma função com o valor resultante do tipo de dado tooldata.

Informação relacionada
Descrito em:
Definição das ferramentas Tipos de dados- tooldata
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas

Manual de Referência do RAPID 9-CTool-527


CTool Funções

9-CTool-528 Manual de Referência do RAPID


Funções CWObj

CWObj Lê o dado do objeto de trabalho atual


CWObj (Current Work Object) é usado para ler o dado do objeto de trabalho atual.

Exemplo
PERS wobjdata temp_wobj;

temp_wobj := CWObj();

O valor do objeto de trabalho atual é armazenado na variável temp_wobj.

Valor resultante Tipo de dado: wobjdata

Esta função resulta um valor de wobjdata contendo o valor do objeto de trabalho atual,
isto é, o último objeto de trabalho usado numa instrução de movimento.

O valor resultante representa a posição do objeto de trabalho e a orientação no sistema


de coordenadas global, veja wobjdata.

Sintaxe
CWObj’(’’)’

Uma função com o valor resultante do tipo de dado wobjdata.

Informação relacionada
Descrito em:
Definição de objetos de trabalho Tipos de dados - wobjdata
Sistemas de coordenadas Movimento e Princípios de E/S - Siste-
mas de Coordenadas

Data Types do Sistema e Rotinas 3-CWObj-529


CWObj Funções

3-CWObj-530 Data Types do Sistema e Rotinas


Funções DefDFrame

DefDFrame Define um frame de deslocamento


DefDFrame (Define Displacement Frame) é usado para calcular um frame de
deslocamento a partir de três posições originais e três posições de deslocamento.

Exemplo

p3 p6

p5

p4
p1 p2

Três posições, p1- p3, relativas a um objeto na posição original, foram armazenadas.
Depois de um deslocamento do objeto, as mesmas posições são procuradas e
armazenadas como p4-p6. A partir destas seis posições o frame de deslocamento é
calculado. Em seguida, o frame calculado é usado para deslocar todas as posições
armazenadas no programa.

CONST robtarget p1 := [...];


CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
VAR robtarget p4;
VAR robtarget p5;
VAR robtarget p6;
VAR pose frame1;
.
!Search for the new positions
SearchL sen1, p4, *, v50, tool1;
.
SearchL sen1, p5, *, v50, tool1;
.
SearchL sen1, p6, *, v50, tool1;
frame1 := DefDframe (p1, p2, p3, p4, p5, p6);
.
!activation of the displacement defined by frame1
PDispSet frame1;

Valor resultante Tipo de dado: pose

O frame de deslocamento.

Manual de Referência do RAPID 9-DefDFrame-531


DefDFrame Funções

Argumentos
DefDFrame (OldP1 OldP2 OldP3 NewP1 NewP2 NewP3)
OldP1 Tipo de dado: robtarget
A primeira posição original.

OldP2 Tipo de dado: robtarget


A segunda posição original.

OldP3 Tipo de dado: robtarget


A terceira posição original.

NewP1 Tipo de dado: robtarget


A primeira posição deslocada. Esta posição deve ser medida e determinada com
grande precisão.

NewP2 Tipo de dado: robtarget


A segunda posição deslocada. Deve ser notado que esta posição pode ser medida
e determinada com menos precisão em uma direção, por ex. esta posição deve
estar localizada em uma linha descrevendo a nova direção de p1 à p2.

NewP3 Tipo de dado: robtarget


A terceira posição deslocada. Esta posição pode ser medida e determinada com
menos precisão em duas direções, por ex. ela deve estar posicionada em um plano
descrevendo o novo plano de p1, p2 e p3.

Tratamento de erros
Se não for possível calcular o frame devido a falta de precisão nas posições, a variável
de sistema ERRNO será definida como ERR_FRAME. Assim, esse erro poderá ser
tratado na rotina de tratamento de erros.

Sintaxe
DefDFrame’(’
[OldP1 ’:=’] <expressão (IN) de robtarget> ’,’
[OldP2 ’:=’] <expressão (IN) de robtarget> ’,’
[OldP3 ’:=’] <expressão (IN) de robtarget> ’,’
[NewP1 ’:=’] <expressão (IN) de robtarget> ’,’
[NewP2 ’:=’] <expressão (IN) de robtarget> ’,’
[NewP3 ’:=’] <expressão (IN) de robtarget> ’)’

Uma função com o valor resultante do tipo de dado pose.

9-DefDFrame-532 Manual de Referência do RAPID


Funções DefDFrame

Informação relacionada
Descrito em:
Ativação do frame de deslocamento Instruções - PDispSet
Definição manual do frame de deslocamento Guia do Usuário - Calibração

Manual de Referência do RAPID 9-DefDFrame-533


DefDFrame Funções

9-DefDFrame-534 Manual de Referência do RAPID


Funções DefFrame

DefFrame Define um frame


DefFrame (Define Frame) é usado para calcular um frame, a partir de três posições
definindo um frame.

Exemplo

y
z p3
z

x
p2
y
frame1
p1
frame do objeto x

Três posições, p1- p3, relacionado ao sistema de coordenadas do objeto, são usadas
para definir o novo sistema de coordenadas, frame1. A primeira posição, p1, define a
origem do frame1, a segunda posição, p2, define a direção do eixo-x e a terceira
posição, p3, define a localização do plano-xy. O frame1 definido pode ser usado como
um frame de deslocamento, conforme mostrado no exemplo abaixo:

CONST robtarget p1 := [...];


CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
VAR pose frame1;
.
.
frame1 := DefFrame (p1, p2, p3);
.
.
!activation of the displacement defined by frame1
PDispSet frame1;

Valor resultante Tipo de dado: pose

O frame calculado.

O calculo está relacionado ao sistema de coordenadas de objeto ativo.

Data Types do Sistema e Rotinas 3-DefFrame-535


DefFrame Funções

Argumentos
DefFrame (NewP1 NewP2 NewP3 [\Origin])
NewP1 Tipo de dado: robtarget

A primeira posição que definirá a origem da nova estrutura.

NewP2 Tipo de dado: robtarget

A segunda posição que definirá a direção do eixo-x da nova estrutura.

NewP3 Tipo de dado: robtarget

A terceira posição, que definirá o plano-xy do novo frame. A posição do ponto 3


estará no lado y positivo, veja a figura acima.

[\Origin] Tipo de dado: num

O argumento opcional que definirá como será colocada a origem da estrutura.


Origem = 1, significa que a origem é colocada em NewP1, por exemplo, o mesmo
como se este argumento fosse omitido. Origem = 2, significa que a origem é
colocada em NewP2, veja a figura abaixo.

z z y
New P3

x
y New P2

estrutura do objeto x frame1


New P1

Origin = 3 significa que a origem é colocada na linha que vai de NewP1 para NewP2,
e deste modo NewP3 fica colocado no eixo-y, veja a figura abaixo.

z y

z New P3

x
y New P2

object frame x frame1


New P1

3-DefFrame-536 Data Types do Sistema e Rotinas


Funções DefFrame

Outros valores ou se a Origem for omitida colocarão a origem em NewP1.

Limitações
As três posições p1 - p3, que delimitam o frame, devem perfazer um triângulo bem
definido. O triângulo mais bem definido é o que tem todos os lados com o mesmo
comprimento.

p2
p3

θ
p1

O triângulo não é considerado bem definido quando o ângulo θ é muito pequeno. O


ângulo θ é muito pequeno se:
–4
cos Θ <1 – 10

O triângulo p1, p2, p3 não pode ser muito pequeno, ou seja, as posições não podem ser
muito próximas. As distâncias entre as posições p1 - p2 e p1 - p3 nã podem ser menores
que 0,1 mm.

Tratamento de erros
Se o frame não puder ser calculado devido às limitações acima, a variável de sistema
ERRNO será definida como ERR_FRAME. Assim, esse erro poderá ser tratado na
rotina de tratamento de erros.

Sintaxe
DefFrame’(’
[NewP1 ’:=’] <expressão (IN) de robtarget> ’,’
[NewP2 ’:=’] <expressão (IN) de robtarget> ’,’
[NewP3 ’:=’] <expressão (IN) de robtarget>
[’\’Origin ’:=’ <expressão (IN) de num> ]’)’

A função com o valor resultante do tipo de dado pose.

Data Types do Sistema e Rotinas 3-DefFrame-537


DefFrame Funções

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Ativação do frame de deslocamento Instruções - PDispSet

3-DefFrame-538 Data Types do Sistema e Rotinas


Funções Dim

Dim Obtém a dimensão de uma matriz


Dim (Dimension) é usado para obter o número de elementos de uma matriz.

Exemplo
PROC arrmul(VAR num matriz{*}, num fator)

FOR índice FROM 1 TO Dim(matriz, 1) DO


matriz{índice} := matriz{índice} * fator;
ENDFOR

ENDPROC

Todos os elementos de uma matriz são multiplicados por um fator.


Este procedimento pode obter qualquer matriz unidimensional do tipo de dado
num como uma entrada.

Valor resultante Tipo de dado: num

O número de elementos de uma matriz da dimensão especificada.

Argumentos
Dim (ArrPar DimNo)
ArrPar (Array Parameter) Tipo de dado: Any type

O nome da matriz.

DimNo (Dimension Number) Tipo de dado: num

A dimensão de matriz desejada: 1 = primeira dimensão


2 = segunda dimensão
3 = terceira dimensão

Data Types do Sistema e Rotinas 3-Dim-539


Dim Funções

Exemplo
PROC add_matrix(VAR num matriz1{*,*,*}, num matriz2{*,*,*})

IF Dim(matriz1,1) <> Dim(matriz2,1) OR Dim(matriz1,2) <> Dim(matriz2,2) OR


Dim(matriz1,3) <> Dim(matriz2,3) THEN
TPWrite "O tamanho das matrizes não são os mesmos";
Stop;
ELSE
FOR i1 FROM 1 TO Dim(matriz1, 1) DO
FOR i2 FROM 1 TO Dim(matriz1, 2) DO
FOR i3 FROM 1 TO Dim(matriz1, 3) DO
matriz1{i1,i2,i3} := matriz1{i1,i2,i3} + matriz2{i1,i2,i3};
ENDFOR
ENDFOR
ENDFOR
ENDIF
RETURN;

ENDPROC

Duas matrizes são adicionadas. Se a dimensão das matrizes diferirem, o pro-


grama pára e uma mensagem de erro aparece.
Este procedimento pode obter qualquer matriz tridimensional do tipo de dado
num como uma entrada

Sintaxe
Dim ’(’
[ArrPar’:=’] <reference (REF) of any type> ’,’
[DimNo’:=’] <expression (IN) of num> ’)’

O parâmetro REF requer que o argumento correspondente seja tanto uma constante,
uma variável ou um persistente inteiro. O argumento poderia ser também um parâmetro
IN, um parâmetro VAR ou um parâmetro inteiro PERS.

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Parâmetros de matriz Características Básicas - Rotinas
Declaração de matriz Características Básicas - Dado

3-Dim-540 Data Types do Sistema e Rotinas


Funções Distance

Distance A distância entre dois pontos


Distance é usado para calcular a distância entre dois pontos no espaço.

Exemplo

y
p2

x
p1
z

VAR num dist;


CONST pos p1 := [4,0,4];
CONST pos p2 := [-4,4,4];
...
dist := Distance(p1, p2);

A distância no espaço entre os pontos p1 e p2 é calculada e armazenada na var-


iável dist.

Valor de retorno Tipo de dados: num

A distância (sempre positiva) entre os pontos.

Argumentos
Distance (Point1 Point2)
Point1 Tipo de dados: pos

O primeiro ponto descrito pelo tipo de dados pos.

Point2 Tipo de dados: pos

O segundo ponto descrito pelo tipo de dados pos.

Data Types do Sistema e Rotinas 3-Distance-541


Distance Funções

Execução do programa
Cálculo da distância entre os dois pontos conforme:

y
x2, y2, z2

x
x1,y1,z1
z

distância =  ( x 1 – x 2 ) + ( y 1 – y 2 ) + ( z 1 – z 2 ) 
2 2 2

Sintaxe
Distance’(’
[Point1 ’:=’] <expression (IN) of pos> ‘,’
[Point2 ’:=’] <expression (IN) of pos>
’)’

Uma função com um valor de retorno do tipo de dados num.

Informações relacionadas
Descrito em:
Funções e instruções matemáticas Resumo RAPID - Matemática
Definição de pos Tipo de dados - pos

3-Distance-542 Data Types do Sistema e Rotinas


Funções DotProd

DotProd Produto Dot para vetores de duas pos


DotProd (produto Dot) se usa para calcular o produto dot (ou escalar) de vetores de
duas pos. O uso típico é calcular a projeção de um vetor em relação ao outro ou calcular
o ângulo entre os dois vetores.

Exemplo
B

θAB
A

B cos θAB A

O produto dot ou escalar de dois vetores A e B é um escalar que é igual aos produtos
das magnitudes de A e B e ao co-seno do ângulo entre eles.

A ⋅ B = A B cos θAB

O produto dot:

• é menor que ou igual ao produto de suas magnitudes.


• pode ser uma quantidade positiva ou negativa, dependo do ângulo entre eles ser
menor ou maior que 90 graus.
• é igual ao produto da magnitude de um vetor e à projeção do outro vetor sob o pri-
meiro.
• é zero quando os vetores são perpendiculares entre si.

Os vetores são descritos pelo tipo de dados pos e o produto dot pelo tipo de dados num:

VAR num dotprod;


VAR pos vector1;
VAR pos vector2;
.
.
vector1 := [1,1,1];
vector2 := [1,2,3];
dotprod := DotProd(vetor1, vetor2);

Data Types do Sistema e Rotinas 3-DotProd-543


DotProd Funções

Valor de retorno Tipo de dados: num

Valor do produto dot dos dois vetores.

Argumentos
DotProd (Vector1 Vector2)
Vector1 Tipo de dados: pos

O primeiro vetor descrito pelo tipo de dados pos.

Vector2 Tipo de dados: pos

O segundo vetor descrito pelo tipo de dados pos.

Sintaxe
DotProd’(’
[Vector1 ’:=’] <expressão (IN) de pos> ’,’
[Vector2 ’:=’] <expressão (IN) de pos>
’)’

Função com um valor de retorno do tipo de dados num.

Informações relacionadas
Descritas em:
Instruções e funções matemáticas Sumário RAPID - Matemática

3-DotProd-544 Data Types do Sistema e Rotinas


Funções DOutput

DOutput Lê o valor de um sinal de saída digital


DOutput é usado para ler o valor atual de uma saída digital.

Exemplo
IF DOutput(do2) = 1 THEN . . .

Se o valor atual do sinal do2 é igual a 1, então . . .

Valor resultante Tipo de dado: dionum

O valor atual do sinal (0 ou 1).

Argumentos
DOutput (Sinal)
Sinal Tipo de dado: signaldo

O nome do sinal a ser lido.

Execução do programa
O valor lido depende da configuração do sinal. Se o sinal está invertido em parâmetros
de sistema, o valor resultante desta função é o oposto do valor real no canal fisíco.

Exemplo
IF DOutput(auto_on) <> active THEN . . .

Se o valor atual do sinal de sistema auto_on está not active, então..., por ex. se o
robô estiver no modo de operação manual, então ... Observe que o sinal deve pri-
meiro ser definido como uma saída de sistema em parâmetros do sistema.

Sintaxe
DOutput ’(’
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’)’

Uma função com o valor resultante do tipo de dado dionum.

Data Types do Sistema e Rotinas 3-DOutput-545


DOutput Funções

Informação relacionada
Descrito em:
Instruções Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade em geral de Entrada/Saída Movimento e Princípios de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros de Sis-
tema

3-DOutput-546 Data Types do Sistema e Rotinas


Funções EulerZYX

EulerZYXObtém os ângulos de Euler a partir da orientação


EulerZYX (Euler ZYX rotations) é usado para obter o componente do ângulo de Euler
a partir de uma variável do tipo orientação.

Exemplo
VAR num ângulox;
VAR num ânguloy;
VAR num ânguloz;
VAR pose objeto;
.
.
ângulox := GetEuler(\X, object.rot);
ânguloy := GetEuler(\Y, object.rot);
ânguloz := GetEuler(\Z, object.rot);

Valor resultante Tipo de dado: num

O ângulo Euler correspondente, expresso em graus, na faixa [-180, 180].

Argumentos
EulerZYX ([\X] | [\Y] | [\Z] Rotation)
Os argumentos \X, \Y e \Z são mutuamente exclusivos. Se nenhum deles estiver espe-
cificado, um erro de tempo de execução será gerado.

[\X] Tipo de dado: switch

Obtém a rotação a redor do eixo X.

[\Y] Tipo de dado: switch

Obtém a rotação a redor do eixo Y.

[\Z] Tipo de dado: switch

Obtém a rotação a redor do eixo Z.

Rotação Tipo de dado: orient

A rotação em sua representação de quartênios.

Data Types do Sistema e Rotinas 3-EulerZYX-547


EulerZYX Funções

Sintaxe
EulerZYX’(’
['\'X ’,’] | ['\'Y ’,’] | ['\'Z ’,’]
[Rotação ’:=’] <expressão (IN) do orient>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

3-EulerZYX-548 Data Types do Sistema e Rotinas


Funções Exp

Exp Calcula o valor exponencial


Exp (Exponential) é usado para calcular o valor exponencial, ex.

Exemplo
VAR num x;
VAR num valor;
.
.
valor:= Exp( x);

Valor resultante Tipo de dado: num

O valor exponencial ex .

Argumentos
Exp (Expoente)
Expoente Tipo de dado: num

O valor do argumento expoente.

Sintaxe
Exp’(’
[Expoente ’:=’] <expressão (IN) do num>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-Exp-549


Exp Funções

3-Exp-550 Data Types do Sistema e Rotinas


Funções FileTime

FileTime Recuperar informação de tempo acerca de um


arquivo
FileTime se usa para recuperar a última informação de tempo para modificar e acessar
ou arquivar alterações de status de um arquivo. O tempo é medido em segs desde
00:00:00 GMT, 1 de jan. 1970. O tempo é devolvido como um num.

Exemplo
Load "ram1disk:notmymod.mod";
WHILE TRUE DO
! Chamar uma rotina em notmymod
notmymodrout;
IF FileTime("ram1disk:notmymod.mod" \ModifyTime)
> ModTime("notmymod") THEN
UnLoad "ram1disk:notmymod.mod";
Load "ram1disk:notmymod.mod";
ENDIF
ENDWHILE

Este programa recarrega um módulo caso exista um mais recente na fonte. Ele
usa ModTime para recuperar o último tempo carregado para o módulo especifi-
cado e para o comparar com FileTime\ModifyTime da fonte. Então, se a fonte for
mais recente, o programa descarrega e carrega novamente o módulo.

Valor de retorno Tipo de dados: num

O tempo é medido em segs desde 00:00:00 GMT, 1 de jan 1970.

Argumentos
FileTime ( Path [\ModifyTime] | [\AccessTime] | [\StatCTime] )
Path Tipo de dados: string

O arquivo especificado com um caminho total ou relativo.

ModifyTime Tipo de dados: switch

Hora da última modificação.

AccessTime Tipo de dados: switch

Hora do último acesso (ler, executar ou modificar).

Data Types do Sistema e Rotinas 3-FileTime-551


FileTime Funções

StatCTime Tipo de dados: switch

Hora da última alteração de status (acessar qualificação) do arquivo.

Execução do programa
Esta função devolve um valor númerico que especifica o tempo desde a última:

- Modificação
- Acesso
- Alteração de status do arquivo

do arquivo especificado.

Exemplo
Este é um exemplo completo que implementa um serviço de alerta para um
máximo de 10 arquivos.

LOCAL RECORD falert


string filename;
num ftime;
ENDRECORD

LOCAL VAR falert myfiles[10];


LOCAL VAR num currentpos:=0;
LOCAL VAR intnum timeint;

LOCAL TRAP mytrap


VAR num pos:=1;
WHILE pos <= currentpos DO
IF FileTime(myfiles{pos}.filename \ModifyTime) > myfiles{pos}.ftime THEN
TPWrite "O arquivo "+myfiles{pos}.filename+" é alterado";
ENDIF
pos := pos+1;
ENDWHILE
ENDTRAP

PROC alertInit(num freq)


currentpos:=0;
CONNECT timeint WITH mytrap;
ITimer freq,timeint;
ENDPROC

PROC alertFree()
IDelete timeint;
ENDPROC

3-FileTime-552 Data Types do Sistema e Rotinas


Funções FileTime

PROC alertNew(string filename)


currentpos := currentpos+1;
IF currentpos <= 10 THEN
myfiles{currentpos}.filename := filename;
myfiles{currentpos}.ftime := FileTime (filename \ModifyTime);
ENDIF
ENDPROC

Manuseio de erros
Se o arquivo não existe, a variável do sistema ERRNO é definida para
ERR_FILEACC. Esse erro poderá então ser manuseado pelo mecanismo de manuseio
de erros.

Sintaxe
FileTime ’(’
[ Path ’:=’ ] < expressão (IN) de string>
[ '\'ModifyTime] |
[ '\'AccessTime] |
[ '\'StatCTime] ’)’

Uma função com um valor devolvido do tipo de dados num.

Informações relacionadas
Descritas em:
Última vez que o módulo foi carregado Funções - ModTime

Data Types do Sistema e Rotinas 3-FileTime-553


FileTime Funções

3-FileTime-554 Data Types do Sistema e Rotinas


Funções GetTime

GetTime Lê o tempo atual como um valor numérico


GetTime é usado para ler um componente especificado de tempo como um valor
numérico.

GetTime pode ser usado para :

- o programa realizar uma ação num certo tempo,


- realizar certas atividades num dia de semana,
- abster-se de realizar certas atividades no fim de semana,
- responde a erros diferentemente dependendo do horário do dia.

Exemplo
hour := GetTime(\Hour);

A atual hora é gravada na variável hour.

Valor resultante Tipo de dado: num

Um dos quatro componentes de tempo especificados abaixo.

Argumentos
GetTime ( [\WDay] | [\Hour] | [\Min] | [\Sec] )
[\WDay] Tipo de dado: switch

Resulta no dia da semana atual.


Período: 1 a 7 (Segunda a Domingo).

[\Hour] Tipo de dado: switch

Resulta na hora atual.


Período: 0 a 23.

[\Min] Tipo de dado: switch

Resulta no minuto atual.


Período: 0 a 59.

[\Sec] Tipo de dado: switch

Resulta no segundo atual.


Período: 0 a 59.

Data Types do Sistema e Rotinas 3-GetTime-555


GetTime Funções

Um dos argumentos deve ser especificado, caso contrário a execução do programa pára
com uma mensagem de erro.

Exemplo
weekday := GetTime(\WDay);
hour := GetTime(\Hour);
IF weekday < 6 AND hour >6 AND hour < 16 THEN
production;
ELSE
maintenance;
ENDIF

Se é dia de semana e o horário está entre 7:00 e 15:59 o robô realiza a produção.
Nos demais horários, o robô está no modo de manutenção.

Sintaxe
GetTime ’(’
[’\’ WDay ]
| [ ’\’ Hour ]
| [ ’\’ Min ]
| [ ’\’ Sec ] ’)’

Uma função com valor resultante do tipo num.

Informação relacionada
Descrito em:
Instruções de horário e data RAPID Sumário - Sistema & Tempo
Ligando o sistema de relógio Guia do Usuário - Parâmetros do
Sistema

3-GetTime-556 Data Types do Sistema e Rotinas


Funções GOutput

GOutput Lê o valor de um grupo de sinais de saída digital


GOutput é usado para ler o valor atual de um grupo de sinais de saída digital.

Exemplo
IF GOutput(go2) = 5 THEN ...

Se o valor atual do sinal go2 é igual a 5, então ...

Valor resultante Tipo de dado: num


O valor atual do sinal (um positivo inteiro).

Os valores de cada sinal do grupo são lidos e interpretados como um número binário
sem sinal. Este número binário é então convertido em um inteiro.

O valor retornado encontra-se dentro de uma faixa que depende do número de sinais
do grupo.

No. de sinais Valor resultante No. de sinais Valor resultante


1 0-1 9 0 - 511
2 0-3 10 0 - 1023
3 0-7 11 0 - 2047
4 0 - 15 12 0 - 4095
5 0 - 31 13 0 - 8191
6 0 - 63 14 0 - 16383
7 0 - 127 15 0 - 32767
8 0 - 255 16 0 - 65535

Argumentos
GOutput (Signal)
Signal Tipo de dado: signalgo

O nome do grupo de sinal a ser lido.

Data Types do Sistema e Rotinas 3-GOutput-557


GOutput Funções

Sintaxe
GOutput ’(’
[ Signal ’:=’ ] < variable (VAR) of signalgo > ’)’

Uma função com valor resultante do tipo num.

Informação relacionada
Descrito em:
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
Sistema

3-GOutput-558 Data Types do Sistema e Rotinas


Funções IsPers

IsPers É Persistente
IsPers é usado para testar se um dado objeto é uma variável persistente ou não.

Exemplo
PROC procedure1 (INOUT num parameter1)
IF IsVar(parameter1) THEN
! For this call reference to a variable
...
ELSEIF IsPers(parameter1) THEN
! For this call reference to a persistent variable
...
ELSE
! Should not happen
EXIT;
ENDIF
ENDPROC

O procedimento procedure1 irá realizar diferentes ações dependendo se o


parâmetro atual parameter1 é uma variável ou uma variável persistente.

Valor resultante Tipo de dado: bool


TRUE se o parâmetro atual INOUT testado é uma variável persistente.
FALSE se o parâmetro atual INOUT testado não é uma variável persistente.

Argumentos
IsPers (DatObj)
DatObj (Data Object) Tipo de dado: qualquer
tipo

O nome do parâmetro INOUT formal.

Sintaxe
IsPers’(’
[ DatObj ’:=’ ] < var ou pers (INOUT) de qualquer tipo > ’)’

Uma função com valor resultante do tipo de dado bool.

Data Types do Sistema e Rotinas 3-IsPers-559


IsPers Funções

Informação relacionada
Descrito em:
Teste se é variável Função - IsVar
Tipos de parâmetros (modos de acesso) Características RAPID - Rotinas

3-IsPers-560 Data Types do Sistema e Rotinas


Funções IsVar

IsVar É Variável
IsVar é usado para testar se um dado objeto é uma variável ou não.

Exemplo
PROC procedure1 (INOUT num parameter1)
IF IsVAR(parameter1) THEN
! For this call reference to a variable
...
ELSEIF IsPers(parameter1) THEN
! For this call reference to a persistent variable
...
ELSE
! Should not happen
EXIT;
ENDIF
ENDPROC

O procedimento procedure1 irá realizar diferentes ações dependendo se o


parâmetro atual parameter1 é uma variável ou uma variável persistente.

Valor resultante Tipo de dado: bool

TRUE se o parâmetro atual INOUT testado é uma variável.


FALSE se o parâmetro atual INOUT testado não é uma variável.

Argumentos
IsVar (DatObj)
DatObj (Data Object) Tipo de dado: qualquer
tipo

O nome do parâmetro INOUT formal.

Sintaxe
IsVar’(’
[ DatObj ’:=’ ] < var or pers (INOUT) of any type > ’)’

Uma função com valor resultante do tipo de dado bool.

Data Types do Sistema e Rotinas 3-IsVar-561


IsVar Funções

Informação relacionada
Descrito em:
Teste se é persistente Função - IsPers
Tipos de parâmetros (modos de acesso) Características RAPID - Rotinas

3-IsVar-562 Data Types do Sistema e Rotinas


Funções MirPos

MirPos Espelhando uma posição


MirPos (Mirror Position) é usado para espelhar a translação ou rotação de uma
posição.

Exemplo
CONST robtarget p1;
VAR robtarget p2;
PERS wobjdata mirror;
.
.
p2 := MirPos(p1, mirror);

p1 é um robtarget carregando uma posição do robô e uma orientação da ferra-


menta. Esta posição é espelhada no plano xy do frame definido por mirror, rela-
tivo ao sistema de coordenadas global. O resultado é um novo dado robtarget,
que é guardado em p2.

Valor resultante Tipo de dado: robtarget

A nova posição que é a posição espelhada de uma posição de entrada.

Argumentos
MirPos (Point MirPlane [\WObj] [\MirY])
Point Tipo de dado: robtarget

A posição de entrada do robô. A orientação da posição define a orientação atual


do sistema de coordenadas da ferramenta.

MirPlane (Mirror Plane) Tipo de dado: wobjdata

O dado de objeto definindo o plano de espelho. O plano de espelho é o plano xy


do frame do objeto definido em MirPlane. A posição do frame do objeto é defi-
nida relativa ao frame usado, também definido em MirPlane, que é definido rel-
ativo ao frame global.

[\WObj] (Work Object) Tipo de dado: wobjdata

O dado de objeto de trabalho definindo o frame do objeto, e frame usado, relativo


a posição de entrada, Point, é definido. Se este argumento está a esquerda, a
posição está definida relativa ao sistema de coordenadas global.
Nota. Se a posição é criada com um objeto de trabalho ativo, este objeto de tra-
balho deve ser referenciado ao argumento.

Data Types do Sistema e Rotinas 3-MirPos-563


MirPos Funções

[\MirY] (Mirror Y) Tipo de dado: switch

Se este comando está a esquerda, que é a regra default, o frame da ferramenta será
espelhado em relação ao eixo x e ao eixo z. Se o comando é especificado, o frame
da ferramenta será espelhado em relação ao eixo y e ao eixo z.

Limitações
Nenhum recálculo é feito na configuração do robô no dado de entrada robtarget.

Sintaxe
MirPos’(’
[ Point ’:=’ ] < expressão (IN) de robtarget>’,’
[MirPlane ’:=’] <expressão (IN) de wobjdata> ’,’
[’\’WObj ’:=’ <expressão (IN) de wobjdata> ]
[’\’MirY ]’)’

Uma função com um valor resultante do tipo de dado robtarget.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

3-MirPos-564 Data Types do Sistema e Rotinas


Funções

ModTime Obter tempo de carga para módulo de carga


ModTime (Módulo de Tempo) se usa para recuperar o tempo de carga de um módulo
especificado. O módulo se especifica através de seu nome e deverá estar na memória
de tarefas. O tempo é medido em segs desde 00:00:00 GMT, 1 de jan 1970. O tempo é
devolvido como um num.

Exemplo
MODULE mymod

VAR num mytime;

PROC printMyTime()
mytime := ModTime("mymod");
TPWrite "My time is "+NumToStr(mytime,0);
ENDPROC

Valor de retorno Tipo de dados: num

O tempo é medido em segs desde 00:00:00 GMT, 1 de jan 1970.

Argumentos
ModTime ( Object )
Objeto Tipo de dados: string

O nome do módulo.

Execução do programa
Esta função devolve um valor numérico que especifica o tempo quando o módulo é
carregado.

Data Types do Sistema e Rotinas 3--565


Funções

Exemplo
Este é um exemplo completo que implementa um serviço “atualizar se mais
recente”.

MODULE updmod
PROC callrout()
Load "ram1disk:mymod.mod";
WHILE TRUE DO
! Chamar alguma rotina em mymod
mymodrout;
IF FileTime("ram1disk:mymod.mod" \ModifyTime)
> ModTime("mymod") THEN
UnLoad "ram1disk:mymod.mod";
Load "ram1disk:mymod.mod";
ENDIF
ENDWHILE
ENDPROC
ENDMODULE

Este programa recarrega um módulo se existir um mais recente na fonte. Ele usa
ModTime para recuperar o último tempo de carga para o módulo especificado e
o compara com FileTime\ModifyTime na fonte. Em seguida, se a fonte é mais
recente, o programa descarrega e carrega novamente o módulo.

Sintaxe
ModTime ’(’
[ Object ’:=’ ] < expressão (IN) de string>’)’

Uma função com um valor devolvido do tipo de dados num.

Informações relacionadas
Descritas em:
Recuperar info. de tempo acerca de um arquivoFunções - FileTime

3--566 Data Types do Sistema e Rotinas


Funções NOrient

NOrient Normaliza a Orientação


NOrient (Normalise Orientation) é usada para regularizar a orientação fora do normal
(quatérnion).

Descrição
Uma orientação deverá ser normalizada, i. é.; a soma dos quadrados deverá ser
igual a 1:
q 12 + q 22 + q 32 + q 42 = 1

Se a orientação estiver ligeiramente fora do normal, será possível normalizá-la.


O erro de normalização é o valor absoluto da soma dos quadrados dos componentes da
orientação.
A orientação é considerada ligeiramente fora do normal, se o erro de noramalização
estiver no intervalo entre 0,00001 e 0,1. Se o erro de normalização for superior a 0,1 a
orientação será considerada incomum.

2 2 2 2
ABS ( q 1 + q 2 + q 3 + q 4 – 1 ) = normerr

normerr > 0.1 Incomum


normerr > 0.00001 AND err <= 0.1 Ligeiramente fora do normal
normerr <= 0.00001 Normalizada

Exemplo
Temos uma posição ligeiramente fora do normal ( 0.707170, 0, 0, 0.707170 )

2 2 2 2
ABS ( 0,707170 + 0 + 0 + 0,707170 – 1 ) = 0,0000894

0,0000894 > 0,00001 ⇒ Fora

VAR orient unnormorient := [0.707170, 0, 0, 0.707170];


VAR orient normorient;
.
.
normorient := NOrient(unnormorient);

A normalização da orientação ( 0.707170, 0, 0, 0.707170 ) vira ( 0.707107, 0, 0,


0.707107 ).

Data Types do Sistema e Rotinas 3-NOrient-567


NOrient Funções

Valor de retorno Tipo de dados: orient

A orientação normalizada.

Argumentos
NOrient (Rotação)
Orient Tipo de dados: orient

A orientação a ser normalizada.

Sintaxe
NOrient’(’
[Rotation ’:=’] <expressão (IN) de orient>
’)’

Uma função com um valor de retorno de tipo de dados orient.

Informações relacionadas
Descritas em:
Funções e instruções matemáticas Sumário RAPID - Mathematics

3-NOrient-568 Data Types do Sistema e Rotinas


Funções NumToStr

NumToStr Converte um valor numérico em texto


NumToStr (Numeric To String) é usado para converter um valor numérico em um texto.

Exemplo
VAR string str;

str := NumToStr(0.38521,3);

A variável str recebe o valor "0.385".

reg1 := 0.38521

str := NumToStr(reg1, 2\Exp);

A variável str recebe o valor "3.85E-01".

Valor resultante Tipo de dado: string

O valor numérico convertido em texto com o especificado número de decimais, com


expoente se assim requerido. O valor numérico é arredondado se necessário. O ponto
decimal é suprimido se não estão incluídos decimais.

Argumentos
NumToStr (Val Dec [\Exp])
Val (Value) Tipo de dado: num

O valor numérico a ser convertido.

Dec (Decimals) Tipo de dado: num

Número de decimais. O número de decimais não deve ser negativo ou maior que
a precisão disponível para valores numéricos.

[\Exp] (Exponent) Tipo de dado: switch

Para usar expoentes.

Data Types do Sistema e Rotinas 3-NumToStr-569


NumToStr Funções

Sintaxe
NumToStr’(’
[ Val ’:=’ ] <expressão (IN) do num> ’,’
[ Dec ’:=’ ] <expressão (IN) do num>
[ \Exp ]
’)’

Uma função com valor resultante do tipo de dado string.

Informação relacionada
Descrito em:
Funções com string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas-
Elementos básicos

3-NumToStr-570 Data Types do Sistema e Rotinas


Funções Offs

Offs Desloca uma posição do robô


Offs é usado para adicionar um offset a uma posição do robô.

Exemplos
MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1;

O robô se move para um ponto 10 mm da posição p2 (na direção z).

p1 := Offs (p1, 5, 10, 15);

A posição do robô p1 é deslocada 5 mm na direção x, 10 mm na direção y e 15


mm na direção z.

Valor resultante Tipo de dado: robtarget

O dado de posição deslocado.

Argumentos
Offs (Point XOffset YOffset ZOffset)
Point Tipo de dado: robtarget

O dado de posição a ser deslocado.

XOffset Tipo de dado: num

O deslocamento na direção x.

YOffset Tipo de dado: num

O deslocamento na direção y.

ZOffset Tipo de dado: num

O deslocamento na direção z.

Data Types do Sistema e Rotinas 3-Offs-571


Offs Funções

Exemplo
PROC pallet (num row, num column, num distance, PERS tooldata tool,
PERS wobjdata wobj)

VAR robtarget palletpos:=[[0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0],


[9E9, 9E9, 9E9, 9E9, 9E9, 9E9]];

palettpos := Offs (palettpos, (row-1)*distance, (column-1)*distance, 0);


MoveL palettpos, v100, fine, tool\WObj:=wobj;

ENDPROC

É feita uma rotina para pegar partes em um pallet. Cada pallet é definido como
um objeto de trabalho (veja a Figura 1). A parte a ser pega (linha e coluna) e a
distância entre as partes são dadas como parâmetros de entrada.
O aumento do índice da linha e da coluna é realizado fora da rotina.

Colunas
eixo Y
O O O O O O O O O O
O O O O O O O O O O
Linhas O O O O O O O O O O
O O O O O O O O O O
eixo X
O O O O O O O O O O

Figure 35 A posição e orientação do pallet é especificado definindo o objeto de trabalho.

Sintaxe
Offs ’(’
[Point ’:=’] <expressão (IN) do robtarget> ’,’
[XOffset ’:=’] <expressão (IN) do num> ’,’
[YOffset ’:=’] <expressão (IN) do num> ’,’
[ZOffset ’:=’] <expressão (IN) do num> ’)’

Uma função com valor resultante do tipo de dado robtarget.

Informação relacionada
Descrito em:
Dado de posição Tipos de dados - robtarget

3-Offs-572 Data Types do Sistema e Rotinas


Funções OpMode

OpMode Lê o modo de operação


OpMode (Operating Mode) é usado para ler o atual modo de operação do sistema.

Exemplo
TEST OpMode()
CASE OP_AUTO:
...
CASE OP_MAN_PROG:
...
CASE OP_MAN_TEST:
...
DEFAULT:
...
ENDTEST

Seções diferentes do programa são executadas dependendo do atual modo de operação.

Valor resultante Tipo de dado: symnum

O atual modo de operação como definido na tabela abaixo.

Valor resultante Constantes Simbólicas Comentário

0 OP_UNDEF Modo de operação indefinido

1 OP_AUTO Modo de operação automático

2 OP_MAN_PROG Modo de operação manual


máx. 250 mm/s

3 OP_MAN_TEST Modo de operação manual


velocidade máxima, 100 %

Sintaxe
OpMode’(’ ’)’
Uma função com valor resultante do tipo de dado symnum.

Informação relacionada
Descrito em:
Diferentes modos de operação Guia do Usuário - Starting up
Lendo modo de execução Funções - Modo de Operação

Data Types do Sistema e Rotinas 3-OpMode-573


OpMode Funções

3-OpMode-574 Data Types do Sistema e Rotinas


Funções OrientZYX

OrientZYXConstrói uma orientação de ângulos de Euler


OrientZYX (Orient from Euler ZYX angles) é usado para construir um tipo de orien-
tação variável a partir dos ângulos de Euler.

Exemplo
VAR num anglex;
VAR num angley;
VAR num anglez;
VAR pose object;
.
object.rot := OrientZYX(anglez, angley, anglex)

Valor resultante Tipo de dado: orient

A orientação feita a partir dos ângulos de Euler.

As rotações serão realizadas na seguinte ordem:


-rotação em torno do eixo z,
-rotação em torno do novo eixo y
-rotação em torno do novo eixo x.

Argumentos
OrientZYX (ZAngle YAngle XAngle)
ZAngle Tipo de dado: num

A rotação, em graus, em volta do eixo Z.

YAngle Tipo de dado: num

A rotação, em graus, em volta do eixo Y.

XAngle Tipo de dado: num

A rotação, em graus, em volta do eixo X.

As rotações serão realizadas na seguinte ordem:


-rotação em torno do eixo z,
-rotação em torno do novo eixo y,
-rotação em torno do novo eixo x.

Data Types do Sistema e Rotinas 3-OrientZYX-575


OrientZYX Funções

Sintaxe
OrientZYX’(’
[ZAngle ’:=’] <expressão (IN) do num> ’,’
[YAngle ’:=’] <expressão (IN) do num> ’,’
[XAngle ’:=’] <expressão (IN) do num>
’)’

Uma função com valor resultante do tipo de dado orient.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

3-OrientZYX-576 Data Types do Sistema e Rotinas


Funções ORobT

ORobT Remove um deslocamento de uma posição


ORobT (Object Robot Target) é usado para transformar uma posição do robô do sis-
tema de coordenada do deslocamento de programa para o sistema de coordenadas do
objeto e/ou para remover um offset para os eixos externos.

Exemplo
VAR robtarget p10;
VAR robtarget p11;

p10 := CRobT();
p11 := ORobT(p10);

As atuais posições do robô e eixos externos são guardadas em p10 e p11. Os val-
ores guardados em p10 estão relacionados com a coordenada de sistema
ProgDisp/ExtOffs. Os valores guardados em p11 estão relacionados com a
coordenada de sistema do objeto sem nenhum offset nos eixos externos.

Valor resultante Tipo de dado: robtarget

O dado de posição transformado.

Argumentos
ORobT (OrgPoint [\InPDisp] | [\InEOffs])
OrgPoint (Original Point) Tipo de dado: robtarget

O ponto original a ser transformado.

[\InPDisp] (In Program Displacement) Tipo de dado: switch

Retorna a posição TCP na coordenada de sistema do ProgDisp, isto é, remove


somente offset de eixos externos.

[\InEOffs] (In External Offset) Tipo de dado: switch

Retorna os eixos externos para a coordenada de sistema offset, isto é, remove


somente o deslocamento de programa do robô.

Data Types do Sistema e Rotinas 3-ORobT-577


ORobT Funções

Exemplos
p10 := ORobT(p10 \InEOffs );

A função ORobT irá remover qualquer deslocamento de programa que está ativo,
deixando a posição TCP relativa ao sistema de coordenadas do objeto. Os eixos
externos irão permanecer na coordenada de sistema offset.

p10 := ORobT(p10 \InPDisp );

A função ORobT irá remover qualquer offset de eixos externos. A posição TCP
irá permanecer na coordenada de sistema ProgDisp.

Sintaxe
ORobT ’(’
[ OrgPoint ’:=’ ] < expressão (IN) do robtarget>
[’\’InPDisp] | [’\’InEOffs]’)’

Uma função com valor resultante do tipo de dado robtarget.

Informação relacionada
Descrito em:
Definição de deslocamento de programa Instruções - PDispOn, PDispSet
para o robô
Definição de offset para eixos externos Instruções - EOffsOn, EOffsSet
Sistemas de coordenadas Movimento e Princípios de E/S -
Sistemas de Coordenadas

3-ORobT-578 Data Types do Sistema e Rotinas


Funções PoseInv

PoseInv Inverte a posição


PoseInv (Pose Invert) calcula a transformação inversa da posição.

Exemplo
z1
Posição1

z0 Frame1

y1
x1
Frame0
y0 Posição2
x0

Posição1 representa a coordenada de Frame1 relativa a Frame0.


A transformação da coordenada de Frame0 relativa a Frame1 é obtida pela transfor-
mação inversa:

VAR pose pose1;


VAR pose pose2;
.
.
pose2 := PoseInv(pose1);

Valor resultante Tipo de dado: pose

O valor da posição inversa.

Argumentos
PoseInv (Pose)
Pose Tipo de dado: pose

A posição a ser invertida.

Data Types do Sistema e Rotinas 3-PoseInv-579


PoseInv Funções

Sintaxe
PoseInv’(’
[Pose ’:=’] <expressão (IN) do pose>
’)’

Uma função com valor resultante do tipo de dado pose.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

3-PoseInv-580 Data Types do Sistema e Rotinas


Funções PoseMult

PoseMult Multiplica o dado de posição


PoseMult (Pose Multiply) é usado para calcular o produto de duas transformações
frame. O uso típico é para calcular um novo frame como o resultado de uma atuação
de deslocamento de um frame original.

Exemplo

z1

posição1 y1 z2
z0 posição2
Frame1

x1 Frame2
Frame0
y0 y2
posição3 x2
x0

pose1 representa a coordenada de Frame1 relativa a Frame0.


pose2 representa a coordenada de Frame2 relativa a Frame1.

A transformação da posição 3, as coordenadas de Frame2 relativa a Frame0, é obtida


pelo produto de duas transformações:

VAR pose pose1;


VAR pose pose2;
VAR pose pose3;
.
.
pose3 := PoseMult(pose1, pose2);

Valor resultante Tipo de dado: pose

O valor do produto de duas posições.

Data Types do Sistema e Rotinas 3-PoseMult-581


PoseMult Funções

Argumentos
PoseMult (Pose1 Pose2)
Pose1 Tipo de dado: pose

A primeira posição.

Pose2 Tipo de dado: pose

A segunda posição.

Sintaxe
PoseMult’(’
[Pose1 ’:=’] <expressão (IN) do pose> ’,’
[Pose2 ’:=’] <expressão (IN) do pose>
’)’

Uma função com valor resultante do tipo de dado pose.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

3-PoseMult-582 Data Types do Sistema e Rotinas


Funções PoseVect

PoseVect Aplica uma transformação em um vetor


PoseVect (Pose Vector) é usado para calcular o produto de uma posição e um vetor.
É tipicamente usado para calcular um vetor como o resultado do efeito de um desloca-
mento em um vetor original.

Exemplo

pos1
pos2 z1
z0

posição1 y1
Frame1
Frame0
y0 x1
x0

pose1 representa a coordenada de Frame1 relativa a Frame0.


pos1 é um vetor relativo a Frame1.

O vetor correspondente relativo a Frame0 é obtido pelo produto:

VAR pose pose1;


VAR pos pos1;
VAR pos pos2;
.
.
pos2:= PoseVect(pose1, pos1);

Valor resultante Tipo de dado: pos

O valor do produto da posição e da posição original.

Data Types do Sistema e Rotinas 3-PoseVect-583


PoseVect Funções

Argumentos
PoseVect (Pose Pos)
Pose Tipo de dado: pose

A transformação a ser aplicada.

Pos Tipo de dado: pos

A posição a ser transformada.

Sintaxe
PoseVect’(’
[Pose ’:=’] <expressão (IN) do pose> ’,’
[Pos ’:=’] <expressão (IN) do pos>
’)’

Uma função com valor resultante do tipo de dado pos.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

3-PoseVect-584 Data Types do Sistema e Rotinas


Funções Pow

Pow Calcula a potência de um valor


Pow (Power) é usado para calcular o valor exponencial em qualquer base.

Exemplo
VAR num x;
VAR num y
VAR num reg1;
.
reg1:= Pow(x, y);

reg1 é designado o valor xy.

Valor resultante Tipo de dado: num

O valor da base x elevado ao expoente y ( xy ).

Argumentos
Pow (Base Exponent)
Base Tipo de dado: num

O valor do argumento base.

Exponent Tipo de dado: num

O valor do argumento expoente.

Limitações
A execução da função xy dará erro se:

. x < 0 e y não é inteiro;


. x = 0 e y < 0.

Sintaxe
Pow’(’
[Base ’:=’] <expressão (IN) do num> ’,’
[Exponent ’:=’] <expressão (IN) do num>
’)’

Manual de Referência do RAPID 9-Pow-585


Pow Funções

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

9-Pow-586 Manual de Referência do RAPID


Funções Present

Present Testa se um parâmetro opcional é usado


Present é usado para testar se um argumento opcional é usado quando se chama uma
rotina.

Um parâmetro opcional não pode ser usado se ele não foi especificado quando a rotina
foi chamada. Esta função pode ser usada para testar se um parâmetro foi especificado,
para prevenir a ocorrência de erros.

Exemplo
PROC feeder (\switch on | \switch off)

IF Present (on) Set do1;


IF Present (off) Reset do1;

ENDPROC

A saída do1, que controla um alimentador, é ligada ou desligada dependendo do


argumento usado quando chamando a rotina.

Valor resultante Tipo de dado: bool

TRUE = O valor do parâmetro ou uma chave foi definida quando chamando a rotina.

FALSE = O valor do parâmetro ou uma chave não foi definida.

Argumentos
Present (OptPar)
OptPar (Optional Parameter) Tipo de dado: qualquer

O nome do parâmetro opcional a ser testado.

Data Types do Sistema e Rotinas 3-Present-587


Present Funções

Exemplo
PROC glue (\switch on, num glueflow, robtarget topoint, speeddata speed,
zonedata zone, PERS tooldata tool, \PERS wobjdata wobj)

IF Present (on) PulseDO glue_on;


SetAO gluesignal, glueflow;
IF Present (wobj) THEN
MoveL topoint, speed, zone, tool \WObj=wobj;
ELSE
MoveL topoint, speed, zone, tool;
ENDIF

ENDPROC

É feita uma rotina de cola. Se o argumento \on é especificado quando chamando


a rotina, um pulso é gerado no sinal glue_on. Então o robô liga uma saída analóg-
ica gluesignal, que controla a pistola de cola, e move para a posição final. Como
o parâmetro do objeto de trabalho é opcional, diferentes instruções MoveL são
usadas dependendo se o argumento é usado ou não.

Sintaxe
Present ’(’
[OptPar’:=’] <referência (REF) de qualquer tipo> ’)’

Um parâmetro REF requer, neste caso, o nome do parâmetro opcional.

Uma função com valor resultante do tipo de dado bool.

Informação relacionada
Descrito em:
Parâmetros de rotina Características Básicas - Rotinas

3-Present-588 Data Types do Sistema e Rotinas


Funções ReadBin

ReadBin Lê um byte de um arquivo ou canal serial


ReadBin (Ler Binário) é usado para ler um byte (8 bits) a partir de um arquivo ou canal
serial.

Essa função trabalha em arquivos ou canais seriais, sejam binários ou baseados em


caractere.

Exemplo
VAR num character;
VAR iodev inchannel;
...
Open "sio1:", inchannel\Bin;
character := ReadBin(inchannel);

Um byte é lido do canal serial binário inchannel.

Valor resultante Tipo de dado: num

Um byte (8 bits) é lido de um canal serial ou arquivo específico. Este byte é convertido
no valor numérico positivo correspondente e é retornado como um tipo de dados num.
Se o arquivo estiver vazio (fim do arquivo), o número -1 será retornado.

Argumentos
ReadBin (IODevice [\Time])
IODevice Tipo de dado: iodev

O nome (referência) do canal ou arquivo serial a ser lido.

[\Time] Tipo de dado: num

O tempo máximo para operação de leitura (timeout) em segundos. Se este argu-


mento não é especificado, o tempo máximo é fixado em 60 segundos.

Se este tempo acaba antes de terminar a operação de leitura, o tratamento de erros


será chamado com o código de erro ERR_DEV_MAXTIME. Se não há trata-
mento de erros, a execução terminará.

A função timeout está em funcionamento mesmo durante a parada do programa


e será notificada no programa RAPID no seu início.

Manual de Referência do RAPID 9-ReadBin-589


ReadBin Funções

Execução do programa
A execução do programa espera até que um byte (8 bits) possa ser lido do arquivo ou
canal serial.

Exemplo
VAR num bindata;
VAR iodev file;

Open “flp1:myfile.bin”, file \Read \Bin;


bindata := ReadBin(file);
WHILE bindata <> EOF_BIN DO
TPWrite ByteToStr(bindata\Char);" " \Num:=bindata;
bindata := ReadBin(file);
ENDWHILE

Lê o conteúdo de um arquivo binário myfile.bin, do início ao fim do arquivo, e


exibe os dados binários recebidos da unidade de programação, convertidos em
caracteres ASCII (um caractere em cada linha).

Limitações
A função só pode ser usada para canais seriais e arquivos que tenham sido abertos para
leitura (\Read para arquivos baseados em caractere, \Bin ou \Append \Bin para arquivos
binários).

Tratamento de erros
Se um erro ocorre durante a leitura, a variável do sistema ERRNO é fixada para
ERR_FILEACC. Este erro pode então ser lidado pelo tratamento de erros.

Dados predefinidos
A constante EOF_BIN pode ser usada para parar a leitura no fim do arquivo.

CONST num EOF_BIN := -1;

Sintaxe
ReadBin’(’
[IODevice ’:=’] <variável (VAR) do iodev>
[’\’Time’:=’ <expressão (IN) do num>]’)’

9-ReadBin-590 Manual de Referência do RAPID


Funções ReadBin

Uma função com valor resultante do tipo de dado num.

Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos ou canais seriais Sumário RAPID - Comunicação
Converter um byte em dados de “string” Funções - ByteToStr

Manual de Referência do RAPID 9-ReadBin-591


ReadBin Funções

9-ReadBin-592 Manual de Referência do RAPID


Funções ReadMotor

ReadMotor Lê os ângulos atuais do motor


ReadMotor é usado para ler os atuais ângulos dos diferentes motores do robô e eixos
externos. O principal uso desta função está no procedimento de calibração do robô.

Exemplo
VAR num motor_angle2;

motor_angle2 := ReadMotor(2);

O atual ângulo do motor do segundo eixo do robô está guardado em


motor_angle2.

Valor resultante Tipo de dado: num

O atual ângulo do motor em radianos do eixo indicado do robô ou eixos externos.

Argumentos
ReadMotor [\MecUnit ] Axis
MecUnit (Mechanical Unit) Tipo de dado: mecunit

O nome da unidade mecânica para a qual um eixo deve ser lido. Se este argu-
mento é omitido, o eixo do robô é lido. (Note, nesta versão somente o robô é per-
mitido para este argumento).

Axis Tipo de dado: num

O número do eixo a ser lido (1 - 6).

Execução do programa
O ângulo do motor resultante representa a atual posição em radianos para o motor e
independende de qualquer offset de calibração. O valor não é relativo a uma posição
fixa do robô, somente à posição zero do resolver interno, isto é, normalmente a posição
zero do resolver mais próxima à posição de calibração (a diferença entre a posição zero
do resolver e a posição de calibração é o valor do offset de calibração). O valor repre-
senta o movimento completo de cada eixo, embora este possa estar com várias voltas.

Data Types do Sistema e Rotinas 3-ReadMotor-593


ReadMotor Funções

Exemplo
VAR num motor_angle3;

motor_angle3 := ReadMotor(\MecUnit:=robot, 3);

O atual ângulo do motor do terceiro eixo do robô é guardado em motor_angle3.

Sintaxe
ReadMotor’(’
[’\’MecUnit ’:=’ < variable (VAR) of mecunit>’,’]
[Axis ’:=’ ] < expression (IN) of num>
’)’

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Lendo o atual ângulo do punho Funções - CJointT

3-ReadMotor-594 Data Types do Sistema e Rotinas


Funções ReadNum

ReadNum Lê um número de um arquivo ou canal serial


ReadNum (Ler Numérico) é usado para ler um número de um arquivo baseado em cara-
cteres ou de um canal serial.

Exemplo
VAR iodev infile;
...
Open "flp1:file.doc", infile\Read;
reg1 := ReadNum(infile);

Reg1 é designado um número lido de um arquivo file.doc em um disquete.

Valor resultante Tipo de dado: num

O valor numérico lido de um arquivo ou canal serial específico.


Se o arquivo estiver vazio (fim do arquivo), o número 9.999E36 será retornado.

Argumentos
ReadNum (IODevice [\Delim] [\Time])
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial a ser lido.

[\Delim] (Delimitadores) Tipo de dados: string

Uma string contendo os delimitadores a serem usados ao analisar uma linha no


arquivo ou canal serial. Por padrão (sem \Delim), o arquivo é lido linha por linha
e o caractere de avanço de linha (\0A) é o único delimitador considerado pela
análise. Quando o argumento \Delim é usado, qualquer caractere no argumento
string especificado é considerado para determinar a parte significante da linha.

Se o argumento \Delim for usado, o sistema de controle sempre adicionará os


caracteres de retorno de carro (\0D) e de avanço de linha (\0A) aos delimitadores
especificados pelo usuário.

Para especificar caracteres não alfanuméricos, use \xx, onde xx é a representação


hexadecimal do código ASCII do caractere (por exemplo, TAB é especificado
por \09).

[\Time] Tipo de dados: num

O tempo máximo para operação de leitura (timeout) em segundos. Se este argu-

Manual de Referência do RAPID 9-ReadNum-595


ReadNum Funções

mento não é especificado, o tempo máximo é fixado em 60 segundos.

Se este tempo acaba antes de terminar a operação de leitura, o tratamento de erros


será chamado com o código de erro ERR_DEV_MAXTIME. Se não há trata-
mento de erros, a execução terminará.

A função timeout está em funcionamento mesmo durante a parada do programa


e será notificada no programa RAPID no início do programa.

Execução do programa
Começando pela posição atual no arquivo, a função lê e descarta quaisquer delimitado-
res de título. Delimitadores de título sem o argumento \Delim são o caractere de avanço
de linha. Delimitadores de título com o argumento \Delim são quaisquer ca-racteres
especificados no argumento \Delim e mais os caracteres de retorno de carro e avanço
de linha. Em seguida, a função lê tudo até e incluindo o próximo caracter delimitador
(que será descartado), mas não mais que 80 caracteres. Se a parte significante exceder
80 caracteres, os caracteres restantes serão lidos na próxima leitura.

O texto que é lido é então convertido em um valor numérico; ex. “234.4” é convertido
em um valor numérico 234.4.

Exemplo
reg1 := ReadNum(infile\Delim:="\09 ");
IF reg1 > EOF_NUM THEN
TPWrite "The file is empty";
...

Lê um número em uma linha na qual os números são separados por caracteres


TAB ("\09") ou SPACE (" ").
Antes de usar o número lido do arquivo, uma verificação é feita para assegurar
que o arquivo não está vazio.

Limitações
A função somente pode ser usada para arquivos baseados em caractere que tenham sido
abertos para leitura.

Tratamento de erros
Quando um erro de acesso ocorre durante a leitura, a variável do sistema ERRNO é
definida como ERR_FILEACC.
Quando há uma tentativa de ler um dado não numérico, a variável do sistema ERRNO
é definida como ERR_RCVDATA. Assim, esses erros podem ser tratados pela rotina
de tratamento de erros.

9-ReadNum-596 Manual de Referência do RAPID


Funções ReadNum

Dados predefinidos
A constante EOF_NUM pode ser usada para interromper a leitura, no final do arquivo.

CONST num EOF_NUM := 9.998E36;

Sintaxe
ReadNum ’(’
[IODevice ’:=’] <variable (VAR) of iodev>
[‘\’Delim’:=’<expression (IN) of string>]
[’\’Time’:=’ <expression (IN) of num>]’)’

Uma função com valor resultante do tipo de dado num.

Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos ou canais seriais Sumário RAPID - Comunicação

Manual de Referência do RAPID 9-ReadNum-597


ReadNum Funções

9-ReadNum-598 Manual de Referência do RAPID


Funções ReadStr

ReadStr Lê um texto de um arquivo ou do canal serial


ReadStr (Ler String) é usado para ler texto de um arquivo baseado em caracteres ou de
um canal serial.

Exemplo
VAR string text;
VAR iodev infile;
...
Open "flp1:file.doc", infile\Read;
text := ReadStr(infile);

Text recebe texto lido do arquivo file.doc no disquete.

Valor resultante Tipo de dado: string

O texto lido do arquivo ou canal serial especificado.


Se o arquivo estiver vazio (fim do arquivo), o texto "EOF" será retornado.

Argumentos
ReadStr (IODevice [\Delim] [\RemoveCR] [\DiscardHeaders]
[\Time])
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial a ser lido.

[\Delim] (Delimitadores) Tipo de dados: string

Uma string contendo os delimitadores a serem usados ao analisar uma linha no


arquivo ou canal serial. Por padrão, o arquivo é lido linha por linha e o caractere
de avanço de linha (\0A) é o único delimitador considerado pela análise. Quando
o argumento \Delim é usado, qualquer caractere no argumento string especifi-
cado é considerado para determinar a parte significante da linha.

Para especificar caracteres não alfanuméricos, use \xx, onde xx é a representação


hexadecimal do código ASCII do caractere (por exemplo, TAB é especificado
por \09).

[\RemoveCR] Tipo de dados: switch

Uma opção usada para remover o caractere de retorno de carro ao ler arquivos
de PC. Nos arquivos de PC, uma nova linha é especificada por um retorno de
carro e um avanço de linha (CRLF). Na leitura de uma linha em tais arquivos, o

Manual de Referência do RAPID 9-ReadStr-599


ReadStr Funções

ca-ractere de retorno é incluído no texto de retorno por padrão. Quando esse argu-
mento é usado, o caractere de retorno de carro é lido do arquivo mas não é
incluído no texto de retorno.

[\DiscardHeaders] Tipo de dados: switch

Esse argumento especifica se os delimitadores de título (especificados em \Delim


e mais o avanço de linha padrão) são ignorados ou não antes da transferência de
dados para o texto de retorno. Por padrão, se o primeiro caractere na posição atual
de arquivo for um delimitador, ele será lido mas não transferido para o texto de
retorno, a análise da linha será interrompida e o retorno será um texto vazio.Se
esse argumento for usado, todos os delimitadores incluídos na linha serão lidos
do arquivo, porém descartados, e o texto de retorno conterá os dados a partir do
primeiro caractere não delimitador da linha.

[\Time] Tipo de dado: num

O tempo máximo para operação de leitura (timeout) em segundos. Se este argu-


mento não é especificado, o tempo máximo é fixado em 60 segundos.

Se este tempo acaba antes de terminar a operação de leitura, o tratamento de erros


será chamado com o código de erro ERR_DEV_MAXTIME. Se não há trata-
mento de erros, a execução terminará.

A função timeout está em funcionamento mesmo durante a parada do programa


e será notificada no programa RAPID no início do programa.

Execução do programa
Começando pela posição atual de arquivo, se o argumento \DiscardHeadres for usado,
a função lerá e descartará quaisquer delimitadores de título (caracteres de avanço de
linha e qualquer caractere especificado no argumento \Delim). Em todos os casos, a
função lerá tudo até o próximo caractere delimitador, mas não mais que 80 caracteres.
Se a parte significante exceder 80 caracteres, os caracteres restantes serão lidos na
próxima leitura. O delimitador a causar a interrupção da análise é lido do arquivo mas
não é transferido para o texto de retorno. Se o último caractere do texto for um retorno
de carro e o argumento \RemoveCR for usado, esse caractere será removido do texto.

Exemplo
text := ReadStr(infile);
IF text = EOF THEN
TPWrite "The file is empty";
...

Antes de usar o texto lido do arquivo, uma verificação é feita para assegurar que
o arquivo não está vazio.

9-ReadStr-600 Manual de Referência do RAPID


Funções ReadStr

Exemplo
Considerando um arquivo que contenha:
<LF><SPACE><TAB>Ola<SPACE><SPACE>Mundo<CR><LF>

text := ReadStr(infile);

o texto será uma cadeia vazia: o primeiro caractere do arquivo é o delimitador


padrão <LF>.

text := ReadStr(infile\DiscardHeaders);

o texto conterá <SPACE><TAB>Ola<SPACE><SPACE>World<CR>: o pri-


meiro caractere do arquivo, o delimitador padrão <LF>, é descartado.

text := ReadStr(infile\RemoveCR\DiscardHeaders);

o texto conterá <SPACE><TAB>Ola<SPACE><SPACE>Mundo: o primeiro


caractere do arquivo, o delimitador padrão <LF>, será descartado; o caractere de
retorno de carro final será removido

text := ReadStr(infile\Delim:=” \09”\RemoveCR\DiscardHeaders);

o texto conterá “Ola”: os primeiros caracteres do arquivo que coincidem com o


delimitador padrão <LF> ou com o conjunto de caracteres delimitado por \Delim
(espaço ou tab) são descartados. Em seguida, os dados são transferidos até o pri-
meiro delimitador lido do arquivo mas não transferido para a cadeia. Uma nova
chamada da mesma instrução retornará “Mundo”.

Exemplo
Considerando um arquivo que contenha:
<CR><LF>Hello<CR><LF>

text := ReadStr(infile);

o texto conterá o caractere <CR> (\0d): os caracteres <CR> e <LF> são lidos do
arquivo, mas somente <CR> é transferido para a cadeia. Uma nova chamada da
mesma instrução retornará “Ola\0d”.

text := ReadStr(infile\RemoveCR);

o texto conterá uma cadeia vazia: os caracteres <CR> e <LF> são lidos do
arquivo; <CR> é transferido mas é removido da cadeia. Uma nova chamada da
mesma instrução retornará “Ola”.

text := ReadStr(infile\Delim:=”\0d”);

o texto conterá uma cadeia vazia: <CR> é lido do arquivo mas não é transferido
para a cadeia de retorno. Uma nova chamada da mesma instrução retornará nova-
mente uma cadeia vazia: <LF> é lido do arquivo mas não é transferido para a

Manual de Referência do RAPID 9-ReadStr-601


ReadStr Funções

cadeia de retorno.

text := ReadStr(infile\Delim:=”\0d”\DiscardHeaders);

o texto conterá “Ola”. Uma nova chamada da mesma instrução retornará “EOF”
(final do arquivo).

Limitações
A função somente pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para leitura em um modo baseado em caracteres.

Tratamento de erros
Se um erro de acesso ocorre durante a leitura, a variável do sistema ERRNO é fixada
em ERR_FILEACC. Estes erros podem então ser lidados pelo tratamento de erros.

Dados predefinidos
A constante EOF pode ser usada para verificar se o arquivo estava vazio quando da ten-
tativa da ler o arquivo ou parar a leitura no fim do arquivo.

CONST string EOF := "EOF";

Sintaxe
ReadStr ’(’
[IODevice ’:=’] <variable (VAR) of iodev>
[‘\’Delim’:=’<expression (IN) of string>]
[‘\’RemoveCR]
[‘\’DiscardHeaders]
[’\’Time’:=’ <expression (IN) of num>]’)’

Uma função com valor resultante do tipo string.

Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos ou canais seriais Sumário RAPID - Comunicação

9-ReadStr-602 Manual de Referência do RAPID


Funções RelTool

RelToolFaz um deslocamento relativo para a ferramenta


RelTool (Relative Tool) é usado para adicionar um deslocamento e/ou uma rotação,
expresso no sistema de coordenadas da ferramenta, para a posição do robô.

Exemplo
MoveL RelTool (p1, 0, 0, 100), v100, fine, tool1;

O robô é movido para uma posição que é 100 mm do p1 na direção da ferra-


menta.

MoveL RelTool (p1, 0, 0, 0 \Rz:= 25), v100, fine, tool1;

A ferramenta sdorerá rotação 25o em volta do seu eixo z.

Valor resultante Tipo de dado: robtarget

A nova posição com a adição de um deslocamento e/ou uma rotação, se algum, relativo
à ferramenta ativa.

Argumentos
RelTool (Point Dx Dy Dz [\Rx] [\Ry] [\Rz])
Point Tipo de dado: robtarget

A posição de entrada do robô. A parte de orientação desta posição define a atual


orientação do sistema de coordenadas da ferramenta.

Dx Tipo de dado: num

O deslocamento em mm na direção x do sistema de coordenadas da ferramenta.

Dy Tipo de dado: num

O deslocamento em mm na direção y do sistema de coordenadas da ferramenta.

Dz Tipo de dado: num

O deslocamento em mm na direção z do sistema de coordenadas da ferramenta.

[\Rx] Tipo de dado: num

A rotação em graus em volta do eixo x do sistema de coordenadas da ferramenta.

Data Types do Sistema e Rotinas 3-RelTool-603


RelTool Funções

[\Ry] Tipo de dado: num

A rotação em graus em volta do eixo y do sistema de coordenadas da ferramenta.

[\Rz] Tipo de dado: num

A rotação em graus em volta do eixo z do sistema de coordenadas da ferramenta.

No caso de duas ou três rotações serem especificadas ao mesmo tempo, elas serão real-
izadas primeiro em volta do eixo x, depois em volta do novo eixo y, e então em volta
do novo eixo z.

Sintaxe
RelTool’(’
[ Point ’:=’ ] < expressão (IN) do robtarget>’,’
[Dx ’:=’] <expressão (IN) do num> ’,’
[Dy ’:=’] <expressão (IN) do num> ’,’
[Dz ’:=’] <expressão (IN) do num>
[’\’Rx ’:=’ <expressão (IN) do num> ]
[’\’Ry ’:=’ <expressão (IN) do num> ]
[’\’Rz ’:=’ <expressão (IN) do num> ]’)’

Uma função com valor resultante do tipo de dado robtarget.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Instruções de posicionamento Sumário RAPID - Movimentação

3-RelTool-604 Data Types do Sistema e Rotinas


Funções Round

Round Arredonda um valor numérico


Round é usado para arredondar um valor numérico para um número específico de de-
cimais ou para um valor inteiro.

Exemplo
VAR num val;

val := Round(0.38521\Dec:=3);

A variável val é dada o valor 0.385.

val := Round(0.38521\Dec:=1);

A variável val é dada o valor 0.4.

val := Round(0.38521);

A variável val é dada o valor 0.

Valor resultante Tipo de dado: num

O valor numérico arredondado para um número específico de decimais.

Argumentos
Round ( Val [\Dec])
Val (Value) Tipo de dado: num

O valor numérico a ser arredondado.

[\Dec] (Decimals Tipo de dado: num

Número de decimais.

Se o número especificado de decimais é 0 ou se o argumento é omitido, o valor


é arredondado para um inteiro.

O número de decimais não pode ser negativo ou maior que a precisão disponível
para valores numéricos.

Data Types do Sistema e Rotinas 3-Round-605


Round Funções

Sintaxe
Round’(’
[ Val ’:=’ ] <expressão (IN) do num>
[ \Dec ’:=’ <expressão (IN) do num> ]
’)’

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções matemáticas ou funções Sumário RAPID - Matemática
Truncando um valor Funções - Trunc

3-Round-606 Data Types do Sistema e Rotinas


Funções ReadStrBin

ReadStrBinLê uma cadeia de caracteres de um


arquivo ou canal serial binário
ReadStrBin (Ler cadeia de caracteres binária) é usado para ler uma cadeia de carac-
teres de um arquivo ou canal serial binário.

Exemplo
VAR iodev channel2;
VAR string text;
...
Open “sio1:”, channel2 \Bin;
text := ReadStrBin (channel2, 10);

Text recebe uma cadeia de texto de 10 caracteres lidos do canal serial referido por
channel2.

Valor de retorno Tipo de dados: string

A cadeia de caracteres de texto lidos do arquivo ou canal serial especificado. Se o


arquivo estiver vazio (fim do arquivo), a cadeia "EOF" é retornada.

Argumentos
ReadStrBin (IODevice NoOfChars [\Time])
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial a ser lido.

NoOfChars Tipo de dados: num

O número de caracteres a serem lidos do arquivo ou canal serial binário.

[\Time] Tipo de dados: num

O tempo máx. para a operação de leitura (tempo limite), em segundos. Se esse


argumento não for especificado, o tempo máx. será ajustado para 60 segundos.

Se esse tempo expirar antes do término da operação de leitura, a rotina de trata-


mento de erros será chamada com o código de erro ERR_DEV_MAXTIME. Se
não houver tratamento de erros, a execução será interrompida.

A função de tempo limite também é utilizada durante a interrupção do programa,


sendo notificada no programa RAPID, ao iniciar.

Data Types do Sistema e Rotinas 3-ReadStrBin-607


ReadStrBin Funções

Execução do programa
A função lê o número especificado de caracteres do arquivo ou canal serial binário.

Exemplo
text := ReadStrBin(infile,20);
IF text = EOF THEN
TPWrite "O arquivo está vazio";

Antes de usar a cadeia de caracteres lida do arquivo, uma verificação é efetuada


para assegurar que o arquivo não esteja vazio.

Limitações
A função só pode ser usada para arquivos ou canais seriais que tenham sido abertos
para leitura em um modo binário.

Tratamento de erros
Se um erro ocorrer durante a leitura, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro poderá ser tratado na rotina de tratamento de erros.

Dados predefinidos
A constante EOF pode ser usada para verificar se o arquivo estava vazio ao tentar ler
do arquivo ou interromper a leitura no final do arquivo.

CONST string EOF := "EOF";

Sintaxe
ReadStrBin ’(’
[IODevice ’:=’] <variable (VAR) of iodev>’,’
[NoOfChars ’:=’] <expression (IN) of num>
[’\’Time’:=‘ <expression (IN) of num>]’)’

Uma função com um valor de retorno do tipo string.

3-ReadStrBin-608 Data Types do Sistema e Rotinas


Funções ReadStrBin

Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Resumo RAPID - Comunicação
ou arquivos
Escrever cadeias de caracteres binárias Instruções - WriteStrBin

Data Types do Sistema e Rotinas 3-ReadStrBin-609


ReadStrBin Funções

3-ReadStrBin-610 Data Types do Sistema e Rotinas


Funções RunMode

RunMode Lê o modo de funcionamento


RunMode (Running Mode) é usado para ler o modo de execução atual da tarefa de pro-
grama.

Exemplo
IF RunMode() = RUN_CONT_CYCLE THEN
..
ENDIF

A seção do programa é executada somente para ciclo contínuo ou ciclo de execução.

Valor resultante Tipo de dado: symnum

O modo de funcionamento corrente é como definido na tabela abaixo.

Valor resultante Constante Simbólica Comentário

0 RUN_UNDEF Modo de execução indefinido

1 RUN_CONT_CYCLE Modo de execução contínuo ou ciclico

2 RUN_INSTR_FWD Modo de execução de instrução para


frente

3 RUN_INSTR_BWD Modo de execução de instrução para


trás

4 RUN_SIM Modo de execução simulado

Argumentos
RunMode ( [\Main] )

[\Main] Tipos de dados: switch

Retorno do modo de funcionamento atual para tarefa de programa main. Usado em sis-
temas multitarefas para conseguir o modo de funcionamento atual, para tarefa de pro-
grama main, a partir de qualquer outra tarefa de programa

Se este argumento for omitido, o valor da resultante espelha sempre o modo de fun-
cionamento atual para a tarefa de programa, o qual executa a função RunMode.

Sintaxe
RunMode “(“[“\”Main] ”)”

Data Types do Sistema e Rotinas 3-RunMode-611


RunMode Funções

Uma função com valor resultante do tipo de dado symnum.

Informações relacionadas
Descritas em:
Lendo modo de operação Funções - OpMode

3-RunMode-612 Data Types do Sistema e Rotinas


Funções Sin

Sin Calcula o valor do seno


Sin (Sine) á usado para calcular o valor do seno de um ângulo.

Exemplo
VAR num angle;
VAR num value;
.
.
value := Sin(angle);

Valor resultante Tipo de dado: num

O valor do seno na faixa [-1, 1] .

Argumentos
Sin (Angle)
Angle Tipo de dado: num

O valor do ângulo, expresso em graus.

Sintaxe
Sin’(’
[Angle’:=’] <expressão (IN) do num>
’)’

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-Sin-613


Sin Funções

3-Sin-614 Data Types do Sistema e Rotinas


Funções Sqrt

Sqrt Calcula o valor da raiz quadrada


Sqrt (Square root) é usado para calcular o valor da raiz quadrada.

Exemplo
VAR num x_value;
VAR num y_value;
.
.
y_value := Sqrt( x_value);

Valor resultante Tipo de dado: num

O valor da raiz quadrada.

Argumentos
Sqrt (Value)
Value Tipo de dado: num

O valor do argumento para a raiz quadrada ( ); ele deve ser ≥0.

Sintaxe
Sqrt’(’
[Value’:=’] <expressão (IN) do num>
’)’

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática

Data Types do Sistema e Rotinas 3-Sqrt-615


Sqrt Funções

3-Sqrt-616 Data Types do Sistema e Rotinas


Funções StrFind

StrFind Busca de um caracter num texto


StrFind (String Find) é usado para procurar em um texto, iniciando numa posição espe-
cífica, para um caracter que pertence a um grupo específico de caracteres.

Exemplo
VAR num found;

found := StrFind("Robotics",1,"aeiou");

À variável found é dado o valor 2.

found := StrFind("Robotics",1,"aeiou"\NotInSet);

À variável found é dado o valor 1.

found := StrFind("IRB 6400",1,STR_DIGIT);

À variável found é dado o valor 5.

found := StrFind("IRB 6400",1,STR_WHITE);

À variável found é dado o valor 4.

Valor resultante Tipo de dado: num

A posição do primeiro caracter, de ou passado por uma posição específica, que pert-
ence ao grupo específico. Se tal caracter é achado, resulta em String length +1.

Argumentos
StrFind (Str ChPos Set [\NotInSet])
Str (String) Tipo de dado: string

O texto para busca.

ChPos (Character Position) Tipo de dado: num

Inicia posição do caracter. Um erro de runtime é gerado se a posição está fora do


texto.

Set Tipo de dado: string

Grupo de caracteres para testar novamente.

Data Types do Sistema e Rotinas 3-StrFind-617


StrFind Funções

[\NotInSet] Tipo de dado: switch

Busca de um caracter não em um grupo de caracteres.

Sintaxe
StrFind’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Set’:=’ ] <expressão (IN) do string>
[ ’\’NotInSet ]
’)’

Uma função com valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores string Características Básicas-
Elementos básicos

3-StrFind-618 Data Types do Sistema e Rotinas


Funções StrLen

StrLen Dá o comprimento do texto


StrLen (String Length) é usado para achar o comprimento atual de um texto.

Exemplo
VAR num len;

len := StrLen("Robotics");

À variável len é dado o valor 8.

Valor resultante Tipo de dado: num

O número de caracteres do texto (>=0).

Argumentos
StrLen (Str)
Str (String) Tipo de dado: string

O texto em que se deve contar o número de caracteres.

Sintaxe
StrLen’(’
[ Str ’:=’ ] <expressão (IN) do string>
’)’

Uma função com valor resultante do tipo de dado num.

Data Types do Sistema e Rotinas 3-StrLen-619


StrLen Funções

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos Básicos

3-StrLen-620 Data Types do Sistema e Rotinas


Funções StrMap

StrMap Mapeia um texto


StrMap (String Mapping) é usado para criar uma cópia do texto no qual todos os cara-
cteres são traduzidos de acordo com um mapeamento especificado.

Exemplo
VAR string str;

str := StrMap("Robotics","aeiou","AEIOU");

À variável str é dado o valor "RObOtIcs".

str := StrMap("Robotics",STR_LOWER, STR_UPPER);

À variável str é dado o valor "ROBOTICS".

Valor resultante Tipo de dado: string

O texto criado por tradução do caracter no texto específico, como especificado pelo
texto "de" e "para". Cada caracter, do texto especificado, que é achado no texto "de" é
recolocado pelo caracter na posição correspondente no texto "para" . Caracteres para
os quais no mapeamento é definido são copiados sem trocas para o texto resultante.

Argumentos
StrMap ( Str FromMap ToMap)
Str (String) Tipo de dado: string

O texto a traduzir.

FromMap Tipo de dado: string

Índice do mapeamento.

ToMap Tipo de dado: string

Valor do mapeamento.

Data Types do Sistema e Rotinas 3-StrMap-621


StrMap Funções

Sintaxe
StrMap’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ FromMap’:=’ ] <expressão (IN) do string> ’,’
[ ToMap’:=’ ] <expressão (IN) do string>
’)’

Uma função com valor resultante do tipo de dado string.

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos básicos

3-StrMap-622 Data Types do Sistema e Rotinas


Funções StrMatch

StrMatch Busca por um modelo em um texto


StrMatch (String Match) é usado para procurar em um texto, iniciando numa posição
especificada, para um modelo especificado.

Exemplo
VAR num found;

found := StrMatch("Robotics",1,"bo");

À variável found é dado o valor 3.

Valor resultante Tipo de dado: num

A posição do caracter no primeiro subtexto, de ou passado a posição especificada, que


é igual ao texto modelo especificado. Se nunhum subtexto é encontrado, resulta no
comprimento do texto +1.

Argumentos
StrMatch (Str ChPos Pattern)
Str (String) Tipo de dado: string

O texto onde vai procurar.

ChPos (Character Position) Tipo de dado: num

Inicia posição do caracter. Um erro de runtime é gerado se a posição está fora do


texto.

Pattern Tipo de dado: string

Texto modelo para busca.

Sintaxe
StrMatch’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Pattern’:=’ ] <expressão (IN) do string>
’)’

Uma função com valor resultante do tipo de dado num.

Data Types do Sistema e Rotinas 3-StrMatch-623


StrMatch Funções

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos básicos

3-StrMatch-624 Data Types do Sistema e Rotinas


Funções StrMemb

StrMembVerifica se um caracter pertence a um grupo


StrMemb (String Member) é usado para verificar se um caracter especificado em um
texto pertence a um grupo especificado de caracteres.

Exemplo
VAR bool memb;

memb := StrMemb("Robotics",2,"aeiou");

À variável memb é dado o valor TRUE, como o é um membro do grupo "aeiou".

memb := StrMemb("Robotics",3,"aeiou");

À variável memb é dado o valor FALSE, como b não é um membro do grupo


"aeiou".

memb := StrMemb("S-721 68 VÄSTERÅS",3,STR_DIGIT);

À variável memb é dado o valor TRUE.

Valor resultante Tipo de dado: bool

TRUE se o caracter na posição especificada no texto especificado pertence ao grupo


de caracteres especificados.

Argumentos
StrMemb (Str ChPos Set)
Str (String) Tipo de dado: string

O texto para ser verificado.

ChPos (Character Position) Tipo de dado: num

A posição de caracter para verificar. Um erro de runtime é gerado se a posição


está fora do texto.

Set Tipo de dado: string

Grupo de caracteres para testar novamente.

Data Types do Sistema e Rotinas 3-StrMemb-625


StrMemb Funções

Sintaxe
StrMemb’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Set’:=’ ] <expressão (IN) do string>
’)’

Uma função com valor resultante do tipo de dado bool.

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos básicos

3-StrMemb-626 Data Types do Sistema e Rotinas


Funções StrOrder

StrOrder Verifica se os textos estão ordenados


StrOrder (String Order) é usado para verificar se dois textos estão em ordem, de acordo
com uma sequência de ordenação de caracter especificada.

Exemplo
VAR bool le;

le := StrOrder("FIRST","SECOND",STR_UPPER);

À variável le é dado o valor TRUE, porque "FIRST" vem antes de


"SECOND" na sequência de ordenação de caracter especificada STR_UPPER.

Valor resultante Tipo de dado: bool

TRUE se o primeiro texto vem antes do segundo texto (Str1 <= Str2) quando caracteres
são ordenados como especificado.

Caracteres que não estão inclusos na ordem definida são todos assumidos para os
próximos caracteres presentes.

Argumentos
StrOrder ( Str1 Str2 Order)
Str1 (String 1) Tipo de dado: string

Valor do primeiro texto.

Str2 (String 2) Tipo de dado: string

Valor do segundo texto.

Order Tipo de dado: string

Sequência de caracter que define a ordem.

Data Types do Sistema e Rotinas 3-StrOrder-627


StrOrder Funções

Sintaxe
StrOrder’(’
[ Str1 ’:=’ ] <expressão (IN) do string> ’,’
[ Str2 ’:=’ ] <expressão (IN) do string> ’,’
[ Order ’:=’ ] <expressão (IN) do string>
’)’

Uma função com valor resultante do tipo de dado bool.

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos básicos

3-StrOrder-628 Data Types do Sistema e Rotinas


Funções StrPart

StrPart Encontra uma parte de um texto


StrPart (String Part) é usado para achar uma parte de um texto, como um novo texto.

Exemplo
VAR string part;

part := StrPart("Robotics",1,5);

À variável part é dado o valor "Robot".

Valor resultante Tipo de dado: string

O subtexto do texto especificado, que tinha o comprimento especificado e inicia de


uma posição de caracter especificado.

Argumentos
StrPart (Str ChPos Len)
Str (String) Tipo de dado: string

O texto no qual uma parte deve ser achada.

ChPos (Character Position) Tipo de dado: num

Inicia posição de um caracter. Um erro de runtime é gerado se a posição está fora


do texto.

Len (Length) Tipo de dado: num

Comprimento da parte do texto. Um erro de runtime é gerado se o comprimento


é negativo ou maior que o comprimento do texto, ou se o subtexto está (parcial-
mente) fora do texto.

Sintaxe
StrPart’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Len’:=’ ] <expressão (IN) do num>
’)’

Uma função com valor resultante do tipo de dado string.

Data Types do Sistema e Rotinas 3-StrPart-629


StrPart Funções

Informação relacionada
Descrito em:
Funções string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas -
Elementos básicos

3-StrPart-630 Data Types do Sistema e Rotinas


Funções

StrToByte Converte um “string” em dados de byte

StrToByte (String To Byte) é usado para converter um string com um formato definido
de dados de byte em dados de byte.

Exemplo

VAR string con_data_buffer{5} := ["10", "AE", "176", "00001010", "A"];


VAR byte data_buffer{5};

data_buffer{1} := StrToByte(con_data_buffer{1});

O conteúdo do componente da matriz data_buffer{1} será 10 decimal após a


função StrToByte ... .

data_buffer{2} := StrToByte(con_data_buffer{2}\Hex);

O conteúdo do componente da matriz data_buffer{2} será 174 decimal após a


função StrToByte ... .

data_buffer{3} := StrToByte(con_data_buffer{3}\Okt);

O conteúdo do componente da matriz data_buffer{3} será 126 decimal após a


função StrToByte ... .

data_buffer{4} := StrToByte(con_data_buffer{4}\Bin);

O conteúdo do componente da matriz data_buffer{4} será 10 decimal após a


função StrToByte ... .

data_buffer{5} := StrToByte(con_data_buffer{5}\Char);

O conteúdo do componente da matriz data_buffer{5} será 65 decimal após a


função StrToByte ... .

Valor de retorno Data type: byte

O resultado da operação de conversão em representação decimal.

Argumentos
StrToByte (ConStr [\Hex] | [\Okt] | [\Bin] | [\Char])

ConStr (Convert String) Data type: string

Os dados de “string” a serem convertidos.

Data Types do Sistema e Rotinas 3--631


Funções

Se o argumento chave opcional for omitido, o “string” a ser convertido tem formato
decimal (Dec).

[\Hex] (Hexadecimal) Data type: switch

O “string” a ser convertido tem formato hexadecimal.

[\Okt] (Octal) Data type: switch

O “string” a ser convertido tem formato octal.

[\Bin] (Binary) Data type: switch

O “string” a ser convertido tem formato binary.

[\Char] (Character) Data type: switch

O “string” a ser convertido tem formato de caractere ASCII.

Limitações

Dependendo do formato do “string” a ser convertido, os seguintes dados de


“string” são válidos:

Formato: Comp. “string”: Intervalo:


Dec .....: ’0’ - ’9’ 3 "0" - "255"
Hex .....: ’0’ - ’9’, ’a’ -’f’, ’A’ - ’F’ 2 "0" - "FF"
Okt ......: ’0’ - ’7’ 3 "0" - "377"
Bin ......: ’0’ - ’1’ 8 "0" - "11111111"
Char ....: Qualquer caractere ASCII (*) 1 Um car. ASCII

Os códigos de caracteres RAPID (ex. "\07" para o caractere de controle BEL) não
podem ser usados como argumentos em ConStr.

Sintaxe
StrToByte’(’
[ConStr ’:=’] <expression (IN) of string>
[’\’ Hex ] | [’\’ Okt] | [’\’ Bin] | [’\’ Char]
’)’ ’;’

Uma função com um valor de retorno do tipo de dados byte.

3--632 Data Types do Sistema e Rotinas


Funções Pow

Informações relacionadas

Descrito em:
Converter um byte em dados de “string” Instruções - ByteToStr
Outras funções de bit (byte) Sumário RAPID - Funções de bit
Outras funções de “string” Sumário RAPID - Funções de
“string”

Data Types do Sistema e Rotinas 3-Pow-633


Pow Funções

3-Pow-634 Data Types do Sistema e Rotinas


Funções StrToVal

StrToVal Converte uma string num valor


StrToVal (String To Value) é usado para converter uma string num valor de qualquer
tipo de dados.

Exemplo
VAR bool ok;
VAR num nval;

ok := StrToVal("3.85",nval);

À variável ok é dado o valor TRUE e à nval é dado o valor 3.85.

Valor resultante Tipo de dado: bool

TRUE se a conversão pedida teve sucesso, FALSE se não.

Argumentos
StrToVal ( Str Val )
Str (String) Tipo de dado: string

Um valor string contendo dados literais com um formato correspondente ao tipo


de dados usado no argumento Val. Um formado válido como para os agregados
literais RAPID.

Val (Value) Tipo de dado: num

Nome de uma variável ou persistente de qualquer tipo de dados para armazena-


mento do resultado da conversão. Os dados são inalteráveis se a conversão re-
querida falhar.

Exemplo
VAR string 15 := “[600, 500, 225.3]”;
VAR bool ok;
VAR pos pos15;

ok := StrToVal(str15,pos15);

À variável ok é dada o valor TRUE e à variável p15 é dado o valor que está espe-
cificado na string str15.

Data Types do Sistema e Rotinas 3-StrToVal-635


StrToVal Funções

Sintaxe
StrToVal’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ Val ’:=’ ] <var ou pers (INOUT) de ANYTYPE>
’)’

Uma função com o valor retornado do tipo de dado bool.

Informação relacionada
Descrito em:
Funções de string Sumário RAPID - Funções com
“Strings”
Definição de string Tipos de dados - string
Valores de string Características Básicas-
Elementos Básicos

3-StrToVal-636 Data Types do Sistema e Rotinas


Funções Tan

Tan Calcula o valor da tangente


Tan (Tangent) é usado para calcular o valor da tangente de um ângulo.

Exemplo
VAR num angle;
VAR num value;
.
.
value := Tan(angle);

Valor retornado Tipo de dado: num

O valor da tangente.

Argumentos
Tan (Angle)
Angle Tipo de dado: num

O valor do ângulo, expresso em graus.

Sintaxe
Tan’(’
[Angle ’:=’] <expressão (IN) de num>
’)’

Uma função com o valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e Funções Matemáticas Sumário RAPID - Matemática
Arc tangente com valor de resultante
na faixa [-180, 180] Funções - ATan2

Data Types do Sistema e Rotinas 3-Tan-637


Tan Funções

3-Tan-638 Data Types do Sistema e Rotinas


Funções TestDI

TestDI Testa se uma entrada digital está acionada


TestDI é usada para testar se uma entrada digital está acionada.

Exemplos
IF TestDI (di2) THEN . . .

Se o valor atual do sinal di2 é igual a 1, então . . .

IF NOT TestDI (di2) THEN . . .

Se o valor atual do sinal di2 é igual a 0, então. . .

WaitUntil TestDI(di1) AND TestDI(di2);

A execução do programa continua somente depois que tanto a entrada di1 como
a entrada di2 estejam acionadas.

Valor resultante Tipo de dado: bool

TRUE =O valor atual do sinal é igual a 1.

FALSE = O valor atual do sinal é igual a 0.

Argumentos
TestDI (Signal)
Signal Tipo de dado: signaldi

O nome do sinal a ser testado.

Sintaxe
TestDI ’(’
[ Signal ’:=’ ] < variável (VAR) de signaldi > ’)’

Uma função com valor resultante do tipo de dado bool.

Data Types do Sistema e Rotinas 3-TestDI-639


TestDI Funções

Informação relacionada
Descrito em:
Lendo o valor de um sinal de entrada digital Funções - DInput
Instruções de Entrada/Saída Sumário RAPID-
Sinais de Entrada e Saída

3-TestDI-640 Data Types do Sistema e Rotinas


Funções TestAndSet

TestAndSet Testar variável e ajustar se fora de ajuste


TestAndSet poderá ser usada junto com um objeto de dados normal tipo bool, como um
semáforo binário, para recuperar o direito exclusivo a especificar áreas de código
RAPID ou recursos do sistema. A função poderá ser usada entre uma tarefa diferente
do programa e níveis de execução diferentes (TRAP ou Event Routines) dentro da
mesma tarefa de programa.

Exemplo de recursos que poderão necessitar proteção a partir do acesso ao mesmo


tempo:

- O uso de alguma rotina RAPID com problema de funcionamento se em


execução paralela.
- O uso da Consola Pendente do Operador para Entrada e Saída

Exemplo
Tarefa de programa MAIN:

PERS bool tproutine_inuse := FALSE;


....
WaitUntil TestAndSet(tproutine_inuse);
TPWrite "First line from MAIN";
TPWrite "Second line from MAIN";
TPWrite "Third line from MAIN";
tproutine_inuse := FALSE;

Tarefa de programa BACK1:

PERS bool tproutine_inuse := FALSE;


.... .
WaitUntil TestAndSet(tproutine_inuse);
TPWrite "First line from BACK1";
TPWrite "Second line from BACK1";
TPWrite "Third line from BACK1";
tproutine_inuse := FALSE;

Para evitar alteração de linhas, uma de MAIN e uma de BACK1,o uso da função
TestAndSet garante que todas as três linhas de cada tarefa não são separadas.

Se a tarefa do programa MAIN assume primeiro o semáforo TestAnd-


Set(tproutine_inuse), então a tarefa do programa BACK1deverá esperar até que a
tarefa do programa MAIN tenha deixado o semáforo.

Valor de retorno Tipos de dados: num


TRUE se o semáforo estiver certo, de outra maneira FALSE.

Data Types do Sistema e Rotinas 3-TestAndSet-641


TestAndSet Funções

Argumentos
TestAndSet Objeto
Objeto Tipo de dados: bool

O bjeto de dados definido pelo usuário para ser usado como semáforo. O objeto
de dados poderá ser um VAR ou um PERS. Se o TestAndSet for usado entre tare-
fas de programas diferentes o objeto deverá ser um PERS ou um VAR instalado
(objetos de intertarefas).

Execução do programa
Esta função verificará em um passo indivisivel a variável definida pelo usuário e a ajus-
tará, se estiver fora de ajuste, e voltará TRUE, de outra maneira voltará FALSE.

IF Object = FALSE THEN


Object := TRUE;
RETURN TRUE;
ELSE
RETURN FALSE;
ENDIF

Exemplo
LOCAL VAR bool doit_inuse := FALSE;
...
PROC doit(...)
WaitUntil TestAndSet (doit_inuse);
....
doit_inuse := FALSE;
ENDPROC

Se um módulo for instalado embutido e partilhado, será possível usar uma var-
iável de módulo local para proteção do acesso de tarefas de programas diferentes
ao mesmo tempo.

Notar neste caso: Se a execução do programa for parado na rotina doit e o apon-
tador for movido para main, a variável doit_inuse não será redefinida. Para evitar
isto redefinir a variável doit_inuse para FALSE na rotina de evento START.

Sintaxe
TestAndSet ’(’
[ Object ’:=’ ] < variable or persistent (INOUT) of bool> ’)’

3-TestAndSet-642 Data Types do Sistema e Rotinas


Funções TestAndSet

Uma função com um valor de retorno de tipo de dados bool.

Informação relacionada
Descrta em:
Módulo embutido e partilhado Guia do Usuário - Parâmetros Sistema
Objetosde intertarefas Manual de Fomentadores RAPID -
Manual de Referência Kernel RAPID -
Objetos intertarefas

Data Types do Sistema e Rotinas 3-TestAndSet-643


TestAndSet Funções

3-TestAndSet-644 Data Types do Sistema e Rotinas


Funções Trunc

Trunc Limita um Valor Numérico


Trunc (Truncate) é usado para limitar um valor numérico a um número específico de
decimais ou ao valor inteiro.

Exemplo
VAR num val;

val := Trunc(0.38521\Dec:=3);

À variável val é dado o valor 0.385.

reg1 := 0.38521

val := Trunc(reg1\Dec:=1);

À variável val é dado o valor 0.3.

val := Trunc(0.38521);

À variável val é dado o valor 0.

Valor resultante Tipo de dado: num

O valor numérico limitado para o valor numérico de decimais.

Argumentos
Trunc ( Val [\Dec] )
Val (Valor) Tipo de dado: num

O valor numérico a ser limitado.

[\Dec] (Decimais) Tipo de dado: num

Número de decimais.

Se o número especificado de decimais é 0 ou se o argumento é omitido, o valor


é limitado a um inteiro.

O número de decimais não poderá ser negativo ou maior que a precisão permitida
para valores numéricos.

Data Types do Sistema e Rotinas 3-Trunc-645


Trunc Funções

Sintaxe
Trunc’(’
[ Val ’:=’ ] <expressão (IN) de num>
[ \Dec ’:=’ <expressão (IN) de num> ]
’)’

Uma função com um valor resultante do tipo de dado num.

Informação relacionada
Descrito em:
Instruções e Funções Matemáticas Sumário RAPID - Matemática
Arredondando um valor Funções - Round

3-Trunc-646 Data Types do Sistema e Rotinas


Funções ValToStr

ValToStr Converte um valor como um texto


ValToStr (Value To String) é usada para converter qualquer tipo de dado para texto.

Exemplo
VAR string str;
VAR pos p := [100,200,300];

str := ValToStr(1.234567);

À variável str é dado o valor "1.23457".

str := ValToStr(TRUE);

À variável str é dado o valor "TRUE".

str := ValToStr(p);

À variável str é dado o valor "[100,200,300]".

Valor de retorno Tipo de dado: string

O valor é convertido em um “string” com formato RAPID padrão. Isto significa em


princípio 6 dígitos importantes. Se a parte decimal for menor que 0.000005 ou maior
que 0.999995, o número é arredondado para um inteiro.

Um erro de tempo de execução é gerado se o “string” for muito longo.

Argumento
ValToStr ( Val )
Val (Value) Tipo de dado: ANYTYPE

Um valor de qualquer tipo de dado.

Sintaxe
ValToStr’(’
[ Val ’:=’ ] <expressão (IN) de ANYTYPE>
’)’

Uma função com um valor resultante do tipo de dado string.

Data Types do Sistema e Rotinas 3-ValToStr-647


ValToStr Funções

Informação relacionada
Descrito em:
Funções de texto Sumário RAPID - Funções String
Definição de texto Tipos de dados - string
Valores de texto Características Básicas-
Elementos Básicos

3-ValToStr-648 Data Types do Sistema e Rotinas


Funções VectMagn

VectMagn Magnitude de um vetor pos


VectMagn (Magnitude de vetor) se usa para calcular a magnitude de um vetor pos.

Exemplo
z A

Az

y
Ay

x
Ax

Um vetor A pode ser escrito como a sum de seus componentes nas três direções orto-
gonais:

A = Ax x + Ay y + Az z

A magnitude de A é:
2 2 2
A = A x + Ay + A z

O vetor é descrito pelo tipo de dados pos e a magnitude pelo tipo de dados num:

VAR magnitude num;


VAR vetor pos;
.
.
vetor := [1,1,1];
magnitude := VectMagn(vector);

Valor devolvido Tipo de dados: num

A magnitude do vetor (Tipo de dados pos).

Data Types do Sistema e Rotinas 3-VectMagn-649


VectMagn Funções

Argumentos
VectMagn (Vetor)
Vetor Tipo de dados: pos

O vetor descrito pelo tipo de dados pos.

Sintaxe
VectMagn’(’
[Vector ’:=’] <expressão (IN) de pos>
’)’

Uma função com um valor devolvido do tipo de dados num.

Informações relacionadas
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática

3-VectMagn-650 Data Types do Sistema e Rotinas


INDEX

Symbols C
\cydoniadranslitework C_MOTSET 79
ekniktext_29107098portugdatatypes C_PROGDISP 79
_routinesnstruct call 131
ewfinalclriobuf.doc 125, 147, 245, CallByVar 133
311, 455 canal serial
\cydoniadranslitework arquivo 457
ekniktext_29107098portugdatatypes rebobinar 323
_routinesfunction carga acoplada 31
ewfinalcalcrobt.doc 503, 507, 541, Carregar 241
607 CDate 511
chaîne texte 75
A chamada de procedimento 133
Abs 487 CJointT 513
absolute value 487 Clear 137
acceleration reduction 119 ClkRead 515
AccSet 119 ClkReset 139
ACos 489 ClkStart 141
ActUnit 121 ClkStop 143
Add 123 clock 9
analog output reset 139
set 345 start 141
arcus cosine 489 stop 143
arcus sine 493 Close 145
arcus tangent 495, 497 comment 149
arithmetic 117 Compact IF 191
arquivo condition 193
carregar 241 confdata 11
descarregar 431 ConfJ 151
escrever 457 ConfL 153
fechar 323 CONNECT 155
rebobinar 323 Cos 519
spystart 67 CPos 521
array CRobT 523
get size 539 CTime 525
ASin 493 CTool 527
assignment 117 CWobj 529
ATan 495 D
ATan2 497
d
B ranslitework
bool 5 ekniktext_29107098portugdatat
Break 129 ypes_routinesnstruct
byte 7 oportfilefinalSpystart.doc 325
ranslitework

System Data Types and Routines 4-651


ekniktext_29107098portugdatat na unidade de programação 389
ypes_routinesnstruct espera
oportfilefinalSpystop.doc 357 saída digital 437
ranslitework EulerZYX 547
ekniktext_29107098portugdatat EXIT 169
ypes_routinesnstruct Exp 549
oportfilefinalstload.doc 361 exponential value 499, 549, 585
ranslitework extjoint 23
ekniktext_29107098portugdatat
ypes_routinesdatatype F
oportfilefinalaskid.doc 37
file
Dado do sistema 79
close 145
data 511
open 293
DeactUnit 157
read 589, 595, 599
Decr 159
spystart 207, 219
decrease velocity 443
unload 439
decrement 159
write 447, 451
DefDFrame 531
fina 107
DefFrame 535
FOR 175
Descarregar 431
frame 535
digital output 545
frame mal colocado 535
pulse 307
Funções 179
reset 315
set 343, 347 G
Dim 539
dionum 17 GetTime 555
displace GOTO 181
position 571 GOutput 557
displacement GripLoad 183
tool direction 603 group of I/O 349, 557
displacement frame 531 grupo de E/S 491
DotProd 543, 567, 649
DOutput 545 I

E IDelete 185
IDisable 187
eixos externos IEnable 189
ativada 121 IF 191, 193
desativa 157 Incr 195
EOffsOff 161 increment 195
EOffsOn 163 interrupção
EOffsSet 165 ativar 237
erase teach pendant display 379 conecta 155
ERRNO 79 de um sinal de entrada digital 223
errnum 19, 83 desativar 231
error recovery numa posição 405
retry 421 interrupt
ErrWrite 167 delete 185
escrever disable 187

4-652 System Data Types and Routines


enable 189 MoveCSync 249
identity 25 MoveJ 273
timed 233, 235 MoveJDO 269
INTNO 79 MoveJSync 285
intnum 25 MoveL 281, 377
InvertDO 197 MoveLDO 277
IO unit MoveLSync 289
disable 199 movement
enable 203 linear 289, 377
iodev 3, 27 movimento
IODisable 199 circular 249, 265
IOEnable 203 circulo 259
ISignalDI 223 eixo 269, 285
ISignalDO 227 eixo a eixo 273
ISleep 231 linear 277, 281
IsPers 559 movimento circular 249, 259, 265
IsVar 561 movimento de eixo 269, 285
ITimer 233, 235 movimento eixo a eixo 273
IWatch 237 movimento linear 277, 281
J N
jump 181 num 45
numeric value 45
L NumToStr 569
label 239 O
ler
data atual 511 o_jointtarget 47
grupo de saídas 491 object coordinate system 97
relógio 515 Offs 571
teclas de função 381 offset 571
linear movement 289, 377 Open
load file 293
activate payload 183 serial channel 293
loaddata 31 operating mode
logical value 5 read 573
OpMode 573
M orient 49
manipulação de bits 7 OrientZYX 575
maximum velocity 443 ORobT 577
mechanical unit 39 P
MechUnitLoad 81
mecunit 39 PathResol 297
MirPos 563 payload
mirroring 563 activate 183
motsetdata 41 PDispOff 299
MoveC 259 PDispOn 301
MoveCDO 265 ponto fly-by 107

System Data Types and Routines 4-653


ponto parado 107 RETURN 321
pos 55 robot position 63
pose 57 robtarget 53, 63
PoseInv 579 Round 605
PoseMult 581 routine call 131
posição do robô 53 RunMode 611
posição fixa E/S 409 running mode
Pow 585, 631 read 611
Present 587
ProcCall 131 S
procedure call 131
saída
program displacement
numa posição 409
activate 301
Saída G 491
deactivate 299
SearchC 329
remove from position 577
SearchL 335
PulseDO 307
serial channel
Q close 145
file 451
quaternion 50 open 293
read 589, 595, 599
R write 447
RAISE 309 Set 343
read SetAO 345
current joint angles 513 SetDO 347
current robot position 523 SetGO 349
current time 525, 555 signalai 69
current tool data 527 signalao 69
current work object 529 signaldi 69
digital output 545 signaldo 69
file 589, 595, 599 signalgi 69
group of outputs 557 signalgo 69
serial channel 589, 595, 599 Sin 613
ReadBin 589 SingArea 351
ReadMotor 593 soft servo
ReadNum 595 activating 353
ReadStr 599 deactivating 355
Rebobinar 323 SoftAct 353
reinicia um erro SoftDeact 355
reinicia 319 speeddata 71
relógio SpyStart 67, 207, 219
ler 515 Sqrt 615
RelTool 497, 573, 585, 603, 611 square root 615
repeat 175, 445 StartMove 367
Reset 315 Stop 369
resolução do trajeto StopMove 371
alterar 297 stopwatch 9, 141
RestoPath 317 StorePath 373
RETRY 319 StrFind 617

4-654 System Data Types and Routines


string 75 ValToStr 647
StrLen 619 velocity 71
StrMap 621 decrease 443
StrMatch 623 max. 443
StrMemb 625 VelSet 443
StrOrder 627
StrPart 629 W
StrToVal 635
wait
symnum 77
a specific time 459
T any condition 461
until the robot is in position 459
Tan 637 WaitDO 437
TEST 375 WaitTime 459
TestDI 639 WaitUntil 461
time 525, 555 WHILE 445
tooldata 85 wobjdata 97
TPErase 379 work object 97
tpnum 91 Write 447
TPReadFK 381 write
TPReadNum 385 error message 167
TPShow 389 on the teach pendant 391
TPWrite 391 WriteBin 451
trajeto canto 107 WriteStrBin 457
TriggC 393 WZBoxDef 463
triggdata 93 WZCylDef 465
TriggEquip 399 WZDisable 469
TriggInt 405 WZDOSet 471
TriggIO 409 WZEnable 475
TriggJ 413 WZFree 477
TriggL 417 WZLimSup 479
Trunc 645 WZSphDef 483
TRYNEXT 421 wzstationary 103
TuneReset 423 wztemporary 105
TuneServo 425
tunetype 95 Z

U zonedata 107

unidade mecânica
ativada 121
desativa 157
unidades de drive comum 157
unidades de drive comuns 121
UnLoad 439
user coordinate system 97

valor expoencial 631

System Data Types and Routines 4-655

Você também pode gostar