ARTIGO TÉCNICO J. Norberto Pires, Ricardo Araújo, Tiago Godinho Departamento de Engenharia Mecânica Universidade de Coimbra CONTROLO E MONITORIZAÇÃO DE CÉLULAS ROBOTIZADAS INDUSTRIAIS DESENVOLVIMENTO DE UMA APLICAÇÃO UTILIZANDO WEBCAM, PC, PLC E SOCKETS TCP/IP 1. RESUMO No desenvolvimento de células robotizadas existe um número crescente de equipamentos que interessa controlar e monitorizar. As aplicações desenvolvidas devem ser flexíveis, permitindo a integração do maior número de dispositivos. Neste trabalho apresenta-se o desenvolvimento de uma aplicação distribuída que integra uma WebCam USB, um PLC comum, PCs e um robô industrial. Para a comunicação entre os vários processos, em diversos pontos da rede local, utilizam-se sockets TCP/IP. 2. INTRODUÇÃO O actual contexto económico impõe que a produção seja realizada por sistemas de produção flexível em oposição à automatização rígida, a qual é constituída por máquinas com elevada capacidade de produção mas com pouca flexibilidade de adaptação, mesmo para pequenas alterações no produto. Assim, como resposta às exigências impostas pela crescente diversidade de produtos aliada à pressão sobre os preços e a qualidade, surge a automação flexível e ágil. A automação flexível baseia-se em sistemas integrados e computorizados, constituídos por vários equipamentos interligados através de uma rede local e organizados, na maioria dos casos, segundo uma hierarquia do tipo CIM – Computer Integrated Manufacturing [1]. É assim crucial introduzir nos ambientes de produção uma grande flexibilidade, reduzindo os tempos mortos inerentes à integração, configuração, programação e afinação das células produtivas. Esta flexibilidade não se deve limitar à introdução de novos equipamentos produtivos, mas também à completa integração de diversos dispositivos de comando e controlo, de forma a que a flexibilidade inerente seja aproveitada do ponto de vista operacional para adicionar agilidade ao processo produtivo. Este tipo de abordagem é particularmente importante para pequenas e médias empresas (PME) industriais. Este artigo descreve uma aplicação na qual é utilizada uma WebCam USB para identificar, quantificar e localizar peças num tapete transportador industrial. Após o processamento de imagem, as peças são recolhidas do tapete por um robô industrial (ABB IRB5 140 com controlador IRC5) e colocadas numa caixa. É ainda utilizado um PLC e um variador de velocidade para monitorizar e controlar o tapete transportador. O PLC está ligado a um PC através de uma ligação série (RS232), e ao controlador do robô através de sinais de entrada e saída digitais (IO). A aplicação aqui descrita foi desenvolvida numa filosofia cliente-servidor tentando distribuir funções pelos vários elementos do sistema [2]-[5]. C# .NET 2005. A segunda aplicação servidora corre no controlador do robô e disponibiliza serviços de controlo e monitorização do robô. A aplicação servidora da WebCam corre em PC, foi desenvolvida em LabView 7.1 da National Instruments com o objectivo de permitir obter o número de peças existentes no transportador, bem como a sua localização. Para aceder aos serviços disponibilizados pelos servidores referidos foram definidos três interfaces com o utilizador: baseado em PC, com comando por voz, e baseado em PDA. As duas primeiras correm em PC, usando diferentes interfaces com o utilizador. Na primeira, a interacção é feita através do monitor, rato e teclado do PC. Na segunda, a interface é efectuada através de voz [6]. A terceira aplicação é essencialmente uma versão para PDA. As três aplicações foram desenvolvidas em Visual C# .NET 2005. Na comunicação entre processos utilizam-se sockets TCP/IP, pois estes disponibilizam comunicações bidireccionais ponto-a-ponto e são um procedimento de comunicação standard não dependendo da plataforma computacional usada, necessitando apenas que a sintaxe das mensagens seja devidamente definida. O método implementado é muito simples: a cada servidor foram atribuídos um IP e um porto (IPEndPoint) diferente, e foram colocados em escuta de possíveis ligações, só recebendo mensagens após as ligações serem correctamente estabelecidas. Cada mensagem constitui o acesso a um serviço, e admite uma resposta. 3. MÓDULOS SERVIDORES Neste trabalho foram desenvolvidas três aplicações servidoras associadas aos vários elementos do sistema, e uma aplicação cliente com vários interfaces. A aplicação cliente comanda e monitoriza o sistema utilizando os serviços disponibilizados pelas aplicações servidoras. O acesso a esses serviços é feito estabelecendo ligações cliente-servidor que usam sockets TCP/IP. As aplicações servidoras desenvolvidas são as seguintes: PLC Server associada ao PLC, Robot Server associada ao robô industrial e Camera Server associada à WebCam. A primeira corre em PC e permite controlar e monitorizar um PLC S7200 da Siemens através do porto série, e foi desenvolvida em Visual [4 ] robótica Figura 1 . Mensagens entre as várias aplicações 4. APLICAÇÃO CLIENTE Como foi já referido, as aplicações clientes desenvolvidas permitem aos utilizadores controlar e monitorizar os diversos dispositivos existentes na célula ARTIGO TÉCNICO robotizada, efectuando chamadas remotas aos serviços disponibilizados pelos servidores associados a esses dispositivos. Para aceder aos serviços o cliente deve endereçar as mensagens relevantes para as aplicações servidoras. Os serviços disponibilizados no servidor associado ao PLC permitem controlar e monitorizar o tapete transportador, e podem ser acedidos utilizando a aplicação cliente desenvolvida. Os serviços de comando do tapete permitem a selecção do modo de operação (AUTO/MANUAL). Em modo AUTO, o tapete avança sempre que uma peça atravessar o feixe do sensor 1 (Figura 2), e desde que não exista nenhuma peça perante os feixes dos sensor 2 e 3. Esta aplicação também permite solicitar o avanço do tapete até que uma peça chegue ao sensor 2 (o tapete pára ao fim de 20 segundos caso não seja detectada nenhuma peça). Em modo MANUAL é permitido ainda comandar o avanço e a paragem do tapete. O estado do tapete e do controlador do robô são monitorizados através do envio do comando <status> para o servidor do PLC. Como resposta, a aplicação cliente recebe o estado do I/O bem como o modo de operação do tapete. Figura 3 . Aplicação cliente do transportador Figura 2 . Modelação em SolidWorks da célula robotizada Por inspecção do I/O do PLC é possível verificar quais os sensores de barreira que estão activados, bem como quando o motor que actua o tapete é activado ou desactivado. É também possível monitorizar o controlador do robô. Usando um timer a monitorização é realizada com uma frequência de 2kHz, actualizando os respectivos campos de informação da aplicação cliente. Como foi já referido, utilizam-se as saídas digitais do PLC para comandar o controlador do robô nomeadamente as funções de baixo nível associadas ao controlo dos motores e do controlador de programas. A aplicação servidora associada à Webcam responde a uma mensagem de comando com o número de peças existentes no tapete e as coordenadas do seu centro de massa. Através da composição de uma mensagem, que inclui as coordenadas da peça N que se pretende recolher, e o seu envio para o servidor do robô, solicita-se a sua recolha. Na figura 3 apresenta-se a interface gráfica da aplicação cliente. No início da operação, quando o botão “Init Comm” é pressionado são testadas as comunicações com os três servidores. O primeiro a ser testado é o servidor da Webcam (desenvolvido em LabView 7.1). A aplicação cliente abre e fecha um socket. Não ocorrendo nenhum erro neste processo, testa-se de seguida o servidor do manipulador. Neste caso, o teste é realizado através da abertura de um socket sendo enviada posteriormente uma mensagem de teste para servidor do controlador que se encontra em escuta. Caso não se verifique nenhum erro neste processo o servidor responde com “0”. Após a garantia de que os dois primeiros servidores se encontram disponíveis é efectuando o teste ao servidor do PLC. Este teste é semelhante ao realizado ao servidor da Webcam. Após se ter verificado que os servidores se encontram online e a funcionar correctamente, inicia-se o processo de monitorização do modo de operação e de I/O do PLC, com uma frequência de 2kHZ. Ao utilizador é permitido colocar o tapete em modo MANUAL ou em AUTO (função “Change Mode”). A função “Get Objetcs” executa a rotina que solicita ao servidor da WebCam informação sobre as peças existentes no tapete. Caso existam peças na zona útil da WebCam, a resposta é composta pelo número de peças existentes e as suas coordenadas (x e y em mm) relativas a uma posição definida com a “origem do tapete”. Estas coordenadas são listadas na interface gráfica da aplicação cliente. Ao utilizador é também permitido comandar o estado dos motores do robô (“Motor On” e “Motor Off”) e o estado do programa (“Program Run” e “Program Stop”). No passo seguinte o utilizador deverá escolher o modo de operação da célula: “Pick All Select” ou “Pick All Auto”. No primeiro modo, o utilizador, após verificar o estado dos 3 servidores e seleccionar o modo “Auto” do tapete, deverá aguardar que sejam introduzidas peças no início do tapete. Ao serem colocadas no tapete elas interrompem o feixe do sensor 1, sendo transportadas até ao sensor 2, parando o tapete. Caso existam peças entre estes dois sensores, e nenhuma capaz de interceptar o feixe do sensor 1, o utilizador pode solicitar o avanço do tapete através de “Force Forward”. Após o sensor 2 ser activado, o utilizador deverá adquirir a localização das peças existentes na zona útil da WebCam. Antes de solicitar que uma peça seja recolhida deverá verificar se as seguintes condições do controlador se verificam: modo – AUTO; motores – ON, programa – RUN; emergências – OFF, estado - FREE. Depois deverá seleccionar, a partir da lista de peças obtida, a peça a ser recolhida e premir “Pick Select”. Durante esta operação o estado do controlador passa a BUSY, não podendo ser enviadas novas coordenadas até a operação terminar. As coordenadas da peça retirada são removidas e a lista actualizada. O operador pode seleccionar outra peça, repetindo-se o processo. No modo “Pick All Auto” o processo efectua-se totalmente em modo automático e num ciclo contínuo. O ciclo realiza-se de acordo com o diagrama apresentado na figura 4. Este modo de operação fica inactivo caso não se verifiquem as condições do controlador: modo – AUTO; motores – ON, programa – RUN; emergências – OFF, estado – FREE. Neste modo, todo o processo de controlo e comando dos diversos dispositivos, é feito em ciclo contínuo e automático. 5. SERVIDOR DO ROBÔ No controlador do robô existe uma aplicação servidora desenvolvida em RAPID (linguagem de programação da ABB), a qual corre como tarefa independente: o controlador da ABB é multitarefa e permite definir tarefas e ajustar as suas prioridades. Esse servidor disponibiliza os serviços necessários robótica [5 ] Foram definidas duas posições fixas para o robô: “camera10” e “place_box”. A primeira situa-se numa posição definida como a origem do tapete. As posições de aproximação ao tapete e às peças são definidas após uma transformação (translação) da posição “camera10”. Na determinação da posição das peças são utilizadas as coordenadas enviadas pela aplicação cliente e que são obtidas a partir da WebCam. 5.1. Interface através de PDA Figura 4 . Diagrama do processo “Pick All Auto” que permitem controlar o estado do controlador, dos seus programas e das variáveis associadas [1][8]. Como o bloco de I/O digital do controlador do robô se encontra ligado ao bloco I/O digital do PLC, os serviços de comando que implicam IO (tais como, motores (ON/OFF), programa (RUN/STOP) são efectuados via PLC. As operações de monitorização do controlador também são efectuadas via PLC: motores (ON/OFF), programa (RUN/STOP), modo de operação (AUTO/MANUAL), emergências (ON/OFF), e estado de execução de tarefas (BUSY/FREE). São assim utilizadas as entradas e saídas digitais do controlador para efectuar operações de controlo e monitorização do robô. Neste trabalho, o manipulador efectua tarefas simples de pegar peças de um tapete e largar posteriormente numa caixa. São utilizadas ventosas pneumáticas para agarrar as peças. Através da actuação de saídas digitais (DO08 e DO07) é gerado vácuo na ventosa (pegar) e removido com sopro (largar), respectivamente. A aplicação cliente comanda o serviço de pegar e largar peças através do socket aberto, usando uma mensagem com a seguinte sintaxe: <command_str 500_x_y>. Neste comando “x” e “y” são Utilizando as mesmas rotinas da aplicação desenvolvida para PC construiu-se uma aplicação para PDA usando o Visual C# .NET 2005. Como os recursos de processamento e comunicação deste equipamento são mais limitados, não se implementou o timer de monitorização. Esta aplicação revelou-se bastante útil nas operações de calibração e ajuste de posições. Utilizando este dispositivo é possível simular todo o processo produtivo. Dada a sua portabilidade e facilidade de utilização, este equipamento pode ser utilizado por um operador em operações de manutenção e setup. Na figura 6 apresenta-se o aspecto gráfico da aplicação desenvolvida para PDA. Figura 6 . Interface gráfico da aplicação desenvolvida para PDA 6. SERVIDOR ASSOCIADO AO PLC A aplicação servidora associada ao PLC disponibiliza serviços de controlo e monitorização do próprio PLC. Esta aplicação corre num PC, podendo receber pedidos de serviços de uma aplicação cliente, devidamente identificada, a correr noutro PC da rede. Utilizou-se um PLC Siemens de baixa gama (S7200 com um CPU 215). Este PLC monitoriza e controla o tapete transportador. Figura 5 . Aplicação a correr no controlador do robô [6 ] robótica O PLC está ligado a um PC através do canal série (canal RS232 do PC e RS485 do PLC). Através deste canal de comunicação, que também é utilizado para programar o PLC, é possível efectuar no PC a operação de comando e monitorização. A filosofia utilizada é simples: o programa do PLC funciona como servidor e responde a comandos remotos. As mensagens enviadas para o PLC são formatadas tendo um determinado caracter (byte) de início e de fim de mensagem, podendo ir até 100 bytes de extensão. O primeiro byte identifica o comando que se pretende executar. Assim, as equações de estado devem conter uma comparação com o primeiro byte da mensagem. Todas as mensagens enviadas têm uma resposta por parte do PLC, que é a própria mensagem enviada, implementando assim um mecanismo ACKNACK (Acknowledge – Not acknowledge), o qual permite uma verificação DESENVOLVIMENTO DE UMA APLICAÇÃO DE CONTROLO E MONITORIZAÇÃO DE CÉLULAS ROBOTIZADAS INDUSTRIAIS UTILIZANDO WEBCAM, PC, PLC E SOCKETS TCP/IP as coordenadas da peça no tapete. Na figura 5 apresenta-se a estrutura básica do programa, em RAPID, bem como a rotina de pegar e largar peças. O cliente envia esta mensagem de comando por cada peça que se pretende recolher. Durante a operação de recolha das peças o estado do robô passa BUSY, só podendo ser enviado novo comando quando o estado passar novamente a FREE. ARTIGO TÉCNICO simples do comando recebido antes de ser executado. A monitorização é feita através do envio de uma mensagem com um byte inicial especial (253). Quando o PLC recebe esta mensagem, responde com o estado dos blocos I/O (entradas BI0.0 e BI1.0, saídas BQ0.0 e BQ1.0) bem como com um byte que identifica o modo de operação (Auto, Manual, Stop). A resposta para o PC contém o mesmo código inicial, permitindo assim que a rotina de interrupção do porto série identifique as respostas de monitorização através do primeiro byte. Recorrendo a um timer é efectuada a monitorização de estado a uma frequência de 2kHz [2][3][14]. Esta aplicação inclui um servidor assíncrono baseado em sockets TCP/IP, permitindo que a aplicação cliente solicite serviços remotamente. Estes serviços devem ser solicitados através do envio de mensagens pré-formatadas. Os serviços de controlo permitem ao cliente a alternância entre três modos de operação do tapete Auto, Manual e Stop. No modo Auto, sempre que uma peça interrompe o feixe do sensor 1, o tapete inicia o seu movimento até que a peça, ou conjuntos de peças, interceptem o sensor 2. Nessa situação, o tapete só retoma o movimento quando solicitado pelo cliente ou sempre que houver interrupção do feixe do sensor 1. Este movimento só não se realiza se existirem peças a interromper o feixe dos sensores 2 e 3. Neste modo, sempre que uma peça interrompa o feixe do sensor 2 o tapete pára, para que as peças sejam identificadas, localizadas e recolhidas pelo robô. No modo Manual o cliente pode solicitar o movimento de avanço e a paragem do tapete. Através do PLC é também possível efectuar operações de comando do robô. É possível controlar o estado dos motores (RUN/STOP) e do programa (RUN/STOP). Através da monitorização do estado das entradas do PLC é possível identificar o estado dos sensores de barreira do tapete. São também disponibilizadas algumas operações de monitorização do robô, através do estado das entradas do PLC: motores (ON/OFF), programa (RUN/STOP), operação (IDLE/FREE), modo de operação (AUTO/MANUAL), emergência (ON/OFF). Também é disponibilizada a verificação do estado modo de operação do tapete (MANUAL, AUTO ou STOP). Como, as saídas do PLC também são monitorizadas é possível verificar os comandos. Sempre que é enviada uma mensagem de comando o servidor responde com uma mensagem de resposta que é igual à mensagem enviada pelo cliente. No caso das operações de monitorização, a resposta é o estado do I/O do PLC. Na tabela seguinte são apresentados os principais serviços disponibilizados. Figura 7 . Interface gráfico do servidor associado ao PLC 7. SERVIDOR ASSOCIADO À WEBCAM A aplicação servidora associada à WebCam responsável pela aquisição e processamento de imagem, foi desenvolvida em LabView (da National Instruments) utilizando a “toolbox” IMAQ Vision para aquisição e processamento de imagem [10][11]. A função principal do servidor é receber pedidos remotos para fazer a aquisição de uma imagem do tapete, figura 8, através de uma Webcam USB, processar a imagem, e devolver as respectivas coordenadas x e y do centro de massa de cada uma das peças encontradas na imagem. O servidor permite também fazer a calibração da equivalência entre milímetros e pixeis. Esta relação pode variar se a altura da câmara em relação ao tapete for alterada. Outra função presente no servidor é a possibilidade de obter a correspondência entre as coordenadas x e y da imagem em relação à posição do robô. Este pormenor é importante tendo em conta que as coordenadas enviadas pelo servidor são obtidas relativamente ao canto inferior esquerdo da imagem (origem do tapete – figura 8). Figura 8 . Imagem adquirida pela Webcam e o seu processamento no “Image Server” Todos os pedidos feitos ao servidor associado à WebCam são realizadas através de sockets TCP/IP para um determinado porto (neste caso o porto 2005) e estão representados na tabela seguinte: Tabela 1 . Principais comandos disponibilizados pelo servidor associado ao PLC O servidor associado ao PLC responde com as seguintes mensagens de erro: <ERROR: Serial Port In Not Open> quando a porta série ainda não esta aberta; <ERROR: Monitor Not Alowed> quando o canal de comunicação série já esta aberto mas não é possível efectuar operações de monitorização (só comando); <No Option> quando é enviado um comando errado. Tabela 2 . Comandos disponibilizados pelo servidor da câmara robótica [7 ] Após a binarização da imagem, todos os objectos encontrados que estejam localizados nos limites exteriores da imagem são eliminados. Deste modo evita-se que peças que não estejam totalmente visíveis na imagem sejam utilizadas no cálculo das coordenadas x e y do respectivo centro de massa. Como todos objectos utilizados nesta aplicação são maciços, qualquer “buraco” que apareça nas peças durante o processo de binarização (devido a efeitos de luz e sombras) são preenchidos. O passo seguinte ao cálculo das coordenadas x e y do centro de massa e da área de cada uma das peças presentes, consiste em verificar se essa área corresponde ao esperado para as peças usadas. O objectivo é evitar que peças sobrepostas ou objectos estranhos possam provocar acidentes ou danos nos equipamentos. A resposta do servidor associado à WebCam é formada pelo número de peças identificadas na imagem e as respectivas coordenadas. A resposta para a imagem da figura 8 é a seguinte: 8. CONCLUSÃO Neste trabalho desenvolveu-se um sistema distribuído baseada numa arquitectura de programação do tipo cliente-servidor, com o objectivo de identificar e demonstrar a utilização das tecnologias e procedimentos que podem ser usados em tarefas de controlo e monitorização de sistemas industriais. As comunicações entre os diversos programas a correr em diferentes pontos da rede é assegurada por rede informática baseada no protocolo TCP/IP. Este tipo de rede de comunicações é cada vez mais usado em ambiente industrial. Na verdade, a sua utilização associada a equipamentos industriais computorizados e programáveis facilita a integração dos dispositivos e serviços necessários para construir sistemas industriais flexíveis e ágeis. Assim, foi possível demonstrar que é possível utilizar equipamentos industriais baratos e comuns (PLC S7200 e WebCam) para tarefas exigentes, tirando o máximo partido das capacidades que esses equipamentos disponibilizam. A plataforma construída permitiu ainda introduzir o PDA e o comando por voz [6], como interfaces com utilizador que podem ser muito úteis em tarefas de teste e calibração de sistemas industriais. A utilização deste tipo de interfaces pode contribuir de forma decisiva para reduzir os custos associados às longas e penosas operações de ajuste do setup de produção. REFERÊNCIAS [1] Pires, JN, Ferreira, P., Godinho, T., Loureiro, A., “Desenvolvimento de um Sistema de Controlo Paramétrico de Robô de Soldadura”, Actas da 6ª Conferência 5_#232.60_129.50_#168.41_148.90_#352.37_180.78_ #177.96_198.95_#263.29_200.34_# Ibero-Americana de Engenharia Mecânica, 14-18 de Outubro de 2003, Coimbra, Portugal [2] Pires, JN, “Industrial Robots Programming - Building Applications for the Factories onde “5” representa o número de peças e “232.60_129.50” as coordenadas x e y para a primeira peça. No caso de não existir nenhuma peça na imagem a resposta enviada pelo servidor é 0_#no objects. of the Future”, Springer, 2006. [3] Pires, JN, “Automação Industrial”, 2ª edição, Edições Técnicas e Profissionais, LIDEL [4] Pires, JN, Monteiro, P, Schölzke, V, “Using Robot Manipulators on High Efficient Wrapping Machines for Paper Industry”, ISR’2001, Seoul, Korea, April 2001 º [5] Pires, JN, Sá da Costa, JMG, “Object-Oriented and Distributed Approach for Programming Robotic Manufacturing Cells”, IFAC Journal Robotics and Computer Integrated Manufacturing, Volume 16, Number 1, pp. 29-42, March 2000 [6] Pires, J.N. “Robot-by-voice: Experiments on Commanding an Industrial Robot using the Human Voice” Industrial Robot, an International Journal, Volume 32, Number 6, Emerald Publishing, 2005. [7] ABB IRC5 Documentation, “ABB IRC5 Documentation”, ABB Flexible Automation, Merrit, 2005 [8] ABB IRC5 Documentation, “Operator’s manual, IRC5 with FlexPendant”, ABB Flexible Automation 2004 [9] Fourouzan, B. A, “TCP/IP Protocol Suite”, Third edition, McGraw-Hill, 2005 [10] National Instruments, “LabView”, http://www.ni.com/labview/ [11] National Intruments, “IMAC Vision”, http://www.ni.com/labview/ [12] Microsoft, “Msdn”, http://www.msdn.com [13] Pires, JN, Ferreira, P., Godinho, T., Correia, R., “Aplicação para o ensino da variação de velocidade de motores de indução”, Actas da 6ª Conferência IberoAmericana de Engenharia Mecânica, 14-18 de Outubro de 2003, Coimbra, Portugal. [14] Siemens, PLC S7-200 System Manual, 2000. Figura 9 . Robô a recolher peças do tapete Nota: Os leitores interessados podem ver este sistema em funcionamento nos vídeos obtidos no seguinte sitio na internet: http://robotics.dem.uc.pt/norberto/nova/videos Ver vídeos 0, 8, 11, 15 e 19 [8 ] robótica DESENVOLVIMENTO DE UMA APLICAÇÃO DE CONTROLO E MONITORIZAÇÃO DE CÉLULAS ROBOTIZADAS INDUSTRIAIS UTILIZANDO WEBCAM, PC, PLC E SOCKETS TCP/IP Quando o servidor recebe através do socket a mensagem <camera get objects>, procede à aquisição de uma imagem da câmara e executa a sua binarização. Esta operação consiste em separar as regiões de uma imagem quando ela apresenta duas classes (o fundo e o objecto). Ou seja, transformase uma imagem com diversos tons de cor numa imagem com apenas dois tons. Este é o processo normalmente utilizado para converter uma imagem em tons de cinza numa imagem a preto e branco. Consequentemente, esta operação permite facilmente identificar os objectos e separá-los do fundo da imagem.