UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA
JOSÉ HENRIQUE DOMETERCO
UMA ARQUITETURA BASEADA EM AGENTES E INTERFACE WEB
PARA SISTEMAS DE AUTOMAÇÃO DE SUBESTAÇÕES DE
ENERGIA ELÉTRICA
MONOGRAFIA DE ESPECIALIZAÇÃO
ORIENTADORA: PROF.ª MSC. ANA CRISTINA B. KOCHEM VENDRAMIN
CURITIBA
DEZEMBRO 2006
i
JOSÉ HENRIQUE DOMETERCO
UMA ARQUITETURA BASEADA EM AGENTES E INTERFACE WEB
PARA SISTEMAS DE AUTOMAÇÃO DE SUBESTAÇÕES DE
ENERGIA ELÉTRICA
Monografia apresentada ao programa de Pós-Graduação em Informática da Universidade Tecnológica Federal do Paraná como requisito parcial para obtenção do título de Especialista em Informática com ênfase em Tecnologias Java.
Orientador: Prof. ª Msc. Ana Cristina B. Kochem Vendramin
CURITIBA
DEZEMBRO 2006
ii
Aos colegas da equipe de trabalho da COPEL.
iii
AGRADECIMENTOS
A minha geladeira, sempre útil nos intervalos deste trabalho.
iv
SUMÁRIO
LISTA DE FIGURAS .........................................................................................v LISTA DE SIGLAS ...........................................................................................vi RESUMO ........................................................................................................viii 1 INTRODUÇÃO.............................................................................................9 1.1 HIPÓTESES.............................................................................................10 1.2 OBJETIVO ...............................................................................................12 1.3 JUSTIFICATIVA .......................................................................................12 1.4 ESTRUTURA DO TRABALHO ................................................................13 2 ARQUITETURAS DISTRIBUÍDAS PARA AUTOMAÇÃO........................14 2.1 SISTEMAS MULTIAGENTES..................................................................14 2.2 ABORDAGENS DE ARQUITETURA PARA SISTEMAS DE
AUTOMAÇÃO..........................................................................................17 3 ANÁLISE DE TECNOLOGIAS PARA SISTEMAS DE AUTOMAÇÃO ....23 3.1 TECNOLOGIAS PARA SISTEMAS DISTRIBUÍDOS ..............................23 3.1.1 Sockets ..................................................................................................23 3.1.2 Java RMI ................................................................................................24 3.1.3 Web Services .........................................................................................24 3.1.4 Implementações de Plataformas de Agentes ........................................25 3.1.5 Comparativo de Desempenho das Tecnologias ....................................26 3.2 CAMADA DE APRESENTAÇÃO .............................................................29 3.2.1 Desafios Decorrentes da Utilização da Camada Web...........................32 3.2.2 SVG........................................................................................................33 3.2.3 AJAX ......................................................................................................34 3.3 AVALIAÇÃO DA MÁQUINA VIRTUAL JAVA...........................................35 3.4 INTEGRAÇÃO COM O SISTEMA LEGADO ...........................................37 4 A PLATAFORMA JADE............................................................................38 4.1 CONTAINER DE AGENTES JADE..........................................................38 4.2 O MODELO DE DESENVOLVIMENTO DO JADE ..................................39 4.3 COMUNICAÇÃO ENTRE AGENTES ......................................................40 4.4 FERRAMENTAS AUXILIARES................................................................41 4.5 TOLERÂNCIA A FALHAS........................................................................42 4.6 INTEGRAÇÕES.......................................................................................42 5 CENÁRIOS DE ARQUITETURA PARA AUTOMAÇÃO...........................44 5.1 O SISTEMA ATUAL .................................................................................44 5.2 MODELOS DISTRIBUÍDOS DE AUTOMAÇÃO DE SUBESTAÇÕES ....45 6 IMPLEMENTAÇÃO DO PROTÓTIPO PARA PROVA DE CONCEITO ...50 6.1 SIMULADOR DE SUBESTAÇÃO ............................................................50 6.2 AGENTE SUBESTAÇÃO.........................................................................52 6.3 AGENTE CLIENTE ..................................................................................53 6.4 CAMADA WEB.........................................................................................55 7 CONCLUSÕES E TRABALHOS FUTUROS ............................................58 7.1 TRABALHOS FUTUROS.........................................................................59 REFERÊNCIAS ...............................................................................................60
v
LISTA DE FIGURAS
FIGURA 1 – TESTES DE DESEMPENHO ENTRE AS TECNOLOGIAS RMI, WEB SERVICES, SOCKETS E AGENTES (JADE). .................................28
FIGURA 2 – CONTAINERS JADE E PLATAFORMAS [JADE06] ...................39
FIGURA 3 – MODELO DE QUATRO CAMADAS DE UM AMBIENTE DE AUTOMAÇÃO DE SUBESTAÇÕES. .........................................................45
FIGURA 4 – MODELO DE TRÊS CAMADAS DE UM AMBIENTE DE AUTOMAÇÃO DE SUBESTAÇÕES. .........................................................46
FIGURA 5 – DIAGRAMA DETALHADO DO MODELO DE TRÊS CAMADAS PROPOSTO, INCLUINDO O COV.............................................................47
FIGURA 6 – ESQUEMA ELÉTRICO DA SUBESTAÇÃO FICTÍCIA................51
FIGURA 7 – INTERAÇÃO ENTRE AGENTECLIENTE E AGENTESUBESTACAO. ...........................................................................55
FIGURA 8 - EXEMPLO DA INTERFACE DE MONITORAMENTO PROVIDA PELO SISTEMA SCADA............................................................................56
FIGURA 9 - RESULTADOS DA APRESENTAÇÃO DAS INFORMAÇÕES DA SUBESTAÇÃO FICTÍCIA...........................................................................57
vi
LISTA DE SIGLAS
ACL Agent Communication Language
AID Agent Identifier
AJAX Asynchronous JavaScript And XML
AMS Agent Management System
ANEEL Agência Nacional de Energia Elétrica
API Application Program Interface
CFP Call for Proposals
CIM Common Information Model
COD Centro de Operação de Distribuição
COE Centro de Operação de Transmissão
CORBA Commom Object Request Broker
COV Centro de Operação Virtual
DF Directory Facilitator
FIPA Foundation for Intelligent Physical Agents
GIF Graphics Interchange Format
GNU GNU´s Not Unix
HMI Human Machine Interface
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
IEC International Electrotechnical Commission
IEEE Institute of Electrical and Electronics Engineers
JADE Java Agent Development Framework
JEE Java Enterprise Edition
JMS Java Messaging Service
JMX Java Management Extentions
JNI Java Native Interface
vii
JPG Joint Photographic Experts Group
JSP Java Server Pages
JVM Java Virtual Machine
J2ME Java 2 Micro Edition
J2SE Java 2 Stardard Edition
LGPL GNU Lesser General Public Licence
MAS Multiagent System
MVC Model View Controller
NCU Network Computing Unit
RMI Remote Method Invocation
RTU Remote Terminal Unit
SCADA Supervisory Control and Data Aquisition
SVG Scalable Vectorial Graphics
TCP/IP Transmission Control Protocol/Internet Protocol
UML Unified Modeling Language
W3C World Wide Web Consortium
WSDL Web Service Description Language
XML Extensible Markup Language
viii
RESUMO
Arquitetura e tecnologia empregadas em sistemas computacionais distribuídos são
elementos determinantes de suas qualidades não-funcionais, como
interoperabilidade, reutilização e desempenho, as quais influenciam diretamente a
agilidade e otimização das funções empresariais automatizadas por esses sistemas.
Especificamente em automação de subestações de energia elétrica, funções de
supervisão e controle operacional estão dependentes, em muitos casos, de sistemas
SCADA (Supervisory Control and Data Acquisition) construídos no passado com
arquiteturas rígidas e pouco interoperáveis. Sistemas multiagentes têm sido foco de
estudo e utilização em aplicações SCADA, trazendo vantagens como modularidade,
flexibilidade e cooperação. Aliado a isso, o uso de tecnologias Internet com suporte
oferecido pela plataforma Java tem proporcionado um contexto adequado para
viabilizar a evolução de aplicações existentes, oferecendo facilidades de integração
e desenvolvimento. Este trabalho faz uma análise de tecnologias de computação
distribuída e, com base nos resultados obtidos e na revisão da literatura, propõe uma
arquitetura para automação de subestações, considerando o modelo hoje existente
em uma empresa de energia elétrica. O modelo é uma proposta para resolver
problemas de interoperabilidade entre centros de operação e a evolução tecnológica
do sistema SCADA atual. Um protótipo é construído com intuito de experimentação
das tecnologias que oferecem suporte à arquitetura proposta.
Palavras-chave: Tecnologia Java; plataforma de agentes JADE; sistemas
multiagentes; operação de subestações; SCADA.
9
1 INTRODUÇÃO
A evolução das redes de computadores tem permitido o desenvolvimento
de sistemas computacionais distribuídos e a flexibilização dos processos e execução
de tarefas em muitas áreas de aplicação, entre elas a de energia elétrica.
Entretanto, muitos sistemas possuem restrições para tempo de resposta,
segurança, garantia de entrega de mensagens e processamento em tempo real,
requisitos esses nem sempre alcançados pelas redes de computadores de uso
geral, evidenciando a necessidade de configurações especiais e linhas de
comunicação dedicadas.
Na área de tele-operação de subestações de energia elétrica é comum a
existência de sistemas que utilizam uma rede de comunicação dedicada,
principalmente por serem sistemas construídos há décadas com tecnologias
proprietárias que ao longo dos anos evoluíram sem considerar o uso de uma rede
corporativa. Nesse contexto, é comum também as concessionárias de energia
manterem centros de operação distribuídos geograficamente para gerenciar
subestações de uma determinada região sem, contudo, haver uma integração total
entre esses centros.
Os sistemas de automação de subestações estão numa categoria de
sistemas chamados de SCADA (Supervisory Control and Data Aquisition). Esses
sistemas possuem unidades remotas (RTU – Remote Terminal Unit) instaladas nas
subestações, responsáveis pela interação direta com sensores e atuadores
vinculados aos equipamentos elétricos [BOYER93]. As RTUs efetuam captura de
informações da planta elétrica e enviam-nas para as estações centrais, localizadas
no centro de operação, por meio de uma rede de comunicação que interliga cada
centro com as várias subestações por ele controladas. As estações centrais
acumulam os dados recebidos das RTUs e apresentam-nas aos terminais de
operação (HMI – Human Machine Interface). Os comandos emitidos pelos
10
operadores, bem como aqueles gerados automaticamente pelas estações centrais,
são repassados para as RTUs para a atuação real na planta sendo monitorada.
Alguns autores reivindicam que a utilização da internet neste contexto é
viável, alicerçada pelos avanços tecnológicos alcançados na área de comunicação e
redes de computadores [QIU+02]. Para que haja maior flexibilização e melhoria no
processo de automação de subestações é necessária uma infra-estrutura
computacional que leve em conta os requisitos supramencionados e que permita a
distribuição das tarefas entre os centros de operação de subestações de uma
concessionária de energia. Essa estrutura possibilitaria a cobertura de um centro de
controle por outro em determinadas situações, de forma a otimizar a capacidade de
operação do sistema elétrico.
1.1 HIPÓTESES
A adoção de uma nova infra-estrutura pode considerar a integração com
funcionalidades existentes no sistema legado, visando preservar os investimentos já
realizados pelas concessionárias, mas deve fazer o uso de tecnologias baseadas em
padrões abertos para ampliar a conectividade e intercâmbio de informações de
forma geral. Nesse momento, hipóteses sobre uma nova arquitetura podem ser
levantadas, baseadas na integração com os sistemas legados.
Uma provável arquitetura seria caracterizada pela adoção de um servidor
Web como fonte de acesso aos dados, integrado com as aplicações SCADA no
centro de operação, e o browser internet atuando com HMI. Nesta proposta, o
processo de comunicação entre o centro de operação e a subestação se manteria
inalterado. A arquitetura permitiria que qualquer centro de operação, salvo as
devidas regras de segurança, controlasse uma subestação independentemente da
sua localização geográfica. Este cenário seria indicado onde não houvesse rede
TCP/IP (Transmission Control Protocol/Internet Protocol) entre o centro de operação
11
e a subestação.
Em uma outra hipótese de arquitetura, um computador seria colocado em
cada subestação, eliminando a necessidade de concentração de dados pelas
estações centrais. Os browsers com a função de HMI acessariam diretamente esse
servidor, o que exigiria que a rede entre o centro de operação e as subestações
fosse TCP/IP. Este cenário implica em uma arquitetura totalmente distinta à
arquitetura SCADA.
Um terceiro cenário mais genérico, com atributos dos dois anteriores,
poderia considerar que cada subestação é encapsulada por uma representação em
software, o qual permite que se realizem todas as funções de leitura e atuação na
respectiva subestação física. Não importa como este software está interligado com a
subestação - seja por meio de uma rede dedicada ou TCP/IP, ou se ele está sendo
executado no centro de operação ou na própria subestação. Haveria um sistema
geral de controle que reconheceria todas as subestações disponíveis para
gerenciamento, todos os usuários operadores, e atuaria como mediador para as
sessões de operação. Pode-se dividir esta arquitetura em algumas camadas de
responsabilidade, entre elas, uma camada responsável pela geração da interface
com o usuário operador e pelo processo de interação com ele; outra camada
responsável pela integração com a subestação através do sistema legado; uma
camada intermediária, ponte entre as duas anteriores.
Na literatura científica, algumas abordagens de arquiteturas distribuídas
são descritas para várias áreas de aplicação. Para a maioria das aplicações SCADA,
é citado o uso da tecnologia de agentes e Web [BUSE+03] [LI+02].
Independentemente da arquitetura adotada, testes de desempenho,
segurança, confiabilidade e tolerância à falhas devem ser realizados para a
instituição em produção de um sistema como este.
12
1.2 OBJETIVO
O objetivo deste trabalho é investigar as arquiteturas e tecnologias
disponíveis para a construção de sistemas de automação distribuída utilizando uma
intranet corporativa, e efetuar a proposta de uma arquitetura com a construção de
um protótipo para prova de conceito dos assuntos investigados.
O enfoque será nas tecnologias empregadas para a geração da interface
gráfica de usuário e em agentes móveis como parte do controle central do sistema.
A integração com sistemas legados ficará em segundo plano.
Para construção do protótipo, adotar-se-á como premissa o uso de
tecnologias relacionadas com a plataforma Java.
1.3 JUSTIFICATIVA
O presente trabalho está relacionado com um projeto de Pesquisa e
Desenvolvimento da ANEEL (Agência Nacional de Energia Elétrica) em fase de
execução pela COPEL – Companhia Paranaense de Energia. Outro estudo
acadêmico, também relacionado ao projeto, complementa o entendimento deste
trabalho [BRAGA06].
A viabilização de um novo sistema para automação de subestações traz
redução de custos pela não utilização de softwares proprietários na arquitetura
proposta.
A arquitetura baseada em padrões abertos permite maior integração com
outros sistemas da empresa. O acesso via Web reduz custos de instalação da
aplicação no cliente e permite maior flexibilização na gerência do sistema.
Este estudo proporciona também aumento do capital intelectual dos
envolvidos, que se reflete no aumento da qualidade dos produtos e serviços da área
de TI (Tecnologia da Informação) da empresa.
13
1.4 ESTRUTURA DO TRABALHO
O trabalho está organizado da seguinte maneira. No capítulo 2, são
investigadas as arquiteturas para automação de subestações com foco em sistemas
multiagentes. No capítulo seguinte, são descritas e analisadas potenciais
tecnologias para consolidar uma arquitetura baseada em agentes. Um comparativo
entre mecanismos de comunicação para aplicações distribuídas também é realizado.
O capítulo 4 apresenta uma plataforma de agentes, denominada JADE (Java Agent
Development Framework), utilizada nos experimentos deste trabalho. O capítulo 5
trata as propostas de modelos para o sistema de automação da COPEL. Em
seguida, é montada uma prova de conceito para avaliar o funcionamento das
tecnologias, como parte complementar dos assuntos tratados nos capítulos
anteriores. Finalmente, no capítulo 7 são enunciadas as conclusões e propostas
para continuidade dos trabalhos.
14
2 ARQUITETURAS DISTRIBUÍDAS PARA AUTOMAÇÃO
O presente capítulo descreve conceitos pertinentes a sistemas
multiagentes e apresenta soluções e arquiteturas encontradas na literatura para
abordar a questão de computação distribuída em sistemas elétricos, em sua grande
maioria baseadas em sistemas multiagentes e tecnologia internet.
2.1 SISTEMAS MULTIAGENTES
Um sistema multiagente (MAS – Multiagent System) pode ser definido
como uma rede fracamente acoplada de entidades solucionadoras de problemas
que interagem entre si para resolver problemas que estão além das capacidades ou
conhecimentos de cada entidade em particular. Essas entidades são chamadas de
agentes [DURFEE+89].
Existem diversas definições para o termo agente [JENNINGS+98],
[FRANKLIN+96], [PRAYURACHATUPORN+01], [COSTA99], [FARACO98]. De uma
forma geral, um agente é um sistema computacional que está situado em um
ambiente e apto a atuar autonomamente, de forma flexível, sobre este ambiente
para atingir seus objetivos de projeto.
Segundo Prayurachatuporn e Benedicenti [PRAYURACHATUPORN+01],
agentes de software são unidades de programa autônomas suportadas por um
ambiente de execução, que podem utilizar a rede de computadores para se
comunicarem entre si e para se movimentarem de um computador a outro. Eles
constituem os blocos elementares para a construção de sistemas computacionais
complexos.
O propósito principal do ambiente de execução é oferecer aos agentes a
infra-estrutura necessária para que eles possam atuar. Vários ambientes de
execução podem trabalhar de forma integrada, possibilitando a movimentação de
15
agentes entre eles.
Muitas características estão associadas aos agentes, não significando
necessariamente que todas elas devam estar presentes [FERNANDES03]:
a) Autonomia: refere-se ao princípio de que o agente pode atuar sem a
intervenção direta de humanos ou outros agentes, tendo controle sobre
suas próprias ações e seu estado de forma não supervisionada, com
base na capacidade de inteligência. Sistemas de controle de processos
por computador são exemplos de sistemas autônomos de computação;
b) Comunicação: capacidade do agente de intercambiar seus recursos,
seu conhecimento e suas decisões com outros agentes, e também
outras entidades, como o ambiente onde executa e com seres
humanos. Existem várias linguagens propostas para realizar a
comunicação entre agentes, como AgentTalk, ACL (Agent
Communication Language), KIF (Knowledge Interchange Format) e
KQML (Knowledge Query and Manipulation Language);
c) Cooperação e habilidade social: capacidade de trabalhar em conjunto,
em busca de um objetivo comum. Um agente pode invocar outros para
resolver seus próprios problemas, pode disponibilizar informações para
a sociedade, acreditando que outros agentes irão solicitá-las e,
eventualmente, cooperar para ajudar outros a resolverem seus
problemas. Para que haja cooperação, os agentes devem ser dotados
de comunicação;
d) Inteligência: habilidade computacional ou analítica que um agente
possui para analisar seu ambiente e resolver problemas. As técnicas ou
heurísticas utilizadas podem ser redes neurais artificiais, lógica fuzzy,
sistemas especialistas, algoritmos genéticos, colônia de formigas. A
técnica mais adequada depende do objetivo do agente [JUNG+04];
e) Aprendizado: diz respeito ao agente poder receber de um treinador um
16
conhecimento através de um conjunto de instruções, ou então aprender
continuamente por experiência, baseado no resultado das decisões que
toma de forma autônoma a partir da percepção do ambiente;
f) Reatividade: capacidade de perceber mudanças em seu ambiente por
meio de sensores e responder de maneira temporal a tais mudanças;
g) Pró-atividade: o agente toma iniciativa para atingir o objetivo que lhe é
atribuído em vez de simplemente reagir a mudanças no ambiente;
h) Mobilidade: capacidade de se mover entre ambientes de execuções,
utilizando muitas vezes uma rede de computador. O estado dos dados
do agente podem ser transportados ou não como o agente durante a
movimentação.
Algumas propriedades que se destacam em sistemas multiagentes são:
cada agente possui informação ou capacidade incompleta para solucionar um
problema e, portanto, tem uma visão limitada; não há controle global do sistema;
dados são descentralizados; e a computação é assíncrona [SYCARA98]. Em Zangh
et al. [ZHANG+04] é dito que sistemas multiagentes oferecem uma abordagem
flexível, modular, integrada e extensível para resolver problemas de comunicação,
computação distribuída e integração em aplicações na área de energia elétrica.
Para sistemas SCADA, o uso de plataforma de agentes possibilita
[PRAYURACHATUPORN+01]:
a) Independência de localização: oferece o acesso ao agente
independente do seu local de execução, permitindo a implementação
de mecanismos de tolerância à falhas;
b) Independência de plataforma: quando diferentes ambientes de
execução interagem, e cada qual executa em uma plataforma distinta.
Os agentes podem operar em qualquer uma das plataformas de forma
transparente.
Apesar dos sistemas multiagentes apresentarem papel importante no
17
desenvolvimento de aplicações computacionais, o mero fato de que um domínio
particular do problema possui origens de dados distribuídas não implica
necessariamente que uma solução baseada em agentes seja a mais apropriada
[FERNANDES03].
2.2 ABORDAGENS DE ARQUITETURA PARA SISTEMAS DE
AUTOMAÇÃO
Ebata et al. [EBATA+00] comentam que a arquitetura moderna para
SCADA está baseada no modelo RISC-UNIX-TCP/IP, um modelo de sistema
distribuído aberto, mas que não contempla o uso de tecnologias Internet e Intranet
devido a questões de desempenho e confiabilidade para sistemas em tempo real. O
trabalho propõe a utilização de uma intranet como plataforma para um sistema
SCADA e relata resultados preliminares de testes, focando em tempo de resposta de
comunicações e confiabilidade. O tratamento dessas questões é resolvido com a
construção de um middleware que incorpora funções como sistema de
gerenciamento de dados em memória, comunicação baseada em multicast sobre IP
e wide area cluster.
Buse et al. [BUSE+03] descrevem uma arquitetura genérica que aplica a
metodologia de sistemas multiagentes em automação de subestações. Os autores
alegam que os sistemas de automação e controle de sistemas elétricos atuais,
baseados no modelo SCADA, apesar de oferecerem desempenho e confiabilidade
adequados, não apresentam flexibilidade no que diz respeito ao acesso aberto às
informações. Acrescentam também que modelos alternativos, como sistemas
cliente-servidor e Web têm a desvantagem de serem algumas vezes inflexíveis,
centralizarem as funcionalidades de monitoramento do sistema elétrico e também
exigirem muita largura de banda. Por sua natureza inerentemente distribuída, os
sistemas elétricos são alvo de aplicação de sistemas de controle baseados em
18
agentes, os quais provêem maior autonomia para cada parte constituinte do sistema
elétrico. Nessa arquitetura, agentes são designados para diferentes funções, tais
como monitorar e controlar o sistema elétrico, ler dispositivo, armazenar dados,
prover interface gráfica, e se comunicam por meio de mensagens ACL sobre um
ambiente de runtime. A recuperação de informações pode ser feita por meio de
agentes móveis, os quais trafegam pela rede, ou por meio da identificação de
agentes responsáveis por tarefas específicas e troca de mensagens entre eles.
Hopkinson et al. [HOPKINSON+03] reportam o desenvolvimento de um
ambiente de simulação distribuído. Eles alegam que os simuladores atuais na área
de sistemas elétricos de potência modelam de maneira precisa sistemas de potência
do passado, os quais eram controlados como grandes parques regionais de potência
sem elementos significativos de comunicação. Entretanto, uma vez que sistemas de
potência estão cada vez mais adotando sistemas de controle e proteção que fazem
uso de redes de computadores, tais simuladores estão cada vez menos capazes de
predizer o provável comportamento da malha de potência resultante.
De forma semelhante, as ferramentas usadas para avaliar novos
protocolos e sistemas de comunicação foram desenvolvidas sem a devida atenção
aos papéis que eles podem ter em cenários de potência. A ferramenta proposta em
[HOPKINSON+03] utiliza múltiplos sistemas comerciais e de pesquisa para
preencher a lacuna. Segundo os autores, o sistema permite que usuários
encapsulem de maneira transparente o comportamento de sistemas complexos que
abranjam domínios múltiplos por meio do uso de um framework simples baseado em
agentes.
Li et al. [LI+02] consideram um sistema SCADA como uma aplicação
completamente baseada em Web, decompondo cada pedaço do software de
aplicação em um conjunto de componentes de um website. Os autores
esquematizaram o projeto de um subsistema de controle de supervisão e de um
subsistema de aquisição de dados com base no modelo de arquitetura em três
19
camadas, o qual adiciona flexibilidade e escalabilidade ao sistema e permite que
este se beneficie de toda a tecnologia Internet disponível, tais como arquitetura
aberta, protocolo de comunicação padrão e módulos de aplicação maduros. É
proposto o uso de uma RTU inteligente que contém módulos para aquisição de
dados e recepção de comandos e um NCU (Network Computing Unit), o qual é
construído com tecnologia de agentes sobre Java e suporta protocolo HTTP
(Hypertext Transfer Protocol). A RTU interage com a camada central do sistema
implementada por aplicações que executam em servidor Web, a qual, por sua vez,
serve de acesso aos clientes utilizando Web browsers. Para manter as informações
constantemente atualizadas nos clientes, os browsers executam pooling com o
servidor via tecnologia Java Applets.
Prayurachatuporn e Benedicenti [PRAYURACHATUPORN+01] descrevem
como o desenvolvimento de um protocolo de serviço de diretório, que utiliza
tecnologia de agentes em um ambiente de runtime chamado TEEMA (TRLabs
Execution Environment for Software Agents), aumentou a confiabilidade teórica do
sistema SCADA. Segundo os autores, a utilização da tecnologia de agentes é
adequada por permitir distribuição, a qual inerentemente promove redundância, e
modularidade, a qual promove versatilidade.
As características principais de um sistema de agentes que são vantajosos
para um sistema SCADA são: modularidade; autonomia, que possibilita ao usuário
desempenhar tarefas de forma colaborativa com o computador; pró-atividade e
mobilidade. A utilização de agentes móveis no protocolo de um sistema de controle
distribuído provê [PRAYURACHATUPORN+01]:
a) um ambiente runtime para que os agentes possam ser executados;
b) uma interface padrão para interações;
c) serviços para a criação, migração e encerramento de agentes móveis;
d) suporte à mobilidade e comunicação de agentes enquanto provê
segurança tanto para os hosts quanto para os agentes.
20
Agentes têm que ser identificados de maneira inequívoca no ambiente em
que operam. Isso possibilita que o controle, a comunicação, a cooperação e a
coordenação dos agentes ocorram. Um agente é localizado através do serviço de
diretórios e é acessado onde quer que esteja, o que possibilita a implementação de
um mecanismo seguro quanto a falhas, no qual múltiplas cópias de um agente
podem ser ativadas em diferentes localidades, melhorando assim, de maneira
efetiva, a confiabilidade do sistema.
Uma outra aplicação da tecnologia de agentes no contexto de proteção e
controle de sistemas elétricos, funcionando sobre uma intranet, é descrita por Shono
et al. [SHONO+02]. O propósito é a redução do custo total de manutenção e
gerenciamento dos equipamentos físicos envolvidos no sistema. Os autores
comentam que algumas plataformas de agentes não oferecem garantias de
operação quando restrições temporais são impostas, e propõem uma plataforma
para agentes móveis em tempo real, denominada RTMAP (Real Time Mobile Agent
Platform) a qual permite:
a) sincronizações entre múltiplos agentes em um ambiente distribuído; e
b) redundância para resolver problemas de comunicação.
Uma aplicação descrita no trabalho de Shono et al., a qual utiliza a
plataforma de agentes em tempo real, subdivide os agentes em:
a) Agentes de configuração: configuram relés de proteção. De acordo com
o comportamento do sistema elétrico, esses agentes podem
permanecer em um relé específico para mudar suas configurações de
proteção e controle;
b) Agentes de análise: coletam dados para análise de falhas no sistema
elétrico. Esses agentes móveis também são responsáveis por planejar
suas próprias rotas de viagem entre os dispositivos e, caso as
informações coletadas sejam insuficientes para análise, executar um
replanejamento de rota;
21
c) Agentes de patrulha: coletam informações sobre as condições de
operação dos equipamentos.
Seki et al. [SEKI+02] desenvolveram um protótipo de um sistema de
processamento de informação de sistemas de energia baseado na Web. Entretanto,
em seu estágio inicial, o protótipo contempla apenas informações sobre falhas de
energia. Sua arquitetura, que segundo os autores assegura flexibilidade e
escalabilidade em sistemas de energia, consiste de:
a) uma camada de aplicação baseada em Web browser;
b) uma camada de modelo de informação que reflete o comportamento do
sistema de energia; e
c) uma camada de gerenciamento de objetos distribuídos utilizando
CORBA (Commom Object Request Broker) e OS/Network.
Yavnai [YAVNAI94] apresenta uma arquitetura distribuída e
descentralizada para a organização, comando, controle e comunicação de um
sistema multiagentes funcionando de forma cooperativa e autônoma. A motivação
para a operação cooperativa autônoma tem sua sustentação na necessidade de
executar missões críticas com restrições de tempo, recursos e disponibilidade que
estão além da capacidade de um único agente. No caso dos agentes estarem
geograficamente distribuídos, a operação cooperativa é uma abordagem adequada,
fornecendo suporte a:
a) compartilhamento de informações;
b) compartilhamento de recursos;
c) alocação eficiente de recursos;
d) respostas orientadas a contexto e situação;
e) robustez e flexibilidade sob mudanças de condições;
f) redundância.
Uma característica chave da arquitetura proposta por Yavnai é que todos
os agentes são idênticos em relação à percepção, ao processamento de informação,
22
à tomada de decisão, à capacidade de comunicação, independentemente de sua
missão. Dessa forma um agente pode ser facilmente substituído no caso de falha.
23
3 ANÁLISE DE TECNOLOGIAS PARA SISTEMAS DE AUTOMAÇÃO
A construção de sistemas de automação de subestações implica no
estabelecimento de um arcabouço tecnológico, abrangendo elementos para
comunicação, tecnologias destinadas à construção de interfaces para o usuário e
integração com sistemas legados. O foco deste capítulo é discorrer sobre esses
assuntos, já apresentando resultados comparativos entre os elementos de
comunicação inclusive com uma plataforma de agentes, e apontando algumas
técnicas para a construção da interface com o usuário via Web.
3.1 TECNOLOGIAS PARA SISTEMAS DISTRIBUÍDOS
Muitas tecnologias de interconectividade têm sido abordadas e descritas na
literatura. Dentre elas, pode-se destacar sockets, Java RMI (Remote Method
Invocation), web services e tecnologia de multiagentes, as quais são descritas na
seqüência. Testes comparativos sob a ótica de desempenho são realizados para
avaliar a adequação de cada uma delas no âmbito de sistemas de automação de
subestações.
3.1.1 Sockets
Sockets são estruturas que permitem que funções de software se
interconectem. O termo é usado para especificar uma estrutura que faz com que
rotinas de software na mesma máquina ou em máquinas diferentes possam se
comunicar. Sockets são implementados em várias linguagens de programação
(Assembler, C, C++, Java, dentre outras) para a maioria dos sistemas operacionais
existentes. Também são utilizados como núcleo para tecnologias mais sofisticadas
de comunicação, entre elas RMI, CORBA e Web Services.
24
3.1.2 Java RMI
RMI é um middleware que permite que um objeto sendo executado em
uma JVM (Java Virtual Machine) invoque métodos de um objeto sendo executado
em outra JVM, ou seja, RMI provê um mecanismo de comunicação entre programas
escritos na linguagem Java. RMI define um conjunto de interfaces remotas que
podem ser utilizadas para criar objetos remotos. Diferentemente de sockets, que
disponibiliza uma API (Application Program Interface) básica para manipulação de
estruturas de comunicação, a API RMI fornece uma estrutura orientada a objetos de
alto nível que encapsula toda a comunicação básica para acessar métodos remotos.
3.1.3 Web Services
Web Services são componentes de software criados a partir de conjuntos
de protocolos e padrões abertos para computação distribuída na Internet definidos
pelo W3C (World Wide Web Consortium) 1.
Os Web Services utilizam XML (Extensible Markup Language) como base
para sua pilha de protocolos e suas principais características são: independência de
implementação e plataforma; permite comunicação síncrona e assíncrona;
arquitetura fracamente acoplada e orientada a serviço; reaproveitamento dos
serviços distribuídos na rede e facilidade de utilização.
A principal desvantagem dos Web Services reside no baixo desempenho
quando essa tecnologia é comparada com outras, tais como RMI e CORBA, como
conseqüência de seu formato baseado em texto.
1 Consórcio internacional que busca desenvolver e padronizar tecnologias interoperáveis na Web.
25
3.1.4 Implementações de Plataformas de Agentes
A tecnologia de multiagentes tem sido reconhecida como um conceito
chave na construção de sistemas de controle distribuído, inteligente, auto-
organizador e robusto [LEEUWEN+97]. Existem muitas implementações de
plataformas multiagentes. No trabalho de Vrba [VRBA03] são analisadas várias
delas: JADE (CSELT), FIPA-OS (Emorphia), ZEUS (British Telecom), JACK (Agent
Oriented Software), GRASSHOPPER 2(IKV++ Technologies AG), ADK (Tryllian),
JAS (Fujitsu, HP, IBM, Sun), AgentBuilder (IntelliOne Technologies), MadKit (MadKit
Team), Comtex Agent Plataform (Communication Technologies), Bee-gent (Toshiba)
e Aglets (IBM Japan).
Vrba faz uma análise mais específica sobre desempenho, entre as
plataformas JADE, FIPA-OS, ZEUS e JACK. De maneira geral, a plataforma JADE,
em seus testes, apresentou maior desempenho com relação às outras avaliadas. Os
testes consistiram de um esquema serial e outro paralelo. No esquema serial, a
comunicação entre um par de agentes opera de maneira sincronizada, ou seja, o
agente remetente envia a segunda mensagem apenas depois de receber a resposta
do agente destinatário relativa à primeira mensagem enviada. No esquema paralelo,
o agente remetente envia todas as mensagens de uma só vez. Os testes também
contemplaram a comunicação entre um par de agentes e entre dez pares de
agentes. Além disso, contemplaram uma configuração com apenas um servidor, com
um servidor e duas máquinas virtuais Java e com dois servidores.
Baseado na abrangente avaliação feita na publicação supramencionada,
adotou-se neste trabalho a plataforma JADE, descrita em detalhes no capítulo 4.
JADE provê um arcabouço para a implementação de sistemas multiagentes por
meio de middleware compatível com as especificações elaboradas pela FIPA
(Foundation for Intelligent Physical Agents), uma organização da IEEE Computer
Society responsável por promover tecnologia baseada em agentes e a
26
interoperabilidade de seus padrões com outras tecnologias [BELLIFEMINE +05a]. As
especificações tratam da linguagem de comunicação entre agentes – a ACL,
protocolos de interação e teoria de atos comunicativos, do controle e gerenciamento
de agentes em uma plataforma específica e entre plataformas distintas, do
transporte e representação de mensagens através de diferentes protocolos de rede,
e de entidades abstratas que são requeridas para a construção de serviços e da
própria plataforma de agentes [FIPA06a].
Uma vez que essa tecnologia é implementada inteiramente em Java, a
plataforma pode ser distribuída em diversas máquinas, as quais não precisam ter
necessariamente o mesmo sistema operacional.
3.1.5 Comparativo de Desempenho das Tecnologias
Uma das maneiras de avaliar a adequabilidade das tecnologias de
computação distribuída, mencionadas neste trabalho, na questão da automação de
subestações consiste em testes de desempenho.
Entretanto, deve-se ter em mente que soluções que utilizam diferentes
tecnologias de distribuição podem, e devem, ter diferentes arquiteturas. Quando se
utilizam sistemas multiagentes, por exemplo, tem-se por princípio a implantação de
inteligência local, a qual minimiza a necessidade de comunicação. Pode-se dizer,
portanto, que a adequabilidade de sistemas multiagentes em relação à outra
tecnologia não pode ser julgada apenas pelo seu desempenho apresentado, mas
todo o seu paradigma deve ser considerado. Os testes de desempenho fornecem,
mesmo assim, importantes informações que podem subsidiar decisões quanto à
utilização dessas tecnologias.
O estudo contempla um servidor contendo um simulador de subestação, a
qual contém interfaces para as diferentes tecnologias. Os clientes fazem requisições
à subestação. Nos testes, todos os clientes implementados com as tecnologias
27
testadas fazem a mesma requisição, a saber, a recuperação dos pontos de estado
da subestação de maneira síncrona. O cliente da plataforma JADE necessita uma
adaptação para funcionar de maneira síncrona, isto é, o fim da requisição se dá no
momento em que o servidor responde com os dados solicitados.
Os clientes foram implementados como testes do JUnit, um framework de
testes de regressão que facilita a criação de testes unitários em Java [JUNIT06].
Essa modalidade de teste se concentra na verificação da menor unidade de um
projeto de software, neste caso, o método do cliente que interage com o servidor da
subestação.
A execução dos clientes foi realizada pela ferramenta JMeter, uma
aplicação desktop puramente Java que permite a execução de testes funcionais e a
medição de desempenho [JMETER06]. Testes foram executados para comparar as
tecnologias levando-se em consideração o número de requisições simultâneas a
serem atendidas pelo servidor e o tempo de resposta desse atendimento. O produto
utilizado nos testes com Web Services foi o Sun Java Application Server Platform
Edition 8 [PE06]. Ele oferece um utilitário que gera, a partir de uma descrição de
serviço codificada no padrão WSDL (Web Service Description Language), as classes
Java utilizadas para a implementação do servidor e do cliente de web services.
Os testes foram executados por duas máquinas clientes acessando de
forma não simultânea um servidor, tendo todos os computadores as mesmas
características de processamento e memória (Pentium IV, 2,6 GHz, 512 MBytes de
memória interna, com sistema operacional Windows XP). Esse procedimento foi
utilizado para minimizar um possível impacto da rede corporativa nos resultados.
Com este mesmo objetivo, cada conjunto de requisições simultâneas (5, 10, 25, 50,
100) do teste foi executado três vezes, sendo computadas as médias das amostras
de tempo de atendimento das requisições dos dois computadores cliente.
Os resultados obtidos, que podem ser visualizados na Figura 1,
demonstram que a tecnologia RMI apresenta melhor desempenho que as demais.
28
Isso ocorre porque, embora RMI seja baseada em sockets, implementa várias
otimizações que influenciam diretamente no desempenho, como um pool para a
reutilização das conexões sockets instanciadas. Na implementação com sockets, o
recurso de pool não foi utilizado, o que pode ser verificado no gráfico pela
degradação dos resultados com o aumento da carga. Nesse caso, a influência no
desempenho foi maior no cliente, devido ao elevado número de conexões sockets
criadas pelo sistema operacional. Embora RMI adicione várias camadas de
abstração sobre a tecnologia sockets, ele apresenta um desempenho melhor na
relação carga/desempenho devido às otimizações fornecidas em sua API.
FIGURA 1 – TESTES DE DESEMPENHO ENTRE AS TECNOLOGIAS RMI, WEB SERVICES, SOCKETS E AGENTES (JADE).
Web services apresenta um tempo de resposta aceitável para poucas
requisições simultâneas. Quanto maior o número de requisições simultâneas, maior
o consumo de recursos da máquina, tanto no cliente como no servidor, e o tempo de
resposta apresenta degradação mais acentuada.
A tecnologia de agentes utilizando a plataforma JADE teve desempenho
melhor que web services, porém pior que RMI e sockets. Entretanto, deve-se
observar que a tecnologia de agentes, quando utilizada de acordo com sua filosofia,
ou seja, considerando inteligência local, não apresenta alta demanda de
29
comunicação. Deve-se considerar também que o desenvolvimento na plataforma
JADE demanda maior elaboração por se tratar de um modelo assíncrono de
comunicação e por possuir uma estrutura própria de desenvolvimento baseada em
comportamentos.
Diante dos resultados dos testes e das discussões, considerou-se que o
desempenho apresentado pelo JADE não é um fator impeditivo para a sua adoção
como tecnologia para computação distribuída. Evidentemente, se o seu
comportamento nos experimentos indicasse uma incapacidade para lidar com um
número elevado de requisições simultâneas, ou então se os tempos de resposta
fossem substancialmente superiores ao pior caso, a sua adoção seria descartada.
No capítulo 4 a plataforma JADE é explorada em mais detalhes.
3.2 CAMADA DE APRESENTAÇÃO
A camada de apresentação tem o propósito de expor a lógica de negócio e
permitir a interação do usuário com a aplicação. Para aplicações baseadas em
internet essa camada é conhecida também como camada Web.
A utilização de interfaces de usuário baseadas em Web browser traz
significativas vantagens [FOWLER03], [JOHNSON02], [JOHNSON04], entre elas:
a) a facilidade de instalação da aplicação, já que ela é hospedada em um
servidor e apenas o browser é necessário no computador do usuário,
funcionando como cliente universal;
b) desacoplamento do usuário com as tecnologias e plataformas
utilizadas no servidor;
c) menor esforço de configuração, pois normalmente firewalls são
configurados para liberar o tráfego de rede na porta 80 utilizada pelo
servidor de páginas HTML (Hypertext Markup Language);
d) menor exigência de poder computacional no usuário, já que maior
30
parte do processamento ocorre no servidor.
Para que a camada Web seja construída com uma estrutura lógica
adequada, recomenda-se a utilização de um padrão de arquitetura denominado
MVC (Model View Controller) [FOWLER03]. O MVC foi proposto Trygve Reenkaug
para a plataforma Smalltalk2 na década de 70 e desde então tem influenciado a
maioria dos frameworks voltados para interface com o usuário e a forma de pensar
sobre o design de interfaces.
O MVC divide a camada de apresentação em três elementos distintos:
a) Modelo: elemento não visual que contém informações a respeito do
domínio da aplicação e as regras de negócio que governam o acesso e
a modificação desses dados;
b) Visão (view): constitui a exibição do modelo em uma interface de
usuário. Como exemplo, se no modelo há um objeto que representa um
equipamento elétrico, a visão implementará um mecanismo como uma
página HTML para mostrar as informações do equipamento e permitir a
emissão de comandos para interação com o modelo;
c) Controlador (Controller): recebe os comandos da visão e baseando-se
nas informações da requisição, determina qual parte da lógica de
negócio deve ser invocada e atualiza o modelo. Conforme o retorno da
invocação, o controlador seleciona qual visão deve ser apresentada ao
usuário. A visão interage com o modelo para a sua exibição. Como
todas as requisições são canalizadas ao controlador, ele torna-se um
local adequado para implementação de regras de segurança, log de
acessos e validações de argumentos das requisições.
Segundo Fowler [FOWLER03], a utilização do MVC favorece a coesão,
pois implica em melhor distinção de responsabilidade entre os elementos que tratam
2 Linguagem de programação pioneira na introdução dos conceitos de programação orientada a objetos, desenvolvida pela Xerox.
31
da interação com o usuário. Ainda, um ponto chave na separação entre visão e
modelo é a direção da dependência, pois a primeira deve depender do segundo,
mas não o contrário. Assim, como o modelo está isolado da visão, tipos diferentes
de visão podem ser elaboradas sem que o modelo seja alterado.
Em aplicações desktop, é possível que o modelo atualize automaticamente
a visão quando ele sofrer alterações de estado. Neste caso o MVC é dito MVC push
[JOHNSON02], [JOHNSON04], pois as atualizações ocorridas no modelo são
empurradas para a visão. Para preservar o relacionamento de dependência
unidirecional entre os dois elementos, da visão para o modelo, a implementação
pode utilizar o design pattern Observer [GAMMA+95]. Neste padrão, são inseridas
no modelo referências de observadores interessados em sua mudança de estado. O
modelo reconhece apenas a interface desses observadores e, quando as mudanças
ocorrem, ele notifica tais referências, não dependendo das implementações
subjacentes a elas.
Por outro lado, em aplicações Web com interfaces de usuário em HTML, o
estilo de comunicação request-response apresenta um impedimento para a
atualização automática da visão pelo modelo. Assim, o MVC é tido como MVC Web
ou MVC pull, pois a visão deve sempre buscar as informações do modelo para
exibição.
Para o desenvolvimento da camada de apresentação, optou-se por utilizar
neste trabalho a plataforma JEE (Java Enterprise Edition) [SUN06] por motivos de
facilidade de integração com o framework JADE, uma vez que ambos utilizam a
linguagem Java, e devido à robustez proporcionada por essa plataforma. Além disso,
em virtude de definições arquiteturais pré-estabelecidas no ambiente corporativo
onde este trabalho está sendo desenvolvido, as aplicações com interface Web
devem ser preferencialmente desenvolvidas em plataforma JEE.
Na plataforma JEE, o elemento modelo do MVC é comumente
implementado em Java Beans, o controlador em Servlets e a visão em JSP (Java
32
Server Pages).
Java Beans são classes Java comuns que aderem a três convenções de
codificação [SUN06]: possuem um método construtor sem parâmetros, implementam
a interface java.io.Serializable e possuem métodos públicos para acessar e modificar
suas variáveis-membro.
Servlets são programas Java que atendem a uma especificação
padronizada pela SUN [SUN06] na qual se estabelece uma API para a comunicação
entre o servidor Web e o programa Java. Dessa forma, os programas Servlets são
capazes de receber requisições remotas de Web browser através do protocolo HTTP
e produzir as respostas. As Servlets são preparadas para trabalhar em ambiente
multithreaded e oferecem recursos para a implementação de aplicações Web, como
manutenção do estado de sessões de usuário.
JSP, assim como Servlets, é uma tecnologia para geração de páginas
dinâmicas. A diferença reside no fato de que em Servlets todo o conteúdo é gerado
explicitamente por programação Java, enquanto que no JSP é possível fazer uma
distinção entre conteúdo estático e dinâmico através da inserção de marcadores
especiais na página estática para invocar código Java [SUN06].
Além da opção de implementar o MVC através da construção de software
de forma a atender um propósito específico, existem diversos frameworks Java
disponíveis, comercializados ou sob licenças de software livre, que facilitam a
implantação de uma arquitetura MVC, tais como Java Server Faces [JSF06], Spring
MVC [SPRING06], Struts [STRUTS06]. Em [BARRETO06] é realizada uma análise
comparativa sobre esses frameworks e os resultados apontam para a adoção do
JSF.
3.2.1 Desafios Decorrentes da Utilização da Camada Web
No âmbito de sistemas de automação de subestações, alguns desafios são
33
impostos quando as interfaces baseadas em Web são utilizadas. A riqueza de
informações visuais exigida na operação de uma subestação não é suprida pelos
componentes de HTML, pois são limitados e não expansíveis. O uso de imagens
para representar diagramas unifilares e outros esquemas elétricos não é apropriado,
pois as informações contidas nessas imagens mudam com alta freqüência e a
atualização constante no browser geraria alto tráfego de informações na rede.
Frameworks para a camada Web, como o JSF, trazem consigo componentes visuais
mais sofisticados se comparados aos elementares do HTML, contudo ainda fica a
lacuna para a representação dos diagramas.
O sistema de automação deve lidar com mecanismos de alarmes, avisos e
notificações, eventos estes que ocorrem no sistema quando há mudança de estado
de determinado componente elétrico, quando valores limiares são atingidos para
determinada grandeza elétrica, e assim por diante. Alguns desses eventos devem
ser enviados para a interface do operador para informá-lo ou para que ações sejam
tomadas. O modelo de comunicação request-response utilizado entre o browser e o
servidor impede que alterações ocorridas em objetos da aplicação reflitam
automaticamente no cliente. É necessário que o browser execute uma nova
requisição para obter as informações atualizadas. Tradicionalmente, cada requisição
envia todos os dados do formulário HTML e recebe a página completa para ser
redesenhada, mesmo quando há pouca ou nenhuma alteração nos objetos, gerando
com isso um tráfego de rede maior que o necessário.
Visando abordar as questões mencionadas acima com a utilização de
padrões abertos, foram identificadas duas tecnologias, SGV (Scalable Vectorial
Graphics) e AJAX (Asynchronous JavaScript And XML), descritas na seqüência.
3.2.2 SVG
SVG (Scalable Vectorial Graphics) é uma linguagem para descrever
34
gráficos bidimensionais estáticos ou animados em XML, padronizada pelo W3C
[W3C06].
As vantagens do SVG em relação aos formatos de imagens tais como JPG
(Joint Photographic Experts Group) ou GIF (Graphics Interchange Format) são
[W3SCHOOLS06a]: arquivos de imagens são representados via XML, que podem
ser lidos e interpretados em uma gama maior de ferramentas; as imagens SVG são
escaláveis, não perdendo a qualidade com alterações na resolução; facilidade de
busca dentro imagem; SVG é um padrão aberto, ao contrário de seu principal
concorrente, o Flash, que é uma tecnologia proprietária da empresa Adobe
[FLASH06].
A principal desvantagem do SVG é a falta de suporte pelos Web browsers.
Atualmente, o Internet Explorer e o Mozilla requerem a instalação de um software
adicional para a interpretação de arquivos SVG. Entretanto, outros como o Firefox, já
possuem suporte nativo.
Dentre as representações gráficas suportadas pelo SVG estão texto,
linhas, retângulos, círculos, elipses, polilinhas e polígonos. O uso de gradientes,
para realização de transições suaves entre cores, e filtros, para produzir efeitos
como agudização ou borramento em imagens, também é suportado.
Como o SVG é definido em XML, sua estrutura pode ser manipulada
dentro do browser através de JavaScript. Esse mecanismo oferece condições de
alterar regiões da imagem apresentada ao usuário de uma maneira eficiente.
3.2.3 AJAX
AJAX é uma técnica de desenvolvimento de aplicações Web cujo propósito
é tornar ágil o processo de comunicação entre o browser e o servidor, aumentando a
interatividade, velocidade e usabilidade da interface oferecida ao usuário. Isso é
obtido por meio da redução do tráfego de dados com o servidor através de um
35
processo de comunicação assíncrono, de forma que a página inteira não precise ser
recarregada a cada requisição, mas somente as partes dela que necessitem de
atualização [W3SCHOOLS06b].
AJAX é baseado em tecnologias padronizadas como JavaScript, HTML e
XML. Com o JavaScript as requisições HTTP são remetidas ao servidor por
intermédio de um componente existente na API do browser. Uma função em
JavaScript é vinculada a esse componente para que seja notificada quando a
resposta da requisição acontecer. Esta função recebe as informações e procede a
atualização de elementos da página, os quais podem ser acessados como nós de
uma árvore XML.
Embora a técnica possa reduzir o volume de dados trafegados pela rede e
aumentar a qualidade das interfaces Web, é importante observar que o servidor
tende a receber um número maior de requisições HTTP em virtude do refinamento
da interatividade com o usuário.
3.3 AVALIAÇÃO DA MÁQUINA VIRTUAL JAVA
O mito de que aplicações em Java são lentas em relação àquelas
desenvolvidas em linguagens de alto desempenho foi questionado nos testes de
laboratório deste projeto, com o objetivo de obter uma real avaliação a respeito de
seu desempenho frente a outras tecnologias, e sua pertinência a sistemas de
automação.
Os testes foram realizados utilizando uma máquina Pentium 2 com 128
MBytes de memória. As máquinas virtuais Java utilizadas foram desenvolvidas pela
Sun [SUN06], nas versões 1.4.2 e 5.0. As opções Hotspot server, utilizado para
otimizar o desempenho no lado servidor, e Hotspot client, utilizado para otimizar o
desempenho no lado cliente, foram usadas em ambas as versões.
Um conjunto abrangente de algoritmos foi utilizado para que os testes
36
pudessem avaliar os principais aspectos. Uma observação importante é que ambas
as versões da JVM apresentaram desempenhos similares no sistema operacional
Linux, mas a versão 5.0 apresentou desempenho bem melhor em relação à versão
1.4.2 no sistema operacional Windows.
A Tabela 1 apresenta um resumo dos testes de desempenho comparativo
entre as linguagens Java e C++, com as duas versões de JVM (1.4.2 e 5.0) e
utilizando uma série de algoritmos.
TABELA 1 - COMPARATIVO DE DESEMPENHO ENTRE DUAS VERSÕES DE JVM E ENTRE AS
LINGUAGENS JAVA E C++, UTILIZANDO UM CONJUNTO ABRANGENTE DE ALGORITMOS (TEMPO MEDIDO EM SEGUNDOS), EXECUTADOS EM LINUX.
JVM 1.4.2 JVM 5.0 C++ ALGORITMO HOTSPOT
CLIENT HOTSPOT SERVER
HOTSPOT CLIENT
HOTSPOT SERVER
fibo 39,0 29,4 51,2 30,1 59,1hash2 24,0 19,5 24,1 19,9 0,4hash 6,0 5,9 5,1 5,4 2,0heapsort 51,0 46,9 46,0 46,2 47,3matrix 51,0 35,2 53,7 39,2 28,1methcall 38,0 4,8 33,4 4,9 26,2nestedloop 46,0 37,6 47,7 37,8 20,0strcat 7,0 5,4 5,3 4,7 3,4random 63,6 39,3 69,6 46,5 21,0sieve 25,0 22,9 26,1 20,2 19,3
Em [LEA06] são fornecidos dados comparativos que foram confirmados
pelos testes realizados neste trabalho. Os algoritmos utilizados são os mesmos
daqueles apresentados na referência. A versão 5.0 da JVM não é contemplada nos
testes descritos pela referência, mas foram realizados para enriquecer o comparativo
e comprovar o bom desempenho da tecnologia.
Os resultados, em geral, confirmam que o desempenho de Java não é
necessariamente inferior ao de C++, variando de acordo com os aspectos dos
algoritmos. O desempenho de Java com o Hotspot Server mostrou ser melhor do
que o de Java com o Hotspot Client. Fica também evidente a discrepância de
desempenho dependendo da natureza dos recursos computacionais necessários,
levando à conclusão de que, quando o desempenho é uma questão chave, a
37
natureza do tipo de processamento específico da aplicação deve ser levada em
consideração na escolha da linguagem.
3.4 INTEGRAÇÃO COM O SISTEMA LEGADO
As possibilidades de integração oferecidas pela plataforma Java são
amplas, incluindo conectores para acesso a banco de dados e serviços de
mensageria, e suporte a middlewares como CORBA, RMI e web services.
Quando há necessidade de integração sem a utilização de um middleware,
a linguagem Java oferece uma tecnologia chamada JNI (Java Native Interface)
[SUN06]. Essa tecnologia permite a integração de código escrito em Java,
executado numa máquina virtual Java, com aplicações e bibliotecas escritas em
outras linguagens. No caso de sistemas de automação, essa tecnologia apresenta
muito potencial, uma vez que tipicamente existe toda uma infra-estrutura em
funcionamento, a qual deve ser encarada como uma estrutura legada.
Desta maneira, a evolução de um sistema de automação pode ocorrer de
forma gradativa, mantendo a infra-estrutura existente e construindo a nova sem o
impacto causado por substituições de componentes de software.
38
4 A PLATAFORMA JADE
JADE é um framework para desenvolvimento de sistemas multiagentes sob
licença de software LGPL (GNU Lesser General Public Licence) e é usado
comercialmente em algumas empresas como a Telecom Italia LAB, Whitestein
Technologies AG e Acklin B.V. [JADE06].
Ele oferece um ambiente de execução aos agentes, denominado de
container, bibliotecas para o desenvolvimento de agentes e ferramentas de apoio,
conforme descritos a seguir.
4.1 CONTAINER DE AGENTES JADE
Um container representa uma instância de execução do JADE. Vários
containers JADE podem estar interligados formando uma plataforma, onde os
agentes podem se comunicar e se movimentar de forma transparente. O primeiro
container a ser instanciado é chamado de main container e os demais são
containers secundários que se registram no primeiro. Assim, em cada plataforma
existe apenas um main container.
No main container estão hospedados dois agentes especiais: AMS (Agent
Management System) e DF (Directory Facilitator). O AMS é responsável por garantir
a unicidade de nomes de agentes na plataforma e pelo ciclo de vida de agentes nos
containers secundários. De acordo com a especificação FIPA, cada agente Jade é
identificado por um Agent Identifier (AID), que o distingue dos demais na plataforma.
O DF oferece um serviço de páginas amarelas, onde os agentes podem
procurar serviços ofertados por outros agentes para atender suas necessidades.
A Figura 2 mostra duas plataformas. A primeira, chamada de Platform 1, é
composta por três containers. Os agentes A1, AMS e DF estão hospedados no Main
container. Os agentes A2 e A3 estão no Container 1 enquanto que o agente A4 está
39
hospedado no Container 2. O Container 1 e o Container 2 se registram no Main
container para estabelecer a plataforma. A segunda plataforma, chamada de
Platfform 2, contém apenas um container (Main container) abrigando os agentes A5,
AMS e DF.
FIGURA 2 – CONTAINERS JADE E PLATAFORMAS [JADE06]
4.2 O MODELO DE DESENVOLVIMENTO DO JADE
Um agente é definido por meio de uma classe Java que estende a classe
jade.core.Agent. Pode-se reimplementar métodos especiais invocados pelo
container em certos momentos do ciclo de vida do agente:
a) Método setup(): invocado na criação do agente, útil para realizar
inicializações de variáveis ou de comportamentos, descritos mais
adiante;
40
b) Método takeDown(): invocado quando a instância do agente está sendo
eliminada do container. Para destruir uma instância, deve-se invocar
explicitamente o método doDelete() do agente.
O comportamento de um agente, ou seja, as ações que ele toma e como
ele reage ao ambiente de execução, é especificado em classes que estendem
jade.core.behaviours.Behaviour ou em uma de suas subclasses. Há classes
específicas para comportamentos que devem ser executados de tempos em tempos
(TickerBehaviour), continuamente (CyclicBehaviour), uma única vez
(OneShotBehaviour), entre outras.
Um agente pode conter qualquer número de comportamentos. Eles são
executados de forma não preemptiva, ou seja, a execução do próximo
comportamento só ocorre quando o atual finalizar. Cada vez que um comportamento
entra em execução, o método action da classe é invocado servindo, portanto, como
local para a implementação de regras de negócio no agente. Dentro de um
comportamento, tem-se uma referência à instancia do agente ao qual ele pertence,
possibilitando o acesso às suas propriedades.
4.3 COMUNICAÇÃO ENTRE AGENTES
O paradigma de comunicação adotado no JADE é o de troca de
mensagens de forma assíncrona. Cada agente possui uma caixa de entrada onde o
container insere as mensagens recebidas de outros agentes. Cada vez que uma
mensagem é postada na fila o agente receptor é notificado. A decisão de consumir
ou não a mensagem na fila e o momento que isso ocorre fica a cargo da
implementação do comportamento no agente.
As mensagens trocadas pelos agentes JADE seguem o formato da
linguagem ACL definida pela FIPA. Para compor uma mensagem, os principais
elementos são: o remetente da mensagem; a lista de destinatários; a intenção da
41
mensagem, por exemplo, se o agente simplesmente está ordenando outro a
executar uma tarefa, apenas informando algum fato ou efetuando um CFP (Call for
Proposal) para obter considerações sobre um determinado assunto de um grupo de
agentes; o conteúdo propriamente dito; a linguagem utilizada para expressar o
conteúdo, sendo necessário que ambos os lados da comunicação estejam aptos
para a linguagem escolhida; e a ontologia 3 utilizada nas mensagens.
Devido a não preempção dos comportamentos no agente, como explicado
antes, é importante que a espera por uma determinada mensagem aconteça de
forma não bloqueante. Isso faz com que o agente suspenda a execução do
respectivo comportamento e só coloque-o novamente na fila de execuções quando
alguma mensagem chegar para o agente, dando oportunidade para os demais
comportamentos serem executados.
4.4 FERRAMENTAS AUXILIARES
Devido à dificuldade de depuração e monitoramento de aplicações
multiagentes, algumas ferramentas estão disponíveis no JADE, cada uma sendo
também implementada como um agente e disponibilizando uma interface gráfica ao
usuário [BELLIFEMINE +05b].
A ferramenta RMA (Remote Monitoring Agent) possibilita iniciar um agente,
interromper a execução de plataforma, container ou agente, enviar mensagens a um
grupo de agentes, efetuar a migração ou clonagem de agentes, integrar uma
plataforma remota, seja ela JADE ou não, à plataforma corrente, etc.
A ferramenta DummyAgent permite interagir de uma forma mais refinada
com agentes em execução no ambiente, possibilitando o envio e recebimento de
mensagens ACL com armazenamento de histórico.
3 Uma especificação formal e explícita dos termos de um domínio e das relações entre eles.
42
Para interagir com o agente de diretórios DF, a ferramenta DF GUI permite
registrar, consultar e cancelar o registro de agentes naquele diretório.
O Instropector Agent habilita a visualização do ciclo de vida do agente,
todas as mensagens por ele trocadas, e a execução passo-a-passo dos
comportamentos cadastrados para o agente.
Por último, o Sniffer Agent apresenta em diagrama toda a seqüência de
mensagens trocadas entre agentes previamente selecionados. Esta ferramenta tem
bastante utilidade para realizar uma análise dinâmica das aplicações.
4.5 TOLERÂNCIA A FALHAS
Conforme a especificação FIPA, uma mensagem de falha é retornada ao
agente remetente quando o agente destinatário não é encontrado. O JADE permite a
definição de estratégias para tratar falhas na entrega de mensagens ACL,
possibilitando o armazenamento temporário dessas mensagens até que o receptor
esteja disponível.
Outra característica do JADE para tolerância à falhas é a possibilidade de
redundância do container principal (main container). Essa característica evita que a
plataforma entre em colapso se ocorrerem falhas no main container, já que existe
sempre uma dependência dos containers secundários com o principal.
4.6 INTEGRAÇÕES
Como os agentes JADE são construídos em Java, os recursos externos
que um agente pode acessar, tais como banco de dados ou serviços na rede, são
determinados pelas capacidades da linguagem Java na plataforma J2SE (Java 2
Stardard Edition), e não necessariamente pela plataforma JADE.
Em [JADE06] são listados pacotes de software que acrescentam
funcionalidades ao framework JADE padrão, incluindo facilitadores para integrações
43
com o ambiente externo, como aplicações Microsoft .NET e J2ME (Java 2 Micro
Edition), JMS (Java Messaging Service), Web Services e JMX (Java Management
Extentions).
O JADE disponibiliza interfaces de programação para aplicações Java
comandarem, por exemplo, a iniciação e o ciclo de vida de containers e agentes. Na
criação de um agente, objetos da aplicação podem ser informados como
parâmetros, servindo posteriormente como ponte de integração entre o agente e a
aplicação externa via memória.
44
5 CENÁRIOS DE ARQUITETURA PARA AUTOMAÇÃO
A proposta de uma nova arquitetura deve considerar fatores importantes
como a integração com o sistema existente, o estado da arte na questão de
automação de subestações e os requisitos do usuário. A integração com o sistema
legado preserva investimentos realizados e diminui riscos do projeto, favorecendo
uma transição suave e sem impactos no processo de migração para a novo sistema.
Segundo Prayurachatuporn e Benedicenti [PRAYURACHATUPORN+01],
padrões de migração evolucionária podem ser usados para transformar o sistema
SCADA existente em um sistema de agentes através da substituição gradativa de
componentes pelos seus equivalentes na plataforma de agentes, e ao mesmo tempo
prover interfaces para comunicação com os componentes SCADA.
A seguir é apresentada uma visão geral do sistema existente na COPEL e
são discutidos modelos para estruturar uma nova arquitetura.
5.1 O SISTEMA ATUAL
Na COPEL, as subestações estão conectadas, por meio de um protocolo
específico do sistema de automação, a cinco centros de operação de distribuição
(CODs) e nove centros de operação de transmissão (COEs), espalhados pelas
regiões elétrico-geográficas do Estado do Paraná. Esses centros de operação não
estão necessariamente conectados entre si, exigindo que cada subestação seja
operada exclusivamente por meio do centro de operação ao qual pertence.
Esta estrutura rígida acarreta uma necessidade de integração maior entre
os centros, de forma que uma subestação possa teoricamente ser gerenciada por
qualquer um deles. A disponibilidade de uma rede corporativa de alta velocidade
aliada às características de novos sistemas SCADA influenciam a exploração de
tecnologias baseadas em agentes e Web para o novo sistema.
45
5.2 MODELOS DISTRIBUÍDOS DE AUTOMAÇÃO DE SUBESTAÇÕES
O estudo de possíveis arquiteturas para o sistema de automação
distribuída foi baseado em um ambiente constituído de quatro camadas conforme
ilustra a Figura 3. A primeira camada é a plataforma do usuário ou operador. A
segunda camada diz respeito ao núcleo de interação com o usuário, a qual
basicamente consiste de um módulo servidor (seja centralizado ou distribuído) que
pode estabelecer conexão com os outros componentes do sistema e gerenciar a
segurança de acesso, como autenticação e autorização. A terceira é constituída dos
centros de operação (COE/COD), e a quarta camada representa as subestações
controladas pelos centros de operação.
FIGURA 3 – MODELO DE QUATRO CAMADAS DE UM AMBIENTE DE AUTOMAÇÃO DE SUBESTAÇÕES.
Os estudos demonstraram que, como primeira alternativa, é possível
mesclar as camadas 2 e 3, concebendo um servidor distribuído com unidades
servidoras nos centros de operação, não necessariamente em todos.
A alternativa derivada dos estudos de cenários aponta para uma
arquitetura na qual as camadas 2, 3 e 4 estão presentes em cada subestação,
contemplando um servidor que permita a comunicação entre subestações, ou seja,
sem a presença de um servidor central. Entretanto, essa arquitetura, extremamente
46
flexível, implica em significativa complexidade de gerência.
Dessa forma, um modelo abstrato adequado que contemple um servidor
distribuído aponta para a primeira alternativa, ou seja, uma arquitetura com três
camadas, como ilustrado na Figura 4. A camada 2 é constituída de um ou mais
servidores para prover redundância e anular problemas causados por falhas em um
dos servidores. O papel exercido pelos centros de operação (COEs e CODs) é,
neste modelo, exercido pelos centros de operação virtuais (COVs), os quais
independem de sua localização física.
FIGURA 4 – MODELO DE TRÊS CAMADAS DE UM AMBIENTE DE AUTOMAÇÃO DE SUBESTAÇÕES.
O COV é uma sessão de operação de um conjunto de subestações por
parte de uma equipe de operadores. A operação de uma subestação específica
pode ser negociada entre COVs, uma vez que a subestação só pode ser controlada
em um determinado instante por um único centro de operação. Isso significa dizer
que os centros de operação físicos do modelo anterior são substituídos por centros
de operação virtuais dinâmicos. Igualmente, um conjunto de operadores pode obter
acesso a mais de um COV, por exemplo, numa situação emergencial em que o
operador vinculado a um determinado COV necessite acesso a uma subestação
vinculada a outro COV.
47
A Figura 5 ilustra o modelo proposto de maneira mais detalhada. É
relevante observar que a plataforma multiagentes engloba as camadas 2 e 3. Na
camada 3, cada subestação possui um container que pode abrigar vários agentes,
cada um representando determinados elementos da subestação e assumindo certos
grupos de funções elétricas. O propósito de um container é formar um ambiente para
que os agentes possam ser executados. Os agentes da camada 3 interagem com
um container principal na camada 2, na qual é feita a comunicação entre a
plataforma multiagentes e os operadores por meio do servidor de aplicação. Esse
servidor provê serviços básicos, tais como HTTP e autenticação.
FIGURA 5 – DIAGRAMA DETALHADO DO MODELO DE TRÊS CAMADAS PROPOSTO, INCLUINDO O COV.
Este modelo embute em sua arquitetura uma estrutura de negociação entre
os agentes que representam os COVs. Dessa maneira, um COV pode negociar a
possessão temporária de uma subestação com seu atual proprietário, por meio de
regras pré-estabelecidas e regras baseadas no status do sistema. Por exemplo, uma
das regras prioritárias consiste no fato de que nenhuma subestação pode ficar
desacoplada de um agente operador em qualquer instante.
As negociações também levam em consideração os perfis dos operadores
48
envolvidos, estabelecendo regras de prioridade que provêm determinado operador
de maior ou menor poder em determinado instante. Por exemplo, a solicitação de
controle de uma determinada subestação por parte de um operador de um COV
pode ter maior ou menor prioridade de acordo com seu perfil.
Esta arquitetura distribuída possibilita que nos agentes das subestações
existam funções automatizadas que atuam independentemente do restante do
sistema e que as decisões dependentes de mais de uma subestação fiquem a cargo
dos COVs. O importante nesse caso é a capacidade que as subestações têm de
fornecer as informações necessárias para a tomada de decisão, de forma a não
centralizar tarefas específicas que não requerem uma monitoração global. Isso
também pode representar uma menor carga nos servidores centrais diminuindo a
necessidade de comunicação, de acordo com a filosofia de sistemas multiagentes.
Em termos de implementação, cada COV pode ser representado por um
agente registrado no serviço de diretório da plataforma JADE. Sempre que uma nova
subestação é incorporada ao sistema, ela se anuncia aos COVs localizados por
meio do serviço de diretório. O processo de negociação é iniciado assim que a
subestação faz uma chamada por propostas (CFP) aos COVs disponíveis. Essa
transação é feita de acordo com o protocolo de interação FIPA Contract Net
[FIPA06c]. Cada COV tem a opção de devolver uma proposta de aceite ou uma
rejeição.
O objetivo do processo é estabelecer, por meio de regras pré-determinadas
e do estado atual do sistema, o COV e o operador mais adequados para assumir o
controle da subestação. Esse processo pode ser visto como um balanceamento de
carga, cujos parâmetros poderiam ser a localização geo-elétrica da subestação, a
quantidade de operadores disponíveis em cada COV, a sobrecarga de trabalho de
cada operador, a complexidade da subestação, entre outros.
Os operadores podem, por meio de seus agentes, negociar a transferência
de controle de uma determinada subestação com outros ligados ao mesmo COV.
49
Vale salientar que, se a negociação ultrapassar os limites de um COV, quem
executa a negociação são os COV envolvidos. No caso da desconexão de um
operador, por exemplo, as subestações sob sua supervisão serão distribuídas entre
os demais operadores do COV por meio de regras. A decisão final sobre a
transferência de cada subestação está a cargo do próprio COV.
50
6 IMPLEMENTAÇÃO DO PROTÓTIPO PARA PROVA DE CONCEITO
O desenvolvimento de um protótipo tem como objetivo validar os conceitos
embutidos no modelo, apresentados na seção anterior. Entretanto, devido à
utilização de um arcabouço tecnológico, a implementação requer inicialmente a
consolidação da experiência no uso dessas tecnologias. Desta maneira, este
capítulo trata da prova de conceito sob o ponto de vista de integração das
tecnologias envolvidas.
O protótipo montado considera os elementos essenciais para encerrar uma
cadeia de interação que vai desde a interface de usuário via browser até a
subestação monitorada. O intuito é a redução de riscos do projeto por meio da
compreensão e validação da comunicação entre agentes e da montagem dinâmica
da interface com informações vindas da plataforma de agentes. Assim, o modelo de
negociação entre subestações, COVs e operadores não é implementado nesta
etapa. Detalhes do funcionamento de cada elemento são descritos na seqüência.
As ferramentas empregadas na construção foram o JADE versão 3.4,
máquina virtual Java 5.0, ambiente de desenvolvimento Java integrado Eclipse 3.2
[ECLIPSE06] e, como servidor HTTP e ambiente de execução de Servlets, o Apache
TomCat 5.5 [TOMCAT06]. Para geração de documentos SVG foi utilizado o editor
GLIPS Graffiti [GLIPS06].
6.1 SIMULADOR DE SUBESTAÇÃO
O simulador representa uma subestação de energia elétrica em operação,
capturando todos os estados e comportamentos possíveis de uma subestação real.
Os simuladores são úteis para o desenvolvimento e teste de aplicações SCADA,
devido à inviabilidade de se ter uma infra-estrutura elétrica completa em ambiente de
laboratório.
51
Como o circuito elétrico de uma subestação é complexo, onde muitos de
seus componentes possuem sensores e atuadores acoplados para leitura de
medidas e execução de comandos, o simulador montado neste trabalho representa
uma subestação fictícia, cujo esquema é mostrado na Figura 6.
FIGURA 6 – ESQUEMA ELÉTRICO DA SUBESTAÇÃO FICTÍCIA.
A energia elétrica chega na subestação e percorre a linha que está
conectada diretamente ao elemento T-1, um transformador. Em seguida, passa pelo
disjuntor DJ-01 e bifurca-se na barra horizontal, indo para os alimentadores 1 e 2,
atravessando antes os disjuntores DJ-02 e DJ-03 que estão nas barras verticais. A
partir daí, a energia elétrica vai para a rede de distribuição urbana. As medidas
elétricas de interesse são intensidade de corrente e potência, para as barras
verticais, e tensão e freqüência para a barra horizontal. Tais medidas são chamadas
de medidas analógicas. Para os disjuntores, é necessário conhecer suas medidas de
estado, aberto ou fechado.
52
No simulador, a estruturação das classes Java que representam as
medidas e os equipamentos foi baseada em um modelo chamado CIM (Common
Information Model) [IEC06]. Esse modelo foi desenvolvido pelo IEC (International
Electrotechnical Commission) com o propósito de unificar os conceitos sobre as
entidades existentes em uma subestação, seus atributos e relacionamentos,
facilitando a construção de sistemas de automação e a troca de informações entre
as organizações da área de energia elétrica. O modelo é implementado em um
diagrama de classes na notação UML (Unified Modeling Language) [OMG06].
Detalhes sobre o CIM e seu uso no contexto da automação de subestações podem
ser obtidos em [BRAGA06].
Para proporcionar o comportamento dinâmico, o simulador utiliza duas
threads que, periodicamente, abrem e fecham os disjuntores e calculam as medidas
analógicas. Por se tratar de um experimento, o cálculo usa números randômicos
dentro de intervalos pré-estabelecidos. Cada medida é identificada de forma única
dentro do simulador.
O simulador também aceita comandos externos para abrir ou fechar um
disjuntor ou para recuperar as atuais medidas, analógicas ou de estado. Todas as
mudanças de estado nos disjuntores são armazenadas em uma fila circular para
eventual recuperação do histórico das atuações sobre a subestação. Quando essa
recuperação ocorre, os estados lidos são removidos da fila. Caso haja enchimento
completo da fila, as medidas transbordadas vão para arquivos de log.
6.2 AGENTE SUBESTAÇÃO
Para incorporar a subestação na plataforma JADE, foi desenvolvido um
agente chamado AgenteSubestacao, que encapsula os detalhes de implementação
do simulador. Esse agente poderia conter inteligência local para tomar decisões a
respeito do monitoramento da subestação, comunicando-se com o resto da
53
plataforma somente quando necessário. Para o protótipo, no entanto, esse agente
possui apenas duas responsabilidades.
A primeira é receber, via mensagem ACL, solicitações de leitura de
medidas analógicas, efetuar consultas ao simulador e a preparação e envio de
resposta. A segunda é realizar, periodicamente, o consumo parcial da fila de
mudanças de estado no simulador e remetê-las para a camada de interface com o
usuário. Em ambos os casos, a entidade que interage com o AgenteSubestacao é
um outro agente, chamado de AgenteCliente, explicado mais adiante. O
AgenteSubestacao e o AgenteCliente são hospedados em containers diferentes,
mas em uma mesma plataforma JADE.
Para atender às solicitações, foi adicionado ao agente um comportamento
derivado da classe jade.core.behaviours.CyclicBehaviour. Esse comportamento fica
em estado de espera até a chegada de uma mensagem. Quando isso ocorre, uma
lista de identificadores de medidas é extraída do conteúdo dessa mensagem e, para
cada identificador, o agente associa um valor de medida obtido junto ao simulador.
Após recebimento da resposta, o comportamento fica novamente em espera por
novas solicitações.
A segunda responsabilidade do agente AgenteSubestacao foi
implementada por uma classe derivada de jade.core.behaviours.TickerBehaviour.
Essa classe usa a mesma estrutura do comportamento anterior para inserir na
mensagem todos os pares contendo identificador e valor de estado.
6.3 AGENTE CLIENTE
O AgenteCliente funciona neste protótipo como um elemento que faz a
ponte entre o AgenteSubestacao e a camada Web. Ele efetua, através de dois
comportamentos cíclicos distintos, a varredura das atuais medidas analógicas no
AgenteSubestacao, e a recepção das variações de estado que ocorrem nos
54
disjuntores da subestação. As informações obtidas são armazenadas em uma
estrutura de dados em memória para serem utilizadas na camada Web.
Essa estrutura é mantida internamente em uma classe Java instanciada
através do design pattern Singleton [GAMMA+95]. O Singleton garante que apenas
uma instância da classe é criada no contexto da aplicação. Assim, quando a camada
Web solicitar a estrutura, será retornado o mesmo objeto utilizado pelo
AgenteCliente. Evidentemente, para que haja somente um contexto para a
aplicação, o container JADE que hospeda o AgenteCliente é iniciado e executado no
mesmo processo da camada Web. Essa forma de implementação cria um alto
acoplamento entre as duas camadas, Web e agentes, mas foi escolhida devido a
sua simplicidade e a uma restrição da plataforma JADE – não é permitido o acesso
direto ao agente a partir de aplicações externas, eles ficam encapsulados através de
uma outra classe Java, que não apresenta em sua interface as variáveis-membro
pertencentes aos agentes. Outras alternativas de integração poderiam ser
exploradas, como a troca de mensagens com a plataforma de agentes via JMS, o
que eliminaria o acoplamento físico permitindo que cada camada seja executada em
um processo distinto.
Embora a varredura pudesse ser iniciada somente sob demanda da
camada Web, optou-se por embutir essa ação no agente. Assim, quando tal camada
precisa da informação, ela consulta a estrutura de dados e considera que lá estão as
medidas mais atualizadas.
O agente insere na estrutura de dados apenas o último estado de cada
disjuntor. Apesar do histórico de mudanças ser descartado, o propósito dessa
remessa de informações de estado é verificar o comportamento do agente na
recepção de uma torrente de dados, os quais, em situações reais de operação,
poderiam ser eventos, alarmes e outras mudanças de estados ocorridas na
subestação.
A Figura 7 mostra a ferramenta JADE Sniffer Agent capturando as
55
interações entre o AgenteSubestacao e o AgenteCliente, colocados em execução no
Main-Container e container-1, respectivamente. As mensagens assinaladas como
INFORM referem-se ao envio das medidas de estado, e as mensagens QUERY-REF
e respectiva INFORM-REF indicam a solicitação e resposta do AgenteCliente por
medidas analógicas. Essas assinalações significam a intenção da mensagem ACL,
conforme descrito em [FIPA06b], sendo INFORM a intenção de um agente notificar
um evento, QUERY-REF a requisição a um agente e INFORM-REF a resposta a
uma requisição.
FIGURA 7 – INTERAÇÃO ENTRE AGENTECLIENTE E AGENTESUBESTACAO.
6.4 CAMADA WEB
A camada Web deste protótipo apresenta em um browser as informações
mantidas pelo AgenteCliente relativas à subestação fictícia.
56
No sistema SCADA atual, as medidas obtidas periodicamente da
subestação são apresentadas ao usuário dentro de um diagrama esquemático,
observado na Figura 8. Isso facilita a associação dos valores das medidas com o
equipamento elétrico correspondente.
FIGURA 8 - EXEMPLO DA INTERFACE DE MONITORAMENTO PROVIDA PELO SISTEMA SCADA.
Conforme discutido na seção 3.2, a linguagem SVG permite a conjugação
de texto e formas geométricas em um documento XML, de maneira que o resultado
final seja visualizado como uma imagem dentro de um browser. Assim, para montar
a interface de usuário, foi criado um documento SVG com a aparência visual da
subestação fictícia, cujas posições para a impressão das medidas foram
identificadas através de elementos da linguagem XML.
Ao ser carregado no browser, o documento SVG aciona uma função escrita
na linguagem JavaScript que, por sua vez, utiliza AJAX para requisitar ao servidor
Web os dados da subestação.
A requisição é atendida por um programa Servlet, que obtém as medidas
analógicas e de estado geradas pelo AgenteCliente e monta a resposta em um
documento XML. Uma função em JavaScript percorre as informações recebidas da
requisição e efetua a atualização no documento SVG, nos elementos previamente
identificados como posições de medidas.
57
Os resultados no browser são mostrados na Figura 9. Observa-se em (A),
na cor vermelho, as medidas analógicas, e em verde, o estado fechado dos
disjuntores. Após nova interação com o servidor Web, o resultado, em (B), mostra as
medidas com valor zero devido aos disjuntores, indicados em vermelho, estarem
abertos. O período de atualização é de cinco segundos, para manter compatibilidade
com o ciclo de atualização do AgenteCliente.
(A) (B)
FIGURA 9 - RESULTADOS DA APRESENTAÇÃO DAS INFORMAÇÕES DA SUBESTAÇÃO FICTÍCIA.
58
7 CONCLUSÕES E TRABALHOS FUTUROS
Uma investigação de arquiteturas e tecnologias disponíveis para a
construção de sistemas de automação de subestações de energia elétrica é
apresentada neste trabalho. Sistemas multiagentes baseados em Web têm sido foco
de estudo e implementação de aplicações para automação, produzindo arquiteturas
distribuídas, modulares e integráveis.
Testes de desempenho sobre tecnologias para computação distribuída são
executados em laboratório. Resultados ratificam a tendência verificada na literatura,
apontando para a utilização da tecnologia de multiagentes e, como conseqüência, a
inclusão de inteligência localizada.
Nota-se que a plataforma JADE está em fase de maturidade, oferecendo
um conjunto de ferramentas para desenvolvimento, facilidades para integração e
suporte à linguagem Java.
O uso de Web browsers na camada de apresentação exige o emprego de
técnicas para resolver a questão da atualização freqüente de informações mostradas
ao usuário, e a aplicação de recursos para aprimorar os elementos visuais em uma
página HTML. É tido como boa prática o emprego do MVC para estruturação dos
componentes dessa camada.
Um modelo específico para a automação de subestações é proposto, o
qual apresenta uma estrutura virtual dinâmica de controle e monitoração. Este
modelo ainda deve ser avaliado de forma criteriosa, considerando-se os requisitos
existentes no sistema de automação de subestações atual e os que são necessários
a sua evolução frente às tecnologias disponíveis atualmente.
Conclui-se que deve haver continuidade dos trabalhos para tornar viável o
desenvolvimento de um sistema de automação mais flexível, pois há diversas
questões em aberto que merecem estudos e testes. Mesmo assim, já é lançada
alguma luz sobre o problema da interoperabilidade entre os centros de operação.
59
7.1 TRABALHOS FUTUROS
Estudos sobre segurança no modelo proposto devem ser iniciados.
Criptografia no tráfego de mensagens, autenticação e autorização de usuários,
registro de logs para auditoria, proteção contra intrusos e não repúdio são pontos
que merecem atenção.
Com relação à tolerância à falhas, avaliar o uso de containers JADE e da
camada Web de forma redundante, observando o impacto da replicação de agentes
sobre o desempenho global do sistema. Verificar alternativas para a integração do
JADE com aplicações externas, de forma a diminuir o acoplamento entre as
camadas e garantir a entrega de mensagens entre elas.
Testes de carga devem ser planejados e executados sobre um protótipo
mais completo, visando identificar gargalos e robustez da arquitetura proposta.
Levantar requisitos junto aos usuários para especificar as regras de
negociação entre COVs e subestações, e a responsabilidade da tomada de
decisões. Mesmo havendo inteligência embutida no sistema capaz de descobrir a
situação ótima para distribuição da carga entre os COVs, pode haver interesse do
usuário em tomar a decisão final, utilizando essa informação apenas como fator de
apoio.
Evoluir o protótipo buscando aprimoramento na camada de interação com
o usuário, permitindo emissão de comandos e monitoramento simultâneo de várias
subestações.
Investigar técnicas de engenharia de software para modelagem de
sistemas multiagentes, visando capturar o dinamismo das interações entre agentes e
os seus comportamentos.
60
REFERÊNCIAS
[BARRETO06] BARRETO, C. G. Agregando Frameworks de Infra-Estrutura em uma Arquitetura Baseada em Componentes: Um Estudo de Caso no Ambiente AulaNet. Rio de Janeiro, 2006. Dissertação (Mestrado em Informática) - Departamento de Informática do Centro Técnico e Científico – Pontifícia Universidade Católica do Rio de Janeiro.
[BELLIFEMINE +05a] BELLIFEMINE, F.; CAIRE, G.; TRUCCO, T; RIMASSA, G. Jade Programmer’s guide, 2005. Disponível em <http://jade.tilab.com/doc/>. Acesso em Ago. 2006.
[BELLIFEMINE +05b] BELLIFEMINE, F.; CAIRE, G.; TRUCCO, T; RIMASSA, G.; MUNGENAST, R. Jade Administrator´s Guide, 2005. Disponível em <http://jade.tilab.com/doc/>. Acesso em Ago. 2006.
[BOYER93] BOYER, S. A. SCADA – Supervisory Control and Data Acquisition. Instrument Society of America, 1993.
[BRAGA06] BRAGA, C. de C. Estudo do JADE e do CIM no Contexto de um Sistema SCADA. Curitiba, 2006. Monografia (Especialização em Informática) Departamento Acadêmico de Informática - Universidade Tecnológica Federal do Paraná.
[BUSE+03] BUSE, D. P.; SUN, P.; WU, Q. H., FITCH, J. Agent-Based Substation Automation. Proc. IEEE Power & Energy, v. 1, n. 2, p. 50-55, Mar/Abr 2003.
[COSTA99] COSTA, M. T. C. da. Uma Arquitetura Baseada em Agentes para Suporte ao Ensino à Distância. Florianópolis, 1999. Tese (Doutorado em Engenharia de Produção) – Centro Tecnológico, Universidade Federal de Santa Catarina.
[IEC06] INTERNATIONAL ELECTROTECHNICAL COMMISSION. Common Information Model (CIM). Disponível em < http://www.iec.ch/>. Acesso em 20 Jul. 2006.
[DURFEE+89] DURFEE, E. H.; LESSER, V. Negotiating Task Decomposition and Allocation Using Partial Global Planning. In: GASSER, L; HUHNS, M. (eds). Distributed Artificial Intelligence. San Francisco, California.: Morgan Kaufmann, 1989, v. 2, p. 229–244.
[EBATA+00] EBATA, Y.; HAYASHI, H.; HASEGAWA, Y.; KOMATSU, S.; SUZUKI, K. Development of the Intranet-based SCADA (supervisory control and data acquisition system) for power system. Power Engineering Society Winter Meeting, IEEE, v. 3, p. 23-27, Jan 2000.
[ECLIPSE06] Eclipse - an open development platform. Página oficial do Eclipse. Disponível em <http://www.eclipse.org/>. Acesso em 21 Nov. 2006.
[FARACO98] FARACO, R. A. Uma arquitetura de Agentes para Negociação dentro do Domínio do Comércio Eletrônico. Florianópolis, 1998. Dissertação (Mestrado em Engenharia de Produção) – Centro Tecnológico, Universidade Federal de Santa Catarina.
61
[FERNANDES03] FERNANDES, A. M. da R.. Inteligência Artificial – Noções Gerais. Florianópolis, SC: Visual Books, 2003.
[FIPA06a] FIPA Specification Grouped by Category. Disponível em <http:// www.fipa.org/ repository/ bysubject.html>. Acesso em: 23 Nov. 2006.
[FIPA06b] FIPA Communicative Act Library Specification. Disponível em <http://www.fipa.org/specs/fipa00037/SC00037J.html>. Acesso em: 23 Nov. 2006.
[FIPA06c] FIPA Contract Net Interaction Protocol Specification. Disponível em <http://www.fipa.org/specs/fipa00029/SC00029H.html>. Acesso em 23 Nov. 2006.
[FLASH06] Flash Professional 8. Disponível em <http://www.adobe.com/ products/flash/>. Acesso em 25 Nov. 2006.
[FOWLER03] FOWLSER, M. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003.
[FRANKLIN+96] FRANKLIN, S.; FRAESSER, A. Is it an Agent, or just a Program?: a Taxonomy of Autonomous Agents. Proceedings of the Third International Workshop on Agent Theories, Architectures, and Languages. Springer-Verlag, 1996.
[GAMMA+95] GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
[GLIPS06] GLIPS Graffiti SVG Editor. Página oficial do projeto GLIPS. Disponível em <http://glipssvgeditor.sourceforge.net/>. Acesso em 25 Nov. 2006.
[HOPKINSON+03] HOPKINSON, K. M.; BIRMAN, K. P.; GIOVANINI, R.; COURY, D. V.; WANG, X.; THORP, J. S. EPOCHS: integrated commercial off-the-shelf software for agent-based electric power and communication simulation. Simulation Conference, Proceedings of the 2003 Winter, v. 2, p. 1158 – 1166, Dez. 2003.
[JADE06] Java Agent Development Framework. Página Oficial do JADE. Disponível em <http://jade.tilab.com/>, Acesso em 01 Nov. 1006.
[JENNINGS+98] JENNINGS, N.; SYCARA, K.; WOOLDRIGE, M. A Roadmap of Agent Research and Development. Autonomous Agents and Multi-Agent Sytems, v. 1, p. 7-38, 1998.
[JMETER06] Apache Jmeter. Página oficial do framework JMeter. Disponível em <http://jakarta.apache.org/jmeter/>. Acesso em 24 Nov. 2006.
[JOHNSON02] JOHNSON, R. Expert One-on-One J2EE Design and Development. Reading: Wiley Publishing Inc., 2002.
[JOHNSON04] JOHNSON, R. Expert One-on-One J2EE Development without EJB. Wiley Publishing Inc., 2004.
62
[JSF06] JavaServer Faces. Implementação de referência da Sun. Disponível em <https://java.sun.com/javaee/javaserverfaces/>. Acesso em: 11 Nov. 2002.
[JUNG+04] JUNG, J.; LIU, C. Multi-agent system technologies and an application for power system vulnerability. Power Engineering Society General Meeting (IEEE), v. 1, p. 61 - 64, 2004.
[JUNIT06] JUnit.org. Página oficial do framework JUnit. Disponível em <http://www.junit.org/index.htm>. Acesso em 24 Nov. 2006.
[LEA06] LEA, K. The Java is Faster than C++ and C++ Sucks Unbiased Benchmark. Disponível em <http://kano.net/javabench/>. Acesso em 02 Fev. 2006.
[LEEUWEN+97] LEEUWEN, E. H. VAN; NORRIE, D. Intelligent manufacturing: holons and holarchies. Manufacturing Engineer, v. 76, n. 2, p. 86–88, 1997.
[LI+02] LI; D.; SERIZAWA Y.; KIUCHI, M. Concept design for a Web-based supervisory control and data-acquisition (SCADA) system. In: TRANSMISSION AND DISTRIBUTION CONFERENCE AND EXHIBITION 2002, Asia Pacific. IEEE/PES, v. 1, p. 32 - 36, Out. 2002.
[OMG06] OBJECT MANAGEMENT GROUP. Unified Modeling Language (UML). Página oficial da UML. Disponível em <http://www.uml.org/>. Acesso em 19 Nov. 2006.
[PE06] Sun Java System Application Server Platform Edition 8.2. Página oficial do servidor de aplicações J2EE 1.4 da Sun. Disponível em <http:// www.sun.com/software/products/appsrvr/previous/pe8/index.xml>. Acesso em: 24 Nov. 2006.
[PRAYURACHATUPORN+01] PRAYURACHATUPORN, S; BENEDICENTI, L. Increasing the reliability of control systems with agen technology. ACM SIGAPP Applied Computing Review, v. 9, n. 2, Jul. 2001.
[QIU+02] QIU, B.; GOOI, H. B.; LIU, Y.; CHAN, E. K. Internet-based SCADA display system. IEEE Computer Applications in Power, p. 14-19, Jan. 2002.
[SEKI+02] SEKI, T.; KUBOTA, K.; TSUCHIYA, T.; TAMURA, S.; WATANABE, H.; TANAKA, T. Power systems information delivering system using Internet technology. In: TRANSMISSION AND DISTRIBUTION CONFERENCE AND EXHIBITION 2002, Asia Pacific. IEEE/PES, v. 1, p. 12 – 17, Out. 2002.
[SHONO+02] SHONO, T.; SEKIGUCHI, K.; TANAKA, T.; KATAYAMA, S. Remote Supervisory System for a Power system Protection and Control Unit Applying Mobile Agent Technology. In: TRANSMISSION AND DISTRIBUTION CONFERENCE AND EXHIBITION 2002, Asia Pacific. IEEE/PES, v. 1, p. 148-153, Out. 2002.
[SPRING06] Spring Framework. Página oficial do framework Spring. Disponível em <http://www.springframework.org/>. Acesso em: 11 Nov. 2006.
[STRUTS06] Struts. Página oficial do framework Struts. Disponível em <http:// struts.apache.org/>. Acesso em: 11 Nov. 2006.
63
[SUN06] The Source for Java Developers. Página oficial do Java. Disponível em <http://java.sun.com>. Acesso em: 11 Nov. 2006.
[SYCARA98] SYCARA, K. P. Multiagent Systems. AI Magazine, v. 10, n. 2, p. 79-93, 1998.
[TOMCAT06] Apache Tomcat. Página oficial do Apache Tomcat. Disponível em <http://tomcat.apache.org/>. Acesso em 21 Nov. 2006.
[VRBA03] VRBA, P. JAVA-Based Agent Platform Evaluation. In: HoloMAS 2003, p. 47–58, 2003.
[W3C06] WORLD WIDE WEB CONSORTIUM. Scalable Vector Graphics – XML Graphics for the Web. Página oficial do SVG. Disponível em <http://www.w3.org/Graphics/SVG/>. Acesso em 11 Nov. 2006.
[W3SCHOOLS06a] W3SCHOOLS. Introduction to SVG. Disponível em <http://www.w3schools.com/svg/svg_intro.asp>. Acesso em 11 Nov. 2006.
[W3SCHOOLS06b] W3SCHOOLS. AJAX Tutorial. Disponível em <http:// www.w3schools.com/ajax/default.asp>. Acesso em 12 Nov. 2006.
[YAVNAI94] YAVNAI, A. Distributed decentralized architecture for autonomous cooperative operation of multiple agent system. AUV ’94 – Proceedings of the 1994 Symposium on Autonomous Underwater Vehicle Technology. Jul. 1994, p. 61 – 67.
[ZHANG+04] ZHANG, Z. et al. Multiagent system solutions for distributed computing, communications and data integration needs in the power industry. Power Engineering Society General Meeting (IEEE), v.1, p. 45- 49, 2004.
Top Related