Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
em Programação de
Nível Avançado
para o Controlador
NX-100
Curso: TP-10
SUMÁRIO
Página
14.3 Conversão XYZ Relative Job para Dados de TCP ...................................... 124
ANEXOS.....................................................................................153
TABELAS
Página
Tabela 3.2: Parâmetros Disponíveis para Versão de Software 3.11 ou Superior ...... 43
LISTA DE FIGURAS
Página
Figura 1.15: Job Capacity com Edit Buffer: Not Used ................................................ 30
: Modo de Operação
: Modo de Edição
: Modo de Gerenciamento
Figura 1-1 Ícones dos Níveis de Segurança
NOTA: Não é necessário senha para mudar para um nível de segurança melhor.
NOTA: Quando estamos no EDITION MODE, a Linha Edit Buffer aparece, e o menu
EDIT fica acessível em ambos os lados e no JOB CONTENT.
BYTE
INTEGER
DOUBLE
VARIABLE REAL
POSITION (ROBOT)
POSITION (BASE)
(Se aplicável)
POSITION (STATION)
(Se aplicável)
EXTERNAL INPUT NA
EXTERNAL OUTPUT NA
UNIVERSAL INPUT NA
UNIVERSAL OUTPUT
SPECIFIC INPUT NA
SPECIFIC OUTPUT NA
REGISTER NA
AUXILIARY RELAY NA
IN/OUT
CONTROL INPUT NA
PSEUDO INPUT SIG NA
ANALOG OUTPUT NA
NETWORK INPUT NA
SV POWER STATUS NA
LADDER PROGRAM
I/O ALARM
I/O MESSAGE
Tabela 1-1: Níveis de Segurança (continuação)
LIMIT RELEASE
HOME POSITION
ARM CONTROL
CUBIC INTERFERENCE
ANALOG MONITOR
SERVO MONITOR NA
MONITORING TIME
ALARM HISTORY
VERSION NA
ALARM (Se aplciável)
LOAD
SAVE
VERIFY
FD/CF
DELETE
FORMAT
DEVICE
Tabela 1-1: Níveis de Segurança (continuação)
SET WORD
USER ID
SETUP
KEY ALLOCATION
DATE/TIME
SET SPEED
OPERATE COND
S1CxG
S2C
S3C
S4C
A1P
RS
O usuário padrão é Administrator, sendo a senha formada apenas por noves (99999999).
Todos os outros usuários e senhas devem ser criados.
NOTA: As listas de histórico de alarmes contém o LOGON do usuário que estava ativo
quando o alarme ocorreu.
Figura1-5 LOGOFF
continuadas entre as instruções NOP e END podem ser executadas com as teclas de
cursor. A partir do menu EDIT pode-se também alterar a linha de Input Buffer de modo
que o Speed Tag ou o Position Level Tag fiquem habilitados ou desabilitados.
2. Selecione SEARCH;
3. Mova o cursor para LINE/STEP SEARCH e pressione SELECT;
4. Utilizando o teclado numérico, entre com o número da linha/passo desejado;
pressione ENTER.
O cursor será movido até a primeira linha encontrada com o indicador contendo os
caracteres desejados. Ainda no “Search mode”, mova o cursor para baixo para continuar
a busca à próxima ocorrência no job (se existir novamente); mova o cursor para cima
para voltar à ocorrência anterior no job. Para sair do “Search mode”, pressione a tecla
CANCEL ou selecione END e depois END SEARCH. Se a Label não existir será
exibida a mensagem, “ERROR 2050 Address not found”.
NOTA: As LABELS são usadas principalmente com a instrução JUMP em jobs no modo
PLAY. No entanto, no modo TEACH as LABELS podem ser usadas em um programa
como um “marcador” para encontrar pedaços específicos de um job ou como um
comentário para o qual a função SEARCH não se aplica.
O cursor será movido até a primeira linha encontrada com o indicador contendo os
caracteres desejados. Ainda no “Search mode”, mova o cursor para baixo para continuar
a busca à próxima ocorrência no job (se existir novamente); mova o cursor para cima
para voltar à ocorrência anterior no job. Para sair do “Search mode”, pressione a tecla
CANCEL ou selecione END e depois END SEARCH. Se a instrução não existir será
exibida a mensagem, “ERROR 2050 Address not found”.
NOTA: Selecione o MOVL do menu MOTION para tags de passos como V=, VR=, PL=,
CR=, NWAIT ou UNTIL.
O cursor será movido até a primeira linha encontrada com o indicador contendo os
caracteres desejados. Ainda no “Search mode”, mova o cursor para baixo para continuar
a busca à próxima ocorrência no job (se existir novamente); mova o cursor para cima
para voltar à ocorrência anterior no job. Para sair do “Search mode”, pressione a tecla
CANCEL ou selecione END e depois END SEARCH. Se o tag não existir será exibida
a mensagem, “ERROR 2050 Address not found”.
NOTA: As configurações acima do TAG não são alteradas quando o controle é ligado
ou desligado.
Para utilizar a função UNDO após qualquer alteração no JOB CONTENT (inserir,
modificação de posições, deletar, colar, alterações rápidas etc.), faça o seguinte:
O comando UNDO pode ser desfeito apertando novamente a tecla ASSIST para que a
opção REDO apareça.
Para usar a função REDO, faça o seguinte:
NOTA: O conteúdo da EDIT MEMORY BUFFER fica incluído no uso dos bytes e dos
passos na tela JOB CAPACITY.
NOTA: A função Path Reverse pode ser aplicada apenas à COMMAND POSITIONS.
(Todas as instruções que não envolvam movimentos e MOV_ com variáveis P não serão
coladas).
NOTA: Para confirmar, use a tecla ENTER para aceitar ou mova o cursor para baixo
para pular. Para sair da função “Modifying speed”, pressione CANCEL.
JOB SEARCH COND Permite encontrar os nomes dos jobs inserindo um ou mais
caracteres. É conveniente para encontrar rapidamente um
job digitando apenas as primeiras letras. Vários jobs que
comecem com os mesmos caracteres podem ser facilmente
encontrados.
RELEASE JOB SEARCH Esta seleção aparece apenas durante a Search. Ela cancela
o modo de busca. Pode-se também pressionar a tecla
CANCEL para cancelar o modo.
NOTA: Os dados de TOOL Calibration para cada ferramenta também gastam cinco
STEPS de memória, e cada USER FRAME COORDINATE definido gasta três STEPS.
No entanto, estes passos não estão inclusos nos BYTES consumidos da memória.
CUIDADO: Limpar um USER FRAME fará com que o frame perca a definição!
NOTA: A proteção Edit Lock é local em um job. Jobs escravos devem ser protegidos
individualmente em cada Job Header.
Para configurar o JOB HEADER Edit Lock para ON ou OFF, siga os passos a seguir:
NOTA: O SETUP para o item STEP ONLY CHANGING da lista Teaching Condition
pode ser configurado para PERMIT para que os comandos servos de posições possam
ser modificados. Se configurado como PROHIBIT, os jobs com EDIT LOCK: ON não
terão mais seus servos comandos de posição modificados.
• KEY ALLOCATION;
• DATE/TIME;
• SET SPEED;
• OPERATE COND.
2.1.1 Retangular/Cilíndrico
A tecla COORD dá acesso apenas a RECT ou CYL, mas não aos dois juntos. A seleção
que irá aparecer na Linha de Status depende da configuração da TEACHING
NOTA: as instruções existentes num job serão executadas como playback, independente
do nível de linguagem atual nas instruções.
NOTA: No Modo EDITING, é possível trocar apenas o Editing Mode User ID. Já no
Modo Management, podem ser trocados ambos os User IDs.
Para configurar a KEY ALLOCATION (EACH) para fins de edição, faça o seguinte:
NOTA: Para ativar as funções ALLOCATE SIM KEY, segure a tecla INTERLOCK,
depois pressione a tecla alocada desejada.
mm/s., in/min., mm/min.). Pode-se conseguir isto usando simplesmente o menu SET
SPEED para fornecer os valores. As configurações das Speeds são gravadas nos
parâmetros de sistema (S1C1G002 a S1C1G009 para Joint [%]; S1C1G010 a
S1C1G017 para Linear [.01 mm/s]).
NOTA: Deve-se digitar um número (0-9) antes de digitar o valor decimal (0.78 ao invés
de .78)
• External Start;
• P P Start;
• External Mode Switch;
• External Cycle Switch;
• P P Cycle Switch;
• External Servo On;
• P P Servo On;
• Check/Machine Lock;
• Master Calling Up;
• Master Job Change;
• Reserved Start;
• Reserved Start Job Change.
• S1CxG (Parâmetros específicos do robô; o “x” representa R1, R2, R3, ou R4);
• S2C (Parâmetro comum do sistema, tipo Byte);
• S3C (Parâmetro comum do sistema; 4-BIT);
• S4C (Parâmetro comum do sistema; tipo Byte);
• AxP (Parâmetro de aplicação; 4-BIT);
• RS (Parâmetro de transmissão; tipo Byte).
NOTA: A lista S1C1G é para R1; a tecla PAGE permitirá acesso aos parâmetros
S1C2G para R2, S1C3G para R3, e S1C4G para R4.
NOTA: Cheque os manuais ANSI e RIA para limite máximo de velocidade manual do
robô.
S1CxG030: Operação das juntas com teclas +/- SLURBT (unidades de 1 pulso);
S1CxG031: Operação cartesiana com teclas +/- X, Y, Z (unidades de 0,01mm);
S1CxG032: Movimento de rotação com teclas +/- Rx, Ry, Rz (unidades de 0,1 grau) .
NOTA: O valor de PL=0 não pode ser customizado, pois ele sempre deve se mover
para a posição exata de comando.
0: MODO OPERAÇÃO;
1: MODO EDIÇÃO;
2: MODO MANAGEMENT (GERENCIAMENTO).
NOTA: Esta função aplica-se apenas a COMMAN POSITIONS. Ela não cola nenhuma
instrução de não-movimento ou MOV_ com variáveis P, incluídas no buffer.O cursor
deve estar no lado Instrução do JOB CONTENT sobre ou além do primeiro passo de
movimento do job.
0:Desabilitado;
1: Habilitado.
0: Desabilitado;
1: Habilitado.
0: Desabilitado;
1: Habilitado.
NOTA: O Tool No. não é default para TOOL NO. 00 quando o parâmetro é mudado de
1 para 0. A última ferramenta ativa torna-se a única ferramenta disponível.
0: Desabilitado;
1: Habilitado.
0: Desabilitado;
1: Habilitado.
0: Desabilitado;
1: Habilitado.
0: Base;
1: Robô;
2: Tool (Ferramenta);
3 a 26: Usuário 1 a 24.
3.6 Família RS
Os parâmetros RS definem o protocolo para transmissão de dados.
Os valores de pulso S+ e S- devem ser marcados dentro dos limites estabelecidos pela
colocação dos parafusos. O L+/L- e U+/U- devem ter o máximo de “liberdade”
possível. Também é muito importante que a marcação soft limit positiva e negativa para
os eixos R, B e T tenham valores apropriados para que o(s) end-effector(s) possa(m) ser
usado(s).
Para ativar os soft limits do cubo, o parâmetro S2C001 deve ser o seguinte:
0: Sem checagem;
1: Com checagem.
Se o robô estiver fora dos soft limits do eixo, é possível mover em direção ao Envelope
de Operação. A tentativa de movê-lo além do limite do eixo, resultyará na mensagem
“PULSE LIMIT...” indicando Min ou Max com os dados do robô e do eixo.
Se o robô estiver fora do Soft Limit do Cubo, não será possível movê-lo. O limite deve
ser liberado para movê-lo de volta ao Soft Limit do Cubo.
A liberação de todos os limites permite que o robô seja movido para qualquer posição.
Ele pode ir além dos limites, e em direção a si mesmo, possivelmente causando danos.
Escolha uma das três maneiras a seguir para cancelar o soft limits e a liberação de todos
os limites:
ou
ou
Como a calibração dos robôs afeta todos os programas e movimentos, somente pessoal
que tenha sido treinado deve calibrar a Posição Home. Veja o Manual Motoman para
saber a técnica.
“Check Position”. Isto envolve colocar o robô em posição Second Home, e depois se
assegurar que ele esteja na posição correta. O Ponto Especificado default é “Home
Position”, onde as setas de alinhamento dos eixos estão alinhadas. A tentativa de
executar um job sem colocar em Ponto Especificado e confirmar a posição, irá resultar
em “ERROR 0380: Posição not checked”.
CUIDADO: Alarmes acionados por queda podem ter casado danos aos drives. Se um
erro no gerador de pulso (PG) é suspeito de ter sido a causa, não FWD até checar cada
motor em separado, colocando na direção + e – para cada JOINT, para confirmar se me
válido antes de continuar.
1. RESET o alarme;
2. Mude para TEACH;
3. Aperte o botão SERVO ON READY;
4. Ligue o servomotor com o interruptor ENABLE. A linha de mensagem deve
indicar “Check Position”;
5. Do MAIN MENU, selecione ROBOT, depois selecione SECOND HOME POS.
Você verá uma tela com colunas, como mostra a Figura 5-2;
CUIDADO: A operação abaixo pode causar uma batida quando a tecla FWD é apertada
e há obstáculos entre a posição atual do robô e a posição do Ponto Especificado; use
muito cuidado durante este job.
7. Assegure-se que o caminho esteja livre, depois aperte e segure a tecla FWD para
mover o robô até a posição Second home. Os dados mudarão todos para zero na
coluna DIFFERENCE;
8. Verifique visualmente que o robô esteja na posição Second Home;
NOTA: Se parecer que o robô NÃO está no local correto, pode ser necessário a
manutenção do robô.
9. Selecione DATA;
10. Coloque o cursor em CONFIRM POSITION, aperte SELECT. A linha de
mensagem mostrará “Home position checked”.
Para acessar a tela WORK HOME / OPE ORIGIN e gravar uma posição, faça o
seguinte:
CUIDADO: Com o servmotor ON, a tecla FWD pode ser usada para colocar o robô na
posição OPEORG. Assegure-se que o caminho esteja livre da posição atual até o ponto
desejado.
CUIDADO: O WORK HOME POSITION [OPE ORIGIN POS] pode ser usado como
centro para INTERFERENCE CUBE ZONES 29-32 PARA R4, R3, R2, e R1
respectivamente. A modificação deste ponto mudará a localização dos cubos. )veja
seção 6.1.3)
O NX100 pode suportar até 32 zonas de interferência para qualquer combinação de R1,
R2, R3, R4, B1, B2, B3, B4, S1 até S12. Cada um pode ser configurado como uma zona
CUBE em dados ROBOT, BASE ou USER FRAME XYZ, ou como monitoramento
AXIS em dados PULSE.
NOTA: A definição da zona de cubo não ativa a Checagem de Interferência. Com base
na aplicação, o SYSTEM LADDER inclui 4-7 Cubos para “Sequênce Wait”. O USER
LADDER pode ser modificado para o uso de cubos adicionais com o RELAY Operand
apropriado (#50080 até #50117).
NOTA: Se o ponto central desejado for um local já armazenado num job ou Posição
Variável, FWD para este local antes de acessar o menu de configuração do cubo.
8. Selecione BASE;
ou
Selecione ROBOT;
ou
selecione USER, digite o UF#, aperte ENTER;
9. Coloque o cursor em TEACHING METHOD, aperte SELECT para mostrar os
MAX/MIN;
10. Aperte MODIFY, e o cursor irá realçar a posição MAX;
11. Leve o robô para a posição máxima X, Y, e Z, aperte ENTER;
12. Coloque o cursor na coluna de posição MIN, aperte MODIFY;
13. Leve o robô para a posição mínima X, Y, e Z, aperte ENTER.
Os centros são automaticamente definidos pela Posição Work Home [OPE ORIGIN
POS] (ver Seção 5.3), e o comprimento de cada lado é marcado pelo parâmetro S3C805
em microns. Embora estes Cubos possam ser modificados usando-se outras técnicas,
assim que a Posição Work Home é modificada, o Cubo reverte-se ao local definido pelo
software e dimensões para R1 e robôs adicionais, se necessário.
Para digitar dados do cubo ou fazer modificações nas dimensões existentes do cubo
usando o teclado numérico, faça o seguinte: (é necessário ligar o servomotor)
NOTA: Quando o robô estiver dentro da zona do cubo, o output especificado irá ficar
ON. O círculo ficará mais escuro na marca ON.
Quando usar o sinal de interferência para parar um movimento do robô antes que o TCP
entre em cubo, coloque o método para CHECK MEASURE em “COMMAND
POSITION”. Isto irá marcar o SOUT em ON, já que a Command Position irá definir o
novo cubo.
Quando usar o SOUT para confirmar que o TCP esteja dentro do cubo, use
“FEEDBACK POSITION”. Isto irá marcar o SOUT em ON após o feedback de o
encoder definir o novo cubo.
Amostra do job:
LINHA INSTRUÇÃO
0000 NOP
0001 MOVJ VJ=25.00
0002 WAIT SOUT #(88)=ON
0003 MOVJ VJ=100.00
0004 MOVL V=138
•
•
•
0025 MOVJ VJ=100.00
0026 END
Para definir uma zona de interferência usando Interferência do Eixo, faça o seguinte:
Colocando na posição Máxima e Mínima, pelos passos 7-10 acima, montará a área de
relato para o controlador. Se um (ou mais) dos eixos tiver dados que sejam os mesmos
para Max. e Min., o sinal só existirá quando esse eixo estiver na contagem dos pulsos.
NOTA: Se a colocação dos eixos não for conveniente, podem ser digitados dados
usando-se o teclado numérico. O valor máximo deve ser maior que o valor mínimo.
Se “WITH CHECK” (S2C002=1) for selecionado, os parâmetros devem ser S3C024 até
S3C031 para oferecer a Máxima e Mínima zona de checagem do eixo-S para cada robô.
S3C024 R1 Máximo;
S3C025 R1 Mínimo;
S3C026 R2 Máximo;
S3C027 R2 Mínimo;
S3C028 R3 Máximo;
S3C029 R3 Mínimo;
S3C030 R4 Máximo;
S3C031 R4 Mínimo.
NOTA: O valor máximo não precisa ser um número positivo, e o valor Mínimo não
precisa ser um número negativo. O Máximo deve simplesmente ser maior que o
Mínimo.
NOTA: USER ALARMS param a execução de um job, mas o servomotor continua ON.
Eles são religados do mesmo modo que um alarme menor.
NOTA: Cada vez que você pressionar a tecla PAGE, o display irá avançar para o
próximo GROUP NO. mais alto. Para voltar uma página para um GROUP NO. mais
baixo, segure a tecla SHIFT e aperte a tecla PAGE.
As instruções MOV_ podem ou não utilizar o Speed Tag. Quando programada com o
tag (MOVL V= 459), a velocidade para aquela instrução é definida pelo respectivo tag.
Se o Speed Tag não estiver presente na instrução, o controle fará referência à um
registrador chamado Registrador de Velocidade Padrão para a velocidade.
Para que um passo do movimento utilize o SPEED padrão, ele deve ser inserido no job
sem a linha de comando que programa valores em VJ ou V desmarcando o *ENABLE
SPD TAG no menu EDIT ou individualmente fazendo:
Para remover um Speed Tag de uma linha, ou para programar uma nova instrução sem o
tag, pode-se usar a tela Detail Edit, programando o SPEED para UNUSED.
LINE INSTRUCTION
0000 NOP
0001 SPEED VJ=50.00 V=1125
0002 MOVJ VJ=25.00
0003 MOVJ
0004 MOVC V= 138
0005 MOVC
0006 MOVC
0007 MOVL
0008 MOVL V=138
0009 MOVJ
0010 END
Outra vantagem da instrução SPEED está ilustrada abaixo. Se o TCP do robô não
está“caminhando” nas linhas 0019, 0021 e 0023, mas “pivotando“ a orientação da
LINE INSTRUCTION
0015 MOVJ VJ=100.00
0016 SPEED VJ=50.00 VR=120.0
0017 MOVJ
0018 MOVL V=558
0019 MOVL
0020 MOVL V=558
0021 MOVL
0022 MOVL V=558
0023 MOVL
0024 MOVJ
0025 END
NOTA: A velocidade padrão também pode ser programada como variáveis do tipo B, I
ou D.
LINE INSTRUCTION
0011 MOVL V=138
0012 MOVL V=138 NWAIT
0013 DOUT OG#(1) 240
0014 CWAIT
0015 DOUT OT#(2) OFF
0016 MOVL V=276
1. Na tela do job no modo Teach, coloque o cursor no endereço acima da linha que
receberá a instrução CWAIT;
2. Pressione a tecla INFORM LIST e selecione CONTROL;
3. Selecione CWAIT;
4. Pressione INSERT, ENTER.
LINE INSTRUCTION
0024 MOVL V=1125
0025 MOVL V=66 UNTIL IN#(3)=ON
0026 MOVL V=138
Se o job não possuir um passo após a linha com o tag UNTIL, o robô irá parar quando o
input for ON.
• Uma variável local pode ser usada apenas no job que a define. As Variáveis
Globais podem ser usadas em todos os jobs. A variável Global B001 é “vista” e
pode ser usada em todos os jobs, mas a Local LB001 é específica de cada job
que a define e utiliza independentemente;
• O número de endereços locais é definido no JOB HEADER. A quantidade de
endereços disponíveis varia de acordo com a versão do software;
Para acessar o JOB HEADER e alocar endereços para LOCAL, faça o seguinte:
Ainda que seja possível registrar até 255 tipos, o bloco da memória dedicado ao número
total de Local Variables pode não ser grande o suficiente; se for o caso, um alarme
menor irá ocorrer quando o job for executado nos modos TEACH ou PLAY.
Uma vez que o número de endereços Local for alocado, passa a ser responsabilidade do
programador reconstruir os valores armazenados em cada endereço da estrutura do job
utilizando as instruções SET, SETE, DIN ou GETS do menu ARITH.
Cada tipo pode possuir um endereço Scalar ou Array. No modo Teach, os dados de
posição podem ser gravados para todos os tipos de Variáveis Globais com o servomotor
ligado, exceto para funções de ferramentas (TCP). Os dados para todos os tipos podem
ser imputados manualmente utilizando o método SELECT para shifitar ou deslocar
dados de posição e incrementar dados de movimentação.
As variáveis SYSTEM POSITION AXES ($PX) são utilizadas com a instrução GETS
para obter a posição atual para o CONTROL GROUP definido no JOB HEADER.
A instrução GETS PX126 $PX000, dependendo do grupo de controle dos eixos, pode
expandir para os seguintes endereços de posições:
• Se R1+R2, então PX126 indica P126 (escravo) e P127 (mestre);
• Se R1+B1, então PX126 indica P126 e BP126;
• Se R1+B1+S1, então PX000 indica P126, BP126 e EX126;
• Se R1+R2+ B1+B2+S1 for um programa cooperativo com coordenadas mestres
R1+B1, então PX126 indica:
P126 = R2 (escravo);
P127 = R1 (mestre);
BP126 = B2 (escravo);
BP127= B1 (mestre);
EX126= S1 (eixo externo).
Os dados de posição na base XYZ, ROOT, ou USER podem ser exibidos seguindo os
seguintes passos:
NOTA: Em um sistema sem nenhum eixo de base, o dado de posição da BASE Frame
(BF) será igual ao dado do ROBOT Frame (RF).
O User Frame pode ser usado tanto para trabalhar com o robô nas USER Coordinates
como o tag UF#() pode ser usado nas instruções de programação com variáveis de
posições, estas, considerando IMOV ou com a instrução CALL, para executar o job em
diferentes User Frames. Ainda mais, executar edições dinâmicas com a função PAM ou
uma mudança 3-D com a opção Relative Job que leva em conta os User Frames.
NOTA: Ainda que a direção do TOOL FRAME esteja sempre mudando conforme o
TCP move-se, a localização do TCP no TF é sempre 0.000 mm para X, Y e Z. Portanto,
o software não exibe os dados das posições no TOOL, assim como não armazena
pontos com variáveis de posição.
Quando o robô trabalha nas coordenadas TOOL, a direção efetiva da aplicação (corte de
arame, laser, jato d’água etc) deve ter a mesma direção do eixo +Z. As configurações do
TF para o TCP são feitas por entradas manuais em graus dos valores Rx, Ry e/ou Rz.
NOTA: Para o uso de múltiplos TCPs, configure o parâmetro S2C333=1 para ativar a
lista para o TOOL No.00-23.
NOTA: Pressione SELECT novamente para acessar a tela DETAIL EDIT e executar
mudanças mais específicas, então vá para o passo 8. Para simplesmente alterar o dado
numérico, continue os passos 4 à 8.
NOTA: Não havendo velocidade desejada, mova o cursor para MOV_ e pressione
SELECT. Selecione a área V ou VJ do DETAIL EDIT e selecione UNUSED.
Exemplo de job:
LINE INSTRUCTION
0001 MOVJ P000 VJ=25.00
0002 MOVJ VJ=100.00
0003 MOVL P018 V=76
0004 MOVL P126 V=220 PL=0
NOTA: A edição de Variáveis de Posição, seja com servomotor ligado ou com tecla
numérica, apenas pode ser feita na tela da variável de posição. Não é possível
modificar as variáveis de posição na tela Job Content.
NOTA: Para apenas mudar o dado numérico, continue com os passos 4-7. Caso
contrário, pressione SELECT para acessar o DETAIL EDIT para outras opções de
edição.
No exemplo do job abaixo, o robô irá mover-se em um padrão de escada cinco vezes
devido ao comando IF na instrução JUMP. O padrão de escada é criado configurando-se
P002 no formato XYZ para Y=-50mm, e P003 para Z=50mm. Todos os outros
elementos permanecem com zero milímetros/graus. O USER FRAME especificado nas
Lines 0004 e 0005 irão sobrepor qualquer frame especificado em P002 e P003.,
LINE INSTRUCTION
0000 NOP
0001 MOVJ VJ=25.00
0002 SET I000 5
0003 *LABEL
0004 IMOV P002 V=2250 UF#(18)
0005 IMOV P003 V=2250 UF#(18)
0006 DEC I000
0007 JUMP *LABEL IF I000 > 0
0008 MOVJ VJ=100.00
0009 END
/JOB
//NAME FRAMES
//POS
///NPOS 0,0,0,5,0,0
///TOOL 0
///POSTYPE PULSE
///PULSE
P0000=0,0,0,0,-80000,27000
///USER 9 [Exemplo originalmente no local UF#(9)]
///POSTYPE USER
///RECTAN
///RCONF 0,0,0,0,0,0,0,0
P0100=0.000,0.000,5.000,175.00,45.00,0.00
P0101=90.000,0.000,5.000,175.00,45.00,0.00
P0102=90.000,70.000,5.000,175.00,45.00,0.00
P0103=0.000,70.000,5.000,175.00,45.00,0.00
//INST
///DATE 2004/04/28 16:08
///ATTR SC,RW
///GROUP1 RB1
NOP
MOVJ P000 VJ=50.00
MOVJ P100 VJ=50.00 PL=0
MOVL P101 V=76.5 PL=0
MOVL P102 V=76.5 PL=0
MOVL P103 V=76.5 PL=0
MOVL P100 V=76.5 PL=0
MOVJ P000 VJ=50.00
END
Um job pai pode ser criado para utilizar a instrução CALL com um tag UF#(). Isto irá
permitir que o job de um programa filho seja executado em qualquer outro User Frame.
/JOB
//NAME CALL_UF#
//POS
///NPOS 0,0,0,0,0,0
//INST
///DATE 2004/04/28 16:20
///ATTR SC,RW
///GROUP1 RB1
NOP
*LABEL
DIN B000 IG#(1)
JUMP *LABEL IF B000=0
CALL JOB:FRAMES UF#(B000) IF B000 <=24
END
NOTA: A linguagem SUBSET reduz as instruções no menu ARITH aos comandos INC,
SET e CLEAR.
(para) (de)
coloca o valor de D em P SETE
(paraP
retorna o status da (de) (para) (para)
GETS X)
variável do sistema
seno de uma
constante/variável
SIN
co-seno de uma
constante/variável
COS
arco-tangente de uma
constante/variável
ATAN
raiz quadrada de uma
constante/variável
SQRT
NOTA: O resultado de qualquer uma das instruções ARITHMETIC sobrescreve o valor
armazenado no endereço da variável programada logo em seguida da instrução
original, como em ADD I005 I020, onde o resultado é armazenado em I005. (Se o valor
exceder os limites do tipo da variável ocorrerá o ALARM 4446.)
NOTA: Veja as tabelas 10-3 e 10-4 para as definições de cada ($) System Type
Variable.
Exemplos:
GETS B005 $B002 (Retorna o código atual de retorno do Sistema para MVL SRCH RIN# e
armazena o resultado em B005)
GETS PX000 $PX000 (Retorna a posição atual do Sistema; armazena o dado PULSE em PX000)
Nota: Em um job para R1 + R2, ambos P000 e P001 irão armazenar o dado
Pulse atual, ou em R1 + S1, P000 e EX000 irão armazenar o dado Pulse atual.
GETS PX011 $PX001 (Retorna a posição R1 do Sistema em BF; armazena o dado em P011)
Nota: Em um job para R1 + R2, ambos P011 e P012 irão armazenar o dado
BF atual.
Exemplos:
12.2.2 GETE
GET ELEMENT armazena o valor de um único elemento específico de uma variável
Position em um endereço de uma variável D. Em PULSE os elementos 1-6
correspondem à SLURBT; para XYZ os elementos 1-6 correspondem à X, Y, Z, Rx, Ry
& Rz respectivamente.
Exemplos:
GETE D099 P007 (3) (Armazena o valor do terceiro elemento de P007 em D009)
GETE LD000 P[I005] (B099) (Retorna o elementos, determinado por B099, de endereço P,
determinado por I005, e armazena o valor em LD000)
12.2.3 SETE
SET ELEMENT seta o elemento especificado em uma variável de Posição com um
valor constante ou com o valor armazenado em um endereço de uma variável D.
EXEMPLOS:
SETE P007 (1) 500000 (Seta uma constante no primeiro elemento de P007)
SETE P007 (5) -4500 (Seta uma constante no quinto elemento de P007)
SETE LP005 (B002) LD[B002] (Seta o dado do endereço de LD determinado por B002 no elemento
de LP005 determinado por B002)
12.2.4 MFRAME
MAKE FRAME cria um User Frame a partir de três variáveis de posição de qualquer
tipo de dado. O primeiro endereço designado torna-se o ORG, o segundo fica sendo o
XX, e o terceiro é armazenado como XY.
Exemplo:
MFRAME UF#(4) PX005 PX006 PX007 (Configura o User Frame #(4) com
PX005=ORG, PX006=XX, & PX007=XY)
Exemplos:
ADD LD008 -81726354 (Soma uma constante à um valor armazenado em LD008)
ADD D006 B018 (Soma o valor em B018 à um valor em D006)
ADD R015 I[B033] (Soma o valor armazenado no endereço “I”, determinado pelo número em
B033, ao valor em R015)
Exemplos:
ADD P125 P124 (Soma 6 elementos de P124 aos valores em P125)
ADD LP002 LP004 (Soma 6 elementos de LP004 aos valores em LP002)
ADD P[B001] LP[B001] (Soma 6 elementos do endereço de LP determinado por B001 aos valores
armazenados nos endereços de P, também determinados por B001)
12.3.2 SUB
A instrução SUB retorna a diferença entre dois valores subtraindo uma constante ou um
valor armazenado em qualquer outro endereço com uma variável aritmética do valor
atual no endereço da variável resultante.
Exemplos:
SUB LD008 -45362718 (Subtrai a constante -45362718 de LD008)
SUB R006 B018 (Subtrai o valor de B018 do valor de R006)
SUB D[B000] 27348 (Subtrai a constante 27348 do valor no endereço D, determinado pelo número
em B000)
Exemplos:
SUB P127 P127 (Subtrai todos os valores deles mesmos, zerando todos os valores)
SUB LP002 LP[I017] (Subtrai de LP002 todos os elementos no endereço LP, determinado pelo
número em I017)
12.3.3 MUL
A instrução Multiply armazena o produto da variável atualmente armazenada no
endereço da variável resultante e uma constante ou um valor armazenado em qualquer
outro endereço.
Exemplos:
MUL I005 25 (Multiplica 25 pelo valor em I005)
MUL R005 D002 (Multiplica o valor em D002 pelo valor em R005)
MUL D[B005] LI[B004] (Multiplica o valor no endereço LI, determinado por B004, pelo valor no
endereço D, determinado por B005)
Exemplos:
MUL P009 (2) -1 (Multiplica a constante inteira -1 pelo segundo elemento de P009)
MUL LP007 0 (Multiplica todos os elementos de LP007 por zero)
NOTA: Multiplicar por zero é útil pois inicializa todos os 6 elementos sem limpar o tipo
de dado.
MUL P127 (1) D039 (Multiplica o valor em D039 pelo primeiro elemento de P127)
MUL LP002 LD[B001] (Multiplica o valor no endereço LD, determinado por B001, por todos os
elementos de LP002)
12.3.4 DIV
A instrução DIV divide a variável atualmente armazenada no endereço da variável
resultante por uma constante ou um valor aritmético armazenado em qualquer outro
endereço.
Exemplos:
DIV R005 67.854 (Divide o valor em R005 por uma constante)
DIV LR014 D002 (Divide o valor em LR014 pelo valor em D002)
DIV R000 I[B000] (Divide o valor em R000 pelo valor no endereço I, determinado por B000)
Exemplos:
DIV P026 (1) 2 (Divide o primeiro elemento de P206 por 2)
DIV P018 10 (Divide todos os elementos de P018 por 10)
Exemplos:
SET P055 P040 (Seta todos os 6 elementos de P040 em P055)
SET P125 LP002 (Seta todos os 6 elementos de LP002 em P125)
SET P[B005] LP[LI003] (Seta todos os 6 elementos do endereço de LP determinado por LI003no
endereço de P determinado por B005)
Exemplos:
SET R009 452.2756 (Carrega uma constante em R009)
SET LD008 -81726354 (Carrega uma constante em LD008)
SET B[I000] 255 (Carrega um constante no endereço de B determinado por I000)
Exemplos:
SET R039 LB009 (Carrega o valor de LB009 em R039)
SET LI001 B003 (Carrega o valor de B003 em LI001)
SET LR[B001] LD[LB003] (Carrega o valor armazenado no endereço de LD determinado por B003 no
endereço de LR determinado por B001)
Exemplos:
SET I039 I039 + 5 (Soma 5 ao valor em I039 e armazena o resultado em I039)
SET D032 1000 * B005 (Multiplica 1000 pelo times valor em B005; resultado em D032)
SET LR001 (255 - B004)/2 (Divide a diferença entre 255 e o valor em B004 por 2 e armazena o resultado
em LR001)
12.4.2 CLEAR
Limpa uma seção de qualquer valor GLOBAL/LOCAL, SCALAR/ARRAY Byte,
Integer, Double ou Real, zerando-os.
Exemplos:
CLEAR R007 8 (Limpa 8 endereços “R” consecutivos, R007 à R014)
CLEAR LB000 ALL (Limpa todos os endereços Local Byte reservados)
Limpa o STACK POINTER da pilha para permitir chamada de programas pai e filho
com a instrução CALL.. O STACK é limitado a até 10 níveis de alinhamento, portanto
limpando os valores dentro Stack os níveis adicionais ficam disponíveis.
CUIDADO: Uma vez que o stack estiver limpo e/ou disponível, o controle NÃO IRÁ
RETORNAR para qualquer um dos jobs.
Exemplos:
CLEAR STACK (Este job torna-se disponível o nível 1 de 8. Quando o controle atinge o final
deste job, o ciclo é finalizado no nível 0)
Exemplos:
INC I036 (Incrementa em um o valor armazenado em I036)
INC LB000 (Incrementa em um o valor armazenado no endereço Local Byte)
INC D[LB002] (Incrementa em um o valor armazenado no endereço D, determinado pelo número em
LB002)
12.5.2 DEC
Decrementa o valor armazenado apenas em uma variável GLOBAL/LOCAL,
SCALAR/ARRAY Byte, Integer ou Double subtraindo-se um.
Exemplos:
DEC I008 (Decrementa em um o valor de I008)
DEC LD001 (Decrementa em um o valor armazenado no endereços Local D)
DEC LI[D001] (Decrementa em um o valor armazenado no endereço de LI determinado pelo número
em D001)
Exemplos:
SQRT R008 3 (√3 = 1.732051E+00é armazenado em R008)
SQRT R010 1.2487E-05 (A raiz quadrada de uma constante positiva é armazenada em R010)
SQRT LR005 R[B033] (A raiz quadrada de um valor positive no endereço R, definido por B033, é
armazenada em LR005)
12.6.2 SIN
Armazena o seno de uma constant emgraus, ou do valor armazenado em outra variável
Real apenas no endereço designado.
Exemplos:
SIN R008 90 (SIN 90° = 1.000000E+00é armazenado em R008)
SIN LR001 -60 (SIN -60° = -8.660254E-01 é armazenado em LR001)
SIN LR009 R012 (Seno dos graus armazenados em R012 é armazenado em LR009)
SIN R[B010] LR[I039] (Seno dos graus no endereço de LR, determinado por
I039 armazenado no endereço R determinado por B010)
12.6.3 COS
Armazena o co-seno de uma constante em graus, ou do valor armazenado em outra
variável Real apenas no endereço designado.
Exemplos:
COS R008 90 (COS 90° = -2.05103E-10 é armazenado em R008)
COS LR002 -60 (COS -60° = 0.500000E-01 é armazenado em LR002)
COS LR009 R012 (Co-seno dos graus armazenados em R012 é armazenado em LR009)
COS R[B010] LR[I039] (Co-seno dos graus no endereço de LR, determinado por
I039 armazenado no endereço R determinado por B010)
12.6.4 ATAN
Armazena o arco-tangente de uma constante em graus ou do valor armazenado em
outra variável Real apenas no endereço designado.
Exemplos:
ATAN R008 1 (ATAN 1 = 45°; 4.500000E+01 é armazenado em R008)
ATAN LR000 -1.73205E+00 (ATAN -√3 = -60°; -6.000000E+01 é armazenado em LR0020
ATAN LR009 R012 (Arco-tangente do valor em R012 é armazenado em LR009)
ATAN R[B010] LR[I039] (Arco-tangente do valor em no endereço de LR, determinado por
I039 armazenado no endereço R determinado por B010)
NOTA: É útil para mascarar o I/O. Para mascarar os inputs 6, 7 e 8 de IG#(1) após o
comando DIN B000 IG#(1), utilize AND B000 31 (31=16+8+4+2+1, soma das
entradas 1 à 5).
Examples:
AND B000 7 (Se B000=63, então armazena-se 7 em B000)
0011_1111 [63]
AND 0000_0111 [ 7]
0000_0111 [ 7]
AND B000 B001 (Se B000=63, então armazena-se 63 em B000)
0011_1111 [63]
AND 0011_1111 [63] B001
0011_1111 [63]
AND B000 209 (Se B000=63, então armazena-se 17 em B000)
0011_1111 [ 63]
AND 1101_0001 [209]
0001_0001 [ 17]
12.7.2 OR
Armazena o resultado da lógica OR entre uma variável Byte e outra constante positiva
ou o valor de outra variável Byte.
Examples:
OR B000 7 (Se B000=63, então armazena-se 7 em B001)
0011_1111 [63]
OR 0000_0111 [ 7]
0000_0111 [ 63]
OR B000 B001 (Se B000=63, então armazena-se 63 em B001)
0011_1111 [63]
OR 0011_1111 [63] B002
0011_1111 [63]
OR B000 209 (Se B000=63, então armazena-se 255 em B001)
0011_1111 [ 63]
AND 1101_0001 [209]
0001_0001 [ 17]
12.7.3 XOR
Armazena o resultado da lógica XOR (OU EXCLUSIVO) entre uma variável Byte e
outra constante positiva ou o valor de outra variável Byte.
Examples:
XOR B003 7 (Se B000=63, então armazena-se 56 em B000)
0011_1111 [63]
AND 0000_0111 [ 7]
0000_0111 [ 56]
XOR B003 B004 (Se B000=63, então armazena-se 0 em B003)
0011_1111 [63]
AND 0011_1111 [63] B000
0011_1111 [0]
XOR B003 209 (Se B000=63, então armazena-se 238 em B003)
0011_1111 [ 63]
AND 1101_0001 [209]
0001_0001 [ 238]
12.7.4 NOT
Armazena o resultado da lógica NOT de uma constante positiva ou o valor de uma
variável Byte apenas em endereços do tipo Global/Local Scalar/Array Byte.
Examples:
NOT B002 7 (Armazena-se 248 em B002)
NOT 0000_0111 [ 7]
1111_1000 [255-7=248]
NOT B002 B003 (Armazena-se 192 em B002)
NOT 0011_1111 [63] B001
1100_0000 [255-63=192]
NOT B002 209 (Armazena-se 17 em B000)
NOT 1101_0001 [209]
0010_1110 [ 255-209=46]
No exemplo abaixo, os movimentos nas linhas 0013, 0014 e 0015 serão trocados
durante a operação no modo Play ou com INTERLOCK + TEST START no modo
Teach.
LINE INSTRUCTION
0011 MOVJ VJ=25.00
0012 SFTON P127 UF#(5)
0013 MOVJ P000 VJ=100.00
0014 MOVL V=1250
0015 MOVL V=1250
0016 SFTOF
0017 MOVJ VJ=100.00
1. Com o cursor em SFTON na linha Edit Buffer, pressione SELECT para acessar
a tela Detail Edit;
2. Mova o cursor para COORDINATE “UNUSED” e pressione SELECT;
3. Mova o cursor para BF, RF, TF ou UNUSED; pressione SELECT;
ou
Selecione UF#( ), forneça o número desejado; pressione ENTER;
4. Pressione ENTER para sair da tela DETAIL EDIT;
5. Pressione ENTER.
NOTA: O valor atual do dado deslocado na variável de posição pode ser monitorado
quando estiver ativado na tela SHIFT VALUE, acessada através do menu
ROBOT.
13.2 MSHIFT
A instrução MSFHIFT faz com que o controle calcule a diferença entre duas variáveis
de posição e armazene o resultado em uma terceira variável. Isto permite que os valores
deslocados em milímetros/graus sejam determinados durante a execução de um job. As
duas variáveis de posição usadas para calcular a diferença podem ser configuradas em
PULSE ou XYZ; no entanto, o dado será sempre armazenado na terceira variável com o
formato XYZ.No exemplo abaixo, o MSHIFT na linha 0001 irá subtrair o dado em
P0001 daquele em P002, armazenando a diferença (resultado) em P003 no formato
XYZ. Apenas os passos entre o SFTON na linha 0003 e o SFTOF na linha 0007 serão
deslocados e a quantidade calculada será armazenada em P003.
O deslocamento paralelo pode ser configurado como um dado em pulsos para cada eixo
SLURBT do robô, ou como BF, RF, TF ou UF para X, Ye Z em unidades de 0,001 mm.
Uma Variável de posição também pode ser deslocada se o parâmetro S2C514 = 1.
NOTA: A tela PARALLEL SHIFT JOB permite que um DESTINATION NAME seja
fornecido para que o job original não seja alterado; o deslocamento de dados é feito
para uma “cópia”. Se um novo DESTINATION NAME não for especificado, o job
original será permanentemente reescrito.
A tela da Figura 13-2 mostrará dois pontos: BASE POINT (SRC) à esquerda, que deve
ser um ponto no job original, e BASE PT (DEST) à direita, sendo o local do mesmo
ponto alocado no programa deslocado
NOTA: A Função Parallel Shift pode ser programada para atingir pontos ou limites
fora da região de trabalho do manipulador robótico. Esses pontos serão exibidos no
job como “/OV”. As posições devem ser modificadas. Não execute um job até que este
tenha sido testado com a tecla FWD.
Os eixos do espelho são determinados por S1CxG 065 de acordo com o seguinte padrão
de bits:
Eixo T B R U L S S, R & T
CUIDADO: O MIRROR SHIFT irá inverter a posição dos pontos ensinados mas não
garante que a mesma orientação da ferramenta seja mantida.
NOTA: Os dados de alteração não serão aceitos na tela PAM a não ser que o número
do STEP tenha sido fornecido.
8. Mova o cursor para uma linha de entrada na coluna STEP; pressione SELECT;
9. Forneça o número do STEP que será editado; pressione ENTER;
10. Repita os passos 8 e 9 para cada passo a ser editado;
11. Mova o cursor para a coluna de direção, rotação, V (%) ou PL; pressione
SELECT;
NOTA: O EDIT permite acesso ao LINE CLEAR (limpa todos os dados daquele passo),
LINE COPY (copia todos os dados daquele passo), LINE PASTE (cola todos os dados
de outro passo);
NOTA: No modo PLAY, as alterações permanentes serão efetivadas na próxima vez que
o cursor atingir NOP durante a execução; no modo TEACH, as alterações permanentes
no job selecionado são executadas imediatamente. Inserir instruções NOP adicionais
ao longo do job resulta em uma resposta mais rápida da execução do PAM.
JOB
//NAME TEST
//POS
///NPOS 7,0,0,0,0,0
///TOOL 0
///POSTYPE PULSE
///PULSE
C0000=0,3,-2,0,-1,0
C0001=-3493,45405,-82907,-46521,-12648,81201
C0002=-3275,47936,-84289,-49492,-12068,83122
C0003=7993,60237,-62056,-17950,-21523,57368
C0004=30723,41054,-76587,-8754,-9418,43194
C0005=-3275,47936,-84289,-49492,-12068,83122
C0006=0,3,-2,0,-1,0
//INST
///DATE 2000/09/08 20:00
///ATTR SC,RW
///GROUP1 RB1
NOP
MOVJ C0000 VJ=0.78
MOVJ C0001 VJ=100.00
MOVJ C0002 VJ=25.00
MOVL C0003 V=187.0
MOVL C0004 V=187.0
MOVJ C0005 VJ=50.00
MOVJ C0006 VJ=100.00
END
NOTA: Caso não seja selecionado nenhum DESTINATION NAME, o sistema irá
perguntar se o job original pode ser sobrescrito. Para sobrescrever o job
original, pule para o passo 10.
As posições comandadas são “convertidos” para uma base XYZ baseada na coordenada
selecionada no passo 6.
Figura 14-4 Exemplo de job com posições comandadas em USER RECTAN (XYZ)
Para deslocamento 3D, um STANDARD JOB (tipo pulso) uma vez convertido para
RELATIVE JOB (tipo UF# XYZ) pode ser realocado tridimensionalmente para
qualquer posição e orientação dentro do envelope de trabalho do robô alterando apenas
o número do User Frame (plano inclinado) para o TEACH COORDINATE no JOB
HEADER. Essa função é extremamente útil para duplicar jobs com múltiplos trabalhos
em peças e recriar jobs devido à realocação de peças.
NOTA: O RELATIVE JOB pode converter apenas os passos de movimento que foram
gravados no job através de pulsos do servomotor. Não é possível converter dados de
posições em passos que utilizam variáveis de posições de movimento. Portanto, pode
ser vantajoso programar intencionalmente a primeira/última posição no job como
MOVJ P000 para que não seja convertida e portanto não seja deslocada cada vez que
um User Frame é usado.
Para utilizar o Job Relativo para um deslocamento 3D, um User Frame para a
posição original e um User Frame para a posição deslocada devem ser ensinadas
antes.
NOTA: Para resultados deslocados bem acurados ou precisos, a definição das posições
deslocadas em ORG, XX e XY deve estar relacionada diretamente com a posição
original.
NOTA: Caso não seja selecionado nenhum DESTINATION NAME, o sistema irá
perguntar se o job original pode ser sobrescrito. Para sobrescrever o job original, pule
para o passo “i”.
NOTA: Depois de completo, o job estará no User Frame XYZ ao invés do PULSE. Para
verificar o tipo de dado, exiba o HEADER do job ou Abra Diretamente um Comando de
Posição MOV_.
NOTA: O parâmetro S2C332 especifica como operar um job relativo. Um método para
converter um job relativo em um padrão (pulse), e um método para calcular a posição
desejada (posição pulse) quando um job relativo é operado podem ser especificados
como:
1. Para retornar o JOB deslocado ao tipo PULSE ao invés de deixá-lo no tipo XYZ,
realize novamente a conversão do RELATIVE JOB seguindo os seguintes
passos:
a. Na tela JOB CONTENT, selecione UTILITY;
b. Selecione RELATIVE JOB;
c. Mova o cursor para o SOURCE JOB; pressione SELECT;
d. Mova o cursor para o nome do JOB shifitado pressione SELECT.
Repare que a linha COORDINATE agora contém “PULSE”, e
CONVERSION METHOD contém “RELATIVE STANDARD”;
NOTA: Caso não seja selecionado nenhum DESTINATION NAME, o sistema irá
perguntar se o job original pode ser sobrescrito. Para sobrescrever o job
original, pule para o passo “g”.
NOTA: Caso não seja selecionado um DESTINATION NAME, o sistema irá perguntar
se o job original pode ser sobrescrito. Para sobrescrever o job original, pule para o
passo 9.
NOTA: Para que o(s) Job(s) execute(m) com quaisquer dados existentes em cada TOOL
NO. dos passos, o(s) Job(s) deve(m) permanecer no tipo [ROBOT] RELATIVE JOB
TYPE.O dado da ferramenta pode ser editado pelo método manual, utilizando o método
de calibragem automática TCP ou utilizando o software MotoCAL.
JOB
//NAME TEST-2
//POS
///NPOS 8,0,0,0,0,0
///TOOL 0
///POSTYPE ROBOT
///RECTAN
///RCONF 0,0,0,0,0,0,0,0
C0000=483.296,42.041,166.901,173.04,-21.76,46.00
C0001=561.725,83.103,-45.851,173.03,-21.76,46.01
C0002=563.921,84.259,-51.803,173.03,-21.76,46.01
C0003=639.225,157.154,-9.965,173.03,-21.76,46.01
C0004=532.564,276.665,-26.218,173.03,-21.76,46.01
C0005=563.921,84.259,-51.803,173.03,-21.76,46.01
C0006=561.725,83.103,-45.851,173.03,-21.76,46.01
C0007=483.296,42.041,166.901,173.04,-21.76,46.00
//INST
///DATE 2000/09/09 20:00
///ATTR SC,RW,RJ
////FRAME ROBOT
///GROUP1 RB1
NOP
MOVJ C0000 VJ=25.00
MOVJ C0001 VJ=100.00
Figura 14-5 Exemplo de Job com Comando de Posição ROBOT RECTAN (XYZ)
NOTA: Sempre salve uma cópia de todos os jobs e dados antes de executar a função
PMT.
Antes que a função PMT possa ser executada, é necessário fornecer manualmente o
dado ORIENTATION, ou podem-se calcular automaticamente os valores de X, Y e Z
(A opção MotoCAL também pode ser utilizada). A obtenção precisa de dados utilizando
a opção PTM depende fortemente na precisão dos dados TCP para a nova ferramenta.
Os dados ORIGINAL e ORIENTATION devem ser salvos em um local da memória
exclusivo para o PMT (veja o job abaixo) ou carregados de um disco removível.
NOTA: O dado salvo no espaço de PMT fica armazenado até que o controle seja
desligado. Não desligue o NX100 até que a função PMT seja finalizada.
5. Preencha cada dimensão da ORIENTAION TOOL selecionando com o cursor,
pressionando SELECT e entrando com os dados a partir do teclado; pressione
ENTER;
6. Mova o cursor para EXEC; pressione SELECT.
NOTA: Todos os passos que estiverem fora do volume de trabalho do robô serão
mostrados como “/OV” ao invés do tipo de movimento. O “/OV” desaparecera depois
que a posição for corrigida.
Exemplo:
NOTA: Pode-se acessar CONSTANT ou VARIABLE para TL#( ) na tela DETAIL EDIT,
se necessário, pressionando SELECT, ou continue com os passos 4 e 5 para
utilizar a edição geral na linha Edit Buffer.
Exemplo:
LINHA INSTRUÇÃO
0000 NOP
0001 EI LEVEL= 8
0002 MOVJ VJ=25.00
0003 MOVJ VJ=100.00
0004 MOVJ VJ=12.50
0005 EI LEVEL= 3
0006 CALL JOB:PART-A
0007 EI LEVEL= 5
0008 CALL JOB:PART-B
•
•
•
0024 MOVJ VJ=100.00
0025 DI
0026 END
NOTA: Para limpar os dados, mova o cursor para o nível desejado na coluna SINGAL e
pressione SELECT, então digite “0” e pressione ENTER. A tela “Clear data?”
aparecerá. Mova o cursor para YES e pressione SELECT.
17.2 Programando EI e DI
Para programar as Instruções de Controle EI & DI, siga os seguintes passos:
NOTA: Um simples EI irá habilitar todos os níveis de interrupções. Siga para o passo
10 para usar a instrução mostrada. Caso sejam necessários níveis específicos de
prioridade, um marcador numérico deve ser anexado baseado nas teclas e na tabela
abaixo.
Nível 7 6 5 4 3 2 1 0
Valor
128 64 32 16 8 4 2 1
Binário
Para editar (DETAIL EDIT) o tag SRCH em uma instrução MOVL, siga os seguintes
passos:
7. Mova o cursor para INPUT STATUS e use SELECT para setar ON ou OFF;
8. Para utilizar um timer de atraso opcional, mova o cursor para TIME, pressione
SELECT, mova o cursor para T=, pressione SELECT, mova o cursor para o
dado padrão/existente, pressione SELECT, entre com o valor desejado no
teclado (0,01 à 655,35 segundos); pressione ENTER;
NOTA: O atraso é executado no início do MOVL. Isto serve para certificar que a
posição anterior foi alcançada, resultando em um caminho retilíneo preciso
para a busca.
NOTA: O valor DIS= deve ser configurado para a maior distância na qual o objeto
possa estar localizado além do alvo do passo do movimento.
Para editar (DETAIL EDIT) o tag SRCH em uma instrução MOVL, siga os seguintes
passos:
Para editar (DETAIL EDIT) o tag SRCH em uma instrução IMOV, siga os seguintes
passos:
Com a opção CONCURRENT JOB, a tela CREATE NEW JOB fica com quatro partes:
• Nome do Job (até 8 caracteres);
• Comentários (até 32 caracteres);
• Grupo (NO GROUP AXES, R1, R2, R1+R2, R1+S1, etc.);
• Tipo de Job (CONCURRENT ou ROBOT).
A seleção do Tipo de Job, sendo ROBOT ou CONCURRENT, indica o que pode ser
incluído no job. Para controlar um Grupo de Eixos, deve-se escolher o tipo ROBOT.
Um job CONCURRENT não pode controlar nenhum grupo de eixos; apenas instruções
que não envolvam movimentos podem ser colocadas em um job do tipo
CONCURRENT. Portanto, o Grupo para todos os jobs CONCURRENT deve ser NO
GROUP AXES.
A instrução PSTART deve incluir o número da sub-rotina (SUB 1, SUB 2, etc.). Além
disso, deve-se especificar um nome para o job, ou o controle irá nomear a partir de um
nome registrado para cada SUB job.
Se não quisermos que a Tarefa Mestra seja continuada até que SUB 1 e SUB 2 estejam
completas, é necessário uma instrução PWAIT SUB1 e/ou PWAIT SUB2.
1. Com o job aberto e com o cursor na área de Endereços, abra o Inform List;
2. Selecione CONTROL;
3. Selecione PSTART;
4. Com o cursor na instrução PSTART na Linha Edit Buffer, pressione SELECT
para acessar a tela Detail Edit;
5. Mova o cursor para a linha Target Job e selecione “JOB:”, então selecione o
nome do job desejado;
6. Na tela Detail Edit, selecione a “Sub Task” apropriada;
7. Pressione ENTER para retornar à tela do job com a informação no Edit Buffer;
8. Pressione ENTER.
NOTA: Programar com o “TARGET JOB UNUSED”exige que seja fornecido um nome
para o job mestre na seção “CTRL MASTER”.
A instrução PWAIT faz com que a Tarefa Mestra aguarde até que a sub-rotina
designada esteja completa antes de resumir sua execução. Sem o PWAIT, a Tarefa
Mestra iria continuar processando suas instruções independente da sub-rotina estar ou
não terminada. Isto significa que em AUTO CYCLE, a Tarefa Mestra poderia reiniciar
antes que as sub-rotinas se completem. Portanto, caso não tenha sido usado
anteriormente na tarefa mestra, deve haver ao menos um PWAIT para cada sub-tarefa
antes do comando END na Tarefa Mestra.
Quando desejado (para edição, verificação de caminho etc.) um único job pode ser
avançado ou Test Started configurando o sistema para o modo Single Job. Isto pode ser
feito utilizando as Teaching Conditions em SETUP, ou pressionando e segurando as
teclas SHIFT e “4”. Este método de atalho irá resultar nas mensagens “Single Job Mode
Available” ou “Multi Job Mode Availabel”. No Single Job Mode, apenas o job
visualizado é executado. No Multi Job Mode, todos os jobs ativos serão executados.
NOTA: Pode-se sincronizar mais do que dois jobs do tipo ROBOT com o TSYNC. Isto
requer um tag “SYNCHRO NUM.” Anexado à instrução TSYNC. Este tag é anexado na
tela Detail Edit e indica quantas instruções TSYNCX serão procuradas dentro dos
programas.
19.2.8 TSYNC
Quando ambos os jobs estão “coordenados” (ou seja, a linha Edit buffer possui as
declarações de um Grupo Mestre e de um Sub-Grupo), um tag SYNC deve ser
adicionado ao final das instruções PSTART como mostra a Figura 19-3.
Este tag SYNC faz com que o controle sincronize o job com o tag com o job sem o tag.
Todas as velocidades do job SYNC tornam-se irrelevantes. Cada movimento é
sincronizado nos jobs paralelos. Se quaisquer movimentos forem inconsistentes quanto
à sua duração, quando dois jobs são comparados lado a lado, as velocidades não serão
mais as mesmas. Isto ocorre pois o job sincronizado é executado no TRT (Traverse Run
Time) do job controlador. Deve-se tomar cuidado ao modificar os pontos. A não
inclusão do tag SYNC resultará em um “Parallel Start” Alarm.
Se o sub-job for do tipo ROBOT, então seu Grupo de Controle deve ser o mesmo ou
deve conter apenas componentes de Grupo do Job Mestre (ou seja R1+S1 pode chamar
um job R1+S1, um job R1, um job S1 ou um job sem grupo).
Veja as regras a seguir que indicam todos os usos permitidos da instrução CALL.
• Um job do tipo ROBOT pode chamar qualquer outro job do tipo ROBOT do
mesmo grupo de eixos;
• Um job do tipo ROBOT com um grupo de eixos pode chamar um job do tipo
ROBOT do sem um grupo de eixos;
• Um job do tipo ROBOT sem um grupo de eixos pode chamar um job do tipo
ROBOT do com um grupo de eixos;
NOTA: Se um job do tipo ROBOT com um grupo de eixos R1 chamar um job do tipo
ROBOT sem um grupo de eixos, este não pode chamar um job do tipo ROBOT com um
grupo de eixos R2.
• Não use Interlock + FWD na instrução PSTART para “executar” o job PSTART
na tela. Na operação Multi-job essas teclas executam uma linha de cada job
simultaneamente! Para visualizar as sub-rotinas, use a tecla Page. Novamente,
tenha cuidado: deixar o cursor no meio da sub-rotina pode resultar na execução
fora de sequência de uma operação;
• Uma vez selecionado o job do tipo ROBOT desejado na tela, deve-se ter
cuidado caso este possua apenas Grupos R1 ou R2. Se for utilizado FWD para
atingir o ponto original, a informação do posicionador para S1 não está inclusa.
Portanto, o local atual do posicionador pode não ser preciso.
L: INST:
0003 MOVJ VJ=25.0
0004 + MOVJ VJ=50.0
0005 SMOVL V=66
0006 + MOVJ
0007 SMOVL V=66
0008 + MOVJ
Para usar o Coordinated Motion para um grupo de controle R1 + S1, S1 pode ser
selecionado como o Master Control Device. Em um grupo R1+S1:S1, o robô é
identificado como escravo para o posicionador. No exemplo acima, o robô move-se por
um caminho linear em relação ao posicionador, com uma velocidade de 66 cm/min em
relação à parte. Para onde quer que o posicionador se mova, o robô deve seguir e manter
a relação.
Para acessar o Coordinated Motion o job deve ser nomeado como um Robot Job e o
Group Set como R1+S1 com o posicionador sendo o Master (R1+S1:S1). Esta indicação
permite que o sistema saiba que combinação está sendo controlada. Uma vez definido, o
MOVJ VJ=25.0
+ MOVJ VJ=50.0
para:
SMOVL V=66
+ MOVJ
O LED da tecla Ex. Axis irá acender automaticamente quando o sincronismo for
selecionado. Pressionando a tecla Robot desligará o LED e permitirá movimento
independente do robô. Contudo, se a tecla Ex. Axis for pressionada novamente, o
controle Synchronous será ativado novamente. Para desativar completamente o controle
Synchronous Motion, pressione a tecla . Quando a tecla Ex. Axis for selecionada,
apenas o indicador S1 é mostrado na Status Line.
NOTA: A função Synchronous Motion não tem efeito na reprodução ou na gravação das
posições. Serve apenas para facilitar a locomoção. Ambas as funções Synchronous e
Coordinated podem ser selecionadas ao mesmo tempo, já que uma controla o
movimento e a outra a programação. Apenas a seleção de Coordinated irá afetar o
modo como o passo é gravado.
NOTA: Configurando um Detection Level muito baixo pode fazer com que o sensor
interno seja ativado sem nenhum impacto! O torque do motor manipulador aumenta
naturalmente a medida que o braço gira ou inicia um movimento. Quanto maior a
velocidade e quanto mais fechada for a curva, mais o torque do motor aumenta,
possivelmente excedendo o limiar configurado. Rode o job e configure inicialmente o
limiar para um valor no mínimo 20% maior do que aquele mostrado na área de MAX.
DISTURBANCE na tela do SHOCK SENSOR LEVEL.
Agora o servomotor pode ser ligado pois o controle “monitora” os valores dos torque do
motor, permitindo que o robô se mova.
NOTA: Assegure-se de que a Condição seja retornada para VALID depois que o robô
for recuperado.
NOTA: Algumas situações não necessitam que o robô seja “recuperado”. Em outras
situações, soltar os freios e empurrar o robô pode ser mais eficaz.
O controle deve ser programado para monitorar o status do sensor de choque enquanto o
robô é afastado do local de impacto. Para fazer isto, a tela apropriada deve ser mostrada.
Para mostrar a tela e recuperar da ação do sensor de choque, siga os passos a seguir:
NOTA: Esta seção está disponível apenas nos modos de Edição e Administração de
segurança.
3. Selecione “RELEASE”;
4. Selecione “ALM RST”.
O servomotor pode ser religado apenas no modo TEACH. O robô pode ser movido, mas
apenas nas coordenadas Joint.
NOTA: O “RELEASE” apenas tem efeito quando a tela é mostrada. Se ela for alterada
para qualquer outra antes do Shock Sensor ser resetado, o controle irá retornar para a
condiçõa de alarme e irá para para o robô por meio do E-Stop.
ANEXOS
Soluções propostas pela MOTOMAN ROBÓTICA DO BRASIL