RAPID ReferenceManual PDF
RAPID ReferenceManual PDF
RAPID ReferenceManual PDF
ÍNDICE
Exemplos
reg1 := 5;
counter := counter + 1;
Argumentos
Data := Value
Data DataType: All
O valor desejado.
Exemplos
tool1.tframe.trans.x := tool1.tframe.trans.x + 20;
pallet{5,8} := Abs(value);
Limitações
O dado (o dado o qual o dado deve ser mudado) não deve ser
- uma constante
- um tipo de dado sem valor.
Sintaxe
(EBNF)
<designação de destino> ’:=’ <expressão> ’;’
<designação de destino> ::=
<variável>
| <persistente>
| <parâmetro>
| <VAR>
Informações relacionadas
Descrito em:
Expressões Características Básicas- Expressões
DataType sem valor Características Básicas - Tipo de dados
Designando um valor inicial ao dado Características Básicas - Dados
Designando manualmente um valor ao dado Programando e Testando
Exemplos
AccSet 50, 100;
Argumentos
AccSet Acc Ramp
Acc DataType: num
Aceleração
Tempo
AccSet 100, 100, i.e.aceleração normal
Aceleração Aceleração
Tempo Tempo
AccSet 30, 100 AccSet 100, 30
Figure 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.
Sintaxe
AccSet
[ Acc ’:=’ ] < expressão (IN) do num > ’,’
[ Ramp ’:=’ ] < expressão (IN) do num > ’;’
Informações relacionadas
Descrito em:
Instruções de posicionamento Sumário RAPID - Movimento
Pode ser usada para determinar qual é unidade a ser ativada quando, por exemplo, uni-
dades de drive comuns são usadas.
Exemplo
ActUnit orbit_a;
Argumentos
ActUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit
Execução do programa
Quando o robô e eixos externos tiverem que chegar ao mesmo tempo, a unidade
mecânica especificada é ativada. Isto significa que é controlada e monitorada pelo
robô.
Limitações
A instrução ActUnit não pode ser usada em
A instrução de movimento anterior a essa instrução deve ser concluída com um ponto
de parada, a fim de fazer um reinício dessa instrução se houver uma falha de energia.
Sintaxe
ActUnit
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’;’
Informações relacionadas
Descrito em:
Desativando unidades mecânicas Instruções - DeactUnit
Unidades mecânicas DataTypes - mecunit
Outros exemplos Instruções - DeactUnit
Exemplos
Add reg1, 3;
Argumentos
Add Name AddValue
Name DataType: num
Sintaxe
Add
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’,’
[ AddValue ’:=’ ] < expressão (IN) do num > ’;’
Informações relacionadas
Descrito em:
Incrementa uma variável em 1 Instruções - Incr
Decrementa uma variável em 1 Instruções - Decr
Alterando dado usando uma expressão Instruções - :=
arbitrária, ex. multiplicação
A instrução AliasIO deve ser executada antes de qualquer uso do sinal real. Consulte
o exemplo 1 abaixo para módulos carregados e o exemplo 2 abaixo para módulos
internos.
Exemplo 1
VAR signaldo alias_do;
PROC prog_start()
AliasIO config_do, alias_do;
ENDPROC
Argumentos
AliasIO FromSignal ToSignal
FromSignal Tipo de dados: signalxx ou
string
Módulos carregados:
Módulos internos:
O mesmo tipo de dados deve ser usado (ou find) para os argumentos FromSignal e
ToSignal , devendo ser do tipo signalxx (signalai, signalao, signaldi, signaldo, signalgi
ou signalgo).
Execução do programa
O valor descritor de sinal é copiado do sinal fornecido no argumento FromSignal para
o sinal fornecido no argumento ToSignal.
Exemplo 2
VAR signaldi alias_di;
PROC prog_start()
CONST string config_string := "config_di";
AliasIO config_string, alias_di;
ENDPROC
Limitação
Ao iniciar o programa, o sinal de pseudônimo não pode ser usado até que a instrução
AliasIO seja executada.
A instrução AliasIO não está disponível para programação a partir da Unidade de pro-
gramação (somente a partir do Criador de programas). A opção Funções do desen-
volvedor é necessária.
Sintaxe
AliasIO
[ FromSignal ’:=’ ] < reference (REF) of anytype> ’,’
[ ToSignal ’:=’ ] < variable (VAR) of anytype> ’;’
Informações relacionadas
Descrito em:
Instruções de entrada/saída Resumo RAPID -
Sinais de entrada e saída
Funcionalidade de entrada/saída em geral Princípios de E/S e movimentação -
Princípios de E/S
Configuração de E/S Guia do Usuário -
Parâmetros do Sistema
Definindo rotinas de evento Guia do Usuário -
Parâmetros do Sistema
Módulos de tarefa carregados/internos Guia do Usuário -
Parâmetros do Sistema
Exemplo
..
Break;
...
Execução do programa
A instrução pára a execução do programa imediatamente, sem esperar que o robô e os
eixos externos alcancem seus pontos de destino programados para movimentos sendo
feitos ao mesmo tempo. A execução do programa pode, então, ser reiniciada a partir
da próxima instrução.
Se houver uma instrução Break em alguma rotina de evento, a rotina será executada
desde o início do próximo evento.
Sintaxe
Break’;’
Informações relacionadas
Descrito em:
Parando ação do programa Instruções - Stop
Parando após um erro fatal Instruções - Exit
Acabando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove
Exemplos
weldpipe 1;
errormessage;
Set do1;
.
PROC errormessage()
TPWrite "ERROR";
ENDPROC
Argumentos
Procedure { Argument }
Procedure Identificador
Exemplo
weldpipe2 10, lowspeed;
weldpipe3 10 \speed:=20;
Limitações
Os argumentos da rotina devem estar de acordo com seus parâmetros:
Uma rotina pode chamar outra rotina que, por sua vez, chama outra rotina, etc. Uma
rotina também pode chamar a si mesma, i.e. uma chamada recursiva. O número de
níveis de rotina permitido depende do número de parâmetros, mas normalmente é per-
mitido mais que 10 níveis.
Sintaxe
(EBNF)
<procedure> [ <argument list> ] ’;’
Informações relacionadas
Descrito em:
Argumentos, parâmetros Características Básicas - Rotinas
Mais exemplos Exemplos de programas
Exemplo
reg1 := 2;
CallByVar “proc”, reg1;
Argumentos
CallByVar Name Number
Name Data type: string
Exemplo
Seleção estática de chamada do procedimento
TEST reg1
CASE 1:
lf_door door_loc;
CASE 2:
rf_door door_loc;
CASE 3:
lr_door door_loc;
CASE 4:
rr_door door_loc;
DEFAULT:
EXIT;
ENDTEST
cionada .
A localização da porta no argumento door_loc.
reg1 := 2;
%”proc”+NumToStr(reg1,0)% door_loc;
reg1 := 2;
CallByVar “proc”,reg1;
Limitações
Apenas pode ser utilizado para chamar procedimentos sem parâmetros.
Tratamento de erros
Em caso de referência a um procedimento desconhecido, a variável ERRNO do sistema
é ajustada para ERR_REFUNKPRC.
Sintaxe
CallByVar
[Name ‘:=’] <expression (IN) of string>’,’
[Number ‘:=‘] <expression (IN) of num>’;’
Informação relacionada
Descrito em:
Procedimentos de chamada Características Básicas- Rotinas
Guia do Usuário- A Linguagem de
Programação RAPID
Exemplo
Clear reg1;
Argumentos
Clear Name
Name DataType: num
Sintaxe
Clear
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’
Informações relacionadas
Descrito em:
Incremento a variável em1 Instruções - Incr
Decremento a variável em1 Instruções - Decr
Exemplo
VAR iodev channel2;
...
Open "sio1:", channel2 \Bin;
ClearIOBuff channel2;
Argumentos
ClearIOBuff IODevice
IODevice Tipo de dados: iodev
O nome (referência) do canal serial cujo buffer de entrada deve ser limpo.
Execução do programa
Todos os caracteres do canal serial de entrada que passam pelo buffer são descartados.
As próximas instruções de leitura esperam nova entrada do canal.
Limitações
Essa instrução só pode ser usada em canais seriais.
Sintaxe
ClearIOBuff
[IODevice ’:=’] <variable (VAR) of iodev>’;’
Informações relacionadas
Descrito em:
Abertura de um canal serial Resumo RAPID - Comunicação
Esta função pode ser usada antes de usar o relógio para ter certeza que ele está no 0.
Exemplo
ClkReset clock1;
Argumentos
ClkReset Clock
Clock DataType: clock
Execução do programa
Quando o relógio é zerado, ele é colocado em 0.
Sintaxe
ClkReset
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’
Informações relacionadas
Descrito em:
Outras instruções do relógio Sumário RAPID - Sistema & Hora
Exemplo
ClkStart clock1;
Argumentos
ClkStart Clock
Clock DataType: clock
Execução do programa
Quando o relógio é ligado, ele irá contar os segundos até que seja parado.
Exemplo
VAR clock clock2;
ClkReset clock2;
ClkStart clock2;
WaitUntil DInput(di1) = 1;
ClkStop clock2;
time:=ClkRead(clock2);
Sintaxe
ClkStart
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’
Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora
Exemplo
ClkStop clock1;
Argumentos
ClkStop Clock
Clock DataType: clock
Execução do programa
Quando o relógio é parado, ele pára de contar o tempo.
Sintaxe
ClkStop
[ Clock ’:=’ ] < variável (VAR) do clock > ’;’
Informações relacionadas
Descrito em:
Outras informações do relógio Sumário RAPID - Sistema & Hora
Mais exemplos Instruções - ClkStart
Exemplo
Close channel2;
Argumentos
Close IODevice
IODevice DataType: iodev
Execução do programa
O arquivo ou canal serial especificado é fechado e deve ser reaberto antes de ler ou
escrever. Se ele já estava fechado, a instrução é ignorada.
Sintaxe
Close
[IODevice ’:=’] <variável (VAR) do iodev>’;’
Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação
Comment Comentário
Comment é usado somente para tornar o programa mais fácil de entender. Não tem
efeito na execução do programa.
Exemplo
! Vai para a posição acima do palete
MoveL p100, v500, z20, tool1;
Argumentos
! Comment
Comment Text string
Nenhum texto.
Execução do programa
Nada acontece quando você executa esta função.
Sintaxe
(EBNF)
’!’ {<character>} <newline>
Informações relacionadas
Descrito em:
Caracteres permitidos em um comentário Características Básicas-
Elementos básicos
Comentários com dado e declaração de Características Básicas-
rotina Elementos básicos
Com Conf\Off o robô não pode conectar a configuração de eixos principais - o robô -
irá procurar uma solução com a mesma configuração dos eixos principais como fosse
a atual. Move-se para a configuração de punho mais próxima para os eixos 4 e 6.
Exemplos
ConfJ \Off;
MoveJ *, v1000, fine, tool1;
ConfJ \On;
MoveJ *, v1000, fine, tool1;
Argumentos
ConfJ [\On] | [\Off]
\On DataType: switch
O robô sempre se move para a configuração de eixo programada. Se isto não for
possível utilizando a posição e orientação programada, a execução do programa
pára.
Execução do programa
Se o argumento \On (ou nenhum argumento) é escolhido, o robô sempre se moverá
Sintaxe
ConfJ
[ ’\’ On] | [ ’\’ Off] ’;’
Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Princípios de Movimento -
Configuração do robô
Configuração do robô
durante movimento linear Instruções - ConfL
Exemplos
ConfL \On;
MoveL *, v1000, fine, tool1;
SingArea \Wrist;
Confl \On;
MoveL *, v1000, fine, tool1;
ConfL \Off;
MoveL *, v1000, fine, tool1;
Argumentos
ConfL [\On] | [\Off]
\On DataType: switch
Execução do programa
Durante movimento linear ou circular, o robô sempre se move para a posição e orien-
tação programada que tem a configuração de eixo mais próxima possível. Se o argu-
mento \On (ou nenhum argumento) é escolhido, então o robô checa se a configuração
de eixo de punho programada pode ser alcançada pela atual posição. Se ela não pode
ser alcançada, a execução do programa pára. Entretanto, é possível reiniciar o programa
novamente, mas os eixos do punho continuarão com configuração errada. Num ponto
de parada, o robô checa que as configurações alcançadas de todos os eixos, e não
somente dos eixos do punho.
Sintaxe
ConfL
[ ’\’ On] | [ ’\’ Off] ’;’
Informações relacionadas
Descrito em:
Manipulação com configurações diferentes Movimentos e Princípios E/S-
Configuração do robô
Configuração do robô durante movimento Instruções - ConfJ
eixo a eixo
Exemplo
VAR intnum feeder_low;
CONNECT feeder_low WITH feeder_empty;
ISignalDI di1, 1 , feeder_low;
Argumentos
CONNECT Interrupt WITH Trap routine
Interrupt DataType: intnum
Execução de programa
A variável é designada a uma interrupção identificada na qual pode então ser usada
quando ordena ou desabilita interrupções. Esta identificação é também conectada para
especificar uma rotina trap.
Note que um evento pode ser manipulado, uma interrupção também deve ser ordenada,
por exemplo, o evento especificado.
Limitações
Uma interrupção (identidade de interrupção) não pode ser conectada mais de uma vez
na rotina trap.
Interrupções diferentes, entretanto, pode ser conectada à mesma rotina trap.
Quando uma interrupção tinha sido conectada a uma rotina trap, ela não pode ser
reconectada ou transferida a uma outra rotina; ela deve primeiro ser apagada usando a
instrução IDelete.
Tratamento de erros
Se a variável de interrupção já está ligada à rotina TRAP, a variável do sistema ERRNO
é ajustada para ERR_ALRDYCNT.
Sintaxe
(EBNF)
CONNECT <destino da conexão> WITH <trap>‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações sobre interrupções Características básicas- Interrupções
Também pode ser usada para determinar qual unidade deve ser ativada quando, por
exemplo, unidades de drive comum são usadas.
Exemplos
DeactUnit orbit_a;
A unidade track_motion será estacionário quando o robô se move para p20 e p30.
Depois disso, ambos o robô e o track_motion se moverão para p40.
Argumentos
DeactUnit MecUnit
MecUnit (Unidade Mecânica) DataType: mecunit
Execução do programa
Quando o robô e eixos externos tiverem que chegar ao mesmo tempo, a unidade
mecânica especificada é desativada. Isto significa que ela não será controlada nem
monitorada até ser reativada.
Limitações
A instrução DeactUnit não pode ser usada
A instrução de movimento anterior a esta instrução, deve ser terminada com um ponto
de parada, a fim de fazer um reinício dessa instrução se houver uma falha de energia.
Sintaxe
DeactUnit
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’;’
Informações relacionadas
Descrito em:
Ativando unidades mecânicas Instruções - ActUnit
Unidades mecânicas DataTypes- mecunit
Decr Decremento de 1
Decr é usado para subtrair 1 de uma variável numérica ou persistente.
Exemplo
Decr reg1;
Argumentos
Decr Name
Name DataType: num
Exemplo
TPReadNum no_of_parts, "Quantas partes devem ser produzidas? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE
Sintaxe
Decr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’
Informações relacionadas
Descrito em:
Incrementa a variável em 1 Instruções - Incr
Subtraindo qualquer valor de uma variável Instruções - Add
Alterando dados usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação
O offset para eixos externos é ativado pela instrução EOffsSet ou EOffsOn e se aplica
a todos os movimentos até que algum outro offset para eixos externos seja ativado ou
até que o offset para eixos externos seja desativado.
Exemplos
EOffsOff;
O offset é definido como uma diferença entre a posição de cada eixo no p10 e
p11. Este deslocamento afeta o movimento para p20 e p30,mas não para p40.
Execução do programa
Offsets para eixos externos ativos são desligados.
Sintaxe
EOffsOff ‘;’
Informações relacionadas
Descrito em:
Definição de offset usando duas posições Instruções - EOffsOn
Definição de offset usando valores Instruções - EOffsSet
Desativação do deslocamento do robô Instruções - PDispOff
Exemplos
MoveL p10, v500, z10, tool1;
EOffsOn \ExeP:=p10, p20;
Ativação do offset para eixos externos. Isto é calculado para cada eixo baseado
na diferença entre as posições p10 e p20.
Ativação do offset para eixos externos. Desde que o ponto de parada foi usado
na instrução anterior, o argumento \ExeP não tem que ser usado. O deslocamento
é calculado com base na diferença entre a posição atual de cada eixo e o ponto
programado (*) gravado na instrução.
Argumentos
EOffsOn [ \ExeP ] ProgPoint
[\ExeP ] (Executed Point) DataType: robtarget
Execução do programa
O offset é calculado como uma diferença entre ExeP e ProgPoint para cada eixo
externo separadamente. Se ExeP não foi especificado, a atual posição dos eixos no
momento da execução do programa é usada no lugar. Desde que a atual posição dos
eixos é usada, os eixos não deverão se mover quando EOffsOn é executado.
Este offset é então usado para deslocar a posição dos eixos externos em uma posição
de instrução subsequente e permanece ativo até outro offset ser ativado (a instrução
EOffsSet ou EOffsOn) ou até que o offset para eixos externos seja desativado (a
instrução EOffsOff).
Somente um offset para cada eixo externo individual pode ser ativado por vez. Por
outro lado, vários EOffsOn podem ser programados um após o outro e, se isto ocorre,
os diferentes offsets serão adicionados.
Exemplo
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;
Sintaxe
EOffsOn
[ ‘\’ ExeP ’:=’ < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’;’
Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição de offset usando valores Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas
Exemplo
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
.
EOffsSet eax_a_p100;
100
Sistema de Coordenada
Normal
0 +X
Sistema de Coordenada
ExtOffs
0 +X
Figure 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:
Execução do programa
O offset para eixo externo é ativado quando a instrução EOffsSet é ativada e permanece
ativo até outro offset ser ativado (a instrução EOffsSet ou EOffsOn) ou até o offset para
eixos externos ser desativado (o EOffsOff).
Somente um offset para eixo externo pode ser ativado por vez. Offsets não podem ser
adicionados um ao outro usando EOffsSet.
Sintaxe
EOffsSet
[ EAxOffs ’:=’ ] < expressão (IN) do extjoint> ’;’
Informações relacionadas
Descrito em:
Desativação do offset para eixos externos Instruções - EOffsOff
Definição do offset usando duas posições Instruções - EOffsSet
Deslocamento dos movimentos do robô Instruções - PDispOn
Definição de dado do tipo extjoint DataType - extjoint
Sistemas de Coordenadas Princípios de Movimento -
Sistemas de Coordenadas
Exemplo
ErrWrite “PLC error” , “Erro fatal no PLC” \RL2:=”Call service”;
Stop;
;
Stop;
Argumentos
ErrWrite [ \W ] Header Reason [ \RL2] [ \RL3] [ \RL4]
[ \W ] (Warning) DataType: switch
Execução do programa
Uma mensagem de erro (máx. 5 linhas) é mostrada no display da unidade de pro-
gramação e escrita na lista de mensagem do robô.
ErrWrite sempre gera o programa erro no. 80001 ou no caso de aviso (argumento \W)
gera no. 80002.
Limitações
Comprimento total do “string” (Cabeçalho+Razão+\RL2+\RL3+\RL4) limitado a 145
caracteres.
Sintaxe
ErrWrite
[ ’\’ W ’,’ ]
[ Header ’:=’ ] < expressão (IN) do string> ‘,’
[ Reason ’:=’ ] < expressão (IN) do string>
[ ’\’ RL2 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL3 ’:=’ < expressão (IN) do string> ]
[ ’\’ RL4 ’:=’ < expressão (IN) do string> ] ‘;’
Informações relacionadas
Descrito em:
A instrução EXIT deve ser usada quando ocorre um erro fatal ou quando a execução do
programa é parada permanentemente. A instrução Stop é usada para parar temporaria-
mente a execução do programa.
Exemplo
ErrWrite "Erro fatal","Estado ilegal";
EXIT;
A execução do programa pára e não pode ser reiniciada daquela posição do pro-
grama.
Sintaxe
EXIT ’;’
Informações relacionadas
Descrito em:
Parando a execução do programa Instruções - Stop
temporariamente
Exemplo
VAR num cyclecount:=0;
VAR intnum error_intno;
PROC main()
IF cyclecount = 0 THEN
CONNECT error_intno WITH error_trap;
ISignalDI di_error,1,error_intno;
ENDIF
cyclecount:=cyclecount+1;
! start to do something intelligent
....
ENDPROC
TRAP error_trap
TPWrite “ERROR, I will start on the next item”;
ExitCycle;
ENDTRAP
Execução do programa
A execução de ExitCycle na tarefa de programa MAIN produz os seguintes resultados
na tarefa MAIN:
ExitCycle não afeta nenhuma das outras coisas modais no programa e no sistema,
como:
Sintaxe
ExitCycle’;’
Informações relacionadas
Descrito em:
Parar após erro fatal Instruções - EXIT
Terminar execução do programa Instruções - EXIT
Parar para ações do programa Instruções - Stop
Terminar execução de uma rotina Instruções - RETURN
Exemplo
FOR i FROM 1 TO 10 DO
routine1;
ENDFOR
Argumentos
FOR Loop counter FROM Start value TO End value
[STEP Step value] DO ... ENDFOR
Loop counter Identificador
O valor pelo qual o loop counter é incrementado (ou decrementado) para cada loop.
(usualmente valores inteiros)
Se este valor não é especificado, o passo deste valor será automaticamente fixado
em 1 (ou -1 se o valor inicial for maior que o valor final).
Exemplo
FOR i FROM 10 TO 2 STEP -1 DO
a{i} := a{i-1};
ENDFOR
Execução do programa
1. As expressões para o início, fim e passo destes valores são calculados.
2. Ao loop counter é atribuido o valor inicial.
3. O valor do loop counter é checado para ver se este valor está entre o valor inicial e
final, ou se ele é igual ao valor inicial ou final. Se o valor do loop counter estiver fora
destes limites, o loop FOR pára, e a execução do programa continua com a instrução
ENDFOR.
4. As instruções no loop FOR são executadas.
5. O loop counter é incrementado (ou decrementado) de acordo com o passo deste
valor.
6. O loop FOR é repetido, iniciando do ponto 3.
Limitações
O loop counter (do DataType num) pode somente ser acessado de dentro do loop FOR
e consequentemente mascarar outro dado e rotina que tem o mesmo nome. Ele pode
somente ser lido (não atualizado) na instrução de loop FOR.
Valores decimais para início, final e passo destes valores, sem combinação com exata
condição de finalização para o loop FOR, não pode ser usado (se indefinidos ou não o
último loop é rodado).
Sintaxe
(EBNF)
FOR <loop variável> FROM <expressão> TO <expressão>
[ STEP <expressão> ] DO
<lista de instrução>
ENDFOR
<loop variável> ::= <identificador>
Informações relacionadas
Descrito em:
Com esta instrução será possível buscar dados e o nome da Ferramenta (Tool) ou
Objeto deTrabalho (Work Obkect) ativos no momento.
Exemplo
PERS tooldata curtoolvalue := [TRUE, [[0, 0, 0], [1, 0, 0, 0]],
[0, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0]];
VAR string curtoolname;
GetSysData curtoolvalue;
Copia o valor do dado da ferramenta ativa atual para a variável persistente cur-
toolvalue.
Argumentos
GetSysData DestObject [\ ObjectName ]
DestObject Tipo de dados: anytype
Persistente para armazenamento dos valores dos dados do sistema ativo atual.
Execução do programa
Quando executar a instrução GetSysData o valor do dado atual é guardado no per-
sistente especificado no argumento DestObject.
Os dados do sistema atual para Ferramenta ou Objeto de Trabalho são ativados pela
execução de qualquer instrução de movimento ou poderão ser ajustados manualmente
na janela de deslocamento lento (jog).
Sintaxe
GetSysData
[ DestObject’:=’] < persistente(PERS) of anytype>
[’\’ObjectName’:=’ < expressão (INOUT) of string> ] ’;’
Informações relacionadas
Descritas em:
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Exemplos
GOTO next;
.
next:
reg1 := 1;
next:
.
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;
Argumentos
GOTO Label
Label Identificador
Limitações
Só é possível para transferir a execução do programa para um label dentro da mesma
rotina.
Sintaxe
(EBNF)
GOTO <identificador>’;’
Informações relacionadas
Descrito em:
Identificador Instruções - label
Outras instruções que trocam Sumário RAPID -
o fluxo do programa Controlando o fluxo do programa
Descrição
É muito importante definir sempre a carga real da ferramenta e a carga
sustentada do robô, quando utilizado. Definições incorretas de dados de carga
podem resultar em sobrecarga da estrutura mecânica do robô.
Exemplos
GripLoad piece1;
GripLoad load0;
Argumentos
GripLoad Load
Load DataType: loaddata
Execução do programa
A carga especificada afeta a performance do robô.
Sintaxe
GripLoad
[ Load ’:=’ ] < persistente (PERS) do loaddata > ’;’
Informações relacionadas
Descrito em:
Definição do dado de carga DataTypes - loaddata
Definição da carga da ferramenta DataTypes - tooldata
Exemplo
IDelete feeder_low;
Argumentos
IDelete Interrupt
Interrupt DataType: intnum
A identificação da interrupção.
Execução do programa
A definição da interrupção é completamente apagada. Para definí-la novamente, ela
primeiro deve ser reconectada a uma rotina trap.
A instrução deve ser precedida por um ponto de parada. Caso contrário a interrupção
será desativada antes que o ponto final seja alcançado.
Interrupções não tem que ser apagadas; isto é feito automaticamente quando
Sintaxe
IDelete
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desabilita temporariamente uma interrupção Instruções - ISleep
Desabilita temporariamente todas interrupções Instruções - IDisable
Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;
Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas numa pilha. Quando as interrupções forem permitidas novamente, a(s) inter-
rupção(ões) do programa então começam, imediatamente a serem geradas, executadas
na sequência “first in - first out” da pilha.
Sintaxe
IDisable‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Permitindo interrupcões Instruções - IEnable
Exemplo
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;
Execução do programa
Interrupções que ocorrem durante o tempo em que a instrução IDisable está ligada, são
colocadas em uma fila. Quando interrupções são permitidas uma vez ou mais (IEna-
ble), a interrupção(s) do programa então imediatamente começa gerando, a execução
da sequência “first in - first out” primeiro a entrar primeiro a sair. A execução do pro-
grama então continua no programa usual e interrupções que ocorram após isto, estarão
de acordo logo que, elas ocorram.
Sintaxe
IEnable‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Não permitindo interrupções Instruções - IDisable
Exemplos
IF reg1 > 5 GOTO next;
Argumentos
IF Condition ...
Condition DataType: bool
A condição que deve ser satisfeita para que a instrução seja executada.
Sintaxe
(EBNF)
IF <expressão condicional> ( <instrução> | <SMT>) ’;’
Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas - Expressões
IF com várias instruções Instruções - If
Exemplos
IF reg1 > 5 THEN
Set do1;
Set do2;
ENDIF
Os sinais do1 e do2 são ligados ou desligados dependendo se reg1 é maior que
5 ou não.
Argumentos
IF Condition THEN ...
{ELSEIF Condition THEN ...}
[ELSE ...]
ENDIF
Condition DataType: bool
Exemplo
IF counter > 100 THEN
counter := 100;
ELSEIF counter < 0 THEN
counter := 0;
ELSE
counter := counter + 1;
ENDIF
Execução do programa
As condições são testadas, em ordem sequencial, até que uma delas seja satisfeita. A
execução do programa continua com as instruções associadas àquela condição. Se ne-
nhuma das condições for satisfeita, a execução do programa continua com as instruções
seguindo ELSE. Se mais de uma condição for alcançada, somente as instruções rela-
cionadas com a primeira daquelas condições são executadas.
Sintaxe
(EBNF)
IF <expressão condicional> THEN
< lista de instruções>
{ELSEIF <expressão condicional> THEN < lista de instruções> | <EIF>}
[ELSE
< lista de instruções>]
ENDIF
Informações relacionadas
Descrito em:
Condições (expressões lógicas) Características Básicas- Expressões
Incr Incrementa de 1
Incr é usado para somar 1 a uma variável numérica ou persistente.
Exemplo
Incr reg1;
Argumentos
Incr Name
Name DataType: num
Exemplo
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Num:=no_of_parts;
ENDWHILE
Sintaxe
Incr
[ Name ’:=’ ] < var ou pers (INOUT) do num > ’;’
Informações relacionadas
Descrito em:
Decrementando uma variável em 1 Instruções - Decr
Adicionando qualquer valor a uma variável Instruções - Add
Alterando dado usando uma expressão Instruções - :=
arbitrária, por exemplo, multiplicação
Exemplo
InvertDO do15;
Argumentos
InvertDO Signal
Signal DataType: signaldo
Execução do programa
O atual valor do sinal é invertido (veja Figure 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
Sintaxe
InvertDO
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’
Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral Entrada/Saída Movimento e Princípios de E/S -
Princípios de E/S
Configuração da E/S Parâmetros do Sistema
Exemplo
IODisable “cell1”, 5;
Argumentos
IODisable UnitName MaxTime
UnitName Tipo de dados: string
O nome da unidade de E/S a ser desativada (com o mesmo nome como foi con-
figurada).
Execução do programa
A unidade de E/S especificada inicia os passos de desativar. A instrução fica pronta
quando os passos de desativar tiverem acabado. Se MaxTime acabar antes da unidade
de /S ter terminado os passos de desativar, um erro recuperável será gerado.
Depois de desativar uma unidade de E/S, qualquer ajuste de saídas nesta unidade resul-
tará em um erro.
Exemplo
PROC go_home()
VAR num recover_flag :=0;
...
! Start to disable I/O unit cell1
recover_flag := 1;
IODisable “cell1”, 0;
! Move to home position
MoveJ home, v1000,fine,tool1;
! Wait until disable of I/O unit cell1 is ready
recover_flag := 2;
IODisable “cell1”, 5;
...
ERROR
IF ERRNO = ERR_IODISABLE THEN
IF recover_flag = 1 THEN
TRYNEXT;
ELSEIF recover_flag = 2 THEN
RETRY;
ENDIF
ELSEIF ERRNO = ERR_EXCRTYMAX THEN
ErrWrite “Erro IODisable”, “Not possible to disable I/O unit cell”;
Stop;
ENDIF
ENDPROC
O mesmo princípio pode ser usado com IOEnable (isto poupará mais tempos de
ciclo comparado com IODisable).
Sintaxe
IODisable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’
Informações relacionadas
Descrito em:
Ativando uma unidade de E/S Instruções - IOEnable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e E/S -
I/O Principles
Configuração de E/S Guia do Usuário - Parâmetros do sis-
tema
Exemplos
IOEnable “cell1”, 5;
Argumentos
IOEnable UnitName MaxTime
UnitName Tipo de dados: string
O nome da unidade de E/S a ser desativada (com mesmo nome como confi-
gurado).
Execução do programa
A unidade de E/S especificada inicia os passos de ativar. A instrução está pronta
quando os passos de ativar terminarem. Se MaxTime acabar antes da unidade de E/S
ter terminados os passos de ativar, um erro recuperável será gerado.
Após uma seqüencia de IODisable - IOEnable, todas as saídas para a unidade de E/S
corrente serão ajustadas para os valores antigos (antes de IODisable).
Exemplo
IOEnable pode também ser usado para checar se alguma unidade de E/S está
desconectada por alguma razão.
Antes de usar sinais em cell1 da unidade de E/S, um teste é feito, se tentando ati-
var a unidade de E/S com um excesso de tempo após 0 seg. Se o teste falhar, é
feito um jump para o tratamento de erros. No tratamento de erros, a execução do
programa aguarda 1 seg. e uma nova tentativa é feita. Após 5 novas tentativas, o
erro ERR_IOENABLE é propagado para o chamador desta rotina.
Sintaxe
IOEnable
[ UnitName ’:=’ ] < expressão (IN) de string> ’,’
[ MaxTime ’:=’ ] < expressão (IN) de num > ’;’
Informações relacionadas
Descrito em:
Mais exemplos Instruções - IODisable
Disativando uma unidade de E/S Instruções - IODisable
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade de Entrada/Saída em geral Princípios de movimentação e de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros do
sistema
Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAI \Single, ai1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;
Ordena uma interrupção para ocorrer na primeira vez que o valor lógico do sinal
de entrada analógica ai1 estiver entre 0,5 e 1,5. Em seguida, uma chamada é feita
à rotina de interceptação iroutine1.
Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado for maior que 0,1.
Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
entrada analógica ai1 for inferior a 0,5 ou superior a 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado for maior que 0,1.
Argumentos
ISignalAI [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch
Define a diferença mínima de sinal lógico para que uma nova interrupção seja
gerada. O valor de sinal real comparado com o valor de referência armazenado
deve ser maior que o DeltaValue especificado para que uma nova interrupção seja
gerada.
Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar interrupções.
Execução do programa
Quando o sinal satisfaz as condições especificadas (tanto Condition quanto DeltaV-
alue), uma chamada é feita à rotina de interceptação correspondente. Quando isso tiver
sido executado, a execução do programa continuará de onde a interrupção ocorreu.
Para que uma interrupção seja ordenada, toda vez que o sinal é amostrado, o valor do
sinal é lido, salvo e, posteriormente, utilizado como valor de referência para a condição
DeltaValue.
RefValue := CurrentValue
Interrupção subscrição
Falso
CurrentValue testado em relação a
Condition, HighValue e LowValue
Verdadeiro
Falso
DeltaValue = 0
Verdadeiro
Interrupção gerada
Continuar
Nova amostra
Falso
CurrentValue verificado em relação a
Condition, HighValue e LowValue
Verdadeiro
Verdadeiro
Não há DPos ou DNeg especificado e
ABS(CurrentValue - RefValue) > DeltaValue
Falso
Falso
Verdadeiro
DNeg especificado e
(RefValue - CurrentValue) > DeltaValue
Falso
RefValue := CurrentValue
RefValue := CurrentValue
Continuar
HighValue
Valor do sinal
LowValue
0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência
A amostra 1 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 0 é maior que
DeltaValue.
A amostra 2 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal comparada com a amostra 1 é maior que
DeltaValue.
A amostra 12 não irá gerar interrupção alguma porque a diferença de sinal com-
parada com a amostra 6 é inferior a DeltaValue.
HighValue
Valor do sinal
LowValue
0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência
A amostra 6 irá gerar uma interrupção porque o valor do sinal está entre High-
Value e LowValue e a diferença de sinal na direção positiva comparada com a
amostra 2 é maior que DeltaValue.
HighValue
Valor do sinal
LowValue
0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência
A amostra 8 irá gerar uma interrupção porque o valor do sinal está acima de
HighValue e a diferença de sinal na direção positiva comparada com a amostra 7
é maior que DeltaValue.
HighValue
Valor do sinal
LowValue
0 1 2 3 4 5 6 7 8 9 10 11 12 Amostras
Tempo para ordem de subscrição da interrupção
Armazenamento do valor de referência
Tratamento de erros
Na subscrição de interrupção em um sinal de entrada analógico, uma interrupção será
feita para cada alteração no valor analógico que satisfaça a condição especificada ao
ordenar a subscrição da interrupção. Se o valor analógico estiver ruidoso, várias inter-
rupções poderão ser geradas, mesmo que somente um ou dois bits no valor analógico
tenham sido alterados.
Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.
Sintaxe
ISignalAI
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalai>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’
Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada Instruções - ISignalAO
analógica
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de Características básicas - Interrupções
interrupções
Mais exemplos Tipos de dados - intnum
Parâmetros de sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES
Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalAO \Single, ao1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;
Ordena uma interrupção para ocorrer na primeira vez que o valor lógico do sinal
de saída analógica ao1 estiver entre 0,5 e 1,5. Em seguida, uma chamada é feita
à rotina de interceptação iroutine1.
Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver entre 0,5 e 1,5 e a diferença absoluta de sinal com-
parada com o valor de referência armazenado anteriormente for maior que 0,1.
Ordena uma interrupção para ocorrer toda vez que o valor lógico do sinal de
saída analógica ao1 estiver abaixo de 0,5 ou acima de 1,5 e a diferença absoluta
de sinal comparada com o valor de referência armazenado anteriormente for
maior que 0,1.
Argumentos
ISignalAO [\Single] Signal Condition HighValue LowValue
DeltaValue [\DPos] | [\DNeg] Interrupt
[\Single] Tipo de dados: switch
Define a diferença de sinal lógico mínima para a geração de uma nova inter-
rupção. O valor real do sinal comparado com o valor de referência armazenado
anteriormente deve ser maior que o DeltaValue especificado para que uma nova
interrupção seja gerada.
Se nenhum dos argumentos \DPos e \DNeg for usado, ambas as diferenças posi-
tivas e negativas irão gerar novas interrupções.
Execução do programa
Consulte as instruções ISignalAI para obter informações sobre:
- Execução do programa
- Condição para geração de interrupções
- Mais exemplos
Limitações
Os argumentos HighValue e LowValue devem estar na faixa entre valor lógico máximo
e valor lógico mínimo definida para o sinal.
Sintaxe
ISignalAO
[ ‘\’Single’,’]
[ Signal’:=‘ ]<variável (VAR) de signalao>‘,’
[ Condition’:=‘ ]<expressão (IN) de aiotrigg>‘,’
[ HighValue’:=‘ ]<expressão (IN) de num>‘,’
[ LowValue’:=‘ ]<expressão (IN) de num>‘,’
[ DeltaValue’:=‘ ]<expressão (IN) de num>
[ ‘\’DPos] | [ ‘\’DNeg] ‘,’
[ Interrupt’:=‘ ]<variável (VAR) de intnum>‘;’
Informações relacionadas
Descrito em:
Resumo de interrupções Resumo do RAPID - Interrupções
Definição de constantes Tipos de dados - aiotrigg
Interrupção oriunda de sinal de entrada analógicaInstruções - ISignalAI
Interrupção oriunda de sinal de entrada digital Instruções - ISignalDI
Interrupção oriunda de sinal de saída digital Instruções - ISignalDO
Mais informações sobre gerenciamento de interrupçõesCaracterísticas básicas - Inter-
rupções
Mais exemplos Tipos de dados - intnum
Parâmetros do sistema relacionados (filtro) Parâmetros do sistema - Sinais de ES
Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;
Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.
ISignalDI di1,0,sig1int;
Ordena uma interrupção que ocorre toda vez que o sinal de entrada digital di1 é
colocado em 0.
Ordena uma interrupção que ocorre somente na primeira vez que o sinal de
entrada digital di1 é colocado em 1.
Argumentos
ISignalDI [ \Single ] Signal TriggValue Interrupt
[ \Single ] DataType: switch
O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.
TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).
Execução do programa
Quando o sinal assume o valor especificado, uma chamada é feita para a correspon-
dente rotina trap. Quando isto é executado, a execução do programa continua de onde
a interrupção ocorreu.
Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 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
PROC main ( )
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
:
:
IDelete sig1int;
ENDPROC
Sintaxe
ISignalDI
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ TriggValue ’:=’ ] < expressão (IN) do dionum >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’
Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de saída Instruções - ISignalDO
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum
Exemplos
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDO do1,1,sig1int;
Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocada em 1. Um chamado é feito à rotina trap iroutine1.
ISignalDO do1,0,sig1int;
Ordena uma interrupção que ocorre toda vez que o sinal de saída digital do1 é
colocado em 0.
ISignalDO\Single, do1,1,sig1int;
Ordena uma interrupção que ocorre somente na primeira vez que o sinal de saída
digital do1 colocado em 1.
Argumentos
ISignalDO [ \Single ] Signal TriggValue Interrupt
[ \Single ] Data type: switch
O valor no qual o sinal deve ser alterado para ocorrer uma interrupção.
TriggValue 2 ou o valor simbólico edge pode ser usado para geração de inter-
rupções em ambos os flancos positivo ( 0 -> 1) e negativo (1 -> 0).
Execução do programa
Quando o sinal assume o valor especificado (0 ou 1), uma chamada é feita para a rotina
de interceptação correspondente. Quando isto é executado, a execução do programa
continua de onde a interrupção ocorreu.
Se o sinal muda para o valor especificado antes que a interrupção seja ordenada, não
ocorre interrupção (veja Figura 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
PROC main ( )
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC
Sintaxe
ISignalDO
[ ’\’ Single’,’]
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ TriggValue ’:=’ ] < expression (IN) of dionum >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’
Informação relacionada
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Interrupção de um sinal de entrada Instruções - ISignalDI
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Mais exemplos DataTypes - intnum
Exemplo
ISleep sig1int;
Argumentos
ISleep Interrupt
Interrupt DataType: intnum
Execução do programa
Quaisquer interrupções geradas do tipo especificado serão descartadas sem a execução
de qualquer rotina de interceptação, até que a interrupção seja reativada através da
instrução IWatch. Interrupções geradas enquanto ISleep está ativa são ignoradas.
Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
ISleep timeint;
WriteBin ch1, buffer, 30;
IWatch timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “The serial communication is broken”;
EXIT;
ENDIF
ENDTRAP
Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas ou ativadas. Se o
número da interrupção for desconhecido, a variável do sistema ERRNO será ajustada
para ERR_UNKINO (veja "Data types - errnum"). O erro pode então ser manuseado
no tratamento de erros.
Sintaxe
ISleep
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Habilitando uma interrupção Instruções - IWatch
Desabilitando todas as interrupções Instruções - IDisable
Cancelando uma interrupção Instruções - IDelete
Esta instrução pode ser usada, por exemplo, para checar a posição do equipamento pe-
riférico uma vez a cada minuto.
Exemplos
VAR intnum timeint;
CONNECT timeint WITH iroutine1;
ITimer 60, timeint;
Ordena uma interrupção que ocorre ciclicamente a cada 60 segundos. Uma cha-
mada é feita à uma rotina trap iroutine1.
Argumentos
ITimer [ \Single ] Time Interrupt
[ \Single ] DataType: switch
O valor é especificado em segundos. Se Single é ligado, este tempo não pode ser
menor que 0.05segundos. O tempo correspondente para interrupções cíclicas é
0.25 seconds.
Execução do programa
A rotina trap correspondente é automaticamente chamada no dado tempo seguindo a
Exemplo
VAR intnum timeint;
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
.
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite “A comunicação serial está rompida”;
EXIT;
ENDIF
ENDTRAP
Comunicação através do canal serial ch1 por meio de interrupções que são gera-
das a cada 60 segundos. A rotina trap checa se a comunicação está funcionando.
Se ela não está, a execução do programa é interrompida e uma mensagem de erro
aparece.
Limitações
A mesma variável para identidade de interrupção não pode ser usada mais de uma vez,
sem ser primeiramente apagada. Veja Instruções - ISignalDI.
Sintaxe
ITimer
[ ’\’Single ’,’]
[ Time ’:=’ ] < expressão (IN) do num >’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum > ’;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Mais informações em interrupções dirigidas Características Básicas- Interrupções
Esta instrução pode ser usada, por exemplo, para volumes de costura ou valores de
intervalo de
um detetor de costuras.
Exemplos
LOCAL PERS num adtVlt{25}:=[1,1.2,1.4,1.6,1.8,2,2.16667,2.33333,2.5,...];
LOCAL PERS num adptWfd{25}:=[2,2.2,2.4,2.6,2.8,3,3.16667,3.33333,3.5,...];
LOCAL PERS num adptSpd{25}:=10,12,14,16,18,20,21.6667,23.3333,25[,...];
LOCAL CONST num GAP_VARIABLE_NO:=11;
PERS num gap_value;
VAR intnum IntAdap;
PROC main()
! Setup the interrupt. The trap routine AdapTrp will be called
! when the gapvariable with number ‘GAP_VARIABLE_NO’ in
! the sensor interface has been changed. The new value will be available
! in the PERS gp_value variable.
CONNECT IntAdap WITH AdapTrp;
IVarValue GAP_VARIABLE_NO, gap_value, IntAdap;
! Start welding
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ENDPROC
TRAP AdapTrap
VAR num ArrInd;
Argumentos
IVarValue VarNo Value, Interrupt
VarNo Tipo de dados: num
Execução do programa
O sinal de Trig correspondente é automaticamente chamado em um determinado tempo
a seguir à ordem de interrupção. Quando isto tiver sido executado, a execução do pro-
grama continua a partir de onde ocorreu a interrupção.
Limitações
A mesma variável para a identidade de interrupção não pode ser usada mais de cinco
vezes, sem primeiro ser eliminada.
Sintaxe
IVarValue
[ VarNo ’:=’ ] < expression (IN) of num >’,’
[ Value ’:=’ ] < persistent(PERS) of num >’,’
[ Interrupt ’:=’ ] < variable (VAR) of intnum > ’;’
Informação relacionada
Descrita em:
Sumário de interrupts Sumário RAPID - Interrupts
Mais informações sobre Características básicas - Interrupts
o gerenciamento de interrupts
Exemplo
IWatch sig1int;
Argumentos
IWatch Interrupt
Interrupt DataType: intnum
Execução do programa
Reativa mais uma vez as interrupções do tipo especificado. Contudo, as interrupções
geradas enquanto a instrução ISleep estava em vigor são ignoradas.
Exemplo
VAR intnum sig1int;
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;
.
ISleep sig1int;
weldpart1;
IWatch sig1int;
Manipulando erro
Não são permitidas interrupções que não tenham sido ordenadas. Se o número da inter-
rupção for desconhecido, a variável do sistema ERRNO será ajustada para
ERR_UNKINO (veja "Data types - ernum"). O erro pode ser manuseado no tratamento
de erros.
Sintaxe
IWatch
[ Interrupt ‘:=’ ] < variável (VAR) do intnum > ‘;’
Informações relacionadas
Descrito em:
Sumário de interrupções Sumário RAPID - Interrupções
Desativando uma interrupção Instruções - ISleep
Exemplo
GOTO next;
.
next:
Argumentos
Label:
Label Identificador
Execução do programa
Nada acontece quando você executa esta instrução.
Limitações
O label não pode ser o mesmo que
Um rótulo oculta um dado global e rotinas com o mesmo nome dentro da rotina nela
localizada .
Sintaxe
(EBNF)
<identificador>’:’
Informações relacionadas
Descrito em:
Identificadores Características Básicas-
Elementos básicos
Movendo exec. do programa para um label Instruções - GOTO
Modo estático
Tabela 1 Como operações diferentes afetam módulos de sistema ou de programa
carregados estaticamente
Modo dinâmico
Tabela 2 Como operações diferentes afetam módulos de sistema ou de programa
carregados dinamicamente
Exemplo
Carregar ram1disk \File:="PART_A.MOD";
Argumentos
Load [\Dynamic] FilePath [\File]
[\Dynamic] Data type: switch
Execução do programa
A execução do programa espera que o módulo do programa acabe o carregamento antes
de passar à instrução seguinte.
De modo a obter uma boa estrutura do programa, que seja de fácil compreensão e
manutenção, o carregamento e o descarregamento dos módulos do programa deverão
ser executados a partir do módulo principal que está sempre presente na memória do
programa durante a execução.
Exemplos
Load \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD";
Limitações
Não é permitido carregar um módulo de programa que contenha uma rotina principal.
As rotinas TRAP, os passos os sistema E/S e outras tarefas do programa não podem ser
executadas durante o carregamento.
Evite usar um disquete flexível para carregamento uma vez que a leitura de um dis-
quete flexível demora muito tempo.
Uma parada do programa durante a execução da instrução Load resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.
Tratamento de erros
Se um arquivo nas instruções Load não for encontrado, nesse caso a variável do sis-
tema é ERRNO é ajustada para ERR_FILNOTFND. Se o módulo já está carregado na
memória do programa então a variável do sistema ERRNO é ajustada para
ERR_LOADED (veja “Data types - errnum”). Os erros acima mencionados podem ser
manuseados no tratamento de erros.
Sintaxe
Load
[‘\’Dynamic ‘,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’
Informações relacionadas
Descrito em:
Descarregar um módulo do programa Instruções - UnLoad
Carregar um módulo de programa em Instruções - StartLoad-WaitLoad
paralelo com a execução de um outro
programa
Aceitar referências por resolver Parâmetros do Sistema- Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef
Essa instrução deve ser usada para todas as unidades mecânicas com modelo dinâmico
em servo para obter o melhor desempenho em movimentação.
Exemplo
IRBP_L
eixo 1
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, load0;
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, fixture1;
ActUnit IRBP_L;
MechUnitLoad IRBP_L, 1, workpiece1;
Argumentos
MechUnitLoad MechUnit AxisNo Load
MechUnit (Unidade mecânica) Tipo de dados: mecunit
Execução do programa
Após a execução de MechUnitLoad, quando os eixos externos e do robô se estabilizam,
a carga especificada é definida para o eixo e a unidade mecânica especificados. Isso sig-
nifica que a carga é controlada e monitorada pelo sistema de controle.
Quando alguma outra carga é usada, a carga real para o eixo e a unidade mecânica deve
ser redefinida com essa instrução. Deve ser sempre feito após a ativação da unidade
mecânica.
X Fixação
Sistema de coordenadas de atuação final
para a unidade mecânica
Peça de trabalho
Exemplo
IRBP_K
eixo 2
eixo 1
eixo 3
Figure 8 Uma unidade mecânica chamada IRBP_K do tipo IRBP K com três eixos.
Limitações
A instrução de movimento anterior a essa instrução deve ser terminada com um ponto
de parada para tornar uma reiniciação dessa instrução possível após uma falha de ener-
gia.
Sintaxe
MechUnitLoad
[MechUnit ’:=’ ] < variable (VAR) of mecunit> ’,’
[AxisNo ’:=’ ] <expression (IN) of num ’,’
[ Load ’:=’ ] < persistent (PERS) of loaddata > ’;’
Informações relacionadas
Descrito em:
Identificação de carga para unidades LoadID&CollDetect
mecânicas externas - Programa muloadid.prg
Unidades mecânicas Tipos de dados - mecunit
Definição de dados de carga Tipos de dados - loaddata
Definição de carga para o robô Instruções - GripLoad
Tipos de dados - tooldata
A posição final do robô, durante o movimento com MoveAbsJ, não é afetado pela fer-
ramenta e objeto de trabalho nem pelo deslocamento de programa. Entretanto, o robô
usa aqueles dados para calcular a carga, velocidade TCP, e o trajeto de canto. As mes-
mas ferramentas podem ser usadas como instruções de movimentos adjacentes.
O robô e eixos externos são movidos para a posição de destino ao longo de uma tra-
jetória não linear. Todos os eixos alcançam a posição de destino ao mesmo tempo.
Exemplos
MoveAbsJ p50, v1000, z50, tool2;
O robô com a ferramenta tool2, é movido ao longo de um trajeto não -linear para
uma posição de eixo absoluta, p50, com dado de velocidade v1000 e dado de
zona z50.
Argumentos
MoveAbsJ [ \Conc ] ToJointPos [\NoEOffs] Speed [ \V ] | [ \T ]
Zone [ \Z ] Tool [ \WObj ]
[ \Conc ] (Concurrent) DataType: switch
instrução subsequente será executada algum tempo antes do robô ter atingido a
zona programada.
Execução do programa
Um movimento com MoveAbsJ não é afetado pelo reposicionamento do programa
ativo e, quando executado com a opção \NoEOffs, não há deslocamento para eixos
externos.
Sem a opção \NoEOffs, os eixos externos no alvo de destino são afetados pelo deslo-
camento ativo para eixos externos.
Exemplos
MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;
Mesmo movimento que acima, mas o movimento não é afetado por deslocamen-
tos ativos para eixos externos.
GripLoad obj_mass;
MoveAbsJ start, v2000, z40, grip3 \WObj:= obj;
O robô move o objeto de trabalho obj em relação a uma ferramenta fixada grip3
ao longo de uma trajetória não-linear para uma posição absoluta de eixo start.
Tratamento de erros
Quando rodando um programa, uma checagem é feita para que os argumentos Tool e
\WObj não contenham dados contraditórios com relação a ferramenta móvel ou esta-
cionária respectivamente.
Limitações
Para que seja possível rodar o programa para trás com a instrução MoveAbsJ envolvida,
e evitando problemas com pontos singulares ou áreas ambíguas, é essencial que as
instruções subsequentes preencham certos requisitos, como o que segue (veja Figure
1).
Ponto singular
MoveJ
MoveAbsJ
Área ambígua
Qualquer movim.
MoveAbsJ
MoveAbsJ
Sintaxe
MoveAbsJ
[ ’\’ Conc ’,’ ]
[ ToJointPos ’:=’ ] < expression (IN) of jointtarget >
[ ’\’ NoEoffs ] ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[Zone ’:=’ ] < expression (IN) of zonedata >
[ ’\’ Z ‘:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ] ’;’
Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de jointtarget DataTypes - jointtarget
Definção de velocidade DataTypes - speeddata
Definção de dado de zona DataTypes - zonedata
Definição de ferramentas DataTypes - tooldata
Definição de objetos de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Execução de programa concomitante Movimento e Príncipios E/S -
Sincronização usando instruções lógicas
Exemplos
MoveC p1, p2, v500, z30, tool2;
p1
p4 p2
p3
Figura 2 Um círculo completo é realizado por duas instruções MoveC .
Argumentos
MoveC [ \Conc ] CirPoint ToPoint Speed [ \V ] | [ \T ] Zone [ \Z]
Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch
para encurtar o tempo do ciclo quando, por exemplo, comunicando com equipa-
mento externo, se a sincronização não é necessária.
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
na sequência para o círculo relativo a um objeto de trabalho a ser executado.
Execução do programa
O robô e unidades externas são movidas para o ponto de destino como segue:
CirPoint
Orientação ferramenta
Ponto de partida
ToPoint
- A orientação no ponto do círculo não é crítica; ela somente é usada para distin-
guir entre duas direções possíveis de reorientação. A exatidão de reorientação
ao longo da trajetória depende somente da orientação nos pontos de partida e de
destino.
- Coordenada de eixos externos são executadas numa velocidade constante para
que elas cheguem ao ponto de destino ao mesmo tempo que os eixos do robô.
A posição na posição de círculo não é usada.
Exemplos
MoveC *, *, v500 \V:=550, z40 \Z:=45, grip3;
O TCP da ferramenta, grip3, é movido circularmente para uma posição, p15, via
o ponto do círculo cir1. Estas posições estão especificadas no sistema de coorde-
nada de objeto para fixture.
Limitações
Uma mudança no modo de execução do programa de frente para trás ou vice versa,
enquanto o robô está parado numa trajetória circular, não é permitido e irá resultar
numa mensagem de erro.
Sintaxe
MoveC
[ ’\’ Conc ’,’ ]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções
Lógicas
Exemplos
MoveCDO p1, p2, v500, z30, tool2, do1,1;
Argumentos
MoveCDO CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
Signal Value
CirPoint Tipos de dados: robtarget
O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).
Este argumento poderá ser omitido, e se o for, a posição estará relacionada com
o sistema de coordenadas globais. Se, de outro modo, for usado um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado
em relação a um círculo, para o objeto de trabalho ser executado.
Execução do programa
Ver a instrução MoveC para mais informaçãoes sobre o movimento circular.
CirPoint
Próximo
ToPoint ponto
Zona
Figura 4 Ajuste/Rearme do sinal de saída digital no trajeto de canto com MoveCDO.
Limitações
Limitações gerais conforme instrução MoveC.
Sintaxe
MoveCDO
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’
Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados da zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definiçaõ de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronização Usando Instruções Lógi-
cas
Exemplos
MoveCSync p1, p2, v500, z30, tool2, “proc1”;
O TCP da ferramenta, tool2, é movido em círculo para a posição p2, com o dado
de velocidade v500 e dado de zona z30. O círculo estará definido a partir da
posição inicial, do ponto do círculo p1 e do ponto de destino p2. O procedimento
proc1 será executado no meio do trajeto de canto em p2.
Argumentos
MoveCSync CirPoint ToPoint Speed [ \T ] Zone Tool [\WObj ]
ProcName
CirPoint Tipos de dados: robtarget
O ponto de destino do robô e eixos externos. É definido como uma posição in-
dicada ou armazenada diretamente na instrução (marcada com um * na
instrução).
Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, for usado um TCP esta-
cionário ou eixos de coordenadas externas, este argumento deverá ser especifi-
cado.
Execução do programa
Para maiores informações sobre movimentos circulares, ver a instrução MoveC.
Figura 5 Execução de procedimento RAPID definido pelo usuário a meio do trajeto de canto.
Limitações
Limitações gerais conforme instrução MoveC.
Sintaxe
MoveCSync
[ CirPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName ‘:=’ ] < expressão (IN) de string > ] ’;’
Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de dados - speeddata
Definição de dados de zona Tipos de dados - zonedata
Definição de ferramentas Tipos de dados - tooldata
Definição de objetos de trabalho Tipos de dados - wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S -
Sistemas de Coordenadas
O robô e eixos externos movem-se ao ponto de destino ao longo de uma trajetória não
linear. Todos os eixos alcançam o ponto de destino ao mesmo tempo.
Exemplos
MoveJ p1, vmax, z30, tool2;
O TCP da ferramenta, grip3, é movido ao longo de uma trajetória não linear para
o ponto de parada guardado na instrução (marcado com um *). O movimento
completo leva 5 segundos.
Argumentos
MoveJ [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ]
[ \Conc ] (Concurrent) DataType: switch
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado.
Execução do programa
O ponto central da ferramenta é movido para a posição de destino com interpolação dos
ângulos do eixo. Isto significa que cada eixo é movido com velocidade constante de
eixo e que todos os eixos alcançam o ponto de destino ao mesmo tempo, que resulta em
uma trajetória não linear.
Exemplos
MoveJ *, v2000\V:=2200, z40 \Z:=45, grip3;
Sintaxe
MoveJ
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’
Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataTypes - speeddata
Definição de dado de zona DataTypes - zonedata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Ló-
gicas
Exemplos
MoveJDO p1, vmax, z30, tool2, do1, 1;
Argumentos
MoveJDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget
Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.
Execução de programa
Ver a instrução MoveJ para maiores informações sobre o movimento de eixo.
O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto para pontos flu-
tuantes conforme Figura 1.
p3
p1 p2
Zona
Sintaxe
MoveJDO
[ ToPoint ’:=’ ] < expressão (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) of speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’
Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Velocidade de definição Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenads
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas
Exemplos
MoveJSync p1, vmax, z30, tool2, “proc1”;
Argumentos
MoveJSync ToPoint Speed [ \T ] Zone Tool [ \WObj ]
ProcName
ToPoint Tipo de dados: robtarget
O ponto de destino do robô e eixos externos. Está definido como uma posição
indicada ou guardado diretamente na instrução (marcado com * na instrução).
Este argumento é usado para especificar o tempo total em seg., durante o qual o
robô se move. É depois substituído pelos dados de velocidade correspondentes
Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outra maneira, forem usados eixos exter-
nos ou TCP estacionário, este argumento deverá se especificado.
Execução do programa
Ver a instrução MoveJ para maiores informações acerca do movimento de eixo.
p1
Figura 7 Execução de procedimento RAPID definido pelo usuário no meio do trajeto de canto.
Limitações
Comutar o modo de execução após a parada do programa, de contínuo ou cíclico, para
em escada para a frente ou para trás resultará em erro. Este erro comunicará ao usuário
que a comutação de modo poderá resultar em execução falhada do procedimento
RAPID, em fila, para execução sobre o caminho. Este erro poderá ser evitado se o pro-
grama for parado, antes da comutação de modo, com StopInstr.
Sintaxe
MoveJSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata >
[ ’\’ Z ‘:=’ < expressão (IN) de num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ’;’
Informações relacionadas
Descritas em:
Outras posições de funcionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Exemplo
MoveL p1, v1000, z30, tool2;
O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dado
de velocidade v1000 e dado de zona z30.
Argumentos
MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool
[ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) DataType: switch
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para que realize um movimento linear relativo ao objeto de trabalho.
Execução do programa
O robô e unidades externas são movimentados para posição de destino como segue:
Exemplos
MoveL *, v2000 \V:=2200, z40 \Z:=45, grip3;
Sintaxe
MoveL
[ ’\’ Conc ’,’ ]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ V ’:=’ < expressão (IN) do num > ]
| [ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Zone ’:=’ ] < expressão (IN) do zonedata >
[ ’\’ Z ’:=’ < expressão (IN) do num > ] ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Outras instruções de posicionamento Sumário RAPID - Movimentação
Definição de velocidade DataType - speeddata
Definição de dado de zona DataType - zonedata
Definição de ferramenta DataType - tooldata
Definição de objeto de trabalho DataType - wobjdata
Escrever em uma entrada de correções Instruções - CorrWrite
Movimentação em geral Movimento e Princípios E/S
Sistemas de coordenadas Movimento e Princípios E/S -
Sistemas de Coordenadas
Execução do programa concomitante Movimento e Princípios E/S -
Sincronização Usando Instruções Lóg-
icas
Quando o TCP for permanecer estacionário, esta instrução poderá ser também usada
para reorientar a ferramenta.
Exemplo
MoveLDO p1, v1000, z30, tool2, do1,1;
O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. A saída do1 será justada a meio do tra-
jeto do canto em p1.
Argumentos
MoveLDO ToPoint Speed [ \T ] Zone Tool
[ \WObj ] Signal Value
ToPoint Tipos de dados: robtarget
O ponto de destino do robô e eixos externos. Está definida como uma posição
indicada ou guardada diretamente na instrução (marcada com um * na instrução).
Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados eixos externos
coordenados ou TCP estacionário, este argumento deverá ser especificado.
Execução do programa
Ver a instrução MoveL para maiores informações acerca de movimentos lineares.
O sinal de saída digital é ajustado/rearmado ao meio do trajeto de canto por pontos flu-
tuantes conforme Figura 1.
p3
p1 p2
Zona
Sintaxe
MoveLDO
[ ToPoint ’:=’ ] < expressão (IN)de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) of num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ Signal ’:=’ ] < variável (VAR) de signaldo>] ‘,’
[ Value ‘:=’ ] < expressão (IN) de dionum > ] ’;’
Informações relacionadas
Descritas em:
Outras instruções de posicionamento Sumário RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de Dados- zonedata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objeto de trabalho Tipos de Dados- wobjdata
Movimentação em geral Movimentação e Princípios E/S
Sistemas de coordenadas Movimentação e Princípios E/S-
Sistemas de Coordenadas
Movimentos com ajustes E/S Movimentação e Princípios E/S- Sin-
cronismo Usando Instruções Lógicas
Quando o TCP for permanecer estacionário, esta instrução poderá ser usada para reo-
rientar a ferramenta.
Exemplo
MoveLSync p1, v1000, z30, tool2, “proc1”;
O TCP da ferramenta tool2, é movido linearmente para a posição p1, com dados
de velocidade v1000 e dados de zona z30. O procedimento proc1 é executado ao
meio do caminho da aresta em p1.
Argumentos
MoveLSync ToPoint Speed [ \T ] Zone Tool
[ \WObj ] ProcName
ToPoint Tipos de dados: robtarget
O ponto de destino do robô e eixos externos. É definido como uma posição indi-
cada ou guardada diretamente na instrução (marcada com um * na instrução).
Este argumento é usado para especificar o tempo total, em seg., durante o qual o
robô se move. Será substituído pelos dados de velocidade correspondentes.
Este argumento poderá ser omitido, e se o for, a posição será relacionada com o
sistema de coordenadas globais. Se, de outro modo, forem usados um TCP esta-
cionário ou eixos externos coordenados, este argumento deverá ser especificado.
Execução do programa
Ver a instrução MoveL para mais informações acerca dos movimentos lineares.
p1
Figure 9 Execução de procedimento RAPID definido pelo usuário no meio do caminho da aresta.
Limitações
A comutação do modo de execução, após a parada do programa, de contínuo ou cíclico
para em escada para a frente ou para trás, resultará em erro. Este erro comunica ao
usuário, que a comutação de modo poderá resultar em execução falhada dos procedi-
mentos RAPID em fila , execução sobre o caminho. Este erro poderá ser evitado se o
programa for parado com StopInstr antes de comutar o modo de execução..
Sintaxe
MoveLSync
[ ToPoint ’:=’ ] < expressão (IN) de robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) de speeddata >
[ ’\’ T ’:=’ < expressão (IN) de num > ] ’,’
[ Zone ’:=’ ] < expressão (IN) de zonedata > ’,’
[ Tool ’:=’ ] < persistente (PERS) de tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) de wobjdata > ] ’,’
[ ProcName‘:=’ ] < expressão (IN) de string > ] ‘;’
Informações relacionadas
Descritas em:
Outras instruções de posicionamento Resumo RAPID - Motion
Definição de velocidade Tipos de Dados- speeddata
Definição de dados de zona Tipos de dados- zonedata
Definição de ferramentas Tipos de Dados- tooldata
Definição de objetos de trabalho Tipos de Dados- wobjdata
Deslocamento em geral Deslocamento e Principios E/S
Sistemas de coordenadas Deslocamento e Principios E/S -
Sistemas de Coordenadas
Exemplo
VAR iodev logfile;
...
Open "flp1:" \File:= "LOGDIR/LOGFILE1.DOC", logfile;
Argumentos
Open Object [\File] IODevice [\Read] | [\Write] | [\Append] [\Bin]
Object DataType: string
Uma referência ao arquivo ou canal serial a ser aberto. Essa referência é então
usada para ler e escrever no arquivo ou canal serial.
Exemplo
VAR iodev printer;
...
Open "sio1:", printer \Bin;
WriteStrBin printer, "Esta é uma mensagem para a impressora\0D";
Close printer;
Execução do programa
O canal serial/arquivo especificado é aberto para que possa ser lido ou escrito.
É possível abrir o mesmo arquivo físico várias vezes ao mesmo tempo, mas cada cha-
mada da instrução Open retorna uma referência diferente ao arquivo (tipo de dados
iodev). É posível, por exemplo, ter um ponteiro de escrita e um ponteiro de leitura di-
ferente para o mesmo arquivo ao mesmo tempo.
A variável iodev usada ao abrir um canal serial ou arquivo precisa estar livre de uso: se
ela tiver sido usada anteriormente para abrir um arquivo, esse arquivo terá de ser
fechado antes da veiculação de uma nova instrução Open com a mesma variável iodev.
Tratamento de erros
Se um arquivo não pode ser aberto, a variável de sistema ERRNO é fixada para
ERR_FILEOPEN. Este erro pode então ser manipulado no manipulador de erro.
Sintaxe
Open
[Object ’:=’] <expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>] ’,’
[IODevice ’:=’] <variable (VAR) of iodev>
[’\’Read] | [’\’Write] | [’\’Append]
[’\’Bin] ’;’
Informações relacionadas
Descrito em:
Escrevendo e lendo de Sumário RAPID - Comunicação
arquivos ou canais seriais
Descrição
A resolução do trajeto afeta a precisão do trajeto interpolado e o tempo de ciclo do pro-
grama. Melhora a precisão do trajeto e reduz o tempo de ciclo quando o parâmetro
PathSampleTime é diminuído. Um parâmetro PathSampleTime com um valor muito
baixo afecta a carga da CPU em aplicações mais exigentes. Todavia, o uso da resolução
do caminho configurado estandard (PathSampleTime 100%) evitará problemas de
carga da CPU e fornecerá precisão de trajeto suficiente na maioria das situações.
Soldando a arco com ondulação de alta freqüência pode requerer uma alta resolução
do trajeto interpolado. Diminua o parâmetro PathSampleTime.
Colando com grande reorientações e pequenas zonas de aresta pode causar variações
de velocidade. Diminua o argumento de PathSampleTime.
Exemplo
MoveJ p1,v1000,fine,tool1;
PathResol 150;
Argumentos
PathResol PathSampleTime
PathSampleTime Tipo de dados: num
Execução do programa
As resoluções de caminho de todas as instruções de posicionamento subseqüentes são
afetadas até uma nova instrução PathResol ser executada. Isto afetará a resolução do
trajeto durante a execução do programa de todos os movimentos (nível de trajeto
padrão e nível de trajeto após StorePath) e também durante a movimentação.
O valor, por omissão, para sobrepor o tempo de amostra do caminhoé 100%. Este valor
é automaticamente ajustado
A sobreposição corrente do tempo de amostra do caminho pode ser lida a partir da var-
iável C_MOTSET (tipo de dados motsetdata) no componente pathresol.
Limitações
O robô terá que estar parado em um ponto de parada antes da sobreposiçãodo tempo de
amostra do caminho. Quando existir um caminho de aresta no programa, o programa
criará então um ponto de parada (advertência 50146) e não será possível reiniciar nesta
instrução a seguir a uma falha de corrente.
Sintaxe
PathResol
[PathSampleTime ’:=’ ] < expressão (IN) de num> ’;’
Informações relacionadas
Descritas em:
Instruções de posicionamento Movimentação e Princípios E/S
- Movimentação
Ajustes de deslocamento Sumário RAPID - Ajustes de Movi-
mentação
Configuração da resolução do caminho Parâmetros de sistema - Otimização da
CPU
Exemplos
PDispOff;
Execução do programa
O deslocamento do programa é desligado. Isto significa que o sistema de coordenada
de deslocamento de programa é o mesmo que o sistema de coordenada de sistema do
objeto, e desta maneira todas as posições programadas serão relacionadas para o
último.
Sintaxe
PDispOff ‘;’
Informações relacionadas
Descrito em:
Definição de deslocamento de programa Instruções - PDispOn
usando duas posições
Definição de deslocamento de programa Instruções - PDispSet
usando valores
Deslocamento de programa é usado, por exemplo, após uma busca ter sido realizada,
ou quando padrões de movimento similares são repetidos em diferentes lugares do pro-
grama.
Exemplos
MoveL p10, v500, z10, tool1;
PDispOn \ExeP:=p10, p20, tool1;
Argumentos
PDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]
[\Rot ] (Rotation) DataType: switch
Este argumento pode ser omitido e, se isto ocorre, a posição é relacionada com o
sistema de coordenada mundial. Entretanto, se um TCP estacionário ou eixos
externos coordenados são usados, este argumeto deve ser especificado.
Ambos argumentos Tool e \WObj são usados para calcular o ProgPoint durante a
programação e para calcular a posição atual durante a execução do programa se
nenhum argumento ExeP está programado.
Execução do programa
Deslocamento de programa significa que o sistema de coordenada ProgDisp é transla-
dado em relação ao sistema de coordenada de objeto. Desde que todas as posições este-
jam relacionadas ao sistema de coordenadas ProgDisp, todas as posições programadas
também serão deslocadas . Veja Figure 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
Somente um deslocamento de programa pode estar ativo por vez. Várias instruções
PDispOn, por outro lado, podem ser programadas uma após a outra e, neste caso, dif-
erentes deslocamentos de programa são adicionados.
Nova
y posição, ExeP
y
Nova
Posição
original, ProgPoint
orientação x
Orientação
original Deslocamento de programa Sistema de coordenada de deslocamento de programa
(ProgDisp)
x
Sistema de coordenada de objeto
Exemplo
PROC draw_square()
PDispOn *, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
MoveL *, v500, z10, tool1;
PDispOff;
ENDPROC
.
MoveL p10, v500, fine, tool1;
draw_square;
MoveL p20, v500, fine, tool1;
draw_square;
MoveL p30, v500, fine, tool1;
draw_square;
p30
p10
p20
Sintaxe
PDispOn
[ ’\’ Rot ’,’ ]
[ ’\’ ExeP ’:=’ ] < expressão (IN) do robtarget > ’,’]
[ ProgPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata>
[ ‘\’WObj ’:=’ < persistente (PERS) do wobjdata> ] ‘;’
Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição de deslocamento de programa Instruções - PDispSet
usando valores
Sistemas de coordenadas Princípios de movimento -
Sistemas de Coordenadas
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Mais exemplos Instruções - PDispOff
Exemplo
VAR pose xp100 := [ [100, 0, 0], [1, 0, 0, 0] ];
.
PDispSet xp100;
Objeto ProgDisp
100 X
Figure 13 100 mm de deslocamento de programa ao longo do eixo-x.
Argumentos
PDispSet DispFrame
DispFrame (Displacement Frame) DataType: pose
Execução do programa
Deslocamento de programa envolve translação e/ou rotação do sistema de coordenadas
ProgDisp em relação ao sistema de coordenada de objeto. Uma vez que todas as
posições são relativas ao sistema de coordenada ProgDisp , todas as posições progra-
madas também serão deslocadas. Veja Figure 14.
Nova
y posição
y
Nova
Posição
original
orientação x
Orientação
original Deslocamento de programa Sistema de Coodenada de Deslocamento de programa
(ProgDisp)
x
Sistema de Coordenada de Objeto
Sintaxe
PDispSet
[ DispFrame ’:=’ ] < expressão (IN) do pose> ’;’
Informações relacionadas
Descrito em:
Desativação do deslocamento de programa Instruções - PDispOff
Definição do deslocamento de programa Instruções - PDispOn
usando duas posições
Definição do dado do tipo pose DataTypes - pose
Sistemas de coordenadas Princípios de Movimento -
Sistema de Coordenadas
Exemplos de como deslocamento de programa Instruções - PDispOn
podem ser usados
Exemplos
PulseDO do15;
Um pulso com comprimento de pulso de 0.2 s é gerado num sinal de saída do15.
Argumentos
PulseDO [ \PLength ] Signal
[ \PLength ] (Pulse Length) DataType: num
Execução do programa
Um pulso é gerado com um comprimento de pulso especificado (veja Figure 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.
A próxima instrução é executada diretamente após o pulso começar. O pulso pode então
ser ligado/desligado sem afetar o resto da execução do programa.
Limitações
O comprimento do pulso tem uma resolução de 0.01 segundos. Valores programados
que diferem deste são arredondados.
Sintaxe
PulseDO
[ ’\’ PLength ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’
Informações relacionadas
Descrito em:
Instruções de Entrada/Saída Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de Entrada/Saída Movimentos e Princípios de E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário - Parâmetros
do Sistema
A instrução pode, por exemplo, ser usada para pular para um nível mais alto na estru-
tura de um programa, ex. para o tratamento de erro na rotina principal, se um erro
ocorre num nível mais baixo.
Exemplo
IF ...
IF ...
IF ...
RAISE escape1;
.
ERROR
IF ERRNO=escape1 RAISE;
Argumentos
RAISE [ Error no. ]
Error no DataType: errnum
Número do erro: Qualquer número 1-90 que o tratamento de erro possa usar para
localizar o erro que ocorreu (a variável de sistema ERRNO ).
Execução do programa
A execução do programa continua no tratamento de erro da rotina. Após o tratamento
Se a instrução RAISE está presente numa rotina trap, o erro está de acordo com o trata-
mento de erro do sistema.
Tratamento de erros
Se o número de erros estiver fora da gama, a variável do sistema ERRNO é ajustada
para ERR_ILLRAISE (veja "Data type - errnum"). Este erro pode ser manuseado no
tratamento de erros.
Sintaxe
(EBNF)
RAISE [<error number>] ’;’
Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Reservar números de erros Instruções - BookErrNo
Exemplo
VAR iodev channel2;
VAR robtarget next_target;
...
Open "sio1:", channel2 \Bin;
ReadAnyBin channel2, next_target;
O próximo alvo de robô a ser executado, next_target, é lido do canal referido por
channel2.
Argumentos
ReadAnyBin IODevice Data [\Time])
IODevice Tipo de dados: iodev
Execução do programa
Tantos bytes quantos forem necessários para os dados especificados serão lidos do
arquivo ou canal serial binário especificado.
Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para leitura binária.
Os dados a serem lidos por essa instrução devem ter um tipo de dados value do tipo
atomic, string ou record. Tipos de dados semi-value e non-value não podem ser usados.
Observe que a variável VAR ou PERS, para armazenamento dos dados lidos, pode ser
atualizada em várias etapas. Portanto, aguarde sempre até que toda a estrutura de dados
seja atualizada, até o uso dos dados lidos de um TRAP ou tarefas de um outro pro-
grama.
Tratamento de erros
Se um erro ocorrer durante a leitura, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.
Se o final do arquivo for detectado antes de todos os bytes serem lidos, a variável de
sistema ERRNO será definida como ERR_RANYBIN_EOF. Assim, esse erro pode ser
tratado na rotina de tratamento de erros.
Exemplo
CONST num NEW_ROBT:=12;
CONST num NEW_WOBJ:=20;
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
VAR wobjdata cur_wobj;
Close channel;
Sintaxe
ReadAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>
[’\’Time’:=’ <expression (IN) of num>]’;’
Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos
Exemplos
Reset do15;
Reset weld;
Argumentos
Reset Signal
Signal Tipo de dado: signaldo
Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a 1.
Sintaxe
Reset
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’
Informações relacionadas
Descrito em:
Ligando um sinal de saída digital Instruções - Set
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema
Exemplo
RestoPath;
Execução do programa
O atual movimento de trajetória do robô e de eixos externos é apagado e a trajetória
guardada anteriormente usando StorePath é retomada. Entretanto, nada se move até
que a instrução StartMove seja executada ou um retorno seja feito usando RETRY de
um manipulador de erro.
Exemplo
ArcL p100, v100, seam1, weld5, weave1, z10, gun1;
...
ERROR
IF ERRNO=AW_WELD_ERR THEN
gun_cleaning;
RETRY;
ENDIF
...
PROC gun_cleaning()
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL pclean, v100, fine, gun1;
...
MoveL p1, v100, fine, gun1;
RestoPath;
ENDPROC
Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.
A instrução de movimento a qual precede a instrução deve ser terminada com um ponto
de parada.
Sintaxe
RestoPath‘;’
Informações relacionadas
Descrito em:
Guardando trajetórias Instruções - StorePath
Mais exemplos Instruções - StorePath
Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg4 := 1;
RETRY;
ENDIF
Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o manipulador de erro, que inicializa reg4. A
instrução RETRY é então usada para saltar de um manipulador de erro e outra ten-
tativa é feita para completar a divisão.
Execução do programa
A execução do programa continua (re-executa) com a instrução que causou o erro.
Tratamento de erros
Se o número máximo de reinicializações (4) for excedido, a execução do porgrama
pára com uma mensagem de erro e a variável do sistema ERRNO é definida para
ERR_EXCRTYMAX (veja "Data types - errnum").
Limitações
A instrução pode somente existir no manipulador de erro da rotina. Se o erro foi criado
usando a instrução RAISE, a execução do programa não pode ser reiniciada com a
instrução RETRY, então deve ser usada a instrução TRYNEXT.
Sintaxe
RETRY ’;’
Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Continua com a próxima instrução Instruções - Trynext
Exemplos
errormessage;
Set do1;
.
PROC errormessage()
TPWrite "ERROR";
RETURN;
ENDPROC
Argumentos
RETURN [ Return value ]
Return value DataType: De acordo com a declaração
de função
Execução do programa
O resultado da instrução RETURN pode variar, dependendo do tipo de rotina que é
usada em:
Sintaxe
(EBNF)
RETURN [ <expressão> ]’;’
Informações relacionadas
Descrito em:
Funções e Procedimentos Características Básicas - Rotinas
Rotinas trap Características Básicas - Interrupções
Tratamento de erros Características Básicas -
Reconhecimento de Erro
Exemplo
Rewind iodev1;
O arquivo referido como iodev1 terá a posição de arquivo ajustada para o início
do arquivo.
Argumentos
Rewind IODevice
IODevice Tipo de dados: iodev
Execução do programa
O arquivo especificado é rebobinado para o início.
Exemplo
! IO device and numeric variable for use together with a binary file
VAR iodev dev;
VAR num bindata;
! Open the binary file with \Write switch to erase old contents
Open "flp1:"\File := "bin_file",dev \Write;
Close dev;
! Open the binary file with \Bin switch for binary read and write access
Open "flp1:"\File := "bin_file",dev \Bin;
WriteStrBin dev,"Hello World";
A instrução Rewind é usada para rebobinar um arquivo binário para o início para
que o conteúdo do arquivo possa ser lido novamente com ReadBin.
Sintaxe
Rewind
[IODevice ’:=’] <variável (VAR) de iodev>’;’
Informações relacionadas
Descrito em:
Abrindo (etc.) arquivos Sumário RAPID - Comunicação
Exemplo
Load "ram1disk:PART_B.MOD";
...
Save "PART_B";
Argumentos
Save [\Task] ModuleName [\FilePath] [\File]
deve ser salvo. O nome de arquivo deve ser excluído quando o argumento \File é
usado.
Quando o nome de arquivo é excluído no argumento \FilePath, ele deve ser espe-
cificado com esse argumento.
O argumento \FilePath só pode ser omitido para módulos de programa carregados com
Load ou StartLoad-WaitLoad e o módulo de programa será armazenado no mesmo des-
tino que o especificado nessas instruções. Para armazenar o módulo de programa em
outro destino, também é possível usar o argumento \FilePath.
Para poder salvar um módulo de programa que, anteriormente, foi carregado a partir da
unidade de programa, computador externo ou configuração do sistema, é necessário
usar o argumento \FilePath.
Execução do programa
A execução do programa espera pelo término do salvamento do módulo de programa
antes de passar para a próxima instrução.
Exemplo
Save "PART_A" \FilePath:="ram1disk:DOORDIR/PART_A.MOD";
Limitações
Rotinas de interceptação (TRAP), eventos de E/S do sistema e outras tarefas de pro-
grama não podem ser executadas durante a operação de salvamento. Portanto, quais-
quer operações dessa espécie serão atrasadas.
Uma parada do programa durante a execução de uma instrução Save pode resultar em
uma parada de proteção com os motores desligados e na exibição da mensagem de erro
"20025 Stop order timeout" na Unidade de programação.
Tratamento de erros
Se o módulo de programa não puder ser salvo por não haver nome de módulo, por este
ser desconhecido ou ser ambíguo, a variável de sistema ERRNO será definida como
ERR_MODULE.
Se o arquivo salvo não puder ser aberto por falta de permissões, por não existir o
diretório ou por não haver espaço no dispositivo, a variável de sistema ERRNO será
definida como ERR_IOERROR.
Sintaxe
Save
[ ‘\’ Task ‘:=‘ <variable (VAR) of taskid> ‘,’ ]
[ ModuleName ‘:=‘ ] <expression (IN) of string>
[ ‘\’ FilePath ‘:=‘<expression (IN) of string> ]
[ ‘\’ File ‘:=‘ <expression (IN) of string>] ‘;’
Informações relacionadas
Descrito em:
Tarefas de programa Tipos de dados - taskid
Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchC , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.
Exemplos
SearchC sen1, sp, cirpoint, p10, v100, probe;
Argumentos
SearchC [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal [ \Flanks ]
SearcPoint CirPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ] [ \Corr
]
[ \Stop ] (Stiff Stop) Data type: switch
As extremidades positiva e negativa do sinal são válidas para uma pesquisa com
sucesso.
O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchC sempre usa um ponto de parada como um dado de zona para
o destino.
Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.
Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.
O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.
Quando uma pesquisa flutuante é usada (por exemplo, quando o argumento \Sup é
especificado), o movimento do robô sempre continua para o ponto de destino progra-
mado. Quando uma pesquisa é feita usando a opção \Stop ou \PStop ou \SStop, o mov-
imento do robô pára quando o primeiro sinal é detectado.
A instrução SearchC retorna a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 16.
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;
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).
Ponto final
Figura 17 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.
Tratamento de erros
Um erro é relatado durante uma pesquisa quando:
Erros podem ser tratados de diferentes formas dependendo do modo de execução sel-
ecionado :
Sintaxe
SearchC
[ ’\’ Stop’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’ ] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks]’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ CirPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Pesquisas lineares Instruções - SearchL
Escreve em uma entrada de correcções Instruções - CorrWrite
Movimento circular Movimento e Princípios de E/S -
Posicionamento durante a execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S
Mais exemplos de pesquisa Instruções - SearchL
Esta instrução pode ser usada quando a ferramenta presa pelo robô investiga para
detectar uma superfície. Usando a instrução SearchL , as coordenadas de contorno do
objeto de trabalho podem ser obtidas.
Exemplos
SearchL sen1, sp, p10, v100, probe;
Argumentos
SearchL [ \Stop ] | [ \PStop ] | [ \SStop ] | [ \Sup ] Signal
[ \Flanks ] SearchPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]
[ \Corr ]
[ \Stop ] (Stiff Stop) Data type: switch
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução). SearchL sempre usa um ponto de parada como um dado de zona para
o destino.
Este argumento pode ser omitido, e se isso ocorre a posição é relacionada com o
sistema de coordenada mundial. Se, por outro lado, o TCP estacionário ou
coordenadas de eixos externos são usadas, este argumento deve ser especificado
para um movimento linear relativo ao objeto de trabalho a ser realizado.
Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.
O movimento sempre termina com um ponto de parada, i.e. o robô pára no ponto de
destino.
A instrução SearchL guarda a posição do TCP quando o valor do sinal digital é alterado
para o pedido, como mostra a Figura 18.
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;
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.
Figura 19 Um sinal errado foi detectado ao lado do objeto porque foi usado o dado de zona
errado.
Figura 20 Deteção não encontrada porque foi usado o dado de zona errado.
Figura 21 Deteção não encontrada porque foi usado o dado de zona errado.
Tratamento de erros
Um erro é relatado durante uma pesquisa quando:
Erros podem ser tratados de diferentes formas, dependendo do modo de execução sel-
ecionado :
Exemplo
VAR num fk;
.
MoveL p10, v100, fine, tool1;
SearchL \Stop, sen1, sp, p20, v100, tool1;
.
ERROR
IF ERRNO=ERR_WHLSEARCH THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN
TPWrite “O sinal da instrução SearchL já é elevado!”;
TPReadFK fk,”Tentar novamente após reajuste manual do sinal
?”,”YES”,””,””,””,”NO”;
IF fk = 1 THEN
MoveL p10, v100, fine, tool1;
RETRY;
ELSE
Stop;
ENDIF
ENDIF
Sintaxe
SearchL
[ ’\’ Stop ’,’ ] | [ ’\’ PStop ’,’] | [ ’\’ SStop ’,’] | [ ’\’ Sup ’,’ ]
[ Signal ’:=’ ] < variable (VAR) of signaldi >
[‘\’ Flanks] ’,’
[ SearchPoint ’:=’ ] < var or pers (INOUT) of robtarget > ’,’
[ ToPoint ’:=’ ] < expression (IN) of robtarget > ’,’
[ Speed ’:=’ ] < expression (IN) of speeddata >
[ ’\’ V ’:=’ < expression (IN) of num > ]
| [ ’\’ T ’:=’ < expression (IN) of num > ] ’,’
[ Tool ’:=’ ] < persistent (PERS) of tooldata >
[ ’\’ WObj ’:=’ < persistent (PERS) of wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Pesquisas circulares Instruções - SearchC
Escrever em entrada de correções Instruções - CorrWrite
Movimento linear Movimento e Princípios de E/S -
Posicionamento na execução do pro-
grama
Definição de velocidade Tipos de dados - speeddata
Definição de ferramenta Tipos de dados - tooldata
Definição de objeto de trabalho Tipos de dados - wobjdata
Tratamento de erros Sumário RAPID -
Reconhecimento de Erro
Movimentação em geral Movimento e Princípios de E/S
Exemplos
Set do15;
Set weldon;
Argumentos
Set Signal
Signal DataType: signaldo
Execução do programa
O valor real depende da configuração do sinal. Se o sinal é invertido nos parâmetros
do sistema, esta instrução faz com que o canal físico seja levado a zero.
Sintaxe
Set
[ Signal ’:=’ ] < variável (VAR) do signaldo > ’;’
Informações relacionadas
Descrito em:
Levando um sinal de saída digital para zero Instruções - Reset
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema
Exemplo
SetAO ao2, 5.5;
Argumentos
SetAO Signal Value
Signal DataType: signalao
Execução do programa
O valor programado é tabelado (de acordo com os parâmetros do sistema) antes de ser
enviado ao canal físico. Veja Figure 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
Exemplo
SetAO weldcurr, curr_outp;
O sinal weldcurr é levado para o mesmo valor que o atual valor da variável
curr_outp.
Sintaxe
SetAO
[ Signal ’:=’ ] < variável (VAR) do signalao > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’
Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema
Exemplos
SetDO do15, 1;
O sinal weld é levado para high com um atraso de 0.2 s. Entretanto, a execução
do programa continua com a próxima instrução.
Argumentos
SetDO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) DataType: num
Execução do programa
O valor real depende da configuração do sinal. Se o sinal está invertido nos parâmetros
do sistema, o valor do canal físico é o oposto.
Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) de num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) de signaldo > ’,’
[ Value ’:=’ ] < expressão (IN) de dionum > ’;’
Informações relacionadas
Descrito em:
Instruções de E/S Sumário RAPID -
Princípios de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios E/S -
Princípios de E/S
Configuração de E/S Guia do Usuário -
Parâmetros do Sistema
Exemplo
SetGO go2, 12;
O sinal go2 é levado para 12. Se go2 compreende 4 sinais, ex. saídas 6-9, as saí-
das 6 e 7 são levadas para zero, enquanto as saídas 8 e 9 são levadas a um.
O sinal go2 é levada para 10. Se go2 compreende 4 sinais, ex. saídas 6-9, as
saídas 6 e 8 são levadas para zero, enquanto as saídas 7 e 9 são levadas a um, com
um atraso de 0.4 s. Entretanto, a execução do programa continua com a próxima
instrução.
Argumentos
SetGO [ \SDelay ] Signal Value
[ \SDelay ] (Signal Delay) Data type: num
Execução do programa
O valor programado é convertido para um número binário sem sinal. Este número
binário é enviado ao grupo de sinal, o que resulta em sinais individuais no grupo que
são levados para 0 ou 1. Devido a atrasos internos, o valor do sinal pode ser indefinido
por um curto período de tempo.
Sintaxe
SetDO
[ ’\’ SDelay ’:=’ < expressão (IN) do num > ’,’ ]
[ Signal ’:=’ ] < variável (VAR) do signalgo > ’,’
[ Value ’:=’ ] < expressão (IN) do num > ’;’
Informações relacionadas
Descrito em:
Outras instruções de E/S Sumário RAPID -
Sinais de Entrada e Saída
Funcionalidade geral de E/S Movimento e Princípios de E/S -
Princípios de E/S
Configuração de E/S Parâmetros do Sistema
SingArea é usado também para definir a interpolação circular e linear para robôs com
menos de seis eixos.
Exemplos
SingArea \Wrist;
A orientação da ferramenta pode ser mudada ligeiramente para que passe por um
ponto singular (eixos 4 e 6 em linha).
Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta interpolada. Usando SingArea \Wrist, o robô poderá con-
cluir o movimento mas a orientação da ferramenta será ligeiramente alterada.
SingArea \Off;
Robôs com menos de seis eixos poderão não ser capazes de alcançar uma orien-
tação de ferramenta programada. Como um resultado o robô parará.
Argumentos
SingArea [ \Wrist] | [ \Off]
[ \Wrist ] Tipo de Dados: switch
A orientação da ferramenta não pode diferir. Usado quando nenhum ponto sin-
gular é ultrapassado, ou quando a orientação não pode ser mudada.
Execução do programa
Se o argumento \Wrist for especificado, a orientação será interpolada eixo-a-eixo para
evitar pontos singulares. Desta forma, o TCP segue a trajetória correta, mas a orien-
tação da ferramenta desvia um tanto. Isto também ocorre quando um ponto singular não
é ultrapassado.
Sintaxe
SingArea
[ ’\’ Wrist ] | [ ’\’ Off ] ’;’
Informações relacionadas
Descritas em:
Singularidade Princípios de Movimentação -
Singularidade
Interpolação Princípios de Movimentação -
Posicionamento durante a Execução
do Programa
Exemplo
SoftAct 3, 20;
SoftAct 1, 90 \Ramp:=150;
Ativação do servo soft no eixo 1, com valor de suavidade 90% e fator de rampa
150%.
Ativação do servo soft no eixo 1, para a unidade mecânica orbit1, com valor de
suavidade 40% e fator de rampa 120%
Argumentos
SoftAct [\MechUnit] Axis Softness [\Ramp ]
[\MechUnit] (Unidade Mecânica) Tipo de Dados: mecunit
Fator da rampa em porcentagem (>= 100%). O fator da rampa é usada para con-
trolar o ajuste do soft servo. Um fator 100% significa um valor normal; com val-
ores maiores de soft servo é ajustado mais suavemente (rampa longa). O valor
default para fator de rampa é 100 %.
Execução do programa
Suavidade é ativada no valor especificado para o atual eixo. Um valor de suavidade é
válido para todos os movimentos, até que um novo valor de suavidade seja programado
para o eixo atual, ou até que o soft servo seja desativado por uma instrução.
Limitações
O servo suave de qualquer robô ou eixo externo é sempre desativado em caso de falha
de energia. Essa limitação pode ser contornada no programa do usuário, ao reiniciar
após uma falha de energia.
O mesmo eixo não deve ser ativado duas vezes, a menos que haja uma instrução de
movimento no meio. Desta maneira, a próxima sequência do programa deve ser evi-
tada, caso contrário haverá um solavanco no movimento do robô:
SoftAct n , x;
SoftAct n , y;
(n = eixo do robô n, x e y valores de suavidade)
Sintaxe
SoftAct
[’\’MechUnit ’:=’ < variável (VAR) de mecunit> ’,’]
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[Softness ’:=’ ] < expressão (IN) do num>
[ ’\’Ramp ’:=’ < expressão (IN) do num> ]’;’
Informações relacionadas
Descritas em:
Comportamento com o servo soft engatado Movimentação e Princípios E/S -
Posicionamento na execução do
programa
Exemplo
SoftDeact;
SoftDeact \Ramp:=150;
Argumentos
SoftDeact [\Ramp ]
Fator ramp em porcentagem (>= 100%). O fator ramp é usado para controlar a
desativação do soft servo. Um fator 100% representa o valor normal; com
valores maiores, o soft servo é desativado mais lentamente (ramp mais longo). O
valor padrão do fator ramp é de 100 %.
Execução do programa
O servo soft é desativado para todos os robôs e eixos externos.
Sintaxe
SoftDeact’;’
Informações relacionadas
Descritas em:
Ativando o soft servo Instruções - SoftAct
Exemplo
SpyStart "ram1disk:spy.log";
Argumentos
SpyStart File
File Tipo de dados: string
Execução do programa
O arquivo especificado é aberto para escrita e os dados de tempo de execução
começam a ser gravados no arquivo.
Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.
Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).
Tratamento de erros
Se o arquivo da instrução SpyStart não puder ser aberto, a variável de sistema ERRNO
será definida como ERR_FILEOPEN (veja “Tipos de dados - errnum”). Assim, esse
erro poderá ser tratado na rotina de tratamento de erros.
Formato de arquivo
TASK INSTR IN CODE OUT
----- SYSTEM TRAP----- significa que o sistema está fazendo algo mais do que exe-
cutar instruções do RAPID.
Sintaxe
SpyStart
[File’:=‘]<expression (IN) of string>‘;’
Informações relacionadas
Descrito em:
Interromper a gravação de dados de execução Instruções - SpyStop
Os dados, que podem ser úteis para otimizar o tempo do ciclo de execução, são arma-
zenados em um arquivo para análise posterior.
Exemplo
SpyStop;
Execução do programa
A gravação de dados de execução é interrompida e o arquivo especificado pela
instrução SpyStart é fechado.
Se nenhuma instrução SpyStart tiver sido executada antes, a instrução SpyStop será
ignorada.
Exemplos
IF debug = TRUE SpyStart "ram1disk:spy.log";
produce_sheets;
IF debug = TRUE SpyStop;
Limitações
Evite usar a unidade de disco para gravação, uma vez que a escrita em disquete é muito
demorada.
Nunca use a função “spy” em programas em produção, uma vez que ela aumenta o
tempo do ciclo e consome memória no dispositivo de memória de massa utilizado
(ramdisk).
Sintaxe
SpyStop’;’
Informações relacionadas
Descrito em:
Iniciar gravação de dados de execução Instruções - SpyStart
Modo estático
Tabell 3 Como diversas operações afetam módulos do sistema ou programas carregados estat-
icamente.
Modo dinâmico
Tabell 4 Como diversas operações afetam módulos do sistema ou programas carregados dinam-
icamente
Exemplo
VAR loadsession load1;
Argumentos
StartLoad [\Dynamic] FilePath [\File] LoadNo
[\Dynamic] Tipo de dados: switch
Quando o nome do arquivo é excluído no argumento FilePath, ele deve ser defi-
nido com esse argumento.
Execução do programa
A execução de StartLoad apenas ordenará o carregamento e, em seguida, continuará
diretamente com a próxima instrução, sem esperar pela conclusão do carregamento.
Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é usar Vinculação posterior. Isso possibilita especificar a rotina a ser chamada
com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o parâmetro
BindRef pode ser definido como YES (comportamento padrão). O método de Vincu-
lação posterior é preferível.
Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve
ser feito a partir do módulo principal, que está sempre presente na memória do pro-
grama durante a execução.
Exemplos
StartLoad \Dynamic, "ram1disk:DOORDIR/DOOR1.MOD", load1;
é o mesmo que
Limitações
Não é permitido carregar um módulo de sistema ou módulo de programa que contenha
Sintaxe
StartLoad
[‘\’Dynamic ‘,’]
[FilePath ‘:=‘] <expressão (IN) de string>
[‘\’File ‘:=‘ <expressão (IN) de string> ] ‘,’
[LoadNo ‘:=‘] <variável (VAR) de loadsession> ‘;’
Informações relacionadas
Descrito em:
Conectar o módulo carregado à tarefa Instruções - WaitLoad
Sessão de carregamento Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema - Controller/
Task/
BindRef
Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;
Execução do programa
Qualquer processo associado com o movimento de parada é reiniciado ao mesmo
tempo que o movimento retoma.
Tratando o erro
Se o robô estiver muito longe do trajeto (mais do que 10mm ou 20 graus) para realizar
o início do movimento de interrompido, a variável de sistema ERRNO é ligada a
ERR_PATHDIST. Este erro pode então ser manipulado no manipulador de erro.
Sintaxe
StartMove’;’
Informações relacionadas
Descrito em:
Parando movimentos Instruções - StopMove
Mais exemplos Instruções - StorePath
A execução do programa também pode ser parada usando a instrução EXIT. Entretanto,
isto somente pode ser feito se a tarefa for concluída, ou se um erro fatal ocorrer, já que
a execução do programa não pode ser reiniciado com EXIT.
Exemplo
TPWrite "A via para o computador está danificada";
Stop;
A execução do programa pára após uma mensagem ter sido escrita na unidade de
programação.
Argumentos
Stop [ \NoRegain ]
[ \NoRegain ] Tipo de dado: switch
Se o argumento NoRegain for ligado, o robô e eixos externos não serão recuper-
ados para a posição de parada (se elas foram movidas para fora da posição).
Execução do programa
Esta instrução pára a execução do programa assim que o robô e eixos externos
alcançam o ponto de destino programado para o movimento realizado naquele
momento. A execução do programa pode então ser reiniciada pela próxima instrução.
Se houver uma instrução Stop em alguma rotina de evento, a rotina será executada a
partir do início do próximo evento.
Exemplo
MoveL p1, v500, fine, tool1;
TPWrite "Mova o robô para a posição do canto 1 do pallet";
Stop \NoRegain;
p1_read := CRobT();
MoveL p2, v500, z50, tool1;
A execução do programa pára com o robô em p1. O operador move o robô para
p1_read. Para o início do próximo programa, o robô não retorna para p1, então a
posição p1_read pode ser guardada no programa.
Limitações
A instrução de movimento que precede esta instrução deve ser terminada com um
ponto de parada, para que seja possível reiniciar nesta instrução seguindo uma falha de
energia.
Sintaxe
Stop
[ ’\’ NoRegain ]’;’
Informações relacionadas
Descrito em:
Parando após um erro fatal Instruções - Exit
Terminando a execução do programa Instruções - Exit
Somente parando movimentos do robô Instruções - StopMove
Esta instrução pode, por exemplo, ser usada numa rotina trap para parar o robô tempo-
rariamente quando uma interrupção ocorre.
Exemplo
StopMove;
WaitDI ready_input, 1;
StartMove;
Execução do programa
Os movimentos do robô e eixos externos param sem que os freios sejam acionados.
Qualquer processo associado com os movimentos em progresso é parado ao mesmo
tempo que o movimento for parado.
A execução do programa continua sem aguardar que o robô e os eixos externos parem
(posição fixa).
Exemplos
VAR intnum intno1;
...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;
TRAP go_to_home_pos
VAR robtarget p10;
StopMove;
StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP
Quando a entrada di1 é ajustada em 1 é ativada uma interrupção que, por sua vez,
TRAP go_to_home_pos ()
VAR robtarget p10;
StorePath;
p10:=CRobT();
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP
Exemplo igual ao anterior, mas o robô não muda para a posição home até a
instrução de movimento atual estar terminada.
Sintaxe
StopMove’;’
Informações relacionadas???
Descrito em:
Continuando o movimento Instruções - StartMove
Interrupções Sumário RAPID - Interrupções
Características Básicas - Inter-
rupções???
Esta instrução pode ser usada para ir para uma posição de serviço ou para limpar a
tocha (solda arco), pinça (solda ponto) ou pistola ( aplicação de cola), por exemplo,
quando um erro ocorre.
Exemplo
StorePath;
Execução do programa
A atual trajetória do movimento do robô e eixos externos é salva. Após isto, outro mo-
vimento pode ser iniciado na rotina trap ou no tratamento de erro. Quando a razão para
o erro ou interrupção for retificada, a trajetória do movimento salva pode ser reinici-
ada.
Exemplo
TRAP machine_ready;
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL p100, v100, fine, tool1;
...
MoveL p1, v100, fine, tool1;
RestoPath;
StartMove;
ENDTRAP
Quando ocorre uma interrupção que ativa a rotina trap machine_ready, a tra-
jetória do movimento que o robô está executando no momento é parada no fim
da instrução (ToPoint) e salva. Após isto, o robô corrige a interrupção, por exem-
plo, substituindo uma peça na máquina e o movimento normal é reiniciado.
Limitações
Somente os dados de trajeto do movimento estão armazenados com a instrução Store-
Path. Se o usuário quiser fazer algum movimento no nível de trajeto novo, após arma-
zenar StorePath, deverá dirigir a posição de parada atual, antes que RestoPath faça um
movimento, para a posição de parada armazenada no trajeto.
Sintaxe
StorePath‘;’
Informações relacionadas
Descrito em:
Recuperando uma trajetória Instruções - RestoPath
Mais exemplos Instruções - RestoPath
Exemplo
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Escolha ilegal";
Stop;
ENDTEST
Argumentos
TEST Test data {CASE Test value {, Test value} : ...}
[ DEFAULT: ...] ENDTEST
Test data DataType: All
O valor no qual o ’test data’ deve ter para as instruções associadas para ser exe-
cutado.
Execução do programa
O ’test data’ é comparado com os ’test values’ na primeira condição CASE. Se a com-
paração for verdadeira, as instruções associadas são executadas. Após isso, a execução
do programa continua com a instrução após ENDTEST.
Se a primeira condição CASE não for satisfeita, outras condições CASE são testadas,
e assim por diante. Se nenhuma das condições for satisfeita, as instruções associadas
com DEFAULT são executadas (se isto estiver presente).
Sintaxe
(EBNF)
TEST <expressão>
{( CASE <valor teste> { ’,’ <valor teste> } ’:’
<lista de instrução> ) | <CSE> }
[ DEFAULT ’:’ <lista de instrução> ]
ENDTEST
Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões
Exemplo
TestSign 1, resolver_angle, Orbit, 2, 4, 0;
Argumentos
TestSign Output SignalId MechUnit Axis Scale Stime
Output Tipo de dados: num
Esse argumento especifica em qual dos dois pontos de conexão de saída o sinal
de teste estará disponível. Os valores possíveis são 1 e 2.
Execução do programa
A instrução TestSign espelha um sinal no sistema do robô para uma saída. O espelha-
mento de um sinal de teste especificado fica ativo até que uma nova instrução TestSign
seja executada para a saída. Uma partida a quente do sistema do robô remove os sinais
de teste ativados no momento.
Tratamento de erros
Se houver um erro no parâmetro MechUnit, o parâmetro do sistema ERRNO será defi-
nido como ERR_UNIT_PAR. Se houver um erro no parâmetro Axis, ERRNO será
definido como ERR_AXIS_PAR.
Sintaxe
TestSign
[ Output ‘:=‘ ] < expressão (IN) de num> ‘,’
[ SignalId ‘:=‘ ] < expressão (IN) de testsignal>
[ MechUnit ‘:=‘ ] < variável (VAR) de mecunit> ‘,’
[Axis ‘:=‘ ] < expressão (IN) de num> ‘,’
[ Scale ‘:=‘ ] < expressão (IN) de num > ‘,’
[ Stime ‘:=‘ ] < expressão (IN) de num> ‘;’
Exemplo
TestSignReset;
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.
Sintaxe
TestReset’;’
Informações relacionadas
Descrito em:
Definir sinal de teste Instruções - TestSignDefine
Ler sinal de teste Funções - TestSignRead
Exemplo
TPErase;
TPWrite "Execução iniciada";
Execução do programa
Todo o texto do display da unidade de programação é apagado. Na próxima vez que o
texto for escrito, ele será colocado na linha mais alta do display.
Sintaxe
TPErase;
Informações relacionadas
Descrito em:
Escrevendo na unidade de programação Sumário RAPID - Comunicação
Exemplo
TPReadFK reg1, "Mais ?", stEmpty, stEmpty, stEmpty, "Sim", "Não";
Mais?
Sim Não
Argumentos
TPReadFK Answer Text FK1 FK2 FK3 FK4 FK5 [\MaxTime]
[\DIBreak] [\BreakFlag]
Answer DataType: num
A variável para qual, dependendo de qual tecla for pressionada, o valor numérico
1..5 é retornado. Se a tecla de função 1 for pressionada, 1 é retornado, eassim por
diante.
O texto a ser escrito como uma orientação para a apropriada tecla de função (um
máximo de 7 caractéres). FK1 é a tecla do canto esquerdo.
Teclas de função sem pontos são especificadas pela constante string predefinida
stEmpty com valor string vazio (““).
A variável que irá manter o código de erro se “maxtime” ou “dibreak” for usado.
Se esta variável opcional for omitida, o tratamento de erro será executado. As
constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas para
escolher a causa.
Execução do programa
O texto de informação sempre é escrito numa linha nova. Se o display está completo com
texto, o corpo do texto é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.
Textos-curtos são escritos acima das teclas de função apropriadas. Teclas sem textos-
curtos são desativadas.
A execução do programa espera até que uma das teclas de função ativadas sejam pres-
sionada.
• Novo pedido TP de outra tarefa de programa não será focalizado (novo colocado em
fila de espera)
• Novo pedido TP de TRAP na mesma tarefa de programa será focalizado (antigo
colocado em fila de espera)
• Parada de programa será focalizada (antiga colocado em fila de espera)
• Novo pedido TP em parada de programa será focalizado (antigo colocado em fila de
espera)
Exemplo
VAR errnum errvar;
...
TPReadFK reg1, "Vai para a posição de serviço?" stEmpty, stEmpty, stEmpty, "Sim",
"Não" \MaxTime:= 600
\DIBreak:= di5\BreakFlag:= errvar;
IF reg1 = 4 or OR errvar = ERR_TP_DIBREAK THEN
MoveL service, v500, fine, tool1;
Stop;
ENDIF
IF errvar = ERR_TP_MAXTIME EXIT;
Dados predifinidos
A constante predifinida stEmpty deverá ser usada para Teclas de Função sem pontos.
Usando stEmpty em vez de ““ guarda cerca de 80 bytes para cada Tecla de Função sem
pontos.
Sintaxe
TPReadFK
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[Text’:=’] <expressão (IN) do string>’,’
[FK1 ’:=’] <expressão (IN) do string>’,’
[FK2 ’:=’] <expressão (IN) do string>’,’
[FK3 ’:=’] <expressão (IN) do string>’,’
[FK4 ’:=’] <expressão (IN) do string>’,’
[FK5 ’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>]’;’
Informações relacionadas
Descritas em:
Escrevendo ou lendo Sumário RAPID - Comunicação
na unidade de programação
Respondendo via unidade de programação Produção rodando
Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
Argumentos
TPReadNum Answer String [\MaxTime] [\DIBreak]
[\BreakFlag]
Answer DataType: num
A variável para que o número que entra via unidade de programação seja retor-
nado.
usado. Se esta variável opcional for omitida, o tratamento de erro será executado.
As constantes ERR_TP_MAXTIME e ERR_TP_ DIBREAK podem ser usadas
para selecionar a causa.
Execução do programa
O texto de informação é sempre escrito numa linha nova. Se o display está completo
com o corpo do texto, é movido uma linha para cima. Textos maiores que a largura da
unidade de programação (40 caracteres) são divididos em duas linhas.
A execução do programa espera até que um número sejam escrito no teclado numérico
(seguido de Enter ou OK).
Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
FOR i FROM 1 TO reg1 DO
produce_part;
ENDFOR
Sintaxe
TPReadNum
[Answer’:=’] <var ou pers (INOUT) do num>’,’
[String’:=’] <expressão (IN) do string>
[’\’MaxTime ’:=’ <expressão (IN) do num>]
[’\’DIBreak ’:=’ <variável (VAR) do signaldi>]
[’\’BreakFlag ’:=’ <var ou pers (INOUT) do errnum>] ’;’
Informações relacionadas
Descrito em:
Escrevendo e lendo na Sumário RAPID - Comunicação
unidade de programação
Entrando com um número na unidade Produção rodando
de programação
Exemplos de como usar os argumentos Instruções - TPReadFK
MaxTime, DIBreak e BreakFlag
Exemplos
TPShow TP_PROGRAM;
TPShow TP_LATEST;
Argumentos
TPShow Window
Window Data type: tpnum
Dados predefinidos
CONST tpnum TP_PROGRAM := 1;
CONST tpnum TP_LATEST := 2;
CONST tpnum TP_SCREENVIEWER := 3;
Execução do programa
A janela da unidade de programação selecionada ficará ativada.
Sintaxe
TPShow
[Window’:=’] <expression (IN) of tpnum> ‘;’
Informações relacionadas
Descrito em:
Comunicar usando a unidade Sumário RAPID - Comunicação
de programação
Número da janela da unidade de programação Tipos de dados - tpnum
-
Exemplos
TPWrite "Execução iniciou";
Se, por exemplo, a resposta para No. de peças produzidas=5, entra 5 em vez de
reg1 na unidade de programação.
Argumentos
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]
String DataType: string
Execução do programa
Texto escrito na unidade de programação sempre começa numa nova linha. Quando o
display está completo com texto, este texto é movido uma linha para cima. Textos que
são maiores que a largura da unidade de programação (40 caractéres) são divididos em
duas linhas.
Se um dos argumentos \Num, \Bool, \Pos ou \Orient for usado, seu valor é primeira-
mente convertido em um texto antes que seja adicionado ao primeiro texto. A con-
versão de valor para texto ocorre como segue:
Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e portanto não
podem ser usados simultanemente na mesma instrução.
Sintaxe
TPWrite
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]’;’
Informações relacionadas
Descrito em:
Apagando e lendo Sumário RAPID - Comunicação
a unidade de programação
Exemplos
VAR triggdata gunon;
O sinal de saída digital gun é ligado quando o TCP do robô passa o ponto médio
do trajeto de canto do ponto p1.
Ponto de círculo p2
Argumentos
TriggC [\Conc] CirPoint ToPoint Speed [ \T ]
Trigg_1 [ \T2 ] [ \T3 ] [ \T4] Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch
Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado a zona programada.
O ponto do círculo do robô. Veja a instrução MoveC para uma descrição mais
detalhada do movimento circular. O ponto do círculo é definido como uma
posição nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo ao objeto de trabalho a ser realizado.
Execução do programa
Veja a instrução MoveC para informação sobre movimento circular.
Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.
Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggC p1, p2, v500, trigg1, fine, gun1;
TriggC p3, p4, v500, trigg1, fine, gun1;
...
IDelete intno1;
Limitações
Se o ponto de partida atual se desviar do normal, de modo a que o comprimento total
de posicionamento da instrução TriggC seja menor do que o usual, pode acontecer que
algumas ou todas as condições trigger sejam cumpridas imediatamente e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa no programa do usuário não pode estar baseada
numa sequência normal de atividades de gatilho para um “movimento incompleto”.
A instrução TriggC nunca deve ser reiniciada após o ponto de círculo já ter passado.
Caso contrário o robô não fará a trajetória programada (posicionamento em torno de
uma trajetória circular executará em outra direção quando comparada com aquela pro-
gramada).
Sintaxe
TriggC
[’\’ Conc ’,’]
[ CirPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Movimento linear com gatilhos Instruções - TriggL
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip,
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento circular Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento
Exemplos
VAR triggdata gunon;
A ferramenta gun1 abre no ponto p2, quando o TCP está 10 mm antes do ponto
p1. Para alcançar isto, o sinal de saída digital gun é setado para o valor 1, quando
o TCP está 0.1 s antes do ponto p2. A pinça está completamente aberta quando
o TCP alcança o ponto p2.
Ponto inicial TriggL p1, v500, gunon, z50, gun1; Ponto final p1
10 mm
Argumentos
TriggEquip TriggData Distance [ \Start ] EquipLag
[ \DOp ] | [ \GOp ] | [\AOp ] SetValue [ \Inhib ]
TriggData Data type: triggdata
Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
usados nas instruções subsequentes TriggL, TriggC or TriggJ.
Valores de argumentos negativos significam que o sinal de E/S é setado pelo sis-
tema do robô num tempo específico após o TCP físico ter passado a distância
específica em relação ao ínicio do movimento ou ao ponto final.
Distância Distância
\Start
+ - + -
EquipLag
O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.
Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).
Se este argumento opcional é usado e o valor atual da flag específica for TRUE
na posição-tempo para definição do sinal então o sinal específicado (DOp, GOp
or AOp) é setado para 0 invés do valor específicado.
Execução do programa
Quando rodando a instrução TriggEquip, a condição de gatilho é guardada numa var-
iável especificada para o argumento TriggData.
Quando uma das instruções TriggL, TriggC ou TriggJ é executada, o seguinte aplicado,
em relação às definições em TriggEquip:
Exemplos
VAR triggdata glueflow;
O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1 com compensação para
o atraso do equipamento de
0.05 s.
...
TriggL p3, v500, glueflow, z50, tool1;
O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.
Limitações
Eventos de E/S à distância (com o argumento \Time) se destinam a pontos flutuantes
(trajeto de canto). Eventos de E/S à distância usando pontos de parada resultam em
menor precisão do que a especificada abaixo.
Eventos de E/S com ajuste de tempo (com o argumento \Time) se destina a pontos de
parada. Eventos de E/S com ajuste de tempo usando pontos flutuantes resulta em menor
precisão do que a especificada abaixo.
Eventos de E/S com ajuste de tempo somente podem ser especificados a partir do ponto
final do movimento. Esse tempo não pode exceder o tempo atual de frenagem do robô,
que é, no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500 mm/s
para o IRB2400 de 150 ms e de 250 ms para o IRB6400). Se o t empo especificado for
superior ao tempo atual de frenagem, o evento será gerado de qualquer modo, mas não
antes de ser iniciada a frenagem (mais tarde do que especificado). Entretanto, todo o
tempo do movimento para o movimento atual pode ser utilizado durante movimentos
pequenos e rápidos.
Valores típicos absolutos de precisão para conjunto de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjunto de saídas digitais +/- 2 ms.
Sintaxe
TriggEquip
[ TriggData ’:=’ ] < variável (VAR) de triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) de num>
[ ’\’ Start ] ‘,’
[ EquipLag ’:=’ ] < expressão (IN) de num>
[ ’\’ DOp ’:=’ < variável (VAR) de signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) de signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) de signalao> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) de num>
[ ’\’ Inhibit ’:=’ < persistente (PERS) de bool> ] ‘,’
Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição de outros triggs Instruções - TriggIO, TriggInt
Mais exemplos Data Types - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO
Configuração do tempo pré-definido Parâmetros do sistema - Robô
do evento
O dado definido é usado para implementar em uma ou mais instruções TriggL, TriggC
ou TriggJ.
Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 5, intno1;
...
TriggL p1, v500, trigg1, z50, gun1;
TriggL p2, v500, trigg1, z50, gun1;
...
IDelete intno1;
Ponto inicial TriggL p1, v500, trigg1, fine, gun1; Ponto final p1 ou p2
5 mm
A interrupção é gerada
quando o ponto está aqui
Argumentos
TriggInt TriggData Distance [ \Start ] | [ \Time ]
Interrupt
TriggData DataType: triggdata
Variável para guardar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções TriggL, TriggC ou TriggJ subsequentes.
Execução do programa
Quando rodando a instrução TriggInt, dado é guardado numa variável especificada para
o argumento TriggData e a interrupção que é especificada na variável para o argumento
Interrupt é ativada.
Depois, quando uma das instruções TriggL, TriggC ou TriggJ for executada, com
relação as definições em TriggInt, é aplicado o seguinte:
A interrupção de posição relacionada será gerada quando o ponto inicial (ponto final)
já passou, se a distância especificada do ponto final (ponto inicial) não está dentro do
comprimento do movimento da atual instrução (Trigg...).
Exemplos
Este exemplo descreve programação de instruções que interagem para gerar inter-
rupções à interrupção relacionada:
IDelete intno2;
Limitações
Os passos de interrupção à distância (sem o argumento \Time) se destinam a pontos flu-
tuantes (trajeto de canto). Os passos de interrupção à distância, usando pontos de
parada, resultam em menor precisão do que a especificada abaixo.
Os passos de E/S em tempo útil somente podem ser especificados a partir do ponto final
do movimento. Este tempo não pode exceder o atual tempo de parada do robô, que é,
no máximo, aproximadamente 0.5 s (valores típicos à velocidade de 500mm/s, para o
IRB 4400 150 ms e 250 ms para o IRB6400). Se o tempo especificado for maior que o
tempo atual de parada, a interrupção será gerada de qualquer modo, mas não antes que
a parada seja iniciada (depois do especificado). Entretanto, o tempo completo do mov-
imento para o atual movimento pode ser utilizado durante movimentos lentos ou rápi-
dos.
Para obter a melhor precisão quando ligando a saída em uma posição fixa ao longo da
trajetória do robô, você deve usar as instruções TriggIO ou TriggEquip em preferência
às instruções TriggInt com SetDO/SetGO/SetAO em uma rotina de interrupção.
Sintaxe
TriggInt
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ] ’,’
[ Interrupt ’:=’ ] < variável (VAR) do intnum> ’;’
Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição da posição fixa E/S Instruções - TriggIO
Mais exemplos DataTypes - triggdata
Interrupções Características Básicas - Interrupções
Para obter uma posição fixa no passo de E/S, TriggIO compensa o tempo de espera no
sistema de controle (tempo de espera entre o robô e o servo) mas não um tempo de
espera qualquer no equipamento externo. Para compensar os dois tempos de espera uti-
lize TriggEquip.
Exemplos
VAR triggdata gunon;
O sinal de saída digital gun é ajustado para o valor 1 quando o TPC está 10 mm
antes do ponto p1.
Ponto inicial TriggL p1, v500, gunon, fine, gun1; Ponto final p1
10 mm
Argumentos
TriggIO TriggData Distance [ \Start ] | [ \Time ]
[ \DOp ] | [ \GOp ] | [\AOp ] | [\ProcID ] SetValue
[ \DODelay ]
TriggData DataType: triggdata
Variável para salvar o triggdata retornado desta instrução. Estes triggdata são
então usados nas instruções subsequentes TriggL, TriggC ou TriggJ.
Posição fixada para tempo somente podem ser usadas por pouco tempo (< 0.5 s)
antes que o robô alcance o ponto final da instrução. Para maiores detalhes, veja a
seção entitulada Limitações.
O nome do sinal, quando um grupo de sinais de saída digital pode ser mudado.
Valor desejado do sinal de saída (dentro da escala permitida para o atual sinal).
Somente usado para atrasar os sinais de saída digital, depois que o robô alcançou
a posição especificada. Não haverá atraso se o argumento for omitido.
Execução do programa
Quando rodando a instrução TriggIO, a condição de gatilho é guardada numa variável
especificada para o argumento TriggData.
Quando uma das instruções TriggL, TriggC ou TriggJ é executada, em relação as defin-
ições em TriggIO, o seguinte é aplicado:
A posição fixa E/S será produzida quando o ponto de partida (ponto final) correr, se a
distância especificada do ponto final (ponto de partida) não estiver incluída no compri-
mento do movimento da instrução atual (Trigg...).
Exemplos
VAR triggdata glueflow;
O sinal de saída analógico glue é setado no valor 5.3 quando o ponto de trabalho
passa num ponto localizado 1 mm após o ponto inicial p1.
...
TriggL p3, v500, glueflow, z50, tool1;
O sinal de saída analógico glue é setado mais uma vez no valor 5.3 quando o
ponto de trabalho passa num ponto localizado 1 mm após o ponto inicial p2.
Limitações
Os passos E/S à distância (sem o argumento \Time) se destinam a pontos flutuantes (tra-
jeto de canto). Os passos E/S à distância, usando pontos de parada, resultam em uma
precisão menor que a especificada abaixo.
Os passos E/S em tempo útil (com o argumento \Time) se destinam a pontos de parada.
Os passos E/S em tempo útil, usando pontos flutuantes, resultam em uma precisão
menor que a especificada abaixo. Estes passos só podem ser especificados a partir do
ponto final do movimento. Este tempo não pode exceder o tempo de frenagem atual do
robô que, é no máximo, aproximadamente de 0,5 s (valores típicos à velocidade de 500
mm/s para o IRB2400 150 ms e de 250 ms para o IRB6400). Se o tempo especificado
for superior ao tempo de frenagem atual, o passo será de qualquer forma produzido,
mas só depois da frenagem ser inicializada (mais tarde do que está especificado). No
entanto, todo o tempo de movimento relativo ao movimento atual pode ser usado
durante movimentos pequenos e rápidos.
Valores típicos absolutos de precisão para conjuntos de saídas digitais +/- 5 ms.
Valores típicos repetidos de precisão para conjuntos de saídas digitais +/- 2 ms.
Sintaxe
TriggIO
[ TriggData ’:=’ ] < variável (VAR) do triggdata> ‘,’
[ Distance ’:=’ ] < expressão (IN) do num>
[ ’\’ Start ] | [ ’\’ Time ]
[ ’\’ DOp ’:=’ < variável (VAR) do signaldo> ]
| [ ’\’ GOp ’:=’ < variável (VAR) do signalgo> ]
| [ ’\’ AOp ’:=’ < variável (VAR) do signalao> ] ‘,’
| [ ’\’ ProcID ’:=’ < expressão (IN) do num> ] ‘,’
[ SetValue ’:=’ ] < expressão (IN) do num>
[ ’\’ DODelay ’:=’ < expressão (IN) do num> ]
Informações relacionadas
Descrito em:
Uso dos gatilhos Instruções - TriggL, TriggC, TriggJ
Definição do tempo-posição passo E/S Instrução - TriggEquip
Definição de interrupções
de posição relacionada Instruções - TriggInt
Mais exemplos Tipos de dados - triggdata
Ligação de E/S Instruções - SetDO, SetGO, SetAO
Exemplos
VAR triggdata gunon;
O sinal de saída digital gun é ligado quando o TCP do robô passa o ponto médio
do trajeto de canto do ponto p1.
Ponto inicial p1 TriggL p2, v500, gunon, fine, gun1; Ponto final p2
Argumentos
TriggL [\Conc] ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ] [ \Corr ]
[ \Conc ] (Concurrent) Data type: switch
Se este argumento for omitido e ToPoint não for um ponto de parada, a instrução
subsequente só é executada depois do robô ter alcançado o ponto de parada espe-
cificado ou 100 ms antes da zona especificada.
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.
Execução do programa
Veja a instrução MoveL para informação sobre movimento linear.
Tão logo as atividades de gatilho definidas são realizadas, as condições de gatilho são
satisfeitas quando o robô é posicionado cada vez mais perto do ponto final, . As con-
dições de gatilho são satisfeitas a uma certa distância antes do ponto final da instrução,
ou a uma certa distância depois do ponto inicial da instrução, ou em um certo ponto no
tempo (limitado a um curto tempo) antes do ponto final da instrução.
Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, ne-
nhuma atividade de gatilho é realizada.
Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggL p1, v500, trigg1, fine, gun1;
TriggL p2, v500, trigg1, fine, gun1;
...
IDelete intno1;
Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".
Sintaxe
TriggL
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ]
[ ’\’ Corr ]’;’
Informações relacionadas
Descrito em:
Movimento circular com gatilhos Instruções - TriggC
Movimento eixo a eixo com gatilhos Instruções - TriggJ
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Escrever em uma entrada de correções Instruções - CorrWrite
Movimento linear Princípios de movimento -
Posicionamento na execução do
programa
Definição de velocidade DataTypes - speeddata
Definição de ferramenta DataTypes - tooldata
Definição de objeto de trabalho DataTypes - wobjdata
Movimentação em geral Princípios de movimento
Exemplos
VAR triggdata gunon;
O sinal de saída digital gun é ligado quando o TCP do robô passa o ponto médio
do trajeto de canto do ponto p1.
Argumentos
TriggJ ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ] [ \T4 ]
Zone Tool [ \WObj ]
ToPoint DataType: robtarget
O ponto de destino do robô e eixos externos. Ele é definido como uma posição
nomeada ou guardada diretamente na instrução (marcada com um * na
instrução).
Este argumento pode ser omitido, e se for a posição é relacionada com o sistema
de coordenada mundial. Se, por outro lado, o TCP estacionário ou coordenadas
de eixos externos forem usadas, este argumento deve ser especificado para um
movimento linear relativo a um objeto de trabalho a ser executado.
Execução do programa
Veja a instrução MoveJ para informação sobre movimento eixo-a-eixo.
Durante a execução passo-a-passo para frente, as atividades E/S são realizadas mas as
rotinas de interrupção não rodam. Durante a execução passo-a-passo para trás, nen-
huma atividade de gatilho é realizada.
Exemplos
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time , intno1;
...
TriggJ p1, v500, trigg1, fine, gun1;
TriggJ p2, v500, trigg1, fine, gun1;
...
IDelete intno1;
Limitações
Se o ponto de partida atual se desviar do normal, de forma a que o comprimento total
do posicionamento da instrução TriggJ seja mais pequeno do que o usual (por exemplo,
na inicialização de TriggJ com a posição do robô na ponta final), pode acontecer que
algumas ou todas as condições trigger sejam imediatamente cumpridas e na mesma
posição. Nestes casos, a sequência na qual as actividades trigger são executadas não
será definida. A lógica do programa do usuário pode não estar baseada numa sequência
normal de atividades trigger para um "movimento incompleto".
Sintaxe
TriggJ
[’\’ Conc ’,’]
[ ToPoint ’:=’ ] < expressão (IN) do robtarget > ’,’
[ Speed ’:=’ ] < expressão (IN) do speeddata >
[ ’\’ T ’:=’ < expressão (IN) do num > ] ’,’
[Trigg_1 ’:=’ ] < variável (VAR) do triggdata >
[ ’\’ T2 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T3 ’:=’ < variável (VAR) do triggdata > ]
[ ’\’ T4 ’:=’ < variável (VAR) do triggdata > ] ‘,’
[Zone ’:=’ ] < expressão (IN) do zonedata > ‘,’
[ Tool ’:=’ ] < persistente (PERS) do tooldata >
[ ’\’ WObj ’:=’ < persistente (PERS) do wobjdata > ] ’;’
Informações relacionadas
Descritas em:
Movimento linear com gatilhos Instruções - TriggL
Movimento circular com gatilhos Instruções - TriggC
Definição de gatilhos Instruções - TriggIO, TriggEquip ou
TriggInt
Movimento eixo-a-eixo Princípios de Movimentação -
Posicionamento na execução do
programa
Definição de velocidade Tipos de Dados - speeddata
Definição de ferramentas Tipos de Dados - tooldata
Definição de objetos de trabalho Tipos de Dados - wobjdata
Movimentação em geral Princípios de Movimentação
Exemplo
reg2 := reg3/reg4;
.
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg2:=0;
TRYNEXT;
ENDIF
Uma tentativa é feita para dividir reg3 por reg4. Se reg4 é igual a 0 (divisão por
zero), um salto é feito para o tratamento de erro, onde reg2 é colocado em 0. A
instrução TRYNEXT é então usada para continuar com a próxima instrução.
Execução do programa
Execução do programa continua com a instrução subsequente a instrução que causou
o erro.
Limitações
A instrução somente pode existir numa rotina do tratamento de erro.
Sintaxe
TRYNEXT’;’
Informações relacionadas
Descrito em:
Tratamento de erros Características Básicas -
Reconhecimento de erros
Exemplo
TuneReset;
Execução do programa
Os valores de servo de todos os eixos são desligados, retornando para 100%.
Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset
- na inicialização a frio
- quando um novo programa é carregado
- quando começando a execução do programa desde o início.
Sintaxe
TuneReset ’;’
Informações relacionadas
Descrito em:
Ajuste de Servo Instruções - TuneServo
Nota. Para se obter uma regulagem mais favorável, é essencial que sejam
utilizados os dados corretos do carregamento. Verifique isso antes de utilizar o
TuneServo.
Para a movimentação dos robôs em baixas velocidades, o TuneServo pode ser utilizado
para melhorar a precisão do trajeto através:
Descrição
Tune_df
Existe sempre um valor adequado que pode variar dependendo da posição e compri-
mento de movimento. Este valor adequado pode ser encontrado por troca de ajuste de
servo em pequenos intervalos (1 - 2%) nos eixos que estão envolvidos neste comporta-
mento indesejado. Normalmente o ajuste adequado será encontrado entre 70% - 130%.
Valores mais baixos ou mais altos tem um efeito negativo e prejudicarão os movimen-
tos consideravelmente.
IRB 6400, partes superiores da área de trabalho. O eixo 1 pode muitas vezes ser otimi-
zado com um valor de regulagem de 85% - 95%.
IRB 6400, movimento curto (<80 mm). O eixo 1 pode muitas vezes ser otimizado com
um valor de regulagem de 94% - 98%.
IRB 2400, com movimento de tração. Em alguns casos os eixos 2 - 3 podem ser otimi-
zados com um valor de regulagem de 110% - 130%. O movimento na trajetória pode
exigir um valor de regulagem diferente em comparação com o movimento nos ângulos
rectos da trajetória.
Trancos e oscilações podem ser reduzidos pelo decréscimo da aceleração ou pela rampa
de aceleração (AccSet), a qual irá, entretanto, aumentar o tempo do ciclo. Este é um
método alternativo para usar o TuneServo.
Este tipo de regulagem afeta o avanço da posição de controle (kp), o avanço da veloci-
dade de controle (kv) e o tempo de integração da velocidade de controle (ti) dos eixos
externos. São usados para adaptar os eixos externos a carregamentos de inércias difer-
entes. A regulagem base dos eixos externos pode igualmente ser simplificada usando
este tipo de regulagem.
Para os eixos do robô, este tipo de regulagem têm outra importância e pode ser usada
para reduzir erros de trajetória numa velocidade reduzida (<500 mm/s).
Valores recomendados : tune_kv 100 - 180%, tune_ti 50 - 100%. Tune_kp não devem
ser usados para os eixos do robô. Os valores de tune_kv / tune_ti muito altos ou muito
baixos causam vibrações e oscilações. Nunca utilize este tipo de regulagem a uma
velocidade elevada ou quando a precisão de trajetória exigida estiver cumprida.
Esses tipos de regulagem podem ser utilizados para reduzir os erros do trajeto do robô
causados pela fricção e folga em velocidades baixas (10 - 200 mm/s). Esses erros de
trajeto aparecem quando um eixo do robô muda a direção do movimento. Ative a
compensação da fricção para um eixo, ajustando o parâmetro do sistema Friction ffw on
para TRUE (tópico: Robô, tipo: Parâmetros de controle).
regulagemA regulagem Friction ffw level (utilizando tune_fric_lev) para cada eixo do
robô pode melhorar, consideravelmente, a precisão do trajeto dos robôs, na faixa de
velocidade de 20 - 100 mm/s. Para robôs maiores (especialmente o da família
IRB6400), o efeito será, entretanto, mínimo comparado com outras fontes de erros de
deslocamento que dominam esses robôs.
Ajuste Friction ffw level = 1,5 e o valor de regulagem = 100% (valor padrão) que
é equivalente.
Argumentos
TuneServo MecUnit Axis TuneValue [\Type]
MecUnit (Mechanical Unit) DataType: mecunit
Este argumento pode ser omitido quando usar o tipo de regulagem TUNE_DF.
Exemplo
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;
Execução do programa
O tipo de regulagem especificado e o valor de regulagem são ativados para os eixos
especificados. Este valor é aplicável para todos os movimentos até um novo valor ser
programado para o eixo atual, ou até os tipos de regulagem e valores para todos os
eixos serem reajustados usando a instrução TuneReset.
Os valores padrão de ajuste do servo para todos os eixo são automaticamente definidos
executando a instrução TuneReset
- na inicialização a frio
- quando um novo programa é carregado
- quando começando a execução do programa desde o início.
Limitações
Quaisquer ajustes de servo ativos retornarão sempre aos valores padrão em caso de
falha de energia. Essa limitação pode ser contornada no programa do usuário, ao
reiniciar após a falha de energia.
Sintaxe
TuneServo
[MecUnit ’:=’ ] < variável (VAR) do mecunit> ’,’
[Axis ’:=’ ] < expressão (IN) do num> ’,’
[TuneValue ’:=’ ] < expressão (IN) do num> ’;’
[’\’ Type ’:=’ <expressão (IN) do tunetype>]’;’
Informações relacionadas
Descrito em:
Outros ajustes de movimento Sumário Rapid - Motion Settings
Tipos do servo de regulagem Data Types - tunetype
Reajustar todos os servos de regulagem Instruções - TuneReset
Regulagem dos eixos externos Parâmetros do sistema - Robô
Compensação da fricção Parâmetros do Sistema - Robô
Exemplo
UnLoad ram1disk \File:="PART_A.MOD";
Argumentos
UnLoad [\Save] FilePath [\File]
[\Save] Data type: switch
Se esse argumento for usado, o módulo do programa será salvo antes do início
do descarregamento.
O módulo do progama será salvo no local original especificado na instrução
Load ou StartLoad.
Execução do programa
Para conseguir executar a instrução UnLoad no programa, uma instrução Load ou
StartLoad - WaitLoad com o mesmo caminho e nome deve ter sido executado antes no
programa.
Exemplos
UnLoad "ram1disk:DOORDIR/DOOR1.MOD";
Limitações
Não é permitido descarregar um módulo de um programa que está sendo executado.
As rotinas TRAP, os passos do sistema E/S e outras tarefas do programa não podem ser
executados durante o descarregamento.
Evite usar um disquete flexível para carregamento uma vez que a leitura de um disquete
flexível demora muito tempo.
Uma parada do programa durante a execução da instrução UnLoad resulta numa parada
de proteção com os motores desligados e a mensagem de erro “2005 Stop order time-
out” será mostrada na unidade de programação.
Tratamento de erros
Se o arquivo na instrução UnLoad não puder ser descarregado por causa de uma
execução que está correndo no módulo ou por causa de uma trajetória errada (módulo
não carregado com Load ou StartLoad) então a variável do sistema ERRNO é ajustada
para ERR_UNLOAD. Esse erro pode ser tratado na rotina de tratamento de erros.
Sintaxe
UnLoad
[’\’Save ’,’]
[FilePath’:=’]<expression (IN) of string>
[’\’File’:=’ <expression (IN) of string>]’;’
Informações relacionadas
Descrito em:
Carregar o módulo de um programa Instruções - Load
Instruções - StartLoad-WaitLoad
Aceitar referências não resolvidas Parâmetros do Sistema - Controller
Parâmetros do Sistema - Tasks
Parâmetros do Sistema - BindRef
Exemplo
WaitDI di4, 1;
WaitDI grip_status, 0;
Argumentos
WaitDI Signal Value [\MaxTime] [\TimeFlag]
Signal DataType: signaldi
O nome do sinal.
Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.
Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.
Sintaxe
WaitDI
[ Signal ’:=’ ] < variável (VAR) do signaldi > ’,’
[ Value ’:=’ ] < expressão (IN) do dionum >
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’
Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime
Exemplo
WaitDO do4, 1;
WaitDO grip_status, 0;
Argumentos
WaitDO Signal Value [\MaxTime] [\TimeFlag]
Signal Data type: signaldo
O nome do sinal.
Execução do programa
Se o valor do sinal está correto, quando a instrução é executada, o programa simplis-
mente continua com a instrução seguinte.
Se o valor do sinal não está correto, o robô entra em um estado de espera e quando o
sinal muda para o valor correto, o programa continua. A mudança é detectada como
uma interrupção, que dá uma resposta rápida.
Sintaxe
WaitDO
[ Signal ’:=’ ] < variable (VAR) of signaldo > ’,’
[ Value ’:=’ ] < expression (IN) of dionum >
[’\’MaxTime ’:=’<expression (IN) of num>]
[’\’TimeFlag’:=’<variable (VAR) of bool>] ’;’
Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um tempo determinado Instruções - WaitTime
Essa instrução também pode ser combinada com a função para descarregar algum
outro módulo de programa para minimizar o número de vínculos (1 em vez de 2).
Exemplo
VAR loadsession load1;
...
StartLoad "ram1disk:PART_A.MOD", load1;
MoveL p10, v1000, z50, tool1 \WObj:=wobj1;
MoveL p20, v1000, z50, tool1 \WObj:=wobj1;
MoveL p30, v1000, z50, tool1 \WObj:=wobj1;
MoveL p40, v1000, z50, tool1 \WObj:=wobj1;
WaitLoad load1;
%"routine_x"%;
UnLoad "ram1disk:PART_A.MOD";
Argumentos
WaitLoad [\UnloadPath] [\UnloadFile] LoadNo
[\UnloadPath] Tipo de dados: string
Execução do programa
A instrução WaitLoad primeiro irá esperar pela conclusão do carregamento se este
ainda não tiver sido concluído e, em seguida, ele será vinculado e inicializado. A
inicialização do módulo carregado define todas as variáveis em nível de módulo com
seus valores de inicialização.
Uma outra maneira de utilizar referências a instruções que não estejam na tarefa desde
o início é utilizar Vinculação posterior. Isso torna possível especificar a rotina a ser
chamada com uma expressão de seqüência, delimitada por dois %%. Nesse caso, o
parâmetro BindRef pode ser definido como YES (comportamento padrão). O método
de Vinculação posterior é preferível.
Para obter uma boa estrutura de programa, que seja de fácil compreensão e
manutenção, todo o carregamento e descarregamento de módulos de programa deve ser
feito a partir do módulo principal, que está sempre presente na memória de programa
durante a execução.
Exemplos
StartLoad "ram1disk:DOORDIR/DOOR2.MOD", load1;
...
WaitLoad \UnloadPath:="ram1disk:DOORDIR/DOOR1.MOD", load1;
equivale às instruções abaixo, mas o robô pode fazer algum outro trabalho
durante o tempo de carregamento e também fazê-lo mais rapidamente (somente
um vínculo).
2-WaitLoad-4 Data Types do Sistema e Rotinas
Instruções WaitLoad
Tratamento de erros
Se não for possível localizar o arquivo especificado na instrução StartLoad, a variável
de sistema ERRNO será definida como ERR_FILNOTFND na execução de WaitLoad.
Sintaxe
WaitLoad
[ [ ‘\’ UnloadPath ‘:=‘ <expressão (IN) de string> ]
[ ‘\’ UnloadFile ‘:=‘ <expressão (IN) de string> ] ‘,’ ]
[ LoadNo ‘:=‘ ] <variável (VAR) de loadsession> ‘;’
Informações relacionadas
Carregar um módulo de programa
durante a execução Instruções - StartLoad
Carregar sessão Tipos de dados - loadsession
Carregar um módulo de programa Instruções - Load
Descarregar um módulo de programa Instruções - UnLoad
Aceitar referências não resolvidas Parâmetros do sistema -
Controller/Task/BindRef
Exemplo
WaitTime 0.5;
Argumentos
WaitTime [\InPos] Time
[\InPos] Tipo de dado: switch
Se este argumento é usado, o robô e eixos externos devem estar parados antes do
início da contagem do tempo de espera.
Execução do programa
A execução do programa pára temporariamente por um tempo determinado. Contudo
tratamentos de interrupção e outras funções similares ainda estão ativas.
Exemplo
WaitTime \InPos,0;
A execução do programa espera até que o robô e eixos externos fiquem parados.
Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada no ponto final, para que seja possível reiniciar nesta instrução seg-
uida de uma falha de energia.
Sintaxe
WaitTime
[’\’InPos’,’]
[Time ’:=’] <expressão (IN) do num>’;’
Informações relacionadas
Descrito em:
Espera uma condição ser satisfeita Instruções - WaitUntil
Espera um sinal de entrada digital Instruções - WaitDI
Exemplo
WaitUntil di4 = 1;
Argumentos
WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag]
[\InPos] DataType: switch
Se este argumento é usado, o robô e eixos externos devem estar parados antes
que a condição comece a ser avaliada.
Execução do programa
Se a condição programada não é satisfeita na execução da instrução WaitUntil, a con-
dição é verificada novamente a cada 100 ms.
Exemplos
VAR bool timeout;
WaitUntil start_input = 1 AND grip_status = 1\MaxTime := 60
\TimeFlag := timeout;
IF timeout THEN
TPWrite "Nenhuma ordem recebida dentro do tempo esperado";
ELSE
start_next_cycle;
ENDIF
A execução do programa espera até que o robô pare de se mover e a entrada di4
seja ligada.
Limitações
Se o argumento \Inpos é usado, a instrução de movimento que precede esta instrução
deve ser terminada com um ponto final, para que seja possível reiniciar nesta instrução
seguida de uma falha de energia.
Sintaxe
WaitUntil
[’\’InPos’,’]
[Cond ’:=’] <expressão (IN) do bool>
[’\’MaxTime ’:=’<expressão (IN) do num>]
[’\’TimeFlag’:=’<variável (VAR) do bool>] ’;’
Informações relacionadas
Descrito em:
Espera um sinal de entrada digital Instruções - WaitDI
Espera um tempo determinado Instruções - WaitTime
Expressões Características Básicas - Expressões
Exemplo
VelSet 50, 800;
Argumentos
VelSet Override Max
Override DataType: num
Execução do programa
A velocidade programada de todas as instruções de posicionamento subsequentes é
afetada até uma nova instrução VelSet ser executada.
Os valores default para Override e Max são 100% e 5000 mm/s respectivamente. Estes
valores são automaticamente ligados
Exemplo
VelSet 50, 800;
MoveL p1, v1000, z10, tool1;
MoveL p2, v2000, z10, tool1;
MoveL p3, v1000\T:=5, z10, tool1;
A velocidade é 500 mm/s para ponto p1 e 800 mm/s para p2. Isso dá 10 segundos
para mover de p2 para p3.
Limitações
A velocidade máxima não é levada em consideração quando o tempo é especificado na
instrução de posicionamento.
Sintaxe
VelSet
[ Override ’:=’ ] < expressão (IN) do num > ’,’
[ Max ’:=’ ] < expressão (IN) do num > ’;’
Informações relacionadas
Descrito em:
Definição de velocidade DataTypes - speeddata
Instruções de posicionamento Sumário RAPID - Movimentação
Exemplo
WHILE reg1 < reg2 DO
...
reg1 := reg1 +1;
ENDWHILE
Argumentos
WHILE Condition DO ... ENDWHILE
Condition DataType: bool
A condição que deve ser satisfeita para que as instruções no ciclo WHILE sejam
executadas.
Execução do programa
1. A condição é calculada. Se a condição não é satisfeita, o ciclo WHILE termina e a
execução do programa continua com a instrução seguinte a ENDWHILE.
2. As instruções no loop WHILE são executadas.
3. O ciclo WHILE é repetido, começando pela primeira instrução.
Sintaxe
(EBNF)
WHILE <expressão condicional> DO
<lista de instrução>
ENDWHILE
Informações relacionadas
Descrito em:
Expressões Características Básicas - Expressões
Exemplos
Write logfile, "Execução iniciada";
O texto Execução iniciada foi escrito no arquivo com nome de referência logfile.
Argumentos
Write IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient]
[\NoNewLine]
IODevice DataType: iodev
Execução do programa
O texto é escrito para um arquivo ou canal serial especificado. Se o argumento \NoN-
ewLine não é usado, um caracter de linha de alimentação (LF) também é escrito.
Se um dos argumentos \Num, \Bool, \Pos ou \Orient é usado, seu valor é convertido
para um texto antes de ser adicionado ao primeiro texto. A conversão de valor para
texto ocorre como segue:
Exemplo
VAR iodev printer;
.
Open "sio1:", printer\Write;
WHILE DInput(stopprod)=0 DO
produce_part;
Write printer, "Parte produzida ="\Num:=reg1\NoNewLine;
Write printer, " "\NoNewLine;
Write printer, CTime();
ENDWHILE
Close printer;
Limitações
Os argumentos \Num, \Bool, \Pos e \Orient são mutuamente exclusivos e não podem
ser usados simultanemente na mesma instrução.
Esta instrução somente pode ser usada por arquivos ou canais seriais que foram abertos
para escrita.
Tratamento de Erro
Se um erro ocorrer durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode ser então tratado em uma rotina de tratamento de erro.
Sintaxe
Write
[IODevice’:=’] <variável (VAR) do iodev>’,’
[String’:=’] <expressão (IN) do string>
[’\’Num’:=’ <expressão (IN) do num> ]
| [’\’Bool’:=’ <expressão (IN) do bool> ]
| [’\’Pos’:=’ <expressão (IN) do pos> ]
| [’\’Orient’:=’ <expressão (IN) do orient> ]
[’\’NoNewLine]’;’
Informações relacionadas
Descrito em:
Abrindo um arquivo ou canal serial Sumário RAPID - Comunicação
Exemplo
VAR iodev channel2;
VAR orient quat1 := [1, 0, 0, 0];
...
Open "sio1:", channel2 \Bin;
WriteAnyBin channel2, quat1;
Argumentos
WriteAnyBin IODevice Data
IODevice Tipo de dados: iodev
Execução do programa
Tantos bytes quantos forem necessários para o dado especificado são escritos no
arquivo ou canal serial binário especificado.
Limitações
Essa instrução só pode ser usada para arquivos ou canais seriais que tenham sido aber-
tos para escrita binária.
O dado a ser escrito por essa instrução precisa ter um tipo de dados value de tipo
atomic, string ou record. Os tipos de dados semi-value e non-value não podem ser usa-
dos.
Tratamento de erros
Se ocorrer um erro durante a escrita, a variável de sistema ERRNO será definida como
ERR_FILEACC. Assim, esse erro pode ser tratado na rotina de tratamento de erros.
Exemplo
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
Close channel;
Sintaxe
WriteAnyBin
[IODevice’:=’] <variable (VAR) of iodev>’,’
[Data’:=’] <var or pers (INOUT) of ANYTYPE>’;’
Informações relacionadas
Descrito em:
Abertura (etc.) de canais seriais Resumo RAPID - Comunicação
ou arquivos
Ler dados de um canal serial Funções - ReadAnyBin
ou arquivo binário
Exemplo
WriteBin channel2, text_buffer, 10;
Argumentos
WriteBin IODevice Buffer NChar
IODevice DataType: iodev
num
Execução do programa
O número especificado de números (caractéres) na lista a ser escrita para o canal serial.
Limitações
Esta instrução somente pode ser usada para canais seriais que foram abertos para lei-
tura e escrita binária.
Tratamento de Erro
Se um erro ocorre durante a escrita, a variável do sistema ERRNO é colocada para
ERR_FILEACC. Este erro pode então ser tratado em uma rotina de tratamento de erro.
Exemplo
VAR iodev channel;
VAR num out_buffer{20};
VAR num input;
VAR num nchar;
Open "sio1:", channel\Bin;
out_buffer{1} := 5; ( enq )
WriteBin channel, out_buffer, 1;
input := ReadBin (channel \Time:= 0.1);
Sintaxe
WriteBin
[IODevice’:=’] <variável (VAR) do iodev>’,’
[Buffer’:=’] <variedade {*} (IN) do num>’,’
[NChar’:=’] <expressão (IN) do num>’;’
Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação
Converter um "string" em dados de byte Funções - StrToByte
Dados de byte Tipos de dados - byte
Exemplo
WriteStrBin channel2, "Hello World\0A";
Argumentos
WriteStrBin IODevice Str
IODevice Tipo de dados: iodev
Execução do programa
A string de texto é escrita para o canal serial ou arquivo especificado.
Limitações
Esta instrução pode somente ser usada para canais seriais ou arquivos que tenham sido
abertos para leitura ou escrita binária.
Tratamento de erros
Se um erro ocorrer durante a escrita, a variável de sistema ERRNO é ajustada para
ERR_FILEACC. Este erro pode ser tratado no tratamento de erros.
Exemplo
VAR iodev channel;
VAR num input;
Open "sio1:", channel\Bin;
Close channel;
Sintaxe
WriteStrBin
[IODevice’:=’] <variável (VAR) de iodev>’,’
[Str’:=’] <expressão (IN) de string>’;’
Informações relacionadas
Descrito em:
Abrindo (etc.) canais seriais Sumário RAPID - Comunicação
Exemplo
.
canto2
Z
Y Caixa
canto1
Min. 10 mm
X
Sistema de Coordenadas Global
Definir uma caixa quadrada com coordenadas paralelas aos eixos do sistema de
coordenadas global e definida pelos cantos corner1 e corner2 opostos.
Argumentos
WZBoxDef (\Inside) | (\Outside) Shape LowPoint HighPoint
\Inside Tipo de dados: switch
Execução do programa
A definição da caixa é armazenada na variável do tipo shapedata (argumento Shape),
para uso futuro na instrução WZLimSup ou WZDOSet.
Limitações
As posições LowPoint e HighPoint têm de ser cantos opostos válidos (com valores de
coordenadas x, y e z diferentes).
Se o robô é usado para apontar LowPoint ou HighPoint, o objeto de trabalho wobj0 tem
de estar ativo (uso do componente trans em robtarget, por exemplo, trans como argu-
mento).
Sintaxe
WZBoxDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[LowPoint’:=’]<expressão (IN) de pos>’,’
[HighPoint’:=’]<expressão (IN) de pos>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando supervisão de limite de zona global Instruções - WZLimSup
Ativando conjunto de saídas digitais de zona
global Instruções - WZDOSet
Exemplo
R2
H2
Z
Y
C2
X
Sistema de Coordenadas Global
Definir um cilindro com o centro do circulo inferior em C2, raio R2 e altura H2.
Argumentos
WZCylDef (\Inside) | (\Outside) Shape CentrePoint Radius Height
\Inside Tipo de dados: switch
A altura em mm do cilindro.
Se positiva (direção +z), o argumento CentrePoint é o centro do circulo inferior
do cilindro (como no exemplo acima).
Se negativa (direção -z), o argumento CentrePoint é o centro do circulo superior
do cilindro.
Execução do programa
A definição do cilindro é armazenada na variável do tipo shapedata (argumento
Shape), para uso futuro na instrução WZLimSup ou WZDOSet.
Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 tem de estar
ativo (uso do componente trans em robtarget, por exemplo, p1.trans como argumento).
Sintaxe
WZCylDef
(’\’Inside) | (’\’Outside) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’,’
[Height’:=’]<expressão (IN) de num>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipo de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Ativando espaço de trabalho restrito Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
ENDPROC
Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre no volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place.
Argumentos
WZDisable WorldZone
WorldZone Tipo de dados: wztemporary
Execução do programa
A zona global temporária é desativada. Isto significa que a supervisão do TCP do robô,
relativa ao volume correspondente, é temporariamente parada. Pode ser reativada
através da instrução WZEnable.
Limitações
Somente uma zona global temporária podem ser desativada. Uma zona global esta-
cionária é sempre ativa.
Sintaxe
WZDisable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de Dados - wztemporary
Reativar zona global Instruções - WZEnable
Eliminar zona global Instruções - WZFree
Após esta instrução ser executada, quando o TCP do robô está dentro da zona global
definida ou se está aproximando dela, um sinal de saída digital é ajustado para o valor
especificado.
Exemplo
VAR wztemporary service;
PROC zone_output()
VAR shapedata volume;
CONST pos p_service:=[500,500,700];
...
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
ENDPROC
Argumentos
WZDOSet (\Temp) | (\Stat) WorldZone (\Inside) | (\Before) Shape
Signal SetValue
\Temp (Temporária) Tipo de dados: switch
O sinal de saída digital será ajustado quando o TCP do robô estiver dentro do
volume definido.
O sinal de saída digital será ajustado antes do TCP do robô atingir o volume defi-
nido (o mais próximo possível antes do volume).
Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisonada e a saída será ajustada, quando a posição do TCP do robô estiver dentro
do volume (\Inside) ou se aproximar do limite do volume (\Before).
Exemplo
VAR wztemporary home;
VAR wztemporary service;
PERS wztemporary equip1:=[0];
PROC main()
...
! Definition of all temporary world zones
zone_output;
...
! equip1 in robot working space
WZEnable equip1;
...
! equip1 out of robot working space
WZDisable equip1;
...
! No use for equip1 any more
WZFree equip1;
...
ENDPROC
PROC zone_output()
VAR shapedata volume;
CONST pos p_home:=[800,0,800];
CONST pos p_service:=[800,800,800];
CONST pos p_equip1:=[-800,-800,0];
...
WZSphDef \Inside, volume, p_home, 50;
WZDOSet \Temp, home \Inside, volume, do_home, 1;
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
WZCylDef \Inside, volume, p_equip1, 300, 1000;
WZLimSup \Temp, equip1, volume;
! equip1 not in robot working space
WZDisable equip1;
ENDPROC
Também a definição de uma zona global temporária equip1, que está ativa
somente na parte do programa do robô quando equip1, está dentro da área de tra-
balho do robô. Nessa altura, o robô pára antes de entrar no volume equip1, tanto
durante a execução do programa como na movimentação manual. equip1 pode
ser desativado ou ativado a partir de outras tarefas de programa com o uso do
valor da variável persistente equip1.
Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.
Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.
Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.
Sintaxe
WZDOSet
(’\’Temp) | (’\’Stat) ’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>
(’\’Inside) | (’\’Before) ’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[Signal’:=’]<variável (VAR) de signaldo>’,’
[SetValue’:=’]<expressão (IN) de dionum>’;’
Informações relacionadas
Descritas em:
Zonas Globais Movimento e Princípios E/S-
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Definir zona global em forma de caixa
quadrada Instruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Modo de acesso de sinal Guia do usuário- Parâmetros do
Sistema, Sinais E/S
Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
ENDPROC
Quando se movendo para p_pick, a posição do TCP do robô é checada para que
não entre no volume wzone especificado. Esta supervisão não é desempenhada
quando indo para p_place, mas é reativada antes de ir para p_home
Argumentos
WZEnable WorldZone
WorldZone Tipo de dados: wztemporary
Execução do programa
A zona global temporária é reativada.
Note que uma zona global é automaticamente ativada quando criada. Necessita
somente de ser reativada quando tiver sido previamente desativada por WZDisable.
Limitações
Somente uma zona global temporária pode ser desativada e reativada. Uma zona global
estacionária está sempre ativa.
Sintaxe
WZEnable
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’
Informações relacionadas
Descritas em:
Zonas Globais Temporárias Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de dados - wztemporary
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Desativar zona global Instruções - WZDisable
Eliminar zona global Instruções - WZFree
Exemplo
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
WZFree wzone;
ENDPROC
Quando se movendo para p_pick, a posição do TCP do robô é checada para que
ele não entre em um volume wzone especificado. Esta supervisão não é desem-
penhada quando indo para p_place, mas é reativada antes de ir para p_home.
Quando esta posição é atingida, a definição da zona global é eliminada.
Argumentos
WZFree WorldZone
WorldZone Tipo de dados: wztemporary
Execução do programa
A zona global temporária é primeiro desativada e depois a sua definição é eliminada.
Uma vez eliminada, a zona global temporária não pode ser reativada nem desativada.
Limitações
Somente uma zona global temporária pode ser eliminada. Uma zona global esta-
cionária está sempre ativa.
Sintaxe
WZFree
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Dados da zona global temporária Tipos de dados - wztemporary
Activar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
Desativar zona global Instruções - WZDisable
Eliminar zona global Instruções - WZFree
Após esta instrução ser executada, quando o TCP do robô atingir a zona global defin-
ida, o movimento é parado durante a execução do programa e a movimentação.
Exemplo
VAR wzstationary max_workarea;
...
PROC POWER_ON()
VAR shapedata volume;
...
WZBoxDef \Outside, volume, corner1, corner2;
WZLimSup \Stat, max_workarea, volume;
ENDPROC
Argumentos
WZLimSup (\Temp) | (\Stat) WorldZone Shape
\Temp (Temporária) Tipo de dados: switch
Execução do programa
A zona global definida é ativada. A partir deste momento, a posição do TCP do robô é
supervisionada. Se atingir a área definida, o movimento é parado.
Exemplo
VAR wzstationary box1_invers;
VAR wzstationary box2;
PROC wzone_power_on()
VAR shapedata volume;
CONST pos box1_c1:=[500,-500,0];
CONST pos box1_c2:=[-500,500,500];
CONST pos box2_c1:=[500,-500,0];
CONST pos box2_c2:=[200,-200,300];
...
WZBoxDef \Outside, volume, box1_c1, box1_c2;
WZLimSup \Stat, box1_invers, volume;
WZBoxDef \Inside, volume, box2_c1, box2_c2;
WZLimSup \Stat, box2, volume;
ENDPROC
A limitação da área de trabalho para o robô com as seguintes zonas globais esta-
cionárias:
Se esta rotina é conectada ao evento de sistema POWER ON, estas zonas globais
estarão sempre ativas no sistema, tanto para os movimentos de programa como
para os movimentos manuais.
Limitações
Uma zona global não pode ser redefinida usando a mesma variável no argumento
WorldZone.
Uma zona global estacionária não pode ser desativada, ativada novamente ou elimi-
nada no programa RAPID.
Uma zona global temporária pode ser desativada (WZDisable), ativada novamente
(WZEnable) ou eliminada (WZFree) no programa RAPID.
Sintaxe
WZLimSup
(’\’Temp) | (’\Stat)’,’
[WorldZone’:=’]<variável ou persistente (INOUT) de wztemporary>’,’
[Shape’:=’] <variável (VAR) de shapedata>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de Dados - shapedata
Zona global temporária Tipos de dados - wztemporary
Zona global estacionária Tipos de dados - wzstationary
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa quadradaInstruções - WZBoxDef
Definir zona global em forma de esfera Instruções - WZSphDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativando saída relativa a uma zona Instruções - WZDOSet
Exemplo
Z
Y
C1
R1
X
Sistema de Coordenadas Global
Definir uma esfera nomeada volume pelo seu centro C1 e pelo seu raio R1.
Argumentos
WZSphDef (\Inside) | (\Outside) Shape CentrePoint Radius
\Inside Tipo de dados: switch
Execução do programa
A definição da esfera é armazenada no tipo de variável shapedata (argumento Shape),
para uso futuro nas instruções WZLimSup ou WZDOSet.
Limitações
Se o robô é usado para apontar o CentrePoint, o objeto de trabalho wobj0 deve estar
ativo (o uso do componente trans em robtarget, por exemplo, p1.trans como argu-
mento).
Sintaxe
WZSphDef
(’\’Inside) | (’\’Outside)’,’
[Shape’:=’]<variável (VAR) de shapedata>’,’
[CentrePoint’:=’]<expressão (IN) de pos>’,’
[Radius’:=’]<expressão (IN) de num>’;’
Informações relacionadas
Descritas em:
Zonas Globais Deslocamento e Principios E/S
Zonas Globais
Forma da zona global Tipos de dados - shapedata
Definir zona global em forma de caixa Instruções - WZBoxDef
Definir zona global em forma de cilindro Instruções - WZCylDef
Ativar supervisão de limites de zona global Instruções - WZLimSup
Ativando saída relativa a uma zona Instruções - WZDOSet
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
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
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
WZBoxDef 1
WZCylDef 1
WZDisable 1
WZDOSet 1
WZEnable 1
WZFree 1
WZLimSup 1
WZSphDef 1