• Nenhum resultado encontrado

Programação Gráfica do Robô e Simulação

No documento Tutorial RobotStudio PT.pdf (páginas 32-37)

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.

No documento Tutorial RobotStudio PT.pdf (páginas 32-37)

Documentos relacionados