utilizar-se dois robôs coordenados por entradas/saídas. De modo a acelerar o desenvolvimento deste tutorial, está disponível no
Moodle uma estação de trabalho do RobotStudio já preparada. Relativamente ao que se fez acima, foi adicionado um robô semelhante com as mesmas entradas e saídas, bem como os movimentos necessários para cada robô, semelhantes aos movimentos criados anteriormente.
Colocados todos os elementos no ambiente de trabalho, interessa agora programar os robôs para executar a tarefa em questão. A programação do
robô e a configuração da simulação pode ser puramente gráfica, ou pode incluir edição de código. Nesta secção descreve-se o método puramente gráfico, enquanto na secção seguinte se aborda a utilização/edição direta de código.
1. Abra o ambiente de trabalho indicado acima;
NOTA: No RobotStudio o separador Paths&Targets do ambiente de trabalho diz respeito à edição do ambiente mas não necessariamente à informação que está armazenada no controlador do robô. Assim, para que esta informação esteja disponível no controlador virtual do robô, é necessário carregar essa informação para o controlador. Caso se utilizasse um robô real teria que se proceder
Figura 76 – Ambiente fornecido com dois robôs.
da mesma forma, mas nesse caso a sincronização seria feita para o controlador real em vez de ser feita para o controlador virtual.
2. No separador Paths&Targets clique com o botão direito do rato no controlador
IRB1600_6kg_1.2m_1 seguido de Synchronize to RAPID…, surgindo a janela da Figura 77.
Mantenha todos os módulos selecionados para que sejam todos sincronizados e clique em
OK. Repita a mesma operação para o controlador IRB1600_6kg_1.2m;
Figura 77 – Sincronização para o Controlador
Virtual. Figura 78 – Configuração da simulação.
NOTA: A sincronização tanto pode ser feita do ambiente de trabalho para o controlador virtual, como pode ser feita também no sentido contrário. Em qualquer dos casos pode escolher sincronizar apenas uma parte da informação. Aliás, é aconselhável que escolha apenas a informação indispensável a sincronizar (neste caso foi a primeira sincronização, daí terem sido escolhidos todos os componentes). Deverá ter cuidado com esta operação, em particular quando editar o código diretamente, pois a mesma substitui os programas no controlador virtual ou no ambiente de trabalho, dependendo do sentido da sincronização.
3. Concluída a sincronização com o controlador virtual, clique em Simulation Simulation
Setup, surgindo a janela da Figura 78;
4. Selecione a tarefa T_ROB1 para o controlador IRB1600_6kg_1.2m e, na opção Entry point, escolha o caminho Path_Part_surf, tal como mostra a Figura 79. Repita o procedimento para a tarefa T_ROB1 do controlador IRB1600_6kg_1.2m_1. Com estas configurações está a definir qual a função com que cada controlador deve arrancar, isto é, qual a função de base que este irá correr;
Figura 79 – Especificação do caminho a executar. Figura 80 – Configuração do modo de simulação.
5. Ainda nesta janela, selecione o controlador IRB1600_6kg_1.2m_1 (nesta altura as opções
Continuous e Single Cycle ficam disponíveis, tal como mostra a Figura 80). Se selecionar Continuous os caminhos especificados serão realizados de forma cíclica, continuamente.
Se selecionar Single Cycle os caminhos serão executados apenas uma vez. Mantenha selecionada a opção Single Cycle em cada controlador e clique em Close;
6. Clique em Simulation Play e confirme que os robôs executam os caminhos especificados; Neste momento tem uma simulação completa a correr, com ambos os robôs a executar caminhos semelhantes, sendo que o IRB1600_6kg_1.2m_1 executa os movimentos a metade da velocidade do robô IRB1600_6kg_1.2m. No entanto, como pode observar, não se verifica qualquer coordenação entre os robôs, havendo mesmo colisão entre estes. Para tal é necessário incluir na programação do robô instruções para ler as suas entradas e atuar nas suas saídas. Os passos seguintes irão garantir que um robô não realiza a aproximação à peça enquanto o outro robô não terminar a sua operação.
7. Com a opção IRB_1600_6kg_1.2m T_ROB1 selecionada em Home Settings, clique com o botão direito do rato na primeira instrução do caminho Path_Part_surf do robô
IRB1600_6kg_1.2m e escolha a opção Insert Action Instruction…. No separador Create Action Instruction utilize as opções indicadas na Figura 81 e clique em Create. Desta forma
adiciona a instrução WaitDI da linguagem RAPID, a qual permite esperar que uma saída digital atinja um determinado valor. Neste caso especificou-se a entrada diStartOperation com o valor 1;
Figura 81 – Instrução WaitDI. Figura 82 – Instrução SetDO.
8. Repita o processo para adicionar uma instrução a seguir à última instrução do caminho com os dados indicados na Figura 82. A instrução SetDO com o parâmetro doOperationEnded e valor 1 será utilizada para sinalizar que a operação terminou;
9. Repita o processo para adicionar no final do caminho, a instrução WaitDI com o valor 0 para a entrada diStartOperation e, após a instrução WaitDI diStartOperation 1, a instrução SetDO com a saída doOperationEnded e o valor 0. No final deverá ter um caminho idêntico ao ilustrado na Figura 83;
10. Repita o processo para o segundo robô, resultando no caminho ilustrado na Figura 84; 11. Dado que foram efetuadas alterações ao caminho é necessário voltar a sincronizar este com
o controlador virtual. Para tal, para o controlador IRB1600_6kg_1.2m, clique com o botão direito do rato em cima do caminho Path_Part_surf e escolha a opção Synchronize to
RAPID…, surgindo a janela da Figura 85. Clique OK para terminar a sincronização. Note
que ao iniciar a sincronização clicando diretamente num caminho específico, automaticamente é selecionado apenas esse caminho para sincronização;
Figura 83 – Caminho final do
IRB1600_6kg_1.2m. Figura 84 – Caminho final do IRB1600_6kg_1.2m_1.
Figura 85 – Sincronização do caminho Path_Part_surf. 12. Repita o procedimento de sincronização para o IRB1600_6kg_1.2m_1;
13. Corra novamente a simulação clicando em Simulation Play e Confirme que nada acontece. Nada acontece porque ambos os robôs estão à espera que uma entrada seja ativada, o que não está a ser feito neste momento. Clique em Simulation Stop para parar a simulação;
14. Clique em Simulation I/O Simulator para aceder ao painel de entradas/saídas do controlador, tal como mostra a Figura 86;
15. Para o sistema IRB1600_6kg_1.2m escolha a opção User List em Filter e clique em Edit
Lists…, surgindo uma janela idêntica à da Figura 87. Clique em New List, atribua um nome
(por exemplo, User) e adicione os sinais diStartOperation e doOperationEnded, tal como
mostra a Figura 88. Clique em OK e repita o procedimento para o sistema
IRB1600_6kg_1.2m_1. No final deverá visualizar à direta os sinais adicionados, tal mostra
a Figura 89;
Figura 88 – Lista final de sinais do utilizador. Figura 89 – Simulador de E/S com lista de utilizador.
16. Inicie novamente a simulação (Simulation Play) e force a entrada diStartOperation a 1 para o sistema IRB_1600_6kg_1.2m. Verifique que o robô executa a trajetória e ativa a saída
diOperationEnded no final. Repita as operações para o outro robô e verifique o mesmo
comportamento;
17. Embora já seja possível controlar a operação de ambos os robôs, estes não executam ainda as operações de forma coordenada, pois falta ainda interligar os robôs. Clique em Simulation Station Logic, resultando na janela da Figura 90. Esta janela permite definir a lógica de funcionamento de alto nível da estação de trabalho, incluindo ligações entre controladores e outros dispositivos;
18. Neste caso apenas existem dois controladores/robôs em termos de equipamento ativo, o que pode ser confirmado clicando no separador Design, como mostra a Figura 91. Para interligar os mesmos, aceda ao separador Signals and Connections e clique em Add I/O
Connections. Na janela que aparece escolha as opções como mostra a Figura 92 e clique
em OK;
Figura 90 – Lógica da estação. Figura 91 – Diagrama de blocos da estação.
19. Repita a operação, mas agora para adicionar a ligação entre a saída doOperationEnded do controlador IRB1600_6kg_1.2m_1 à entrada diStartOperation do controlador
IRB1600_6kg_1.2m;
20. Clique no separador Design para verificar as ligações adicionadas (poderá arrastar os blocos para ter uma melhor visualização das ligações). Tipicamente as ligações também podem ser adicionadas a partir deste separador, simplesmente arrastando saídas para entradas;
Figura 92 – Adição de uma ligação. Figura 93 – Diagrama de blocos da estação.
21. Se arrancar a simulação após estas ligações feitas, os robôs irão continuar parados, pois embora as ligações estejam feitas, ambos irão ficar à espera de um sinal positivo na sua entrada para poder iniciar o movimento. No entanto basta que ative (através do I/O
Simulator) a entrada de um dos robôs para automaticamente o processo se desenrolar
infinitamente;
Mesmo conseguindo ter solucionado o problema, é ainda necessário o utilizador simular uma entrada, o que não é desejável. Para evitar esse problema poder-se-ia adicionar no ambiente gráfico a ativação da saída de um dos robôs no arranque, provocando o início do movimento do outro robô. No entanto essa não é a abordagem aconselhada, sendo preferível editar diretamente o código RAPID, como mostra a secção seguinte.