O Padrão de Comunicação OPC e Suas Características Ana Clara Ratunde, Matheus Costa Santos e Yago Oliveira Cruz Resumo – As diferenças que existem entre os padrões dos protocolos de comunicação sempre impediram a interoperabilidade de sistemas de supervisão, automação e controle, entre equipamentos de diferentes fabricantes. O padrão OPC surgiu para estabelecer regras para que sejam desenvolvidos sistemas com interfaces padrões que possibilitem uma conexão entre plataformas que utilizam diferentes protocolos. Neste trabalho falaremos sobre as características e especificações do padrão OPC. I. INTRODUÇÃO Alguns fornecedores da indústria, desenvolvedores de software e consumidores finais, em 1995, se reuniram com o objetivo de desenvolver um padrão de comunicação baseado na tecnologia OLE/DCOM, na tentativa de minimizar os problemas relacionados à inconsistência dos “drivers” de equipamentos industriais de diferentes fabricantes, inicialmente dentro do sistema operacional Windows. Foram convidados, para que isso ocorresse, membros da Microsoft para que dessem suporte técnico a esse desenvolvimento. Surgiu, então, a OPC Foundation, um grupo sem fins lucrativos que é responsável pelo desenvolvimento e manutenção das normas desse padrão. O OPC é um padrão de comunicação aberto, que tem por principal objetivo permitir a interoperabilidade vertical entre sistemas dentro de uma organização. OPC é a sigla para “OLE for Process Control”, onde OLE significa “Object Linking and Embedding”. Quando foi lançado pela primeira vez em 1996, o seu objetivo era transformar protocolos específicos de CLP (como Modbus, Profibus, etc.) em uma interface padronizada permitindo que os sistemas HM/SCADA fizessem a interface "homem-máquina" que iria converter pedidos de leitura e de gravação em solicitações específicas do dispositivo. Como resultado, uma indústria inteira de produtos surgiu, permitindo aos usuários finais implementar sistemas usando os melhores produtos interagindo perfeitamente via OPC. Esse padrão nada mais é que um conjunto comum de interfaces, métodos e propriedades de comunicação, agregados dentro de uma especificação padronizada e aberta para acesso público. Teoricamente qualquer pessoa com conhecimentos de programação pode desenvolver seus aplicativos OPC, basta acessar as especificações contidas no site da OPC Foundation e desenvolver uma interface compatível. Ao basear o OPC na tecnologia OLE, nativa do Windows, este mesmo benefício chegou à área industrial. Com o surgimento desse padrão os desenvolvedores de sistemas de automação puderam escrever servidores OPC para seus equipamentos, e os demais softwares, como supervisórios, passaram a ser clientes OPC. Desapareceu, então, a necessidade de se desenvolver inúmeros drivers de comunicação para integrar os sistemas tradicionais, ou ainda a necessidade de se usar os equipamentos de um único fabricante, como mostra a Figura 1. Os equipamentos dotados de comunicação via OPC disponibilizam dados internos em uma interface simplificada, onde aplicações externas podem interagir com a leitura e/ou escrita de valores em parâmetros, registradores de programas, resultados, etc. Figura 1 – Comunicação entre equipamentos de um único fabricante Estas especificações que, agora são conhecidas como sendo do “OPC Clássico”, têm desfrutado de uma grande adoção em vários setores, incluindo automação predial, petróleo, gás, energia renovável, serviços públicos, entre outros. Com a introdução de arquiteturas orientadas a serviços em sistemas de manufatura, vieram novos desafios em relação à segurança e modelagem de dados. A OPC Foundation desenvolveu, então, o “OPC UA (Arquitetura Unificada)” para atender essas necessidades com uma tecnologia rica em recursos em uma plataforma de arquitetura aberta, e que é compatível com o “OPC Clássico”. Dois fatores importantes que contribuíram para que essa atualização fosse criada foi a necessidade de manter a competitividade, já que os usuários OPC precisavam implementar o mesmo em sistemas que não fossem da Microsoft, e o fato de que outras organizações colaboradoras precisavam de uma maneira confiável e eficiente para o transporte de alto nível de dados estruturados. A intermediação da comunicação entre aplicação cliente e equipamento é realizada por um servidor OPC (OPC Server). Este servidor possui os “drivers” referentes aos equipamentos suportados, e de acordo com o modelo configurado, disponibiliza a região de dados específica. Em uma comunicação com um CLP, por exemplo, é possível ler ou escrever valores de memórias internas, utilizadas no programa do usuário, ou até mesmo ler estado de entradas e saídas. Em câmeras industriais é possível obter o resultado da aplicação de análise de imagens, ou mesmo carregar as imagens. O padrão define distintas formas para se acessar dados do processo, alarmes e dados históricos. O “OPC DA” define o acesso de dados, incluindo valores, tempo e informação de qualidade. O “OPC AE” define o acesso de informações à alarmes e eventos, bem como o tipo de evento, os estados das variáveis e o gerenciamento de estado. O “OPC HDA” define o acesso aos dados históricos hora datada, bem como seus métodos de consulta e análises. II. LINHA DO TEMPO Em 1990, os sistemas operacionais da Microsoft dominaram a paisagem de automação industrial. Fornecedores de automação começaram a usar COM e DCOM em suas ofertas de produtos. Em 1995, os fornecedores de automação FisherRosemount, Intellution, Opto 22 e Rockwell Software formaram uma “força-tarefa” para desenvolver um padrão de acesso a dados com base em COM e DCOM, e deram o nome de OPC. Em 1996, a “força-tarefa” lança a versão 1.0 de uma especificação OPC simplificado para acesso a dados (DA) em Agosto. Já no primeiro ano, vários outros fornecedores de software e hardware começaram a usar OPC como seu mecanismo de interoperabilidade. Logo fica claro que uma organização mais formal de conformidade, interoperabilidade, certificação e validação é necessária. A Fundação OPC é criada no Chicago ISA Show, em Setembro. Em 1998, a OPC Foundation começa a conversão de sua especificação existente para serviços web. Em 1999, a especificação “OPC Alarmes e Eventos (OPC AE)” é liberada. Em 2001, o lote e a especificação de segurança “OPC Historical Data Access (OPC HDA)”, são liberados. Em 2003, as especificações “Dados OPC Complex”, dados do Exchange e “XML-DA” especificações são lançadas e a “Arquitetura unificada (OPC UA)”, composta por 13 partes separadas, é criada pela especificação original. O OPC original agora é referido como "Classic OPC" ou OPC Clássico. Em 2004, a especificação de Comandos OPC é liberada. Em 2006, a versão 1.0 do “OPC UA “se torna disponível. Em 2007, “Programa de Certificação OPC” e “Teste Labs” são introduzidos. A automação começar a oferecer os primeiros produtos baseados em “OPC UA”. Em 2009, a versão 1.01 do “OPC UA” torna-se disponível. Lançam “OPC UA” para dispositivos Analyzer (DDA) como uma especificação adjunta, impulsionada pelas indústrias de fabricação farmacêutica e química. Em 2010, os primeiros dispositivos “OPC UA” embutidos são lançados. “OPC UA” para IEC 61131 é liberado como uma especificação. Em 2013, “OPC UA 1,02” é lançado juntamente com “OPC UA” para o ISA-95. A Fundação OPC dá suporte para mais de 480 membros em toda a China, Europa, Japão e América do Norte. III. FUNCIONAMENTO A tecnologia OPC faz parte do “.NET Framework”, da Microsoft, e baseia-se na especificação COM (Component Object Model), a mesma tecnologia usada na plataforma ActiveX, que provêm conectividade e interoperabilidade entre diferentes aplicações de forma “plug-and-play”. Estes componentes determinam a infraestrutura das aplicações compartilhadas sob sistemas operacionais da Microsoft, como o Windows, abstraindo as funcionalidades dos sistemas de software e expondo-as de forma interativa, através de propriedades, métodos e eventos dos objetos da aplicação. O servidor OPC é divido em três partes: server (contém todos os objetos do grupo), group (é a camada de organização dos itens OPC) e item (objeto que carrega a informação desejada). O “OPC Item” representa uma variável específica do sistema, além do valor da variável, possui informações sobre a qualidade da informação. O “OPC Group” fica em uma camada superior, é onde os itens são organizados e onde ocorre o controle de atualização dos valores. Na camada mais externa fica o “OPC Server”, onde são executadas as interfaces entre as aplicações e onde ocorre o controle de eventos e alarmes. Os computadores que possuem os drives dos equipamentos de campo, que constituirão os “servidores OPC”, reconhecem os dados provenientes da rede de comunicação dos equipamentos da planta industrial e os traduzem para o padrão OPC. Os servidores são softwares que fornecem dados no padrão OPC e o computador é o hardware convergente e que disponibiliza os dados. As aplicações que recebem esses dados são os “clientes OPC” e podem estar em quaisquer computadores conectados à rede do servidor OPC. O funcionamento do OPC é baseado na tradicional arquitetura cliente-servidor onde um ou mais servidores fornecem dados para uma ou mais aplicações cliente, conforme mostra Figura 2. Basicamente, uma aplicação cliente, como um software de supervisão, solicita um dado ao servidor OPC que lhe atende e retorna com o dado solicitado. Um diferencial do OPC é que uma aplicação cliente pode solicitar dados a um ou mais servidores OPC, e vice-versa. Fica claro, portanto, que o OPC possibilita uma variedade enorme de comunicações, basta que os aplicativos sejam compatíveis com o mesmo. É importante ressaltar que o OPC não elimina o protocolo proprietário nativo do CLP ou equipamento de campo. O que acontece é que o servidor OPC “traduz” este protocolo proprietário para o padrão OPC. Portanto é necessário o desenvolvimento de um servidor OPC específico para cada um dos diferentes protocolos de comunicação existentes. A interconexão ocorre em função dos respectivos dados dos equipamentos de campo serem reconhecidos através dos drives instalados nos computadores, drive esse que descreve os componentes do software desenvolvidos para um produto específico e que são implementados pelo fabricante de um produto a fim de permitir que seu software se comunique com determinado produto por meio de uma comunicação de rede. V. ASPECTOS PRÁTICOS PARA UTILIZAÇÃO Para a especificação e utilização do padrão OPC, o usuário precisa estar ciente de alguns pontos chaves para o perfeito entendimento de como se beneficiar do uso desse tipo de comunicação. Para isso, o estudo das especificações torna-se um processo difícil, uma vez que as mesmas são direcionadas para desenvolvedores e programadores, sendo necessário o conhecimento prévio de linguagens e ambientes de desenvolvimento. Para simplificar o entendimento do padrão OPC, estes pontos são apresentados a seguir. Figura 2 – Arquitetura cliente-servidor do OPC IV. INTERCONEXÃO A interconexão de sistemas e equipamentos por meio da integração de drives de comunicação é, muitas vezes, de difícil implementação e implica em alto custo de desenvolvimento e instalação, lembrando, é claro, da dificuldade por parte dos profissionais de realizar essa integração entre os protocolos e sendo essencial para as industrias o seu perfeito funcionamento, torna o trabalho ainda mais elaborado e complicado para instalações, a Figura 3 mostra um pouco disto. Figura 3 – Interconexão da comunicação OPC O padrão OPC surgiu para simplificar a maneira como os dados dos equipamentos de chão de fábrica são disponibilizados às suas aplicações sem que estas precisem do drive e do protocolo utilizado no processo de automação. O OPC, atualmente, vem sendo usado até mesmo no fornecimento de dados para os sistemas de controle situados nos escritórios, que tem por função disponibilizar informações para a administração sobre os processos de produção de uma indústria. A. Cliente ou Servidor OPC? Os produtos para monitoração de dados, como IHMs, sistemas supervisórios e etc, normalmente são clientes OPC. Por outro lado, os produtos que fazem a comunicação direta com os dispositivos de campo utilizando protocolos proprietários são servidores OPC. Cada produto pode incorporar as duas funcionalidades, sendo o mais comum em aplicações normalmente onde o cliente possa ser servidor, e não o contrário. B. Número ideal de clientes e servidores O número de servidores necessários para uma determinada aplicação irá depender do produto a ser utilizado. Os fabricantes de dispositivos de campo normalmente fornecem um servidor OPC capaz de comunicar com todos os protocolos dos seus produtos de linha. Este servidor é um software para o ambiente Windows que é executado em um microcomputador, normalmente PC. Ou seja, um servidor OPC da Rockwell, o RSLinx por exemplo, permite que diversos drivers de comunicação sejam configurados para as diversas redes (ControlNet, DeviceNet, Ethernet, DH+, etc.). Neste caso, o RSLinx funciona como um único servidor OPC, capaz de comunicar com diversos clientes OPC sendo executados na mesma máquina ou em máquinas remotas. Existem servidores OPC de terceiros que permitem que sejam configurados drivers de comunicação para diversas redes e protocolos de diferentes fabricantes, neste caso, um único produto poderá servir dados de diferentes fabricantes. Cada cliente OPC pode conectar-se a diferentes servidores, os quais podem estar processando na mesma máquina ou remotamente em máquinas diferentes, portanto, qualquer produto que funcione como cliente OPC poderá se comunicar com quaisquer servidores OPC de quaisquer fabricantes. C. Formato de dados Pela especificação do padrão, todo servidor de dados deve enviar o dado OPC no seguinte formato: todos os tipos de dados VARIANT definidos pela interface DCOM são suportados; a informação “Time Stamp” é fornecida pelo servidor através da leitura do time stamp dos dispositivos de campo ou por geração interna, é utilizada a estrutura padrão do Windows para o UTC (Universal Time Coordinated); são reservados 2 bytes para codificação do estado do dado fornecido pelo servidor (por enquanto, apenas o uso do byte menos significativo foi definido; dois bits definem a qualidade do dado que pode ser: ßGood – dado válido, ßBad – no caso de perda do link de comunicação com o dispositivo de campo, ßUncertain – no caso de existir o link de comunicação mas o dispositivo de campo estiver fora de operação; quatro bits fornecem um detalhamento do estado apresentado e os últimos dois bits podem conter dados de diagnóstico no caso de falha de um sensor, por exemplo). D. Configuração dos dados no “Cliente” Os produtos de mercado, normalmente não permitem muita flexibilidade para a configuração dos dados solicitados pelo cliente. Isto se deve basicamente à preservação da cultura anterior para os drivers de comunicação específicos. Entretanto, isto pode ser uma armadilha para os usuários. Considerando o caso mais comum que consiste nos servidores de dados OPC (OPC Data Access), os clientes podem definir basicamente as seguintes configurações: 1) Criação de grupos e itens OPC Basicamente, todos os dados OPC são chamados de itens. Cada item pode ser de um tipo diferente de dado compatível com a especificação OPC. Os diversos itens são organizados em grupos OPC, os quais definem as principais características de leitura dos itens (Taxa de Atualização, Estado Ativo/Inativo, Banda Morta, Leitura Síncrona/Assíncrona). 2) Leitura Síncrona ou Assíncrona Para um determinado grupo OPC pode ser definido se a leitura dos dados é feita de forma síncrona, a qual depende de uma confirmação de execução antes de uma nova leitura, ou assíncrona, a qual não depende da confirmação. Normalmente é utilizada a leitura assíncrona, a qual garante um melhor desempenho. 3) Leitura de dados direto do dispositivo A partir da versão 2.0 da especificação para o servidor de dados, é possível fazer a seleção no cliente OPC para leitura dos dados da memória cache do servidor ou diretamente do dispositivo de campo. 4) Estado Ativo/Inativo Cada item ou grupo pode ter o seu estado alterado pelo cliente para Ativo, habilitando a comunicação do mesmo, ou Inativo. 5)Leitura Cíclica ou por Mudança de Estado O cliente OPC pode definir se os dados do servidor serão lidos de forma cíclica ou por mudança (transição) de estado. Na leitura cíclica, o cliente faz a requisição de leitura regularmente, independentemente se os dados sofreram alteração de valor ou não. No caso de leitura por mudança de estado, o servidor fica responsável por enviar para os clientes os itens que sofrerem alteração de seu estado (Qualidade do dado) ou quando os valores dos itens de um determinado grupo ultrapassarem o valor da banda morta. 6) Banda morta É utilizada para definir os valores limites de transição para os itens de um determinado grupo, para os quais o servidor fará o envio para os clientes quando a alteração dos valores dos itens estiver fora da banda especificada. E. Escrita de dados A escrita de dados OPC funciona de forma independente da leitura. Assim como na leitura, a escrita pode ser síncrona ou assíncrona. Entretanto, os comandos de escrita são executados imediatamente pelo servidor, sendo enviados diretamente para os dispositivos de campo. A partir da versão 3.0 do servidor, foi possível fazer a escrita de dados na memória cache do servidor e depois a transferência cíclica dos dados para os dispositivos de campo. Este recurso é muito útil para os dispositivos que dependem de comandos igualmente espaçados no tempo, tal como os sistemas de controle de movimento. F. Comunicação de Blocos de Dados O padrão OPC permite a comunicação de blocos de dados (vetores) entre o servidor e os clientes. Isto representa uma grande otimização, pois as informações de “time stamp” e estado do dado são tratados e fornecidos apenas uma vez para um conjunto de dados, reduzindo assim o “overhead” da comunicação. Neste caso, cada item é configurado como um bloco de dados. G. Redundância com OPC As especificações do padrão OPC não fazem menção à utilização de servidores redundantes. Entretanto, cada cliente OPC pode implementar facilmente um mecanismo para conexão simultânea em mais de um servidor, verificação do estado do servidor e ativação/desativação dos grupos para o servidor que estiver funcionando. Esta solução é encontrada apenas em alguns produtos, não sendo regra geral a disponibilização deste recurso para a maioria dos produtos de mercado. H. Desempenho da comunicação OPC Em linhas gerais, o desempenho da comunicação OPC se aproxima do desempenho apresentado por sistemas que utilizam drivers de comunicação específicos e otimizados. Normalmente, os drivers específicos possuem um ótimo desempenho após serem devidamente depurados e otimizados, o que via de regra não acontece em muitos casos. Como um servidor OPC nada mais é do que uma camada de software a mais para implementar as interfaces padrões e os mecanismos de comunicação com o cliente, é de se esperar que o desempenho do mesmo só seja afetado em relação a comunicação com o cliente e não com o dispositivo de campo. No caso da comunicação com o dispositivo de campo, cada fornecedor pode implementar o driver e o protocolo que melhor se ajustem às necessidades do dispositivo e da rede de comunicação. Desta forma, o desempenho do servidor OPC está mais relacionado à capacidade dos recursos de hardware da máquina que executa a aplicação do servidor do que propriamente do driver específico. Como os recursos de hardware estão cada vez mais poderosos em relação à capacidade de processamento, isto não tem se mostrado como um problema real. Entretanto, o que se tem verificado na prática é que muitos clientes e servidores OPC não implementam a comunicação de blocos de dados, fazendo a leitura de itens separadamente, o que ocasiona um grande overhead devido ao tratamento separado de time stamp e estado do dado para cada item OPC. Outro ponto importante que muitos clientes OPC não implementam, consiste no agrupamento de dados que precisam ser lidos sob demanda, tais como animações de telas sinópticas, janelas de operação de equipamentos, relatórios, etc. Os dados necessários para estes elementos (objetos) de monitoração, normalmente podem ser lidos sob demanda, de forma que somente quando o objeto estiver selecionado, será ativado o grupo OPC no servidor para leitura dos dados. Quando o objeto não estiver selecionado, o grupo OPC ficará desativado, fazendo com que os dados não sejam lidos e com isso, melhora-se o desempenho da comunicação. I. Segurança para acesso ao sistema Para a implementação do controle de acesso ao servidor OPC podem ser utilizados dois métodos. O método normalmente usado consiste nos mecanismos proporcionados pelo próprio DCOM, os quais são configurados no Windows NT executando-se o comando DCOMCNFG. Outra forma menos usual consiste em se utilizar mecanismos implementados pelo cliente e servidor conforme a especificação do padrão OPC. O controle de acesso é fundamental para o caso de acesso remoto e para a comunicação via Internet prevista com a especificação do OPC com XML. VI. VANTAGENS E DESVANTAGENS As principais vantagens do emprego de uma comunicação OPC são: a redução do tempo de desenvolvimento; implementar uma comunicação confiável entre diferentes equipamentos; a topologia é simplificada e o controle do fluxo de informações fica sob responsabilidade apenas dos servidores OPC. A principal desvantagem vem quando pensamos que o padrão OPC está passando por constante avanço ao longo dos anos, preenchendo cada vez mais espaço nas indústrias e, no entanto, algumas de suas características principais que facilitaram seu surgimento e evolução ironicamente hoje também são fatores limitantes ao seu pleno funcionamento, fazendo com que alguns desenvolvedores acabem por criar soluções que complementam o OPC, possibilitando ultrapassar algumas barreiras inerentes à sua tecnologia. Isto se dá devido ao acelerado processo de evolução tecnologica em que vivemos, onde precisaríamos de equipes grandiosas para atualizar quase que constantemente as funções e topologias do sistema OPC. REFERÊNCIAS [1] P. P. Adriano. “Padronização da comunicação através da tecnologia OPC”. [Online]. Disponível em: http://www.isarj.org.br/pdf/artigos/Padronizacao-daComunicacao-atraves-da-Tecnologia-OPC.pdf [2] F.R. Denise, A. Reinaldo. “Utilização do drive OPC na integração de sistemas de automação industrial”. Apresentado no 3º Seminário Nacional de Sistemas Industriais e Automação. [Online]. Disponível em: http://www.cck.com.br/artigos/palestras/drive_opc.pdf [3] O. F. Marcos. “Comunicação OPC – Uma abordagem prática”. [Online]. Disponível em: http://www.cpdee.ufmg.br/~seixas/PaginaSDA/Download/ DownloadFiles/OPCMarcosFonseca.PDF [4] Site da OPC Foundation: https://opcfoundation.org/about/what-is-opc/