Escolar Documentos
Profissional Documentos
Cultura Documentos
DataTypes Do Sistema e Rotinas ABB
DataTypes Do Sistema e Rotinas ABB
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
ABB Robotics AB
S-721 68 Västerås
Suécia
Tipos de dados
CONTENTS
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.
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
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
Descrição
O valor do dado tipo booleano pode ser tanto TRUE quanto FALSE.
Exemplos
flag1 := TRUE;
highvalue é associado ao valor TRUE se reg1 for maior que 100; senão, FALSE
será associado.
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
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;
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
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;
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)
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.
-4 -1 0 3
-3 -2 1 2
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).
-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
cf1 é usado para selecionar uma das duas configurações possíveis dos eixos principais
(eixos 1, 2 e 3):
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.
Componentes
cf1 Tipo de dado: num
Eixo rotativo:
Eixo linear:
Eixo rotativo:
Eixo linear:
Eixo rotativo:
Eixo linear:
Eixo rotativo:
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:
Exemplo
VAR confdata conf15 := [1, -1, 0, 0]
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ô
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;
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
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.
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.
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
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:
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.
Componentes
eax_a (eixo externo a) Tipo de dado: num
...
Exemplo
VAR extjoint axpos10 := [ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ;
- 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
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.
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
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);
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
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 é 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.
A posição é definida como abaixo para cada eixo individual (eax_a, eax_b ...
eax_f):
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.
Exemplos
CONST jointtarget calib_pos := [ [ 0, 0, 0, 0, 0, 0], [ 0, 9E9, 9E9, 9E9, 9E9, 9E9] ];
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
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.
Componentes
mass Tipo de dado: num
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.
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
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.
Exemplos
PERS loaddata piece1 := [ 5, [50, 0, 50], [1, 0, 0, 0], 0, 0, 0];
- 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;
Reset gripper;
WaitTime 0.3;
GripLoad load0;
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.
A carga load0 pode sempre ser acessada do programa, mas não pode ser alterada (ela
é armazenada no módulo do sistema BASE).
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
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
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
Motsetdata é usado para definir um número de ajustes de deslocamento que afeta todas
instruções de posicionamento no programa:
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
Desvio máximo permitido em graus para o eixo 1 (não usado nesta versão).
Desvio máximo permitido em graus para o eixo 4 (não usado nesta versão).
Desvio máximo permitido em graus para o eixo 6 (não usado nesta versão).
Limitações
Um e somente um dos componentes sing.wrist, sing.arm ou sing.base talvez tenha o
Exemplo
IF C_MOTSET.vel.oride > 50 THEN
...
ELSE
...
ENDIF
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.
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:
Descrição
O valor de um tipo de dado numérico pode ser
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;
a := 10 DIV 3;
b := 10 MOD 3;
Dado pré-definido
A constante pi (π) está sempre definida no módulo do sistema BASE.
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
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.
O mesmo programa depois do ModPos no qual o ponto jpos40 é corrigido para 2 graus
para o eixo do robô 1:
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
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
orient Orientação
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.
Quaternion 2.
Quaternion 3.
Quaternion 4.
Exemplo
VAR orient orient1;
.
orient1 := [1, 0, 0, 0];
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
O que é um Quaternion?
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.
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)
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)?
Z´
X´
X
Figure 8 A direção de uma ferramenta de acordo com o exemplo 1.
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
X Z´
X´
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
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
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.
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
q4).
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
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.
O valor Y da posição.
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.
Estrutura
<dataobject of pos>
<x of num>
<y of num>
<z of num>
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
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
Exemplo
VAR pose frame1;
.
frame1.trans := [50, 0, 40];
frame1.rot := [1, 0, 0, 0];
Estrutura
<dataobject of pose>
<trans of pos>
<rot of orient>
Informação relacionada
Descrito em:
O que é um Quaternion? Tipos de dados - orient
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.
Componentes
pdisp (deslocamento do programa) Tipo de dado: pose
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;
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
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
...
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
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:
Componentes
trans (translação) Tipo de dado: pos
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
A posição é definida para cada eixo individual (eax_a, eax_b ... eax_f) como
abaixo:
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] ];
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 >
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
Descrição
As zonas globais podem ser definidas em três formas geométricas diferentes:
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
Características
shapedata é um tipo de dados sem valor.
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
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 ...
! 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
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
Speeddata é usado para especificar a velocidade que o robô e eixos externos são mo-
vimentados.
Descrição
Dado de velocidade define a velocidade:
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.
Componentes
v_tcp (velocidade do tcp) Tipo de dado: num
Exemplo
VAR speeddata vmedium := [ 1000, 30, 200, 15 ];
vmedium.v_tcp := 900;
Dado pré-definido
Um número de dados de velocidade já estão definidos no módulo do sistema BASE.
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
string Strings
Descrição
Um string de caracteres consiste em um certo número de caracteres (um máximo de
80) cercados por aspas (").
Exemplo
VAR string text;
.
text := "start welding pipe 1";
TPWrite text;
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).
Dados predefinidos
Um número de constantes predefinidas está disponível no sistema, e poderão ser usadas
juntamente com as funções string.
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
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.
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
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.
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
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).
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
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;
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
Tooldata é utilizado para descrever as características de uma ferramenta, por ex., uma
ponta de soldagem ou uma pinça.
Descrição
Os dados da ferramenta afeta os movimentos do robô das seguintes formas:
- 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.
Componentes
robhold (robô segurar) Tipo de dados: bool
O orifício de controle
O sistema de coordenadas do punho
Y
Z
TCP
Y’
X
X’
Z’
Figura 10 Definição do sistema de coordenadas da ferramenta.
TCP
IX Y’
X Sistema de coordenadas da ferrame
X’
Z’
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.
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]];
gripper.tframe.trans.z := 225.2;
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.
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).
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
REVISION PAGE
Document Registration number: MAN93046.URD
REVISADO POR DEP NOME DATA ASSINATURA
Outros
REVISION
Descrição
Uma constante tpnum se destina a ser usada na instrução TPShow. Veja o exemplo
abaixo.
Exemplo
TPShow TP_PROGRAM;
Dados predefinidos
As seguintes constantes simbólicas do tipo de dados tpnum estão predefinidas e podem
ser usadas na instrução TPShow:
Características
tpnum é um pseudônimo de num e conseqüentemente herda suas características.
Informações relacionadas
Descrito em:
Tipos de dados em geral, pseudônimos Características básicas - Data Types
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;
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
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.
Características
Tunetype é um tipo de dados igual para num e, conseqüentemente, herda suas ca-
racterísticas.
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
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:
Componentes
robhold (robot hold) Tipo de dado: bool
- 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ô.
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] ] ];
wobj2.oframe.trans.z := 38.3;
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.
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
Descrição
Uma zona global wzstationary é definida e ativada por uma instrução WZLimSup ou
WZDOSet.
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
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.
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
Descrição
Uma zona global wztemporary é definida e ativada por uma instrução WZLimSup ou
WZDOSet.
Uma vez definida e ativada, uma zona global temporária pode ser desativada por
WZDisable, ativada novamente por WZEnable e eliminada por WZFree.
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
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.
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
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.
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ô
Um trajeto circular (parábola) é criado assim que a borda da zona seja alcançada
(veja Figura 13).
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.
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
Figura 15 Exemplo de zona reduzida para reorientação da ferramenta para 36% do movimento
devido a zone_ori.
P1 P2
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
Componentes
finep (ponto fino) Tipo de dado: bool
A zona expandida será definida como a dimensão relativa mais pequena da zona
com base nos seguintes componentes e no movimento programado.
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.
Exemplos
VAR zonedata path := [ FALSE, 25, 40, 40, 10, 35, 5 ];
path.pzone_tcp := 40;
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
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
ÍNDICE
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
Exemplos
reg1 := 5;
counter := counter + 1;
Argumentos
Data := Value
Data DataType: All
O valor desejado.
Exemplos
tool1.tframe.trans.x := tool1.tframe.trans.x + 20;
pallet{5,8} := Abs(value);
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.
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
Exemplos
AccSet 50, 100;
Argumentos
AccSet Acc Ramp
Acc DataType: num
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.
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
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;
Argumentos
ActUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit
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ô.
Limitações
A instrução ActUnit não pode ser usada em
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.
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
Exemplos
Add reg1, 3;
Argumentos
Add Name AddValue
Name DataType: num
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
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
Argumentos
AliasIO FromSignal ToSignal
FromSignal Tipo de dados: signalxx ou
string
Módulos carregados:
Módulos internos:
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
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 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.
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
Exemplo
..
Break;
...
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
Exemplos
weldpipe 1;
errormessage;
Set do1;
.
PROC errormessage()
TPWrite "ERROR";
ENDPROC
Argumentos
Procedure { Argument }
Procedure Identificador
Exemplo
weldpipe2 10, lowspeed;
weldpipe3 10 \speed:=20;
Limitações
Os argumentos da rotina devem estar de acordo com seus parâmetros:
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> ] ’;’
Informações relacionadas
Descrito em:
Argumentos, parâmetros Características Básicas - Rotinas
Mais exemplos Exemplos de programas
Exemplo
reg1 := 2;
CallByVar “proc”, reg1;
Argumentos
CallByVar Name Number
Name Data type: string
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
cionada .
A localização da porta no argumento door_loc.
reg1 := 2;
%”proc”+NumToStr(reg1,0)% door_loc;
reg1 := 2;
CallByVar “proc”,reg1;
Limitações
Apenas pode ser utilizado para chamar procedimentos sem parâmetros.
Tratamento de erros
Em caso de referência a um procedimento desconhecido, a variável ERRNO do sistema
é ajustada para ERR_REFUNKPRC.
Sintaxe
CallByVar
[Name ‘:=’] <expression (IN) of string>’,’
[Number ‘:=‘] <expression (IN) of num>’;’
Informação relacionada
Descrito em:
Procedimentos de chamada Características Básicas- Rotinas
Guia do Usuário- A Linguagem de
Programação RAPID
Exemplo
Clear reg1;
Argumentos
Clear Name
Name DataType: num
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
Esta função pode ser usada antes de usar o relógio para ter certeza que ele está no 0.
Exemplo
ClkReset clock1;
Argumentos
ClkReset Clock
Clock DataType: clock
Execução do programa
Quando o relógio é zerado, ele é colocado em 0.
Sintaxe
ClkReset
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’
Informações relacionadas
Descrito em:
Outras instruções do relógio Sumário RAPID - Sistema & Hora
Exemplo
ClkStart clock1;
Argumentos
ClkStart Clock
Clock DataType: clock
Execução do programa
Quando o relógio é ligado, ele irá contar os segundos até que seja parado.
Exemplo
VAR clock clock2;
ClkReset clock2;
ClkStart clock2;
WaitUntil DInput(di1) = 1;
ClkStop clock2;
time:=ClkRead(clock2);
Sintaxe
ClkStart
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’
Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora
Exemplo
ClkStop clock1;
Argumentos
ClkStop Clock
Clock DataType: clock
Execução do programa
Quando o relógio é parado, ele pára de contar o tempo.
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
Exemplo
Close channel2;
Argumentos
Close IODevice
IODevice DataType: iodev
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
Exemplo
VAR iodev channel2;
...
Open "sio1:", channel2 \Bin;
ClearIOBuff channel2;
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>’;’
Informações relacionadas
Descrito em:
Abertura de um canal serial Resumo RAPID - Comunicação
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;
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
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;
ConfJ \On;
MoveJ *, v1000, fine, tool1;
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.
Execução do programa
Se o argumento \On (ou nenhum argumento) é escolhido, o robô sempre se moverá
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
Exemplos
ConfL \On;
MoveL *, v1000, fine, tool1;
SingArea \Wrist;
Confl \On;
MoveL *, v1000, fine, tool1;
ConfL \Off;
MoveL *, v1000, fine, tool1;
Argumentos
ConfL [\On] | [\Off]
\On DataType: switch
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.
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
Exemplo
VAR intnum feeder_low;
CONNECT feeder_low WITH feeder_empty;
ISignalDI di1, 1 , feeder_low;
Argumentos
CONNECT Interrupt WITH Trap routine
Interrupt DataType: intnum
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
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.
Sintaxe
(EBNF)
CONNECT <destino da conexão> WITH <trap>‘;’
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
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;
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.
Argumentos
DeactUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit
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.
Limitações
A instrução DeactUnit não pode ser usada
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
Decr Decremento de 1
Decr é usado para subtrair 1 de uma variável numérica ou persistente.
Exemplo
Decr reg1;
Argumentos
Decr Name
Name DataType: num
Exemplo
TPReadNum no_of_parts, "Quantas partes devem ser produzidas? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE
Sintaxe
Decr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’
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
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;
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
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.
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
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
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.
Exemplo
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;
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
Exemplo
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
.
EOffsSet eax_a_p100;
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:
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.
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
Exemplo
ErrWrite “PLC error” , “Erro fatal no PLC” \RL2:=”Call service”;
Stop;
;
Stop;
Argumentos
ErrWrite [ \W ] Header Reason [ \RL2] [ \RL3] [ \RL4]
[ \W ] (Warning) DataType: switch
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:
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
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
Execução do programa
A execução de ExitCycle na tarefa de programa MAIN produz os seguintes resultados
na tarefa MAIN:
ExitCycle não afeta nenhuma das outras coisas modais no programa e no sistema,
como:
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
Exemplo
FOR i FROM 1 TO 10 DO
routine1;
ENDFOR
Argumentos
FOR Loop counter FROM Start value TO End value
[STEP Step value] DO ... ENDFOR
Loop counter Identificador
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).
Exemplo
FOR i FROM 10 TO 2 STEP -1 DO
a{i} := a{i-1};
ENDFOR
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>
Informações relacionadas
Descrito em:
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.
Argumentos
GetSysData DestObject [\ ObjectName ]
DestObject Tipo de dados: anytype
Persistente para armazenamento dos valores dos dados 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.
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
Exemplos
GOTO next;
.
next:
reg1 := 1;
next:
.
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;
Argumentos
GOTO Label
Label Identificador
Limitações
Só é possível para transferir a execução do programa para um label dentro da mesma
rotina.
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
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ô.
Exemplos
GripLoad piece1;
GripLoad load0;
Argumentos
GripLoad Load
Load DataType: loaddata
Execução do programa
A carga especificada afeta a performance do robô.
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
Exemplo
IDelete feeder_low;
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
Sintaxe
IDelete
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’
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
Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;
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
Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;
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.
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
Exemplos
IF reg1 > 5 GOTO next;
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
Exemplos
IF reg1 > 5 THEN
Set do1;
Set 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
Exemplo
IF counter > 100 THEN
counter := 100;
ELSEIF counter < 0 THEN
counter := 0;
ELSE
counter := counter + 1;
ENDIF
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
Incr Incrementa de 1
Incr é usado para somar 1 a uma variável numérica ou persistente.
Exemplo
Incr reg1;
Argumentos
Incr Name
Name DataType: num
Exemplo
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Num:=no_of_parts;
ENDWHILE
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
Exemplo
InvertDO do15;
Argumentos
InvertDO Signal
Signal DataType: signaldo
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
Sintaxe
InvertDO
[ 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 Entrada/Saída Movimento e Princípios de E/S -
Princípios de E/S
Configuração da E/S Parâmetros do Sistema
Exemplo
IODisable “cell1”, 5;
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).
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.
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
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 > ’;’
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
Exemplos
IOEnable “cell1”, 5;
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).
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).
Exemplo
IOEnable pode também ser usado para checar se alguma unidade de E/S está
desconectada por alguma razão.
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 > ’;’
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
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.
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.
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
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.
Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar interrupções.
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.
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.
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
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
Falso
Verdadeiro
DNeg especificado e
(RefValue - CurrentValue) > DeltaValue
Falso
RefValue := CurrentValue
RefValue := CurrentValue
Continuar
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
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.
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.
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
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.
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
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.
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
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.
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.
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>‘;’
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
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.
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.
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
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.
Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar novas interrupções.
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
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.
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>‘;’
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
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.
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
O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.
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).
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
PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC
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
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
O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.
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).
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
PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC
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
Exemplo
ISleep sig1int;
Argumentos
ISleep Interrupt
Interrupt DataType: intnum
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
ENDTRAP
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
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.
Argumentos
ITimer [ \Single ] Time Interrupt
[ \Single ] DataType: switch
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.
Execução do programa
A rotina trap correspondente é automaticamente chamada no dado tempo seguindo a
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
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;
Argumentos
IVarValue VarNo Value, Interrupt
VarNo Tipo de dados: num
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
Exemplo
IWatch sig1int;
Argumentos
IWatch Interrupt
Interrupt DataType: intnum
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;
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.
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
Exemplo
GOTO next;
.
next:
Argumentos
Label:
Label Identificador
Execução do programa
Nada acontece quando você executa esta instrução.
Limitações
O label não pode ser o mesmo que
Um rótulo oculta um dado global e rotinas com o mesmo nome dentro da rotina nela
localizada .
Sintaxe
(EBNF)
<identificador>’:’
Informações relacionadas
Descrito em:
Identificadores Características Básicas-
Elementos básicos
Movendo exec. do programa para um label Instruções - GOTO
Modo estático
Tabela 1 Como operações diferentes afetam módulos de sistema ou de programa
carregados estaticamente
Modo dinâmico
Tabela 2 Como operações diferentes afetam módulos de sistema ou de programa
carregados dinamicamente
Exemplo
Carregar ram1disk \File:="PART_A.MOD";
Argumentos
Load [\Dynamic] FilePath [\File]
[\Dynamic] Data type: switch
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.
Exemplos
Load \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD";
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>]’;’
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
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.
Exemplo
IRBP_L
eixo 1
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, load0;
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, fixture1;
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, workpiece1;
Argumentos
MechUnitLoad MechUnit AxisNo Load
MechUnit (Unidade mecânica) Tipo de dados: mecunit
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.
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.
X Fixação
Sistema de coordenadas de atuação final
para a unidade mecânica
Peça de trabalho
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.
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.
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
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 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).
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.
Execução do programa
Para maiores informações sobre movimentos circulares, ver a instrução MoveC.
Figura 25 Execução de procedimento RAPID definido pelo usuário a meio do trajeto de canto.
Limitações
Limitações gerais conforme instrução MoveC.
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 > ] ’;’
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
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.
Argumentos
MoveAbsJ [ \Conc ] ToJointPos [\NoEOffs] Speed [ \V ] | [ \T ]
Zone [ \Z ] Tool [ \WObj ]
[ \Conc ] (Concurrent) DataType: switch
instrução subsequente será executada algum tempo antes do robô ter atingido a
zona programada.
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.
Exemplos
MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;
Mesmo movimento que acima, mas o movimento não é afetado por deslocamen-
tos ativos para eixos externos.
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
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
Exemplos
MoveC p1, p2, v500, z30, tool2;
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
para encurtar o tempo do ciclo quando, por exemplo, comunicando com equipa-
mento externo, se a sincronização não é necessária.
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).
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.
Execução do programa
O robô e unidades externas são movidas para o ponto de destino como segue:
CirPoint
Orientação ferramenta
Ponto de partida
ToPoint
- 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.
Exemplos
MoveC *, *, v500 \V:=550, z40 \Z:=45, grip3;
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.
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
Exemplos
MoveCDO p1, p2, v500, z30, tool2, do1,1;
Argumentos
MoveCDO CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
Signal Value
CirPoint 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).
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.
Execução do programa
Ver a instrução MoveC para mais informaçãoes sobre o movimento circular.
CirPoint
Próximo
ToPoint ponto
Zona
Figura 4 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveCDO.
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
Exemplos
MoveJDO p1, vmax, z30, tool2, do1, 1;
Argumentos
MoveJDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget
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.
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
p1 p2
Zona
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
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 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
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).
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.
Exemplos
MoveJ *, v2000\V:=2200, z40 \Z:=45, grip3;
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 > ] ’;’
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
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).
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.
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
p1 p2
Zona
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
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.
Argumentos
MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch
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).
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.
Execução do programa
O robô e unidades externas são movimentados para posição de destino como segue:
Exemplos
MoveL *, v2000 \V:=2200, z40 \Z:=45, grip3;
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
Exemplos
MoveJSync p1, vmax, z30, tool2, “proc1”;
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).
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
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.
Execução do programa
Ver a instrução MoveJ para maiores informações acerca do movimento de eixo.
p1
Figura 7 Execução de procedimento RAPID definido pelo usuário no meio do trajeto de canto.
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.
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
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).
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.
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.
Execução do programa
Ver a instrução MoveL para mais informações acerca dos movimentos lineares.
p1
Figure 8 Execução de procedimento RAPID definido pelo usuário no meio do caminho da aresta.
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..
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
Exemplo
VAR iodev logfile;
...
Open "flp1:" \File:= "LOGDIR/LOGFILE1.DOC", logfile;
Argumentos
Open Object [\File] IODevice [\Read] | [\Write] | [\Append] [\Bin]
Object DataType: string
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.
Exemplo
VAR iodev printer;
...
Open "sio1:", printer \Bin;
WriteStrBin printer, "Esta é uma mensagem para a impressora\0D";
Close printer;
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.
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
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.
Soldando a arco com ondulação de alta freqüência pode requerer uma alta resolução
do trajeto interpolado. 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;
Argumentos
PathResol PathSampleTime
PathSampleTime Tipo de dados: num
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
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
Exemplos
PDispOff;
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 ‘;’
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
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;
Argumentos
PDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]
[\Rot ] (Rotation) DataType: switch
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
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.
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
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;
p30
p10
p20
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
Exemplo
VAR pose xp100 := [ [100, 0, 0], [1, 0, 0, 0] ];
.
PDispSet xp100;
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
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.
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
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
Exemplos
PulseDO do15;
Um pulso com comprimento de pulso de 0.2 s é gerado num sinal de saída do15.
Argumentos
PulseDO [ \PLength ] Signal
[ \PLength ] (Pulse Length) DataType: num
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.
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
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;
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 ).
Execução do programa
A execução do programa continua no tratamento de erro da rotina. Após o tratamento
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>] ’;’
Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Reservar números de erros Instruções - BookErrNo
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
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.
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.
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;
Close channel;
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
Exemplos
Reset do15;
Reset weld;
Argumentos
Reset Signal
Signal Tipo de dado: signaldo
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 > ’;’
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
Exemplo
RestoPath;
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
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
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 ’;’
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
Exemplos
errormessage;
Set do1;
.
PROC errormessage()
TPWrite "ERROR";
RETURN;
ENDPROC
Argumentos
RETURN [ Return value ]
Return value DataType: De acordo com a declaração
de função
Execução do programa
O resultado da instrução RETURN pode variar, dependendo do tipo de rotina que é
usada em:
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
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
Execução do programa
O arquivo especificado é rebobinado para o início.
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";
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
Exemplo
Load "ram1disk:PART_B.MOD";
...
Save "PART_B";
Argumentos
Save [\Task] ModuleName [\FilePath] [\File]
deve ser salvo. O nome de arquivo deve ser excluído quando o argumento \File é
usado.
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";
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.
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.
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.
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
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;
Argumentos
SearchC [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal [ \Flanks ]
SearcPoint CirPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ] [ \Corr
]
[ \Stop ] (Stiff Stop) Data type: switch
As extremidades positiva e negativa do sinal são válidas para uma pesquisa com
sucesso.
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).
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.
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.
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.
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.
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;
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).
Ponto final
Figura 16 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.
Tratamento de erros
Um erro é relatado durante uma pesquisa quando:
Erros podem ser tratados de diferentes formas dependendo do modo de execução sel-
ecionado :
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
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;
Argumentos
SearchL [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal
[ \Flanks ] SearchPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]
[ \Corr ]
[ \Stop ] (Stiff Stop) Data type: switch
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.
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.
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.
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.
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;
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.
Figura 18 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.
Figura 19 Deteção não encontrada porque foi usado o dado de zona errado.
Figura 20 Deteção não encontrada porque foi usado o dado de zona errado.
Tratamento de erros
Um erro é relatado durante uma pesquisa quando:
Erros podem ser tratados de diferentes formas, dependendo do modo de execução sel-
ecionado :
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
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
Exemplos
Set do15;
Set weldon;
Argumentos
Set Signal
Signal DataType: signaldo
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 > ’;’
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
Exemplo
SetAO ao2, 5.5;
Argumentos
SetAO Signal Value
Signal DataType: signalao
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
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
Exemplos
SetDO do15, 1;
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
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.
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
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.
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
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
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;
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 não pode diferir. Usado quando nenhum ponto sin-
gular é ultrapassado, ou quando a orientação não pode ser mudada.
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.
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
Exemplo
SoftAct 3, 20;
SoftAct 1, 90 \Ramp:=150;
Ativação do servo soft no eixo 1, com valor de suavidade 90% e fator de rampa
150%.
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
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 %.
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
Exemplo
SoftDeact;
SoftDeact \Ramp:=150;
Argumentos
SoftDeact [\Ramp ]
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
Exemplo
SpyStart "ram1disk:spy.log";
Argumentos
SpyStart File
File Tipo de dados: string
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.
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).
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
----- SYSTEM TRAP----- significa que o sistema está fazendo algo mais do que exe-
cutar instruções do RAPID.
Sintaxe
SpyStart
[File’:=‘]<expression (IN) of string>‘;’
Informações relacionadas
Descrito em:
Interromper a gravação de dados de execução Instruções - SpyStop
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;
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;
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).
Sintaxe
SpyStop’;’
Informações relacionadas
Descrito em:
Iniciar gravação de dados de execução Instruções - SpyStart
Modo estático
Tabell 3 Como diversas operações afetam módulos do sistema ou programas carregados estat-
icamente.
Modo dinâmico
Tabell 4 Como diversas operações afetam módulos do sistema ou programas carregados dinam-
icamente
Exemplo
VAR loadsession load1;
Argumentos
StartLoad [\Dynamic] FilePath [\File] LoadNo
[\Dynamic] Tipo de dados: switch
Quando o nome do arquivo é excluído no argumento FilePath, ele deve ser defi-
nido com esse argumento.
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.
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;
é o mesmo que
Limitações
Não é permitido carregar um módulo de sistema ou módulo de programa que contenha
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
Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;
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
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
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).
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.
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
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;
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,
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???
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;
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.
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.
Sintaxe
StorePath‘;’
Informações relacionadas
Descrito em:
Recuperando uma trajetória Instruções - RestoPath
Mais exemplos Instruções - RestoPath
Exemplo
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Escolha ilegal";
Stop;
ENDTEST
Argumentos
TEST Test data {CASE Test value {, Test value} : ...}
[ DEFAULT: ...] ENDTEST
Test data DataType: All
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).
Sintaxe
(EBNF)
TEST <expressão>
{( CASE <valor teste> { ’,’ <valor teste> } ’:’
<lista de instrução> ) | <CSE> }
[ DEFAULT ’:’ <lista de instrução> ]
ENDTEST
Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões
Exemplo
TestSign 1, resolver_angle, Orbit, 2, 4, 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.
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> ‘;’
Exemplo
TPErase;
TPWrite "Execução iniciada";
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
Exemplo
TPReadFK reg1, "Mais ?", stEmpty, stEmpty, stEmpty, "Sim", "Não";
Mais?
Sim Nã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.
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 (““).
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.
• 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;
...
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;
Dados predifinidos
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
Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
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.
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).
Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
FOR i FROM 1 TO reg1 DO
produce_part;
ENDFOR
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>] ’;’
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
Exemplos
TPShow TP_PROGRAM;
TPShow TP_LATEST;
Argumentos
TPShow Window
Window Data type: tpnum
Dados predefinidos
CONST tpnum TP_PROGRAM := 1;
CONST tpnum TP_LATEST := 2;
CONST tpnum TP_SCREENVIEWER := 3;
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
-
Exemplos
TPWrite "Execução iniciou";
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
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.
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:
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
Exemplos
VAR triggdata gunon;
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 de círculo p2
Argumentos
TriggC [\Conc] CirPoint ToPoint Speed [ \T ]
Trigg_1 [ \T2 ] [ \T3 ] [ \T4] Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch
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.
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).
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).
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.
Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.
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;
...
IDelete intno1;
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 ]’;’
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
Exemplos
VAR triggdata gunon;
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
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.
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.
Distância Distância
\Start
+ - + -
EquipLag
O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.
Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).
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:
Exemplos
VAR triggdata glueflow;
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.
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.
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
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;
Ponto inicial TriggL p1, v500, trigg1, fine, gun1; Ponto final p1 ou p2
5 mm
A interrupção é gerada
quando o ponto está aqui
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.
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 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:
IDelete intno2;
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.
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.
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
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.
Exemplos
VAR triggdata gunon;
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
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.
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.
O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.
Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).
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.
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 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;
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.
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
Exemplos
VAR triggdata gunon;
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.
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).
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.
Execução do programa
Veja a instrução MoveJ para informação sobre movimento eixo-a-eixo.
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;
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
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
Exemplos
VAR triggdata gunon;
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
Argumentos
TriggL [\Conc] ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch
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.
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).
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.
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;
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
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
Exemplo
TuneReset;
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
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.
Para a movimentação dos robôs em baixas velocidades, o TuneServo pode ser utilizado
para melhorar a precisão do trajeto através:
Descrição
Tune_df
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.
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.
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.
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.
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).
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.
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
Este argumento pode ser omitido quando usar o tipo de regulagem TUNE_DF.
Exemplo
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;
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ô
Exemplo
UnLoad ram1disk \File:="PART_A.MOD";
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.
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
programa.
Exemplos
UnLoad "ram1disk:DOORDIR/DOOR1.MOD";
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.
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
Exemplo
WaitDI di4, 1;
WaitDI grip_status, 0;
Argumentos
WaitDI Signal Value [\MaxTime] [\TimeFlag]
Signal DataType: signaldi
O nome do sinal.
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.
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.
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
Exemplo
WaitDO do4, 1;
WaitDO grip_status, 0;
Argumentos
WaitDO Signal Value [\MaxTime] [\TimeFlag]
Signal Data type: signaldo
O nome do sinal.
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.
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.
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
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";
Argumentos
WaitLoad [\UnloadPath] [\UnloadFile] LoadNo
[\UnloadPath] Tipo de dados: string
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.
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;
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
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.
Sintaxe
WaitLoad
[ [ ‘\’ UnloadPath ‘:=‘ <expressão (IN) de string> ]
[ ‘\’ UnloadFile ‘:=‘ <expressão (IN) de string> ] ‘,’ ]
[ LoadNo ‘:=‘ ] <variável (VAR) de loadsession> ‘;’
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
Exemplo
VelSet 50, 800;
Argumentos
VelSet Override Max
Override DataType: num
Execução do programa
A velocidade programada de todas as instruções de posicionamento subsequentes é
afetada até uma nova instrução VelSet ser executada.
Os valores default para Override e Max são 100% e 5000 mm/s respectivamente. Estes
valores são automaticamente ligados
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
Exemplo
WHILE reg1 < reg2 DO
...
reg1 := reg1 +1;
ENDWHILE
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
Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões
Exemplos
Write logfile, "Execução iniciada";
O texto Execução iniciada foi escrito no arquivo com nome de referência logfile.
Argumentos
Write IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient]
[\NoNewLine]
IODevice DataType: iodev
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:
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;
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.
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
Exemplo
WriteBin channel2, text_buffer, 10;
Argumentos
WriteBin IODevice Buffer NChar
IODevice DataType: iodev
num
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.
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);
Sintaxe
WriteBin
[IODevice’:=’] <variável (VAR) do iodev>’,’
[Buffer’:=’] <variedade {*} (IN) do num>’,’
[NChar’:=’] <expressão (IN) do num>’;’
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
Exemplo
VAR iodev channel2;
VAR orient quat1 := [1, 0, 0, 0];
...
Open "sio1:", channel2 \Bin;
WriteAnyBin channel2, quat1;
Argumentos
WriteAnyBin IODevice Data
IODevice Tipo de dados: iodev
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.
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;
Close channel;
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
Exemplo
WriteStrBin channel2, "Hello World\0A";
Argumentos
WriteStrBin IODevice Str
IODevice Tipo de dados: iodev
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.
Exemplo
VAR iodev channel;
VAR num input;
Open "sio1:", channel\Bin;
Close channel;
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
Exemplo
WaitTime 0.5;
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.
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.
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
Exemplo
WaitUntil di4 = 1;
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.
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.
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
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
Exemplo
.
canto2
Z
Y Caixa
canto1
Min. 10 mm
X
Sistema de Coordenadas Global
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
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
Exemplo
R2
H2
Z
Y
C2
X
Sistema de Coordenadas Global
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
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>’;’
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
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
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.
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
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
Argumentos
WZDOSet (\Temp) | (\Stat) WorldZone (\Inside) | (\Before) Shape
Signal SetValue
\Temp (Temporária) Tipo de dados: switch
O sinal de saída digital será ajustado quando o TCP do robô estiver dentro do
volume definido.
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).
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;
...
! 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
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.
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
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
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.
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
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
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.
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
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
Argumentos
WZLimSup (\Temp) | (\Stat) WorldZone Shape
\Temp (Temporária) Tipo de dados: switch
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:
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.
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
Exemplo
Z
Y
C1
R1
X
Sistema de Coordenadas Global
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
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
Exemplo
reg1 := Abs(reg2);
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);
Sintaxe
Abs ’(’
[ Input ’:=’ ] < expression (IN) of num > ’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ACos(valor);
Argumentos
ACos (Valor)
Valor Tipo de dado: num
Sintaxe
Acos’(’
[Valor ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Exemplo
If AOutput(ao4) > 5 THEN ...
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
Argumentos
A Output (Signal)
Signal Data type: signalao
Sintaxe
AOutput ’(’
[ Signal ’:=’ ] < variável (VAR) de signalao > ’)’
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
Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ASin(valor);
Argumentos
ASin (Valor)
Valor Tipo de dado: num
Sintaxe
ASin’(’
[Valor ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Exemplo
VAR num angulo;
VAR num valor;
.
.
angulo := ATan(valor);
Argumentos
ATan (Valor)
Valor Tipo de dado: num
O valor do argumento.
Sintaxe
ATan’(’
[Valor ’:=’] <expressão (IN) do 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]
Exemplo
VAR num angulo;
VAR num valor_x;
VAR num valor_y;
.
.
angulo := ATan2(valor_y, valor_x);
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
Sintaxe
ATan2’(’
[Y ’:=’] <expressão (IN) do num> ’,’
[X ’:=’] <expressão (IN) do num>
’)’
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
Exemplo
VAR string con_data_buffer{5};
VAR byte data1 := 122;
con_data_buffer{1} := ByteToStr(data1);
con_data_buffer{2} := ByteToStr(data1\Hex);
con_data_buffer{3} := ByteToStr(data1\Okt);
con_data_buffer{4} := ByteToStr(data1\Bin);
con_data_buffer{5} := ByteToStr(data1\Char);
(*) 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
Se o argumento de chave opcional for omitido, os dados serão convertidos para formato
decimal (Dec).
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]
’)’
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”
Exemplo
VAR jointtarget jointpos1;
CONST robtarget p1 := [...];
Os valores dos eixos externos, em mm para eixos lineares, em graus para eixos rota-
cionais.
Argumentos
CalcJointT ( Rob_target Tool [\WObj] )
Rob_target Tipo de dados: robtarget
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.
Sintaxe
CalcJointT’(’
[Rob_target ‘:=‘] <expression (IN) of robtarget> ‘,’
[Tool ’:=’ ] <persistent (PERS) of tooldata>
[’\’WObj ’:=’ <persistent (PERS) of wobjdata>] ‘)’
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
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.
Exemplo
VAR robtarget p1;
CONST jointtarget jointpos1 := [...];
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
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>] ’)’
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
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();
Exemplo
data := CDate();
TPWrite "A data atual é: "+data;
Write logfile, data;
Sintaxe
CDate ’(’ ’)’
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
Exemplo
VAR jointtarget eixos;
eixos := CJointT();
Os ângulos atuais dos eixos do robô e dos eixos externos são armazenados em
joints.
Os valores atuais para os eixos externos, em mm para eixos lineares, em graus para
eixos giratórios.
Sintaxe
CJointT’(’’)’
Informação relacionada
Descrito em:
Definição do eixo Tipos de dados - jointtarget
Lendo o ângulo atual do motor Funções - ReadMotor
Exemplo
reg1:=ClkRead(clock1);
Argumentos
ClkRead (Relógio)
Relógio Tipo de dado: clock
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 > ’)’
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
PÁGINA DE REVISÃO
Número de Registro do Documento: ROL93067.ARD
REVISTO PELO DEP NOME DATA ASSINATURA
REVISÃO
REV. PÁGINA (P) DESCRIÇÃO DATA
CAPÍT. (C) DEPT../ASSIN..
Exemplo
VAR num angulo;
VAR num valor;
.
.
valor := Cos(angulo);
Argumentos
Cos (Angulo)
Ângulo Tipo de dado: num
Sintaxe
Cos’(’
[Angulo ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
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;
Argumentos
CPos ([\Tool] [\WObj])
[\Tool] Tipo de dado: tooldata
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;
Sintaxe
CPos ’(’
[’\’Tool ’:=’ <persistente (PERS) do tooldata>]
[’\’WObj ’:=’ <persistente (PERS) do wobjdata>] ’)’
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
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);
Argumentos
CRobT ([\Tool] [\WObj])
[\Tool] Tipo de dado: tooldata
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;
Sintaxe
CRobT’(’
[’\’Tool ’:=’ <persistente (PERS) do tooldata>]
[’\’WObj ’:=’ <persistente (PERS) do wobjdata>] ’)’
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
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();
Exemplo
hora := CTime();
TPWrite “A hora atual é: “+hora;
Write logfile, hora;
Sintaxe
CTime ’(’ ’)’
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
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();
Esta função resulta um valor de tooldata contendo o valor da ferramenta atual, isto é,
a última ferramenta usada numa instrução de movimento.
Sintaxe
CTool’(’’)’
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
Exemplo
PERS wobjdata temp_wobj;
temp_wobj := CWObj();
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.
Sintaxe
CWObj’(’’)’
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
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.
O frame de deslocamento.
Argumentos
DefDFrame (OldP1 OldP2 OldP3 NewP1 NewP2 NewP3)
OldP1 Tipo de dado: robtarget
A primeira posição original.
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> ’)’
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
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:
O frame calculado.
Argumentos
DefFrame (NewP1 NewP2 NewP3 [\Origin])
NewP1 Tipo de dado: robtarget
z z y
New P3
x
y New P2
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
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 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> ]’)’
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
Exemplo
PROC arrmul(VAR num matriz{*}, num fator)
ENDPROC
Argumentos
Dim (ArrPar DimNo)
ArrPar (Array Parameter) Tipo de dado: Any type
O nome da matriz.
Exemplo
PROC add_matrix(VAR num matriz1{*,*,*}, num matriz2{*,*,*})
ENDPROC
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.
Informação relacionada
Descrito em:
Parâmetros de matriz Características Básicas - Rotinas
Declaração de matriz Características Básicas - Dado
Exemplo
y
p2
x
p1
z
Argumentos
Distance (Point1 Point2)
Point1 Tipo de dados: pos
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>
’)’
Informações relacionadas
Descrito em:
Funções e instruções matemáticas Resumo RAPID - Matemática
Definição de pos Tipo de dados - pos
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:
Os vetores são descritos pelo tipo de dados pos e o produto dot pelo tipo de dados num:
Argumentos
DotProd (Vector1 Vector2)
Vector1 Tipo de dados: pos
Sintaxe
DotProd’(’
[Vector1 ’:=’] <expressão (IN) de pos> ’,’
[Vector2 ’:=’] <expressão (IN) de pos>
’)’
Informações relacionadas
Descritas em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Exemplo
IF DOutput(do2) = 1 THEN . . .
Argumentos
DOutput (Sinal)
Sinal Tipo de dado: signaldo
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 > ’)’
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
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);
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.
Sintaxe
EulerZYX’(’
['\'X ’,’] | ['\'Y ’,’] | ['\'Z ’,’]
[Rotação ’:=’] <expressão (IN) do orient>
’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
Exemplo
VAR num x;
VAR num valor;
.
.
valor:= Exp( x);
O valor exponencial ex .
Argumentos
Exp (Expoente)
Expoente Tipo de dado: num
Sintaxe
Exp’(’
[Expoente ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
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.
Argumentos
FileTime ( Path [\ModifyTime] | [\AccessTime] | [\StatCTime] )
Path Tipo de dados: string
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.
PROC alertFree()
IDelete timeint;
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] ’)’
Informações relacionadas
Descritas em:
Última vez que o módulo foi carregado Funções - ModTime
Exemplo
hour := GetTime(\Hour);
Argumentos
GetTime ( [\WDay] | [\Hour] | [\Min] | [\Sec] )
[\WDay] Tipo de dado: switch
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 ] ’)’
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
Exemplo
IF GOutput(go2) = 5 THEN ...
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.
Argumentos
GOutput (Signal)
Signal Tipo de dado: signalgo
Sintaxe
GOutput ’(’
[ Signal ’:=’ ] < variable (VAR) of signalgo > ’)’
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
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
Argumentos
IsPers (DatObj)
DatObj (Data Object) Tipo de dado: qualquer
tipo
Sintaxe
IsPers’(’
[ DatObj ’:=’ ] < var ou pers (INOUT) de qualquer tipo > ’)’
Informação relacionada
Descrito em:
Teste se é variável Função - IsVar
Tipos de parâmetros (modos de acesso) Características RAPID - Rotinas
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
Argumentos
IsVar (DatObj)
DatObj (Data Object) Tipo de dado: qualquer
tipo
Sintaxe
IsVar’(’
[ DatObj ’:=’ ] < var or pers (INOUT) of any type > ’)’
Informação relacionada
Descrito em:
Teste se é persistente Função - IsPers
Tipos de parâmetros (modos de acesso) Características RAPID - Rotinas
Exemplo
CONST robtarget p1;
VAR robtarget p2;
PERS wobjdata mirror;
.
.
p2 := MirPos(p1, mirror);
Argumentos
MirPos (Point MirPlane [\WObj] [\MirY])
Point Tipo de dado: robtarget
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 ]’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
MODULE mymod
PROC printMyTime()
mytime := ModTime("mymod");
TPWrite "My time is "+NumToStr(mytime,0);
ENDPROC
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.
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>’)’
Informações relacionadas
Descritas em:
Recuperar info. de tempo acerca de um arquivoFunções - FileTime
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
2 2 2 2
ABS ( q 1 + q 2 + q 3 + q 4 – 1 ) = normerr
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
A orientação normalizada.
Argumentos
NOrient (Rotação)
Orient Tipo de dados: orient
Sintaxe
NOrient’(’
[Rotation ’:=’] <expressão (IN) de orient>
’)’
Informações relacionadas
Descritas em:
Funções e instruções matemáticas Sumário RAPID - Mathematics
Exemplo
VAR string str;
str := NumToStr(0.38521,3);
reg1 := 0.38521
Argumentos
NumToStr (Val Dec [\Exp])
Val (Value) 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.
Sintaxe
NumToStr’(’
[ Val ’:=’ ] <expressão (IN) do num> ’,’
[ Dec ’:=’ ] <expressão (IN) do num>
[ \Exp ]
’)’
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
Exemplos
MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1;
Argumentos
Offs (Point XOffset YOffset ZOffset)
Point Tipo de dado: robtarget
O deslocamento na direção x.
O deslocamento na direção y.
O deslocamento na direção z.
Exemplo
PROC pallet (num row, num column, num distance, PERS tooldata tool,
PERS wobjdata 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
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> ’)’
Informação relacionada
Descrito em:
Dado de posição Tipos de dados - robtarget
Exemplo
TEST OpMode()
CASE OP_AUTO:
...
CASE OP_MAN_PROG:
...
CASE OP_MAN_TEST:
...
DEFAULT:
...
ENDTEST
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
Exemplo
VAR num anglex;
VAR num angley;
VAR num anglez;
VAR pose object;
.
object.rot := OrientZYX(anglez, angley, anglex)
Argumentos
OrientZYX (ZAngle YAngle XAngle)
ZAngle Tipo de dado: num
Sintaxe
OrientZYX’(’
[ZAngle ’:=’] <expressão (IN) do num> ’,’
[YAngle ’:=’] <expressão (IN) do num> ’,’
[XAngle ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
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.
Argumentos
ORobT (OrgPoint [\InPDisp] | [\InEOffs])
OrgPoint (Original Point) Tipo de dado: robtarget
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.
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]’)’
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
Exemplo
z1
Posição1
z0 Frame1
y1
x1
Frame0
y0 Posição2
x0
Argumentos
PoseInv (Pose)
Pose Tipo de dado: pose
Sintaxe
PoseInv’(’
[Pose ’:=’] <expressão (IN) do pose>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
z1
posição1 y1 z2
z0 posição2
Frame1
x1 Frame2
Frame0
y0 y2
posição3 x2
x0
Argumentos
PoseMult (Pose1 Pose2)
Pose1 Tipo de dado: pose
A primeira posição.
A segunda posição.
Sintaxe
PoseMult’(’
[Pose1 ’:=’] <expressão (IN) do pose> ’,’
[Pose2 ’:=’] <expressão (IN) do pose>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
pos1
pos2 z1
z0
posição1 y1
Frame1
Frame0
y0 x1
x0
Argumentos
PoseVect (Pose Pos)
Pose Tipo de dado: pose
Sintaxe
PoseVect’(’
[Pose ’:=’] <expressão (IN) do pose> ’,’
[Pos ’:=’] <expressão (IN) do pos>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
VAR num x;
VAR num y
VAR num reg1;
.
reg1:= Pow(x, y);
Argumentos
Pow (Base Exponent)
Base Tipo de dado: num
Limitações
A execução da função xy dará erro se:
Sintaxe
Pow’(’
[Base ’:=’] <expressão (IN) do num> ’,’
[Exponent ’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
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)
ENDPROC
TRUE = O valor do parâmetro ou uma chave foi definida quando chamando a rotina.
Argumentos
Present (OptPar)
OptPar (Optional Parameter) Tipo de dado: qualquer
Exemplo
PROC glue (\switch on, num glueflow, robtarget topoint, speeddata speed,
zonedata zone, PERS tooldata tool, \PERS wobjdata wobj)
ENDPROC
Sintaxe
Present ’(’
[OptPar’:=’] <referência (REF) de qualquer tipo> ’)’
Informação relacionada
Descrito em:
Parâmetros de rotina Características Básicas - Rotinas
Exemplo
VAR num character;
VAR iodev inchannel;
...
Open "sio1:", inchannel\Bin;
character := ReadBin(inchannel);
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
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;
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.
Sintaxe
ReadBin’(’
[IODevice ’:=’] <variável (VAR) do iodev>
[’\’Time’:=’ <expressão (IN) do 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
Exemplo
VAR num motor_angle2;
motor_angle2 := ReadMotor(2);
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).
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.
Exemplo
VAR num motor_angle3;
Sintaxe
ReadMotor’(’
[’\’MecUnit ’:=’ < variable (VAR) of mecunit>’,’]
[Axis ’:=’ ] < expression (IN) of num>
’)’
Informação relacionada
Descrito em:
Lendo o atual ângulo do punho Funções - CJointT
Exemplo
VAR iodev infile;
...
Open "flp1:file.doc", infile\Read;
reg1 := ReadNum(infile);
Argumentos
ReadNum (IODevice [\Delim] [\Time])
IODevice Tipo de dados: iodev
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";
...
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.
Dados predefinidos
A constante EOF_NUM pode ser usada para interromper a leitura, no final do arquivo.
Sintaxe
ReadNum ’(’
[IODevice ’:=’] <variable (VAR) of iodev>
[‘\’Delim’:=’<expression (IN) of string>]
[’\’Time’:=’ <expression (IN) of num>]’)’
Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos ou canais seriais Sumário RAPID - Comunicação
Exemplo
VAR string text;
VAR iodev infile;
...
Open "flp1:file.doc", infile\Read;
text := ReadStr(infile);
Argumentos
ReadStr (IODevice [\Delim] [\RemoveCR] [\DiscardHeaders]
[\Time])
IODevice Tipo de dados: iodev
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
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.
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.
Exemplo
Considerando um arquivo que contenha:
<LF><SPACE><TAB>Ola<SPACE><SPACE>Mundo<CR><LF>
text := ReadStr(infile);
text := ReadStr(infile\DiscardHeaders);
text := ReadStr(infile\RemoveCR\DiscardHeaders);
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
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.
Sintaxe
ReadStr ’(’
[IODevice ’:=’] <variable (VAR) of iodev>
[‘\’Delim’:=’<expression (IN) of string>]
[‘\’RemoveCR]
[‘\’DiscardHeaders]
[’\’Time’:=’ <expression (IN) of num>]’)’
Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos ou canais seriais Sumário RAPID - Comunicação
Exemplo
MoveL RelTool (p1, 0, 0, 100), v100, fine, tool1;
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
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> ]’)’
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
Exemplo
VAR num val;
val := Round(0.38521\Dec:=3);
val := Round(0.38521\Dec:=1);
val := Round(0.38521);
Argumentos
Round ( Val [\Dec])
Val (Value) Tipo de dado: num
Número de decimais.
O número de decimais não pode ser negativo ou maior que a precisão disponível
para valores numéricos.
Sintaxe
Round’(’
[ Val ’:=’ ] <expressão (IN) do num>
[ \Dec ’:=’ <expressão (IN) do num> ]
’)’
Informação relacionada
Descrito em:
Instruções matemáticas ou funções Sumário RAPID - Matemática
Truncando um valor Funções - Trunc
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.
Argumentos
ReadStrBin (IODevice NoOfChars [\Time])
IODevice Tipo de dados: iodev
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";
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.
Sintaxe
ReadStrBin ’(’
[IODevice ’:=’] <variable (VAR) of iodev>’,’
[NoOfChars ’:=’] <expression (IN) of num>
[’\’Time’:=‘ <expression (IN) of num>]’)’
Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Resumo RAPID - Comunicação
ou arquivos
Escrever cadeias de caracteres binárias Instruções - WriteStrBin
Exemplo
IF RunMode() = RUN_CONT_CYCLE THEN
..
ENDIF
Argumentos
RunMode ( [\Main] )
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] ”)”
Informações relacionadas
Descritas em:
Lendo modo de operação Funções - OpMode
Exemplo
VAR num angle;
VAR num value;
.
.
value := Sin(angle);
Argumentos
Sin (Angle)
Angle Tipo de dado: num
Sintaxe
Sin’(’
[Angle’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
VAR num x_value;
VAR num y_value;
.
.
y_value := Sqrt( x_value);
Argumentos
Sqrt (Value)
Value Tipo de dado: num
Sintaxe
Sqrt’(’
[Value’:=’] <expressão (IN) do num>
’)’
Informação relacionada
Descrito em:
Instruções matemáticas e funções Sumário RAPID - Matemática
Exemplo
VAR num found;
found := StrFind("Robotics",1,"aeiou");
found := StrFind("Robotics",1,"aeiou"\NotInSet);
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
Sintaxe
StrFind’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Set’:=’ ] <expressão (IN) do string>
[ ’\’NotInSet ]
’)’
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
Exemplo
VAR num len;
len := StrLen("Robotics");
Argumentos
StrLen (Str)
Str (String) Tipo de dado: string
Sintaxe
StrLen’(’
[ Str ’:=’ ] <expressão (IN) do 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
Exemplo
VAR string str;
str := StrMap("Robotics","aeiou","AEIOU");
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.
Índice do mapeamento.
Valor do mapeamento.
Sintaxe
StrMap’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ FromMap’:=’ ] <expressão (IN) do string> ’,’
[ ToMap’:=’ ] <expressão (IN) do 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
Exemplo
VAR num found;
found := StrMatch("Robotics",1,"bo");
Argumentos
StrMatch (Str ChPos Pattern)
Str (String) Tipo de dado: string
Sintaxe
StrMatch’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Pattern’:=’ ] <expressão (IN) do 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
Exemplo
VAR bool memb;
memb := StrMemb("Robotics",2,"aeiou");
memb := StrMemb("Robotics",3,"aeiou");
Argumentos
StrMemb (Str ChPos Set)
Str (String) Tipo de dado: string
Sintaxe
StrMemb’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Set’:=’ ] <expressão (IN) do 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
Exemplo
VAR bool le;
le := StrOrder("FIRST","SECOND",STR_UPPER);
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
Sintaxe
StrOrder’(’
[ Str1 ’:=’ ] <expressão (IN) do string> ’,’
[ Str2 ’:=’ ] <expressão (IN) do string> ’,’
[ Order ’:=’ ] <expressão (IN) do 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
Exemplo
VAR string part;
part := StrPart("Robotics",1,5);
Argumentos
StrPart (Str ChPos Len)
Str (String) Tipo de dado: string
Sintaxe
StrPart’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ ChPos ’:=’ ] <expressão (IN) do num> ’,’
[ Len’:=’ ] <expressão (IN) do 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 de string Características Básicas -
Elementos básicos
StrToByte (String To Byte) é usado para converter um string com um formato definido
de dados de byte em dados de byte.
Exemplo
data_buffer{1} := StrToByte(con_data_buffer{1});
data_buffer{2} := StrToByte(con_data_buffer{2}\Hex);
data_buffer{3} := StrToByte(con_data_buffer{3}\Okt);
data_buffer{4} := StrToByte(con_data_buffer{4}\Bin);
data_buffer{5} := StrToByte(con_data_buffer{5}\Char);
Argumentos
StrToByte (ConStr [\Hex] | [\Okt] | [\Bin] | [\Char])
Se o argumento chave opcional for omitido, o “string” a ser convertido tem formato
decimal (Dec).
Limitações
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]
’)’ ’;’
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”
Exemplo
VAR bool ok;
VAR num nval;
ok := StrToVal("3.85",nval);
Argumentos
StrToVal ( Str Val )
Str (String) Tipo de dado: string
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.
Sintaxe
StrToVal’(’
[ Str ’:=’ ] <expressão (IN) do string> ’,’
[ Val ’:=’ ] <var ou pers (INOUT) de ANYTYPE>
’)’
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
Exemplo
VAR num angle;
VAR num value;
.
.
value := Tan(angle);
O valor da tangente.
Argumentos
Tan (Angle)
Angle Tipo de dado: num
Sintaxe
Tan’(’
[Angle ’:=’] <expressão (IN) de 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
Exemplos
IF TestDI (di2) THEN . . .
A execução do programa continua somente depois que tanto a entrada di1 como
a entrada di2 estejam acionadas.
Argumentos
TestDI (Signal)
Signal Tipo de dado: signaldi
Sintaxe
TestDI ’(’
[ Signal ’:=’ ] < variável (VAR) de signaldi > ’)’
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
Exemplo
Tarefa de programa MAIN:
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.
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.
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> ’)’
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
Exemplo
VAR num val;
val := Trunc(0.38521\Dec:=3);
reg1 := 0.38521
val := Trunc(reg1\Dec:=1);
val := Trunc(0.38521);
Argumentos
Trunc ( Val [\Dec] )
Val (Valor) Tipo de dado: num
Número de decimais.
O número de decimais não poderá ser negativo ou maior que a precisão permitida
para valores numéricos.
Sintaxe
Trunc’(’
[ Val ’:=’ ] <expressão (IN) de num>
[ \Dec ’:=’ <expressão (IN) de num> ]
’)’
Informação relacionada
Descrito em:
Instruções e Funções Matemáticas Sumário RAPID - Matemática
Arredondando um valor Funções - Round
Exemplo
VAR string str;
VAR pos p := [100,200,300];
str := ValToStr(1.234567);
str := ValToStr(TRUE);
str := ValToStr(p);
Argumento
ValToStr ( Val )
Val (Value) Tipo de dado: ANYTYPE
Sintaxe
ValToStr’(’
[ Val ’:=’ ] <expressão (IN) de ANYTYPE>
’)’
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
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:
Argumentos
VectMagn (Vetor)
Vetor Tipo de dados: pos
Sintaxe
VectMagn’(’
[Vector ’:=’] <expressão (IN) de pos>
’)’
Informações relacionadas
Descrito em:
Instruções e funções matemáticas Sumário RAPID - Matemática
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
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
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