Você está na página 1de 380

Instruções

ÍNDICE

“:=” Designa um valor


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

Data Types do Sistema e Rotinas 2-1


Instructions

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
MoveCDO Move circularmente o robô e ajusta a saída digital no canto
MoveCSync Movimenta circularmente o robô e executa um procedimento RAPID
MoveJ Move o robô com movimento eixo a eixo
MoveJDO Move o robô por movimento de eixo e ajusta a saída digital no canto
MoveJSync Move o robô por movimento de eixo e executa um procedimento
RAPID
MoveL Move o robô linearmente
MoveLDO Move o robô linearmente e ajusta a saída digital no canto
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
ReadAnyBin Ler dados de um arquivo ou canal serial binário
Reset Desliga um sinal de saída digital
RestoPath Retoma a trajetória após uma interrupção
RETRY Reinicia seguindo um erro

2-2 Data Types do Sistema e Rotinas


Instructions

RETURN Termina a execução de uma rotina


Rewind Rebobinar a posição do arquivo
Save Salvar um módulo de programa
SearchC Pesquisa circularmente usando o robô
SearchL Pesquisa linearmente usando o robô
Set Liga um sinal de saída digital
SetAO Muda o valor de um sinal de saída analógico
SetDO Muda o valor de um sinal de saída digital
SetGO Muda o valor de um grupo de sinais de saída digital
SingArea Define interpolação em torno de pontos singulares
SoftAct Ativa o servo soft
SoftDeact Desativa o servo soft
SpyStart Iniciar gravação de dados em tempo de execução
SpyStop Interromper gravação de dados em tempo de execução
StartLoad Carregar um módulo de programa durante a execução
StartMove Reinicia o movimento do robô
Stop Parar a execução do programa
StopMove Pára o movimento do robô
StorePath Salva a trajetória quando ocorre uma interrupção
TEST Dependendo do valor de uma expressão ...
TestSign Saída dos sinais de teste
TestSignReset Redefinir todas as definições de sinais de teste
TPErase Apaga texto impresso na unidade de programação
TPReadFK Lê teclas de função
TPReadNum Lê um número da unidade de programação
TPShow Trocar janela na unidade de programação
TPWrite Escreve na unidade de programação
TriggC Movimento circular do robô com eventos
TriggEquip Define uma posição-tempo fixo por um evento de E/S
TriggInt Define uma posição relacionada à interrupção
TriggIO Define uma posição fixada por um evento de E/S
TriggL Movimentos lineares do robô com eventos
TriggJ Movimentos dos eixos do robô com eventos
TRYNEXT Pula uma instrução que causou um erro
TuneReset Desliga o ajuste de servo
TuneServo Ajuste de Servo

Data Types do Sistema e Rotinas 2-3


Instructions

UnLoad Descarregar um módulo de um programa durante a execução


WaitDI Espera um sinal de entrada digital
WaitDO Espera até que um sinal de saída digital seja ligado
WaitLoad Conecta o módulo carregado à tarefa
WaitTime Espera um tempo determinado
WaitUntil Espera uma condição ser satisfeita
VelSet Muda a velocidade programada
WHILE Repetir enquanto ...
Write Escreve em um arquivo tipo texto ou canal serial
WriteAnyBin Escreve dados em um canal serial ou arquivo binário
WriteBin Escreve para um canal serial binário
WriteStrBin Escrever uma string para um canal serial binário
WZBoxDef Definir uma zona global em forma de caixa
WZCylDef Definir uma zona global em forma de cilindro
WZDisable Desativar a supervisão da zona global temporária
WZDOSet Ativar a zona global para ajustar a saída digital
WZEnable Ativar supervisão da zona global temporária
WZFree Eliminar supervisão da zona global temporária
WZLimSup Ativar supervisão do limite da zona global
WZSphDef Definir uma zona global em forma de esfera

2-4 Data Types do Sistema e Rotinas


Instruções “:=”

“:=” Designa um valor


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

Exemplos
reg1 := 5;

Para reg1 é designado o valor 5.

reg1 := reg2 - reg3;

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

counter := counter + 1;

counter é aumentado em um.

Argumentos
Data := Value
Data DataType: All

Um novo valor é designado ao dado.

Value DataType:Same as Data

O valor desejado.

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

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

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

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


variável value.

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


“:=” Instruções

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

- uma constante
- um tipo de dado sem valor.

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

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

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

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


Instruções AccSet

AccSet Reduz a aceleração


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

Exemplos
AccSet 50, 100;

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

AccSet 100, 50;

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

Argumentos
AccSet Acc Ramp
Acc DataType: num

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


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

Ramp DataType: num

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


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

Data Types do Sistema e Rotinas 2-AccSet-1


AccSet Instruções

Aceleração

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

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

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

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

- numa partida a frio


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

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

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

2-AccSet-2 Data Types do Sistema e Rotinas


Instruções ActUnit

ActUnit Ativa uma unidade mecânica


ActUnit é usada para ativar uma unidade mecânica.

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

Exemplo
ActUnit orbit_a;

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

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

O nome da unidade mecânica a ser ativada.

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

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


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

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

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


- uma rotina RESTART

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

Data Types do Sistema e Rotinas 2-ActUnit-1


ActUnit Instruções

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

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

2-ActUnit-2 Data Types do Sistema e Rotinas


Instruções Add

Add Adiciona um valor numérico


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

Exemplos
Add reg1, 3;

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

Add reg1, -reg2;

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

Argumentos
Add Name AddValue
Name DataType: num

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

AddValue DataType: num

O valor a ser adicionado.

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

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

Data Types do Sistema e Rotinas 2-Add-1


Add Instruções

2-Add-2 Data Types do Sistema e Rotinas


Instruções AliasIO

AliasIO Define sinal de E/S com pseudônimo


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

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


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

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

Exemplo 1
VAR signaldo alias_do;

PROC prog_start()
AliasIO config_do, alias_do;
ENDPROC

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


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

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

Módulos carregados:

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


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

Módulos internos:

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


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

ToSignal Tipo de dados: signalxx

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

Data Types do Sistema e Rotinas 2-AliasIO-3


AliasIO Instruções

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


RAPID.

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

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

Exemplo 2
VAR signaldi alias_di;

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

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


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

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

A instrução AliasIO deve ser colocada na

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


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

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

2-AliasIO-4 Data Types do Sistema e Rotinas


Instruções AliasIO

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

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

Data Types do Sistema e Rotinas 2-AliasIO-5


AliasIO Instruções

2-AliasIO-6 Data Types do Sistema e Rotinas


Instruções Break

Break Parada na execução do programa


Break é usado para fazer uma parada imediata na execução do programa para efeito de
análise (de bug) do programa RAPID.

Exemplo
..
Break;
...

Para a execução do programa e é possível analisar variáveis, valores etc. para


efeitos de análise (de bug).

Execução do programa
A instrução pára a execução do programa imediatamente, sem esperar que o robô e os
eixos externos alcancem seus pontos de destino programados para movimentos sendo
feitos ao mesmo tempo. A execução do programa pode, então, ser reiniciada a partir
da próxima instrução.

Se houver uma instrução Break em alguma rotina de evento, a rotina será executada
desde o início do próximo evento.

Sintaxe
Break’;’

Informações relacionadas
Descrito em:
Parando ação do programa Instruções - Stop
Parando após um erro fatal Instruções - Exit
Acabando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove

Data Types do Sistema e Rotinas 2-Break-1


Break Instruções

2-Break-2 Data Types do Sistema e Rotinas


Instruções ProcCall

ProcCall Chama uma nova rotina


Uma chamada de rotina é usada para transferir a execução do programa para outra
rotina. Quando a rotina foi completamente executada, a execução do programa con-
tinua com a instrução seguinte a chamada da rotina.

É possível enviar um número de argumentos para a nova rotina. Estes controlam o


comportamento da rotina e torna possível que a mesma rotina seja usada para diversas
tarefas.

Exemplos
weldpipe 1;

Chama a rotina weldpipe1.

errormessage;
Set do1;
.

PROC errormessage()
TPWrite "ERROR";
ENDPROC

A rotina errormessage é chamada. Quando esta rotina está pronta, a execução do


programa retorna para a instrução seguinte do chamado da rotina, Set do1.

Argumentos
Procedure { Argument }
Procedure Identificador

O nome da rotina a ser chamada.

Argument DataType: De acordo com a


declaração do procedimento

Os argumentos da rotina (de acordo com os parâmetros da rotina).

Exemplo
weldpipe2 10, lowspeed;

Chama a rotina weldpipe2, incluindo dois argumentos.

Data Types do Sistema e Rotinas 2-ProcCall-1


ProcCall Instruções

weldpipe3 10 \speed:=20;

Chama a rotina weldpipe3, incluindo argumento obrigatório e um opcional.

Limitações
Os argumentos da rotina devem estar de acordo com seus parâmetros:

- Todos os argumentos obrigatórios devem ser incluídos.


- Eles devem ser colocados na mesma ordem.
- Eles devem ser do mesmo tipo de dado.
- Eles devem ser do tipo correto com relação ao modo de acesso (entrada, variável
ou persistente).

Uma rotina pode chamar outra rotina que, por sua vez, chama outra rotina, etc. Uma
rotina também pode chamar a si mesma, i.e. uma chamada recursiva. O número de
níveis de rotina permitido depende do número de parâmetros, mas normalmente é per-
mitido mais que 10 níveis.

Sintaxe
(EBNF)
<procedure> [ <argument list> ] ’;’

<procedure> ::= <identifier>

Informações relacionadas
Descrito em:
Argumentos, parâmetros Características Básicas - Rotinas
Mais exemplos Exemplos de programas

2-ProcCall-2 Data Types do Sistema e Rotinas


Instruções CallByVar

CallByVarChamar um procedimento com uma variável


CallByVar (Chamar com variável) pode ser usada para chamar procedimentos com
nomes especifícos, isto é. proc_name1, proc_name2, proc_name3 ... proc_namex
através de uma variável.

Exemplo
reg1 := 2;
CallByVar “proc”, reg1;

O procedimento proc2 é chamado.

Argumentos
CallByVar Name Number
Name Data type: string

A primeira parte do nome do procedimento, isto é proc_name.

Number Data type: num

O valor númerico para o número do procedimento. Este valro é convertido para


uma string e dá a 2(segunda) parte do nome do procedimento, isto é, 1.O valor
deve ser um inteiro positivo.

Exemplo
Seleção estática de chamada do procedimento

TEST reg1
CASE 1:
lf_door door_loc;
CASE 2:
rf_door door_loc;
CASE 3:
lr_door door_loc;
CASE 4:
rr_door door_loc;
DEFAULT:
EXIT;
ENDTEST

Dependendo do valor de registro reg1 is 1, 2, 3 ou 4, procedimentos diferentes


são chamados que performam o tipo de trabalho apropriado para a porta sele-

Data Types do Sistema e Rotinas 2-CallByVar-1


CallByVar Instruções

cionada .
A localização da porta no argumento door_loc.

Seleção dinâmica de chamada do procedimento com sintaxe RAPID

reg1 := 2;
%”proc”+NumToStr(reg1,0)% door_loc;

O procedimento proc2 é chamado com o argumento door_loc.

Limitação: Todos os procedimentos têm que ter um nome especifico, isto é,


proc1, proc2, proc3.

Seleção dinâmica de chamada de procedimento com CallByVar

reg1 := 2;
CallByVar “proc”,reg1;

O procedimento proc2 é chamado.

Limitação: Todos os procedimentos têm que ter um nome especifico, proc1,


proc2, proc3, e não pode ser usado nenhum argumento.

Limitações
Apenas pode ser utilizado para chamar procedimentos sem parâmetros.

A execução de CallByVar demora um pouco mais de tempo do que a execução de uma


chamada de procedimento normal.

Tratamento de erros
Em caso de referência a um procedimento desconhecido, a variável ERRNO do sistema
é ajustada para ERR_REFUNKPRC.

Em caso de erro de chamada de procedimento (não procedimento), a variável ERRNO


do sistema é ajustada para ERR_CALLPROC.

Estes erros poem ser manipulados pelo manipulador de erros.

Sintaxe
CallByVar
[Name ‘:=’] <expression (IN) of string>’,’
[Number ‘:=‘] <expression (IN) of num>’;’

2-CallByVar-2 Data Types do Sistema e Rotinas


Instruções CallByVar

Informação relacionada
Descrito em:
Procedimentos de chamada Características Básicas- Rotinas
Guia do Usuário- A Linguagem de
Programação RAPID

Data Types do Sistema e Rotinas 2-CallByVar-3


CallByVar Instruções

2-CallByVar-4 Data Types do Sistema e Rotinas


Instruções Clear

Clear Apaga um valor


Clear é usado para apagar uma variável numérica ou persistente, i.e. fica igual a 0.

Exemplo
Clear reg1;

Reg1 é apagado, i.e. reg1:=0.

Argumentos
Clear Name
Name DataType: num

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

Sintaxe
Clear
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Informações relacionadas
Descrito em:
Incremento a variável em1 Instruções - Incr
Decremento a variável em1 Instruções - Decr

Data Types do Sistema e Rotinas 2-Clear-1


Clear Instruções

2-Clear-2 Data Types do Sistema e Rotinas


Instruções ClearIOBuff

ClearIOBuff Limpar buffer de entrada de


um canal serial
ClearIOBuff (Limpar Buffer de E/S) é usado para limpar o buffer de entrada de um
canal serial. Todos os caracteres; do canal serial de entrada que passam pelo buffer são
descartados.

Exemplo
VAR iodev channel2;
...
Open "sio1:", channel2 \Bin;
ClearIOBuff channel2;

O buffer de entrada do canal serial referido por channel2 é limpo.

Argumentos
ClearIOBuff IODevice
IODevice Tipo de dados: iodev

O nome (referência) do canal serial cujo buffer de entrada deve ser limpo.

Execução do programa
Todos os caracteres do canal serial de entrada que passam pelo buffer são descartados.
As próximas instruções de leitura esperam nova entrada do canal.

Limitações
Essa instrução só pode ser usada em canais seriais.

Sintaxe
ClearIOBuff
[IODevice ’:=’] <variable (VAR) of iodev>’;’

Data Types do Sistema e Rotinas 2-ClearIOBuff-3


ClearIOBuff Instruções

Informações relacionadas
Descrito em:
Abertura de um canal serial Resumo RAPID - Comunicação

2-ClearIOBuff-4 Data Types do Sistema e Rotinas


Instruções ClkReset

ClkReset Zera o cronômetro


ClkReset é usado para zerar o relógio que funciona como cronômetro.

Esta função pode ser usada antes de usar o relógio para ter certeza que ele está no 0.

Exemplo
ClkReset clock1;

O relógio clock1 é zerado.

Argumentos
ClkReset Clock
Clock DataType: clock

O nome do relógio que é zerado.

Execução do programa
Quando o relógio é zerado, ele é colocado em 0.

Se o relógio está marcando, ele poderá ser parado e então zerado.

Sintaxe
ClkReset
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras instruções do relógio Sumário RAPID - Sistema & Hora

Data Types do Sistema e Rotinas 2-ClkReset-1


ClkReset Instruções

2-ClkReset-2 Data Types do Sistema e Rotinas


Instruções ClkStart

ClkStart Liga o cronômetro


ClkStart é usado para ligar o cronômetro.

Exemplo
ClkStart clock1;

O relógio clock1 é ligado.

Argumentos
ClkStart Clock
Clock DataType: clock

O nome do relógio a ser ligado.

Execução do programa
Quando o relógio é ligado, ele irá contar os segundos até que seja parado.

O relógio continua a contar quando o programa que o iniciou é parado. Entretanto, o


evento que você deseja marcar o tempo pode não ser válido. Por exemplo, se o pro-
grama estava medindo o tempo de espera para um sinal de entrada, o sinal pode ter sido
recebido quando o programa estava parado. Neste caso, o programa não será capaz de
"ver"o evento que ocorreu enquanto o programa estava parado.

O relógio continua a contar quando o robô é desligado, enquanto a bateria back-up


retiver o programa que contém a variável relógio.

Se o relógio está marcando ele pode ser lido, parado ou zerado.

Exemplo
VAR clock clock2;

ClkReset clock2;
ClkStart clock2;
WaitUntil DInput(di1) = 1;
ClkStop clock2;
time:=ClkRead(clock2);

O tempo de espera para di1 tornar-se 1 é marcado.

Data Types do Sistema e Rotinas 2-ClkStart-3


ClkStart Instruções

Sintaxe
ClkStart
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora

2-ClkStart-4 Data Types do Sistema e Rotinas


Instruções ClkStop

ClkStop Parar o cronômetro


ClkStop é usado para parar o cronômetro.

Exemplo
ClkStop clock1;

O relógio clock1 é parado.

Argumentos
ClkStop Clock
Clock DataType: clock

O nome do relógio a ser parado.

Execução do programa
Quando o relógio é parado, ele pára de contar o tempo.

Se um relógio é parado, ele pode ser lido, reiniciado ou zerado.

Sintaxe
ClkStop
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’

Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora
Mais exemplos Instruções - ClkStart

Data Types do Sistema e Rotinas 2-ClkStop-5


ClkStop Instruções

2-ClkStop-6 Data Types do Sistema e Rotinas


Instruções Close

Close Fecha um arquivo ou um canal serial


Close é usado para fechar um arquivo ou um canal serial.

Exemplo
Close channel2;

O canal serial referido por channel2 é fechado.

Argumentos
Close IODevice
IODevice DataType: iodev

O nome (referência) do arquivo ou canal serial a ser fechado.

Execução do programa
O arquivo ou canal serial especificado é fechado e deve ser reaberto antes de ler ou
escrever. Se ele já estava fechado, a instrução é ignorada.

Sintaxe
Close
[IODevice ’:=’] <variável (VAR) do iodev>’;’

Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-Close-1


Close Instruções

2-Close-2 Data Types do Sistema e Rotinas


Instruções comment

Comment Comentário
Comment é usado somente para tornar o programa mais fácil de entender. Não tem
efeito na execução do programa.

Exemplo
! Vai para a posição acima do palete
MoveL p100, v500, z20, tool1;

É inserido um comentário no programa para torná-lo mais fácil de entender.

Argumentos
! Comment
Comment Text string

Nenhum texto.

Execução do programa
Nada acontece quando você executa esta função.

Sintaxe
(EBNF)
’!’ {<character>} <newline>

Informações relacionadas
Descrito em:
Caracteres permitidos em um comentário Características Básicas-
Elementos básicos
Comentários com dado e declaração de Características Básicas-
rotina Elementos básicos

Data Types do Sistema e Rotinas 2-comment-1


comment Instruções

2-comment-2 Data Types do Sistema e Rotinas


Instruções ConfJ

ConfJ Controla a config. durante movimento eixo a eixo


ConfJ (Configuration Joint) é usado para especificar se a configuração do robô deve
ou não ser controlada durante movimento eixo a eixo. Se não é controlada, o robô pode
algumas vezes utilizar uma configuração diferente daquela o qual foi programado.

Com Conf\Off o robô não pode conectar a configuração de eixos principais - o robô -
irá procurar uma solução com a mesma configuração dos eixos principais como fosse
a atual. Move-se para a configuração de punho mais próxima para os eixos 4 e 6.

Exemplos
ConfJ \Off;
MoveJ *, v1000, fine, tool1;

O robô se move para a posição e a orientação programadas. Se esta posição pode


ser alcançada de diferentes maneiras, com diferentes configurações de eixo, a
posição possível mais próxima é escolhida.

ConfJ \On;
MoveJ *, v1000, fine, tool1;

O robô se move para a posição, orientação e configuração de eixo programado.


Se isto não é possível, a execução do programa para.

Argumentos
ConfJ [\On] | [\Off]
\On DataType: switch

O robô sempre se move para a configuração de eixo programada. Se isto não for
possível utilizando a posição e orientação programada, a execução do programa
pára.

O robô IRB5400 se mmove para a configuração de eixo programada ou para uma


configuração de eixo perto da programada. A execução do programa não pára se
for impossível atingir a configuração de eixo programada.

\Off DataType: switch

O robô sempre se move para a configuração de eixo mais próxima.

Execução do programa
Se o argumento \On (ou nenhum argumento) é escolhido, o robô sempre se moverá

Data Types do Sistema e Rotinas 2-ConfJ-1


ConfJ Instruções

para a configuração de eixo programada. Se isto não é possível utilizando a posição e


orientação programada, a execução do programa para antes de iniciar movimento.

Se o argumento \Off é escolhido, o robô sempre se move para a configuração de eixo


mais próxima. Esta pode ser diferente da programada se a configuração foi especificada
manualmente de forma errada, ou se um deslocamento de um programa foi rea-lizado.

O controle é ativado por default. Este é automaticamente colocado em

- uma partida a frio


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

Sintaxe
ConfJ
[ ’\’ On] | [ ’\’ Off] ’;’

Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Princípios de Movimento -
Configuração do robô

Configuração do robô
durante movimento linear Instruções - ConfL

2-ConfJ-2 Data Types do Sistema e Rotinas


Instruções ConfL

ConfL Monitora a configuração durante movimento linear


ConfL (Configuration Linear) é usado para especificar se a configuração do robô deve
ou não ser monitorada durante movimento linear ou circular. Se ele não é monitorado,
a configuração no tempo de execução pode diferir daqueles do tempo programado. Isto
pode resultar em movimentos inesperados do robô quando o modo é mudado para
movimento do punho.

NOTA: A monitoração da configuração não é usada no robô IRB5400.

Exemplos
ConfL \On;
MoveL *, v1000, fine, tool1;

A execução do programa pára quando a configuração programada não é possível


de ser alcançada a partir da posição atual.

SingArea \Wrist;
Confl \On;
MoveL *, v1000, fine, tool1;

O robô se move para a posição, orientação e configuração de eixo de punho pro-


gramadas. Se isto não é possível, a execução do programa pára.

ConfL \Off;
MoveL *, v1000, fine, tool1;

Nenhuma mensagem de erro é mostrada no display quando a configuração pro-


gramada não é a mesma que a configuração estipulada pela execução do pro-
grama.

Argumentos
ConfL [\On] | [\Off]
\On DataType: switch

A configuração do robô é monitorada.

\Off DataType: switch

A configuração do robô não é monitorada.

Data Types do Sistema e Rotinas 2-ConfL-1


ConfL Instruções

Execução do programa
Durante movimento linear ou circular, o robô sempre se move para a posição e orien-
tação programada que tem a configuração de eixo mais próxima possível. Se o argu-
mento \On (ou nenhum argumento) é escolhido, então o robô checa se a configuração
de eixo de punho programada pode ser alcançada pela atual posição. Se ela não pode
ser alcançada, a execução do programa pára. Entretanto, é possível reiniciar o programa
novamente, mas os eixos do punho continuarão com configuração errada. Num ponto
de parada, o robô checa que as configurações alcançadas de todos os eixos, e não
somente dos eixos do punho.

Se SingArea\Wrist é também usado, o robô sempre se move para a configuração dos


eixos do punho programada e num ponto de parada ficando a configuração dos eixos
para serem checadas.

Se o argumento \Off é escolhido, não há monitoramento.

Monitoramento é ativado default. Esta é automaticamente colocado em

- uma partida a frio


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

Sintaxe
ConfL
[ ’\’ On] | [ ’\’ Off] ’;’

Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Movimentos e Princípios E/S-
Configuração do robô
Configuração do robô durante movimento Instruções - ConfJ
eixo a eixo

2-ConfL-2 Data Types do Sistema e Rotinas


Instruções CONNECT

CONNECT Conecta uma interrupção a uma rotina trap


CONNECT é usado para achar a identificação de uma interrupção e conectá-la a rotina
trap.

A interrupção é definida ordenando um evento de interrupção e especificando sua iden-


tificação. Assim, quando tal evento ocorrer, a rotina trap é automaticamente executada.

Exemplo
VAR intnum feeder_low;
CONNECT feeder_low WITH feeder_empty;
ISignalDI di1, 1 , feeder_low;

Uma interrupção identificada feeder_low é criada na qual é conectada a uma


rotina trap feeder_empty. A interrupção é definida como entrada di1 está em nível
lógico alto. Em outras palavras, quando este sinal torna-se alto (igual a um), uma
rotina trap feeder_empty é executada.

Argumentos
CONNECT Interrupt WITH Trap routine
Interrupt DataType: intnum

A variável que deve ser designada na interrupção identificada.


Esta não deve ser declarada dentro de uma rotina (dado de rotina).

Trap routine Identifier

O nome da rotina trap .

Execução de programa
A variável é designada a uma interrupção identificada na qual pode então ser usada
quando ordena ou desabilita interrupções. Esta identificação é também conectada para
especificar uma rotina trap.

Note que um evento pode ser manipulado, uma interrupção também deve ser ordenada,
por exemplo, o evento especificado.

Limitações
Uma interrupção (identidade de interrupção) não pode ser conectada mais de uma vez

Data Types do Sistema e Rotinas 2-CONNECT-1


CONNECT Instruções

na rotina trap.
Interrupções diferentes, entretanto, pode ser conectada à mesma rotina trap.

Quando uma interrupção tinha sido conectada a uma rotina trap, ela não pode ser
reconectada ou transferida a uma outra rotina; ela deve primeiro ser apagada usando a
instrução IDelete.

Tratamento de erros
Se a variável de interrupção já está ligada à rotina TRAP, a variável do sistema ERRNO
é ajustada para ERR_ALRDYCNT.

Se a variável de interrupção não for uma variável de referência, a variável do sistema


ERRNO é ajustada para ERR_CNTNOTVAR.

Se não se encontrarem disponíveis mais números de interrupção, a variável do sistema


ERRNO é ajustada para ERR_INOMAX.

Estes erros podem ser manuseados no tratamento de ERROS.

Sintaxe
(EBNF)
CONNECT <destino da conexão> WITH <trap>‘;’

<destino da conexão> ::= <variável>


| <parâmetro>
| <VAR>
<trap> ::= <identidade>

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações sobre interrupções Características básicas- Interrupções

2-CONNECT-2 Data Types do Sistema e Rotinas


Instruções DeactUnit

DeactUnit Desativa uma unidade mecânica


DeactUnit é usada para desativar uma unidade mecânica.

Também pode ser usada para determinar qual unidade deve ser ativada quando, por
exemplo, unidades de drive comum são usadas.

Exemplos
DeactUnit orbit_a;

Desativação da unidade mecânica orbit_a.

MoveL p10, v100, fine, tool1;


DeactUnit track_motion;
MoveL p20, v100, z10, tool1;
MoveL p30, v100, fine, tool1;
ActUnit track_motion;
MoveL p40, v100, z10, tool1;

A unidade track_motion será estacionário quando o robô se move para p20 e p30.
Depois disso, ambos o robô e o track_motion se moverão para p40.

MoveL p10, v100, fine, tool1;


DeactUnit orbit1;
ActUnit orbit2;
MoveL p20, v100, z10, tool1;

A unidade orbit1 é desativada e a orbit2 ativada.

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

O nome da unidade mecânica que deve ser desativada.

Execução do programa
Quando o robô e eixos externos tiverem que chegar ao mesmo tempo, a unidade
mecânica especificada é desativada. Isto significa que ela não será controlada nem
monitorada até ser reativada.

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


uma das unidades mecânicas também será desconectada da unidade de drive comum.

Data Types do Sistema e Rotinas 2-DeactUnit-1


DeactUnit Instruções

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

- na sequência do programa StorePath ... RestoPath


- na rotina RESTART
- quando um dos eixos na unidade mecânica está no modo independente.

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

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

Informações relacionadas
Descrito em:
Ativando unidades mecânicas Instruções - ActUnit
Unidades mecânicas DataTypes- mecunit

2-DeactUnit-2 Data Types do Sistema e Rotinas


Instruções Decr

Decr Decremento de 1
Decr é usado para subtrair 1 de uma variável numérica ou persistente.

Exemplo
Decr reg1;

1 é subtraído de reg1, i.e. reg1:=reg1-1.

Argumentos
Decr Name
Name DataType: num

O nome da variável ou persistente a ser subtraída.

Exemplo
TPReadNum no_of_parts, "Quantas partes devem ser produzidas? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE

É perguntado ao operador para entrar com o número de partes a serem produzi-


das. A variável no_of_parts é usada para contar o número que ainda deve ser
produ-zido.

Sintaxe
Decr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Data Types do Sistema e Rotinas 2-Decr-1


Decr Instruções

Informações relacionadas
Descrito em:
Incrementa a variável em 1 Instruções - Incr
Subtraindo qualquer valor de uma variável Instruções - Add
Alterando dados usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação

2-Decr-2 Data Types do Sistema e Rotinas


Instruções EOffsOff

EOffsOff Desativa o offset para eixos externos


EOffsOff (External Offset Off) é usado para desativar o offset para eixos externos.

O offset para eixos externos é ativado pela instrução EOffsSet ou EOffsOn e se aplica
a todos os movimentos até que algum outro offset para eixos externos seja ativado ou
até que o offset para eixos externos seja desativado.

Exemplos
EOffsOff;

Desativação do offset para eixos externos.

MoveL p10, v500, z10, tool1;


EOffsOn \ExeP:=p10, p11;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
EOffsOff;
MoveL p40, v500, z10, tool1;

O offset é definido como uma diferença entre a posição de cada eixo no p10 e
p11. Este deslocamento afeta o movimento para p20 e p30,mas não para p40.

Execução do programa
Offsets para eixos externos ativos são desligados.

Sintaxe
EOffsOff ‘;’

Informações relacionadas
Descrito em:
Definição de offset usando duas posições Instruções - EOffsOn
Definição de offset usando valores Instruções - EOffsSet
Desativação do deslocamento do robô Instruções - PDispOff

Data Types do Sistema e Rotinas 2-EOffsOff-1


EOffsOff Instruções

2-EOffsOff-2 Data Types do Sistema e Rotinas


Instruções EOffsOn

EOffsOn Ativa o offset para eixos externos


EOffsOn (External Offset On) é usado para definir e ativar o offset para eixos externos
usando duas posições.

Exemplos
MoveL p10, v500, z10, tool1;
EOffsOn \ExeP:=p10, p20;

Ativação do offset para eixos externos. Isto é calculado para cada eixo baseado
na diferença entre as posições p10 e p20.

MoveL p10, v500, fine, tool1;


EOffsOn *;

Ativação do offset para eixos externos. Desde que o ponto de parada foi usado
na instrução anterior, o argumento \ExeP não tem que ser usado. O deslocamento
é calculado com base na diferença entre a posição atual de cada eixo e o ponto
programado (*) gravado na instrução.

Argumentos
EOffsOn [ \ExeP ] ProgPoint
[\ExeP ] (Executed Point) DataType: robtarget

A nova posição dos eixos no momento da execução do programa. Se este argu-


mento é omitido, é usada a atual posição dos eixos no momento da execução do
programa.

ProgPoint (Programmed Point) DataType: robtarget

A posição original dos eixos no momento da programação.

Execução do programa
O offset é calculado como uma diferença entre ExeP e ProgPoint para cada eixo
externo separadamente. Se ExeP não foi especificado, a atual posição dos eixos no
momento da execução do programa é usada no lugar. Desde que a atual posição dos
eixos é usada, os eixos não deverão se mover quando EOffsOn é executado.

Este offset é então usado para deslocar a posição dos eixos externos em uma posição
de instrução subsequente e permanece ativo até outro offset ser ativado (a instrução

Data Types do Sistema e Rotinas 2-EOffsOn-3


EOffsOn Instruções

EOffsSet ou EOffsOn) ou até que o offset para eixos externos seja desativado (a
instrução EOffsOff).

Somente um offset para cada eixo externo individual pode ser ativado por vez. Por
outro lado, vários EOffsOn podem ser programados um após o outro e, se isto ocorre,
os diferentes offsets serão adicionados.

O offset do eixo externo é automaticamente fixado para

- uma partida a frio


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

Exemplo
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;

Uma busca é realizada na qual a posição procurada do robô e do eixo externo é


gravada na posição psearch. Qualquer movimento realizado após isto parte desta
posição usando um programa de deslocamento do robô e do eixo externo. Isto é
calculado baseado em diferenças entre a posição procurada e o ponto programado
(*) gravado na instrução.

Sintaxe
EOffsOn
[ ‘\’ ExeP ’:=’ < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’;’

Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição de offset usando valores Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas

2-EOffsOn-4 Data Types do Sistema e Rotinas


Instruções EOffsSet

EOffsSet Ativa o offset para eixos externos usando um valor


EOffsSet (External Offset Set) é usado para definir e ativar o offset para eixos externos
usando valores.

Exemplo
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
.
EOffsSet eax_a_p100;

Ativação do offset eax_a_p100 para eixo externo, significando (fornecido que o


eixo externo “a” é linear) que:

- O sistema de coordenada ExtOffs está deslocado 100 mm do eixo lógico “a”


(veja Figura 1).
- Contanto que este offset seja ativado, todas as posições estarão deslocadas 100
mm na direção do eixo x.
.

100
Sistema de Coordenada
Normal

0 +X
Sistema de Coordenada
ExtOffs

0 +X
Figure 2 Deslocamento de um eixo externo.

Argumentos
EOffsSet EAxOffs
EAxOffs (External Axes Offset) DataType: extjoint

O offset para eixo externo é definido como tipo de dado extjoint, expresso em:

- mm para eixos lineares


- graus para rotação dos eixos

Data Types do Sistema e Rotinas 2-EOffsSet-1


EOffsSet Instruções

Execução do programa
O offset para eixo externo é ativado quando a instrução EOffsSet é ativada e permanece
ativo até outro offset ser ativado (a instrução EOffsSet ou EOffsOn) ou até o offset para
eixos externos ser desativado (o EOffsOff).

Somente um offset para eixo externo pode ser ativado por vez. Offsets não podem ser
adicionados um ao outro usando EOffsSet.

O offset para eixos externos é automaticamente fixado para

- uma partida a frio


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

Sintaxe
EOffsSet
[ EAxOffs ’:=’ ] < expressão (IN) do extjoint> ’;’

Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição do offset usando duas posições Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Definição de dado do tipo extjoint DataType - extjoint
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas

2-EOffsSet-2 Data Types do Sistema e Rotinas


Instruções ErrWrite

ErrWrite Escreve uma Mensagem de Erro


ErrWrite (Error Write) é usada para mostrar uma mensagem de erro na unidade de pro-
gramação e escrevê-la na lista de mensagem do robô.

Exemplo
ErrWrite “PLC error” , “Erro fatal no PLC” \RL2:=”Call service”;
Stop;

;
Stop;

Uma mensagem é gravada na lista do robô. A mensagem também é mostrada no


display da unidade de programação.

ErrWrite \ W, “ Search error”, “Não acertou na primeira busca”;


RAISE try_search_again;

A mensagem é gravada somente na lista do robô. A execução do programa então


continua.

Argumentos
ErrWrite [ \W ] Header Reason [ \RL2] [ \RL3] [ \RL4]
[ \W ] (Warning) DataType: switch

Dá um aviso que é gravado somente na lista de mensagem de erro do robô (não


mostra diretamente no display da unidade de programação).

Header DataType: string

Título da mensagem de erro (máx. 24 caracteres).

Reason DataType: string

Razão do erro (linha 1 de no máx. 40 caracteres).

[ \RL2] (Reason Line 2) DataType: string

Razão do erro (linha 2 de no máx. 40 caracteres).

[ \RL3] (Reason Line 3) DataType: string

Razão do erro (linha 3 de no máx. 40 caracteres).

[ \RL4] (Reason Line 4) DataType: string

Data Types do Sistema e Rotinas 2-ErrWrite-1


ErrWrite Instruções

Razão do erro (linha 4 de no máx. 40 caracteres).

Execução do programa
Uma mensagem de erro (máx. 5 linhas) é mostrada no display da unidade de pro-
gramação e escrita na lista de mensagem do robô.

ErrWrite sempre gera o programa erro no. 80001 ou no caso de aviso (argumento \W)
gera no. 80002.

Limitações
Comprimento total do “string” (Cabeçalho+Razão+\RL2+\RL3+\RL4) limitado a 145
caracteres.

Sintaxe
ErrWrite
[ ’\’ W ’,’ ]
[ Header ’:=’ ] < expressão (IN) do string> ‘,’
[ Reason ’:=’ ] < expressão (IN) do string>
[ ’\’ RL2 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL3 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL4 ’:=’ < expressão (IN) do string> ] ‘;’

Informações relacionadas
Descrito em:

Mostra a mensagem somente no display Instruções - TPWrite


da unidade de programação
Lista de mensagem Serviço

2-ErrWrite-2 Data Types do Sistema e Rotinas


Instruções EXIT

EXIT Termina a execução do programa


EXIT é usado para terminar a execução do programa. Reinício do programa será então
bloqueado, i.e. o programa somente pode ser reiniciado pela primeira instrução da
rotina principal (se o ponto de partida não foi movido manualmente).

A instrução EXIT deve ser usada quando ocorre um erro fatal ou quando a execução do
programa é parada permanentemente. A instrução Stop é usada para parar temporaria-
mente a execução do programa.

Exemplo
ErrWrite "Erro fatal","Estado ilegal";
EXIT;

A execução do programa pára e não pode ser reiniciada daquela posição do pro-
grama.

Sintaxe
EXIT ’;’

Informações relacionadas
Descrito em:
Parando a execução do programa Instruções - Stop
temporariamente

Data Types do Sistema e Rotinas 2-EXIT-1


EXIT Instruções

2-EXIT-2 Data Types do Sistema e Rotinas


Instruções ExitCycle

ExitCycle Interromper ciclo atual e iniciar seguinte


ExitCycle é usado para interromper o ciclo atual e mover o PP novamente para a
primeira instrução da rotina principal.

Se a execução estiver em modo contínuo, ela começará executando o ciclo seguinte.


Se estiver em modo cíclico, será interrompida na primeira instrução da rotina principal.

Exemplo
VAR num cyclecount:=0;
VAR intnum error_intno;

PROC main()
IF cyclecount = 0 THEN
CONNECT error_intno WITH error_trap;
ISignalDI di_error,1,error_intno;
ENDIF
cyclecount:=cyclecount+1;
! start to do something intelligent
....

ENDPROC

TRAP error_trap
TPWrite “ERROR, I will start on the next item”;
ExitCycle;
ENDTRAP

Isto iniciará o ciclo seguiunte se o sinal di_error for definido.

Execução do programa
A execução de ExitCycle na tarefa de programa MAIN produz os seguintes resultados
na tarefa MAIN:

- Interrupção dos movimentos do robô em andamento


- Todos os caminhos de robô não executados, em todos os níveis de caminho,
(em ambos os níveis normal e StorePath) são limpos
- Todas as instruções iniciadas mas não concluídas, em todos os níveis de
execução (em ambos os níveis normal e TRAP) são interrompidas
- O ponteiro de programa é movido para a primeira instrução da rotina principal
- A execução do programa continua no próximo ciclo

A execução de ExitCycle em alguma outra tarefa de programa (além de MAIN) produz


Manual de Referência do RAPID 8-ExitCycle-1
ExitCycle Instruções

os seguintes resultados na tarefa real:

- Todas as instruções iniciadas mas não concluídas, em todos os níveis de


execução (em ambos os níveis normal e TRAP) são interrompidas
- O ponteiro de programa é movido para a primeira instrução da rotina principal
- A execução do programa continua com o próximo ciclo

ExitCycle não afeta nenhuma das outras coisas modais no programa e no sistema,
como:

- Os valores reais de variáveis ou dados persistentes


- Quaisquer configurações de movimento tais como seqüência de StorePath-
RestoPath, zonas gobais, etc.
- Diretórios, arquivos abertos, etc.
- Interrupções definidas, etc.

Sintaxe
ExitCycle’;’

Informações relacionadas
Descrito em:
Parar após erro fatal Instruções - EXIT
Terminar execução do programa Instruções - EXIT
Parar para ações do programa Instruções - Stop
Terminar execução de uma rotina Instruções - RETURN

8-ExitCycle-2 Manual de Referência do RAPID


Instruções ExitCycle

Manual de Referência do RAPID 8-ExitCycle-3


ExitCycle Instruções

8-ExitCycle-4 Manual de Referência do RAPID


Instruções FOR

FOR Repete por um certo número de vezes


FOR é usado quando uma ou várias instruções são repetidas um número de vezes.

Se as instruções são repetidas contanto que uma dada condição é encontrada, a


instrução WHILE é usada.

Exemplo
FOR i FROM 1 TO 10 DO
routine1;
ENDFOR

Repete a rotina 10 vezes.

Argumentos
FOR Loop counter FROM Start value TO End value
[STEP Step value] DO ... ENDFOR
Loop counter Identificador

O nome do dado que conterá o valor do atual loop counter.


O dado é declarado automaticamente e o nome não deve portanto ser o mesmo
nome de qualquer dado que já existe.

Start value DataType: Num

O valor inicial desejado do loop counter.


(usualmente valores inteiros)

End value DataType: Num

O valor final desejado do loop counter.


(usualmente valores inteiros)

Step value DataType: Num

O valor pelo qual o loop counter é incrementado (ou decrementado) para cada loop.
(usualmente valores inteiros)

Se este valor não é especificado, o passo deste valor será automaticamente fixado
em 1 (ou -1 se o valor inicial for maior que o valor final).

Data Types do Sistema e Rotinas 2-FOR-1


FOR Instruções

Exemplo
FOR i FROM 10 TO 2 STEP -1 DO
a{i} := a{i-1};
ENDFOR

Os valores de uma forma geral, são ajustados ascendentes para que


um{10}:=a{9}, a{9}:=a{8} etc.

Execução do programa
1. As expressões para o início, fim e passo destes valores são calculados.
2. Ao loop counter é atribuido o valor inicial.
3. O valor do loop counter é checado para ver se este valor está entre o valor inicial e
final, ou se ele é igual ao valor inicial ou final. Se o valor do loop counter estiver fora
destes limites, o loop FOR pára, e a execução do programa continua com a instrução
ENDFOR.
4. As instruções no loop FOR são executadas.
5. O loop counter é incrementado (ou decrementado) de acordo com o passo deste
valor.
6. O loop FOR é repetido, iniciando do ponto 3.

Limitações
O loop counter (do DataType num) pode somente ser acessado de dentro do loop FOR
e consequentemente mascarar outro dado e rotina que tem o mesmo nome. Ele pode
somente ser lido (não atualizado) na instrução de loop FOR.

Valores decimais para início, final e passo destes valores, sem combinação com exata
condição de finalização para o loop FOR, não pode ser usado (se indefinidos ou não o
último loop é rodado).

Sintaxe
(EBNF)
FOR <loop variável> FROM <expressão> TO <expressão>
[ STEP <expressão> ] DO
<lista de instrução>
ENDFOR
<loop variável> ::= <identificador>

2-FOR-2 Data Types do Sistema e Rotinas


Instruções FOR

Informações relacionadas
Descrito em:

Expressões Características Básicas - Expressões


Identificadores Características Básicas -
Elementos básicos

Data Types do Sistema e Rotinas 2-FOR-3


FOR Instruções

2-FOR-4 Data Types do Sistema e Rotinas


Instruções GetSysData

GetSysData Dados do sistema Get


GetSysData busca o valor e o nome do símbolo opcional, para os dados do sistema
atual do tipo de dados especificado.

Com esta instrução será possível buscar dados e o nome da Ferramenta (Tool) ou
Objeto deTrabalho (Work Obkect) ativos no momento.

Exemplo
PERS tooldata curtoolvalue := [TRUE, [[0, 0, 0], [1, 0, 0, 0]],
[0, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0]];
VAR string curtoolname;

GetSysData curtoolvalue;

Copia o valor do dado da ferramenta ativa atual para a variável persistente cur-
toolvalue.

GetSysData curtoolvalue \ObjectName := curtoolname;

Copia também o nome da ferramenta ativa atual para a variável curtoolname.

Argumentos
GetSysData DestObject [\ ObjectName ]
DestObject Tipo de dados: anytype

Persistente para armazenamento dos valores dos dados do sistema ativo atual.

O tipo de dados deste argumento também especifica o tipo de dados do sistema


a buscar ( Ferramenta ou Objeto de Trabalho).

[\ObjectName] Tipo de dados: string

Argumento de opção (variável ou persistente) para também buscar o nome do


dado do sistema ativo atual.

Execução do programa
Quando executar a instrução GetSysData o valor do dado atual é guardado no per-
sistente especificado no argumento DestObject.

Se for usado o argumento \ObjectName, o nome do dado atual é guardado na variável


especificada ou persistente no argumento ObjectName.

Data Types do Sistema e Rotinas 2-GetSysData-1


GetSysData Instruções

Os dados do sistema atual para Ferramenta ou Objeto de Trabalho são ativados pela
execução de qualquer instrução de movimento ou poderão ser ajustados manualmente
na janela de deslocamento lento (jog).

Sintaxe
GetSysData
[ DestObject’:=’] < persistente(PERS) of anytype>
[’\’ObjectName’:=’ < expressão (INOUT) of string> ] ’;’

Informações relacionadas
Descritas em:
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata

2-GetSysData-2 Data Types do Sistema e Rotinas


Instruções GOTO

GOTO Vai para uma nova instrução


GOTO é usado para transferir a execução do programa para outra linha (um label) den-
tro da mesma rotina.

Exemplos
GOTO next;
.
next:

Execução do programa continua com a instrução next.

reg1 := 1;
next:
.
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;

O loop do programa next é executado por cinco vezes.

IF reg1>100 GOTO highvalue;


lowvalue:
.
GOTO ready;
highvalue:
.
ready:

Se reg1 é maior que 100, o loop de programa highvalue é executado; de outra


forma o loop lowvalue é executado.

Argumentos
GOTO Label
Label Identificador

O identificador de onde a execução do programa irá continuar.

Limitações
Só é possível para transferir a execução do programa para um label dentro da mesma
rotina.

Só é possível para transferir a execução do programa para um label dentro de uma

Data Types do Sistema e Rotinas 2-GOTO-1


GOTO Instruções

instrução IF ou TEST, se a instrução GOTO também for localizada dentro do mesmo


ramo daquela instrução.

Só é possível para transferir a execução do programa para um label dentro de uma


instrução FOR ou WHILE, se a instrução GOTO também for localizada dentro daquela
instrução.

Sintaxe
(EBNF)
GOTO <identificador>’;’

Informações relacionadas
Descrito em:
Identificador Instruções - label
Outras instruções que trocam Sumário RAPID -
o fluxo do programa Controlando o fluxo do programa

2-GOTO-2 Data Types do Sistema e Rotinas


Instruções GripLoad

GripLoad Define a carga do robô


GripLoad é usado para definir a carga a qual o robô segura em sua garra.

Descrição
É muito importante definir sempre a carga real da ferramenta e a carga
sustentada do robô, quando utilizado. Definições incorretas de dados de carga
podem resultar em sobrecarga da estrutura mecânica do robô.

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


consequências:

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


-> O robô não utilizará sua capacidade máxima
-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”.

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


-> Diminuição da precisão de trajeto incluindo riscos de “overshooting”
-> Risco de sobrecarga da estrutura mecânica

Exemplos
GripLoad piece1;

A garra do robô segura a carga chamada piece1.

GripLoad load0;

A garra do robô libera todas as cargas.

Argumentos
GripLoad Load
Load DataType: loaddata

O dado de carga que descreve a carga atual.

Execução do programa
A carga especificada afeta a performance do robô.

Data Types do Sistema e Rotinas 2-GripLoad-1


GripLoad Instruções

A carga padrão, 0 kg, é automaticamente definida

- num arranque a frio


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

Sintaxe
GripLoad
[ Load ’:=’ ] < persistente (PERS) do loaddata > ’;’

Informações relacionadas
Descrito em:
Definição do dado de carga DataTypes - loaddata
Definição da carga da ferramenta DataTypes - tooldata

2-GripLoad-2 Data Types do Sistema e Rotinas


Instruções IDelete

IDelete Cancela uma interrupção


IDelete (Interrupt Delete) é usado para cancelar (deletar) uma interrupção.

Se uma interrupção é somente desabilitada temporariamente, a instrução ISleep ou


IDisable deve ser usada.

Exemplo
IDelete feeder_low;

A interrupção feeder_low é cancelada.

Argumentos
IDelete Interrupt
Interrupt DataType: intnum

A identificação da interrupção.

Execução do programa
A definição da interrupção é completamente apagada. Para definí-la novamente, ela
primeiro deve ser reconectada a uma rotina trap.

A instrução deve ser precedida por um ponto de parada. Caso contrário a interrupção
será desativada antes que o ponto final seja alcançado.

Interrupções não tem que ser apagadas; isto é feito automaticamente quando

- um novo programa é carregado


- começa o programa desde o início
- o ponteiro do programa é movido para o início da rotina

Sintaxe
IDelete
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Data Types do Sistema e Rotinas 2-IDelete-1


IDelete Instruções

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desabilita temporariamente uma interrupção Instruções - ISleep
Desabilita temporariamente todas interrupções Instruções - IDisable

2-IDelete-2 Data Types do Sistema e Rotinas


Instruções IDisable

IDisable Desabilita interrupções


IDisable (Interrupt Disable) é usada para desabilitar todas as interrupções temporaria-
mente. Ela pode, por exemplo, ser usada particularmente numa parte sensível do pro-
grama onde nenhuma interrupção é permitida atuar no caso de distúrbio na execução
normal do programa.

Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

Nenhuma interrupção enquanto o canal serial estiver sendo lido.

Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas numa pilha. Quando as interrupções forem permitidas novamente, a(s) inter-
rupção(ões) do programa então começam, imediatamente a serem geradas, executadas
na sequência “first in - first out” da pilha.

Sintaxe
IDisable‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Permitindo interrupcões Instruções - IEnable

Data Types do Sistema e Rotinas 2-IDisable-1


IDisable Instruções

2-IDisable-2 Data Types do Sistema e Rotinas


Instruções IEnable

IEnable Habilita interrupções


IEnable (Interrupt Enable) é usado para habilitar interrupções durante execução do
programa.

Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

Nenhuma interrupção é permitida enquanto o canal serial estiver sendo lido.


Quando terminar de ler, as interrupções são novamente permitidas.

Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas em uma fila. Quando interrupções são permitidas uma vez ou mais (IEna-
ble), a interrupção(s) do programa então imediatamente começa gerando, a execução
da sequência “first in - first out” primeiro a entrar primeiro a sair. A execução do pro-
grama então continua no programa usual e interrupções que ocorram após isto, estarão
de acordo logo que, elas ocorram.

Interrupções são sempre permitidas quando um programa é começado desde o início.


Interrupções desabilitadas pela instrução ISleep não são afetadas pela instrução IEna-
ble.

Sintaxe
IEnable‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Não permitindo interrupções Instruções - IDisable

Data Types do Sistema e Rotinas 2-IEnable-1


IEnable Instruções

2-IEnable-2 Data Types do Sistema e Rotinas


Instruções Compact IF

Compact IF Se uma condição é alcançada, então... (uma


instrução)
Compact IF é usada somente quando uma única instrução é executada se a dada con-
dição é alcançada.

Quando instruções diferentes são executadas, dependendo se a condição especificada


é alcançada ou não, a instrução IF é usada.

Exemplos
IF reg1 > 5 GOTO next;

Se reg1 é maior que 5, a execução do programa continua para o label next.

IF counter > 10 Set do1;

O sinal do1 é ligado se counter > 10.

Argumentos
IF Condition ...
Condition DataType: bool

A condição que deve ser satisfeita para que a instrução seja executada.

Sintaxe
(EBNF)
IF <expressão condicional> ( <instrução> | <SMT>) ’;’

Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas - Expressões
IF com várias instruções Instruções - If

Data Types do Sistema e Rotinas 2-Compact IF-1


Compact IF Instruções

2-Compact IF-2 Data Types do Sistema e Rotinas


Instruções IF

IF Se uma condição é satisfeita, então ...; do contrário ...


IF é usado quando instruções diferentes são usadas dependendo se a condição é
alcançada ou não.

Exemplos
IF reg1 > 5 THEN
Set do1;
Set do2;
ENDIF

Os sinais do1 e do2 são ligados somente se reg1 é maior que 5.

IF reg1 > 5 THEN


Set do1;
Set do2;
ELSE
Reset do1;
Reset do2;
ENDIF

Os sinais do1 e do2 são ligados ou desligados dependendo se reg1 é maior que
5 ou não.

Argumentos
IF Condition THEN ...
{ELSEIF Condition THEN ...}
[ELSE ...]
ENDIF
Condition DataType: bool

A condição deve ser satisfeita pelas instruções entre THEN e ELSE/ELSEIF


para ser executada.

Exemplo
IF counter > 100 THEN
counter := 100;
ELSEIF counter < 0 THEN
counter := 0;
ELSE
counter := counter + 1;

Data Types do Sistema e Rotinas 2-IF-1


IF Instruções

ENDIF

Counter é incrementado em 1. Entretanto, se o valor do counter está fora do lim-


ite 0-100, é designado ao counter o valor limite correspondente.

Execução do programa
As condições são testadas, em ordem sequencial, até que uma delas seja satisfeita. A
execução do programa continua com as instruções associadas àquela condição. Se ne-
nhuma das condições for satisfeita, a execução do programa continua com as instruções
seguindo ELSE. Se mais de uma condição for alcançada, somente as instruções rela-
cionadas com a primeira daquelas condições são executadas.

Sintaxe
(EBNF)
IF <expressão condicional> THEN
< lista de instruções>
{ELSEIF <expressão condicional> THEN < lista de instruções> | <EIF>}
[ELSE
< lista de instruções>]
ENDIF

Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas- Expressões

2-IF-2 Data Types do Sistema e Rotinas


Instruções Incr

Incr Incrementa de 1
Incr é usado para somar 1 a uma variável numérica ou persistente.

Exemplo
Incr reg1;

1 é adicionado a reg1, i.e. reg1:=reg1+1.

Argumentos
Incr Name
Name DataType: num

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

Exemplo
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Num:=no_of_parts;
ENDWHILE

O número de partes produzidas atualizado na unidade de programação a cada


ciclo. A produção continua contanto que o sinal stop_production não seja ligado.

Sintaxe
Incr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’

Informações relacionadas
Descrito em:
Decrementando uma variável em 1 Instruções - Decr
Adicionando qualquer valor a uma variável Instruções - Add
Alterando dado usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação

Data Types do Sistema e Rotinas 2-Incr-1


Incr Instruções

2-Incr-2 Data Types do Sistema e Rotinas


Instruções InvertDO

InvertDO Inverte o valor de um sinal de saída digital


InvertDO (Invert Digital Output) inverte o valor de um sinal de saída digital (0 -> 1 e
1 -> 0).

Exemplo
InvertDO do15;

O atual valor do sinal do15 é invertido.

Argumentos
InvertDO Signal
Signal DataType: signaldo

O nome do sinal a ser invertido.

Execução do programa
O atual valor do sinal é invertido (veja Figure 3).
:

1
Nível do sinal
0
Execução da instrução InvertDO
Execução da instrução InvertDO
1
Nível do sinal
0

Figure 3 Inversão de um sinal de saída digital.

Sintaxe
InvertDO
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-InvertDO-1


InvertDO Instruções

Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral Entrada/Saída Movimento e Princípios de E/S -
Princípios de E/S
Configuração da E/S Parâmetros do Sistema

2-InvertDO-2 Data Types do Sistema e Rotinas


Instruções IODisable

IODisable Desativar unidade de E/S


IODisable é usada para desativar uma unidade E/S durante a execução do programa
(somente no sistema S4C).

As unidades de E/S são ativadas automaticamente após a inicialização, se elas


estiverem definidas nos parâmetros do sistema. Quando necessário por qualquer razão,
as unidades de E/S podem ser desativadas ou ativadas durante a execução do programa.

Exemplo
IODisable “cell1”, 5;

Desativar a unidade de E/S com o nome cell1.Aguarde máx. 5 s.

Argumentos
IODisable UnitName MaxTime
UnitName Tipo de dados: string

O nome da unidade de E/S a ser desativada (com o mesmo nome como foi con-
figurada).

MaxTime Tipo de dados: núm

O período máximo de tempo de espera, expresso em segundos. Se este tempo


acabar antes da unidade de E/S ter acabado os passos de desativar, o tratamento
de erros, se existir um, será chamado com o código de erro ERR_IODISABLE.
Se não existir nenhum tratamento de erros, a execução será parada.

Para desativar uma unidade de E/S demora cerca de 2-5 s.

Execução do programa
A unidade de E/S especificada inicia os passos de desativar. A instrução fica pronta
quando os passos de desativar tiverem acabado. Se MaxTime acabar antes da unidade
de /S ter terminado os passos de desativar, um erro recuperável será gerado.

Depois de desativar uma unidade de E/S, qualquer ajuste de saídas nesta unidade resul-
tará em um erro.

Data Types do Sistema e Rotinas 2-IODisable-3


IODisable Instruções

Exemplo
PROC go_home()
VAR num recover_flag :=0;
...
! Start to disable I/O unit cell1
recover_flag := 1;
IODisable “cell1”, 0;
! Move to home position
MoveJ home, v1000,fine,tool1;
! Wait until disable of I/O unit cell1 is ready
recover_flag := 2;
IODisable “cell1”, 5;
...
ERROR
IF ERRNO = ERR_IODISABLE THEN
IF recover_flag = 1 THEN
TRYNEXT;
ELSEIF recover_flag = 2 THEN
RETRY;
ENDIF
ELSEIF ERRNO = ERR_EXCRTYMAX THEN
ErrWrite “Erro IODisable”, “Not possible to disable I/O unit cell”;
Stop;
ENDIF
ENDPROC

Para poupar o tempo de ciclo, a cell1 da unidade de E/S é desativada durante o


movimento do robô para a posição home. Com o robô na posição home, um teste
é feito para estabelecer se cell1 da unidade de E/S está totalmente desativada.
Após o número máx. de novas tentativas (5 com um tempo de espera de 5 s), a
execução do robô parará com uma mensagem de erro.

O mesmo princípio pode ser usado com IOEnable (isto poupará mais tempos de
ciclo comparado com IODisable).

Sintaxe
IODisable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’

2-IODisable-4 Data Types do Sistema e Rotinas


Instruções IODisable

Informações relacionadas
Descrito em:
Ativando uma unidade de E/S Instruções - IOEnable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e E/S -
I/O Principles
Configuração de E/S Guia do Usuário - Parâmetros do sis-
tema

Data Types do Sistema e Rotinas 2-IODisable-5


IODisable Instruções

2-IODisable-6 Data Types do Sistema e Rotinas


Instruções IOEnable

IOEnable Ativar unidade de E/S


IOEnable é usado para ativar uma unidade de E/S durante a execução do programa
(somente no sistema S4C).

As unidades de E/S são automaticamente ativadas após a inicialização, se elas


estiverem definidas nos parâmetros do sistema. Quando necessário por qualquer razão,
as unidades de E/S podem ser desativadas ou ativadas durante a execução do programa.

Exemplos
IOEnable “cell1”, 5;

Ativar a unidade de E/S com o nome cell1. Aguarde máx. 5 s.

Argumentos
IOEnable UnitName MaxTime
UnitName Tipo de dados: string

O nome da unidade de E/S a ser desativada (com mesmo nome como confi-
gurado).

MaxTime Tipo de dados: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acabar antes da unidade de E/S ter terminado os passos de desativar, o
tratamento de erros, se existir um, será chamado com o código de erro
ERR_IOENABLE. Se não existir um tratamento de erros, a execução será
parada.

Para ativar uma unidade de E/S demora cerca de 2-5 s.

Execução do programa
A unidade de E/S especificada inicia os passos de ativar. A instrução está pronta
quando os passos de ativar terminarem. Se MaxTime acabar antes da unidade de E/S
ter terminados os passos de ativar, um erro recuperável será gerado.

Após uma seqüencia de IODisable - IOEnable, todas as saídas para a unidade de E/S
corrente serão ajustadas para os valores antigos (antes de IODisable).

Data Types do Sistema e Rotinas 2-IOEnable-7


IOEnable Instruções

Exemplo
IOEnable pode também ser usado para checar se alguma unidade de E/S está
desconectada por alguma razão.

VAR num max_retry:=0;


...
IOEnable “cell1”, 0;
SetDO cell1_sig3, 1;
...
ERROR
IF ERRNO = ERR_IOENABLE THEN
IF max_retry < 5 THEN
WaitTime 1;
max_retry := max_retry + 1;
RETRY;
ELSE
RAISE;
ENDIF
ENDIF

Antes de usar sinais em cell1 da unidade de E/S, um teste é feito, se tentando ati-
var a unidade de E/S com um excesso de tempo após 0 seg. Se o teste falhar, é
feito um jump para o tratamento de erros. No tratamento de erros, a execução do
programa aguarda 1 seg. e uma nova tentativa é feita. Após 5 novas tentativas, o
erro ERR_IOENABLE é propagado para o chamador desta rotina.

Sintaxe
IOEnable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’

2-IOEnable-8 Data Types do Sistema e Rotinas


Instruções IOEnable

Informações relacionadas
Descrito em:
Mais exemplos Instruções - IODisable
Disativando uma unidade de E/S Instruções - IODisable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
sistema

Data Types do Sistema e Rotinas 2-IOEnable-9


IOEnable Instruções

2-IOEnable-10 Data Types do Sistema e Rotinas


Instruções ISignalAI

ISignalAI Interrupções de sinal de entrada analógico


ISignalAI (entrada analógica de sinal de interrupção) é usada para ordenar e ativar
interrupções oriundas de um sinal de entrada analógico.

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

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

ISignalAI ai1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado for maior que 0,1.

ISignalAI ai1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 for inferior a 0,5 ou superior a 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado for maior que 0,1.

Argumentos
ISignalAI [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch

Especifica se a interrupção deve ocorrer uma vez ou ciclicamente.

Se o argumento Single estiver definido, a interrupção ocorrerá, no máximo, uma


vez. Se o argumento for omitido, haverá uma interrupção toda vez que sua con-
dição for satisfeita.

Signal Tipo de dados: signalai

O nome do sinal que deverá gerar as interrupções.

Data Types do Sistema e Rotinas 2-ISignalAI-11


ISignalAI Instruções

Condition Tipo de dados: aiotrigg

Especifica como HighValue e LowValue definem a condição a ser satisfeita:

- AIO_ABOVE_HIGH: valor lógico do sinal acima de HighValue


- AIO_BELOW_HIGH: valor lógico do sinal abaixo de HighValue
- AIO_ABOVE_LOW: valor lógico do sinal acima de LowValue
- AIO_BELOW_LOW: valor lógico do sinal abaixo de LowValue
- AIO_BETWEEN: valor lógico do sinal entre LowValue
e HighValue
- AIO_OUTSIDE: valor lógico do sinal acima de HighValue ou
abaixo de LowValue
- AIO_ALWAYS: independente de HighValue e LowValue

HighValue Tipo de dados: num

Valor lógico alto para definir a condição.

LowValue Tipo de dados: num

Valor lógico baixo para definir a condição.

DeltaValue Tipo de dados: num

Define a diferença mínima de sinal lógico para que uma nova interrupção seja
gerada. O valor de sinal real comparado com o valor de referência armazenado
deve ser maior que o DeltaValue especificado para que uma nova interrupção seja
gerada.

[\DPos] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico positivas produzirão novas


interrupções.

[\DNeg] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico negativas produzirão novas


interrupções.

Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar interrupções.

Interrupt Tipo de dados: intnum

A identificação da interrupção. Essa interrupção deve ter sido conectada anteri-


ormente a uma rotina de interceptação através da instrução CONNECT.

2-ISignalAI-12 Data Types do Sistema e Rotinas


Instruções ISignalAI

Execução do programa
Quando o sinal satisfaz as condições especificadas (tanto Condition quanto DeltaV-
alue), uma chamada é feita à rotina de interceptação correspondente. Quando isso tiver
sido executado, a execução do programa continuará de onde a interrupção ocorreu.

Condições para geração da interrupção

Para que uma interrupção seja ordenada, toda vez que o sinal é amostrado, o valor do
sinal é lido, salvo e, posteriormente, utilizado como valor de referência para a condição
DeltaValue.

No tempo de subscrição da interrupção, se for especificado DeltaValue = 0 e após o


tempo de subscrição da interrupção, toda vez que o sinal for amostrado, seu valor é
comparado com HighValue e LowValue, conforme Condition e considerando DeltaV-
alue, para gerar ou não uma interrupção. Se o novo valor lido satisfizer o HighValue e
o LowValue especificados, (Condition), mas sua diferença quando comparado com o
último valor de referência armazenado for menor ou igual ao argumento DeltaValue,
nenhuma interrupção ocorrerá. Nenhuma interrupção ocorrerá também se o sinal de
diferença não estiver na direção especificada (argumento \DPos ou \DNeg).

O valor de referência armazenado para a condição DeltaValue é atualizado com o novo


valor lido para uso posterior em qualquer amostra se as seguintes condições forem sat-
isfeitas:

- Argumento Condition com HighValue e LowValue


(dentro dos limites)
- Argumento DeltaValue
(alteração de sinal suficiente em qualquer direção, independente da opção
\DPos ou \DNeg especificada)

O valor de referência só é atualizado no momento da amostragem, e não no tempo de


subscrição da interrupção.

Uma inteiro também é gerada na amostragem para atualização do valor de referência


se a direção da diferença do sinal estiver de acordo com o argumento especificado
(qualquer direção, \DPos ou \DNeg).

Se a opção \Single for utilizada, somente uma interrupção será gerada.


Se a opção \Single não for usada (interrupção cíclica), a cada amostragem do valor do
sinal, um novo teste das condições especificadas será feito (tanto Condition quanto
DeltaValue), comparando o valor de sinal real e o último valor de referência armaze-
nado, para gerar ou não uma interrupção.

Data Types do Sistema e Rotinas 2-ISignalAI-13


ISignalAI Instruções

Condição para geração de interrupção no momento de subscrição da interrupção

Amostrar antes da subscrição da interrupção

RefValue := CurrentValue

Interrupção subscrição
Falso
CurrentValue testado em relação a
Condition, HighValue e LowValue

Verdadeiro

Falso
DeltaValue = 0

Verdadeiro

Interrupção gerada

Continuar

2-ISignalAI-14 Data Types do Sistema e Rotinas


Instruções ISignalAI

Condição para geração de interrupção a cada amostragem, após a subscrição da


interrupção

Nova amostra

Falso
CurrentValue verificado em relação a
Condition, HighValue e LowValue
Verdadeiro

Verdadeiro
Não há DPos ou DNeg especificado e
ABS(CurrentValue - RefValue) > DeltaValue
Falso

DPos especificado e Verdadeiro


(CurrentValue - RefValue) > DeltaValue

Falso

Verdadeiro
DNeg especificado e
(RefValue - CurrentValue) > DeltaValue

Falso
RefValue := CurrentValue

ABS(CurrentValue - RefValue) > DeltaValue Interrupção


gerada
Falso
Verdadeiro

RefValue := CurrentValue

Continuar

Data Types do Sistema e Rotinas 2-ISignalAI-15


ISignalAI Instruções

Exemplo 1 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_BETWEEN, 6.1, 2,2, 1.0, sig1int;

A amostra 1 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 0 é maior que
DeltaValue.

A amostra 2 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 1 é maior que
DeltaValue.

As amostras 3, 4 e 5 não irão gerar interrupção alguma porque a diferença de sinal


é menor que DeltaValue.

A amostra 6 irá gerar uma interrupção.

As amostras de 7 a 10 não irão gerar interrupções porque o sinal está acima de


HighValue

A amostra 11 não irá gerar interrupção porque a diferença de sinal comparada


com a amostra 6 é igual a DeltaValue.

A amostra 12 não irá gerar interrupção alguma porque a diferença de sinal com-
parada com a amostra 6 é inferior a DeltaValue.

2-ISignalAI-16 Data Types do Sistema e Rotinas


Instruções ISignalAI

Exemplo 2 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_BETWEEN, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado nas amostras 1 e 2 porque o sinal está


dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.
Nenhuma interrupção será gerada porque as alterações de sinal estão em direção
negativa.

A amostra 6 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal na direção positiva comparada com a
amostra 2 é maior que DeltaValue.

Data Types do Sistema e Rotinas 2-ISignalAI-17


ISignalAI Instruções

Exemplo 3 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI \Single, ai1, AIO_OUTSIDE, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado na amostra 7 porque o sinal está den-


tro dos limites e a diferença absoluta de sinal entre o valor real e o último valor
de referência armazenado é maior que 1,0.

A amostra 8 irá gerar uma interrupção porque o valor do sinal está acima de
HighValue e a diferença de sinal na direção positiva comparada com a amostra 7
é maior que DeltaValue.

2-ISignalAI-18 Data Types do Sistema e Rotinas


Instruções ISignalAI

Exemplo 4 de geração de interrupção

Valor lógico do sinal

HighValue

Valor do sinal

LowValue

0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência

Supondo que a interrupção seja ordenada entre as amostras 0 e 1, a instrução seguinte


dará os seguintes resultados:

ISignalAI ai1, AIO_ALWAYS, 6.1, 2,2, 1.0 \DPos, sig1int;

Um novo valor de referência é armazenado nas amostras 1 e 2 porque o sinal está


dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.

A amostra 6 irá gerar uma interrupção porque a diferença de sinal na direção


positiva comparada com a amostra 2 é maior que DeltaValue.

As amostras 7 e 8 irão gerar uma interrupção porque a diferença de sinal na


direção positiva comparada com a amostra anterior é maior que DeltaValue.

Um novo valor de referência é armazenado nas amostras 11 e 12 porque o sinal


está dentro dos limites e a diferença absoluta de sinal entre o valor real e o último
valor de referência armazenado é maior que 1,0.

Data Types do Sistema e Rotinas 2-ISignalAI-19


ISignalAI Instruções

Tratamento de erros
Na subscrição de interrupção em um sinal de entrada analógico, uma interrupção será
feita para cada alteração no valor analógico que satisfaça a condição especificada ao
ordenar a subscrição da interrupção. Se o valor analógico estiver ruidoso, várias inter-
rupções poderão ser geradas, mesmo que somente um ou dois bits no valor analógico
tenham sido alterados.

Para evitar interrupções devidas a pequenas alterações no valor de entrada analógica,


defina DeltaValue com um nível maior que 0 para que nenhuma interrupção seja gerada
até que uma alteração no valor analógico seja maior que o DeltaValue especificado.

Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.

HighValue deve estar acima de LowValue.

DeltaValue deve ser 0 ou positivo.

As limitações para a identificação da interrupção são as mesmas que para ISignalDI.

Sintaxe
ISignalAI
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalai>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’

2-ISignalAI-20 Data Types do Sistema e Rotinas


Instruções ISignalAI

Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada Instruções - ISignalAO
analógica
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de Características básicas - Interrupções
interrupções
Mais exemplos Tipos de dados - intnum
Parâmetros de sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES

Data Types do Sistema e Rotinas 2-ISignalAI-21


ISignalAI Instruções

2-ISignalAI-22 Data Types do Sistema e Rotinas


Instruções ISignalAO

ISignalAO Interrupções do sinal de saída analógica


ISignalAO (saída analógica do sinal de interrupção) é usado para ordenar e ativar
interrupções a partir de um sinal de saída analógica.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAO \Single, ao1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Ordena uma interrupção para ocorrer na primeira vez que o valor lógico do sinal
de saída analógica ao1 estiver entre 0,5 e 1,5. Em seguida, uma chamada é feita
à rotina de interceptação iroutine1.

ISignalAO ao1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado anteriormente for maior que 0,1.

ISignalAO ao1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver abaixo de 0,5 ou acima de 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado anteriormente for
maior que 0,1.

Argumentos
ISignalAO [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch

Especifica se a interrupção deve ocorrer uma vez ou ciclicamente.

Se o argumento Single estiver definido, a interrupção ocorrerá somente uma vez.


Se o argumento for omitido, haverá uma interrupção toda vez que sua condição
for satisfeita.

Signal Tipo de dados: signalao

O nome do sinal que deve gerar interrupções.

Data Types do Sistema e Rotinas 2-ISignalAO-23


ISignalAO Instruções

Condition Tipo de dados: aiotrigg

Especifica como HighValue e LowValue definem a condição a ser satisfeita:

- AIO_ABOVE_HIGH: o valor lógico do sinal está acima de HighValue


- AIO_BELOW_HIGH: o valor lógico do sinal está abaixo de HighValue
- AIO_ABOVE_LOW: o valor lógico do sinal está acima de LowValue
- AIO_BELOW_LOW: o valor lógico do sinal está abaixo de LowValue
- AIO_BETWEEN: o valor lógico do sinal está entre LowValue
e HighValue
- AIO_OUTSIDE: o valor lógico do sinal está acima de HighValue ou
abaixo de LowValue
- AIO_ALWAYS: independente de HighValue e LowValue

HighValue Tipo de dados: num

Valor lógico alto para definir a condição.

LowValue Tipo de dados: num

Valor lógico baixo para definir a condição.

DeltaValue Tipo de dados: num

Define a diferença de sinal lógico mínima para a geração de uma nova inter-
rupção. O valor real do sinal comparado com o valor de referência armazenado
anteriormente deve ser maior que o DeltaValue especificado para que uma nova
interrupção seja gerada.

[\DPos] Tipo de dados: switch

Especifica que somente diferenças de sinal lógico positivas produzirão novas


interrupções.

[\DNeg] Tipo de dados: switch

Especifica que somente diferenças de sinal negativas produzirão novas inter-


rupções.

Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar novas interrupções.

Interrupt Tipo de dados: intnum

A Identificação da interrupção. Essa interrupção deve ter sido conectada anteri-


ormente a uma rotina de interceptação através da instrução CONNECT.

2-ISignalAO-24 Data Types do Sistema e Rotinas


Instruções ISignalAO

Execução do programa
Consulte as instruções ISignalAI para obter informações sobre:

- Execução do programa
- Condição para geração de interrupções
- Mais exemplos

Os mesmos princípios de ISignalAOsão válidos para ISignalAI.

Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.

HighValue precisa estar acima de LowValue.

DeltaValue precisa ser 0 ou positivo.

As limitações para a identidade da interrupção são as mesmas que para ISignalDO.

Sintaxe
ISignalAO
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalao>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’

Data Types do Sistema e Rotinas 2-ISignalAO-25


ISignalAO Instruções

Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada analógicaInstruções - ISignalAI
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de interrupçõesCaracterísticas básicas - Inter-
rupções
Mais exemplos Tipos de dados - intnum
Parâmetros do sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES

2-ISignalAO-26 Data Types do Sistema e Rotinas


Instruções ISignalDI

ISignalDI Ordena interrupções de um sinal de entrada digital


ISignalDI (Interrupt Signal Digital In) é usado para ordenar e habilitar interrupções de
um sinal de entrada digital.

Os sinais de sistema também podem produzir interrupções.

Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.

ISignalDI di1,0,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocado em 0.

ISignalDI \Single, di1,1,sig1int;

Ordena uma interrupção que ocorre somente na primeira vez que o sinal de
entrada digital di1 é colocado em 1.

Argumentos
ISignalDI [ \Single ] Signal TriggValue Interrupt
[ \Single ] DataType: switch

Especifica se a interrupção ocorre somente uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre uma vez. Se o argumento é


omitido, a interrupção irá ocorrer toda vez que a condição é satisfeita.

Signal DataType: signaldi

O nome do sinal que gera as interrupções.

TriggValue DataType: dionum

O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.

O valor é especificado como 0 ou 1 ou como um valor simbólico (por ex. high/


low). O sinal é disparado na transição para 0 ou 1.

Manual de Referência do RAPID 8-ISignalDI-1


ISignalDI Instruções

TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).

Interrupt DataType: intnum

A identidade da interrupção. Este deve ter sido previamente conectado a uma


rotina trap por meio da instrução CONNECT.

Execução do programa
Quando o sinal assume o valor especificado, uma chamada é feita para a correspon-
dente rotina trap. Quando isto é executado, a execução do programa continua de onde
a interrupção ocorreu.

Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 4).

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 4 Interrupção de um sinal de entrada digital no nível de sinal 1.

Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem antes ser apagada. Interrupções devem portanto serem manipuladas como mostra
em uma das alternativas abaixo.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC

Toda ativação de interrupções é feita no início do programa. Estas instruções são

2-ISignalDI-2 Data Types do Sistema e Rotinas


Instruções ISignalDI

então deixadas fora do fluxograma principal do programa.

PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC

A interrupção é eliminada no final do programa e, em seguida, é reativada. É de


notar que, neste caso, a interrupção fica inativo durante um curto período de
tempo.

Sintaxe
ISignalDI
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ TriggValue ’:=’ ] < expressão (IN) do dionum >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’

Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de saída Instruções - ISignalDO
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum

Manual de Referência do RAPID 8-ISignalDI-3


ISignalDI Instruções

2-ISignalDI-4 Data Types do Sistema e Rotinas


Instruções ISignalDO

ISignalDOInterrupções de um sinal de saída digital


ISignalDO (Interrupt Signal Digital Out) é usado para ordenar e habilitar interrupções
de um sinal de saída digital.

Sinais do sistema também podem gerar interrupções.

Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1,1,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.

ISignalDO do1,0,sig1int;

Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocado em 0.

ISignalDO\Single, do1,1,sig1int;

Ordena uma interrupção que ocorre somente na primeira vez que o sinal de saída
digital do1 colocado em 1.

Argumentos
ISignalDO [ \Single ] Signal TriggValue Interrupt
[ \Single ] Data type: switch

Especifica se a interrupção ocorre somente uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre uma vez. Se o argumento é


omitido, a interrupção irá ocorrer toda vez que a condição é satisfeita.

Signal Data type: signaldo

O nome do sinal que gera as interrupções.

TriggValue Data type: dionum

O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.

O valor é especificado como 0 ou 1 ou como um valor simbólico (ex. high/low).


O sinal é disparado na transição para 0 ou 1.

Manual de Referência do RAPID 8-ISignalDO-5


ISignalDO Instruções

TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).

Interrupt Data type: intnum

A identidade da interrupção. Este deve ter sido previamente conectado a uma


rotina trap por meio da instrução CONNECT.

Execução do programa
Quando o sinal assume o valor especificado (0 ou 1), uma chamada é feita para a rotina
de interceptação correspondente. Quando isto é executado, a execução do programa
continua de onde a interrupção ocorreu.

Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 5).

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 5 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

8-ISignalDO-6 Manual de Referência do RAPID


Instruções ISignalDO

Toda ativação de interrupções é feita no início do programa. Estas instruções são


então deixadas fora do fluxograma principal do programa.

VAR intnum sig1int;

PROC main ( )
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC

A interrupção é apagada no final do programa, e é então reativada. Neste caso,


poderá ser notado que a interrupção está inativa por um curto período.

Sintaxe
ISignalDO
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ TriggValue ’:=’ ] < expression (IN) of dionum >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’

Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de entrada Instruções - ISignalDI
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum

Manual de Referência do RAPID 8-ISignalDO-7


ISignalDO Instruções

8-ISignalDO-8 Manual de Referência do RAPID


Instruções ISleep

ISleep Desativa uma interrupção


ISleep (Interrupt Sleep) é usado para desativar uma interrupção individual temporaria-
mente.

Durante o tempo de desativação, quaisquer interrupções geradas do tipo especificado


serão descartadas sem a execução de qualquer rotina de interceptação.

Exemplo
ISleep sig1int;

A interrupção sig1int é desativada.

Argumentos
ISleep Interrupt
Interrupt DataType: intnum

A variável (identificação da interrupção) da interrupção.

Execução do programa
Quaisquer interrupções geradas do tipo especificado serão descartadas sem a execução
de qualquer rotina de interceptação, até que a interrupção seja reativada através da
instrução IWatch. Interrupções geradas enquanto ISleep está ativa são ignoradas.

Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
ISleep timeint;
WriteBin ch1, buffer, 30;
IWatch timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “The serial communication is broken”;
EXIT;
ENDIF

Manual de Referência do RAPID 8-ISleep-1


ISleep Instruções

ENDTRAP

Comunicação através do canal serial ch1 é monitorada por meio de interrupções


que são geradas a cada 60 segundos. A rotina trap checa se a comunicação está
funcionando. Entretanto, quando a comunicação está em progresso, estas inter-
rupções não são permitidas.

Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas ou ativadas. Se o
número da interrupção for desconhecido, a variável do sistema ERRNO será ajustada
para ERR_UNKINO (veja "Data types - errnum"). O erro pode então ser manuseado
no tratamento de erros.

Sintaxe
ISleep
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Habilitando uma interrupção Instruções - IWatch
Desabilitando todas as interrupções Instruções - IDisable
Cancelando uma interrupção Instruções - IDelete

8-ISleep-2 Manual de Referência do RAPID


Instruções ITimer

ITimer Ordena uma interrupção com tempo determinado


ITimer (Interrupt Timer) é usado para ordenar e habilitar uma interrupção com tempo
determinado.

Esta instrução pode ser usada, por exemplo, para checar a posição do equipamento pe-
riférico uma vez a cada minuto.

Exemplos
VAR intnum timeint;
CONNECT timeint WITH iroutine1;
ITimer 60, timeint;

Ordena uma interrupção que ocorre ciclicamente a cada 60 segundos. Uma cha-
mada é feita à uma rotina trap iroutine1.

ITimer \Single, 60, timeint;

Ordena uma interrupção que ocorre uma vez depois de 60 segundos.

Argumentos
ITimer [ \Single ] Time Interrupt
[ \Single ] DataType: switch

Especifica se a interrupção ocorre uma vez ou ciclicamente.

Se o argumento Single é ligado, a interrupção ocorre somente uma vez. Se o


argumento é omitido, a interrupção irá ocorrer cada vez no tempo especificado.

Time DataType: num

O tempo que deve passar antes que a interrupção ocorra.

O valor é especificado em segundos. Se Single é ligado, este tempo não pode ser
menor que 0.05segundos. O tempo correspondente para interrupções cíclicas é
0.25 seconds.

Interrupt DataType: intnum

A variável (identidade de interrupção) da interrupção. Esta deve ter sido previa-


mente conectada a uma rotina trap por meio da instrução CONNECT.

Execução do programa
A rotina trap correspondente é automaticamente chamada no dado tempo seguindo a

Data Types do Sistema e Rotinas 2-ITimer-1


ITimer Instruções

ordem de interrupção. Quando isto é executado, a execução do programa continua de


onde a interrupção ocorreu.

Se uma interrupção ocorre ciclicamente, uma nova contagem do tempo é iniciada


quando a interrupção ocorre.

Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “A comunicação serial está rompida”;
EXIT;
ENDIF
ENDTRAP

Comunicação através do canal serial ch1 por meio de interrupções que são gera-
das a cada 60 segundos. A rotina trap checa se a comunicação está funcionando.
Se ela não está, a execução do programa é interrompida e uma mensagem de erro
aparece.

Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem ser primeiramente apagada. Veja Instruções - ISignalDI.

Sintaxe
ITimer
[ ’\’Single ’,’]
[ Time ’:=’ ] < expressão (IN) do num >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações em interrupções dirigidas Características Básicas- Interrupções

2-ITimer-2 Data Types do Sistema e Rotinas


Instruções ITimer

IVarValue Ordena uma variável de valor de interrupção


IVarVal(Variável de Valor de Interrupção) é usado para ordenar e habilitar uma inter-
rupção quando o
valor de uma variável acedida via o interface de sensor serial tiver sido alterada.

Esta instrução pode ser usada, por exemplo, para volumes de costura ou valores de
intervalo de
um detetor de costuras.

Exemplos
LOCAL PERS num adtVlt{25}:=[1,1.2,1.4,1.6,1.8,2,2.16667,2.33333,2.5,...];
LOCAL PERS num adptWfd{25}:=[2,2.2,2.4,2.6,2.8,3,3.16667,3.33333,3.5,...];
LOCAL PERS num adptSpd{25}:=10,12,14,16,18,20,21.6667,23.3333,25[,...];
LOCAL CONST num GAP_VARIABLE_NO:=11;
PERS num gap_value;
VAR intnum IntAdap;

PROC main()
! Setup the interrupt. The trap routine AdapTrp will be called
! when the gapvariable with number ‘GAP_VARIABLE_NO’ in
! the sensor interface has been changed. The new value will be available
! in the PERS gp_value variable.
CONNECT IntAdap WITH AdapTrp;
IVarValue GAP_VARIABLE_NO, gap_value, IntAdap;

! Start welding
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ENDPROC

TRAP AdapTrap
VAR num ArrInd;

!Scale the raw gap value received


ArrInd:=ArrIndx(gap_value);

! Update active welddata PERS variable ‘adaptWd’ with


! new data from the arrays of predefined parameter arrays.
! The scale gapvalue is used as index in the voltag, wirefeed and speed arrays.
adaptWd.weld_voltage:=adptVlt{ArrInd};
adaptWd.weld_wirefeed:=adptWfd{ArrInd};
adaptWd.weld_speed:=adptSpd{ArrInd};

!Request a refresh of AW parameters using the new data inadaptWd


ArcRefresh;
ENDTRAP

Data Types do Sistema e Rotinas 2-ITimer-1


ITimer Instruções

Argumentos
IVarValue VarNo Value, Interrupt
VarNo Tipo de dados: num

O número da variável a ser supervisionada.

Value Tipo de dados: num

Uma variável PERS que irá conter o novo valor de Varno.

Interrupt Tipo de dados: intnum

A variável (identidade de interrupção) da interrupção. Isto deverá ter sido


conectada a um sinal de Trig por meio da instrução CONNECT.

Execução do programa
O sinal de Trig correspondente é automaticamente chamado em um determinado tempo
a seguir à ordem de interrupção. Quando isto tiver sido executado, a execução do pro-
grama continua a partir de onde ocorreu a interrupção.

Limitações
A mesma variável para a identidade de interrupção não pode ser usada mais de cinco
vezes, sem primeiro ser eliminada.

Sintaxe
IVarValue
[ VarNo ’:=’ ] < expression (IN) of num >’,’
[ Value ’:=’ ] < persistent(PERS) of num >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’

Informação relacionada
Descrita em:
Sumário de interrupts Sumário RAPID - Interrupts
Mais informações sobre Características básicas - Interrupts
o gerenciamento de interrupts

2-ITimer-2 Data Types do Sistema e Rotinas


Instruções IWatch

IWatch Ativa uma interrupção


IWatch (Interrupt Watch) é usada para ativar uma interrupção que foi anteriormente
ordenada, mas que tinha sido desativada com ISleep.

Exemplo
IWatch sig1int;

A interrupção sig1int que anteriormente estava desativada, é ativada.

Argumentos
IWatch Interrupt
Interrupt DataType: intnum

Variável (identificação) da interrupção.

Execução do programa
Reativa mais uma vez as interrupções do tipo especificado. Contudo, as interrupções
geradas enquanto a instrução ISleep estava em vigor são ignoradas.

Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;
.
ISleep sig1int;
weldpart1;
IWatch sig1int;

Durante a execução da rotina weldpart1, nenhuma interrupção é permitida pelo


sinal di1.

Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas. Se o número da inter-
rupção for desconhecido, a variável do sistema ERRNO será ajustada para
ERR_UNKINO (veja "Data types - ernum"). O erro pode ser manuseado no tratamento
de erros.

Manual de Referência do RAPID 8-IWatch-1


IWatch Instruções

Sintaxe
IWatch
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’

Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desativando uma interrupção Instruções - ISleep

2-IWatch-2 Data Types do Sistema e Rotinas


Instruções label

label Nome da linha


Label é usado para nomear uma linha do programa. Usando a instrução GOTO , este
nome também pode ser usado para mover a execução do programa.

Exemplo
GOTO next;
.
next:

A execução do programa continua com a instrução em seguida de next.

Argumentos
Label:
Label Identificador

O nome que se deseja dar à linha.

Execução do programa
Nada acontece quando você executa esta instrução.

Limitações
O label não pode ser o mesmo que

- qualquer outro label dentro da mesma rotina,


- o nome de qualquer dado dentro da mesma rotina.

Um rótulo oculta um dado global e rotinas com o mesmo nome dentro da rotina nela
localizada .

Sintaxe
(EBNF)
<identificador>’:’

Data Types do Sistema e Rotinas 2-label-1


label Instruções

Informações relacionadas
Descrito em:
Identificadores Características Básicas-
Elementos básicos
Movendo exec. do programa para um label Instruções - GOTO

2-label-2 Data Types do Sistema e Rotinas


Instruções Load

Load Carregar o módulo de um programa durante a


execução
Load é usado para carregar um módulo de um programa na memória durante a
execução.

O módulo do programa carregado será adicionado aos módulos já existentes na


memória do programa.

Um módulo de sistema ou de programa pode ser carregado em modo estático (padrão)


ou dinâmico:

Modo estático
Tabela 1 Como operações diferentes afetam módulos de sistema ou de programa
carregados estaticamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não afetado Não carregado

Módulo de sistema Não afetado Não afetado

Modo dinâmico
Tabela 2 Como operações diferentes afetam módulos de sistema ou de programa
carregados dinamicamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não carregado Não carregado

Módulo de sistema Não carregado Não carregado

Os módulos carregados, tanto estática quanto dinamicamente, podem ser descarrega-


dos pela instrução UnLoad.

Exemplo
Carregar ram1disk \File:="PART_A.MOD";

Carrega o módulo do programa PART_A.MOD de ram1disk na memória do pro-


grama. (ram1disk é uma constante string pré-definida "ram1disk:"). Carrega
módulo de programa em modo dinâmico.

Data Types do Sistema e Rotinas 2-Load-3


Load Instruções

Argumentos
Load [\Dynamic] FilePath [\File]
[\Dynamic] Data type: switch

A opção ativa o carregamento de um módulo de programa em modo dinâmico.


Caso contrário, o carregamento ocorre em modo estático.

FilePath Data type: string

A trajetória do arquivo e o nome do arquivo que vai ser carregado na memória do


programa. O nome do arquivo será excluído quando o argumento \File for usado.

[\File] Data type: string

Quando o nome do arquivo não se encontra incluído no argumento FilePath, o


mesmo terá de ser definido junto com este argumento.

Execução do programa
A execução do programa espera que o módulo do programa acabe o carregamento antes
de passar à instrução seguinte.

De modo a obter uma boa estrutura do programa, que seja de fácil compreensão e
manutenção, o carregamento e o descarregamento dos módulos do programa deverão
ser executados a partir do módulo principal que está sempre presente na memória do
programa durante a execução.

Depois de ter sido carregado, o módulo do programa será conectado e inicializado. A


inicialização do módulo carregado ajusta todas as variáveis no nível do módulo para os
seus valores iniciais. As referências por resolver serão aceites se o parâmetro Tasks do
sistema estiver ligado (BindRef = NO). Contudo, quando o programa é inicializado, a
função Program/File/Check do programa da unidade de programação não verificará as
referências não resolvidas se o parâmetro BindRef = NO. Aparecerá um parâmetro run
time error na execução de uma referência por resolver

Exemplos
Load \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD";

Carregue o módulo do programa DOOR1.MOD de ram1disk no diretório


DOORDIR na memória do programa. O módulo de programa é carregado em
modo dinâmico.

Load \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo de cima mas com outra sintaxe.

2-Load-4 Data Types do Sistema e Rotinas


Instruções Load

Load "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que os dois exemplos acima, mas o módulo é carregado em modo


estático.

Limitações
Não é permitido carregar um módulo de programa que contenha uma rotina principal.

As rotinas TRAP, os passos os sistema E/S e outras tarefas do programa não podem ser
executadas durante o carregamento.

Evite usar um disquete flexível para carregamento uma vez que a leitura de um dis-
quete flexível demora muito tempo.

Uma parada do programa durante a execução da instrução Load resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.

Tratamento de erros
Se um arquivo nas instruções Load não for encontrado, nesse caso a variável do sis-
tema é ERRNO é ajustada para ERR_FILNOTFND. Se o módulo já está carregado na
memória do programa então a variável do sistema ERRNO é ajustada para
ERR_LOADED (veja “Data types - errnum”). Os erros acima mencionados podem ser
manuseados no tratamento de erros.

Sintaxe
Load
[‘\’Dynamic ‘,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’

Data Types do Sistema e Rotinas 2-Load-5


Load Instruções

Informações relacionadas
Descrito em:
Descarregar um módulo do programa Instruções - UnLoad
Carregar um módulo de programa em Instruções - StartLoad-WaitLoad
paralelo com a execução de um outro
programa
Aceitar referências por resolver Parâmetros do Sistema- Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef

2-Load-6 Data Types do Sistema e Rotinas


Instruções MechUnitLoad

MechUnitLoad Define uma carga para


uma unidade mecânica
MechUnitLoad é usado para definir uma carga para uma unidade mecânica externa.
(A carga para o robô é definida com a instrução GripLoad)

Essa instrução deve ser usada para todas as unidades mecânicas com modelo dinâmico
em servo para obter o melhor desempenho em movimentação.

A instrução MechUnitLoad deve sempre ser executada após a execução da instrução


ActUnit.

Exemplo
IRBP_L

eixo 1

Figure 6 Uma unidade mecânica chamada IRBP_L, do tipo IRBP L

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, load0;

Ativa a unidade mecânica IRBP_L e define a carga load0 (correspondente a


nenhuma carga), montada no eixo 1.

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, fixture1;

Ativa a unidade mecânica IRBP_L e define a carga fixture1, correspondente ao


arranjo de fixação fixture1 montado no eixo 1.

ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, workpiece1;

Ativa a unidade mecânica IRBP_L e define a carga workpiece1 correspondente


ao arranjo de fixação montado e à peça de trabalho chamada workpiece1 no eixo
1.

Data Types do Sistema e Rotinas 2-MechUnitLoad-7


MechUnitLoad Instruções

Argumentos
MechUnitLoad MechUnit AxisNo Load
MechUnit (Unidade mecânica) Tipo de dados: mecunit

O nome da unidade mecânica.

AxisNo (Número do eixo) Tipo de dados: num

O número do eixo dentro da unidade mecânica que segura a carga.

Load Tipo de dados: loaddata

Os dados de carga que descrevem a carga atual a ser definida.

Execução do programa
Após a execução de MechUnitLoad, quando os eixos externos e do robô se estabilizam,
a carga especificada é definida para o eixo e a unidade mecânica especificados. Isso sig-
nifica que a carga é controlada e monitorada pelo sistema de controle.

A carga padrão na partida a frio para um determinado tipo de unidade mecânica é a


carga máxima predefinida para esse tipo de unidade mecânica.

Quando alguma outra carga é usada, a carga real para o eixo e a unidade mecânica deve
ser redefinida com essa instrução. Deve ser sempre feito após a ativação da unidade
mecânica.

A carga definida permanece depois de uma reiniciação por falha de energia.


A carga definida também permanece depois de uma reiniciação do programa após a ati-
vação manual de algumas outras unidades mecânicas da janela de movimentação.

X Fixação
Sistema de coordenadas de atuação final
para a unidade mecânica

Peça de trabalho

O centro de gravidade para a carga (fixação + peça de trabalho)


Y Unidade mecânica

Figure 7 Carga montada no atuador de extremidade de uma unidade mecânica.

2-MechUnitLoad-8 Data Types do Sistema e Rotinas


Instruções MechUnitLoad

Exemplo

IRBP_K

eixo 2

eixo 1

eixo 3

Figure 8 Uma unidade mecânica chamada IRBP_K do tipo IRBP K com três eixos.

MoveL homeside1, v1000, fine, gun1;


...
ActUnit IRBP_K;

A unidade mecânica IRBP_K inteira é ativada.

MechUnitLoad IRBP_K, 2, workpiece1;

Define a carga workpiece1 na unidade mecânica IRBP_K, eixo 2.

MechUnitLoad IRBP_K, 3, workpiece2;

Define a carga workpiece2 na unidade mecânica IRBP_K, eixo 3.

MoveL homeside2, v1000, fine, gun1

Os eixos da unidade mecânica IRBP_K são movidos para a posição de


comutação homeside2 com a carga montada em ambos os eixos 2 e 3.

Limitações
A instrução de movimento anterior a essa instrução deve ser terminada com um ponto
de parada para tornar uma reiniciação dessa instrução possível após uma falha de ener-
gia.

Data Types do Sistema e Rotinas 2-MechUnitLoad-9


MechUnitLoad Instruções

Sintaxe
MechUnitLoad
[MechUnit ’:=’ ] < variable (VAR) of mecunit> ’,’
[AxisNo ’:=’ ] <expression (IN) of num ’,’
[ Load ’:=’ ] < persistent (PERS) of loaddata > ’;’

Informações relacionadas
Descrito em:
Identificação de carga para unidades LoadID&CollDetect
mecânicas externas - Programa muloadid.prg
Unidades mecânicas Tipos de dados - mecunit
Definição de dados de carga Tipos de dados - loaddata
Definição de carga para o robô Instruções - GripLoad
Tipos de dados - tooldata

2-MechUnitLoad-10 Data Types do Sistema e Rotinas


Instruções MoveAbsJ

MoveAbsJ Move o robô para posição absoluta de junção


MoveAbsJ (Move Absolute Joint) é usado para mover o robô para uma posição abso-
luta, definida nas posições dos eixos.

Esta instrução somente precisa ser usada quando:

- o ponto de parada é um único ponto


- para posições ambíguas no IRB 6400C, ex. para movimentos com a ferramenta
sobre o robô.

A posição final do robô, durante o movimento com MoveAbsJ, não é afetado pela fer-
ramenta e objeto de trabalho nem pelo deslocamento de programa. Entretanto, o robô
usa aqueles dados para calcular a carga, velocidade TCP, e o trajeto de canto. As mes-
mas ferramentas podem ser usadas como instruções de movimentos adjacentes.

O robô e eixos externos são movidos para a posição de destino ao longo de uma tra-
jetória não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveAbsJ p50, v1000, z50, tool2;

O robô com a ferramenta tool2, é movido ao longo de um trajeto não -linear para
uma posição de eixo absoluta, p50, com dado de velocidade v1000 e dado de
zona z50.

MoveAbsJ *, v1000\T:=5, fine, grip3;

O robô com a ferramenta grip3, é movido ao longo de um trajeto não-linear para


um ponto de parada que é guardado como uma posição de eixo absoluta na
instrução (marcada com um *). O movimento completo dura 5 s.

Argumentos
MoveAbsJ [ \Conc ] ToJointPos [\NoEOffs] Speed [ \V ] | [ \T ]
Zone [ \Z ] Tool [ \WObj ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas enquanto o robô está em movimento. O


argumento é usado para encurtar o tempo do ciclo quando, por exemplo, comu-
nicando com equipamento externo, se a sincronização não é necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento for omitido e o ToPoint não for um ponto de parada, a

Manual de Referência do RAPID 8-MoveAbsJ-11


MoveAbsJ Instruções

instrução subsequente será executada algum tempo antes do robô ter atingido a
zona programada.

ToJointPos (To Joint Position) DataType: jointtarget

O destino da posição absoluta eixo a eixo do robô e eixos externos. É definido


como uma posição nomeada ou guardado diretamente na instrução (marcada com
um * na instrução).

[ \NoEOffs ] (No External Offsets) Data type: switch

Se o argumento NoEOffs estiver definido, o movimento com MoveAbsJ não será


afetado por deslocamentos ativos para eixos externos.

Speed DataType: speeddata

O dado de velocidade que aplica-se aos movimentos. O dado de velocidade


define a velocidade do ponto central da ferramenta, a reorientação da ferramenta
e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a precisão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso durante o movimento.

A posição do TCP e da carga na ferramenta são definidas no dado de ferramenta.


A posição do TCP é usada para decidir a velocidade e o trajeto de canto para o
movimento.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho usado durante o movimento.

8-MoveAbsJ-12 Manual de Referência do RAPID


Instruções MoveAbsJ

Este argumento pode ser omitido se a ferramenta é sustentada pelo robô.


Entretanto, se o robô segura o objeto de trabalho, i.e. a ferramenta é estacionária
ou com coordenadas de eixos externos, então o argumento deve ser especificado.

No caso de uma ferramenta estacionária ou coordenada de eixos externos, o dado


usado pelo sistema para decidir a velocidade e o trajeto de canto para o movi-
mento, é definido no objeto de trabalho.

Execução do programa
Um movimento com MoveAbsJ não é afetado pelo reposicionamento do programa
ativo e, quando executado com a opção \NoEOffs, não há deslocamento para eixos
externos.
Sem a opção \NoEOffs, os eixos externos no alvo de destino são afetados pelo deslo-
camento ativo para eixos externos.

A ferramenta é movida para o destino da posição absoluta da junçãocom interpolação


dos ângulos do eixo. Isto significa que cada eixo é movido com velocidade constante
de eixo e que todos os eixos alcançam o destino da posição absoluta eixo a eixo ao
mesmo tempo, que resulta em uma trajetória não linear.

Generalizando, o TCP é movido numa velocidade programada aproximada. A ferra-


menta é reorientada e os eixos externos são movidos ao mesmo tempo que o TCP se
move. Se a velocidade programada para reorientação ou para eixos externos não pode
ser atingida, a velocidade do TCP será reduzida.

Um trajeto de canto é gerado normalmente quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado num dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
apropriada posição absoluta eixo a eixo.

Exemplos
MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;

A ferramenta, grip3, é movida ao longo de uma trajetória não-linear para a


posição absoluta eixo a eixo carregado na instrução. O movimento é realizado
com dado fixado em v2000 e z40, a velocidade e tamanho da zona do TCP são
2200 mm/s e 45 mm respectivamente.

MoveAbsJ \Conc, *, v2000, z40, grip3;

A ferramenta, grip3, é movido ao longo de uma trajetória não-linear para a


posição absoluta eixo a eixo carregado na instrução. Instruções lógicas subse-
quentes são executadas enquanto o robô se move.

MoveAbsJ \Conc, * \NoEOffs, v2000, z40, grip3;

Mesmo movimento que acima, mas o movimento não é afetado por deslocamen-
tos ativos para eixos externos.

Manual de Referência do RAPID 8-MoveAbsJ-13


MoveAbsJ Instruções

GripLoad obj_mass;
MoveAbsJ start, v2000, z40, grip3 \WObj:= obj;

O robô move o objeto de trabalho obj em relação a uma ferramenta fixada grip3
ao longo de uma trajetória não-linear para uma posição absoluta de eixo start.

Tratamento de erros
Quando rodando um programa, uma checagem é feita para que os argumentos Tool e
\WObj não contenham dados contraditórios com relação a ferramenta móvel ou esta-
cionária respectivamente.

Limitações
Para que seja possível rodar o programa para trás com a instrução MoveAbsJ envolvida,
e evitando problemas com pontos singulares ou áreas ambíguas, é essencial que as
instruções subsequentes preencham certos requisitos, como o que segue (veja Figure
1).

Ponto singular

MoveJ
MoveAbsJ

Área ambígua

Qualquer movim.
MoveAbsJ
MoveAbsJ

Figure 1 Limitação para rodar programa para trás com MoveAbsJ.

8-MoveAbsJ-14 Manual de Referência do RAPID


Instruções MoveAbsJ

Sintaxe
MoveAbsJ
[ ’\’ Conc ’,’ ]
[ ToJointPos ’:=’ ] < expression (IN) of jointtarget >
[ ’\’ NoEoffs ] ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[Zone ’:=’ ] < expression (IN) of zonedata >
[ ’\’ Z ‘:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ] ’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de jointtarget DataTypes - jointtarget
Definção de velocidade DataTypes - speeddata
Definção de dado de zona DataTypes - zonedata
Definição de ferramentas DataTypes - tooldata
Definição de objetos de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Execução de programa concomitante Movimento e Príncipios E/S -
Sincronização usando instruções lógicas

Manual de Referência do RAPID 8-MoveAbsJ-15


MoveAbsJ Instruções

8-MoveAbsJ-16 Manual de Referência do RAPID


Instruções MoveC

MoveC Move o robô circularmente


MoveC é usado para mover o ponto central da ferramenta (TCP) circularmente para um
certo destino. Durante o movimento, a orientação normalmente permanece relativo ao
círculo.

Exemplos
MoveC p1, p2, v500, z30, tool2;

O TCP da ferramenta, tool2, é movida circularmente para a posição p2, com


dado de velocidade v500 e dado de zona z30. O círculo é definido pela posição
de início, o ponto do círculo p1 e o ponto de destino p2.

MoveC *, *, v500 \T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido circularmente para um ponto fino guar-


dado na instrução (marcado pelo segundo *). O ponto do círculo também é guar-
dado na instrução (marcado pelo primeiro *). O movimento completo leva 5
segundos.

MoveL p1, v500, fine, tool1;


MoveC p2, p3, v500, z20, tool1;
MoveC p4, p1, v500, fine, tool1;

Um círculo completo é realizado se as posições são as mesmas que as mostradas


na Figura 2.

p1

p4 p2

p3
Figura 2 Um círculo completo é realizado por duas instruções MoveC .

Argumentos
MoveC [ \Conc ] CirPoint ToPoint Speed [ \V ] | [ \T ] Zone [ \Z]
Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas imediatamente. Este argumento é usado

Data Types do Sistema e Rotinas 2-MoveC-17


MoveC Instruções

para encurtar o tempo do ciclo quando, por exemplo, comunicando com equipa-
mento externo, se a sincronização não é necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento é omitido e ToPoint não é um ponto de parada, a instrução sub-


sequente somente é executada depois do robô ter alcançado a zona programada
especificada.

CirPoint DataType: robtarget

O ponto do círculo do robô. O ponto do círculo é uma posição no círculo entre o


ponto de partida e o ponto de destino. Para obter a melhor exatidão, ele deve ser
colocado a meio caminho entre os pontos de partida e de destino. Se ele é colo-
cado muito próximo de um desse pontos, o robô pode dar uma advertência. O
ponto do círculo é definido como uma posição nomeada ou guardada diretamente
na instrução (marcada com um * na instrução). A posição de eixos externos não
são usados.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô e eixos externos se movem. Ele é então substituído pelo correspondente
dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

2-MoveC-18 Data Types do Sistema e Rotinas


Instruções MoveC

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada de objeto) o qual a posição do robô


na instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
na sequência para o círculo relativo a um objeto de trabalho a ser executado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
O robô e unidades externas são movidas para o ponto de destino como segue:

O TCP da ferramenta é movido circularmente a uma velocidade constante programada.

A ferramenta é reorientada a uma velocidade constante, desde a orientação do ponto


de partida até à orientação do ponto de destino.

A reorientação é realizada relativa a uma trajetória circular. Assim, se a orientação rel-


ativa a trajetória é a mesma nos pontos de partida e de destino, a orientação relativa
permanece inalterada durante o movimento (veja Figura 3).

CirPoint

Orientação ferramenta
Ponto de partida

ToPoint

Figura 3 Orientação da ferramenta durante movimento circular.

Data Types do Sistema e Rotinas 2-MoveC-19


MoveC Instruções

- A orientação no ponto do círculo não é crítica; ela somente é usada para distin-
guir entre duas direções possíveis de reorientação. A exatidão de reorientação
ao longo da trajetória depende somente da orientação nos pontos de partida e de
destino.
- Coordenada de eixos externos são executadas numa velocidade constante para
que elas cheguem ao ponto de destino ao mesmo tempo que os eixos do robô.
A posição na posição de círculo não é usada.

Se não é possível atingir a velocidade programada para a reorientação ou para eixos


externos, a velocidade do TCP será reduzida.

O trajeto de canto é normalmente gerado quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado no dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveC *, *, v500 \V:=550, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movido circularmente para uma posição guardada


na instrução. O movimento é realizado com dado fixado em v500 e z40; a veloci-
dade e tamanho da zona do TCP são 550 mm/s e 45 mm respectivamente.

MoveC \Conc, *, *, v500, z40, grip3;

O TCP da ferramenta, grip3, é movido circularmente para uma posição guardada


na instrução. O ponto do círculo também é guardado na instrução. Instruções ló-
gicas subsequentes são executadas enquanto o robô se move.

MoveC cir1, p15, v500, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido circularmente para uma posição, p15, via
o ponto do círculo cir1. Estas posições estão especificadas no sistema de coorde-
nada de objeto para fixture.

Limitações
Uma mudança no modo de execução do programa de frente para trás ou vice versa,
enquanto o robô está parado numa trajetória circular, não é permitido e irá resultar
numa mensagem de erro.

A instrução MoveC (ou qualquer outra instrução incluindo o movimento circular)


nunca deve ser inicializada desde o início com o TCP entre o ponto circular e o ponto
final. Caso contrário, o robô não seguirá o trajeto programado (posicionamento em
redor do trajeto circular noutra direção em comparação com a que está programada).

2-MoveC-20 Data Types do Sistema e Rotinas


Instruções MoveC

Certifique-se de que o robô possa alcançar o ponto do círculo durante a execução do


programa e divida o segmento do círculo se necessário.

Sintaxe
MoveC
[ ’\’ Conc ’,’ ]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções
Lógicas

Data Types do Sistema e Rotinas 2-MoveC-21


MoveC Instruções

2-MoveC-22 Data Types do Sistema e Rotinas


Instruções MoveCDO

MoveCDO Move circularmente o robô


e ajusta a saída digital no canto
MoveCDO (Move Circular Digital Output) é usada para mover, em círculo, o ponto cen-
tral da ferramenta (TCP) para um dado destino. A saída digital especificada será ajus-
tada/rearmada no meio do trajeto de canto no ponto de destino. Durante o mo-
vimento, a orientação permanece normalmente inalterada em relação ao círculo .

Exemplos
MoveCDO p1, p2, v500, z30, tool2, do1,1;

O TCP da ferramenta, tool2, é movimentado em círculo para a posição p2, com


os dados de velocidade v500 e dados de zona z30. O círculo é definido a partir
da posição de partida, o ponto do círculo p1 e do ponto de destino p2. A saída
do1 é ajustada no meio do trajeto do canto em p2.

Argumentos
MoveCDO CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
Signal Value
CirPoint Tipos de dados: robtarget

O ponto do círculo do robô. O ponto do círculo do robô é uma posição sobre o


círculo entre o ponto inicial e o ponto de destino. Para obter a melhor precisão,
deverá ficar a meio trajeto entre os pontos inicial e de destino. Se ficar situado
muito próximo do ponto inicial ou ponto de destino, o robô poderá emitir uma
advertência. O ponto do círculo é definido como uma posição indicada ou guar-
dada diretamente na instrução (marcada com um * na instrução). A posição dos
eixos externos não é usada.

ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e dos eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em segundos, durante o


qual o robô e os eixos externos se movem. É depois substituído pelos dados de
velocidade correspondentes.

Data Types do Sistema e Rotinas 2-MoveCDO-23


MoveCDO Instruções

Zone Data type: zonedata

Dados da zona para movimento. Os dados da zona descrevem o tamanho do tra-


jeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se movimenta. O ponto central da ferramenta


é o ponto que se move para o ponto de destino especificado.

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas do objeto) para o qual a posição do


robô na instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição estará relacionada com
o sistema de coordenadas globais. Se, de outro modo, for usado um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado
em relação a um círculo, para o objeto de trabalho ser executado.

Signal Tipos de dados: signaldo

O nome do sinal digital de saída a ser mudado.

Value Tipos de dados: dionum

O valor desejado do sinal (0 ou 1).

Execução do programa
Ver a instrução MoveC para mais informaçãoes sobre o movimento circular.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto para os pontos


flutuantes conforme Figura 1.
.

CirPoint

Ponto inicial Ajuste/Rearme


do sinal

Próximo
ToPoint ponto
Zona
Figura 4 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveCDO.

Para os pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveC + SetDO. Mas se usar ponto de parada na instrução MoveCDO, o sinal de saída
digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

2-MoveCDO-24 Data Types do Sistema e Rotinas


Instruções MoveCDO

O sinal de E/S será ajustado/rearmado no modo execução, continuamente, para a frente


em escada, mas para trás não poderá ser em escada.

Limitações
Limitações gerais conforme instrução MoveC.

Sintaxe
MoveCDO
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados da zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definiçaõ de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronização Usando Instruções Lógi-
cas

Data Types do Sistema e Rotinas 2-MoveCDO-25


MoveCDO Instruções

2-MoveCDO-26 Data Types do Sistema e Rotinas


Instruções MoveCSync

MoveCSync Movimenta circularmente o robô


e executa um procedimento RAPID
MoveCSync (Move Circular Synchronously) é usada para mover o ponto central da fer-
ramenta (TCP), circularmente a um dado destino. O procedimento RAPID especificado
será executado a meio do trajeto de canto no ponto de destino. Durante o movimento, a
orientação permanece normalmente inalterada em relação ao círculo.

Exemplos
MoveCSync p1, p2, v500, z30, tool2, “proc1”;

O TCP da ferramenta, tool2, é movido em círculo para a posição p2, com o dado
de velocidade v500 e dado de zona z30. O círculo estará definido a partir da
posição inicial, do ponto do círculo p1 e do ponto de destino p2. O procedimento
proc1 será executado no meio do trajeto de canto em p2.

Argumentos
MoveCSync CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
ProcName
CirPoint Tipos de dados: robtarget

O ponto do círculo do robô. É uma posição no círculo entre o ponto inicial e o


ponto de destino. Para obter alta precisão, deverá estar situado a meio trajeto
entre os pontos inicial e de destino. Se estiver muito próximo do ponto inicial ou
do ponto de destino, o robô poderá dar uma advertência. O ponto do círculo é
definido como uma posição indicada ou armazenada diretamente na instrução
(marcada com um * na instrução). A posição dos eixos externos não será usada.

ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição in-
dicada ou armazenada diretamente na instrução (marcada com um * na
instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade que se aplicam aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e dos eixos externos.

[ \T ] (Time) Tipos de dados: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual se movem o robô e os eixos externos. Será depois substituído pelos dados
da velocidade correspondente.

Data Types do Sistema e Rotinas 2-MoveCSync-27


MoveCSync Instruções

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho do


trajeto de canto.

Tool Tipos de dados: tooldata

A ferramenta é usada quando o robô se move. O TCP é o ponto que é deslocado


para o ponto de destino especificado.

[ \WObj] (Objeto de Trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas do objeto) para o qual é relacionada


a posição do robô na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, for usado um TCP esta-
cionário ou eixos de coordenadas externas, este argumento deverá ser especifi-
cado.

ProcName (Nome de Procedimento) Tipos de Dados: string

Indica o procedimento RAPID a ser executado a meio do trajeto de canto no


ponto de destino.

Execução do programa
Para maiores informações sobre movimentos circulares, ver a instrução MoveC.

O procedimento RAPID especificado será executado quando o TCP alcançar o meio do


trajeto de canto no ponto de destino da instrução MoveCSync conforme Figura 1:

MoveCSync p2, p3, v1000, z30, tool2, “my_proc”;


Quando TCP estiver aqui, p4
my_proc será executado
p1
Zona
p3
p2

Figura 5 Execução de procedimento RAPID definido pelo usuário a meio do trajeto de canto.

2-MoveCSync-28 Data Types do Sistema e Rotinas


Instruções MoveCSync

Para pontos de parada recomendamos usar a seqüência de programação “normal” com


MoveC + outras instruções RAPID em seqüência.

Execução de procedimentos RAPID especificados em modos de execução diferentes:

Modo de execução: Execução de procedimento RAPID:


Contínuo ou cíclico Conforme esta descrição
Em escada à frente No ponto de parada
Em escada atrás De forma alguma

Limitações
Limitações gerais conforme instrução MoveC.

Comutação do modo de execução, após a parada do programa de contínuo ou em ciclo


para em escada à frente ou atrás, resulta em erro. Este erro comunica ao usuário, que a
comutação de modo poderá resultar em execução falhada do procedimento RAPID em
fila sobre o trajeto. Este erro poderá ser evitado se o programa for parado com StopInstr
antes da comutação de modo.

A instrução MoveCSync não poderá ser usada no nível TRAP .


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveCSync
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName ‘:=’ ] < expressão (IN) de string > ] ’;’

Data Types do Sistema e Rotinas 2-MoveCSync-29


MoveCSync Instruções

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de dados - speeddata
Definição de dados de zona Tipos de dados - zonedata
Definição de ferramentas Tipos de dados - tooldata
Definição de objetos de trabalho Tipos de dados - wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S -
Sistemas de Coordenadas

2-MoveCSync-30 Data Types do Sistema e Rotinas


Instruções MoveJ

MoveJ Move o robô com movimento eixo a eixo


MoveJ é usado para mover o robô rapidamente de um ponto a outro quando o movi-
mento não tem que ser em linha reta.

O robô e eixos externos movem-se ao ponto de destino ao longo de uma trajetória não
linear. Todos os eixos alcançam o ponto de destino ao mesmo tempo.

Exemplos
MoveJ p1, vmax, z30, tool2;

O ponto central da ferramenta (TCP) da ferramenta, tool2, é movido ao longo de


uma trajetória não linear para a posição, p1, com dado de velocidade vmax e dado
de zona z30.

MoveJ *, vmax \T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não linear para
o ponto de parada guardado na instrução (marcado com um *). O movimento
completo leva 5 segundos.

Argumentos
MoveJ [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas enquanto o robô está se movendo. Este


argumento é usado para encurtar o tempo do ciclo quando, por exemplo, comu-
nicando com equipamento externo, se a sincronização não for necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento for omitido e a ToPoint, não for um ponto de parada, a


instrução subsequente será executada algum tempo antes do robô ter alcançado
a zona programada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Data Types do Sistema e Rotinas 2-MoveJ-31


MoveJ Instruções

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado.

Execução do programa
O ponto central da ferramenta é movido para a posição de destino com interpolação dos
ângulos do eixo. Isto significa que cada eixo é movido com velocidade constante de
eixo e que todos os eixos alcançam o ponto de destino ao mesmo tempo, que resulta em
uma trajetória não linear.

Generalizando, o TCP é movido numa velocidade programada aproximada (apesar de


os eixos externos serem coordenados ou não). A ferramenta é reorientada e os eixos
externos são movidos ao mesmo tempo que o TCP se move. Se a velocidade progra-
mada para reorientação ou para eixos externos não pode ser atingida, a velocidade do

2-MoveJ-32 Data Types do Sistema e Rotinas


Instruções MoveJ

TCP será reduzida.

Um trajeto de canto é gerado normalmente quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado num dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveJ *, v2000\V:=2200, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movida ao longo de uma trajetória não-linear para


a posição carregada na instrução. O movimento é realizado com dado fixado em
v2000 e z40, a velocidade e tamanho de zona do TCP são 2200 mm/s e 45 mm
respectivamente.

MoveJ \Conc, *, v2000, z40, grip3;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não-linear para


uma posição carregada na instrução. Instruções lógicas subsequentes são exe-
cutadas enquanto o robô se move.

MoveJ start, v2000, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não-linear para


uma posição, start. Esta posição é especificada no sistema de coordenada do
objeto para fixture.

Sintaxe
MoveJ
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’

Data Types do Sistema e Rotinas 2-MoveJ-33


MoveJ Instruções

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Ló-
gicas

2-MoveJ-34 Data Types do Sistema e Rotinas


Instruções MoveJDO

MoveJDO Move o robô por movimento de eixo e


ajusta a saída digital no canto
MoveJDO (Move Joint Digital Output) é usada para mover rapidamente o robô de um
ponto a outro quando este movimento não tiver que ser em linha reta. O sinal de saída
digital especificado é ajustado/rearmado ao meio do trajeto de canto.

O robô e os eixos externos deslocam-se para a posição de destino ao longo de um ca-


minho não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveJDO p1, vmax, z30, tool2, do1, 1;

O ponto central da ferramenta (TCP), tool2, move-se ao longo de um trajeto não


linear para a posição, p1, com dados de velocidade vmax e dados de zona z30. A
saída do1 é definida ao meio do trajeto de canto em p1.

Argumentos
MoveJDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e os eixos externos. É definido como uma posição


indicada e guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos dados: speeddata

Os dados de velocidade aplicam-se a movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e eixos externos .

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em segundos, durante o


qual o robô se move. É substituído depois pelos dados de velocidade correspon-
dentes.

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho do


trajeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se mover. O ponto central da ferramenta é o


ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveJDO-35


MoveJDO Instruções

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô está


relacionado na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.

Signal Tipos de dados: signaldo

O nome do sinal de saída digital a ser alterado.

Value Tipos de dados: dionum

O valor desejado de sinal (0 ou 1).

Execução de programa
Ver a instrução MoveJ para maiores informações sobre o movimento de eixo.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto para pontos flu-
tuantes conforme Figura 1.

p3

Ajusta o sinal do1 para 1

MoveJDO p2, v1000, z30, tool2, do1, 1;

p1 p2
Zona

Figura 6 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveJDO.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveJ + SetDO. Mas se usar o ponto de parada na instrução MoveJDO, o sinal de saída
digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

O sinal especificado E/S é ajustado/rearmado no modo execução de forma contínua e


para a frente em escada, mas nunca para trás em escada.

2-MoveJDO-36 Data Types do Sistema e Rotinas


Instruções MoveJDO

Sintaxe
MoveJDO
[ ToPoint ’:=’ ] < expressão (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) of speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Velocidade de definição Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenads
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas

Data Types do Sistema e Rotinas 2-MoveJDO-37


MoveJDO Instruções

2-MoveJDO-38 Data Types do Sistema e Rotinas


Instruções MoveJSync

MoveJSync Move o robô por movimento de eixo


e executa um procedimento RAPID
MoveJSync (Move Joint Synchronously) é usado para deslocar o robô de um ponto a
outro rapidamente quando este movimento não tiver que ser em linha reta. O procedi-
mento especificado RAPID é executado a meio do trajeto de canto no ponto de destino.

O robô e os eixos externos movem-se para a posição de destino ao longo de um trajeto


não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.

Exemplos
MoveJSync p1, vmax, z30, tool2, “proc1”;

O ponto central da ferramenta (TCP) tool2, é movido ao longo de um trajeto não


linear para a posição p1, com dados de velocidade vmax e dados de zona z30. O
procedimento proc1, é executado no meio do trajeto de canto em p1.

Argumentos
MoveJSync ToPoint Speed [ \T ] Zone Tool [ \WObj ]
ProcName
ToPoint Tipo de dados: robtarget

O ponto de destino do robô e eixos externos. Está definido como uma posição
indicada ou guardado diretamente na instrução (marcado com * na instrução).

Speed Tipo de dados: speeddata

Os dados de velocidade que se aplicam aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total em seg., durante o qual o
robô se move. É depois substituído pelos dados de velocidade correspondentes

Zone Data type: zonedata

Dados de zona para o movimento.Os dados de zona descrevem o tamanho


gerado do trajeto de canto.

Tool Data type: tooldata

A ferramenta em uso quando o robô se move. O ponto central da ferramenta


(TCP) é o ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveJSync-39


MoveJSync Instruções

[ \WObj] (Objeto de Trabalho) Tipos de dados: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô na


instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, forem usados eixos exter-
nos ou TCP estacionário, este argumento deverá se especificado.

ProcName (Nome de Procedimento) Tipos de dados: string

Nome do procedimento RAPID a ser executado no meio do trajeto de canto no


ponto de destino.

Execução do programa
Ver a instrução MoveJ para maiores informações acerca do movimento de eixo.

O procedimento especificado RAPID será executado quando o TCP alcançar o meio do


trajeto de canto no ponto de destino da instrução MoveJSync conforme Figura 1:

MoveJSync p2, v1000, z30, tool2, “my_proc”;


p3

Quando TCP estiver aqui,


my_proc será executado
Zone
p2

p1

Figura 7 Execução de procedimento RAPID definido pelo usuário no meio do trajeto de canto.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveJ + outras instruções RAPID em seqüência.

Execução do procedimento RAPID especificado em modos de execução diferentes:

2-MoveJSync-40 Data Types do Sistema e Rotinas


Instruções MoveJSync

Modos de execução: Execução de procedimento RAPID :


Contínuo ou cíclico Conforme esta descrição
Para a frente em escada No ponto de parada
Para trás em escada De forma alguma

Limitações
Comutar o modo de execução após a parada do programa, de contínuo ou cíclico, para
em escada para a frente ou para trás resultará em erro. Este erro comunicará ao usuário
que a comutação de modo poderá resultar em execução falhada do procedimento
RAPID, em fila, para execução sobre o caminho. Este erro poderá ser evitado se o pro-
grama for parado, antes da comutação de modo, com StopInstr.

A instrução MoveJSync não poderá ser usada no nível TRAP.


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveJSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) de num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ’;’

Informações relacionadas
Descritas em:
Outras posições de funcionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas

Data Types do Sistema e Rotinas 2-MoveJSync-41


MoveJSync Instruções

2-MoveJSync-42 Data Types do Sistema e Rotinas


Instruções MoveL

MoveL Move o robô linearmente


MoveL é usado para mover o ponto central da ferramenta (TCP) linearmente para um
dado destino. Quando o TCP tiver de permanecer estacionário, esta instrução pode
também ser usada para reorientar a ferramenta.

Exemplo
MoveL p1, v1000, z30, tool2;

O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dado
de velocidade v1000 e dado de zona z30.

MoveL *, v1000\T:=5, fine, grip3;

O TCP da ferramenta, grip3, é movido linearmente para um ponto fino guardado


na instrução (marcado com um *). O movimento completo leva 5 segundos.

Argumentos
MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch

Instruções subsequentes são executadas imediatamente. Este argumento é usado


para encurtar o tempo do ciclo quando, por exemplo, comunicar com equipa-
mento externo, se a sincronização não for necessária.

Usando o argumento \Conc, o número de instruções de movimento sucessivas é


limitado em 5. Numa seção do programa que inclui StorePath-RestoPath,
instruções de movimento com o argumento \Conc não são permitidas.

Se este argumento é omitido e ToPoint não é um ponto de parada, a instrução


subsequente somente é executada depois do robô ter alcançado a zona progra-
mada especificada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

Data Types do Sistema e Rotinas 2-MoveL-43


MoveL Instruções

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mentena instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

[ \Z ] (Zone) DataType: num

Este argumento é usado para especificar a exatidão da posição do TCP do robô


diretamente na instrução. A extensão do trajeto de canto é dada em mm, que é
substituído pela zona correspondente especificada no dado de zona.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para que realize um movimento linear relativo ao objeto de trabalho.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

2-MoveL-44 Data Types do Sistema e Rotinas


Instruções MoveL

Execução do programa
O robô e unidades externas são movimentados para posição de destino como segue:

- O TCP da ferramenta é movido linearmente a uma velocidade constante pro-


gramada.
- A ferramenta é reorientada em intervalos iguais ao longo do trajeto.
- Os eixos externos não coordenados são executados a uma velocidade constante
para que elas cheguem ao ponto de destino ao mesmo tempo que os eixos do
robô.

Se não é possível atingir a velocidade programada para a reorientação ou para eixos


externos, a velocidade do TCP será reduzida.

O trajeto de canto é normalmente gerado quando o movimento é transferido para a


próxima seção da trajetória. Se o ponto de parada é especificado no dado de zona, a
execução do programa somente continua quando o robô e eixos externos alcançam a
posição apropriada.

Exemplos
MoveL *, v2000 \V:=2200, z40 \Z:=45, grip3;

O TCP da ferramenta, grip3, é movido linearmente para uma posição guardada


na instrução. O movimento é realizado com dado fixado em v2000 and z40; a
velocidade e tamanho da zona do TCP são 2200 mm/s e 45 mm respectivamente.

MoveL \Conc, *, v2000, z40, grip3;

O TCP da ferramenta, grip3, é movido linearmente para uma posição guardada


na instrução. Instruções lógicas subsequentes são executadas enquanto o robô se
move.

MoveL start, v2000, z40, grip3 \WObj:=fixture;

O TCP da ferramenta, grip3, é movido linearmente para uma posição, start. A


posição especificada na coordenada de sistema de objeto para fixture.

Data Types do Sistema e Rotinas 2-MoveL-45


MoveL Instruções

Sintaxe
MoveL
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataType - speeddata
Definição de dado de zona DataType - zonedata
Definição de ferramenta DataType - tooldata
Definição de objeto de trabalho DataType - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Lóg-
icas

2-MoveL-46 Data Types do Sistema e Rotinas


Instruções MoveLDO

MoveLDO Move o robô linearmente


e ajusta a saída digital no canto
MoveLDO (Move Linearly Digital Output) é usada para mover linearmente o ponto
central da ferramenta (TCP) para um dado destino. O sinal de saída digital especificado
será ajustado/rearmado ao meio do trajeto do canto.

Quando o TCP for permanecer estacionário, esta instrução poderá ser também usada
para reorientar a ferramenta.

Exemplo
MoveLDO p1, v1000, z30, tool2, do1,1;

O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. A saída do1 será justada a meio do tra-
jeto do canto em p1.

Argumentos
MoveLDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. Está definida como uma posição
indicada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipo de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Definem a velocidade do


ponto central da ferramenta, a reorientação da ferramenta e eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total em segundos, durante o


qual o robô se move. É substituído depois pelos dados de velocidade correspon-
dentes .

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Dados de zona descrevem o tamanho do tra-


jeto de canto gerado.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se move. O ponto central da ferramenta é o


ponto deslocado para a posição de destino especificada.

Data Types do Sistema e Rotinas 2-MoveLDO-47


MoveLDO Instruções

[ \WObj] (Work Object) Data type: wobjdata

O objeto de trabalho (sistema de coordenadas) para o qual a posição do robô está


relacionada na instrução.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.

Signal Tipos de dados: signaldo

O nome do sinal de saída digital a ser alterado.

Value Tipos de dados: dionum

O valor desjado de sinal (0 ou 1).

Execução do programa
Ver a instrução MoveL para maiores informações acerca de movimentos lineares.

O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto por pontos flu-
tuantes conforme Figura 1.

p3

Ajusta o sinal do1 para 1

MoveLDO p2, v1000, z30, tool2, do1, 1;

p1 p2
Zona

Figura 8 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveLDO.

Para pontos de parada recomenda-se usar a seqüência de programação “normal” com


MoveL + SetDO. Mas, se usar o ponto de parada na instrução MoveLDO, o sinal de
saída digital será ajustado/rearmado quando o robô alcançar o ponto de parada.

O sinal especificado E/S é ajustado/rearmado no modo execução contínuamente e para


a frente em escada, mas nunca para trás em escada.

2-MoveLDO-48 Data Types do Sistema e Rotinas


Instruções MoveLDO

Sintaxe
MoveLDO
[ ToPoint ’:=’ ] < expressão (IN)de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objeto de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas

Data Types do Sistema e Rotinas 2-MoveLDO-49


MoveLDO Instruções

2-MoveLDO-50 Data Types do Sistema e Rotinas


Instruções MoveLSync

MoveL Sync Move linearmente o robô


e executa um procedimento RAPID
MoveLSync (Move Lineary Synchronously) é usada para mover linearmente o ponto de
centro da ferramenta (TCP) para um dado ponto de destino.

Quando o TCP for permanecer estacionário, esta instrução poderá ser usada para reo-
rientar a ferramenta.

Exemplo
MoveLSync p1, v1000, z30, tool2, “proc1”;

O TCP da ferramenta tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. O procedimento proc1 é executado ao
meio do caminho da aresta em p1.

Argumentos
MoveLSync ToPoint Speed [ \T ] Zone Tool
[ \WObj ] ProcName
ToPoint Tipos de dados: robtarget

O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).

Speed Tipos de dados: speeddata

Os dados de velocidade aplicados aos movimentos. Os dados de velocidade


definem a velocidade do TCP, a reorientaçãoda ferramenta e os eixos externos.

[ \T ] (Tempo) Tipos de dados: num

Este argumento é usado para especificar o tempo total, em seg., durante o qual o
robô se move. Será substituído pelos dados de velocidade correspondentes.

Zone Tipos de dados: zonedata

Dados de zona para o movimento. Os dados de zona descrevem o tamanho


gerado do caminho da aresta.

Tool Tipos de dados: tooldata

A ferramenta em uso quando o robô se move. O ponto de centro da ferramenta é


o ponto deslocado para o ponto de destino especificado.

Data Types do Sistema e Rotinas 2-MoveLSync-51


MoveLSync Instruções

[ \WObj] (Objeto de trabalho) Tipos de dados: wobjdata

O objeto de trabalho (Sistema de coordenadas) para o qual a posição do robô na


instrução está relacionada.

Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado.

ProcName (Nome do Procedimento) Tipos de dados: string

O nome do procedimento RAPID a ser executado a meio do caminho da aresta


no ponto de destino.

Execução do programa
Ver a instrução MoveL para mais informações acerca dos movimentos lineares.

O procedimento RAPID especificado será executado quando o TCP alcançar o meio do


caminho da aresta no ponto de destino da instrução MoveLSync conforme Figure 1:

MoveLSync p2, v1000, z30, tool2, “my_proc”;


p3

Quando TCP estiver aqui,


my_proc será executado
Zona
p2

p1

Figure 9 Execução de procedimento RAPID definido pelo usuário no meio do caminho da aresta.

Para pontos de parada recomenda-se usar a sequência de programação “normal” com a


instrução MoveL + outras instruções RAPID em sequência.

Execução de procedimentos RAPID especificados em modos de execução diferentes:

2-MoveLSync-52 Data Types do Sistema e Rotinas


Instruções MoveLSync

Modos de execução: Execução do procedimento RAPID :


Contínuamente ou cíclico Conforme esta descrição
Para a frente em escada No ponto de parada
Para trás em escada De modo algum

Limitações
A comutação do modo de execução, após a parada do programa, de contínuo ou cíclico
para em escada para a frente ou para trás, resultará em erro. Este erro comunica ao
usuário, que a comutação de modo poderá resultar em execução falhada dos procedi-
mentos RAPID em fila , execução sobre o caminho. Este erro poderá ser evitado se o
programa for parado com StopInstr antes de comutar o modo de execução..

A instrução MoveLSync não poderá ser usada no nível TRAP.


O procedimento RAPID especificado não poderá ser testado com a execução em
escada.

Sintaxe
MoveLSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ‘;’

Informações relacionadas
Descritas em:
Outras instruções de posicionamento Resumo RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Deslocamento em geral Deslocamento e Principios E/S
Sistemas de coordenadas Deslocamento e Principios E/S -
Sistemas de Coordenadas

Data Types do Sistema e Rotinas 2-MoveLSync-53


MoveLSync Instruções

2-MoveLSync-54 Data Types do Sistema e Rotinas


Instruções Open

Open Abre um arquivo ou canal serial


Open é usado para abrir um arquivo ou canal serial para leitura ou escrita.

Exemplo
VAR iodev logfile;
...
Open "flp1:" \File:= "LOGDIR/LOGFILE1.DOC", logfile;

O arquivo LOGFILE1.DOC na unidade flp1: (disquete), diretório LOGDIR, é


aberto para escrita. O nome de referência logfile é usado mais tarde no programa
quando escrevendo no arquivo.

Argumentos
Open Object [\File] IODevice [\Read] | [\Write] | [\Append] [\Bin]
Object DataType: string

O objeto de E/S a ser aberto, ex. "flp1:", "ram1disk:" ou "sio1:"

[\File] DataType: string

O nome do arquivo a ser aberto, ex. "LOGDIR/LOGFILE1.DOC"

O caminho completo também pode ser especificado no argumento Object,


ex. "flp1:LOGDIR/LOGFILE.DOC".

IODevice DataType: iodev

Uma referência ao arquivo ou canal serial a ser aberto. Essa referência é então
usada para ler e escrever no arquivo ou canal serial.

[\Read] DataType: switch

Abre um arquivo ou canal serial para leitura. Ao ler de um arquivo, a leitura é


feita desde o início do arquivo.

[\Write] DataType: switch

Abre um arquivo ou canal serial para escrita. Se o arquivo selecionado já existe,


seu conteúdo é apagado. Qualquer coisa escrita em seguida, é escrita do início
do arquivo.

[\Append] DataType: switch

Abre um arquivo ou canal serial para escrita. Se o arquivo selecionado já existe,

Manual de Referência do RAPID 8-Open-55


Open Instruções

qualquer coisa escrita em seguida, é escrita no final do arquivo.

Ao abrir um arquivo ou canal serial com \Append e sem os argumentos \Bin, a


instrução abre um canal serial ou um arquivo baseado ou em caractere para
escrita.

Ao abrir um arquivo ou canal serial com \Append e argumentos \Bin, a instrução


abre um canal serial ou arquivo binário para leitura e escrita.

Os argumento \Read, \Write e \Append são mutuamente exclusivos. Se nenhum


deles for especificado, a instrução atuará da mesma forma que o argumento
\Write para canais seriais ou arquivos baseados em caractere (instrução sem argu-
mento \Bin) e da mesma forma que o argumento \Append para canais seriais ou
arquivos binários (instrução com argumento \Bin).

[\Bin] DataType: switch

O arquivo ou canal serial é aberto em um modo binário.


Se nenhum dos argumentos \Read, \Write ou \Append for especificado, a
instrução abrirá um canal serial ou arquivo binário para leitura e escrita, com o
ponteiro de arquivo no final do arquivo

O conjunto de instruções para acessar umcanal serial ou arquivo binário é diferente do


conjunto de instruções para acessar um arquivo baseado em caractere.

Exemplo
VAR iodev printer;
...
Open "sio1:", printer \Bin;
WriteStrBin printer, "Esta é uma mensagem para a impressora\0D";
Close printer;

O canal serial sio1: é aberto para leitura e escrita binária.


O nome de referência printer é usado mais tarde quando for escrever e fechar o
canal serial.

Execução do programa
O canal serial/arquivo especificado é aberto para que possa ser lido ou escrito.

É possível abrir o mesmo arquivo físico várias vezes ao mesmo tempo, mas cada cha-
mada da instrução Open retorna uma referência diferente ao arquivo (tipo de dados
iodev). É posível, por exemplo, ter um ponteiro de escrita e um ponteiro de leitura di-
ferente para o mesmo arquivo ao mesmo tempo.

A variável iodev usada ao abrir um canal serial ou arquivo precisa estar livre de uso: se
ela tiver sido usada anteriormente para abrir um arquivo, esse arquivo terá de ser
fechado antes da veiculação de uma nova instrução Open com a mesma variável iodev.

8-Open-56 Manual de Referência do RAPID


Instruções Open

Tratamento de erros
Se um arquivo não pode ser aberto, a variável de sistema ERRNO é fixada para
ERR_FILEOPEN. Este erro pode então ser manipulado no manipulador de erro.

Sintaxe
Open
[Object ’:=’] <expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>] ’,’
[IODevice ’:=’] <variable (VAR) of iodev>
[’\’Read] | [’\’Write] | [’\’Append]
[’\’Bin] ’;’

Informações relacionadas
Descrito em:
Escrevendo e lendo de Sumário RAPID - Comunicação
arquivos ou canais seriais

Manual de Referência do RAPID 8-Open-57


Open Instruções

8-Open-58 Manual de Referência do RAPID


Instruções PathResol

PathResol Sobrepor a resolução do caminho


PathResol (Path Resolution) é usada para sobrepor o tempo de amostra do trajeto
geométrico configurado, definido nos parâmetros do sistema do manipulador.

Descrição
A resolução do trajeto afeta a precisão do trajeto interpolado e o tempo de ciclo do pro-
grama. Melhora a precisão do trajeto e reduz o tempo de ciclo quando o parâmetro
PathSampleTime é diminuído. Um parâmetro PathSampleTime com um valor muito
baixo afecta a carga da CPU em aplicações mais exigentes. Todavia, o uso da resolução
do caminho configurado estandard (PathSampleTime 100%) evitará problemas de
carga da CPU e fornecerá precisão de trajeto suficiente na maioria das situações.

Exemplo do uso de PathResol:

Movimentos críticos dinâmicos (carga máxima, elevada velocidade, movimentações


de junções combinadas perto do limite da área de trabalho) podem causar problemas
de carga da CPU. Aumente o parâmetro PathSampleTime.

Os eixos externos de baixo desempenho podem causar problemas de carga da CPU


durante a coordenação. Aumente o parâmetro PathSampleTime.

Soldando a arco com ondulação de alta freqüência pode requerer uma alta resolução
do trajeto interpolado. Diminua o parâmetro PathSampleTime.

Pequenos circulos ou pequenos movimentos combinados com mudanças de direção


podem diminuir a qualidade de desempenho do trajeto e aumentarem o tempo de ciclo.
Diminua o parâmetro PathSampleTime.

Colando com grande reorientações e pequenas zonas de aresta pode causar variações
de velocidade. Diminua o argumento de PathSampleTime.

Exemplo
MoveJ p1,v1000,fine,tool1;
PathResol 150;

Com o robô em um ponto de parada, o tempo de amostra do trajeto é aumentado


para 150% do configurado.

Argumentos
PathResol PathSampleTime
PathSampleTime Tipo de dados: num

Sobrepor como uma percentagem do tempo de amostra do caminho configurado.

Data Types do Sistema e Rotinas 2-PathResol-1


PathResol Instruções

100% corresponde ao tempo de amostra do caminho configurado.


Dentro do intervalo 25-400%.

Um valor mais baixo do parâmetro PathSampleTime aumenta a resolução do


caminho (precisão do caminho).

Execução do programa
As resoluções de caminho de todas as instruções de posicionamento subseqüentes são
afetadas até uma nova instrução PathResol ser executada. Isto afetará a resolução do
trajeto durante a execução do programa de todos os movimentos (nível de trajeto
padrão e nível de trajeto após StorePath) e também durante a movimentação.

O valor, por omissão, para sobrepor o tempo de amostra do caminhoé 100%. Este valor
é automaticamente ajustado

- em uma partida a frio


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

A sobreposição corrente do tempo de amostra do caminho pode ser lida a partir da var-
iável C_MOTSET (tipo de dados motsetdata) no componente pathresol.

Limitações
O robô terá que estar parado em um ponto de parada antes da sobreposiçãodo tempo de
amostra do caminho. Quando existir um caminho de aresta no programa, o programa
criará então um ponto de parada (advertência 50146) e não será possível reiniciar nesta
instrução a seguir a uma falha de corrente.

Sintaxe
PathResol
[PathSampleTime ’:=’ ] < expressão (IN) de num> ’;’

Informações relacionadas
Descritas em:
Instruções de posicionamento Movimentação e Princípios E/S
- Movimentação
Ajustes de deslocamento Sumário RAPID - Ajustes de Movi-
mentação
Configuração da resolução do caminho Parâmetros de sistema - Otimização da
CPU

2-PathResol-2 Data Types do Sistema e Rotinas


Instruções PDispOff

PDispOff Desativa deslocamento de programa


PDispOff (Program Displacement Off) é usado para desativar um deslocamento de
programa.

Deslocamento de programa é ativado pela instrução PDispSet ou PDispOn e se aplica


a todos os movimentos até ser desativado ou até que outro deslocamento de programa
seja ativado .

Exemplos
PDispOff;

Desativação de um deslocamento de programa.

MoveL p10, v500, z10, tool1;


PDispOn \ExeP:=p10, p11, tool1;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
PDispOff;
MoveL p40, v500, z10, tool1;

Um deslocamento de programa é definido como a diferença entre as posições


p10 e p11. Este deslocamento afeta o movimento para p20 e p30, mas não para
p40.

Execução do programa
O deslocamento do programa é desligado. Isto significa que o sistema de coordenada
de deslocamento de programa é o mesmo que o sistema de coordenada de sistema do
objeto, e desta maneira todas as posições programadas serão relacionadas para o
último.

Sintaxe
PDispOff ‘;’

Data Types do Sistema e Rotinas 2-PDispOff-1


PDispOff Instruções

Informações relacionadas
Descrito em:
Definição de deslocamento de programa Instruções - PDispOn
usando duas posições
Definição de deslocamento de programa Instruções - PDispSet
usando valores

2-PDispOff-2 Data Types do Sistema e Rotinas


Instruções PDispOn

PDispOn Ativa deslocamento de programa


PDispOn (Program Displacement On) é usado para definir e ativar um deslocamento
de programa usando duas posições do robô.

Deslocamento de programa é usado, por exemplo, após uma busca ter sido realizada,
ou quando padrões de movimento similares são repetidos em diferentes lugares do pro-
grama.

Exemplos
MoveL p10, v500, z10, tool1;
PDispOn \ExeP:=p10, p20, tool1;

Ativação de um deslocamento de programa (movimento paralelo). Este é calcu-


lado baseado em diferenças entre posições p10 e p20.

MoveL p10, v500, fine, tool1;


PDispOn *, tool1;

Ativação de um deslocamento de programa (movimento paralelo). Desde que


um ponto de parada foi usado na instrução anterior, o argumento \ExeP não pre-
cisa ser usado. O deslocamento é calculado com base na diferença entre a atual
posição atual do robô e o ponto programado (*) guardado na instrução.

PDispOn \Rot \ExeP:=p10, p20, tool1;

Ativação de um deslocamento de programa incluindo uma rotação. Este é calcu-


lado baseado em diferenças entre posições p10 e p20.

Argumentos
PDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]
[\Rot ] (Rotation) DataType: switch

A diferença na orientação da ferramenta é levada em consideração e isto envolve


a rotação do programa.

[\ExeP ] (Executed Point) DataType: robtarget

A nova posição do robô no momento da execução do programa.


Se este argumento é omitido, é usada a atual posição do robô no momento da
execução do programa.

ProgPoint (Programmed Point) DataType: robtarget

A posição original do robô no momento da programação.

Data Types do Sistema e Rotinas 2-PDispOn-3


PDispOn Instruções

Tool DataType: tooldata

A ferramenta usada durante a programação , i.e. o TCP para o qual a posição


ProgPoint está relacionada.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) para o qual a posição ProgPoint


está relacionada.

Este argumento pode ser omitido e, se isto ocorre, a posição é relacionada com o
sistema de coordenada mundial. Entretanto, se um TCP estacionário ou eixos
externos coordenados são usados, este argumeto deve ser especificado.

Ambos argumentos Tool e \WObj são usados para calcular o ProgPoint durante a
programação e para calcular a posição atual durante a execução do programa se
nenhum argumento ExeP está programado.

Execução do programa
Deslocamento de programa significa que o sistema de coordenada ProgDisp é transla-
dado em relação ao sistema de coordenada de objeto. Desde que todas as posições este-
jam relacionadas ao sistema de coordenadas ProgDisp, todas as posições programadas
também serão deslocadas . Veja Figure 10.

y
Nova
posição, ExeP

y
Posição
original, ProgPoint

x
Deslocamento de programa Sistema de Coordenada deslocamento de programa
(ProgDisp)
x
Sistema de Coordenada de objeto

Figure 10 Deslocamento de uma posição programada usando deslocamento de programa.

Deslocamento de programa é ativado quando a instrução PDispOn é executada e per-


manece ativa até ser desativada (a instrução PDispOff) ou até que algum outro deslo-
camento de programa seja ativado (a instrução PDispSet ou PDispOn).

Somente um deslocamento de programa pode estar ativo por vez. Várias instruções
PDispOn, por outro lado, podem ser programadas uma após a outra e, neste caso, dif-
erentes deslocamentos de programa são adicionados.

Deslocamento de programa é calculado como a diferença entre ExeP e ProgPoint. Se


ExeP não foi especificado, a atual posição do robô no momento da execução do pro-
grama é então usada. Já que é a posição atual do robô que é usada, o robô não deverá
se mover quando PDispOn é executada.

2-PDispOn-4 Data Types do Sistema e Rotinas


Instruções PDispOn

Se o argumento \Rot é usado, a rotação também é calculada baseada na orientação da


ferramenta nas duas posições. O deslocamento será calculado de tal forma que a nova
posição (ExeP) terá a mesma posição e orientação em relação ao sistema de coorde-
nada de deslocamento, ProgDisp, como a antiga posição (ProgPoint) tinha em relação
ao sistema de coordenada original (veja Figure 11).

Nova
y posição, ExeP

y
Nova
Posição
original, ProgPoint
orientação x

Orientação
original Deslocamento de programa Sistema de coordenada de deslocamento de programa
(ProgDisp)
x
Sistema de coordenada de objeto

Figure 11 Translação e rotação de uma posição programada.

O deslocamento de programa é automaticamente desligado

- numa partida a frio


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

Exemplo
PROC draw_square()
PDispOn *, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
PDispOff;
ENDPROC
.
MoveL p10, v500, fine, tool1;
draw_square;
MoveL p20, v500, fine, tool1;
draw_square;
MoveL p30, v500, fine, tool1;
draw_square;

A rotina draw_square é usada para executar o mesmo padrão de movimento em


três diferentes posições, baseada nas posições p10, p20 e p30. Veja Figure 12.

Data Types do Sistema e Rotinas 2-PDispOn-5


PDispOn Instruções

p30
p10
p20

Figure 12 Usando deslocamento de programa, padrões de movimento podem ser reusados.

SearchL sen1, psearch, p10, v100, tool1\WObj:=fixture1;


PDispOn \ExeP:=psearch, *, tool1 \WObj:=fixture1;

Uma busca é realizada e a posição pesquisada do robô é guardada na posição


psearch. Qualquer movimento realizado após isto inicia desta posição usando um
deslocamento de programa (movimento paralelo). O último é calculado baseado
na diferença entre a posição pesquisada e o ponto programado (*) guardado na
instrução. Todas as posições estão baseadas no sistema de coordenada de objeto
fixture1.

Sintaxe
PDispOn
[ ’\’ Rot ’,’ ]
[ ’\’ ExeP ’:=’ ] < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata>
[ ‘\’WObj ’:=’ < persistente (PERS) do wobjdata> ] ‘;’

Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição de deslocamento de programa Instruções - PDispSet
usando valores
Sistemas de coordenadas Princípios de movimento -
Sistemas de Coordenadas
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Mais exemplos Instruções - PDispOff

2-PDispOn-6 Data Types do Sistema e Rotinas


Instruções PDispSet

PDispSet Ativa deslocamento de programa usando um valor


PDispSet (Program Displacement Set) é usado para definir e ativar um deslocamento
de programa usando valores.

Deslocamento de programa é usado, por exemplo, quando padrões de movimento si-


milares são repetidos em vários lugares diferentes no programa.

Exemplo
VAR pose xp100 := [ [100, 0, 0], [1, 0, 0, 0] ];
.
PDispSet xp100;

Ativação do deslocamento de programa xp100 , significa que:

- O sistema de coordenada ProgDisp é deslocado 100 mm do sistema de coorde-


nada de objeto, na direção positiva do eixo-x (veja Figure 13).
- Uma vez que, o deslocamento de programa é ativado, todas as posições serão
deslocadas 100 mm na direção do eixo-x.

Objeto ProgDisp

100 X
Figure 13 100 mm de deslocamento de programa ao longo do eixo-x.

Argumentos
PDispSet DispFrame
DispFrame (Displacement Frame) DataType: pose

O deslocamento de programa é definido como um dado do tipo pose.

Execução do programa
Deslocamento de programa envolve translação e/ou rotação do sistema de coordenadas
ProgDisp em relação ao sistema de coordenada de objeto. Uma vez que todas as
posições são relativas ao sistema de coordenada ProgDisp , todas as posições progra-
madas também serão deslocadas. Veja Figure 14.

Data Types do Sistema e Rotinas 2-PDispSet-1


PDispSet Instruções

Nova
y posição

y
Nova
Posição
original
orientação x

Orientação
original Deslocamento de programa Sistema de Coodenada de Deslocamento de programa
(ProgDisp)
x
Sistema de Coordenada de Objeto

Figure 14 Translação e rotação da posição programada.

Deslocamento de programa é ativado quando a instrução PDispSet é executada e per-


manece ativa até que o deslocamento de programa seja desativado (a instrução PDis-
pOff) ou outro deslocamento de programa seja ativado (a instrução PDispSet ou
PDispOn).

Somente um deslocamento de programa pode estar ativo ao mesmo tempo. Desloca-


mento de programa não pode ser adicionado a um outro usando PDispSet.

O deslocamento de programa é automaticamente desligado:

- numa partida a frio


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

Sintaxe
PDispSet
[ DispFrame ’:=’ ] < expressão (IN) do pose> ’;’

Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição do deslocamento de programa Instruções - PDispOn
usando duas posições
Definição do dado do tipo pose DataTypes - pose
Sistemas de coordenadas Princípios de Movimento -
Sistema de Coordenadas
Exemplos de como deslocamento de programa Instruções - PDispOn
podem ser usados

2-PDispSet-2 Data Types do Sistema e Rotinas


Instruções PulseDO

PulseDO Gera um pulso de um sinal de saída digital


PulseDO é usado para gerar um pulso de um sinal de saída digital.

Exemplos
PulseDO do15;

Um pulso com comprimento de pulso de 0.2 s é gerado num sinal de saída do15.

PulseDO \PLength:=1.0, ignition;

Um pulso com comprimento de pulso de 1.0 s é gerado num sinal ignition.

Argumentos
PulseDO [ \PLength ] Signal
[ \PLength ] (Pulse Length) DataType: num

O comprimento de pulso em segundos (0.1 - 32s).


Se o argumento é omitido, um pulso de 0.2 segundos é gerado.

Signal DataType: signaldo

O nome do sinal no qual o pulso é gerado.

Execução do programa
Um pulso é gerado com um comprimento de pulso especificado (veja Figure 15).
:

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 15 Geração de um pulso de um sinal de saída digital.

Data Types do Sistema e Rotinas 2-PulseDO-3


PulseDO Instruções

A próxima instrução é executada diretamente após o pulso começar. O pulso pode então
ser ligado/desligado sem afetar o resto da execução do programa.

Limitações
O comprimento do pulso tem uma resolução de 0.01 segundos. Valores programados
que diferem deste são arredondados.

Sintaxe
PulseDO
[ ’\’ PLength ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de Entrada/Saída Movimentos e Princípios de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros
do Sistema

2-PulseDO-4 Data Types do Sistema e Rotinas


Instruções RAISE

RAISE Chama um tratamento de erro


RAISE é usado para criar um erro no programa e então chamar o tratamento de erro da
rotina. RAISE pode também ser usado no tratamento de erro para transmitir o erro atual
para o tratamento de erro da rotina chamada.

A instrução pode, por exemplo, ser usada para pular para um nível mais alto na estru-
tura de um programa, ex. para o tratamento de erro na rotina principal, se um erro
ocorre num nível mais baixo.

Exemplo
IF ...
IF ...
IF ...
RAISE escape1;
.
ERROR
IF ERRNO=escape1 RAISE;

A rotina é interrompida para permití-lo se remover de um nível mais baixo no


programa. Um salto ocorre para o tratamento de erro da rotina chamada.

Argumentos
RAISE [ Error no. ]
Error no DataType: errnum

Número do erro: Qualquer número 1-90 que o tratamento de erro possa usar para
localizar o erro que ocorreu (a variável de sistema ERRNO ).

Também é possível reservar um número de erro fora do intervalo 1-90 com a


instrução BookErrNo.

Número do erro deve ser especificado fora do tratamento de erro na instrução


RAISE para que possa transferir a execução para o tratamento de erro da rotina.

Se a instrução está presente no tratamento de erro da rotina, o número do erro não


precisa ser especificado. Neste caso, o erro é transferido para o tratamento de
erro da rotina chamada.

Execução do programa
A execução do programa continua no tratamento de erro da rotina. Após o tratamento

Data Types do Sistema e Rotinas 2-RAISE-1


RAISE Instruções

de erro ser executado, a execução do programa pode continuar com:

- a rotina que chamou a rotina em questão (RETURN),


- o tratamento de erro da rotina que chamou a rotina em questão (RAISE).

Se a instrução RAISE está presente no tratamento de erro da rotina, a execução do pro-


grama continua no tratamento de erro da rotina que chamou a rotina em questão. O
mesmo número de erro permanece ativo.

Se a instrução RAISE está presente numa rotina trap, o erro está de acordo com o trata-
mento de erro do sistema.

Tratamento de erros
Se o número de erros estiver fora da gama, a variável do sistema ERRNO é ajustada
para ERR_ILLRAISE (veja "Data type - errnum"). Este erro pode ser manuseado no
tratamento de erros.

Sintaxe
(EBNF)
RAISE [<error number>] ’;’

<error number> ::= <expression>

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Reservar números de erros Instruções - BookErrNo

2-RAISE-2 Data Types do Sistema e Rotinas


Instruções ReadAnyBin

ReadAnyBin Ler dados de um


arquivo ou canal serial binário
ReadAnyBin (Ler Qualquer Binário) é usado para ler qualquer tipo de dados de um
arquivo ou canal serial binário.

Exemplo
VAR iodev channel2;
VAR robtarget next_target;
...
Open "sio1:", channel2 \Bin;
ReadAnyBin channel2, next_target;

O próximo alvo de robô a ser executado, next_target, é lido do canal referido por
channel2.

Argumentos
ReadAnyBin IODevice Data [\Time])
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial binário a ser lido.

Data Tipo de dados: ANYTYPE

O VAR ou PERS no qual os dados lidos serão armazenados.

[\Time] Tipo de dados: num

O tempo máx. para a operação de leitura (tempo limite), em segundos. Se esse


argumento não for especificado, o tempo máx. será definido como 60 segundos.

Se esse tempo expirar antes do término da operação de leitura, a rotina de trata-


mento de erros será chamada com o código de erro ERR_DEV_MAXTIME. Se
não houver rotina de tratamento de erros, a execução será interrompida.

A função de tempo limite também é utilizada durante a interrupção do programa,


sendo notificada no programa RAPID, ao iniciar.

Execução do programa
Tantos bytes quantos forem necessários para os dados especificados serão lidos do
arquivo ou canal serial binário especificado.

Data Types do Sistema e Rotinas 2-ReadAnyBin-3


ReadAnyBin Instruções

Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para leitura binária.

Os dados a serem lidos por essa instrução devem ter um tipo de dados value do tipo
atomic, string ou record. Tipos de dados semi-value e non-value não podem ser usados.

Dados de matrizes não podem ser usados.

Observe que a variável VAR ou PERS, para armazenamento dos dados lidos, pode ser
atualizada em várias etapas. Portanto, aguarde sempre até que toda a estrutura de dados
seja atualizada, até o uso dos dados lidos de um TRAP ou tarefas de um outro pro-
grama.

Tratamento de erros
Se um erro ocorrer durante a leitura, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.

Se o final do arquivo for detectado antes de todos os bytes serem lidos, a variável de
sistema ERRNO será definida como ERR_RANYBIN_EOF. Assim, esse erro pode ser
tratado na rotina de tratamento de erros.

Exemplo
CONST num NEW_ROBT:=12;
CONST num NEW_WOBJ:=20;
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
VAR wobjdata cur_wobj;

Open "sio1:", channel\Bin;

! Espera pelo caractere de opcode


input := ReadBin (channel \Time:= 0.1);
TEST input
CASE NEW_ROBT:
ReadAnyBin channel, cur_robt;
CASE NEW_WOBJ:
ReadAnyBin channel, cur_wobj;
ENDTEST

Close channel;

Como primeira etapa, o opcode da mensagem é lido do canal serial. Conforme


esse opcode, um robtarget ou um wobjdata é lido do canal serial.

2-ReadAnyBin-4 Data Types do Sistema e Rotinas


Instruções ReadAnyBin

Sintaxe
ReadAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>
[’\’Time’:=’ <expression (IN) of num>]’;’

Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos

Escrita de dados em um canal serial binário Instruções - WriteAnyBin


ou arquivo

Data Types do Sistema e Rotinas 2-ReadAnyBin-5


ReadAnyBin Instruções

2-ReadAnyBin-6 Data Types do Sistema e Rotinas


Instruções Reset

Reset Desliga um sinal de saída digital


Reset é usado para levar o valor de um sinal de saída digital para zero.

Exemplos
Reset do15;

O sinal do15 é levado para 0.

Reset weld;

O sinal weld é levado para 0.

Argumentos
Reset Signal
Signal Tipo de dado: signaldo

O nome do sinal a ser levado para zero.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a 1.

Sintaxe
Reset
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-Reset-1


Reset Instruções

Informações relacionadas
Descrito em:
Ligando um sinal de saída digital Instruções - Set
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-Reset-2 Data Types do Sistema e Rotinas


Instruções RestoPath

RestoPath Retoma a trajetória após uma interrupção


RestoPath é usado para retomar uma trajetória que foi guardada num estágio anterior
usando a instrução StorePath.

Exemplo
RestoPath;

Retoma a trajetória que foi guardada anteriormente usando StorePath.

Execução do programa
O atual movimento de trajetória do robô e de eixos externos é apagado e a trajetória
guardada anteriormente usando StorePath é retomada. Entretanto, nada se move até
que a instrução StartMove seja executada ou um retorno seja feito usando RETRY de
um manipulador de erro.

Exemplo
ArcL p100, v100, seam1, weld5, weave1, z10, gun1;
...
ERROR
IF ERRNO=AW_WELD_ERR THEN
gun_cleaning;
RETRY;
ENDIF
...
PROC gun_cleaning()
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL pclean, v100, fine, gun1;
...
MoveL p1, v100, fine, gun1;
RestoPath;
ENDPROC

No caso de um erro de solda, a execução do programa continua num manipulador de


erro da rotina, que por sua vez, chama gun_cleaning. O movimento de trajetória que
está sendo executado no momento é então guardado e o robô se move para a posição
pclean onde o erro é retificado. Quando isto for feito, o robô retorna para aposição
onde o erro ocorreu, p1, e guarda o movimento original novamente. A solda é então
automaticamente reiniciada, significando que o robô primeiro é revertido ao longo da
trajetória antes de iniciar a solda e a execução do programa pode continuar

Data Types do Sistema e Rotinas 2-RestoPath-1


RestoPath Instruções

Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.

A instrução de movimento a qual precede a instrução deve ser terminada com um ponto
de parada.

Sintaxe
RestoPath‘;’

Informações relacionadas
Descrito em:
Guardando trajetórias Instruções - StorePath
Mais exemplos Instruções - StorePath

2-RestoPath-2 Data Types do Sistema e Rotinas


Instruções RETRY

RETRY Reinicia seguindo um erro


RETRY é usado para reiniciar a execução do programa após um erro ter ocorrido.

Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg4 := 1;
RETRY;
ENDIF

Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o manipulador de erro, que inicializa reg4. A
instrução RETRY é então usada para saltar de um manipulador de erro e outra ten-
tativa é feita para completar a divisão.

Execução do programa
A execução do programa continua (re-executa) com a instrução que causou o erro.

Tratamento de erros
Se o número máximo de reinicializações (4) for excedido, a execução do porgrama
pára com uma mensagem de erro e a variável do sistema ERRNO é definida para
ERR_EXCRTYMAX (veja "Data types - errnum").

Limitações
A instrução pode somente existir no manipulador de erro da rotina. Se o erro foi criado
usando a instrução RAISE, a execução do programa não pode ser reiniciada com a
instrução RETRY, então deve ser usada a instrução TRYNEXT.

Sintaxe
RETRY ’;’

Data Types do Sistema e Rotinas 2-RETRY-1


RETRY Instruções

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Continua com a próxima instrução Instruções - Trynext

2-RETRY-2 Data Types do Sistema e Rotinas


Instruções RETURN

RETURN Termina a execução de uma rotina


RETURN é usado para terminar a execução de uma rotina. Se a rotina é uma função, o
valor da função também é retornado.

Exemplos
errormessage;
Set do1;
.

PROC errormessage()
TPWrite "ERROR";
RETURN;
ENDPROC

O procedimento errormessage é chamado. Quando o procedimento chega na


instrução RETURN, a execução do programa retorna para a instrução seguindo
o procedimento chamado, Set do1.

FUNC num abs_value(num value)


IF value<0 THEN
RETURN -value;
ELSE
RETURN value;
ENDIF
ENDFUNC

A função retorna o valor absoluto do número.

Argumentos
RETURN [ Return value ]
Return value DataType: De acordo com a declaração

de função

O valor de retorno da função.

O valor de retorno deve ser especificado na instrução RETURN presente na


função.

Se a instrução está presente no procedimento ou rotina trap, um valor de retorno


não precisa ser especificado.

Data Types do Sistema e Rotinas 2-RETURN-1


RETURN Instruções

Execução do programa
O resultado da instrução RETURN pode variar, dependendo do tipo de rotina que é
usada em:

- Rotina principal: Se uma parada no programa foi ordenada no final do ciclo, o


programa pára. Do contrário, a execução do programa continua
com a primeira instrução da rotina principal.
- Procedimento: A execução do programa continua com a instrução seguindo o
procedimento chamado.
- Função: Retorna o valor da função.
- Rotina trap: A execução do programa continua de onde a interrupção ocor-
reu.
- Manipulador de erro: Num procedimento:
A execução do programa continua com a rotina que chamou a
rotina com o manipulador de erro (com a instrução seguindo o
procedimento chamado).
Numa função:
O valor da função é retornado.

Sintaxe
(EBNF)
RETURN [ <expressão> ]’;’

Informações relacionadas
Descrito em:
Funções e Procedimentos Características Básicas - Rotinas
Rotinas trap Características Básicas - Interrupções
Tratamento de erros Características Básicas -
Reconhecimento de Erro

2-RETURN-2 Data Types do Sistema e Rotinas


Instruções Rewind

Rewind Rebobinar a posição do arquivo


Rewind ajusta a posição do arquivo para o início do arquivo.

Exemplo
Rewind iodev1;

O arquivo referido como iodev1 terá a posição de arquivo ajustada para o início
do arquivo.

Argumentos
Rewind IODevice
IODevice Tipo de dados: iodev

Nome (referência) do arquivo a ser rebobinado.

Execução do programa
O arquivo especificado é rebobinado para o início.

Data Types do Sistema e Rotinas 2-Rewind-3


Rewind Instruções

Exemplo
! IO device and numeric variable for use together with a binary file
VAR iodev dev;
VAR num bindata;

! Open the binary file with \Write switch to erase old contents
Open "flp1:"\File := "bin_file",dev \Write;
Close dev;

! Open the binary file with \Bin switch for binary read and write access
Open "flp1:"\File := "bin_file",dev \Bin;
WriteStrBin dev,"Hello World";

! Rewind the file pointer to the beginning of the binary file


! Read contents of the file and write the binary result on TP
! (gives 72 101 108 108 111 32 119 111 114 108 100 )
Rewind dev;
bindata := ReadBin(dev);
WHILE bindata <> EOF_BIN DO
TPWrite " " \Num:=bindata;
bindata := ReadBin(dev);
ENDWHILE

! Close the binary file


Close dev;

A instrução Rewind é usada para rebobinar um arquivo binário para o início para
que o conteúdo do arquivo possa ser lido novamente com ReadBin.

Sintaxe
Rewind
[IODevice ’:=’] <variável (VAR) de iodev>’;’

Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos Sumário RAPID - Comunicação

2-Rewind-4 Data Types do Sistema e Rotinas


Instruções Save

Save Salvar um módulo de programa


Save é usado para salvar um módulo de programa.

O módulo de programa especificado na memória do programa será salvo com o ca-


minho de arquivo original (especificado em Load ou StartLoad) ou com um caminho
de arquivo especificado.

Também é possível salvar um módulo do sistema no caminho de arquivo especificado.

Exemplo
Load "ram1disk:PART_B.MOD";
...
Save "PART_B";

Carregar o módulo de programa, cujo nome de arquivo é PART_B.MOD, de


ram1disk para a memória do programa.

Salvar o módulo de programa PART_B com o caminho de arquivo original


ram1disk com o nome de arquivo original PART_B.MOD.

Argumentos
Save [\Task] ModuleName [\FilePath] [\File]

[\Task] Tipo de dados: taskid

A tarefa de programa na qual o módulo de programa deve ser salvo.

Se esse argumento for omitido, o módulo de programa especificado na tarefa de


programa atual (em execução) será salvo.

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


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

ModuleName Tipo de dados: string

O módulo de programa a ser salvo.

[\FilePath] Tipo de dados: string

O caminho de arquivo e o nome de arquivo do lugar onde o módulo de programa

Data Types do Sistema e Rotinas 2-Save-5


Save Instruções

deve ser salvo. O nome de arquivo deve ser excluído quando o argumento \File é
usado.

[\File] Tipo de dados: string

Quando o nome de arquivo é excluído no argumento \FilePath, ele deve ser espe-
cificado com esse argumento.

O argumento \FilePath só pode ser omitido para módulos de programa carregados com
Load ou StartLoad-WaitLoad e o módulo de programa será armazenado no mesmo des-
tino que o especificado nessas instruções. Para armazenar o módulo de programa em
outro destino, também é possível usar o argumento \FilePath.

Para poder salvar um módulo de programa que, anteriormente, foi carregado a partir da
unidade de programa, computador externo ou configuração do sistema, é necessário
usar o argumento \FilePath.

Execução do programa
A execução do programa espera pelo término do salvamento do módulo de programa
antes de passar para a próxima instrução.

Exemplo
Save "PART_A" \FilePath:="ram1disk:DOORDIR/PART_A.MOD";

Salvar o módulo de programa PART_A em ram1disk no arquivo PART_A.MOD


e no diretório DOORDIR.

Save "PART_A" \FilePath:="ram1disk:” \File:=“DOORDIR/PART_A.MOD";

O mesmo que acima, mas com outra sintaxe.

Save \Task:=TSK1Id, "PART_A" \FilePath:="ram1disk:DOORDIR/PART_A.MOD";

Salvar o módulo de programa PART_A da tarefa de programa TSK1 no destino


especificado. Este é um exemplo no qual a instrução Save é executada em uma
tarefa de programa e o salvamento é feito em outra tarefa de programa.

Limitações
Rotinas de interceptação (TRAP), eventos de E/S do sistema e outras tarefas de pro-
grama não podem ser executadas durante a operação de salvamento. Portanto, quais-
quer operações dessa espécie serão atrasadas.

A operação de salvamento pode interromper atualizações de dados PERS feitas passo


a passo a partir de outras tarefas de programa. Isso irá resultar em dados PERS incon-

2-Save-6 Data Types do Sistema e Rotinas


Instruções Save

sistentes como um todo.

Uma parada do programa durante a execução de uma instrução Save pode resultar em
uma parada de proteção com os motores desligados e na exibição da mensagem de erro
"20025 Stop order timeout" na Unidade de programação.

Evite movimentos do robô durante o salvamento.

Tratamento de erros
Se o módulo de programa não puder ser salvo por não haver nome de módulo, por este
ser desconhecido ou ser ambíguo, a variável de sistema ERRNO será definida como
ERR_MODULE.

Se o arquivo salvo não puder ser aberto por falta de permissões, por não existir o
diretório ou por não haver espaço no dispositivo, a variável de sistema ERRNO será
definida como ERR_IOERROR.

Se o argumento \FilePath não for especificado para módulos de programa carregados


a partir da Unidade de programação, Parâmetros do sistema ou um computador
externo, a variável de sistema ERRNO será definida como ERR_PATH.

Os erros acima podem ser tratados na rotina de tratamento de erros.

Sintaxe
Save
[ ‘\’ Task ‘:=‘ <variable (VAR) of taskid> ‘,’ ]
[ ModuleName ‘:=‘ ] <expression (IN) of string>
[ ‘\’ FilePath ‘:=‘<expression (IN) of string> ]
[ ‘\’ File ‘:=‘ <expression (IN) of string>] ‘;’

Informações relacionadas
Descrito em:
Tarefas de programa Tipos de dados - taskid

Data Types do Sistema e Rotinas 2-Save-7


Save Instruções

2-Save-8 Data Types do Sistema e Rotinas


Instruções SearchC

SearchC Pesquisa circularmente usando o robô


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

Durante o movimento, o robô supervisiona um sinal de entrada digital. Quando o valor


do sinal muda, o robô lê imediatamente a posição atual.

Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchC , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.

Exemplos
SearchC sen1, sp, cirpoint, p10, v100, probe;

O TCP da probe é movido circularmente em direção à posição p10 numa veloci-


dade de v100. Quando o valor do sinal do1 é ligado, a posição é guardada em sp.

SearchC \Stop, sen1, sp, cirpoint, p10, v100, probe;

O TCP da probe é movido circularmente em direção à posição p10. Quando o


valor do sinal do1 é ligado, a posição é guardada em sp e o robô pára imediata-
mente.

Argumentos
SearchC [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal [ \Flanks ]
SearcPoint CirPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ] [ \Corr
]
[ \Stop ] (Stiff Stop) Data type: switch

O movimento do robô é parado, o mais rapidamente possível, sem manter o TCP


na trajetória (parada agressiva), quando o valor do sinal de pesquisa fica ativo.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, i.e. para a posição onde o sinal mudou.

[ \PStop ] (Path Stop) DataType: switch

O movimento do robô é parado, o mais rapidamente possível, enquanto mantém


o TCP na trajetória (parada suave), quando o valor do sinal de pesquisa é ligado.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, ou seja, para a posição onde o sinal mudou.

[ \SStop ] (Smooth Stop) Data type: switch

O movimento do robô é interrompido tão rapidamente quanto possível, ao

Manual de Referência RAPID 8-SearchC-1


SearchC Instruções

mesmo tempo em que se mantém o TCP próximo do caminho ou no caminho


(parada suave), quando o valor do sinal de pesquisa muda para ativo. Entretanto,
o robô é movido por uma distância um tanto pequena antes de parar, não sendo
movido de volta para a posição pesquisada, ou seja, a posição na qual o sinal
mudou. SStop é mais rápido que PStop. No entanto, quando o robô se move mais
rapidamente que 100 mm/s, ele pára na direção da tangente do movimento, o que
o faz deslizar um pouco para fora do caminho.

[ \Sup ] (Supervision) DataType: switch

A instrução Search é sensível à mudança de sinal durante todo o movimento


(pesquisa flutuante), i.e. mesmo após a troca do primeiro sinal ter sido relatado.
Se mais de um sinal ocorrer durante a pesquisa, a execução do programa pára.

Se o argumento \Stop, \PStop, \SStop ou \Sup for omitido, o movimento continu-


ará (pesquisa flutuante) para a posição especificada no argumento ToPoin (o
mesmo que com o argumento \Sup).

Signal DataType: signaldi

O nome do sinal a supervisionar.

[\Flanks ] Data type: switch

As extremidades positiva e negativa do sinal são válidas para uma pesquisa com
sucesso.

Se o argumento \Flanks é omitido, somente a extremidade positiva do sinal é


válida para o sucesso da pesquisa e uma supervisão de sinal será ativada no início
do processo de pesquisa. Isso significa que, se o sinal tem um valor positivo no
início do processo de pesquisa, o movimento do robô é parado, o mais
rapidamente possível, mantendo o TCP na trajetória (parada suave). Entretanto,
o robô é movido uma pequena distância antes de parar e não é movido de novo
para a posição inicial. Um erro recuperável pelo usuário
(ERR_SIGSUPSEARCH) será gerado e pode ser tratado pelo tratamento de
erros.

SearchPoint DataType: robtarget

A posição do TCP e eixos externos quando o sinal de search foi acionado. A


posição é especificada no sistema de coordenada mais externa, levando em con-
sideração a ferramenta especificada, o objeto de trabalho e o sistema de coorde-
nada ProgDisp/ExtOffs ativo.

CirPoint DataType: robtarget

O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

8-SearchC-2 Manual de Referência do RAPID


Instruções SearchC

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchC sempre usa um ponto de parada como um dado de zona para
o destino.

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que as posições do robô na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em entrada de correcções pela instrução CorrWrite


serão adicionados no trajeto e na posição de destino, em estando presente este
argumento.

Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.

O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.

Manual de Referência RAPID 8-SearchC-3


SearchC Instruções

Quando uma pesquisa flutuante é usada (por exemplo, quando o argumento \Sup é
especificado), o movimento do robô sempre continua para o ponto de destino progra-
mado. Quando uma pesquisa é feita usando a opção \Stop ou \PStop ou \SStop, o mov-
imento do robô pára quando o primeiro sinal é detectado.

A instrução SearchC retorna a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 16.

Sem chave \Flanks Com chave \Flanks


1 1
0 time 0 time

= Reação da instrução quando


altera o sinal

Figura 16 Deteção de sinal disparada por Flank (as posições são guardadas somente quando o
sinal é alterado a primeira vez).

Exemplo
SearchC \Sup, sen1\Flanks, sp, cirpoint, p10, v100, probe;

O TCP do probe é movido circularmente em direção à posição p10. Quando o


valor do sinal sen1 é alterado para ativo ou passivo, a posição é guardada em sp.
Se o valor do sinal muda duas vezes, a execução do programa pára.

Limitações
O dado de zona para a instrução de posicionamento que precede o SearchC deve ser
usado cuidadosamente. O início da pesquisa, por exemplo, quando o sinal E/S está
pronto para reativar, não é, neste caso o ponto de destino programado na instrução de
posicionamento anterior, mas um ponto ao longo da real trajetória do robô. Figura 17
ilustra um exemplo de alguma coisa que pode estar errada quando outro dado de zona
que não o fine é usado.

A instrução SearchC nunca poderá ser reiniciada após um ponto de círculo ter passado.
Caso contrário o robô não fará o trajeto programado (posicionamento em torno da tra-
jetória circular em uma outra direção comparada com a programada).

8-SearchC-4 Manual de Referência do RAPID


Instruções SearchC

Ponto inicial com


dado de zona z10 Objeto de pesquisa

Ponto final

Ponto inicial com


dado de zona fine

Figura 17 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.

Distância típica de parada usando uma velocidade de pesquisa de 50 mm/s:

- sem TCP na trajetória (opção \Stop) 1-3 mm


- com TCP na trajetória (opção \PStop) 12-16 mm
- com TCP próximo à trajetória (opção \SStop) 7-10 mm

Tratamento de erros
Um erro é relatado durante uma pesquisa quando:

- não ocorre o sinal de deteção - isto gera o erro ERR_WHLSEARCH


- mais de um sinal de deteção ocorre – isto gera um o erroERR_WHLSEARCH,
somente se o argumento \Sup é usado.
- o sinal já tem um valor positivo no início do processo de pesquisa. Isto gera o
erro ERR_SIGSUPSEARCH, somente se o argumento \Flanks é omitido.

Erros podem ser tratados de diferentes formas dependendo do modo de execução sel-
ecionado :

Para frente continuamente / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado . A variável de sistema ERRNO é ajustada para
ERR_WHLSEARCH e o erro pode ser tratado no tratamento de erro da rotina.

Para frente continuamente / Para frente instrução por instrução /


ERR_SIGSUPSEARCH
Nenhuma posição é retornada e o movimento sempre pára, tão rapidamente
quanto possível, no início do trajeto de pesquisa. A variável do sistema ERRNO
é ajustada para ERR_SIGSUPSEARCH e o erro pode ser tratado no tratamento
de erro da rotina.

Para frente instrução por instrução / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado. Execução do programa pára com uma mensagem de erro.

Manual de Referência RAPID 8-SearchC-5


SearchC Instruções

Para trás instrução por instrução


Durante a execução para trás, a instrução realiza somente o movimento sem sinal
de supervisão.

Sintaxe
SearchC
[ ’\’ Stop’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’ ] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks]’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ CirPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Pesquisas lineares Instruções - SearchL
Escreve em uma entrada de correcções Instruções - CorrWrite
Movimento circular Movimento e Princípios de E/S -
Posicionamento durante a execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S
Mais exemplos de pesquisa Instruções - SearchL

8-SearchC-6 Manual de Referência do RAPID


Instruções SearchL

SearchL Pesquisa linearmente usando o robô


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

Durante o movimento, o robô supervisiona um sinal de entrada digital. Quando o valor


do sinal muda para o pedido, o robô lê imediatamente a posição atual.

Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchL , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.

Exemplos
SearchL sen1, sp, p10, v100, probe;

O TCP do probe é movido linearmente em direção à posição p10 numa veloci-


dade de v100. Quando o valor do sinal do1 é ligado, a posição é guardada em sp..

SearchL \Stop, sen1, sp, p10, v100, probe;

O TCP do probe é movido linearmente em direção à posição p10. Quando o valor


do sinal do1 é ligado, a posição é guardada em sp e o robô pára imediatamente.

Argumentos
SearchL [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal
[ \Flanks ] SearchPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]
[ \Corr ]
[ \Stop ] (Stiff Stop) Data type: switch

O movimento do robô é parado, o mais rapidamente possível, sem manter o TCP


na trajetória, quando o valor do sinal de pesquisa é alterado para ativo.
Entretanto, o robô se move uma pequena distância antes de parar e não volta para
trás para a posição pesquisada, i.e. para a posição onde o sinal mudou.

[ \PStop ] (Path Stop) DataType: switch

O movimento do robô é interrompido, o mais rapidamente possível, enquanto


mantém o TCP na trajetória (parada suave), quando o valor do sinal de pesquisa
é alterado para ativo. Entretanto, o robô se move uma pequena distância antes de
parar e não volta para trás para a posição pesquisada, ou seja, para a posição onde
o sinal mudou.

[ \SStop ] (Smooth Stop) Data type: switch

O movimento do robô é interrompido tão rapidamente quanto possível, enquanto

Manual de Referência do RAPID 8-SearchL-7


SearchL Instruções

matém o TCP próximo à trajetória ou na trajetória (parada suave), quando o valor


do sinal de pesquisa muda para ativo. Entretanto, o robô é movido por uma
pequena distância antes de parar e não é movido de volta para a posição
pesquisada, ou seja, a posição na qual o sinal mudou. SStop é mais rápido que
PStop. No entanto, quando o robô se move mais rapidamente que 100 mm/s, ele
pára na direção da tangente do movimento, o que o faz desviar-se um pouco da
trajetória.

[\Sup ] (Supervision) DataType: switch

A instrução search é sensível à mudança de sinal durante todo o movimento


(pesquisa flutuante), i.e. mesmo após a troca do primeiro sinal ter sido relatada.
Se mais de um sinal ocorrer durante a pesquisa, a execução do programa pára.

Se o argumento \Stop, \PStop, \SStop ou \Sup for omitido, o movimento continu-


ará (pesquisa flutuante) para a posição especificada no argumento ToPoint (o
mesmo que com o argumento \Sup).

Signal DataType: signaldi

O nome do sinal a supervisionar.

[\Flanks ] Data type: switch

As extremidades positiva e negativa d sinal são válidas para uma pesquisa de


sucesso.

Se o argumento \Flanks é omitido, somente a extremidade positiva do sinal será


válida para uma pesquisa de sucesso e a supervisão de sinal será ativada no início
Isso significa que se o sinal tem o valor positivo já no início do processo de
pesquisa, o movimento do robô é parado, tão rapidamente quanto possível,
enquanto mantém o TCP na trajetória (parada suave). Um erro recuperável pelo
usuário (ERR_SIGSUPSEARCH) será gerado e pode ser tratado pela rotina de
tratamento de erros.

SearchPoint DataType: robtarget

A posição do TCP e eixos externos quando o sinal de search foi acionado. A


posição é especificada no sistema de coordenada mais externo, levando em con-
sideração a ferramenta e o objeto de trabalho e o sistema de coordenadas
ProgDisp/ExtOffs ativo.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchL sempre usa um ponto de parada como um dado de zona para
o destino.

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

8-SearchL-8 Manual de Referência do RAPID


Instruções SearchL

[ \V ] (Velocity) DataType: num

Este argumento é usado para especificar a velocidade do TCP em mm/s direta-


mente na instrução. Ele é então substituído pela velocidade correspondente espe-
cificada no dado de velocidade.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos enquanto o


robô se move. Ele é então substituído pelo correspondente dado de velocidade.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que o robô está posicionado na


instrução é relacionada.

Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão adicionados na trajetória e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.

O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.

Se uma pesquisa flutuante é usada, por exemplo, o argumento \Sup é especificado, o


movimento do robô sempre continua para o ponto de destino programado. Se uma
pesquisa é feita usando a opção \Stop, \PStop ou \SStop, o movimento do robô pára
quando o primeiro sinal é detectado.

A instrução SearchL guarda a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 18.

Manual de Referência do RAPID 8-SearchL-9


SearchL Instruções

Sem interruptor \Flanks Com interruptor \Flanks


1 1
0 tempo 0 tempo

= Reação de instrução quando


o sinal é trocado

Figura 18 Deteção de sinal por disparo de Flank (a posição é guardada somente quando o sinal
é trocado a primeira vez)

Exemplos
SearchL \Sup, sen1\Flanks, sp, p10, v100, probe;

O TCP da probe é movido linearmente em direção à posição p10. Quando o valor


do sinal sen1 é alterado para ativo ou passivo, a posição é guardada em sp. Se o
valor do sinal muda duas vezes, a execução do programa pára após terminado o
processo de pesquisa.

SearchL \Stop, sen1, sp, p10, v100, tool1;


MoveL sp, v100, fine, tool1;
PDispOn *, tool1;
MoveL p100, v100, z10, tool1;
MoveL p110, v100, z10, tool1;
MoveL p120, v100, z10, tool1;
PDispOff;

No início do processo de pesquisa, será feita uma verificação no sinal sen1 e, se


o sinal já tem um valor positivo, a execução do programa pára. Caso contrário, o
TCP da tool1 é movido linearmente em direção à posição p10. Quando o valor
do sinal sen1 é alterado para ativo, a posição é guardada em sp e o robô se move
de volta a este ponto. Usando um programa de deslocamento, o robô então se
move relativo à posição de pesquisa, sp.

Limitações
O dado de zona para a instrução de posicionamento que precede o SearchL deve ser
usado cuidadosamente. O início da pesquisa, i.e. quando o sinal E/S está pronto para
reativa, neste caso, não é o ponto de destino programado na instrução e na verdade,
instrução de posicionamento anterior, mas um ponto ao longo da real trajetória do robô.
Figura 19 a Figura 21 ilustram exemplos de coisas que podem estar erradas quando
outro dado de zona que não o fine é usado.

8-SearchL-10 Manual de Referência do RAPID


Instruções SearchL

Ponto de partida com


dado de zona fine

Ponto de partida com


dado de zona z10 Objeto de pesquisa
Ponto final

Figura 19 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.

Ponto de partida com


dado de zona fine

Ponto de partida com


dado de zona z10 Objeto de pesquisa
Ponto final

Figura 20 Deteção não encontrada porque foi usado o dado de zona errado.

Ponto de partida com


dado de zona fine

Ponto de partida com Objeto de pesquisa


dado de zona z10
Ponto final

Figura 21 Deteção não encontrada porque foi usado o dado de zona errado.

Distância típica de parada usando uma velocidade de pesquisa de 50 mm/s:

- sem TCP na trajetória (opção \Stop) 1-3 mmm


- com TCP na trajetória (opção \PStop) 12-16 mm
- com TCP próximo à trajetória (opção \SStop) 7-10 mm

Tratamento de erros
Um erro é relatado durante uma pesquisa quando:

- não ocorre o sinal de deteção - isto gera o erro ERR_WHLSEARCH.


- mais de um sinal de deteção ocorre – isto gera o erro ERR_WHLSEARCH
somente se o argumento \Sup é usado.
- o sinal já tem um valor positivo no início do processo de pesquisa - isto gera o
erro ERR_SIGSUPSEARCH somente se o argumento \Flanks é omitido.

Manual de Referência do RAPID 8-SearchL-11


SearchL Instruções

Erros podem ser tratados de diferentes formas, dependendo do modo de execução sel-
ecionado :

Para frente continuamente / ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado . A variável de sistema ERRNO é fixada para
ERR_WHLSEARCH e o erro pode ser manipulado no tratamento de erro da
rotina.

Para frente continuamente / Para frente instrução por instrução /


ERR_SIGSUPSEARCH
Nenhuma posição é retornada e o movimento sempre pára, o mais rapidamente
possível, no início da trajetória de pesquisa. A variável do sistema ERRNO é
ajustada para ERR_SIGSUPSEARCH e o erro pode ser tratado no tratamento de
erros da rotina.

Para frente instrução por instrução/ ERR_WHLSEARCH


Nenhuma posição é retornada e o movimento sempre continua para o ponto de
destino programado. Execução do programa pára com uma mensagem de erro.

Para trás instrução por instrução


Durante a execução para trás, a instrução realiza somente o movimento sem
supervisão de sinal.

Exemplo
VAR num fk;
.
MoveL p10, v100, fine, tool1;
SearchL \Stop, sen1, sp, p20, v100, tool1;
.
ERROR
IF ERRNO=ERR_WHLSEARCH THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN
TPWrite “O sinal da instrução SearchL já é elevado!”;
TPReadFK fk,”Tentar novamente após reajuste manual do sinal
?”,”YES”,””,””,””,”NO”;
IF fk = 1 THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSE
Stop;
ENDIF
ENDIF

Se o sinal já está ativo no início do processo de pesquisa, uma caixa de diálogo


do usuário será ativada (TPReadFK ...;). Reajuste o sinal e pressione YES na
caixa de diálogo. O robô retorna a p10 e tenta mais uma vez. Caso contrário, a
execução do programa pára.

8-SearchL-12 Manual de Referência do RAPID


Instruções SearchL

Se o sinal está passivo no início do processo de pesquisa, o robô pesquisa desde


a posição p10 até p20. Se nenhum sinal é detetado, o robô retorna a p10 e tenta
mais uma vez.

Sintaxe
SearchL
[ ’\’ Stop ’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks] ’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Pesquisas circulares Instruções - SearchC
Escrever em entrada de correções Instruções - CorrWrite
Movimento linear Movimento e Princípios de E/S -
Posicionamento na execução do pro-
grama
Definição de velocidade Tipos de dados - speeddata
Definição de ferramenta Tipos de dados - tooldata
Definição de objeto de trabalho Tipos de dados - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S

Manual de Referência do RAPID 8-SearchL-13


SearchL Instruções

8-SearchL-14 Manual de Referência do RAPID


Instruções Set

Set Liga um sinal de saída digital


Set é usado para levar o valor de um sinal digital para um.

Exemplos
Set do15;

O sinal do15 é levado para 1.

Set weldon;

O sinal weldon é levado para 1.

Argumentos
Set Signal
Signal DataType: signaldo

O nome do sinal a ser levado para um.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a zero.

Sintaxe
Set
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’

Data Types do Sistema e Rotinas 2-Set-1


Set Instruções

Informações relacionadas
Descrito em:
Levando um sinal de saída digital para zero Instruções - Reset
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-Set-2 Data Types do Sistema e Rotinas


Instruções SetAO

SetAO Muda o valor de um sinal de saída analógico


SetAO é usado para mudar o valor de um sinal de saída analógico.

Exemplo
SetAO ao2, 5.5;

O sinal ao2 é levado para 5.5.

Argumentos
SetAO Signal Value
Signal DataType: signalao

O nome do sinal de saída analógico a ser alterado.

Value DataType: num

O valor desejado para o sinal.

Execução do programa
O valor programado é tabelado (de acordo com os parâmetros do sistema) antes de ser
enviado ao canal físico. Veja Figure 22.

Valor físico do
sinal de saída (V, mA, etc.)

MAX SINAL

MAX PROGRAMA

Valor lógico no
programa
MIN PROGRAMA

MIN SINAL

Figure 22 Diagrama de como o valor do sinal analógico é tabelado.

Data Types do Sistema e Rotinas 2-SetAO-1


SetAO Instruções

Exemplo
SetAO weldcurr, curr_outp;

O sinal weldcurr é levado para o mesmo valor que o atual valor da variável
curr_outp.

Sintaxe
SetAO
[ Signal ’:=’ ] < variável (VAR) do signalao > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-SetAO-2 Data Types do Sistema e Rotinas


Instruções SetDO

SetDO Muda o valor de um sinal de saída digital


SetDO é usado para mudar o valor de um sinal de saída digital, com ou sem um tempo
de atraso.

Exemplos
SetDO do15, 1;

O sinal do15 é levado para 1.

SetDO weld, off;

O sinal weld é levado para off.

SetDO \SDelay := 0.2, weld, high;

O sinal weld é levado para high com um atraso de 0.2 s. Entretanto, a execução
do programa continua com a próxima instrução.

Argumentos
SetDO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) DataType: num

A mudança de tempo de atraso é dado em segundos (0.1 - 32s).


A execução do programa continua diretamente com a próxima instrução. Após o
tempo de atraso dado, o sinal é mudado sem afetar o resto da execução do pro-
grama.

Se o argumento é omitido, o valor do sinal é mudado diretamente.

Signal DataType: signaldo

O nome do sinal a ser mudado.

Value DataType: dionum

O valor desejado para o sinal.

O valor está especificado como 0 ou 1.

Execução do programa
O valor real depende da configuração do sinal. Se o sinal está invertido nos parâmetros
do sistema, o valor do canal físico é o oposto.

Data Types do Sistema e Rotinas 2-SetDO-1


SetDO Instruções

Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) de num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) de signaldo > ’,’
[ Value ’:=’ ] < expressão (IN) de dionum > ’;’

Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Princípios de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário -
Parâmetros do Sistema

2-SetDO-2 Data Types do Sistema e Rotinas


Instruções SetGO

SetGO Muda o valor de um grupo


de sinais de saída digital
SetGO é usado para mudar o valor de um grupo de sinais de saída digitais, com ou sem
atraso de tempo.

Exemplo
SetGO go2, 12;

O sinal go2 é levado para 12. Se go2 compreende 4 sinais, ex. saídas 6-9, as saí-
das 6 e 7 são levadas para zero, enquanto as saídas 8 e 9 são levadas a um.

SetGO \SDelay := 0.4, go2, 10;

O sinal go2 é levada para 10. Se go2 compreende 4 sinais, ex. saídas 6-9, as
saídas 6 e 8 são levadas para zero, enquanto as saídas 7 e 9 são levadas a um, com
um atraso de 0.4 s. Entretanto, a execução do programa continua com a próxima
instrução.

Argumentos
SetGO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) Data type: num

Atrasa a alteração pelo período de tempo estabelecido em segundos (0.1 - 32s).


A execução do programa continua diretamente com a próxima instrução. Após o
atraso de tempo especificado, o valor dos sinais é alterado sem afetar a restante
execução do programa.

Se o argumento é omitido, o valor é mudado diretamente.

Signal DataType: signalgo

O nome do grupo de sinais a ser mudado.

Value DataType: num

O valor desejado para o grupo de sinais (inteiro positivo).

O valor permitido depende do número de sinais do grupo:

Data Types do Sistema e Rotinas 2-SetGO-1


SetGO Instruções

No. de sinais Valor permitido No. de sinais Valor permitido


1 0-1 9 0 - 511
2 0-3 10 0 - 1023
3 0-7 11 0 - 2047
4 0 - 15 12 0 - 4095
5 0 - 31 13 0 - 8191
6 0 - 63 14 0 - 16383
7 0 - 127 15 0 - 32767
8 0 - 255 16 0 - 65535

Execução do programa
O valor programado é convertido para um número binário sem sinal. Este número
binário é enviado ao grupo de sinal, o que resulta em sinais individuais no grupo que
são levados para 0 ou 1. Devido a atrasos internos, o valor do sinal pode ser indefinido
por um curto período de tempo.

Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signalgo > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Outras instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios de E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema

2-SetGO-2 Data Types do Sistema e Rotinas


Instruções SingArea

SingArea Define interpolação em torno de pontos singulares


SingArea é usado para definir como o robô se move perto de pontos singulares.

SingArea é usado também para definir a interpolação circular e linear para robôs com
menos de seis eixos.

Exemplos
SingArea \Wrist;

A orientação da ferramenta pode ser mudada ligeiramente para que passe por um
ponto singular (eixos 4 e 6 em linha).

Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta interpolada. Usando SingArea \Wrist, o robô poderá con-
cluir o movimento mas a orientação da ferramenta será ligeiramente alterada.

SingArea \Off;

A orientação da ferramenta não pode diferir da orientação programada. Se passar


por um ponto singular, um ou mais eixos podem realizar um movimento de
varredura, resultando na redução da velocidade.

Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta programada. Como um resultado o robô parará.

Argumentos
SingArea [ \Wrist] | [ \Off]
[ \Wrist ] Tipo de Dados: switch

A orientação da ferramenta pode diferir um pouco para evitar a singularidade do


punho. Usada quando eixos 4 e 6 são paralelos (eixo 5 a 0 graus). É também
usado para interpolação circular e linear de robôs com menos de seis eixos onde
é permitido diferir a orientação da ferramenta

[\Off ] Tipo de Dados: switch

A orientação da ferramenta não pode diferir. Usado quando nenhum ponto sin-
gular é ultrapassado, ou quando a orientação não pode ser mudada.

Se nenhum dos argumentos for especificado, a execução do programa usa auto-


maticamente o argumento por omissão do robô. Para robôs com seis eixos o
argumento por omissão é \Off

Data Types do Sistema e Rotinas 2-SingArea-1


SingArea Instruções

Execução do programa
Se o argumento \Wrist for especificado, a orientação será interpolada eixo-a-eixo para
evitar pontos singulares. Desta forma, o TCP segue a trajetória correta, mas a orien-
tação da ferramenta desvia um tanto. Isto também ocorre quando um ponto singular não
é ultrapassado.

A interpolação especificada se aplica a todos os movimentos subsequentes até que uma


nova instrução SingArea seja executada.

O movimento somente é afetado na execução de interpolação linear ou circular.

Por omissão, a execução do programa usa automaticamente o argumento /Off para


robôs com seis eixos. Robôs com com menos de seis eixos poderão usar o argumento /
/Off (IRB640) ou o argumento/Wrist por omissão. Isto é automaticamente ajustado na
rotina de evento SYS_RESET.

- uma partida a frio


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

Sintaxe
SingArea
[ ’\’ Wrist ] | [ ’\’ Off ] ’;’

Informações relacionadas
Descritas em:
Singularidade Princípios de Movimentação -
Singularidade
Interpolação Princípios de Movimentação -
Posicionamento durante a Execução
do Programa

2-SingArea-2 Data Types do Sistema e Rotinas


Instruções SoftAct

SoftAct Ativa o servo soft


SoftAct (Soft Servo Activate) é usado para ativar o chamado servo ”soft” de qualquer
eixo do robô ou unidades mecânicas externas.

Exemplo
SoftAct 3, 20;

Ativação do servo soft no eixo 3, com valor de suavidade 20%.

SoftAct 1, 90 \Ramp:=150;

Ativação do servo soft no eixo 1, com valor de suavidade 90% e fator de rampa
150%.

SoftAct \MechUnit:=orbit1, 1, 40 \Ramp:=120;

Ativação do servo soft no eixo 1, para a unidade mecânica orbit1, com valor de
suavidade 40% e fator de rampa 120%

Argumentos
SoftAct [\MechUnit] Axis Softness [\Ramp ]
[\MechUnit] (Unidade Mecânica) Tipo de Dados: mecunit

O nome da unidade mecânica. Se este argumento for omitido, significa que o


servo soft está ativado para o eixo do robô especificado.

Axis Tipo de Dados: num

Número do do robô ou eixo externo para trabalhar com o servo soft.

Softness Tipo de Dados: num

Valor de suavidade em porcentagem (0 - 100%). 0% significa suavidade mínima


(máx. rigidez), e 100% significa máx. suavidade.

Ramp Tipo de Dados: num

Fator da rampa em porcentagem (>= 100%). O fator da rampa é usada para con-
trolar o ajuste do soft servo. Um fator 100% significa um valor normal; com val-
ores maiores de soft servo é ajustado mais suavemente (rampa longa). O valor
default para fator de rampa é 100 %.

Data Types do Sistema e Rotinas 2-SoftAct-1


SoftAct Instruções

Execução do programa
Suavidade é ativada no valor especificado para o atual eixo. Um valor de suavidade é
válido para todos os movimentos, até que um novo valor de suavidade seja programado
para o eixo atual, ou até que o soft servo seja desativado por uma instrução.

Limitações
O servo suave de qualquer robô ou eixo externo é sempre desativado em caso de falha
de energia. Essa limitação pode ser contornada no programa do usuário, ao reiniciar
após uma falha de energia.

O mesmo eixo não deve ser ativado duas vezes, a menos que haja uma instrução de
movimento no meio. Desta maneira, a próxima sequência do programa deve ser evi-
tada, caso contrário haverá um solavanco no movimento do robô:

SoftAct n , x;
SoftAct n , y;
(n = eixo do robô n, x e y valores de suavidade)

Sintaxe
SoftAct
[’\’MechUnit ’:=’ < variável (VAR) de mecunit> ’,’]
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[Softness ’:=’ ] < expressão (IN) do num>
[ ’\’Ramp ’:=’ < expressão (IN) do num> ]’;’

Informações relacionadas
Descritas em:
Comportamento com o servo soft engatado Movimentação e Princípios E/S -
Posicionamento na execução do
programa

2-SoftAct-2 Data Types do Sistema e Rotinas


Instruções SoftDeact

SoftDeact Desativa o servo soft


SoftDeact (Soft Servo Deactivate) é usado para desativar o chamado servo ”soft” em
todos os robôs e eixos externos.

Exemplo
SoftDeact;

Desativa o soft servo em todos os eixos.

SoftDeact \Ramp:=150;

Desativa o soft servo em todos os eixos, com fator ramp de 150%.

Argumentos
SoftDeact [\Ramp ]

Ramp Data type: num

Fator ramp em porcentagem (>= 100%). O fator ramp é usado para controlar a
desativação do soft servo. Um fator 100% representa o valor normal; com
valores maiores, o soft servo é desativado mais lentamente (ramp mais longo). O
valor padrão do fator ramp é de 100 %.

Execução do programa
O servo soft é desativado para todos os robôs e eixos externos.

Sintaxe
SoftDeact’;’

Informações relacionadas
Descritas em:
Ativando o soft servo Instruções - SoftAct

Data Types do Sistema e Rotinas 2-SoftDeact-1


SoftDeact Instruções

2-SoftDeact-2 Data Types do Sistema e Rotinas


Instruções SpyStart

SpyStart Iniciar gravação de dados


em tempo de execução
SpyStart é usado para iniciar a gravação de dados de instrução e tempo durante a
execução.

Os dados de execução serão armazenados em um arquivo para análise posterior.

Os dados armazenados têm como finalidade a depuração do programa RAPID, especí-


fico para sistema multitarefa (necessário somente para SpyStart - SpyStop em uma
tarefa de programa).

Exemplo
SpyStart "ram1disk:spy.log";

Inicia a gravação dos dados em tempo de execução no arquivo spy.log, no ram-


disk.

Argumentos
SpyStart File
File Tipo de dados: string

O caminho e o nome do arquivo que irá conter os dados de execução.

Execução do programa
O arquivo especificado é aberto para escrita e os dados de tempo de execução
começam a ser gravados no arquivo.

A gravação dos dados em tempo de execução fica ativa até:

- a execução da instrução SpyStop


- que a execução do programa comece do início
- o carregamento de um novo programa
- a próxima partida a quente

Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.

Data Types do Sistema e Rotinas 2-SpyStart-3


SpyStart Instruções

Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).

Tratamento de erros
Se o arquivo da instrução SpyStart não puder ser aberto, a variável de sistema ERRNO
será definida como ERR_FILEOPEN (veja “Tipos de dados - errnum”). Assim, esse
erro poderá ser tratado na rotina de tratamento de erros.

Formato de arquivo
TASK INSTR IN CODE OUT

MAIN ConfJ\Off; 691310:READY :691310


----- SYSTEM TRAP-----
MAIN ConfL\Off; 691450:READY :691450
MAIN def_wz; 691450:READY :691450
MAIN WZSphDef\Inside,volume,[p1.trans.x+xtrans691450:READY :691450
MAIN WZDOSet\Temp,wz1\Inside,volume,do1,1; 691460:READY :691460
----- SYSTEM TRAP-----
MAIN WZSphDef\Inside,volume,[p2.trans.x+xtrans,691460:READY :691460
MAIN WZDOSet\Temp,wz2\Inside,volume,do2,1; 691860:READY :691860
...
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 693910:WAIT :694010
----- SYSTEM TRAP -----
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 726820:WAIT :726820
----- SYSTEM TRAP -----
MAIN MoveL home,s,z,toolx\WObj:=wobjx; 740300:READY :740300
MAIN writepos; 740300:READY :740300
...
MAIN SpyStop; 827610:

A coluna TASK mostra a tarefa de programa executada


A coluna INSTR mostra a instrução executada na tarefa de programa especificada
A coluna IN mostra, em ms, o momento de entrada da instrução executada
A coluna CODE mostra se a instrução está pronta (READY) ou
se a instrução espera (WAIT) conclusão no momento OUT
A coluna OUT mostra, em ms, o momento em que a instrução executada é deixada

Todos os tempos são dados em ms (valores relativos), com resolução de 10 ms.

----- SYSTEM TRAP----- significa que o sistema está fazendo algo mais do que exe-
cutar instruções do RAPID.

Se houver uma chamada a algum procedimento (módulo) NOSTEPIN, a lista de saída


mostrará somente o nome do procedimento que tiver feito a chamada. Isso se repete
para cada instrução executada na rotina NOSTEPIN.

2-SpyStart-4 Data Types do Sistema e Rotinas


Instruções SpyStart

Sintaxe
SpyStart
[File’:=‘]<expression (IN) of string>‘;’

Informações relacionadas
Descrito em:
Interromper a gravação de dados de execução Instruções - SpyStop

Data Types do Sistema e Rotinas 2-SpyStart-5


SpyStart Instruções

2-SpyStart-6 Data Types do Sistema e Rotinas


Instruções SpyStop

SpyStop Interromper gravação de dados


em tempo de execução
SpyStop é usado para interromper a gravação de dados de tempo durante a execução.

Os dados, que podem ser úteis para otimizar o tempo do ciclo de execução, são arma-
zenados em um arquivo para análise posterior.

Exemplo
SpyStop;

Interrompe a gravação de dados em tempo de execução no arquivo especificado


pela instrução SpyStart anterior.

Execução do programa
A gravação de dados de execução é interrompida e o arquivo especificado pela
instrução SpyStart é fechado.
Se nenhuma instrução SpyStart tiver sido executada antes, a instrução SpyStop será
ignorada.

Exemplos
IF debug = TRUE SpyStart "ram1disk:spy.log";
produce_sheets;
IF debug = TRUE SpyStop;

Se o sinalizador debug é verdadeiro, inicia a gravação de dados de execução no


arquivo spy.log, no ramdisk; efetua produção real, interrompe a gravação e fecha
o arquivo spy.log.

Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.

Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).

Data Types do Sistema e Rotinas 2-SpyStop-7


SpyStop Instruções

Sintaxe
SpyStop’;’

Informações relacionadas
Descrito em:
Iniciar gravação de dados de execução Instruções - SpyStart

2-SpyStop-8 Data Types do Sistema e Rotinas


Instruções Load

StartLoad Carregar um módulo de programa durante a


execução
O módulo de programa carregado será adicionado aos módulos já existentes na
memória do programa.

Um módulo de sistema ou de programa pode ser carregado em modo estático (padrão)


ou em modo dinâmico:

Modo estático
Tabell 3 Como diversas operações afetam módulos do sistema ou programas carregados estat-
icamente.

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não afetado Não carregado

Módulo do sistema Não afetado Não afetado

Modo dinâmico
Tabell 4 Como diversas operações afetam módulos do sistema ou programas carregados dinam-
icamente

Definir PP como principal a


Abrir novo programa RAPID
partir do TP

Módulo de programa Não carregado Não carregado

Módulo do sistema Não carregado Não carregado

Ambos os módulos carregados estaticamente e dinamicamente podem ser descarrega-


dos pela instrução UnLoad.

Exemplo
VAR loadsession load1;

! Inicia o carregamento do novo módulo de programa PART_B, que contém a rotina


routine_b
! em modo dinâmico
StartLoad \Dynamic, ram1disk \File:="PART_B.MOD", load1;

! Executando em paralelo no módulo antigo PART_A que contém routine_a


%"routine_a"%;

! Descarregamento do módulo de programa antigo PART_A


UnLoad ram1disk \File:="PART_A.MOD";

Data Types do Sistema e Rotinas 2-Load-9


Load Instruções

! Espera até que o carregamento e a vinculação do novo módulo de programa PART_B


esteja pronto
WaitLoad load1;

! Execução no novo módulo de programa PART_B


%"routine_b"%;

Inicia o carregamento do módulo de programa PART_B.MOD de ram1disk na


memória do programa com a instrução StartLoad. El paralelo como carrega-
mento, o programa executa routine_a no módulo PART_A.MOD. Em seguida, a
instrução WaitLoad espera pela conclusão do carregamento e da vinculação. O
módulo é carregado em modo dinâmico.

A variável load1 armazena a identificação da sessão de carregamento, atualizada


por StartLoad e referida por WaitLoad.

Para reduzir o tempo de carregamento, as instruções UnLoad e WaitLoad podem


ser combinadas na instrução WaitLoad pelo uso do argumento de opção
\UnLoadPath.

Argumentos
StartLoad [\Dynamic] FilePath [\File] LoadNo
[\Dynamic] Tipo de dados: switch

A opção ativa o carregamento de um módulo de programa em modo dinâmico.


Caso contrário, o carregamento ocorre em modo estático.

FilePath Tipo de dados: string

O caminho e o nome do arquivo que será carregado na memória do programa. O


nome do arquivo deve ser excluído quando o argumento \File é usado.

[\File] Tipo de dados: string

Quando o nome do arquivo é excluído no argumento FilePath, ele deve ser defi-
nido com esse argumento.

LoadNo Tipo de dados: loadsession

Há uma referência à sessão de carregamento que deve ser usada na instrução


WaitLoad para conectar o módulo de programa carregado à tarefa de programa.

Execução do programa
A execução de StartLoad apenas ordenará o carregamento e, em seguida, continuará
diretamente com a próxima instrução, sem esperar pela conclusão do carregamento.

2-Load-10 Data Types do Sistema e Rotinas


Instruções Load

Em seguida, a instrução WaitLoad esperará primeiro pela conclusão do carregamento,


caso este ainda não tenha terminado, para então ser vinculado e inicializado. A inicial-
ização do módulo carregado define todas as variáveis em nível de módulo com seus
valores iniciais.

Referências não resolvidas serão aceitas se o parâmetro de sistema para Tasks/BindRef


estiver definido como NO. No entanto, quando o programa é iniciado ou a função Pro-
gram Window/File/Check Program da unidade de programação é utilizada, nenhuma
verificação de referências não resolvidas será feita se BindRef = NO. Haverá um erro
em tempo de execução ao executar uma referência não resolvida.

Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é usar Vinculação posterior. Isso possibilita especificar a rotina a ser chamada
com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o parâmetro
BindRef pode ser definido como YES (comportamento padrão). O método de Vincu-
lação posterior é preferível.

Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve
ser feito a partir do módulo principal, que está sempre presente na memória do pro-
grama durante a execução.

Exemplos
StartLoad \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD", load1;

Carrega o módulo de programa DOOR1.MOD a partir de ram1disk no diretório


DOORDIR para a memória de programa. O módulo de programa é carregado em
modo dinâmico.

StartLoad \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;

O mesmo que acima, porém com outra sintaxe.

StartLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;

O mesmo que os dois exemplos acima, mas o módulo é carregado em modo


estático.

StartLoad \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD", load1;


...
WaitLoad load1;

é o mesmo que

Load \Dynamic, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

Limitações
Não é permitido carregar um módulo de sistema ou módulo de programa que contenha

Data Types do Sistema e Rotinas 2-Load-11


Load Instruções

uma rotina principal.

Sintaxe
StartLoad
[‘\’Dynamic ‘,’]
[FilePath ‘:=‘] <expressão (IN) de string>
[‘\’File ‘:=‘ <expressão (IN) de string> ] ‘,’
[LoadNo ‘:=‘] <variável (VAR) de loadsession> ‘;’

Informações relacionadas
Descrito em:
Conectar o módulo carregado à tarefa Instruções - WaitLoad
Sessão de carregamento Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema - Controller/
Task/
BindRef

2-Load-12 Data Types do Sistema e Rotinas


Instruções StartMove

StartMove Reinicia o movimento do robô


StartMove é usado para retomar o movimento do robô e eixos externos quando este foi
parado pela instrução StopMove.

Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;

O robô inicia o movimento novamente quando a entrada ready_input for ligada.

Execução do programa
Qualquer processo associado com o movimento de parada é reiniciado ao mesmo
tempo que o movimento retoma.

Tratando o erro
Se o robô estiver muito longe do trajeto (mais do que 10mm ou 20 graus) para realizar
o início do movimento de interrompido, a variável de sistema ERRNO é ligada a
ERR_PATHDIST. Este erro pode então ser manipulado no manipulador de erro.

Sintaxe
StartMove’;’

Informações relacionadas
Descrito em:
Parando movimentos Instruções - StopMove
Mais exemplos Instruções - StorePath

Data Types do Sistema e Rotinas 2-StartMove-1


StartMove Instruções

2-StartMove-2 Data Types do Sistema e Rotinas


Instruções Stop

Stop Parar a execução do programa


Stop é usado para parar temporariamente a execução do programa.

A execução do programa também pode ser parada usando a instrução EXIT. Entretanto,
isto somente pode ser feito se a tarefa for concluída, ou se um erro fatal ocorrer, já que
a execução do programa não pode ser reiniciado com EXIT.

Exemplo
TPWrite "A via para o computador está danificada";
Stop;

A execução do programa pára após uma mensagem ter sido escrita na unidade de
programação.

Argumentos
Stop [ \NoRegain ]
[ \NoRegain ] Tipo de dado: switch

Especifica que o próximo início de programa seja no modo manual, indepen-


dentemente se o robô e eixos externos devem retornar à posição de parada. No
modo automático o robô e eixos externos sempre retornam a posição de parada.

Se o argumento NoRegain for ligado, o robô e eixos externos não serão recuper-
ados para a posição de parada (se elas foram movidas para fora da posição).

Se o argumento for omitido e se o robô ou eixos externos forem movidos para


fora da posição de parada, o robô apresenta uma questão na unidade de pro-
gramação. O usuário pode então responder, se o robô deve ou não voltar para a
posição de parada.

Execução do programa
Esta instrução pára a execução do programa assim que o robô e eixos externos
alcançam o ponto de destino programado para o movimento realizado naquele
momento. A execução do programa pode então ser reiniciada pela próxima instrução.

Se houver uma instrução Stop em alguma rotina de evento, a rotina será executada a
partir do início do próximo evento.

Data Types do Sistema e Rotinas 2-Stop-3


Stop Instruções

Exemplo
MoveL p1, v500, fine, tool1;
TPWrite "Mova o robô para a posição do canto 1 do pallet";
Stop \NoRegain;
p1_read := CRobT();
MoveL p2, v500, z50, tool1;

A execução do programa pára com o robô em p1. O operador move o robô para
p1_read. Para o início do próximo programa, o robô não retorna para p1, então a
posição p1_read pode ser guardada no programa.

Limitações
A instrução de movimento que precede esta instrução deve ser terminada com um
ponto de parada, para que seja possível reiniciar nesta instrução seguindo uma falha de
energia.

Sintaxe
Stop
[ ’\’ NoRegain ]’;’

Informações relacionadas
Descrito em:
Parando após um erro fatal Instruções - Exit
Terminando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove

2-Stop-4 Data Types do Sistema e Rotinas


Instruções StopMove

StopMove Pára o movimento do robô


StopMove é usado para parar o movimento do robô e eixos externos temporariamente.
Se a instrução StartMove for dada, o movimento é retomado.

Esta instrução pode, por exemplo, ser usada numa rotina trap para parar o robô tempo-
rariamente quando uma interrupção ocorre.

Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;

O movimento do robô pára até que a entrada ready_input seja ligada.

Execução do programa
Os movimentos do robô e eixos externos param sem que os freios sejam acionados.
Qualquer processo associado com os movimentos em progresso é parado ao mesmo
tempo que o movimento for parado.

A execução do programa continua sem aguardar que o robô e os eixos externos parem
(posição fixa).

Exemplos
VAR intnum intno1;
...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;

TRAP go_to_home_pos
VAR robtarget p10;

StopMove;
StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Quando a entrada di1 é ajustada em 1 é ativada uma interrupção que, por sua vez,

Data Types do Sistema e Rotinas 2-StopMove-5


StopMove Instruções

ativa a rotina interrompida go_to_home_pos. O movimento atual é imediata-


mente interrompido e o robô move-se para a posição home. Quando di1 é ajus-
tado em 0, o robô volta para a posição em que ocorreu a interrupção e continua a
movimentar-se na trajetória programada.

VAR intnum intno1;


...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;

TRAP go_to_home_pos ()
VAR robtarget p10;

StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Exemplo igual ao anterior, mas o robô não muda para a posição home até a
instrução de movimento atual estar terminada.

Sintaxe
StopMove’;’

Informações relacionadas???
Descrito em:
Continuando o movimento Instruções - StartMove
Interrupções Sumário RAPID - Interrupções
Características Básicas - Inter-
rupções???

2-StopMove-6 Data Types do Sistema e Rotinas


Instruções StorePath

StorePath Salva a trajetória quando ocorre uma interrupção


StorePath é usado para salvar a trajetória do movimento em uso quando um erro ou
interrupção ocorrer. O tratamento de erro ou rotina trap podem então iniciar um novo
movimento e, seguindo isto, reiniciar o movimento que foi salvo anteriormente.

Esta instrução pode ser usada para ir para uma posição de serviço ou para limpar a
tocha (solda arco), pinça (solda ponto) ou pistola ( aplicação de cola), por exemplo,
quando um erro ocorre.

Exemplo
StorePath;

A atual trajetória do movimento é salva para uso posterior.

Execução do programa
A atual trajetória do movimento do robô e eixos externos é salva. Após isto, outro mo-
vimento pode ser iniciado na rotina trap ou no tratamento de erro. Quando a razão para
o erro ou interrupção for retificada, a trajetória do movimento salva pode ser reinici-
ada.

Exemplo
TRAP machine_ready;
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL p100, v100, fine, tool1;
...
MoveL p1, v100, fine, tool1;
RestoPath;
StartMove;
ENDTRAP

Quando ocorre uma interrupção que ativa a rotina trap machine_ready, a tra-
jetória do movimento que o robô está executando no momento é parada no fim
da instrução (ToPoint) e salva. Após isto, o robô corrige a interrupção, por exem-
plo, substituindo uma peça na máquina e o movimento normal é reiniciado.

Data Types do Sistema e Rotinas 2-StorePath-7


StorePath Instruções

Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.

Somente uma trajetória do movimento pode ser guardada por vez.

Sintaxe
StorePath‘;’

Informações relacionadas
Descrito em:
Recuperando uma trajetória Instruções - RestoPath
Mais exemplos Instruções - RestoPath

2-StorePath-8 Data Types do Sistema e Rotinas


Instruções TEST

TEST Dependendo do valor de uma expressão ...


TEST é usado quando diferentes instruções devem ser executadas dependendo do valor
de uma expressão ou dado.

Se não há muitas alternativas, a instrução IF..ELSE também pode ser usada.

Exemplo
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Escolha ilegal";
Stop;
ENDTEST

Instruções diferentes são executadas dependendo do valor de reg1. Se o valor for


1-3 routine1 é executada. Se o valor for 4, a routine2 é executada. Caso con-
trário, uma mensagem de erro é impressa e a execução pára.

Argumentos
TEST Test data {CASE Test value {, Test value} : ...}
[ DEFAULT: ...] ENDTEST
Test data DataType: All

O dado ou expressão com o qual o valor teste será comparado.

Test value DataType: o mesmo do ’testdata’

O valor no qual o ’test data’ deve ter para as instruções associadas para ser exe-
cutado.

Execução do programa
O ’test data’ é comparado com os ’test values’ na primeira condição CASE. Se a com-
paração for verdadeira, as instruções associadas são executadas. Após isso, a execução
do programa continua com a instrução após ENDTEST.

Se a primeira condição CASE não for satisfeita, outras condições CASE são testadas,
e assim por diante. Se nenhuma das condições for satisfeita, as instruções associadas
com DEFAULT são executadas (se isto estiver presente).

Data Types do Sistema e Rotinas 2-TEST-9


TEST Instruções

Sintaxe
(EBNF)
TEST <expressão>
{( CASE <valor teste> { ’,’ <valor teste> } ’:’
<lista de instrução> ) | <CSE> }
[ DEFAULT ’:’ <lista de instrução> ]
ENDTEST

<valor teste> ::= <expressão>

Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões

2-TEST-10 Data Types do Sistema e Rotinas


Instruções MoveL

TestSign Saída dos sinais de teste


TestSign é utilizado quando é necessário ter a saída dos sinais de teste no sistema do
robô. Espelhamento dos sinais de teste, ou seja, o ângulo do resolver para um eixo. O
sinal de teste é uma saída analógica para um dos dois pontos de conexão de saída de
teste.

Os sinais de teste do robô mestre não podem ser alcançados.

Exemplo
TestSign 1, resolver_angle, Orbit, 2, 4, 0;

O ponto de conexão 1 do sinal de teste fornecerá o valor do resolver_angle


(ângulo do resolver) para o Eixo orbital 2, escalado 4 vezes o valor nominal e
amostrado na taxa máxima (indicada por 0).

Argumentos
TestSign Output SignalId MechUnit Axis Scale Stime
Output Tipo de dados: num

Esse argumento especifica em qual dos dois pontos de conexão de saída o sinal
de teste estará disponível. Os valores possíveis são 1 e 2.

SignalId Tipo de dados: testsignal

O Nome do sinal de teste a ser enviado para a saída.

MechUnit (Unidade mecânica) Tipo de dados: mecunit

Argumento que contém o nome da unidade mecânica da qual recuperar o sinal


de teste.

Axis Tipo de dados: num

Argumento que contém o número do eixo da unidade mecânica da qual recuperar


o sinal de teste.

Scale Tipo de dados: num

O fator de escala da saída. Os valores possíveis são 1, 2, 4, 8, 16 e assim por


diante.

Data Types do Sistema e Rotinas 2-MoveL-11


MoveL Instruções

Stime (Tempo de amostragem) Tipo de dados: num

Tempo de amostragem, em segundos. O sinal de saída é atualizado com um novo


valor a cada amostra. O valor igual a 1 atualiza a saída uma vez por segundo e
um valor igual a 0 faz a atualização com a maior freqüência possível. O valor 0,01
corresponde a uma amostragem de 100 vezes por segundo.

Execução do programa
A instrução TestSign espelha um sinal no sistema do robô para uma saída. O espelha-
mento de um sinal de teste especificado fica ativo até que uma nova instrução TestSign
seja executada para a saída. Uma partida a quente do sistema do robô remove os sinais
de teste ativados no momento.

Tratamento de erros
Se houver um erro no parâmetro MechUnit, o parâmetro do sistema ERRNO será defi-
nido como ERR_UNIT_PAR. Se houver um erro no parâmetro Axis, ERRNO será
definido como ERR_AXIS_PAR.

Sintaxe
TestSign
[ Output ‘:=‘ ] < expressão (IN) de num> ‘,’
[ SignalId ‘:=‘ ] < expressão (IN) de testsignal>
[ MechUnit ‘:=‘ ] < variável (VAR) de mecunit> ‘,’
[Axis ‘:=‘ ] < expressão (IN) de num> ‘,’
[ Scale ‘:=‘ ] < expressão (IN) de num > ‘,’
[ Stime ‘:=‘ ] < expressão (IN) de num> ‘;’

2-MoveL-12 Data Types do Sistema e Rotinas


Instruções TestSignReset

TestSignReset Redefinir todas as definições de sinais de teste


TestSignReset é utilizada para desativar todos os sinais de teste definidos
anteriormente.

Exemplo
TestSignReset;

Desativar todos os sinais de teste definidos anteriormente.

Execução do programa
As definições de todos os sinais de teste são desativadas e o sistema do robô interrompe
a amostragem de quaisquer sinais de teste.

A amostragem dos sinais de teste definidos permanece ativa até:

- Uma partida a quente do sistema


- A execução dessa instrução TestSignReset

Sintaxe
TestReset’;’

Informações relacionadas
Descrito em:
Definir sinal de teste Instruções - TestSignDefine
Ler sinal de teste Funções - TestSignRead

Manual de referência do RAPID 8-TestSignReset-13


TestSignReset Instruções

8-TestSignReset-14 Manual de referência do RAPID


Instruções TPErase

TPErase Apaga texto impresso na unidade de programação


TPErase (Teach Pendant Erase) é usado para limpar o display da unidade de pro-
gramação.

Exemplo
TPErase;
TPWrite "Execução iniciada";

O display da unidade de programação é apagado antes da Execução iniciada ser


escrita.

Execução do programa
Todo o texto do display da unidade de programação é apagado. Na próxima vez que o
texto for escrito, ele será colocado na linha mais alta do display.

Sintaxe
TPErase;

Informações relacionadas
Descrito em:
Escrevendo na unidade de programação Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-TPErase-15


TPErase Instruções

2-TPErase-16 Data Types do Sistema e Rotinas


Instruções TPReadFK

TPReadFK Lê teclas de função


TPReadFK (Teach Pendant Read Function Key) é usado para escrever um texto acima
das teclas de função e para descobrir qual tecla está pressionada.

Exemplo
TPReadFK reg1, "Mais ?", stEmpty, stEmpty, stEmpty, "Sim", "Não";

O texto Mais ? é escrito no display da unidadede programação e as teclas de


função 4 e 5 são ativadas por meio de textos Sim e Não respectivamente (veja
Figura 23). A execução do programa espera até que uma das teclas de função 4
ou 5 seja pressionada. Em outras palavras, reg1 será fixado em 4 ou 5 depend-
endo de qual das teclas for pressionada.

Mais?

Sim Não

Figura 23 O operador pode colocar a informação via as teclas de função.

Argumentos
TPReadFK Answer Text FK1 FK2 FK3 FK4 FK5 [\MaxTime]
[\DIBreak] [\BreakFlag]
Answer DataType: num

A variável para qual, dependendo de qual tecla for pressionada, o valor numérico
1..5 é retornado. Se a tecla de função 1 for pressionada, 1 é retornado, eassim por
diante.

Text DataType: string

O texto de informação a ser escrito no ecrã (um máximo de 80 caracteres).

FKx (Function key text) DataType: string

O texto a ser escrito como uma orientação para a apropriada tecla de função (um
máximo de 7 caractéres). FK1 é a tecla do canto esquerdo.

Teclas de função sem pontos são especificadas pela constante string predefinida
stEmpty com valor string vazio (““).

Data Types do Sistema e Rotinas 2-TPReadFK-17


TPReadFK Instruções

[\MaxTime] DataType: num

A máxima quantidade de tempo [s] que a execução do programa espera. Se uma


tecla de função não for pressionada, o programa executa o tratamento de erro a
menos que o BreakFlag seja usado (veja abaixo). Use a constante
ERR_TP_MAXTIME para testar se o tempo máximo foi transcorrido.

[\DIBreak] (Digital Input Break) DataType: signaldi

O sinal digital que pode interromper o diálogo do operador. Se nenhuma tecla de


função for pressionada quando o sinal for setado em 1 (ou já é 1), o programa con-
tinua a executar no tratamento de erro, a menos que seja usado o BreakFlag (veja
abaixo). A constante ERR_TP_DIBREAK pode ser usada para testar se isto ocor-
reu ou não.

[\BreakFlag] DataType: errnum

A variável que irá manter o código de erro se “maxtime” ou “dibreak” for usado.
Se esta variável opcional for omitida, o tratamento de erro será executado. As
constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas para
escolher a causa.

Execução do programa
O texto de informação sempre é escrito numa linha nova. Se o display está completo com
texto, o corpo do texto é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.

Textos-curtos são escritos acima das teclas de função apropriadas. Teclas sem textos-
curtos são desativadas.

A execução do programa espera até que uma das teclas de função ativadas sejam pres-
sionada.

Descrição de pedido TPReadFK ou TPReadNum coincidente na unidade de


programação (pedido TP) a partir da mesma ou de outra tarefa de programa:

• Novo pedido TP de outra tarefa de programa não será focalizado (novo colocado em
fila de espera)
• Novo pedido TP de TRAP na mesma tarefa de programa será focalizado (antigo
colocado em fila de espera)
• Parada de programa será focalizada (antiga colocado em fila de espera)
• Novo pedido TP em parada de programa será focalizado (antigo colocado em fila de
espera)

Exemplo
VAR errnum errvar;

2-TPReadFK-18 Data Types do Sistema e Rotinas


Instruções TPReadFK

...
TPReadFK reg1, "Vai para a posição de serviço?" stEmpty, stEmpty, stEmpty, "Sim",
"Não" \MaxTime:= 600
\DIBreak:= di5\BreakFlag:= errvar;
IF reg1 = 4 or OR errvar = ERR_TP_DIBREAK THEN
MoveL service, v500, fine, tool1;
Stop;
ENDIF
IF errvar = ERR_TP_MAXTIME EXIT;

O robô é movido para a posição de serviço se a quarta tecla de função ("Sim")


for pressionada, ou se a entrada 5 for ativada. Se nenhuma resposta for dada den-
tro de 10 minutos, a execuçào é terminada.

Dados predifinidos

CONST string stEmpty := ““

A constante predifinida stEmpty deverá ser usada para Teclas de Função sem pontos.
Usando stEmpty em vez de ““ guarda cerca de 80 bytes para cada Tecla de Função sem
pontos.

Sintaxe
TPReadFK
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[Text’:=’] <expressão (IN) do string>’,’
[FK1 ’:=’] <expressão (IN) do string>’,’
[FK2 ’:=’] <expressão (IN) do string>’,’
[FK3 ’:=’] <expressão (IN) do string>’,’
[FK4 ’:=’] <expressão (IN) do string>’,’
[FK5 ’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>]’;’

Informações relacionadas
Descritas em:
Escrevendo ou lendo Sumário RAPID - Comunicação
na unidade de programação
Respondendo via unidade de programação Produção rodando

Data Types do Sistema e Rotinas 2-TPReadFK-19


TPReadFK Instruções

2-TPReadFK-20 Data Types do Sistema e Rotinas


Instruções TPReadNum

TPReadNum Lê um número da unidade de programação


TPReadNum (Teach Pendant Read Numerical) é usado para ler um número da unidade
de programação.

Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;

O texto Quantas unidades devem ser produzidas? é escrito no display da unidade


de programação. A execução do programa espera até que um número seja infor-
mado pelo teclado numérico da unidade de programação. Aquele número é guar-
dado em reg1.

Argumentos
TPReadNum Answer String [\MaxTime] [\DIBreak]
[\BreakFlag]
Answer DataType: num

A variável para que o número que entra via unidade de programação seja retor-
nado.

String DataType: string

O texto de informação a ser escrito na unidade de programação (um máximo de


80 caractéres).

[\MaxTime] DataType: num

A quantidade máxima de tempo que a execução do programa espera. Se nenhum


número for colocado dentro deste tempo, o programa continua a executar no
tratamento de erro a menos que o BreakFlag seja usado (veja abaixo). A cons-
tante ERR_TP_MAXTIME pode ser usada para testar se o tempo máximo foi ou
não transcorrido.

[\DIBreak] (Digital Input Break) DataType: signaldi

O sinal digital que pode interromper o diálogo com o operador. Se nenhum


número for inserido quando o sinal é setado para 1 (ou já está em 1), o programa
continua a execução no tratamento de erro a menos que o BreakFlag seja usado
(veja abaixo). A constante ERR_TP_DIBREAK pode ser usada para testar se
isto ocorreu ou não.

[\BreakFlag] DataType: errnum

A variável que irá manter o código de erro se o “maxtime” ou “dibreak” for

Data Types do Sistema e Rotinas 2-TPReadNum-21


TPReadNum Instruções

usado. Se esta variável opcional for omitida, o tratamento de erro será executado.
As constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas
para selecionar a causa.

Execução do programa
O texto de informação é sempre escrito numa linha nova. Se o display está completo
com o corpo do texto, é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.

A execução do programa espera até que um número sejam escrito no teclado numérico
(seguido de Enter ou OK).

Referência a TPReadFK sobre a descrição do pedido TPReadFK ou TPReadNum


coincidente na unidade de programação a partir da mesma ou de outra tarefa de
programa.

Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
FOR i FROM 1 TO reg1 DO
produce_part;
ENDFOR

O texto Quantas unidades devem ser produzidas? é escrito no display da unidade


de programação. A rotina produce_part é então repetida o número de vezes que
foi informada via unidade de programação.

Sintaxe
TPReadNum
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[String’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>] ’;’

2-TPReadNum-22 Data Types do Sistema e Rotinas


Instruções TPReadNum

Informações relacionadas
Descrito em:
Escrevendo e lendo na Sumário RAPID - Comunicação
unidade de programação
Entrando com um número na unidade Produção rodando
de programação
Exemplos de como usar os argumentos Instruções - TPReadFK
MaxTime, DIBreak e BreakFlag

Data Types do Sistema e Rotinas 2-TPReadNum-23


TPReadNum Instruções

2-TPReadNum-24 Data Types do Sistema e Rotinas


Instruções TPShow

TPShowTrocar janela na unidade de programação


TPShow (Teach Pendant Show) é usado para selecionar a Janela da Unidade de
Programação no RAPID.

Exemplos
TPShow TP_PROGRAM;

A Janela de Produção ficará ativa se o sistema estiver no modo AUTO e a Janela


do Programa ficará ativa se o sistema estiver no modo MAN após a execução esta
instrução.

TPShow TP_LATEST;

A última janela da unidade de programação usada antes da janela da unidade de


programação atual ficará ativa após a execução desta instrução.

Argumentos
TPShow Window
Window Data type: tpnum

A janela a ser exibida:

TP_PROGRAM = Janela de Produção se em modo AUTO.


Janela do Programa se em modo MAN.

TP_LATEST = Última janela da unidade de programação


usada antes da janela atual

TP_SCREENVIEWER = Janela do visualizador de tela, se a opção


Visualizador de tela estiver ativa.

Dados predefinidos
CONST tpnum TP_PROGRAM := 1;
CONST tpnum TP_LATEST := 2;
CONST tpnum TP_SCREENVIEWER := 3;

Manual de Referência do RAPID 8-TPShow-1


TPShow Instruções

Execução do programa
A janela da unidade de programação selecionada ficará ativada.

Sintaxe
TPShow
[Window’:=’] <expression (IN) of tpnum> ‘;’

Informações relacionadas
Descrito em:
Comunicar usando a unidade Sumário RAPID - Comunicação
de programação
Número da janela da unidade de programação Tipos de dados - tpnum
-

8-TPShow-2 Manual de Referência do RAPID


Instruções TPWrite

TPWrite Escreve na unidade de programação


TPWrite (Teach Pendant Write) é usado para escrever um texto na unidade de pro-
gramação. Também pode ser escrito um valor de um certo dado.

Exemplos
TPWrite "Execução iniciou";

O texto Execução iniciada é escrito na unidade de programação.

TPWrite "Nº de peças produzidas="\Num:=reg1;

Se, por exemplo, a resposta para No. de peças produzidas=5, entra 5 em vez de
reg1 na unidade de programação.

Argumentos
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]
String DataType: string

O texto a ser escrito (um máximo de 80 caractéres).

[\Num] (Numeric) DataType: num

O dado cujo valor numérico deve ser escrito depois do texto.

[\Bool] (Boolean) DataType: bool

O dado cujo valor lógico deve ser escrito depois do texto.

[\Pos] (Position) DataType: pos

O dado cuja posição deve ser escrito depois do texto.

[\Orient] (Orientation) DataType: orient

O dado cuja orientação deve ser escrito depois do texto.

Execução do programa
Texto escrito na unidade de programação sempre começa numa nova linha. Quando o
display está completo com texto, este texto é movido uma linha para cima. Textos que
são maiores que a largura da unidade de programação (40 caractéres) são divididos em
duas linhas.

Data Types do Sistema e Rotinas 2-TPWrite-1


TPWrite Instruções

Se um dos argumentos \Num, \Bool, \Pos ou \Orient for usado, seu valor é primeira-
mente convertido em um texto antes que seja adicionado ao primeiro texto. A con-
versão de valor para texto ocorre como segue:

Argumento Valor Texto


\Num 23 "23"
\Num 1.141367 "1.14137"
\Bool TRUE "TRUE"
\Pos [1817.3,905.17,879.11] "[1817.3,905.17,879.11]"
\Orient [0.96593,0,0.25882,0] "[0.96593,0,0.25882,0]"

O valor é convertido em um “string” com formato RAPID padrão. Isso significa em


princípio 6 dígitos importantess. Se a parte decimal é menor que 0.000005 ou maior que
0.999995, o número é arredondado para um inteiro.

Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e portanto não
podem ser usados simultanemente na mesma instrução.

Sintaxe
TPWrite
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]’;’

Informações relacionadas
Descrito em:
Apagando e lendo Sumário RAPID - Comunicação
a unidade de programação

2-TPWrite-2 Data Types do Sistema e Rotinas


Instruções TriggC

TriggC Movimento circular do robô com eventos


TriggC (Trigg Circular) é usado para ligar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô se move em uma trajetória cir-
cular.

Um ou mais (máx. 4) eventos podem ser definidos usando a instruções TriggIO,


TriggEquip ou TriggInt e posteriormente estas definições que são referenciadas na
instrução TriggC.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveL p1, v500, z50, gun1;


TriggC p2, p3, v500, gunon, fine, gun1;

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

TriggC p2, p3, v500,gunon, fine, gun1;


Ponto inicial p1 Ponto final p3

Ponto de círculo p2

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 24 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggC [\Conc] CirPoint ToPoint Speed [ \T ]
Trigg_1 [ \T2 ] [ \T3 ] [ \T4] Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch

As instruções subsequentes são executadas imeditamente. Este argumento é


usado para diminuir o tempo de ciclo quando, por exemplo, comunicar com equi-
pamento externo e quando não é necessária sincronização. Também pode ser
usado para ajustar a execução da trajetória do robô, para evitar avisos no trajeto
de escanteio 50024, ou falhas do limite de Desaceleração 40082.

Quando usar o argumento \Conc, o número de instruções de movimento em


sucessão a limitado a 5. Numa secção de programa que inclua StorePath.Resto-

Data Types do Sistema e Rotinas 2-TriggC-3


TriggC Instruções

Path, não são permitidas instruções de movimento com o argumento \Conc.

Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado a zona programada.

CirPoint DataType: robtarget

O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

2-TriggC-4 Data Types do Sistema e Rotinas


Instruções TriggC

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio criada.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução está relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo ao objeto de trabalho a ser realizado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.

As atividades de gatilho definidas são realizadas, tão logo as condições de gatilho


forem satisfeitas, quando o robô estiver posicionado cada vez mais perto do ponto
final,. As condições de gatilho são satisfeitas a uma certa distância antes do ponto final
da instrução, ou a uma certa distância depois do ponto inicial da instrução, ou em um
certo ponto no tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggC p1, p2, v500, trigg1, fine, gun1;
TriggC p3, p4, v500, trigg1, fine, gun1;

Data Types do Sistema e Rotinas 2-TriggC-5


TriggC Instruções

...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está numa


posição 0.1 s antes do ponto p2 ou p4 respectivamente.

Limitações
Se o ponto de partida atual se desviar do normal, de modo a que o comprimento total
de posicionamento da instrução TriggC seja menor do que o usual, pode acontecer que
algumas ou todas as condições trigger sejam cumpridas imediatamente e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa no programa do usuário não pode estar baseada
numa sequência normal de atividades de gatilho para um “movimento incompleto”.

A instrução TriggC nunca deve ser reiniciada após o ponto de círculo já ter passado.
Caso contrário o robô não fará a trajetória programada (posicionamento em torno de
uma trajetória circular executará em outra direção quando comparada com aquela pro-
gramada).

Sintaxe
TriggC
[’\’ Conc ’,’]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

2-TriggC-6 Data Types do Sistema e Rotinas


Instruções TriggC

Informações relacionadas
Descrito em:
Movimento linear com gatilhos Instruções - TriggL
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip,
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento circular Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento

Data Types do Sistema e Rotinas 2-TriggC-7


TriggC Instruções

2-TriggC-8 Data Types do Sistema e Rotinas


Instruções TriggEquip

TriggEquip Define uma posição-tempo fixo por


um evento de E/S
TriggEquip (Trigg Equipment) é usada para definir condições e ações para setar um
sinal digital, um grupo de sinais digital, ou um sinal de saída analógica numa posição
fixada ao longo da trajetória de movimento do robô com a possibilidade de fazer com-
pensar tempo no atraso do equipamento externo.

O dado definido é usado para implementar em uma ou mais instruções subsequentes


TriggL, TriggC ou TriggJ.

Exemplos
VAR triggdata gunon;

TriggEquip gunon, 10, 0.1 \DOp:=gun, 1;

TriggL p1, v500, gunon, z50, gun1;

A ferramenta gun1 abre no ponto p2, quando o TCP está 10 mm antes do ponto
p1. Para alcançar isto, o sinal de saída digital gun é setado para o valor 1, quando
o TCP está 0.1 s antes do ponto p2. A pinça está completamente aberta quando
o TCP alcança o ponto p2.

Ponto inicial TriggL p1, v500, gunon, z50, gun1; Ponto final p1

10 mm

Ponto p2 para abertura da pinça

Figura 25 Exemplo de uma posição-tempo fixada por um evento de E/S.

Argumentos
TriggEquip TriggData Distance [ \Start ] EquipLag
[ \DOp ] | [ \GOp ] | [\AOp ] SetValue [ \Inhib ]
TriggData Data type: triggdata

Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
usados nas instruções subsequentes TriggL, TriggC or TriggJ.

Distance Data type: num

Define a posição na trajetória onde o evento de equipamento E/S pode ocorrer.

Manual de Referência do RAPID 8-TriggEquip-1


TriggEquip Instruções

Especificado a distância em mm (valor positivo) do ponto final da trajetória do


movimento (aplicável se o argumento \ Start não está setado).

Para maiores detalhes, veja a seção entitulada Execução do Programa.

[ \Start ] Data type: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

EquipLag (Equipment Lag) Data type: num

Especifique o atraso para o equipamento externo em s.

Para compensação do atraso do equipamento externo, use valores de argumentos


positivos . Valores de argumentos positivos significam que o sinal de E/S é setado
pelo sistema do robô num tempo específico antes de o TCP físico alcançar a dis-
tância específica em relação ao ínicio do movimento ou ao ponto final.

Valores de argumentos negativos significam que o sinal de E/S é setado pelo sis-
tema do robô num tempo específico após o TCP físico ter passado a distância
específica em relação ao ínicio do movimento ou ao ponto final.

Ponto inicial Ponto final

Distância Distância
\Start

+ - + -

EquipLag

Figura 26 Uso do argumento EquipLag.

[ \DOp ] (Digital OutPut) Data type: signaldo

O nome do sinal, quando o sinal de saída digital pode ser mudado.

[ \GOp ] (Group OutPut) Data type: signalgo

O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.

[ \AOp ] (Analog Output) Data type: signalao

O nome do sinal, quando um sinal de saída analógico pode ser mudado.

SetValue Data type: num

Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).

8-TriggEquip-2 Manual de Referência do RAPID


Instruções TriggEquip

[ \Inhib ] (Inhibit) Data type: bool

O nome de uma flag variável persistente para impedir o setting do sinal em


tempo de execução.

Se este argumento opcional é usado e o valor atual da flag específica for TRUE
na posição-tempo para definição do sinal então o sinal específicado (DOp, GOp
or AOp) é setado para 0 invés do valor específicado.

Execução do programa
Quando rodando a instrução TriggEquip, a condição de gatilho é guardada numa var-
iável especificada para o argumento TriggData.

Quando uma das instruções TriggL, TriggC ou TriggJ é executada, o seguinte aplicado,
em relação às definições em TriggEquip:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân-
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0, o sinal de saída é


setado quando o TCP do robô está aqui

Figura 27 Posição-tempo fixado de E/S num trajeto de canto.

A interrupção de posição-tempo relacionada será gerada quando o ponto inicial (ponto


final) já passou, se a distância especificada do ponto final (ponto inicial) não está den-
tro do comprimento do movimento da atual instrução (Trigg...). Com o uso do argu-
mento EquipLag com tempo negativo (atraso), o sinal E/S pode ser setado após o ponto
final.

Exemplos
VAR triggdata glueflow;

TriggEquip glueflow, 1 \Start, 0.05 \AOp:=glue, 5.3;

MoveJ p1, v1000, z50, tool1;

Manual de Referência do RAPID 8-TriggEquip-3


TriggEquip Instruções

TriggL p2, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1 com compensação para
o atraso do equipamento de
0.05 s.

...
TriggL p3, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.

Limitações
Eventos de E/S à distância (com o argumento \Time) se destinam a pontos flutuantes
(trajeto de canto). Eventos de E/S à distância usando pontos de parada resultam em
menor precisão do que a especificada abaixo.

Relativamente a precisão para eventos de E/S à distância e usando pontos flutuantes, se


aplica o seguinte, quando se ajusta uma saída digital a uma distância especificada a
partir do ponto inicial ou do ponto final na instrução TriggL ou TriggC:

- A precisão especificada abaixo é válida para o parâmetro positivo EquipLag <


60 ms, equivalente ao intervalo de tempo no servo do robô (sem alterar o
parâmetro do sistema Event Preset Time).
- A precisão especificada abaixo é válida para o parâmetro positivo EquipLag <
configurado Event Preset Time (parâmetro do sistema).
- A precisão especificada abaixonão é válida para o parâmetro positivo EquipLag
> configurado Event Preset Time (parâmetro do sistema).Neste caso, se usa um
método aproximado no qual as limitações dinâmicas do robô não são
consideradas. SingArea \Wrist deve ser usado de modo a se atingir uma precisão
aceitável.
- A precisão especificada abaixo é válida para o parâmetro negativo EquipLag.

Eventos de E/S com ajuste de tempo (com o argumento \Time) se destina a pontos de
parada. Eventos de E/S com ajuste de tempo usando pontos flutuantes resulta em menor
precisão do que a especificada abaixo.
Eventos de E/S com ajuste de tempo somente podem ser especificados a partir do ponto
final do movimento. Esse tempo não pode exceder o tempo atual de frenagem do robô,
que é, no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500 mm/s
para o IRB2400 de 150 ms e de 250 ms para o IRB6400). Se o t empo especificado for
superior ao tempo atual de frenagem, o evento será gerado de qualquer modo, mas não
antes de ser iniciada a frenagem (mais tarde do que especificado). Entretanto, todo o
tempo do movimento para o movimento atual pode ser utilizado durante movimentos
pequenos e rápidos.

Valores típicos absolutos de precisão para conjunto de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjunto de saídas digitais +/- 2 ms.

8-TriggEquip-4 Manual de Referência do RAPID


Instruções TriggEquip

Sintaxe
TriggEquip
[ TriggData ’:=’ ] < variável (VAR) de triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) de num>
[ ’\’ Start ] ‘,’
[ EquipLag ’:=’ ] < expressão (IN) de num>
[ ’\’ DOp ’:=’ < variável (VAR) de signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) de signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) de signalao> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) de num>
[ ’\’ Inhibit ’:=’ < persistente (PERS) de bool> ] ‘,’

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição de outros triggs Instruções - TriggIO, TriggInt
Mais exemplos Data Types - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO
Configuração do tempo pré-definido Parâmetros do sistema - Robô
do evento

Manual de Referência do RAPID 8-TriggEquip-5


TriggEquip Instruções

8-TriggEquip-6 Manual de Referência do RAPID


Instruções TriggInt

TriggInt Define uma posição relacionada à interrupção


TriggInt é usado para definir condições e ações para a execução de uma rotina de inter-
rupção de uma posição no movimento de trajetória do robô.

O dado definido é usado para implementar em uma ou mais instruções TriggL, TriggC
ou TriggJ.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 5, intno1;
...
TriggL p1, v500, trigg1, z50, gun1;
TriggL p2, v500, trigg1, z50, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 é executada quando o TCP está numa


posição de 5 mm antes do ponto p1 ou p2 respectivamente.

Ponto inicial TriggL p1, v500, trigg1, fine, gun1; Ponto final p1 ou p2

5 mm

A interrupção é gerada
quando o ponto está aqui

Figura 28 Exemplo posição de interrupção relacionada.

Argumentos
TriggInt TriggData Distance [ \Start ] | [ \Time ]
Interrupt
TriggData DataType: triggdata

Variável para guardar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções TriggL, TriggC ou TriggJ subsequentes.

Distance DataType: num

Define a posição na trajetória onde a interrupção deve ser gerada.

Data Types do Sistema e Rotinas 2-TriggInt-1


TriggInt Instruções

Especifica a distância em mm (valores positivos) do ponto final da trajetória do


movimento (aplicável se o argumento \ Start ou \Time não está ligado).

Veja a seção entitulada Execução do programa para maiores detalhes.

[ \Start ] DataType: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

[ \Time ] DataType: switch

Usado quando o valor especificado para o argumento Distance é na verdade


tempo em segundos (valor positivo) ao invés de distância.

Interrupções de posições relacionadas no tempo somente podem ser usadas por


pouco tempo (< 1 s) antes que o robô alcance o ponto final da instrução. Veja a
seção entitulada Limitações para maiores detalhes.

Interrupt DataType: intnum

Variável usada para identificar uma interrupção.

Execução do programa
Quando rodando a instrução TriggInt, dado é guardado numa variável especificada para
o argumento TriggData e a interrupção que é especificada na variável para o argumento
Interrupt é ativada.

Depois, quando uma das instruções TriggL, TriggC ou TriggJ for executada, com
relação as definições em TriggInt, é aplicado o seguinte:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0,a interrução será


gerada quando o TCP do robô está aqui

Figura 29 Interrupção de posição relacionada num trajeto de canto.

2-TriggInt-2 Data Types do Sistema e Rotinas


Instruções TriggInt

A interrupção de posição relacionada será gerada quando o ponto inicial (ponto final)
já passou, se a distância especificada do ponto final (ponto inicial) não está dentro do
comprimento do movimento da atual instrução (Trigg...).

Exemplos
Este exemplo descreve programação de instruções que interagem para gerar inter-
rupções à interrupção relacionada:

VAR intnum intno2;


VAR triggdata trigg2;

- Declaração das variáveis intno2 e trigg2 (não pode ser iniciado).

CONNECT intno2 WITH trap2;

- Destinação dos números de interrupção que são guardados na variável intno2


- O número de interrução é dobrado para a rotina de interrupção trap2

TriggInt trigg2, 0, intno2;

- O número de interrução na variável intno2 é marcado quando usado


- A interrupção é ativada
- Condições de gatilhos definidas e número de interrupção são guardados na va-
riável trigg2

TriggL p1, v500, trigg2, z50, gun1;

- O robô se move para o ponto p1.


- Quando o TCP atinge o ponto p1 é gerada um interrupção e a rotina de inter-
rupção trap2 é executada.

TriggL p2, v500, trigg2, z50, gun1;

- O robô se move para o ponto p2


- Quando o TCP atinge o ponto p2 é gerada um interrupção e a rotina de inter-
rupção trap2 é executada mais uma vez.

IDelete intno2;

- O número de interrupção na variável intno2 é deletada.

Limitações
Os passos de interrupção à distância (sem o argumento \Time) se destinam a pontos flu-
tuantes (trajeto de canto). Os passos de interrupção à distância, usando pontos de
parada, resultam em menor precisão do que a especificada abaixo.

Data Types do Sistema e Rotinas 2-TriggInt-3


TriggInt Instruções

Os passos de interrupção em tempo útil (com o argumento \Time) se destinam a pontos


de parada. Estes passos, usando pontos flutuantes, resultam em menor precisão do que
a especificada abaixo.

Os passos de E/S em tempo útil somente podem ser especificados a partir do ponto final
do movimento. Este tempo não pode exceder o atual tempo de parada do robô, que é,
no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500mm/s, para o
IRB 4400 150 ms e 250 ms para o IRB6400). Se o tempo especificado for maior que o
tempo atual de parada, a interrupção será gerada de qualquer modo, mas não antes que
a parada seja iniciada (depois do especificado). Entretanto, o tempo completo do mov-
imento para o atual movimento pode ser utilizado durante movimentos lentos ou rápi-
dos.

Valores típicos absolutos de precisão para geração de interrupções +/- 5 ms.


Valores típicos repetidos de precisão para geração de interrupções +/- 2 ms.

Geralmente, há um atraso de 5 a 120 ms entre a geração da interrupção e a resposta,


dependendo do tipo de movimento que está sendo executado no momento da
interrupção.
Veja Características Básicas RAPID - Interrupções).

Para obter a melhor precisão quando ligando a saída em uma posição fixa ao longo da
trajetória do robô, você deve usar as instruções TriggIO ou TriggEquip em preferência
às instruções TriggInt com SetDO/SetGO/SetAO em uma rotina de interrupção.

Sintaxe
TriggInt
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ] ’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum> ’;’

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição da posição fixa E/S Instruções - TriggIO
Mais exemplos DataTypes - triggdata
Interrupções Características Básicas - Interrupções

2-TriggInt-4 Data Types do Sistema e Rotinas


Instruções TriggIO

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


TriggIO é usado para definir as condições e as acções para ajustar um digital, um grupo
de digitais, ou um sinal de saída analógico numa posição fixa na trajetória do movi-
mento do robô.

Para obter uma posição fixa no passo de E/S, TriggIO compensa o tempo de espera no
sistema de controle (tempo de espera entre o robô e o servo) mas não um tempo de
espera qualquer no equipamento externo. Para compensar os dois tempos de espera uti-
lize TriggEquip.

O dado definido é usado para implementar em uma ou mais instruções subsequentes


TriggL, TriggC ou TriggJ.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 10 \DOp:=gun, 1;

TriggL p1, v500, gunon, z50, gun1;

O sinal de saída digital gun é ajustado para o valor 1 quando o TPC está 10 mm
antes do ponto p1.

Ponto inicial TriggL p1, v500, gunon, fine, gun1; Ponto final p1

10 mm

O sinal de saída gun é ligado


quando o ponto está aqui

Figura 30 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggIO TriggData Distance [ \Start ] | [ \Time ]
[ \DOp ] | [ \GOp ] | [\AOp ] | [\ProcID ] SetValue
[ \DODelay ]
TriggData DataType: triggdata

Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções subsequentes TriggL, TriggC ou TriggJ.

Manual de Referência do RAPID 8-TriggIO-1


TriggIO Instruções

Distance DataType: num

Define a posição na trajetória onde o evento E/S pode ocorrer.

Especificado a distância em mm (valores positivos) do ponto final da trajetória


do movimento (aplicável se o argumento \ Start ou \Time não está setado).

Para maiores detalhes, veja a seção entitulada Execução do Programa.

[ \Start ] DataType: switch

Usado quando a distância para o argumento Distance inicia o movimento pelo


ponto de partida ao invés do ponto final.

[ \Time ] DataType: switch

Usado quando o valor especificado para o argumento Distance é na verdade


tempo em segundos (valor positivo) ao invés de distância.

Posição fixada para tempo somente podem ser usadas por pouco tempo (< 0.5 s)
antes que o robô alcance o ponto final da instrução. Para maiores detalhes, veja a
seção entitulada Limitações.

[ \DOp ] (Digital OutPut) DataType: signaldo

O nome do sinal, quando o sinal de saída digital pode ser mudado.

[ \GOp ] (Group OutPut) DataType: signalgo

O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.

[ \AOp ] (Analog Output) DataType: signalao

O nome do sinal, quando um sinal de saída analógico pode ser mudado.

[ \ProcID] (Process Identity) Data type: num

Não implementado para uso do cliente.

(A identidade do processo IPM para receber o evento. O seletor está especificado


no argumento SetValue.)

SetValue DataType: num

Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).

[ \DODelay] (Digital Output Delay) DataType: num

Tempo de atraso em segundos (valor positivo) para um sinal de saída digital ou


grupo de sinais de saída digital.

Somente usado para atrasar os sinais de saída digital, depois que o robô alcançou
a posição especificada. Não haverá atraso se o argumento for omitido.

O atraso não é sincronizado com o movimento.

8-TriggIO-2 Manual de Referência do RAPID


Instruções TriggIO

Execução do programa
Quando rodando a instrução TriggIO, a condição de gatilho é guardada numa variável
especificada para o argumento TriggData.

Quando uma das instruções TriggL, TriggC ou TriggJ é executada, em relação as defin-
ições em TriggIO, o seguinte é aplicado:

A distância especificada no argumento Distance:


Movimento linear A distância em linha reta
Movimento circular O comprimento do arco do círculo
Movimento não-linear O comprimento aproximado do arco ao longo da
trajetória (para obter a precisão adequada, a distân
cia não deve exceder a metade do comprimento do
arco).

Ponto final com


trajeto de canto

Se a Distance é 0, o sinal de saída é


ligado quando o ponto de trabalho do robô está aqui

Figura 31 Posição fixado de E/S num trajeto de canto.

A posição fixa E/S será produzida quando o ponto de partida (ponto final) correr, se a
distância especificada do ponto final (ponto de partida) não estiver incluída no compri-
mento do movimento da instrução atual (Trigg...).

Exemplos
VAR triggdata glueflow;

TriggIO glueflow, 1 \Start \AOp:=glue, 5.3;

MoveJ p1, v1000, z50, tool1;


TriggL p2, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1.

...
TriggL p3, v500, glueflow, z50, tool1;

O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.

Manual de Referência do RAPID 8-TriggIO-3


TriggIO Instruções

Limitações
Os passos E/S à distância (sem o argumento \Time) se destinam a pontos flutuantes (tra-
jeto de canto). Os passos E/S à distância, usando pontos de parada, resultam em uma
precisão menor que a especificada abaixo.

Os passos E/S em tempo útil (com o argumento \Time) se destinam a pontos de parada.
Os passos E/S em tempo útil, usando pontos flutuantes, resultam em uma precisão
menor que a especificada abaixo. Estes passos só podem ser especificados a partir do
ponto final do movimento. Este tempo não pode exceder o tempo de frenagem atual do
robô que, é no máximo, aproximadamente de 0,5 s (valores típicos à velocidade de 500
mm/s para o IRB2400 150 ms e de 250 ms para o IRB6400). Se o tempo especificado
for superior ao tempo de frenagem atual, o passo será de qualquer forma produzido,
mas só depois da frenagem ser inicializada (mais tarde do que está especificado). No
entanto, todo o tempo de movimento relativo ao movimento atual pode ser usado
durante movimentos pequenos e rápidos.

Valores típicos absolutos de precisão para conjuntos de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjuntos de saídas digitais +/- 2 ms.

Sintaxe
TriggIO
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ]
[ ’\’ DOp ’:=’ < variável (VAR) do signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) do signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) do signalao> ] ‘,’
| [ ’\’ ProcID ’:=’ < expressão (IN) do num> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) do num>
[ ’\’ DODelay ’:=’ < expressão (IN) do num> ]

Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição do tempo-posição passo E/S Instrução - TriggEquip
Definição de interrupções
de posição relacionada Instruções - TriggInt
Mais exemplos Tipos de dados - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO

8-TriggIO-4 Manual de Referência do RAPID


Instruções TriggL

TriggL Movimentos lineares do robô com eventos


TriggL (Trigg Linear) é usado para ligar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô faz um movimento linear.

Um ou mais passos (4 no máximo) podem ser definidos usando as instruções TriggIO,


TriggEquip ou TriggInt e, em seguida, estas definições encontram-se referidas na
instrução TriggL.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveJ p1, v500, z50, gun1;


TriggL p2, v500, gunon, fine, gun1;

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

Ponto inicial p1 TriggL p2, v500, gunon, fine, gun1; Ponto final p2

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 32 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggL [\Conc] ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch

As instruções lógicas subsequentes são executadas imediatamente. Este argu-


mento é usado para diminuir o tempo de ciclo quando, por exemplo, comunicar
com o equipamento externo se a sincronização não for requerida. Também pode
ser usado para ajustar a execução da trajetória do robô, para evitar avisos do tra-
jeto de escanteio 50024, ou falhas de limite de Desaceleração 40082.

Quando usar o argumento \Conc, o número de instruções de movimento em


sucessão tem um limite de 5. Numa secção de programa que inclua StorePath-
RestoPath, não são permitidas instruções de movimento com o argumento \Conc.

Data Types do Sistema e Rotinas 2-TriggL-5


TriggL Instruções

Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado o ponto de parada espe-
cificado ou 100 ms antes da zona especificada.

ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade define


a velocidade do TCP, a reorientação da ferramenta e eixos externos.

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO, TriggEquip ou Trig-
gInt.

Zone DataType: zonedata

Dados de zona para o movimento. Os dados de zona descrevem a dimensão do


trajeto de escanteio produzida.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

2-TriggL-6 Data Types do Sistema e Rotinas


Instruções TriggL

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução está relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.

[ \Corr] (Correction) Data type: switch

Dados de correção escritos em uma entrada de correções pela instrução


CorrWrite serão acrescentados no trajeto e na posição de destino, se este
argumento estiver presente.

Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.

Tão logo as atividades de gatilho definidas são realizadas, as condições de gatilho são
satisfeitas quando o robô é posicionado cada vez mais perto do ponto final, . As con-
dições de gatilho são satisfeitas a uma certa distância antes do ponto final da instrução,
ou a uma certa distância depois do ponto inicial da instrução, ou em um certo ponto no
tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggL p1, v500, trigg1, fine, gun1;
TriggL p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está


numa posição 0.1 s antes do ponto p1 ou p2 respectivamente.

Data Types do Sistema e Rotinas 2-TriggL-7


TriggL Instruções

Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".

Sintaxe
TriggL
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’

Informações relacionadas
Descrito em:
Movimento circular com gatilhos Instruções - TriggC
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento linear Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento

2-TriggL-8 Data Types do Sistema e Rotinas


Instruções TriggJ

TriggJ Movimentos dos eixos do robô com eventos


TriggJ (Trigg Joint) é usado para ajustar sinais de saída e/ou rodar rotinas de inter-
rupção em posições fixas, ao mesmo tempo que o robô se move rapidamente de um
ponto ao outro quando este movimento não for em linha reta.

Um ou mais (máx. 4) eventos podem ser definidos usando a instruções TriggIO,


TriggEquip ou TriggInt e posteriormente destas definições que são referenciadas na
instrução TriggJ.

Exemplos
VAR triggdata gunon;

TriggIO gunon, 0 \Start \DOp:=gun, on;

MoveL p1, v500, z50, gun1;


TriggJ p2, v500, gunon, fine, gun1;

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

TriggJ p2, v500,gunon, fine, gun1; Ponto final p2


Ponto inicial p1

O sinal de saída gun é colocado em on


quando o TCP do robô está aqui

Figura 33 Exemplo de uma posição fixada por um evento de E/S.

Argumentos
TriggJ ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ]
ToPoint DataType: robtarget

O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).

Speed DataType: speeddata

O dado de velocidade que se aplica aos movimentos. O dado de velocidade


define a velocidade do TCP, a reorientação da ferramenta e eixos externos.

Data Types do Sistema e Rotinas 2-TriggJ-9


TriggJ Instruções

[ \T ] (Time) DataType: num

Este argumento é usado para especificar o tempo total em segundos durante o


qual o robô se move. Ele é então substituído pelo correspondente dado de veloci-
dade.

Trigg_1 DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T2] (Trigg 2) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T3 ] (Trigg 3) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

[ \T4 ] (Trigg 4) DataType: triggdata

Variável que se refere a condições de gatilho e atividades de gatilho, definida


anteriormente no programa usando as instruções TriggIO ou TriggInt.

Zone DataType: zonedata

O dado de zona para o movimento. Dado de zona descreve o quão próximo ao


ponto de destino os eixos devem estar antes que a próxima instrução possa ser
executada.

Tool DataType: tooldata

A ferramenta em uso quando o robô se move. O ponto central de ferramenta é o


ponto que é movido para o ponto de destino especificado.

[ \WObj] (Work Object) DataType: wobjdata

O objeto de trabalho (sistema de coordenada) em que a posição do robô na


instrução é relacionada.

Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.

2-TriggJ-10 Data Types do Sistema e Rotinas


Instruções TriggJ

Execução do programa
Veja a instrução MoveJ para informação sobre movimento eixo-a-eixo.

Tão logo as atividades de gatilho definidas são realizadas, as condições de gatilho


forem satisfeitas quando o robô estiver posicionado cada vez mais perto do ponto final,
. As condições de gatilho são satisfeitas a uma certa distância antes do ponto final da
instrução, ou a uma certa distância depois do ponto inicial da instrução, ou em um certo
ponto no tempo (limitado a um curto tempo) antes do ponto final da instrução.

Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, nen-
huma atividade de gatilho é realizada.

Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggJ p1, v500, trigg1, fine, gun1;
TriggJ p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

A rotina de interrupção trap1 roda quando o ponto de trabalho está


numa posição 0.1 s antes do ponto p1 ou p2 respectivamente.

Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".

Data Types do Sistema e Rotinas 2-TriggJ-11


TriggJ Instruções

Sintaxe
TriggJ
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’

Informações relacionadas
Descritas em:
Movimento linear com gatilhos Instruções - TriggL
Movimento circular com gatilhos Instruções - TriggC
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Movimento eixo-a-eixo Princípios de Movimentação -
Posicionamento na execução do
programa
Definição de velocidade Tipos de Dados - speeddata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objetos de trabalho Tipos de Dados - wobjdata
Movimentação em geral Princípios de Movimentação

2-TriggJ-12 Data Types do Sistema e Rotinas


Instruções TRYNEXT

TRYNEXT Pula uma instrução que causou um erro


TRYNEXT é usada para saltar uma instrução que causou um erro. Ou seja, a próxima
instrução é executada.

Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg2:=0;
TRYNEXT;
ENDIF

Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o tratamento de erro, onde reg2 é colocado em 0. A
instrução TRYNEXT é então usada para continuar com a próxima instrução.

Execução do programa
Execução do programa continua com a instrução subsequente a instrução que causou
o erro.

Limitações
A instrução somente pode existir numa rotina do tratamento de erro.

Sintaxe
TRYNEXT’;’

Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de erros

Data Types do Sistema e Rotinas 2-TRYNEXT-1


TRYNEXT Instruções

2-TRYNEXT-2 Data Types do Sistema e Rotinas


Instruções TuneReset

TuneReset Desliga o ajuste de servo


TuneReset é usada para desligar o ajuste de servo de todos os eixos do robô e unidades
mecânicas, retornando para seus valores normais.

Exemplo
TuneReset;

Desliga valores de servo de todos eixos, retornando para 100%.

Execução do programa
Os valores de servo de todos os eixos são desligados, retornando para 100%.

Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset

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

Sintaxe
TuneReset ’;’

Informações relacionadas
Descrito em:
Ajuste de Servo Instruções - TuneServo

Data Types do Sistema e Rotinas 2-TuneReset-3


TuneReset Instruções

2-TuneReset-4 Data Types do Sistema e Rotinas


Instruções TuneServo

TuneServo Ajuste de Servo


O TuneServo é usado para ajustar o comportamento dinâmico de eixos separados no
robô. Não é necessário usar TuneServo em circunstâncias normais, mas por vezes a
regulagem pode ser otimizada dependendo da configuração do robô e das característi-
cas de carregamento. Para os eixos externos, o TuneServo pode ser usado para
adaptação de carregamento.

O uso incorreto do TuneServo pode causar movimentos oscilantes ou torques que


podem danificar o robô. Você deve ter atenção a isto e ter muito cuidado quando
usar o TuneServo.

Evite utilizar os comandos TuneServo no momento em que o robô estiver em


movimento. Isso pode resultar em sobrecargas momentâneas da CPU, causando
paradas e indicação de erro.

Nota. Para se obter uma regulagem mais favorável, é essencial que sejam
utilizados os dados corretos do carregamento. Verifique isso antes de utilizar o
TuneServo.

Geralmente, os valores de regulagem mais favoráveis freqüentemente diferem entre os


diferentes robôs. A regulagem mais favorável pode, também, alterar com o tempo.

Melhorando a precisão do trajeto

Para a movimentação dos robôs em baixas velocidades, o TuneServo pode ser utilizado
para melhorar a precisão do trajeto através:

- Regulagem tune_kv e tune_ti (veja a descrição abaixo dos tipos de regulagem).


- Regulagem dos parâmetros de compensação da fricção (veja abaixo).

Esses dois métodos podem ser combinados.

Outras possibilidades para melhorar a precisão do trajeto:

- Diminuição da resolução do trajeto pode melhorar o trajeto. Nota: um valor


demasiadamente baixo da resolução do trajeto, causará problemas de
carregamento da CPU.
- A precisão de linhas retas pode ser melhorada, diminuindo a aceleração
utilizando AccSet. Exemplo: AccSet 20, 10.

Data Types do Sistema e Rotinas 2-TuneServo-5


TuneServo Instruções

Descrição

Tune_df

Tune_df é usado para reduzir as vibrações ou as oscilações na trajetória.

Existe sempre um valor adequado que pode variar dependendo da posição e compri-
mento de movimento. Este valor adequado pode ser encontrado por troca de ajuste de
servo em pequenos intervalos (1 - 2%) nos eixos que estão envolvidos neste comporta-
mento indesejado. Normalmente o ajuste adequado será encontrado entre 70% - 130%.
Valores mais baixos ou mais altos tem um efeito negativo e prejudicarão os movimen-
tos consideravelmente.

Quando o valor de ajuste do ponto inicial de um movimento difere consideravelmente


do valor de ajuste do ponto final, pode ser vantajoso em alguns casos usar um ponto
intermediário com uma zona para definir onde o valor de ajuste será trocado.

A seguir, alguns exemplos para o uso do TuneServo para ajustar o servo:

IRB6400, na aplicação de prensas (carga extendida e flexível), eixos 4 - 6: Reduz o


valor de ajuste de servo para os eixos do punho até o movimento aceitável. A alteração
no movimento não será notada até o valor adequado ser atingido. Um valor baixo pre-
judicará o movimento consideravelmente. Valor de ajuste típico é 25%.

IRB 6400, partes superiores da área de trabalho. O eixo 1 pode muitas vezes ser otimi-
zado com um valor de regulagem de 85% - 95%.

IRB 6400, movimento curto (<80 mm). O eixo 1 pode muitas vezes ser otimizado com
um valor de regulagem de 94% - 98%.

IRB 2400, com movimento de tração. Em alguns casos os eixos 2 - 3 podem ser otimi-
zados com um valor de regulagem de 110% - 130%. O movimento na trajetória pode
exigir um valor de regulagem diferente em comparação com o movimento nos ângulos
rectos da trajetória.

Trancos e oscilações podem ser reduzidos pelo decréscimo da aceleração ou pela rampa
de aceleração (AccSet), a qual irá, entretanto, aumentar o tempo do ciclo. Este é um
método alternativo para usar o TuneServo.

Tune_kp, tune_kv, tune_ti external axes

Este tipo de regulagem afeta o avanço da posição de controle (kp), o avanço da veloci-
dade de controle (kv) e o tempo de integração da velocidade de controle (ti) dos eixos
externos. São usados para adaptar os eixos externos a carregamentos de inércias difer-
entes. A regulagem base dos eixos externos pode igualmente ser simplificada usando
este tipo de regulagem.

2-TuneServo-6 Data Types do Sistema e Rotinas


Instruções TuneServo

Tune_kp, tune_kv, tune_ti robot axes

Para os eixos do robô, este tipo de regulagem têm outra importância e pode ser usada
para reduzir erros de trajetória numa velocidade reduzida (<500 mm/s).

Valores recomendados : tune_kv 100 - 180%, tune_ti 50 - 100%. Tune_kp não devem
ser usados para os eixos do robô. Os valores de tune_kv / tune_ti muito altos ou muito
baixos causam vibrações e oscilações. Nunca utilize este tipo de regulagem a uma
velocidade elevada ou quando a precisão de trajetória exigida estiver cumprida.

Ativando a regulagem tipo TUNE_DF com o valor de regulagem 90% no eixo 2 na


unidade mecânica IRB.

Compensação da fricção: tune_fric_lev and tune_fric_ramp

Esses tipos de regulagem podem ser utilizados para reduzir os erros do trajeto do robô
causados pela fricção e folga em velocidades baixas (10 - 200 mm/s). Esses erros de
trajeto aparecem quando um eixo do robô muda a direção do movimento. Ative a
compensação da fricção para um eixo, ajustando o parâmetro do sistema Friction ffw on
para TRUE (tópico: Robô, tipo: Parâmetros de controle).

O modelo de fricção é um nível constante com sinal oposto ao da direção da velocidade


do eixo. Friction ffw level (Nm) é o nível de fricção absoluta em velocidades (baixas)
e é maior do que Friction ffw ramp (rad/s) (veja figura).

fricção do motor em baixa velocidade (Nm)

Friction ffw level (Nm)

Friction ffw ramp (rad/s)

Velocidade do eixo do motor (rad/s)

Figure 34 Modelo de fricção

Tune_fric_lev sobrepõe-se ao valor do parâmetro do sistema Friction ffw level.

regulagemA regulagem Friction ffw level (utilizando tune_fric_lev) para cada eixo do
robô pode melhorar, consideravelmente, a precisão do trajeto dos robôs, na faixa de
velocidade de 20 - 100 mm/s. Para robôs maiores (especialmente o da família
IRB6400), o efeito será, entretanto, mínimo comparado com outras fontes de erros de
deslocamento que dominam esses robôs.

Tune_fric_ramp sobrepõe-se ao valor do parâmetro do sistema Friction ffw ramp. Na


maioria dos casos, não há necessidade de ajustar a Friction ffw ramp. O ajuste padrão
será apropriado.

Data Types do Sistema e Rotinas 2-TuneServo-7


TuneServo Instruções

Ajustar um eixo de cada vez. Altere o valor da regulagem em pequenas partes e


encontre o nível, que minimiza o erro de trajeto do robô, nas posições do trajeto em que
esse eixo específico muda a direção do movimento. Repita o mesmo procedimento para
o próximo eixo etc.

Os valores de regulagem final podem ser transferidos para os parâmetros do sistema.


Exemplo:

Friction ffw level = 1. Valor de regulagem final (tune_fric_lev) = 150%.

Ajuste Friction ffw level = 1,5 e o valor de regulagem = 100% (valor padrão) que
é equivalente.

Argumentos
TuneServo MecUnit Axis TuneValue [\Type]
MecUnit (Mechanical Unit) DataType: mecunit

O nome da unidade mecânica.

Axis DataType: num

O número do eixo atual na unidade mecânica (1 - 6).

TuneValue DataType: num

Valor de ajuste de servo em percentual (1 - 500). 100% é o valor normal.

[\Type] Data type: tunetype

Tipo do servo de regulagem. Os tipos disponíveis são TUNE_DF, TUNE_KP;


TUNE_KV e TUNE_TI. Estes tipos são pré-definidos no sistema com constantes.

Este argumento pode ser omitido quando usar o tipo de regulagem TUNE_DF.

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

Ativando a regulagem tipo TUNE_DF com o valor de regulagem 110% no eixo


1 na unidade mecânica MHA160R1.

2-TuneServo-8 Data Types do Sistema e Rotinas


Instruções TuneServo

Execução do programa
O tipo de regulagem especificado e o valor de regulagem são ativados para os eixos
especificados. Este valor é aplicável para todos os movimentos até um novo valor ser
programado para o eixo atual, ou até os tipos de regulagem e valores para todos os
eixos serem reajustados usando a instrução TuneReset.

Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset

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

Limitações
Quaisquer ajustes de servo ativos retornarão sempre aos valores padrão em caso de
falha de energia. Essa limitação pode ser contornada no programa do usuário, ao
reiniciar após a falha de energia.

Sintaxe
TuneServo
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’,’
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[TuneValue ’:=’ ] < expressão (IN) do num> ’;’
[’\’ Type ’:=’ <expressão (IN) do tunetype>]’;’

Informações relacionadas
Descrito em:
Outros ajustes de movimento Sumário Rapid - Motion Settings
Tipos do servo de regulagem Data Types - tunetype
Reajustar todos os servos de regulagem Instruções - TuneReset
Regulagem dos eixos externos Parâmetros do sistema - Robô
Compensação da fricção Parâmetros do Sistema - Robô

Data Types do Sistema e Rotinas 2-TuneServo-9


TuneServo Instruções

2-TuneServo-10 Data Types do Sistema e Rotinas


Instruções UnLoad

UnLoad Descarregar um módulo de um programa durante a


execução
UnLoad é usado para descarregar um módulo de um programa na memória durante a
execução.

O módulo do programa tem de ter sido previamente carregado na memória do pro-


grama usando a instrução Load ou StartLoad - WaitLoad.

Exemplo
UnLoad ram1disk \File:="PART_A.MOD";

Descarregue o módulo do programa PART_A.MOD da memória do programa,


que foi previamente carregado na memória do programa com Load. (Veja
instruções Load). (ram1disk é uma string constante pré-definida "ram1disk:").

Argumentos
UnLoad [\Save] FilePath [\File]
[\Save] Data type: switch

Se esse argumento for usado, o módulo do programa será salvo antes do início
do descarregamento.
O módulo do progama será salvo no local original especificado na instrução
Load ou StartLoad.

FilePath Data type: string

O arquivo de trajetória e o nome do arquivo que vai ser descarregado da memória


do programa. O arquivo de trajetória e o nome do arquivo devem ser os mesmos
da instrução Load ou StartLoad previamente executada. O nome do arquivo será
excluído quando for usado o argumento \File.

[\File] Data type: string

Quando o nome do arquivo é excluído no argumento FilePath, este passo deve


ser definido com este argumento. O nome do arquivo deve ser o mesmo daquele
que foi utilizado previamente na instrução Load ou StartLoad.

Execução do programa
Para conseguir executar a instrução UnLoad no programa, uma instrução Load ou
StartLoad - WaitLoad com o mesmo caminho e nome deve ter sido executado antes no

Manual de Referência do RAPID 8-UnLoad-11


UnLoad Instruções

programa.

A execução do programa espera que o módulo do programa acabe o carregamento antes


de passar à instrução seguinte.

Após o módulo do programa ter sido descarregado, os restantes módulos do programa


serão lincados .

Para mais detalhes, consulte as instruções Load ou StartLoad - WaitLoad.

Exemplos
UnLoad "ram1disk:DOORDIR/DOOR1.MOD";

Descarregue o módulo do programa DOOR1.MOD da memória do programa,


que foi previamente carregado na memória do programa com Load. (See instruc-
tions
Load).

UnLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que acima, mas com outra sintaxe.

Unload \Save, "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

O mesmo que acima, mas salva o módulo do programa antes de descarregar.

Limitações
Não é permitido descarregar um módulo de um programa que está sendo executado.

As rotinas TRAP, os passos do sistema E/S e outras tarefas do programa não podem ser
executados durante o descarregamento.

Evite usar um disquete flexível para carregamento uma vez que a leitura de um disquete
flexível demora muito tempo.

Uma parada do programa durante a execução da instrução UnLoad resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.

Tratamento de erros
Se o arquivo na instrução UnLoad não puder ser descarregado por causa de uma
execução que está correndo no módulo ou por causa de uma trajetória errada (módulo
não carregado com Load ou StartLoad) então a variável do sistema ERRNO é ajustada
para ERR_UNLOAD. Esse erro pode ser tratado na rotina de tratamento de erros.

8-UnLoad-12 Manual de Referência do RAPID


Instruções UnLoad

Sintaxe
UnLoad
[’\’Save ’,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’

Informações relacionadas
Descrito em:
Carregar o módulo de um programa Instruções - Load
Instruções - StartLoad-WaitLoad
Aceitar referências não resolvidas Parâmetros do Sistema - Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef

Manual de Referência do RAPID 8-UnLoad-13


UnLoad Instruções

8-UnLoad-14 Manual de Referência do RAPID


Instruções WaitDI

WaitDI Espera um sinal de entrada digital


WaitDI (Wait Digital Input) é usado para esperar até que um sinal de entrada digital seja
ligado.

Exemplo
WaitDI di4, 1;

A execução do programa continua somente após a entrada di4 ser ligada.

WaitDI grip_status, 0;

A execução do programa continua somente após a entrada grip_status ser desli-


gada.

Argumentos
WaitDI Signal Value [\MaxTime] [\TimeFlag]
Signal DataType: signaldi

O nome do sinal.

Value DataType: dionum

O valor desejado para o sinal.

[\MaxTime] (Maximum Time) DataType: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja alcançada, um tratamento de erro será
chamado, se existir um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver um tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) DataType: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.

Data Types do Sistema e Rotinas 2-WaitDI-1


WaitDI Instruções

Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.

Quando o robô está esperando, o tempo é supervisionado, e se este excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
caso o tempo exceda, caso contrário ele será colocado em FALSE.

Sintaxe
WaitDI
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ Value ’:=’ ] < expressão (IN) do dionum >
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime

2-WaitDI-2 Data Types do Sistema e Rotinas


Instruções WaitDO

WaitDOEspera até que um sinal de saída digital seja ligado


WaitDO (Wait Digital Output) é usado para esperar até que um sinal de saída digital
seja ligado.

Exemplo
WaitDO do4, 1;

A execução do programa continua somente após a entrada do4 ser ligada.

WaitDO grip_status, 0;

A execução do programa continua somente após a saída grip_status ser religada.

Argumentos
WaitDO Signal Value [\MaxTime] [\TimeFlag]
Signal Data type: signaldo

O nome do sinal.

Value Data type: dionum

O valor desejado para o sinal.

[\MaxTime] (Maximum Time) Data type: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja alcançada, um tratamento de erro será
chamado, se existir um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver um tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) Data type: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.

Data Types do Sistema e Rotinas 2-WaitDO-1


WaitDO Instruções

Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.

Quando o robô está esperando, o tempo é supervisionado, e se este excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
caso o tempo exceda, caso contrário ele será colocado em FALSE.

Sintaxe
WaitDO
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ Value ’:=’ ] < expression (IN) of dionum >
[’\’MaxTime ’:=’<expression (IN) of num>]
[’\’TimeFlag’:=’<variable (VAR) of bool>] ’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime

2-WaitDO-2 Data Types do Sistema e Rotinas


Instruções WaitLoad

WaitLoad Conecta o módulo carregado à tarefa


WaitLoad é utilizada para conectar o módulo (caso este seja carregado com
StartLoad) à tarefa de programa.

O módulo carregado deve ser conectado à tarefa de programa com a instrução


WaitLoad antes de qualquer de seus símbolos/rotinas ser usado.

O módulo de programa carregado será adicionado aos módulos já existentes na


memória de programa.

Essa instrução também pode ser combinada com a função para descarregar algum
outro módulo de programa para minimizar o número de vínculos (1 em vez de 2).

Exemplo
VAR loadsession load1;
...
StartLoad "ram1disk:PART_A.MOD", load1;
MoveL p10, v1000, z50, tool1 \WObj:=wobj1;
MoveL p20, v1000, z50, tool1 \WObj:=wobj1;
MoveL p30, v1000, z50, tool1 \WObj:=wobj1;
MoveL p40, v1000, z50, tool1 \WObj:=wobj1;
WaitLoad load1;
%"routine_x"%;
UnLoad "ram1disk:PART_A.MOD";

Carregue o módulo de programa PART_A.MOD a partir de ram1disk na


memória de programa. Paralelamente, mova o robô. Em seguida, conecte o novo
módulo de programa à tarefa de programa e chame a rotina routine_x do módulo
PART_A.

Argumentos
WaitLoad [\UnloadPath] [\UnloadFile] LoadNo
[\UnloadPath] Tipo de dados: string

O caminho e o nome do arquivo que será descarregado da memória de programa.


O nome do arquivo deve ser excluído quando o argumento \UnloadFile é usado.

Data Types do Sistema e Rotinas 2-WaitLoad-3


WaitLoad Instruções

[\UnloadFile] Tipo de dados: string

Quando o nome do arquivo é excluído no argumento \UnloadPath, ele deve ser


definido com esse argumento.

LoadNo Tipo de dados: loadsession

Isso é uma referência à sessão de carregamento, obtida pela instrução


StartLoad, para conectar o módulo de programa carregado à tarefa de programa.

Execução do programa
A instrução WaitLoad primeiro irá esperar pela conclusão do carregamento se este
ainda não tiver sido concluído e, em seguida, ele será vinculado e inicializado. A
inicialização do módulo carregado define todas as variáveis em nível de módulo com
seus valores de inicialização.

Referências não resolvidas serão aceitas se o parâmetro de sistema para Tasks/BindRef


estiver definido como NO. No entanto, quando o programa for iniciado ou a função da
unidade de programação Program Window/File/Check Program for utilizada, nenhuma
verificação de referências não resolvidas será feita se BindRef = NO. Haverá um erro
em tempo de execução ao executar uma referência não resolvida.

Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é utilizar Vinculação posterior. Isso torna possível especificar a rotina a ser
chamada com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o
parâmetro BindRef pode ser definido como YES (comportamento padrão). O método
de Vinculação posterior é preferível.

Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve ser
feito a partir do módulo principal, que está sempre presente na memória de programa
durante a execução.

Exemplos
StartLoad "ram1disk:DOORDIR/DOOR2.MOD", load1;
...
WaitLoad \UnloadPath:="ram1disk:DOORDIR/DOOR1.MOD", load1;

Carregue o módulo de programa DOOR2.MOD a partir de ram1disk no diretório


DOORDIR para a memória de programa e conecte o novo módulo à tarefa. O
módulo de programa DOOR1.MOD será descarregado da memória de programa.

StartLoad "ram1disk:" \File:="DOORDIR/DOOR2.MOD", load1;


! O robô pode fazer algum outro trabalho
WaitLoad \UnloadPath:="ram1disk:" \File:= "DOORDIR/DOOR1.MOD", load1;

equivale às instruções abaixo, mas o robô pode fazer algum outro trabalho
durante o tempo de carregamento e também fazê-lo mais rapidamente (somente
um vínculo).
2-WaitLoad-4 Data Types do Sistema e Rotinas
Instruções WaitLoad

Load "ram1disk:" \File:="DOORDIR/DOOR2.MOD";


UnLoad "ram1disk:" \File:="DOORDIR/DOOR1.MOD";

Tratamento de erros
Se não for possível localizar o arquivo especificado na instrução StartLoad, a variável
de sistema ERRNO será definida como ERR_FILNOTFND na execução de WaitLoad.

Se o argumento LoadNo referir-se a uma sessão de carregamento desconhecida, a var-


iável de sistema ERRNO será definida como ERR_UNKPROC.

Se o módulo já estiver carregado na memória de programa, a variável de sistema


ERRNO será definida como ERR_LOADED.

Os erros seguintes só podem ocorrer quando o argumento \UnloadPath é utilizado na


instrução WaitLoad:

- Se o módulo de programa especificado no argumento \UnloadPath não puder


ser descarregado devido a uma operação em andamento dentro do módulo, a
variável de sistema ERRNO será definida como ERR_UNLOAD.
- Se o módulo de programa especificado no argumento \UnloadPath não puder
ser descarregado devido ao módulo de programa não ter sido carregado com
Load ou StartLoad-WaitLoad a partir do programa RAPID, a variável de sis-
tema ERRNO também será definida como ERR_UNLOAD.

Esses erros poderão ser tratados na rotina de tratamento de erros.

Sintaxe
WaitLoad
[ [ ‘\’ UnloadPath ‘:=‘ <expressão (IN) de string> ]
[ ‘\’ UnloadFile ‘:=‘ <expressão (IN) de string> ] ‘,’ ]
[ LoadNo ‘:=‘ ] <variável (VAR) de loadsession> ‘;’

Data Types do Sistema e Rotinas 2-WaitLoad-5


WaitLoad Instruções

Informações relacionadas
Carregar um módulo de programa
durante a execução Instruções - StartLoad
Carregar sessão Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema -
Controller/Task/BindRef

2-WaitLoad-6 Data Types do Sistema e Rotinas


Instruções WaitTime

WaitTime Espera um tempo determinado


WaitTime é usado para esperar um tempo determinado. Esta instrução também pode ser
usada para fazer com que o robô e eixos externos fiquem parados.

Exemplo
WaitTime 0.5;

A execução do programa espera 0.5 segundo.

Argumentos
WaitTime [\InPos] Time
[\InPos] Tipo de dado: switch

Se este argumento é usado, o robô e eixos externos devem estar parados antes do
início da contagem do tempo de espera.

Time Tipo de dadoe: num

O tempo, expresso em segundos, que a execução do programa espera.

Execução do programa
A execução do programa pára temporariamente por um tempo determinado. Contudo
tratamentos de interrupção e outras funções similares ainda estão ativas.

Exemplo
WaitTime \InPos,0;

A execução do programa espera até que o robô e eixos externos fiquem parados.

Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada no ponto final, para que seja possível reiniciar nesta instrução seg-
uida de uma falha de energia.

O argumento \Inpos não pode ser usado juntamente com SoftServo.

Data Types do Sistema e Rotinas 2-WaitTime-1


WaitTime Instruções

Sintaxe
WaitTime
[’\’InPos’,’]
[Time ’:=’] <expressão (IN) do num>’;’

Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um sinal de entrada digital Instruções - WaitDI

2-WaitTime-2 Data Types do Sistema e Rotinas


Instruções WaitUntil

WaitUntil Espera uma condição ser satisfeita


WaitUntil é usado para esperar até que uma condição lógica seja satisfeita; por exem-
plo, pode esperar até que uma ou mais entradas sejam ligadas.

Exemplo
WaitUntil di4 = 1;

A execução do programa continua somente após a entrada di4 ser ligada.

Argumentos
WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag]
[\InPos] DataType: switch

Se este argumento é usado, o robô e eixos externos devem estar parados antes
que a condição comece a ser avaliada.

Cond DataType: bool

A expressão lógica que é esperada.

[\MaxTime] DataType: num

O período máximo de tempo de espera permitido, expresso em segundos. Se este


tempo acaba antes que a condição seja satisfeita, um tratamento de erro será cha-
mado, caso exista um, com o código de erro ERR_WAIT_MAXTIME. Se não
houver tratamento de erro, a execução irá parar.

[\TimeFlag] (Timeout Flag) DataType: bool

O parâmetro de saída que contém o valor TRUE se o tempo máximo de espera


permitido acaba antes que a condição seja alcançada. Se este parâmetro está
incluso na instrução, não é considerado erro se o tempo máx. acaba. Este argu-
mento é ignorado se o argumento MaxTime não está incluso na instrução.

Execução do programa
Se a condição programada não é satisfeita na execução da instrução WaitUntil, a con-
dição é verificada novamente a cada 100 ms.

Quando o robô está esperando, o tempo é supervisionado, e se ele excede o valor de


tempo máx., o programa continuará se o Time Flag é especificado, ou aponta um erro
se ele não é especificado. Se o Time Flag é especificado, este será colocado em TRUE
se o tempo exceder, caso contrário ele será colocado em FALSE.

Data Types do Sistema e Rotinas 2-WaitUntil-1


WaitUntil Instruções

Exemplos
VAR bool timeout;
WaitUntil start_input = 1 AND grip_status = 1\MaxTime := 60
\TimeFlag := timeout;
IF timeout THEN
TPWrite "Nenhuma ordem recebida dentro do tempo esperado";
ELSE
start_next_cycle;
ENDIF

Se as duas condições de entrada não são alcançadas dentro de 60 segundos, uma


mensagem de erro será mostrada no display da unidade de programação.

WaitUntil \Inpos, di4 = 1;

A execução do programa espera até que o robô pare de se mover e a entrada di4
seja ligada.

Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada com um ponto final, para que seja possível reiniciar nesta instrução
seguida de uma falha de energia.

Sintaxe
WaitUntil
[’\’InPos’,’]
[Cond ’:=’] <expressão (IN) do bool>
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’

Informações relacionadas
Descrito em:
Espera um sinal de entrada digital Instruções - WaitDI
Espera um tempo determinado Instruções - WaitTime
Expressões Características Básicas - Expressões

2-WaitUntil-2 Data Types do Sistema e Rotinas


Instruções VelSet

VelSet Muda a velocidade programada


VelSet é usado para aumentar ou diminuir a velocidade programada para todas as
instruções de posicionamento subsequentes. Esta instrução também é usada para ma-
ximizar a velocidade.

Exemplo
VelSet 50, 800;

Todas as velocidades programadas são diminuídas em 50% do valor da


instrução. A velocidade do TCP não é, entretanto, permitida exceder 800 mm/s.

Argumentos
VelSet Override Max
Override DataType: num

Velocidade desejada como uma porcentagem da velocidade programada. 100%


corresponde a velocidade programada.

Max DataType: num

Velocidade máxima do TCP em mm/s.

Execução do programa
A velocidade programada de todas as instruções de posicionamento subsequentes é
afetada até uma nova instrução VelSet ser executada.

O argumento Override afeta:

- Todos os componentes de velocidade (TCP, orientação, rotação e eixos externos


lineares) em speeddata.
- A velocidade programada ultrapassa a instrução de posicionamento (o argu-
mento \V).
- Movimentos temporizados.

O argumento Override não afeta:

- A velocidade de soldagem em welddata.


- A velocidade de aquecimento e preenchimento em seamdata.

O argumento Max somente afeta a velocidade do TCP.

Data Types do Sistema e Rotinas 2-VelSet-1


VelSet Instruções

Os valores default para Override e Max são 100% e 5000 mm/s respectivamente. Estes
valores são automaticamente ligados

- numa partida a frio


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

Exemplo
VelSet 50, 800;
MoveL p1, v1000, z10, tool1;
MoveL p2, v2000, z10, tool1;
MoveL p3, v1000\T:=5, z10, tool1;

A velocidade é 500 mm/s para ponto p1 e 800 mm/s para p2. Isso dá 10 segundos
para mover de p2 para p3.

Limitações
A velocidade máxima não é levada em consideração quando o tempo é especificado na
instrução de posicionamento.

Sintaxe
VelSet
[ Override ’:=’ ] < expressão (IN) do num > ’,’
[ Max ’:=’ ] < expressão (IN) do num > ’;’

Informações relacionadas
Descrito em:
Definição de velocidade DataTypes - speeddata
Instruções de posicionamento Sumário RAPID - Movimentação

2-VelSet-2 Data Types do Sistema e Rotinas


Instruções WHILE

WHILE Repetir enquanto ...


WHILE é usado quando um número de instruções devem ser repetidas enquanto uma
condição é satisfeita.

Se for possível determinar previamente o número de repetições, a instrução FOR pode


ser usada.

Exemplo
WHILE reg1 < reg2 DO
...
reg1 := reg1 +1;
ENDWHILE

Repete as instruções no ciclo WHILE enquanto reg1 < reg2.

Argumentos
WHILE Condition DO ... ENDWHILE
Condition DataType: bool

A condição que deve ser satisfeita para que as instruções no ciclo WHILE sejam
executadas.

Execução do programa
1. A condição é calculada. Se a condição não é satisfeita, o ciclo WHILE termina e a
execução do programa continua com a instrução seguinte a ENDWHILE.
2. As instruções no loop WHILE são executadas.
3. O ciclo WHILE é repetido, começando pela primeira instrução.

Sintaxe
(EBNF)
WHILE <expressão condicional> DO
<lista de instrução>
ENDWHILE

Manual de Referência do RAPID 8-WHILE-1


WHILE Instruções

Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões

8-WHILE-2 Manual de Referência do RAPID


Instruções Write

Write Escreve em um arquivo tipo texto ou canal serial


Write é usado para escrever em um arquivo tipo texto ou canal serial. O valor de certo
dado pode ser escrito como um texto.

Exemplos
Write logfile, "Execução iniciada";

O texto Execução iniciada foi escrito no arquivo com nome de referência logfile.

Write logfile, "Nr de partes produzidas="\Num:=reg1;

O texto Nr de partes produzidas=5, por exemplo, foi escrito no arquivo com


nome de referência logfile (assumindo que o conteúdo de reg1 é 5).

Argumentos
Write IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient]
[\NoNewLine]
IODevice DataType: iodev

O nome (referência) do atual arquivo ou canal serial.

String DataType: string

O texto a ser escrito.

[\Num] (Numeric) DataType: num

Os dados cujos valores numéricos são escritos após o texto.

[\Bool] (Boolean) DataType: bool

Os dados cujos valores booleanos são escritos após o texto.

[\Pos] (Position) DataType: pos

Os dados cuja posição é escrita após o texto.

[\Orient] (Orientation) DataType: orient

Os dados cuja orientação é escrita após o texto.

[\NoNewLine] DataType: switch

Omite o caracter de linha de alimentação que normalmente indica o fim do texto.

Data Types do Sistema e Rotinas 2-Write-1


Write Instruções

Execução do programa
O texto é escrito para um arquivo ou canal serial especificado. Se o argumento \NoN-
ewLine não é usado, um caracter de linha de alimentação (LF) também é escrito.

Se um dos argumentos \Num, \Bool, \Pos ou \Orient é usado, seu valor é convertido
para um texto antes de ser adicionado ao primeiro texto. A conversão de valor para
texto ocorre como segue:

Argumento Valor Texto


\Num 23 "23"
\Num 1.141367 "1.14137"
\Bool TRUE "TRUE"
\Pos [1817.3,905.17,879.11] "[1817.3,905.17,879.11]"
\Orient [0.96593,0,0.25882,0] "[0.96593,0,0.25882,0]"

O valor é convertido em um “string” com formato RAPID padrão. Isto significa em


princípio 6 dígitos importantes. Se a parte decimal for menor que 0.000005 ou maior
que 0.999995, o número é arredondado para um inteiro.

Exemplo
VAR iodev printer;
.
Open "sio1:", printer\Write;
WHILE DInput(stopprod)=0 DO
produce_part;
Write printer, "Parte produzida ="\Num:=reg1\NoNewLine;
Write printer, " "\NoNewLine;
Write printer, CTime();
ENDWHILE
Close printer;

Uma linha, incluindo o número da parte produzida e da hora atual, é impressa a


cada ciclo. A impressora é conectada ao canal serial sio1:. A mensagem impressa
pode ser parecida com esta:

Parte produzida = 473 09:47:15

Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e não podem
ser usados simultanemente na mesma instrução.

Esta instrução somente pode ser usada por arquivos ou canais seriais que foram abertos
para escrita.

2-Write-2 Data Types do Sistema e Rotinas


Instruções Write

Tratamento de Erro
Se um erro ocorrer durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode ser então tratado em uma rotina de tratamento de erro.

Sintaxe
Write
[IODevice’:=’] <variável (VAR) do iodev>’,’
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]
[’\’NoNewLine]’;’

Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação

Data Types do Sistema e Rotinas 2-Write-3


Write Instruções

2-Write-4 Data Types do Sistema e Rotinas


Instruções WriteAnyBin

WriteAnyBin Escreve dados em um


canal serial ou arquivo binário
WriteAnyBin (Write Any Binary) é usado para escrever qualquer tipo de dados em um
arquivo ou canal serial binário.

Exemplo
VAR iodev channel2;
VAR orient quat1 := [1, 0, 0, 0];
...
Open "sio1:", channel2 \Bin;
WriteAnyBin channel2, quat1;

O dado orient quat1 é escrito no canal referido por channel2.

Argumentos
WriteAnyBin IODevice Data
IODevice Tipo de dados: iodev

O nome (referência) do arquivo ou canal serial


binário para a operação de escrita.

Data Tipo de dados: ANYTYPE

O VAR ou PERS contendo o dado a ser escrito.

Execução do programa
Tantos bytes quantos forem necessários para o dado especificado são escritos no
arquivo ou canal serial binário especificado.

Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para escrita binária.

O dado a ser escrito por essa instrução precisa ter um tipo de dados value de tipo
atomic, string ou record. Os tipos de dados semi-value e non-value não podem ser usa-
dos.

Dados de matrizes não podem ser usados.

Data Types do Sistema e Rotinas 2-WriteAnyBin-5


WriteAnyBin Instruções

Tratamento de erros
Se ocorrer um erro durante a escrita, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.

Exemplo
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;

Open "sio1:", channel\Bin;

! Envia o caractere de controle enq


WriteStrBin channel, "\05";
! Espera o caractere de controle ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Envia a posição atual do robô
cur_robt := CRobT(\Tool:= tool1\WObj:= wobj1);
WriteAnyBin channel, cur_robt;
ENDIF

Close channel;

A posição atual do robô é escrita em um canal serial binário.

Sintaxe
WriteAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>’;’

Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos
Ler dados de um canal serial Funções - ReadAnyBin
ou arquivo binário

2-WriteAnyBin-6 Data Types do Sistema e Rotinas


Instruções WriteBin

WriteBin Escreve para um canal serial binário


WriteBin é usado para escrever um número de bytes para um canal serial binário.

Exemplo
WriteBin channel2, text_buffer, 10;

10 caractéres da lista text_buffer são escritos para um canal referido ao channel2.

Argumentos
WriteBin IODevice Buffer NChar
IODevice DataType: iodev

Nome (referência) do atual canal serial.

Buffer DataType: array of

num

A lista (variedade) contendo os números (caractéres) a serem escritos.

NChar (Number of Characters) DataType: num

O número de caractéres a ser escrito do Buffer.

Execução do programa
O número especificado de números (caractéres) na lista a ser escrita para o canal serial.

Limitações
Esta instrução somente pode ser usada para canais seriais que foram abertos para lei-
tura e escrita binária.

Tratamento de Erro
Se um erro ocorre durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode então ser tratado em uma rotina de tratamento de erro.

Data Types do Sistema e Rotinas 2-WriteBin-1


WriteBin Instruções

Exemplo
VAR iodev channel;
VAR num out_buffer{20};
VAR num input;
VAR num nchar;
Open "sio1:", channel\Bin;

out_buffer{1} := 5; ( enq )
WriteBin channel, out_buffer, 1;
input := ReadBin (channel \Time:= 0.1);

IF input = 6 THEN ( ack )


out_buffer{1} := 2; ( stx )
out_buffer{2} := 72; ( ’H’ )
out_buffer{3} := 101; ( ’e’ )
out_buffer{4} := 108; ( ’l’ )
out_buffer{5} := 108; ( ’l’ )
out_buffer{6} := 111; ( ’o’ )
out_buffer{7} := 32; (’’)
out_buffer{8} := StrToByte("w"\Char); ( ’w’ )
out_buffer{9} := StrToByte("o"\Char); ( ’o’ )
out_buffer{10} := StrToByte("r"\Char); ( ’r’ )
out_buffer{11} := StrToByte("l"\Char); ( ’l’ )
out_buffer{12} := StrToByte("d"\Char); ( ’d’ )
out_buffer{13} := 3; ( etx )
WriteBin channel, out_buffer, 13;
ENDIF

O "string" de texto Hello world (com caracteres de controle associados) é escrito


em um canal serial. A função StrToByte é usada nos mesmos casos para converter
um "string" em um dado de byte (num). ???

Sintaxe
WriteBin
[IODevice’:=’] <variável (VAR) do iodev>’,’
[Buffer’:=’] <variedade {*} (IN) do num>’,’
[NChar’:=’] <expressão (IN) do num>’;’

2-WriteBin-2 Data Types do Sistema e Rotinas


Instruções WriteBin

Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação
Converter um "string" em dados de byte Funções - StrToByte
Dados de byte Tipos de dados - byte

Data Types do Sistema e Rotinas 2-WriteBin-3


WriteBin Instruções

2-WriteBin-4 Data Types do Sistema e Rotinas


Instruções WriteStrBin

WriteStrBinEscrever uma string para um canal serial binário


WriteStrBin (Escrever String Binária) é usado para escrever uma string para um canal
serial binário ou arquivo bináro.

Exemplo
WriteStrBin channel2, "Hello World\0A";

A string "Hello World\0A" é escrita para o canal referido como channel2. A


cadeia é, neste caso, terminada com uma linha nova \0A. Todos os caracteres e
valores hexadecimais escritos com WriteStrBin permanecerão inalterados pelo
sistema.

Argumentos
WriteStrBin IODevice Str
IODevice Tipo de dados: iodev

Nome (referência) do canal serial corrente.

Str (String) Tipo de dados: string

O texto a ser escrito.

Execução do programa
A string de texto é escrita para o canal serial ou arquivo especificado.

Limitações
Esta instrução pode somente ser usada para canais seriais ou arquivos que tenham sido
abertos para leitura ou escrita binária.

Tratamento de erros
Se um erro ocorrer durante a escrita, a variável de sistema ERRNO é ajustada para
ERR_FILEACC. Este erro pode ser tratado no tratamento de erros.

Data Types do Sistema e Rotinas 2-WriteStrBin-1


WriteStrBin Instruções

Exemplo
VAR iodev channel;
VAR num input;
Open "sio1:", channel\Bin;

! Send the control character enq


WriteStrBin channel, "\05";
! Wait for the control character ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Send a text starting with control character stx and ending with etx
WriteStrBin channel, "\02Hello World\03";
ENDIF

Close channel;

A string de texto Hello World (com caracteres de controlo associados em hexa-


decimais) é escrita para um canal serial binário.

Sintaxe
WriteStrBin
[IODevice’:=’] <variável (VAR) de iodev>’,’
[Str’:=’] <expressão (IN) de string>’;’

Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação

2-WriteStrBin-2 Data Types do Sistema e Rotinas


Instruções WZBoxDef

WZBoxDef Definir uma zona global em forma de caixa


WZBoxDef (Definição de Zona Global em Forma de Caixa) é usada para definir uma
zona global que tem a forma de uma caixa quadrada e com todos os lados paralelos aos
eixos do Sistema de Coordenadas Global.

Exemplo
.

canto2

Z
Y Caixa

canto1
Min. 10 mm
X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos corner1:=[200,100,100];
CONST pos corner2:=[600,400,400];
...
WZBoxDef \Inside, volume, corner1, corner2;

Definir uma caixa quadrada com coordenadas paralelas aos eixos do sistema de
coordenadas global e definida pelos cantos corner1 e corner2 opostos.

Argumentos
WZBoxDef (\Inside) | (\Outside) Shape LowPoint HighPoint
\Inside Tipo de dados: switch

Definir o volume interno da caixa.

\Outside Tipo de dados: switch

Definir o volume externo da caixa (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados para o sistema).

Manual de Referência do RAPID 8-WZBoxDef-1


WZBoxDef Instruções

LowPoint Tipo de dados: pos

Posição (x,y,x) em mm definindo um dos cantos da caixa.

HighPoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o canto diagonalmente oposto ao canto anterior.

Execução do programa
A definição da caixa é armazenada na variável do tipo shapedata (argumento Shape),
para uso futuro na instrução WZLimSup ou WZDOSet.

Limitações
As posições LowPoint e HighPoint têm de ser cantos opostos válidos (com valores de
coordenadas x, y e z diferentes).

Se o robô é usado para apontar LowPoint ou HighPoint, o objeto de trabalho wobj0 tem
de estar ativo (uso do componente trans em robtarget, por exemplo, trans como argu-
mento).

Sintaxe
WZBoxDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[LowPoint’:=’]<expressão (IN) de pos>’,’
[HighPoint’:=’]<expressão (IN) de pos>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando supervisão de limite de zona global Instruções - WZLimSup
Ativando conjunto de saídas digitais de zona
global Instruções - WZDOSet

8-WZBoxDef-2 Manual de Referência do RAPID


Instruções WZCylDef

WZCylDef Definir uma zona global em forma de cilindro


WZCylDef (Definição de Zona Global em Forma de Cilindro) é usada para definir uma
zona global que tem a forma de um cilindro e com o eixo do cilindro paralelo ao eixo
z do Sistema de Coordenadas Global.

Exemplo

R2

H2
Z
Y

C2

X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos C2:=[300,200,200];
CONST num R2:=100;
CONST num H2:=200;
...
WZCylDef \Inside, volume, C2, R2, H2;

Definir um cilindro com o centro do circulo inferior em C2, raio R2 e altura H2.

Argumentos
WZCylDef (\Inside) | (\Outside) Shape CentrePoint Radius Height
\Inside Tipo de dados: switch

Definir o volume interno do cilindro.

\Outside Tipo de dados: switch

Definir o volume externo do cilindro (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados do sistema).

Data Types do Sistema e Rotinas 2-WZCylDef-1


WZCylDef Instruções

CentrePoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o centro de uma das bases do cilindro.

Radius Tipo de dados: num

O raio do cilindro em mm.

Height Tipo de dados: num

A altura em mm do cilindro.
Se positiva (direção +z), o argumento CentrePoint é o centro do circulo inferior
do cilindro (como no exemplo acima).
Se negativa (direção -z), o argumento CentrePoint é o centro do circulo superior
do cilindro.

Execução do programa
A definição do cilindro é armazenada na variável do tipo shapedata (argumento
Shape), para uso futuro na instrução WZLimSup ou WZDOSet.

Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 tem de estar
ativo (uso do componente trans em robtarget, por exemplo, p1.trans como argumento).

Sintaxe
WZCylDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’,’
[Height’:=’]<expressão (IN) de num>’;’

2-WZCylDef-2 Data Types do Sistema e Rotinas


Instruções WZCylDef

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Ativando espaço de trabalho restrito Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet

Data Types do Sistema e Rotinas 2-WZCylDef-3


WZCylDef Instruções

2-WZCylDef-4 Data Types do Sistema e Rotinas


Instruções WZDisable

WZDisable Desativar a supervisão da zona global temporária


WZDisable (Desativar Zona Global) é usada para desativar a supervisão de uma zona
global temporária, previamente definida para parar o movimento ou para ajustar uma
saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre no volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place.

Argumentos
WZDisable WorldZone
WorldZone Tipo de dados: wztemporary

A zona global a ser desativada.

Execução do programa
A zona global temporária é desativada. Isto significa que a supervisão do TCP do robô,
relativa ao volume correspondente, é temporariamente parada. Pode ser reativada
através da instrução WZEnable.

Limitações
Somente uma zona global temporária podem ser desativada. Uma zona global esta-
cionária é sempre ativa.

Data Types do Sistema e Rotinas 2-WZDisable-1


WZDisable Instruções

Sintaxe
WZDisable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de Dados - wztemporary
Reativar zona global Instruções - WZEnable
Eliminar zona global Instruções - WZFree

2-WZDisable-2 Data Types do Sistema e Rotinas


Instruções WZDOSet

WZDOSet Ativar a zona global para ajustar a saída digital


WZDOSet (Ajustar Zona Global Digital) é usada para definir a ação e ativar uma zona
global para supervisão dos movimentos do robô.

Após esta instrução ser executada, quando o TCP do robô está dentro da zona global
definida ou se está aproximando dela, um sinal de saída digital é ajustado para o valor
especificado.

Exemplo
VAR wztemporary service;

PROC zone_output()
VAR shapedata volume;
CONST pos p_service:=[500,500,700];
...
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
ENDPROC

Um service de zona global temporária é definido no programa de aplicação que


ajusta o sinal do_service, quando o TCP do robô está dentro da esfera definida
durante a execução do programa ou a movimentação.

Argumentos
WZDOSet (\Temp) | (\Stat) WorldZone (\Inside) | (\Before) Shape
Signal SetValue
\Temp (Temporária) Tipo de dados: switch

A zona global a definir é uma zona global temporária.

\Stat (Estacionária) Tipo de dados: switch

A zona global a definir é uma zona global estacionária.

Um dos argumentos \Temp ou \Stat tem de ser especificado.

WorldZone Tipo de dados: wztempo-


rary

Variável ou persistente que será atualizada com a identidade (valor numérico) da


zona global.

Quando usando o parâmetro \Temp, o tipo de dados tem de ser wztemporary.


Quando usando o parâmetro \Stat, o tipo de dados tem de ser wzstationary.

Data Types do Sistema e Rotinas 2-WZDOSet-1


WZDOSet Instruções

\Inside Tipo de dados: switch

O sinal de saída digital será ajustado quando o TCP do robô estiver dentro do
volume definido.

\Before Tipo de dados: switch

O sinal de saída digital será ajustado antes do TCP do robô atingir o volume defi-
nido (o mais próximo possível antes do volume).

Um dos argumentos \Inside ou \Before tem de ser especificado.

Shape Tipo de dados: shapedata

A variável que define o volume da zona global.

Signal Tipo de dados: signaldo

O nome do sinal de saída digital que será alterado.

SetValue Tipo de dados: dionum

Valor desejado do sinal (0 ou 1) quando o TCP do robô está dentro do volume ou


exatamente antes de entrar no volume.

Quando fora ou muito próximo do volume, o signal é ajustado para o valor


oposto.

Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisonada e a saída será ajustada, quando a posição do TCP do robô estiver dentro
do volume (\Inside) ou se aproximar do limite do volume (\Before).

Exemplo
VAR wztemporary home;
VAR wztemporary service;
PERS wztemporary equip1:=[0];

PROC main()
...
! Definition of all temporary world zones
zone_output;
...
! equip1 in robot working space
WZEnable equip1;
...
! equip1 out of robot working space
WZDisable equip1;

2-WZDOSet-2 Data Types do Sistema e Rotinas


Instruções WZDOSet

...
! No use for equip1 any more
WZFree equip1;
...
ENDPROC

PROC zone_output()
VAR shapedata volume;
CONST pos p_home:=[800,0,800];
CONST pos p_service:=[800,800,800];
CONST pos p_equip1:=[-800,-800,0];
...
WZSphDef \Inside, volume, p_home, 50;
WZDOSet \Temp, home \Inside, volume, do_home, 1;
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
WZCylDef \Inside, volume, p_equip1, 300, 1000;
WZLimSup \Temp, equip1, volume;
! equip1 not in robot working space
WZDisable equip1;
ENDPROC

A definição das zonas globais temporárias home e service no programa de apli-


cação, que ajusta o sinal do_home ou do_service, quando o robô estiver dentro
da esfera home ou service respetivamente, durante a execução do porgrama ou
quando em movimento.

Também a definição de uma zona global temporária equip1, que está ativa
somente na parte do programa do robô quando equip1, está dentro da área de tra-
balho do robô. Nessa altura, o robô pára antes de entrar no volume equip1, tanto
durante a execução do programa como na movimentação manual. equip1 pode
ser desativado ou ativado a partir de outras tarefas de programa com o uso do
valor da variável persistente equip1.

Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.

Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.

Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.

Data Types do Sistema e Rotinas 2-WZDOSet-3


WZDOSet Instruções

Sintaxe
WZDOSet
(’\’Temp) | (’\’Stat) ’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>
(’\’Inside) | (’\’Before) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[Signal’:=’]<variável (VAR) de signaldo>’,’
[SetValue’:=’]<expressão (IN) de dionum>’;’

Informações relacionadas
Descritas em:
Zonas Globais Movimento e Princípios E/S-
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Definir zona global em forma de caixa
quadrada Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Modo de acesso de sinal Guia do usuário- Parâmetros do
Sistema, Sinais E/S

2-WZDOSet-4 Data Types do Sistema e Rotinas


Instruções WZEnable

WZEnable Ativar supervisão da zona global temporária


WZEnable (Ativar zona Global) é usada para reativar a supervisão de uma zona global
temporária, previamente definida para parar o movimento ou para ajustar uma saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
não entre no volume wzone especificado. Esta supervisão não é desempenhada
quando indo para p_place, mas é reativada antes de ir para p_home

Argumentos
WZEnable WorldZone
WorldZone Tipo de dados: wztemporary

Variável ou variável persistente do tipo wztemporary, que contém a identidade


da zona global a ser ativada.

Execução do programa
A zona global temporária é reativada.
Note que uma zona global é automaticamente ativada quando criada. Necessita
somente de ser reativada quando tiver sido previamente desativada por WZDisable.

Limitações
Somente uma zona global temporária pode ser desativada e reativada. Uma zona global
estacionária está sempre ativa.

Data Types do Sistema e Rotinas 2-WZEnable-1


WZEnable Instruções

Sintaxe
WZEnable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

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

2-WZEnable-2 Data Types do Sistema e Rotinas


Instruções WZFree

WZFree Eliminar supervisão da zona global temporária


WZFree (Zona Global Livre) é usada para eliminar a definição de uma zona global
temporária, previamente definida para parar a movimentação ou ajustar uma saída.

Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
WZFree wzone;
ENDPROC

Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre em um volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place, mas é reativada antes de ir para p_home.
Quando esta posição é atingida, a definição da zona global é eliminada.

Argumentos
WZFree WorldZone
WorldZone Tipo de dados: wztemporary

Variável ou variável persistente do tipo wztemporary que contém a identidade da


zona global a ser eliminada.

Execução do programa
A zona global temporária é primeiro desativada e depois a sua definição é eliminada.

Uma vez eliminada, a zona global temporária não pode ser reativada nem desativada.

Limitações
Somente uma zona global temporária pode ser eliminada. Uma zona global esta-
cionária está sempre ativa.

Data Types do Sistema e Rotinas 2-WZFree-1


WZFree Instruções

Sintaxe
WZFree
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’

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

2-WZFree-2 Data Types do Sistema e Rotinas


Instruções WZLimSup

WZLimSup Ativar supervisão do limite da zona global


WZLimSup (Supervisão do Limite da Zona Global) é usada para definir a ação e ativar
uma zona global para supervisão do espaço de trabalho do robô.

Após esta instrução ser executada, quando o TCP do robô atingir a zona global defin-
ida, o movimento é parado durante a execução do programa e a movimentação.

Exemplo
VAR wzstationary max_workarea;
...
PROC POWER_ON()
VAR shapedata volume;
...
WZBoxDef \Outside, volume, corner1, corner2;
WZLimSup \Stat, max_workarea, volume;
ENDPROC

A definição e ativação da zona global estacionária max_workarea, com a forma


da área externa de uma caixa (guardada temporariamente em volume) e a super-
visão da área de trabalho da ação. O robô pára com uma mensagem de erro antes
de entrar na área externa da caixa.

Argumentos
WZLimSup (\Temp) | (\Stat) WorldZone Shape
\Temp (Temporária) Tipo de dados: switch

A zona global a definir é uma zona global temporária.

\Stat (Estacionária) Tipo de dados: switch

A zona global a definir é uma zona global estacionária.

Um dos argumentos \Temp ou \Stat tem de ser especificado.

WorldZone Tipo de dados: wztemporary

Variável ou persistente que será atualizada com a identidade (valor numérico) da


zona global.

Quando usando o parâmetro \Temp, o tipo de dados tem de ser wztemporary.


Quando usando o parâmetro \Stat, o tipo de dados tem de ser wzstationary.

Data Types do Sistema e Rotinas 2-WZLimSup-1


WZLimSup Instruções

Shape Tipo de dados: shapedata

A variável que define o volume da zona global.

Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisionada. Se atingir a área definida, o movimento é parado.

Exemplo
VAR wzstationary box1_invers;
VAR wzstationary box2;

PROC wzone_power_on()
VAR shapedata volume;
CONST pos box1_c1:=[500,-500,0];
CONST pos box1_c2:=[-500,500,500];
CONST pos box2_c1:=[500,-500,0];
CONST pos box2_c2:=[200,-200,300];
...
WZBoxDef \Outside, volume, box1_c1, box1_c2;
WZLimSup \Stat, box1_invers, volume;
WZBoxDef \Inside, volume, box2_c1, box2_c2;
WZLimSup \Stat, box2, volume;
ENDPROC

A limitação da área de trabalho para o robô com as seguintes zonas globais esta-
cionárias:

- Fora da área de trabalho quando fora de box1_invers


- Fora da área de trabalho quando dentro de box2

Se esta rotina é conectada ao evento de sistema POWER ON, estas zonas globais
estarão sempre ativas no sistema, tanto para os movimentos de programa como
para os movimentos manuais.

Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.

Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.

Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.

2-WZLimSup-2 Data Types do Sistema e Rotinas


Instruções WZLimSup

Sintaxe
WZLimSup
(’\’Temp) | (’\Stat)’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’,’
[Shape’:=’] <variável (VAR) de shapedata>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa quadradaInstruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando saída relativa a uma zona Instruções - WZDOSet

Data Types do Sistema e Rotinas 2-WZLimSup-3


WZLimSup Instruções

2-WZLimSup-4 Data Types do Sistema e Rotinas


Instruções WZSphDef

WZSphDef Definir uma zona global em forma de esfera


WZSphDef (Definição da Zona Global em Forma de Esfera) é usada para definir uma
zona global que tem a forma de uma esfera.

Exemplo

Z
Y
C1

R1

X
Sistema de Coordenadas Global

VAR shapedata volume;


CONST pos C1:=[300,300,200];
CONST num R1:=200;
...
WZSphDef \Inside, volume, C1, R1;

Definir uma esfera nomeada volume pelo seu centro C1 e pelo seu raio R1.

Argumentos
WZSphDef (\Inside) | (\Outside) Shape CentrePoint Radius
\Inside Tipo de dados: switch

Definir o volume dentro da esfera.

\Outside Tipo de dados: switch

Definir o volume dentro da esfera (volume inverso).

Um dos argumentos \Inside ou \Outside tem de ser especificado.

Shape Tipo de dados: shapedata

Variável para armazenagem do volume definido (dados privados para o sistema).

Data Types do Sistema e Rotinas 2-WZSphDef-1


WZSphDef Instruções

CentrePoint Tipo de dados: pos

Posição (x,y,z) em mm definindo o centro da esfera.

Radius Tipo de dados: num

O raio da esfera em mm.

Execução do programa
A definição da esfera é armazenada no tipo de variável shapedata (argumento Shape),
para uso futuro nas instruções WZLimSup ou WZDOSet.

Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 deve estar
ativo (o uso do componente trans em robtarget, por exemplo, p1.trans como argu-
mento).

Sintaxe
WZSphDef
(’\’Inside) | (’\’Outside)’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’;’

Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet

2-WZSphDef-2 Data Types do Sistema e Rotinas


INDEX

Symbols ConfJ 1
ConfL 1
\cydoniadranslitework CONNECT 1
ekniktext_29107098portugdatatypes
_routinesnstruct D
ewfinalclriobuf.doc 3, 7, 3, 5
d
A ranslitework
ekniktext_29107098portugdatat
acceleration reduction 1 ypes_routinesnstruct
AccSet 1 oportfilefinalSpystart.doc 5
ActUnit 1 ranslitework
Add 1 ekniktext_29107098portugdatat
analog output ypes_routinesnstruct
set 1 oportfilefinalSpystop.doc 3
arithmetic 1 ranslitework
arquivo ekniktext_29107098portugdatat
carregar 3 ypes_routinesnstruct
descarregar 11 oportfilefinalstload.doc 7
escrever 1 DeactUnit 1
fechar 3 Decr 1
rebobinar 3 decrease velocity 1
assignment 1 decrement 1
B Descarregar 11
digital output
Break 1 pulse 3
reset 1
C set 1
call 1 E
CallByVar 1
canal serial eixos externos
arquivo 1 ativada 1
rebobinar 3 desativa 1
Carregar 3 EOffsOff 1
chamada de procedimento 1 EOffsOn 3
Clear 1 EOffsSet 1
ClkReset 1 erase teach pendant display 15
ClkStart 3 error recovery
ClkStop 5 retry 1
clock ErrWrite 1
reset 1 escrever
start 3 na unidade de programação 1
stop 5 espera
Close 1 saída digital 1
comment 1 EXIT 1
Compact IF 1
condition 1

RAPID Programming 2-1


F J
file jump 1
close 1
open 55 L
spystart 11, 23
label 1
tsigrset 13
ler
unload 3
teclas de função 17
write 1
linear movement 51, 11
FOR 1
load
Funções 1
activate payload 1
G
M
GOTO 1
maximum velocity 1
GripLoad 1
MoveC 17
group of I/O 1
MoveCDO 23
I MoveCSync 27
MoveJ 31
IDelete 1 MoveJDO 35
IDisable 1 MoveJSync 39
IEnable 1 MoveL 43, 11
IF 1 MoveLDO 47
Incr 1 MoveLSync 51
increment 1 movement
interrupção linear 51, 11
ativar 1 movimento
conecta 1 circular 23, 27
de um sinal de entrada digital 1 circulo 17
desativar 1 eixo 35, 39
numa posição 1 eixo a eixo 31
interrupt linear 43, 47
delete 1 movimento circular 17, 23, 27
disable 1 movimento de eixo 35, 39
enable 1 movimento eixo a eixo 31
timed 1 movimento linear 43, 47
InvertDO 1
IO unit O
disable 3 Open
enable 7
file 55
IODisable 3
serial channel 55
IOEnable 7
ISignalDI 1 P
ISignalDO 5
ISleep 1 PathResol 1
ITimer 1 payload
IWatch 1 activate 1
PDispOff 1
PDispOn 3

2-2 RAPID Programming


Instructions

posição fixa E/S 1


ProcCall 1
procedure call 1
program displacement
activate 3
deactivate 1
PulseDO 3

RAISE 1
Rebobinar 3
reinicia um erro
reinicia 1
repeat 1
Reset 1
resolução do trajeto
alterar 1
RestoPath 1
RETRY 1
RETURN 1
routine call 1

saída
numa posição 1
SearchC 1
SearchL 7
serial channel
close 1
file 1
open 55
write 1
Set 1
SetAO 1
SetDO 1
SetGO 1
SingArea 1
soft servo
activating 1
deactivating 1
SoftAct 1
SoftDeact 1
SpyStart 11, 23
StartMove 1
Stop 3
StopMove 5
stopwatch 3
StorePath 7

DataTypes and Routines 2--3


Instructions

TEST 9
TestSignReset 13
TPErase 15
TPReadFK 17
TPReadNum 21
TPShow 1
TPWrite 1
TriggC 3
TriggEquip 1
TriggInt 1
TriggIO 1
TriggJ 9
TriggL 5
TRYNEXT 1
TuneReset 3
TuneServo 5

unidade mecânica
ativada 1
desativa 1
unidades de drive comum 1
unidades de drive comuns 1
UnLoad 3

velocity
decrease 1
max. 1
VelSet 1

wait
a specific time 1
any condition 1
until the robot is in position 1
WaitDO 1
WaitTime 1
WaitUntil 1
WHILE 1
Write 1
write
error message 1
on the teach pendant 1
WriteBin 1
WriteStrBin 1

2--4 DataTypes and Routines


Instructions

WZBoxDef 1
WZCylDef 1
WZDisable 1
WZDOSet 1
WZEnable 1
WZFree 1
WZLimSup 1
WZSphDef 1

DataTypes and Routines 2--5


Instructions

2--6 DataTypes and Routines