Monografia JAVA-Ciro-Final - DAINF

Propaganda
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA
CIRO DE CARVALHO BRAGA
ESTUDO DO JADE E DO CIM NO CONTEXTO DE UM SISTEMA
SCADA
MONOGRAFIA DE ESPECIALIZAÇÃO
ORIENTADORA: PROF.ª MSC. ANA CRISTINA B. KOCHEM VENDRAMIN
CURITIBA
DEZEMBRO 2006
CIRO DE CARVALHO BRAGA
ESTUDO DO JADE E DO CIM NO CONTEXTO DE UM SISTEMA
SCADA
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.
Orientadora: Prof. ª Msc. Ana Cristina
B. Kochem Vendramin.
CURITIBA
DEZEMBRO 2006
i
Aos colegas da automação e do projeto de P&D.
ii
AGRADECIMENTOS
A todos que direta ou indiretamente auxiliaram na realização do trabalho.
iii
SUMÁRIO
Lista de Figuras .............................................................................................................v
Lista de Siglas................................................................................................................vi
Resumo ....................................................................................................................... viii
1 Introdução ...............................................................................................................1
1.1 Desafio ....................................................................................................................1
1.2 Motivação ...............................................................................................................1
1.3 Objetivo ..................................................................................................................2
1.4 Estrutura do trabalho...............................................................................................2
2 SASE – Sistema de automação de subestações.....................................................4
2.1 Histórico..................................................................................................................4
2.2 Inserção no contexto nacional ................................................................................5
2.3 Os Centros de Operação de Subestações da COPEL .............................................7
2.4 Características .........................................................................................................8
3 Arquitetura distribuída baseada em agentes .....................................................11
3.1 Rede Ethernet........................................................................................................12
3.2 Middleware ...........................................................................................................13
3.3 Tecnologia de Agentes..........................................................................................14
3.4 Desenvolvimento de agentes em Java ..................................................................18
3.5 FIPA......................................................................................................................20
3.6 JADE.....................................................................................................................22
3.7 Ontologia ..............................................................................................................28
4 Padroes IEC / CIM ...............................................................................................35
4.1 Tendência para Barramento de Integração ...........................................................36
4.2 O Padrao IEC 61970-301 (CIM) ..........................................................................38
4.3 CIM versus Ontologia...........................................................................................44
5 Experiência ............................................................................................................46
5.1 Arquitetura hipotética ...........................................................................................47
5.2 Modelagem da subestação ....................................................................................53
5.3 Simulador de subestação.......................................................................................55
5.4 Implementação de objetos CIM............................................................................57
5.5 Testes com Ontologia ...........................................................................................63
5.6 Agentes implementados........................................................................................65
5.7 Interação entre agentes e apresentação .................................................................67
6 Conclusões .............................................................................................................70
6.1 Trabalhos futuros ..................................................................................................71
Referências ...................................................................................................................73
iv
LISTA DE FIGURAS
Figura 1 - Esquema hierárquico - inserção da COPEL no sistema elétrico nacional................. 6
Figura 2 - Mapa do sistema elétrico do Paraná [ENGTRA05]. ................................................. 7
Figura 3 - Ciclo de vida de um agente JADE ........................................................................... 23
Figura 4 - Modelo UML da hierarquia de classes dos comportamentos JADE. ...................... 25
Figura 5 - Protocolo FIPA-ContractNet [Malucelli06]. ........................................................... 26
Figura 6 - Exemplo de uma plataforma distribuída JADE com tolerância a faltas. ................. 27
Figura 7 - O Modelo de Referência de Conteúdo do JADE..................................................... 32
Figura 8 - Meta-modelo do CIM. ............................................................................................. 39
Figura 9 - Visão geral dos pacotes CIM. .................................................................................. 40
Figura 10 - CIM: Hierarquia de classes de equipamentos........................................................ 42
Figura 11 - Estudo da estrutura física na COPEL. ................................................................... 50
Figura 12 - Estudo da estrutura lógica na COPEL. .................................................................. 52
Figura 13 - Unifilar proposto para o protótipo. ........................................................................ 54
Figura 14 - Modelo CIM reduzido para o protótipo................................................................. 58
Figura 15 – Identificação dos objetos CIM sobre o unifilar..................................................... 60
Figura 16 - Protégé: mini-ontologia CIM................................................................................. 64
Figura 17 - Gerenciamento gráfico dos agentes do protótipo no JADE................................... 66
Figura 18 - Sniffer: captura de mensagem ACL/SL0. .............................................................. 67
Figura 19 - Tela de operação do protótipo. .............................................................................. 69
v
LISTA DE SIGLAS
ACL
Agent Communication Language
API
Application Program Interface
AJAX
Asyncronous Java And XML
ANEEL
Agência Nacional de Energia Elétrica
CIM
Common Information Model
CO
Centro de Operação
COE
Centro de Operação de Estações
COD
Centro de Operação da Distribuição
COV
Centro de Operação Virtual
COPEL
Companhia Paranaense de Energia
EAI
Enterprise Application Integration
EPRI
Electric Power Research Institute
FIPA
Foundation for Intelligent Physical Agents
IDL
Interface Definition Language
IEC
International Electrotechnical Commission
IED
Intelligent Electronic Device
IHM
Interface Homem-Máquina
IIOP
Internet Inter-ORB Protocol
JADE
Java Agent Development Framework
JNI
Java Native Interface
JSP
Java Server Page
JVM
Java Vitual Machine
MOF
Managed Object Format
OCL
Object Constraint Language
ORB
Object Request Broker
OWL
Web Ontology Language
vi
RDF
Resource Description Framework
RMI
Remote Method Invocation
SASE
Sistema de Automação de Subestações
SCADA
Supervisory Control and Data Acquisition
SE
Subestação
SVG
Scalable Vector Graphics
UTR
Unidade Terminal Remota
UML
Unified Modeling Language
VLAN
Virtual Local Area Network
VPN
Virtual Private Network
XML
Extensible Markup Language
vii
RESUMO
A constante evolução dos sistemas computacionais em plataforma baixa propicia um
debate enriquecedor no campo da engenharia elétrica relacionada ao controle de
processos industriais. A COPEL, concessionária de energia elétrica do Paraná,
desenvolve uma solução própria de automação de subestações de transmissão e
distribuição que tem seu projeto inicial datado na década de 1990. Questões
relacionadas à adequação de normas administrativas, à hierarquia do setor elétrico,
à integração de aplicativos, à aderência a padrões abertos e à rapidez na tomada de
decisão operacional impelem a concessionária a procurar novas abordagens para se
manter no patamar de qualidade conquistado ao longo dos anos. Uma das
mudanças desejadas é o uso estratégico de sua estrutura de rede de comunicação.
A COPEL possui um backbone de alta velocidade que vem sendo utilizado até
mesmo em importantes programas governamentais de inclusão digital, promovendo
o desenvolvimento do estado. O uso de uma solução em rede dedicada exige o
conhecimento de sistemas distribuídos, programação, segurança, banco de dados,
confiabilidade e disponibilidade. Dentro dessa perspectiva, o presente trabalho
descreve como as tecnologias Java podem auxiliar no estudo de um sistema
distribuído com arquitetura aberta para a área de supervisão e controle operacional
da COPEL. Para entendimento do contexto, é apresentado o atual sistema de
automação da empresa. Depois, aborda-se a tecnologia de agentes em Java para
suprir as funções de middleware e estuda-se um padrão para a modelagem de
dados no setor elétrico. Por fim, são apresentados resultados práticos de um
protótipo com a aplicação dessas tecnologias, servindo como laboratório para a
COPEL consolidar o caminho escolhido para o seu sistema de automação.
Palavras-chave: Java, sistemas distribuídos, Common Information Model, plataforma
de agentes JADE, automação de subestações de energia elétrica.
viii
1
1
INTRODUÇÃO
A evolução dos centros de controle de energia elétrica é influenciada pelo
cenário do setor elétrico e pelo mercado de informática. A cada nova geração de
centros, aumenta-se o grau de incertezas e de abertura do ambiente. A
transformação atual, cuja consolidação deve levar ainda uma década, está
fortemente influenciada pelas mudanças na regulamentação do mercado de energia
e pela maturidade da tecnologia de processamento distribuído.
1.1 DESAFIO
O desafio deste trabalho é mostrar que as tecnologias Java podem ser
utilizadas como parte de um controle de processo industrial, especificamente, na
automação de subestações de energia elétrica.
1.2 MOTIVAÇÃO
A principal motivação desse trabalho é a modernização do sistema SCADA
(Supervisory Control and Data Acquisition) atualmente implantado na COPEL
(Companhia Paranaense de Energia). Apesar de atender com eficácia as
necessidades operacionais da concessionária, a atual solução carece de uma
sintonia com as principais tendências no setor, explorando tecnologias em ascensão.
Como a área de desenvolvimento de sistemas da concessionária pretende
pôr em discussão toda a solução, com foco no plano de negócios da área de
engenharia de automação da transmissão e da distribuição, abrem-se possibilidades
para a utilização de soluções baseadas em Java. Este estudo aqui apresentado
serve para aumentar os conhecimentos da equipe de desenvolvimento e para
referência de implementação do novo sistema.
Este trabalho está relacionado com um projeto de Pesquisa e
2
Desenvolvimento da ANEEL (Agência Nacional de Energia Elétrica) em fase de
execução pela empresa. Outro estudo acadêmico, também relacionado ao projeto,
complementa o entendimento deste trabalho [Dometerco06].
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. O
aumento do capital intelectual dos envolvidos reflete no aumento da qualidade dos
produtos e serviços da área de TI (Tecnologia da Informação) da empresa.
Algumas características pretendidas na modernização do atual sistema são
a interoperação entre os centros de operação, facilidade e conforto na operação,
aumento na segurança do sistema, integração entre os sistemas, desenvolvimento
ágil (expansão / manutenção).
1.3 OBJETIVO
O objetivo deste trabalho é apresentar um estudo dos conceitos de um
middleware para prover suporte a sistemas distribuídos baseados em uma
tecnologia de agentes implementada em Java. Também se pretende expor um
modelo UML de classes para representação de dados que compõem o universo de
uma concessionária de energia elétrica e um protótipo simplificado para avaliação de
algumas características levantadas (prova de conceitos).
1.4 ESTRUTURA DO TRABALHO
O trabalho está organizado da seguinte maneira. No capítulo 2, são
apresentados alguns aspectos em torno do atual sistema de automação da
concessionária de energia elétrica do estado do Paraná. No capítulo seguinte, é
estudada a tecnologia de agentes em Java para suprir as funções de middleware em
sistemas distribuídos. Depois, mostra-se uma pesquisa sobre a padronização de um
3
modelo de informações a ser utilizado em empresas de energia elétrica. A parte
experimental é descrita no capítulo 5. Finalmente, no capítulo 6 são enunciadas as
conclusões e propostas para trabalhos futuros.
4
2
SASE – SISTEMA DE AUTOMAÇÃO DE SUBESTAÇÕES
Este capítulo apresenta alguns aspectos em torno do atual sistema de
automação da concessionária de energia elétrica do estado do Paraná. O
entendimento da estrutura da área operacional e da interação com agentes externos
estabelece a importância estratégica de um sistema computacional para supervisão
e controle das subestações de energia.
2.1 HISTÓRICO
Na década de 80 a COPEL [COPEL06] usava um sistema proprietário de
hardware e software desenvolvido pela empresa Harris, hoje GE-Harris, para
supervisionar a rede de transmissão de energia elétrica paranaense. Porém, nessa
época, a companhia tomou a decisão de manter o sistema por si mesma, assumindo
a manutenção e o desenvolvimento de hardware e software, com foco na
independência e otimização do sistema para atender com mais qualidade e eficácia
o crescimento da demanda por energia elétrica.
O primeiro protótipo de um sistema de automação com solução própria foi
feito em linguagem Assembly no ano de 1986. Quatro anos mais tarde era liberada
uma versão em linguagem C feita sobre sistema operacional DOS. Em 1992 iniciouse um programa de automação em larga escala de suas subestações. Com uma
equipe multidisciplinar reunida e alocada especialmente ao programa, finalizou-se
em 1994 a primeira versão do SASE (Sistema de Automação de Subestações),
escrito para o sistema operacional QNX (um sistema multitarefa e tempo-real) em
linguagem C/C++. Neste ano o SASE começou a ser implantado no sistema elétrico
paranaense. De 1994 para cá, o sistema vem sendo constantemente expandido e
melhorado e é utilizado em 98% das 131 subestações de transmissão e em 86% das
380 subestações de distribuição (outubro 2006), com meta de atingir a totalidade até
5
o final de 2007. De 2003 até começo de 2006, foi desenvolvido um projeto para
portar o código do SASE para LINUX, sem perder a compatibilidade com o QNX. A
empresa está substituindo gradativamente as versões em campo para o novo
sistema.
O SASE possui hoje perto de 50 processos escritos em quase 270.000
linhas de código e é mantido por uma equipe de quase 20 profissionais com
formação em Engenharia Elétrica ou em Engenharia de Software, sendo a maioria
com pós-graduação em diferentes áreas ligadas direta ou indiretamente à tecnologia
de informação.
2.2 INSERÇÃO NO CONTEXTO NACIONAL
O órgão que regulamenta o setor elétrico nacional desde 1997, definindo
os níveis mínimos aceitáveis de qualidade de energia que as concessionárias devem
manter é a ANEEL [ANEEL06], criada pela Lei n.º 9.427 de 26 de Dezembro de
1996 e regulamentação no decreto n.º 2.335 de 6 de outubro de 1997. A ANEEL não
tem atribuição de operar o sistema.
O órgão responsável pela operação é o ONS (Operador Nacional do
Sistema Elétrico) [ONS06]. Ele é “uma entidade de direito privado, sem fins
lucrativos, criada em 26 de agosto de 1998, responsável pela coordenação e
controle da operação das instalações de geração e transmissão de energia elétrica
no Sistema Interligado Nacional (SIN), sob a fiscalização e regulação da ANEEL”
[ONS06].
A COPEL, através do COS (Centro de Operação do Sistema), atua em
conjunto com centros de operação de outras empresas e com o ONS, seguindo uma
estrutura hierárquica definida, dentro do SIN (Sistema Interligado Nacional).
Além de supervisionar as instalações da COPEL, o COS também recebe
dados em tempo real das empresas interligadas. Esses dados são de vital
6
importância para a segurança da operação do SIN, pois a COPEL está
geograficamente localizada em um ponto estratégico de transmissão de energia
elétrica, de interligação entre as regiões Sul e Sudeste .
A participação do COS na operação conjunta do SIN é regida pelos
procedimentos de rede elaborados pelo ONS e homologados pela ANEEL,
atendendo à determinação da Lei nº 9.648, de 27 de maio de 1998, regulamentada
pelo Decreto nº 5081, de 14 de maio de 2004, e pelo Contrato CPST nº 009/1999,
firmado entre a COPEL e o ONS em 9 de fevereiro de 2000, em Brasília, alterado
pelo Memorando de Entendimentos de 06.04.2006.
A COPEL deve permitir que o ONS atue sobre a rede elétrica mantida pela
empresa, tendo acesso a determinadas informações, relativas a medidas de tensão,
estados de chaves, entre outras, dessa rede. Para tanto, a companhia deve enviar
pontos monitorados da rede e deve acatar em determinados níveis à soberania do
ONS, no tocante a manobras no próprio sistema.
A Figura 1 ilustra como a COPEL aparece para o Operador Nacional do
Sistema e como está organizada a estrutura interna, hierarquicamente.
Operador Nacional do
Sistema Elétrico
- ONS / CNOS -------------------------------Governo Brasileiro
(Brasília)
Centro de Controle
- ONS / COSR-S -------------------------------Região sul
PR / SC / RS
(Florianópolis)
Centro de Operação do
Sistema COPEL
- COS -------------------------------COPEL
(Curitiba)
9 COEs
-------------------------------Centro de Operação de
Estações da Engenharia
de Transmissão
Centros de Controle
-------------------------------Demais regiões
Centros de Operação da
Geração COPEL
-------------------------------COPEL
(Curitiba)
5 CODs
-------------------------------Centro de Operação da
Engenharia de
Distribuição
Centros de Operação
-------------------------------Outras concessionárias
(Sul)
Automação da Distribuição:
-subdivididas entre os CODs em 5 regiões,
-automatizadas, mas necessitando de presença humana.
Subestações da Transmissão (128):
-subdivididas entre os COEs por região,
-total de 6 regiões,
-totalmente automatizadas, sem presença humana.
Figura 1 - Esquema hierárquico - inserção da COPEL no sistema elétrico nacional.
7
2.3 OS CENTROS DE OPERAÇÃO DE SUBESTAÇÕES DA COPEL
Segundo o modelo da ANEEL para o sistema elétrico, a COPEL divide o
controle de acordo com a separação elétrica existente entre suas subsidiárias de
transmissão e distribuição. Os COEs (Centros de Operação de Estações) controlam
as subestações de transmissão. Os CODs (Centros de Operação da Distribuição)
controlam as subestações de distribuição.
Os pontos relevantes para o COS são obtidos pela comunicação com os
COEs. Os CODs são independentes do COS, mas possuem interligação com alguns
COEs para receber informações de pontos em subestações mistas (contém
barramentos de alta e de média tensão). Essas duas áreas da companhia se
diferenciam pelo nível de tensão que controlam. Segundo a ANEEL, a transmissão
de energia elétrica engloba a rede de 230 kV a 750 kV e a distribuição engloba
tensões abaixo de 230 kV.
A Figura 2 mostra as divisões elétrico-geográficas do estado do Paraná.
Em cada região há pelo menos um COE ou COD.
Região de
Maringá
Região de
Cascavel
Região de
Pato Branco
Região de
Londrina
Região de
Ponta Grossa
Região de
Curitiba
Figura 2 - Mapa do sistema elétrico do Paraná [ENGTRA05].
8
Existem
cinco
CODs
espalhados
pelo
estado,
controlando
380
subestações, das quais, 326 são totalmente automatizadas. Na transmissão, são
nove COEs mantendo 131 SEs (Subestações) de tensão igual ou superior a 69 kV,
totalmente automatizadas, sendo que nas consideradas subestações-chave a
ANEEL determina que haja a presença de operadores.
2.4 CARACTERÍSTICAS
Os protocolos “chão-de-fabrica” mais antigos são baseados em meio serial
e são amplamente utilizados ainda hoje pelas concessionárias. Nesse contexto, é
comum a existência de diversos centros de operação regionais, distribuídos
geograficamente, sem, contudo, haver uma integração forte entre eles.
Os sistemas de controle de processos industriais podem ser representados
por dois níveis estruturais:
•
Acionamento de comandos, aquisição, adaptação e isolamento de
sinais elétricos: representa a parte que entra em contato com os
equipamentos do universo sob controle;
•
Supervisão e controle: representa a interação com os usuários e a
tomada de decisões.
Esse tipo de sistema é conhecido na engenharia elétrica pela sigla SCADA.
Uma topologia típica de um SCADA aplicado em um controle de
transmissão e distribuição de energia elétrica possui UTRs (Unidade Terminal
Remota) instaladas em subestações responsáveis pela interação direta com os
sensores e atuadores vinculados aos equipamentos elétricos. Estes efetuam captura
de informações da planta elétrica e enviam-nas para as estações centrais,
localizadas em centros de operação regionais, por meio de canais seriais, formando
uma estrutura ponto-a-ponto em estrela do tipo mestre-escravo. As estações
centrais acumulam os dados recebidos das UTRs e repassam para os
9
microcomputadores IHMs (Interface Homem-Máquina) Os comandos emitidos pelos
operadores, bem como aqueles gerados automaticamente pelas estações centrais,
são repassados para as UTRs para a atuação real na planta.
Um sistema SCADA possui restrições quanto ao tempo de resposta,
segurança, garantia de entrega de mensagens e processamento em tempo real,
requisitos nem sempre alcançados pelas redes de computadores de uso geral,
evidenciando a necessidade de configurações especiais e linhas de comunicação
dedicadas.
O SASE é uma implementação de um SCADA, presente em todos os
centros de operação da transmissão e da distribuição e também nas subestações
automatizadas. O número de computadores com o sistema já passa de 600.
Quando desejado, é possível agregar certo nível de "inteligência" ao SASE
nas subestações, o que de modo geral acontece, através da execução de processos
chamados de Funções Elétricas, permitindo que algumas ações sejam tomadas sem
necessidade de intervenção humana, auxiliando os operadores dos centros de
operação (COEs/CODs).
O SASE suporta os sistemas operacionais QNX versão 4.25 [QNX] e Linux.
As versões atuais ainda mantêm código multiplataforma. Porém, a falta de suporte
da versão 4 do QNX aliada à obsolescência de hardware, a incompatibilidade de
migração para novas versões do QNX e as mudanças necessárias para a
incorporação de novas tecnologias impõem à empresa a decisão de abandonar seu
uso. A COPEL utiliza uma mini-distribuição Linux gerada internamente e que tem por
base o kernel 2.4 e a distribuição Slackware 9.0/9.1.
Internamente, o sistema é composto de blocos funcionais. São eles:
•
Configuração;
•
Banco de dados tempo-real;
•
Protocolos de comunicação;
•
Interface Homem-Máquina;
10
•
Tratamento de alarmes;
•
Relógio;
•
Relatórios;
•
Funções elétricas automáticas;
•
Simulação.
A arquitetura da rede é do tipo par-de-micros. Nesta configuração, há
pouca especialização de tarefas entre os computadores. Basicamente, os nós
conectados na rede se diferenciam entre console de operação, núcleo do sistema e
geração de relatórios. As informações passadas entre níveis hierárquicos diferentes
são interceptadas pelo computador que compõe o núcleo do sistema, sendo
replicadas para todos os demais computadores.
11
3
ARQUITETURA DISTRIBUÍDA BASEADA EM AGENTES
Este capítulo apresenta a tecnologia de agentes em Java para suprir as
funções de middleware em sistemas distribuídos. O entendimento dos benefícios
que uma arquitetura distribuída pode trazer e da maturidade dos padrões e
ferramentas fortalece a decisão de seguir nesse caminho evolutivo para os sistemas
de computação na COPEL.
Durante as pesquisa acadêmicas, foram encontrados artigos abordando
arquiteturas distribuídas para várias áreas de aplicação. Dentro da área de controle
de sistemas de potência, percebe-se, a partir do ano 2000, um aumento na
utilização da tecnologia de agentes.
A
evolução
padronização
das
possibilitam
tecnologias
o
computacionais
estabelecimento
de
novas
e
tendências
diretrizes
para
para
o
desenvolvimento de sistemas para centros de controle. A COPEL, com sua
experiência
no
desenvolvimento,
implementação
e
operação
de
sistemas
proprietários, junto com suas limitações, observa a necessidade de empregar o
conceito de Sistemas Abertos.
O termo “sistema aberto” não tem apenas o significado de especificação
pública, mas também de definição de uma arquitetura que contempla as seguintes
características [Pereira95]:
•
Portabilidade: habilidade de implementar a mesma funcionalidade em
diferentes plataformas de hardware;
•
Expansibilidade: capacidade de expansão tanto em hardware como
em software;
•
Modularidade: diferentes funções são implementadas por módulos de
software com interfaces bem definidas, permitindo adição e remoção
sem interferir em outros módulos;
12
•
Interconectividade: habilidade de conectar diferentes plataformas de
hardware através de uma rede padrão.
3.1 REDE ETHERNET
A comunicação entre os níveis hierárquicos do sistema de automação
ocorre principalmente através de canais seriais com protocolo do tipo mestreescravo. Apesar desse modelo fornecer desempenho e confiabilidade satisfatórios,
há uma lista de desvantagens, particularmente em termos de flexibilidade e
integração com o mundo externo [Buse03].
Os dispositivos eletrônicos inteligentes (IEDs) que a empresa vem
adquirindo para uso nas subestações, oferecem, além da interface RS-232, outros
tipos de comunicação. Entre eles, o mais encontrado é a possibilidade de uma
conexão por rede Ethernet.
Por outro lado, a COPEL possui uma infra-estrutura de telecomunicações
diferenciada, sendo a primeira empresa do setor de energia elétrica a obter a licença
da ANATEL (Agência Nacional de Telecomunicações) para prestação de serviços
especializados. Algumas características dessa estrutura própria são:
•
Backbone com topologia em anel redundante através de cabos páraraios OPGW (Optical Ground Wire) em suas linhas de transmissão de
energia elétrica;
•
Presente em 146 cidades, com mais de 4.475 km de cabos ópticos
instalados no estado;
•
Alta capacidade e velocidade do sistema, com transporte em sistema
SDH (Synchronous Digital Hierarchy), disponíveis para conexões
urbanas e interurbanas, nas velocidades de 64 Kbps a 155 Mbps;
13
•
Redes de acesso metropolitano Gigabit Ethernet, com roteamento IP,
seguras e de uso privado. O serviço está disponível nas modalidades
fixa ou sob demanda.
O uso da rede nas subestações vem sendo forçado tanto pelos
equipamentos nela presentes quanto pela alta qualidade de sua infra-estrutura. Esta
mudança torna possível a interligação de diversos níveis hierárquicos do sistema de
automação, bem como o acesso aos dados de outros sistemas.
3.2 MIDDLEWARE
É a camada de software que provê o suporte para que os componentes de
um sistema distribuído possam se comunicar. Essa camada se situa entre o sistema
operacional e a aplicação. É ela quem trata de forma transparente muitos detalhes
de baixo nível geralmente necessários para a transferência de dados entre
aplicações que utilizam a rede.
O uso de uma camada de middleware em sistemas distribuídos diminui
substancialmente a complexidade da programação. Ela pode ser usada tanto em
sistemas baseados em um único computador quanto nos distribuídos por rede.
Um middleware deve ter certas propriedades [Heck03]:
•
Automatizar tarefas comuns de programação da rede;
•
Fornecer uma interface padrão que facilite a integração entre as
aplicações;
•
Prover interoperabilidade em ambientes heterogêneos.
A interoperabilidade permite que aplicações escritas em linguagens
diferentes, para diferentes sistemas operacionais ou para diferentes plataformas de
hardware possam trabalhar juntas.
Algumas soluções de middleware têm características plug-and-play , o que
permite que partes do sistema possam se reconfigurar dinamicamente. Por exemplo,
14
uma atualização ou uma troca de um algoritmo com o resto do sistema no ar e em
tempo real.
Encontra-se uma grande possibilidade para o desenvolvimento de um
middleware nas tecnologias baseadas em Java. Esta é uma linguagem orientada a
objetos independente de plataforma, com arquitetura em camadas e APIs de código
aberto que permitem seu uso em aplicações distribuídas, tais como EJB (Enterprise
Java Beans), RMI (Remote Method Invocation) e Java ORB (Object Request
Broker).
A interação de componentes Java com componentes não-Java pode ser
feita com o uso da tecnologia JNI (Java Native Interface). Ela fornece um padrão
para escrever código Java e encapsular código não-Java. Este código combinado
pode, então, ser tratado como um único objeto.
3.3 TECNOLOGIA DE AGENTES
A tecnologia de agentes é um dos mais interessantes desenvolvimentos no
campo da inteligência artificial distribuída, com ampla faixa de aplicação. 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 [Jennings98]. É uma entidade de software, suportado por uma plataforma
de implementação ou ambiente de execução ou ainda framework de agentes, que
pode se movimentar pelo sistema de forma independente [Buse03]. Um agente
trabalha com um sistema de mensagens que produz chamadas locais ou remotas,
utiliza serviço de diretórios, aceita de forma fácil e rápida novas funcionalidades,
promovendo modularidade ao sistema.
Suas principais características são [Azevedo99]:
•
Autonomia: agentes atuam sem necessidade de intervenção externa e
têm algum tipo de controle sobre suas ações e seu estado interno;
15
•
Sociabilidade: agentes interagem com outros agentes através de uma
linguagem de comunicação apropriada;
•
Reatividade: agentes são capazes de perceber mudanças nos
ambientes em que estão inseridos e respondem a essas mudanças
quando necessário;
•
Pró-atividade: agentes possuem suas próprias metas. Suas ações não
são apenas reações a mudanças no ambiente, mas visam também
alcançar as metas.
Os agentes podem operar autonomamente, sendo que as tarefas são
realizadas pela interação entre eles, de modo cooperativo. Um sistema baseado em
tecnologia de agentes fornece uma grande autonomia a cada uma das partes
constituintes, em comparação ao tradicional sistema SCADA.
Diversas abordagens de construção de sistemas multiagentes são
encontradas. Esgotar esse assunto não é o escopo deste trabalho.
Uma divisão possível para os agentes pode ser [Buse03]
•
Agente simples: usado para desempenhar tarefas simples que não
requerem inteligência. É o preferido quando se precisa de mobilidade,
devido ao seu tamanho reduzido;
•
Agente BDI (Belief-Desire-Intention): baseia-se no conceito dos três
estados mentais (Crença-Desejo-Intenção), sendo capaz de responder
a eventos externos e executar ações para atingir uma meta. Esta
flexibilidade torna-o adequado para a execução de diversas tarefas,
como controle em tempo-real, monitoração on-line e gerenciamento de
alarmes e eventos.
As crenças representam o possível conhecimento do agente. Um agente
pode ter crenças sobre si próprio, sobre o mundo e sobre outros agentes. Os
desejos são o conjunto de metas a serem realizadas num período de tempo. Os
desejos motivam o agente a agir de forma a realizar as metas. Os desejos podem
16
ser conflitantes. Os objetivos representam um subconjunto dos desejos. Em
contraste com os desejos, os objetivos não podem ser conflitantes. As intenções
representam um subconjunto dos objetivos. Se um agente decide atingir
determinado objetivo esse objetivo passa a ser uma intenção [Gomes05].
De forma semelhante, [Silva04] classifica os agentes em inteligentes ou
móveis. Os primeiros são entidades tipicamente estáticas e que utilizam diversos
algoritmos para a realização de tarefas específicas. Os últimos, por outro lado, são
programas capazes de migrar através de uma rede heterogênea de computadores,
procurando e interagindo com os serviços oferecidos por seus hospedeiros, para
realizarem diversas tarefas em nome de seu usuário.
É possível planejar uma arquitetura para automação de subestações
totalmente baseada em agentes [Buse03], executando tarefas de controle,
armazenamento e persistência de dados, usuários, documentação, análise de dados
e acesso aos IEDs.
A Tabela 1 apresenta um conjunto de agentes que podem existir num
sistema de automação de subestações. Essas tarefas podem necessitar restrições
de tempo, recursos de rede e processamento. Podem ser executadas isoladamente,
integradas em um pacote de software (por exemplo, em um módulo de IHM) ou
alimentar uma interface Web através de servlets, applets ou server pages.
Tarefa
Habilidade
Usuário
Tipo de Agente
Comando, pesquisa, suporte
a decisão
Visualização de
informações, Disparar
pesquisa
Sensores
Banco de dados
Transferência de dados,
aquisição de dados,
pesquisa
Adicionar informações
ao banco, responder
pesquisas
Dispositivo
Controle
Recuperação de
informações
Recuperação
Mover, determinar
relevância de
informações
Localização de
informações
Controle remoto
Controle
Mover
Localização de
dispositivos
Interface gráfica ou
outra interface do
usuário
Conhecimento
Modelo do usuário
Metadados do banco
Sinais recebidos do
equipamento
Modelo do sistema sob
controle
Tabela 1 - Tipos de agentes em um sistema de automação de subestações [Buse03]
17
Alguns agentes têm um papel de intermediar consultas e pedidos feitos
entre outros agentes; São os agentes corretores: Query Broker Agent para suportar
uma submissão de pesquisa e o Request Broker Agent para suportar um pedido de
serviço. Assim, pode-se modelar uma seqüência de mensagens entre esses agentes
para a realização de tarefas como atualização dos valores de uma subestação na
tela do usuário ou o envio de comandos para um equipamento. Uma alternativa para
a seqüência de intervenções feita por agentes corretores é a utilização de agentes
móveis, mais eficientes no caso da existência de uma rede lenta entre o usuário e a
subestação [Buse03].
No caso de um sistema totalmente baseado em agentes, para cada
equipamento que envia ou recebe dados deve haver um agente controlador. Este
agente pode atualizar os dados no agente do banco de dados por meio de uma
comunicação publish-subscribe (publicacao-assinatura) [Buse03].
Os agentes podem ser divididos ainda em módulos de acordo com a sua
localização. Podem existir módulos globais, contendo funcionalidades referentes à
interface do usuário e banco de dados, e módulos locais, contendo funcionalidades
específicas a cada subestação.
A utilização de agentes requer [Prayurachatuporn01]:
•
Um ambiente runtime para que os agentes possam ser executados;
•
Uma interface padrão para interações;
•
Serviços para a criação, migração e encerramento dos agentes.
A plataforma de agentes, que é o ambiente de execução (runtime), garante
o transporte das mensagens entre os agentes, os registros de entrada e saída dos
agentes na comunidade (páginas brancas) e também registro e busca por serviços
fornecidos pelos próprios agentes (páginas amarelas) [Vrba03].
O estudo da forma como os agentes devem se especializar para a
construção de um sistema de proteção e controle levou [Shono02] a dividir os
agentes de forma que um tipo serve para configurar os equipamentos, outro para
18
coletar dados para análise de falhas no sistema elétrico e um terceiro tipo serve para
patrulhar o ambiente, coletando informações sobre as condições de operação dos
equipamentos. Assim, a preocupação com a mobilidade irá depender da
complexidade envolvida em cada uma dessas funções. Podem existir agentes
responsáveis por planejar suas próprias rotas de viagem entre os dispositivos, como
também agentes fixados permanentemente nos equipamentos do sistema.
3.4 DESENVOLVIMENTO DE AGENTES EM JAVA
A linguagem Java recebe uma acentuada preferência em termos de
programação de agentes móveis, embora existam outras linguagens que podem ser
consideradas. Uma análise das características dessa linguagem pode ajudar no
entendimento dessa tendência.
O primeiro atrativo é que a linguagem Java permite portabilidade entre
plataformas diferentes. O advento do conceito de bytecode, que é um código
intermediário interpretado, e seu respectivo ambiente de execução JVM (Java Virtual
Machine) fornece o suporte adequado para que qualquer plataforma de hardware
com poder de processamento adequado e com qualquer sistema operacional possa
executar aplicativos em Java. Um sistema baseado em agentes pode aproveitar
essa característica para ampliar seu domínio a todos os computadores da rede.
Java oferece suporte à programação em rede, através do uso de sockets e
RMI (Remote Method Invocation) que é um middleware totalmente concebido para o
Java. A plataforma de agentes pode se beneficiar desse suporte para implementar
seus serviços de comunicação e transporte de agentes.
O que garante uma autonomia operacional de cada agente no sistema é a
sua capacidade de manter um fluxo de controle de execução independente dos
demais agentes. Como o Java fornece suporte à programação multi-threading, essa
característica é facilmente atendida.
19
Os mecanismos de tratamento de exceções do Java, associado com a
execução dentro de um ambiente controlado, a JVM, facilitam a recuperação de
desastres. Uma falha na execução de um agente ou na plataforma de agentes pode
ser rapidamente neutralizada, sem comprometer o computador em questão.
Para que um agente possua a característica de reatividade, conforme
explicado na seção 3.3, permitindo sua resposta a eventos externos, devem estar
presentes mecanismos de tratamento de eventos no ambiente. Java oferece um
modelo de tratamento de eventos que facilita a implementação dessa habilidade.
Um middleware de agentes deve prover um mecanismo para localizar os
serviços por ele suportados, como nomes de objetos remotos e diretórios. A
tecnologia JNDI (Java Naming and Directory) oferece essas funcionalidades na
forma de uma API. Assim, as aplicações distribuídas podem compartilhar
informações sobre usuários, máquinas, redes e serviços [Wong99]. A tecnologia JINI
(Java Intelligent Network Infrastructure) define um conjunto de convenções capaz de
permitir que serviços e clientes formem um sistema distribuído extremamente
dinâmico [Waldo01], permitindo que as aplicações possam descobrir serviços em
uma rede.
O mecanismo de serialização de objetos do Java permite que estruturas de
dados possam ser facilmente transformadas em um fluxo seqüencial de bits. Esta
característica facilita a implementação dos serviços de transporte e de persistência
de um sistema de agentes, pois esse fluxo pode ser transportado para outro
computador ou armazenado em algum tipo de repositório persistente de dados (um
banco orientado a objetos, por exemplo).
A capacidade do Java de carregar uma classe dinamicamente, chamada
class loader, permite que uma classe seja transportada de um computador para
outro e que seja adicionada a um processo em execução que não possuía
conhecimento dela em tempo de compilação. Assim, objetos representando agentes
podem ser instanciados em outro lugar. Então, após a serialização dos dados do
20
objeto, esse mecanismo pode reconstruí-lo em outra JVM sem maiores
complicações no código. Além disso, existem restrições de segurança que podem
ser impostas ao código recém-carregado.
Por essas características, um sistema de agentes móveis pode muito bem
fazer uso das tecnologias Java estabelecidas pela Sun Microsystems. As
comunidades acadêmicas e de software livre, além das grandes indústrias de
software, vêm fortalecendo a linguagem com soluções de alta qualidade para o
desenvolvimento e depuração de aplicações.
3.5 FIPA
A FIPA (Foundation for Intelligent Physical Agents) é uma fundação
internacional sem fins lucrativos voltada exclusivamente para a criação de padrões
concretos de comunicação que tornem possível a implementação de agentes
abertos e interoperáveis [FIPA06].
A FIPA mantém um conjunto de documentos, entre os quais está a
descrição de uma linguagem de comunicação totalmente voltada para a
comunicação entre agentes: a FIPA-ACL (Agent Communication Language).
Uma mensagem FIPA-ACL possui os seguintes elementos:
•
Propósito da comunicação (por exemplo: informar, perguntar, ordenar,
negociar);
•
Agente remetente;
•
Agentes de destino;
•
Conteúdo;
•
Linguagem para expressar o conteúdo;
•
Ontologia.
Os padrões FIPA vêm crescendo em uso e qualidade, o que pode ser
verificado através da observação da grande variedade disponível de plataformas de
21
desenvolvimento de agentes compatíveis [Gomes03].
Mensagens FIPA-ACL permitem que diferentes arquiteturas de agentes
possam se comunicar.
Para garantir a interoperabilidade entre os agentes e em outras esferas do
processamento de informações organizacionais, é muito importante adotar a
compatibilidade com os padrões FIPA.
As especificações FIPA cobrem diversos aspectos do desenvolvimento de
sistemas de agentes, não apenas a comunicação entre eles, feita através da ACL,
mas toda a parte de gerenciamento e organização da comunidade de agentes
também é apresentado [VRBA][JADE]:
•
AMS (Agent Management System): é o agente responsável por
guardar os nomes e localizações de todos os agentes presentes na
comunidade (serviços de páginas brancas);
•
DF (Directory Facilitator): é o agente responsável por registrar e
informar os serviços oferecidos pelos próprios agentes da comunidade
(serviços de páginas amarelas);
•
MTP (Message Transport Protocol): especificação que define como
as mensagens devem ser trocadas entre os agentes dentro e fora da
comunidade. Ela garante que um agente de uma comunidade possa se
comunicar com um agente em outra plataforma. Por exemplo, as
plataformas JADE e FIPA-OS podem se comunicar pelos protocolos
baseados no IIOP (Internet Inter-ORB Protocol) ou no HTTP (Hypertext
Transmission Protocol).
Existem mais de quarenta documentos distintos formando o conjunto de
especificações da FIPA, divididos nas áreas de aplicações de sistemas multiagentes,
arquitetura abstrata para sistemas multiagentes, comunicação entre agentes,
gerenciamento de sistemas multiagentes e, por fim, transporte de mensagens entre
agentes. Porém, desta listagem o maior avanço e detalhamento da padronização
22
ocorreu no tratamento das questões relativas à comunicação dos agentes [Gluz02].
A FIPA preocupa-se em definir e especificar os elementos para construção
de sistemas multiagentes interoperáveis. Nenhuma implementação é desenvolvida
pela FIPA. Outras fundações e empresas já vêm divulgando várias implementações
das especificações FIPA. As plataformas de maior destaque atualmente são o JADE
[Bellifemine99], o ZEUS [Nwana99] e o FIPA-OS[FipaOS03].
Segundo análises feitas por Vrba [VRBA03], comparando as plataformas
de agentes JADE/RMI, FIPA-OS/RMI, ZEUS/TCP-IP e JACK/UDP, de uma maneira
geral, a plataforma JADE apresentou o melhor desempenho. Os testes consistiram
de troca de mensagens síncronas (em série) e assíncronas (em paralelo) entre
agentes. Foram contempladas as comunicações entre um par de agentes, entre dez
pares de agentes, com apenas um servidor e duas JVMs e com dois servidores.
Com base na extensa avaliação feita no trabalho de Vrba, adotou-se para esse
trabalho a plataforma de agentes JADE.
3.6 JADE
O JADE (Java Agent Development Framework) é um ambiente para
desenvolvimento e execução de sistemas multiagentes em conformidade com as
especificações FIPA, totalmente codificado em Java [JADE]. Esta biblioteca é livre e
é distribuída sob a licença GNU Lesser General Public License (LGPL), o que evita a
abertura do código dos aplicativos feitos com ela.
Há dois produtos fornecidos neste framework: uma plataforma de execução
de agentes concordantes com a FIPA e um pacote para desenvolvimento de
agentes Java.
O JADE é composto por diversos pacotes de classes que implementam as
especificações FIPA. Além deles, é fornecido um pacote de ferramentas para facilitar
a administração da plataforma e do desenvolvimento da aplicação. Algumas delas
23
são: um agente gráfico de gerenciamento da plataforma; um agente para
monitoração que permite enviar e receber mensagens ACL; um agente de escuta
para interceptar as trocas de mensagens ACL da comunidade; um agente para
monitorar o ciclo de vida dos agentes; uma interface visual para controlar o DF
(páginas amarelas); um agente para gerar log; um agente que funciona como
gateway bidirecional entre uma plataforma JADE e uma conexão via socket TCP/IP.
O JADE oferece uma plataforma distribuída de agentes, com uma interface
gráfica para controle, ferramentas de debug, mobilidade para os agentes (intraplataforma), aderência às especificações FIPA, registro automático no AMS, suporte
a linguagens de conteúdo e ontologias (descritas na seção 3.7) voltadas para a
aplicação, entre outras coisas.
Em conformidade com a FIPA, o ciclo de vida de um agente JADE
obedece à máquina de estados ilustrada na Figura 3 [JadePrg05].
Figura 3 - Ciclo de vida de um agente JADE
24
Os estados pelos quais um agente pode passar durante seu ciclo de vida
são:
•
Initiated: o objeto agente está criado, mas não registrado no AMS. O
agente não tem nome, nem localização e não pode se comunicar com
outros agentes;
•
Active: o objeto agente está registrado no AMS, com um nome e
localização e tem acesso aos elementos do JADE;
•
Suspended: o objeto agente está parado. Sua execução interna está
suspensa e nenhum comportamento está em processamento;
•
Waiting: o objeto agente está bloqueado, aguardando por algum
evento. Sua execução interna está dormente e será acordada quando
alguma condição desejada ocorrer (por exemplo, a chegada de uma
mensagem);
•
Deleted: o agente está definitivamente morto. Sua execução interna
terminou e o agente não está mais registrado no AMS;
•
Transit: o agente está se movendo para uma nova localização. O
sistema continua enfileirando as mensagens que então serão enviadas
para o novo local.
Os
agentes
executam
tarefas
através
de
implementações
de
comportamentos (behaviours). Eles podem realizar diversas tarefas, em resposta a
diferentes eventos externos. O JADE mantém apenas uma linha de execução de
tarefas por agente, na qual são implementados os diversos objetos Behaviour.
Agentes multitarefas podem ser implementados mas sem suporte específico desta
plataforma (exceto para a sincronização da fila de mensagens ACL). A Figura 4
mostra o modelo UML para os comportamentos JADE [JadePrg05].
Os principais comportamentos JADE são:
•
SimpleBehaviour: executa uma tarefa atômica;
•
OneShotBehaviour: executa uma tarefa atômica apenas uma vez.
25
Significa que este objeto não terá mais utilidade após ser processado;
•
CyclicBehaviour: classe abstrata que modela um comportamento
atômico a ser executado sem parar (quando termina, recomeça
automaticamente). Para permitir que outros comportamentos possam
ser executados, deve-se entrar em bloqueio programado;
•
TickerBehaviour: classe abstrata que implementa uma tarefa a ser
executada periodicamente.
O guia do programador JADE, disponível em [JadePrg05] fornece uma
descrição detalhada destes e dos demais comportamentos.
Figura 4 - Modelo UML da hierarquia de classes dos comportamentos JADE.
26
A FIPA especifica um conjunto de protocolos padrão de conversação entre
agentes. O JADE implementa os procedimentos destes diálogos entre agentes
através de comportamentos. Assim, com o uso de métodos de retorno (callbacks),
usados nestes comportamentos, agentes podem entrar em uma negociação com o
uso de uma API homogênea.
Um exemplo de negociação é o protocolo FIPA-Contract-Net (Figura 5). Ele
permite que um agente iniciador da negociação envie uma mensagem contendo
uma proposta para um conjunto de agentes participantes. Estes avaliam a proposta
e respondem ao agente iniciador. A intenção é firmar uma ligação dinâmica apenas
entre o agente iniciador e os agentes ouvintes que fornecerem as melhores
respostas. O agente iniciador manda, então, uma mensagem de aceite ou de recusa
aos agentes participantes. Para terminar a contratação, os agentes ouvintes apenas
confirmam a decisão do agente iniciador.
Figura 5 - Protocolo FIPA-ContractNet [Malucelli06].
27
Como visto na seção 3.5, uma mensagem FIPA-ACL deve possuir uma
identificação do propósito da mensagem. JADE implementa mais de vinte
propósitos, sendo utilizados na prototipagem REQUEST (perguntar), INFORM
(informar), QUERY-IF e QUERY-REF (pesquisar), CPF (convidar para uma
proposta), ACCEPT (aceitar), REJECT (rejeitar). A documentação do JADE
[JadePrg05] fornece exemplos de conteúdo de mensagens ACL com alguns desses
propósitos.
A plataforma JADE denomina o local no qual os agentes residem de
container. Em uma comunidade de agentes deve existir no mínimo o container
principal (main-container) que é o gerenciador dos serviços da plataforma, podendo
existir containers extras, dependentes do principal. O JADE implementa um sistema
de tolerância a faltas através da replicação do container principal em outros
computadores integrados à plataforma. Com essa funcionalidade ativada, os
containers principais fazem conferências entre si para manter a integridade da
comunidade, mesmo que haja a perda de alguns deles. Os demais containers
encontram os principais de uma forma automática. Apenas um dos containers
principais executa os serviços da plataforma, sendo chamado de Master-MainContainer [JadeAdm05]. A Figura 6 exemplifica uma plataforma JADE em execução
com dupla redundância do container principal.
Plataforma Distribuída JADE
A
Container-2
A
Container-1
A
(Master) Main-Container-1
A
Main-Container-2
Main-Container-N
Container-M
A
A
Figura 6 - Exemplo de uma plataforma distribuída JADE com tolerância a faltas.
28
3.7 ONTOLOGIA
Baseado na idéia de que as pessoas têm visões diferentes do mundo, os
sistemas e seus agentes também as têm.
Transformações sintáticas de dados para a troca de informações entre
sistemas não resolvem o problema da comunicação, pois domínios diferentes
representam o mesmo conceito de maneiras diferentes. É necessária uma
representação semântica dos dados.
Para promover um entendimento dos dados existentes em domínios
diferentes, é necessário que o conteúdo das mensagens utilize um vocabulário
especifico para a área de aplicação.
Situações que exigem a troca de informações entre modelos diferentes de
dados, com ontologias próprias, precisam resolver a questão das transformações
semânticas. Problemas de heterogeneidade estrutural e semântica são bem
conhecidos dentro das comunidades de sistemas distribuídos [Malucelli06]. Sistemas
de
informação
diferentes
podem
armazenar
dados
e
conceitos
usando
relacionamentos estruturais diferentes e podem considerar o conteúdo de um item
de informação e seu significado de formas diferentes.
[Malucelli06] analisa o cenário de uma comunidade MAS (multi-agent
system) aberta com domínios diferentes mas que precisam executar operações B2B
(Business To Business). Em tal cenário, é proposta a utilização de agentes de
serviços de ontologia para facilitar a troca de dados, com a implementação do
protocolo de Interação Ontológica (OIP).
A ontologia é um método de representação semântica do conhecimento.
Pode ser definida como “uma especificação formal e explícita de uma
conceitualização compartilhada” [Vergara02]. Esta definição pode ser entendida da
seguinte maneira:
•
É formal porque é interpretada e lida pelo computador;
29
•
É explícita porque define os conceitos, propriedades, relacionamentos,
funções, axiomas e regras condicionais que a compõem;
•
É uma conceitualização porque é um modelo abstrato e uma visão
simplificada dos fenômenos do domínio que ele representa;
•
É compartilhada porque há um consenso prévio sobre a informação e é
aceita por um grupo de especialista.
Outras variações da definição acima são encontradas na literatura. Uma
mais antiga diz que “é uma especificação formal e explícita dos termos de um
domínio e relações entre eles” [Gruber93].
Pode-se entendê-la como a definição de um conjunto de conceitos, sua
taxonomia, inter-relação e regras que governam tais conceitos.
Há dois tipos de ontologias: leves e pesadas [Uschold96]. As leves são
aquelas capazes de modelar a informação referida para um domínio mas não
incluem axiomas ou regras condicionais, dificultando o entendimento delas. As
pesadas incluem todos os elementos que permitem fazer deduções sobre o
conhecimento contido nela. Os axiomas e as regras fornecem uma maneira de
definir o comportamento relacionado a um modelo de informação. Desta maneira, os
modelos de informação podem ser entendidos como ontologias leves [Vergara02].
A FIPA descreve suas ontologias em termos de predicados, ações e
conceitos. Esta visão pragmática satisfaz todas as necessidades que os agentes
possuem em relação às suas comunicações [Gomes05].
Quando uma certa informação é transferida entre dois agentes por meio de
uma mensagem ACL, ela é representada como uma expressão que contém
linguagem de conteúdo e formato próprios. Ambos os agentes podem ter maneiras
diferentes para representar a informação. Para permitir uma manipulação fácil de
pedaços dessa informação, os agentes devem representá-la internamente também
de forma segmentada. As expressões de conteúdo das mensagens ACL não são
adequadas para essa finalidade [JadeOnto04]. Uma simples passagem de valores
30
em forma de uma seqüência de bytes prejudica a manipulação da informação, pois
requer que a cada vez se tenha que programar e processar as quebras da
seqüência para conseguir retirar o valor de interesse. Agentes escritos em Java
podem representar a informação convenientemente dentro de objetos Java,
facilitando a manipulação das mensagens.
Para que uma informação possa ser passada entre agentes, é necessário
converter sua representação interna para a correspondente expressão de conteúdo
ACL. O agente de destino deve executar a operação ao contrário. Além disso, o
agente de destino deve proceder com checagens semânticas para validar a
informação. O JADE contém suporte para linguagem de conteúdo e ontologias
fornecendo automaticamente todas as conversões e checagens descritas acima.
Desta forma, os desenvolvedores podem trabalhar com as informações em seus
agentes como se fossem apenas objetos Java sem necessidade de trabalhos extras.
Enquanto a ontologia se preocupa como os elementos do domínio são
especificados para que possam ser entendidos entre os agentes, a linguagem de
conteúdo define a forma como essa ontologia será escrita nas mensagens entre
eles. Assim, têm-se linguagens codificadas em caracteres, podendo ser lidas pelos
humanos, e outras que são codificadas em binário, decifráveis apenas pelo
computador mas com menor esforço computacional. Linguagens de conteúdo
especificam a sintaxe das mensagens e são independentes de domínio. As
linguagens de leitura humana facilitam os testes e a reprodução das mensagens em
uma aplicação.
Um exemplo de linguagem com leitura humana é a FIPA-SL (FIPA Content
Language Specification) e seu subconjunto FIPA-SL0, ambas suportadas pelo
JADE. Tal subconjunto permite a construção de ações, conceitos e predicados
binários simples, sem incorporar construções mais complexas nem instruções
booleanas. Ela facilita o processamento do conteúdo das mensagens. No presente
trabalho, todos os exemplos de ontologia estão representados por esta linguagem.
31
Para que agentes possam conversar sobre dados e fatos relacionados a
um domínio, explorando o suporte do JADE para linguagem de conteúdo e
ontologia, devem seguir estes passos:
1) Definir a ontologia, incluindo os predicados, ações e conceitos em
forma de esquemas específicos para eles;
2) Desenvolver as classes Java associadas a cada esquema da
ontologia;
3) Selecionar uma linguagem de conteúdo suportada pela plataforma;
4) Registrar a ontologia definida e selecionar a linguagem de conteúdo
para os agentes;
5) Criar e manipular as expressões de conteúdo como objetos Java, que
são as instâncias das classes desenvolvidas. O JADE irá traduzir estes
objetos para/de seqüências de bytes que formam o conteúdo dos slots
das mensagens ACL.
Existem várias ferramentas para a criação de ontologias, tais como
Ontolingua [Farquhar97], WebOnto [Domingue98], WebODE [Arpírez01], Protégé
[Noy00], OntoEdit [Sure02], OilEd [Bechhofer01], etc.
A ferramenta utilizada para os estudos desta monografia foi a Protégé, pois
é baseada no Java, é referenciada na documentação do JADE [JadeOnto04], possui
código aberto e funciona em computador isolado, sem dependência de servidor.
Outras características encontradas são: editor de ontologia com interface gráfica;
desenvolvimento de plugins (extensões); exportação e importação do modelo de
domínio para os formatos RDF (Resource Description Framework), XML (Extensible
Markup Language) e OWL (Web Ontology Language) através de plugins específicos.
Outro plugin existente para o Protégé e muito importante para o presente estudo é o
BeanGenerator [Bean06] [JadeOnto04]. Esta extensão mapeia objetos do modelo
em correspondentes classes Java geradas automaticamente em conformidade com
as especificações do JADE.
32
A exportação da ontologia, na parte experimental deste trabalho, foi feita
no formato OWL [Antoniou03] [McGuinness04]. OWL constitui-se de uma linguagem
de marcação (tags) semântica, desenvolvida como uma extensão de vocabulário do
RDF para definição, publicação e compartilhamento de ontologias na Web. OWL é
escrita em XML e possui todas as suas vantagens. Uma ontologia OWL contém
classes, propriedades, instâncias de classes e seus relacionamentos.
O JADE classifica os elementos de um domínio, de acordo com suas
características semânticas, através de um Modelo de Referência de Conteúdo (CRM
– Content Reference Model), apresentado na Figura 7 [JadeOnto04].
Figura 7 - O Modelo de Referência de Conteúdo do JADE
O modelo apresenta a definição de predicados (predicates) e termos
(terms):
•
Predicates: expressões booleanas que apresentam o estado de um
relacionamento
entre
elementos.
São
tipicamente
usados
em
33
mensagens ACL com propósito INFORM ou QUERY-IF;
Exemplo: a expressão “a pessoa Ciro trabalha para a companhia
COPEL” pode ser identificada por (Trabalha-para (Pessoa :nome Ciro)
(Companhia :nome COPEL)).
•
Terms: expressões de identificação de entidades (abstratas ou
concretas) que existem no mundo. Os termos são classificados em:
o
Concepts: expressões que indicam entidades com estruturas
complexas, definidas como slots.
Exemplo: (Pessoa :nome Ciro :idade 35)
Conceitos não fazem sentido se usados diretamente como
conteúdo de uma mensagem ACL. Geralmente, eles são
referenciados em predicados ou em outros conceitos;
Exemplo: (Livro :titulo “Anjos e Demônios” :autor (Pessoa :nome
“Dan Brown”))
o
Agent actions: conceitos especiais que indicam ações a serem
executadas nos agentes. São tipicamente usados em mensagens
com propósito REQUEST;
Exemplo: (Vender (Livro :titulo “Anjos e Demônios”) (Pessoa
:nome Ciro))
o Primitives: expressões que indicam entidades atômicas como
strings e integers;
o Aggregates: expressões indicando entidades que são grupos de
outras entidades;
Exemplo: (sequencia (Pessoa :nome Fulano) (Pessoa :nome
Sicrano))
o Identifying Referential Expressions (IRE): expressões que
identificam entidade(s) para a(s) qual(is) um dado predicado é
verdadeiro. São tipicamente usados em mensagens com propósito
34
QUERY-IF ou QUERY-REF;
Exemplo:
(todos ?x (Trabalha-para
?x
(Companhia :nome
COPEL))) identifica “todos os elementos ‘x’ que têm o predicado
‘trabalha para a companhia COPEL’ como verdadeiro”, ou “todas
as pessoas que trabalham para a COPEL”.
o Variables: expressões (tipicamente usadas em pesquisas) que
indicam um elemento genérico não conhecido a priori.
35
4
PADROES IEC / CIM
Esse capítulo mostra uma pesquisa sobre a padronização de um modelo
de informações a ser utilizado em empresas de energia elétrica. O entendimento da
evolução de especificações para a troca de dados existente na área elétrica conduz
para a otimização dos recursos aplicados numa arquitetura distribuída.
Os investimentos de TI implicam que a organização deve desenvolver uma
abordagem de integração de aplicações corporativas que seja flexível, prática e
adaptável de tal forma que integrações de sistemas comprados ou construídos
possam ser realizadas de forma consistente e simples [Prates05].
As tecnologias de midlleware específicas para solução de problemas de
integração
de
sistemas
também
começaram
a
ficar
disponíveis
para
comercialização, diminuindo, em muito, o custo das soluções de EAI (Enterprise
Application Integration).
A partir de meados dos anos 90, vários projetos com objetivo de padronizar
métodos de troca de informação nas empresas foram iniciados. Pode-se citar o
projeto de uma Interface de Programação de Aplicações para Centros de Controle
(CCAPI - Control Center Application Programming Interface) do EPRI (Electric Power
Research Institute), o projeto do Sistema de Gerenciamento de Inventário da
NRECA (National Rural Electrical Cooperative Association) e os projetos de
especificação de padrões do IEC (International Electrotechnical Commission).
Fundamentalmente, estes projetos tinham o foco no mesmo problema que era
integrar as informações de processo com as informações corporativas, usando
metodologias padronizadas e expansíveis.
O IEC [IEC06] é uma entidade internacional constituída por um conjunto de
comitês técnicos responsáveis pelo desenvolvimento de padrões internacionais. Há
diversos grupos de trabalho em cada comitê. As decisões do IEC são feitas pelos
comitês nacionais, resultando em uma liberação de padrões internacionais. Os
36
membros dos comitês nacionais participam dos grupos para desenvolver os projetos
dos padrões. No Brasil, o representante oficial e exclusivo do IEC é a ABNT
(Associação Brasileira de Normas Técnicas) [ABNT06]. Nos Estados Unidos, a
participação se faz pelo ANSI (American National Standards Institute) [ANSI06].
4.1 TENDÊNCIA PARA BARRAMENTO DE INTEGRAÇÃO
Com o surgimento de sistemas baseados em padrões, a interoperabilidade
dentro da empresa tende a crescer, favorecendo a aquisição de componentes de
diferentes vendedores que são executados em uma solução única. Mas, com o
aumento do número de aplicações instaladas em uma corporação, fica visível o
problema de duplicação de informações por falta de integração dos bancos de
dados.
As áreas de TI têm custos elevados com o desenvolvimento de
adaptadores
para
troca
de
dados
entre
os
sistemas
em
sacrifício
do
desenvolvimento de novas funcionalidades. Sem existir um formato de intercâmbio
padronizado ou modelo de dados, percebe-se que a cada necessidade por mais
dados, mais adaptadores aparecem [Uslar05].
Uma informação de uso comum aliada a um modelo de dados para o
domínio dos sistemas de energia é um caminho possível para incrementar a
interoperabilidade entre áreas diferentes da empresa e entre outras empresas. Esta
característica diminui o número de conexões ponto-a-ponto necessárias entre os
sistemas, pondo em uso um único barramento de mensagens que, por
conseqüência, reduz também os custos de manutenção dentro da área de TI. Uma
solução pode ser realizada através de EAI. Mas, a simples construção de
adaptadores para conectar cada sistema independente à plataforma EAI, muitas
vezes não resolve problema de incompatibilidade nas estruturas dos dados
existentes no modelo de dados comum. Por falta de equivalência semântica, o dado
37
é perdido [Uslar05]. Então, o modelo de dados deve ser o mais abrangente possível.
Caso não seja, deve permitir extensões, sem comprometimento das funções de
interoperabilidade.
Mais recentemente, arquiteturas mais adaptáveis foram desenvolvidas.
Estas arquiteturas permitem aos sistemas operar em sintonia enquanto evitam uma
excessiva interdependência e provêem mecanismos para integrar sistemas legados
mais facilmente. Esta arquitetura é chamada de “Barramento de Integração” ou
modelo de “Publicação e Assinatura”” (Publish/Subscribe). Nesta abordagem, todos
os sistemas conversam com um único barramento de integração, que é uma peça de
middleware que gerencia a passagem de mensagens entre as aplicações.
A necessidade de padronizar uma técnica de integração também estava
sendo discutida nos comitês internacionais de padronização como o Technical
Committee 57 do IEC e no Object Management Group (OMG). Em particular, o
conceito de “Barramento de Integração” estava sendo apresentado para os grupos
de trabalho do IEC e do OMG.
O Workgin Group 14 é um grupo de elaboração de padrões do IEC, dentro
do Technical Committee 57 (TC 57), que está trabalhando em uma norma
internacional chamada IEC 61968. Este padrão tem como foco a integração das
maiores aplicações de uma concessionária relacionada com gerenciamento da
distribuição, e está baseada na abordagem do Barramento de Integração.
Os resultados destes trabalhos estão hoje consolidados em padrões
internacionais, como Common Information Model (IEC 61970) e System Interfaces
for Distribution Management (IEC 61968). Estes modelos aplicados utilizam
tecnologias tais como XML e têm feito grande progresso. E, além disso, têm
permitido uma abordagem de integração mais sistemática baseada num modelo de
troca de informações comuns.
38
4.2 O PADRAO IEC 61970-301 (CIM)
A norma IEC 61970-301 define o modelo de dados CIM (Common
Information Model) [CIM06] e tem como objetivo ser um modelo abstrato de dados
que represente todos os objetos importantes em uma concessionária de energia. O
CIM foi originalmente desenvolvido pelo EPRI no CCAPI e submetido ao IEC, WG13
do TC57 que tem foco em EMS (Energy Management Systems). Posteriormente,
este modelo foi estendido pelo WG14 de tal forma a atender geração, transmissão e
distribuição.
Estes
trabalhos
são
coordenados
com
outras
iniciativas
de
padronização tais como OAG (Open Applications Group) e OMG que estão
relacionadas com os sistemas administrativos e gerenciais das empresas em geral.
Assim, aplicações voltadas para as áreas de geração, transmissão, distribuição de
energia, bem como a parte de apoio administrativo, podem ser modeladas por essa
norma.
O CIM é um modelo de informação que usa estrutura básica e conceitos do
modelo orientado a objetos. Ele proporciona uma definição e uma estrutura de
dados coerentes que servem para gerenciar aspectos comuns de um domínio.
Permite troca de informações entre plataformas distintas sem estar amarrado a
implementações específicas.
É composto de um esquema e uma especificação:
•
Esquema CIM: descreve o modelo atual de gerenciamento da
informação;
•
Especificação CIM: define os detalhes para integração com outros
modelos de gerenciamento.
O esquema CIM fornece um conjunto de definições de classes com
propriedades e associações que permite um entendimento da estrutura conceitual
do modelo e uma organização das informações disponíveis. É estruturado em três
camadas:
39
•
Modelo Central (Core): contém noções aplicáveis a todas as áreas de
gerenciamento. É um conjunto de classes, associações e propriedades.
Fornece um vocabulário básico para análise e descrição do sistema
gerenciado;
•
Modelo Comum (Common): contém noções comum a uma área
específica de gerenciamento. Independe de uma tecnologia específica
ou implementação para desenvolvimento de aplicações. Fornece um
grupo de classes básicas para extensão de um esquema específico;
•
Esquema de extensão: representa extensões de tecnologia específica
para o modelo comum. Permite expandir classes e associações a partir
do modelo básico.
A especificação CIM fornece um meta-modelo orientado a objetos baseado
no UML que define sintaxes, regras.
O meta-modelo pode ser visto na Figura 8. Ele fornece a definição formal
de termos para expressar usos e semânticas no CIM.
Figura 8 - Meta-modelo do CIM.
40
Elementos do Modelo:
•
Schema: grupo de classes usado para administrar e nomear classes;
•
Class: coleção de instâncias com as mesmas propriedades e métodos;
•
Property: valor usado para indicar a característica de uma classe;
•
Method: declara o nome do método, tipo e parâmetros de retorno;
•
Trigger: reconhecimento de uma mudança de estado de uma classe e
atualização ou acesso de uma propriedade;
•
Association:
classe
que
contém
duas
ou
mais
referências
representando relacionamento entre dois ou mais objetos;
•
Reference: define regra que o objeto representa na associação;
•
Qualifier: fornece informações adicionais de classes, associações,
indicações, métodos, propriedades ou referências.
As classes do modelo de dados CIM estão divididas em aproximadamente
vinte pacotes estruturais. Os principais pacotes podem ser vistos na Figura 9.
Generation
Dynamics
LoadModel
Production
Generation
Outage
Protection
SCADA
Financial
Wires
Meas
Energy
Scheduling
Topology
Reservation
Core
Domain
Figura 9 - Visão geral dos pacotes CIM.
41
Segue uma descrição desses pacotes:
•
Core: fornece os objetos básicos, como o PowerSystemResource e o
ConductingEquipment, usados por quase todas as aplicações que
implementam o modelo;
•
Domain: define os tipos de dados básicos usados pelos atributos
dentro do modelo;
•
Wires: modela informações elétricas das redes de transmissão e
distribuição. É usado em aplicações de rede como Estimador de Estado
e Fluxo de Potência;
•
Topology: fornece pontos de conectividade entre os objetos dos
pacotes Core e Wires;
•
Meas: diferentemente dos pacotes anteriores que fornecem facilidades
para modelar dados estáticos, este pacote (forma abreviada para
Measurement) modela os dados dinâmicos, como os utilizados nos
fluxos de potência e no estado dinâmico da topologia;
•
Generation: é composto por dois sub-pacotes, Production e Generation
Dynamics, que tornam possível a modelagem de todos os diferentes
tipos de unidades geradoras de energia;
•
LoadModel: completam a possibilidade de modelagem de dados
dinâmicos;
•
Outage: modela informações da configuração de rede corrente e para
planejamento. São entidades opcionais dentro de uma aplicação de
rede típica.
•
Protection: modelagem de dispositivos de proteção, permitindo fazer
simulação adequada e criar detectores de falha no item elétrico.
O intercâmbio de dados entre empresas é o alvo do padrão IEC 61970302. Nele, tem-se mais três pacote: EnergyScheduling, Financial e Reservation.
O padrão IEC 61970-303 foca nas aplicações SCADA, suportando controle
42
operacional de equipamentos, abertura/fechamento de disjuntores. A parte de
aquisição de dados reúne dados telemétricos de várias fontes.
Os consumidores e suas características como carga do sistema,
parâmetros relacionados com certos horários do dia e dados associados também
podem ser também modelados.
Os diagramas de classes do modelo estão disponíveis em [CIM06] no
formato MDL (Rational Rose). Para exemplificar, a Figura 10 mostra a hierarquia dos
equipamentos relacionados com o pacote Wires. Então, quando se precisa gerar
uma representação de um breaker (disjuntor), sabe-se que este objeto herda as
características do objeto genérico switch (chave) que, por sua vez, representa um
recurso do sistema elétrico do tipo equipamento de condução.
Figura 10 - CIM: Hierarquia de classes de equipamentos.
43
O CIM pode ser implementado através das seguintes formas:
•
Repositório: armazena o modelo de informações na base de dados
(BD) para acesso de programas;
•
Aplicações DBMS: transforma definição conceitual em tecnologia
particular de BD. A troca de informações é feita com acesso a DBMS
comum;
•
Aplicações de objetos: cria um conjunto de objetos de aplicação numa
linguagem especifica;
•
Parâmetro de troca: troca informações na forma de um conjunto de
APIs.
No capítulo 5, é apresentado um modelo reduzido do CIM implementado
em objetos Java para aplicação no protótipo.
Outras definições existentes na norma IEC-61970 dizem respeito à
serialização dos objetos instanciados para a troca de dados na forma binária ou
ASCII. O IEC propõe o uso do esquema CIM RDF. A sintaxe RDF é uma infraestrutura padronizada pelo W3C (World Wide Web Consortium) para codificação,
troca e reuso de informações estruturadas na Web. RDF usa XML como sintaxe de
codificação [Vos01].
O CIM é um padrão aberto, vivo, que tem respaldo em organizações
voltadas tanto para o desenvolvimento de sistemas de informática quanto para a
engenharia elétrica e vem evoluindo ao longo de anos para melhorar a
interoperabilidade entre companhias de energia.
Enquanto o CIM está focado nos centros de controle, o padrão IEC 61850
implementa a troca de dados dentro das subestações. Há a necessidade de um
mapeamento entre estes dois padrões, realizado por uma extensão UML do IEC
61850 SCL (Substation Configuration Language). [Hughes04] propõe uma interação
harmônica entre estes modelos.
44
4.3 CIM VERSUS ONTOLOGIA
O CIM cobre muitos aspectos de uma ontologia de dados para a área de
energia pois é um padrão aberto a diversas formas de uso e implementação.
[Uslar05] propõe o uso do modelo CIM como uma ontologia para os
objetos mais conhecidos no domínio de sistemas de energia.
Como visto nas definições de ontologia, um modelo de informação pode
ser entendido como uma ontologia leve [Vergara02]. O modelo CIM define a
informação do domínio administrado de uma maneira formal e em concordância com
grupos de trabalho dentro do IEC. Entretanto, ele não fornece suporte semântico
para
a
dedução
do
conhecimento
baseado
nele
e,
para
conseguir
a
interoperabilidade, precisa ser estendido com axiomas e regras para se tornar uma
ontologia pesada.
Em termos de objetos, o trabalho com ontologia não é complicado. A única
diferença é que a terminologia é mais ampla e algumas vezes difere da orientação a
objeto: classes são chamadas de conceitos ou estruturas (frames); e atributos viram
slots.
Existem ferramentas no mercado para a geração dos arquivos de
ontologia. Então, pode-se inserir os conceitos existentes no CIM de forma manual
nesses aplicativos para que se tenha os arquivos em Java de representação da
ontologia a ser usada num sistema distribuído.
Existem diversas linguagens para a definição das ontologias. Cada
software implementa uma. Para aplicações voltadas para a Web, existe a OWL. Para
a criação da ontologia baseada diretamente no CIM, modelada em UML, pode-se
usar a OCL (Object Constraint Language) [Vergara02]. Esta linguagem permite a
definição de regras. Os axiomas e regras (constraints) permitem a formalização dos
conceitos pertencentes a um certo domínio, fornecendo os comportamentos, que,
por sua vez, estão intimamente relacionados à ontologia.
45
Resumindo, o CIM pode ser apontado como uma ontologia leve, pois
define um conjunto de conceitos compartilhados de um domínio mas não provê
mecanismos para formalizar regras condicionais ou definição de comportamentos.
Então, o CIM poderia ser expandido para agregar comportamentos, pelo uso de uma
ferramenta de ontologia. A OCL pode ser a linguagem propicia para a geração da
ontologia CIM expandida pois é parte da especificação UML e o CIM usa diagramas
de classe UML.
46
5
EXPERIÊNCIA
Este capítulo discorre sobre a parte experimental realizada com
tecnologias Java para validar o uso de agentes e do modelo CIM.
Questionamentos sobre o que é um centro moderno de controle de um
sistema elétrico são também foco de outras pesquisas. Há a preocupação em se
mostrar a exaustão das arquiteturas atuais e a tendência de uma operação única
mas geograficamente distribuída [Azevedo00].
Os principais problemas que as novas gerações dos centros de controle
estão enfrentando são:
•
Evolução constante de objetivos, métodos e necessidades: o cenário de
poucas mudanças para o qual eram projetados os centros está sendo
reformulado para uma situação mas dinâmica. Isto exige projetos de
software mais modulares, com facilidade de substituição, adição ou
remoção de componentes;
•
Variação da carga computacional: a sólida organização do ambiente
computacional dos centros existentes traz uma relativa estabilidade na
carga de processamento. Considerando-se um novo ambiente em que
parceiros externos independentes desempenham um papel importante,
a estrutura do centro deverá ser capaz de se adaptar a grandes
variações de cargas;
•
Operação mais próxima dos limites do sistema de energia: interesses
econômicos exigirão maior ajuste fino das aplicações. Um controle
otimizado para um sistema elétrico permite que este trabalhe mais
próximo de seus limites sem aumento de riscos envolvidos, ampliando o
ganho e reduzindo a necessidade de novos investimentos. Os
operadores devem ter fácil acesso às informações necessárias sem
precisar lançar mão de vários programas ou interfaces. As interfaces
47
devem ser projetadas para envolver o operador com as ações
necessárias para execução e não com os programas de aplicações
especificas;
•
Rápida obsolescência computacional: a arquitetura de software deve
ser tão aberta e modular quanto possível para estender a vida dos
projetos de centros de controle;
•
Distribuição geográfica: o conceito de um centro de controle como um
ambiente físico delimitado está sendo gradualmente substituído por um
único ambiente distribuído.
Com base nessas idéias, partiu-se para a concepção de uma arquitetura
de software e execução de um protótipo de sistema de automação distribuído com
tecnologia de agentes e uso de padrões.
5.1 ARQUITETURA HIPOTÉTICA
Uma nova arquitetura baseada na integração da estrutura existente, mas
que contemple padrões abertos, deve ser experimentada através de um pequeno
protótipo que ponha em discussão a validade das tecnologias Java. Visto do ponto
prático, os conceitos abordados neste trabalho ganham um novo prisma e a
percepção de uma futura aplicação real começa a ganhar volume.
A execução de um protótipo apresenta diversos questionamentos que
devem ser resolvidos. O primeiro deles, é a identificação das premissas:
•
Prover modularização do sistema, facilitando manutenção, expansão e
troca das partes integrantes;
o
O capítulo 3 tece diversos benefícios sobre o uso da tecnologia de
agentes em um sistema distribuído. Sendo esse um dos focos
desse trabalho.
o
A separação do sistema distribuído em camadas, atendendo ao
48
padrão MVC (model-view-controller) foi empregado no protótipo.
•
Facilitar a integração com outros sistemas;
o
Como investigado no capítulo 4, o padrão IEC/CIM destina-se à
modelagem de dados numa empresa do setor elétrico de forma a
ser reconhecido por outros participantes da rede.
•
Utilizar linguagem Java e outros padrões abertos;
o
Como visto na seção 3.5, adotou-se o ambiente JADE como
ferramenta de desenvolvimento e execução de agentes em Java.
Esta plataforma é aderente aos padrões FIPA, é livre e construída
totalmente em Java.
o
A exploração do modelo CIM também colabora na utilização de
padrões.
O segundo ponto é a definição de uma arquitetura hipotética. O cenário
imaginado é uma mera especulação científica e que carece de maiores agregados
para ser considerado como uma base robusta de um sistema real.
A atual arquitetura do sistema de operação traz uma forte dependência
entre as arquiteturas física e lógica. Como apresentado no capítulo 2, os centros de
operação concentram uma infra-estrutura computacional que não favorece
rearranjos dinâmicos entre operadores de centros diferentes. Para resolver isso,
foram estudadas diversas formas de se montar uma nova arquitetura física que
satisfizesse à arquitetura lógica existente.
A arquitetura usada para balizar o protótipo prevê a existência de IHMs
leves, implementadas em navegadores de Internet conhecidos. As sessões de
operação seriam controladas por uma parte do sistema batizada de COV (Centro de
Operação Virtual). Os operadores acessariam páginas dinâmicas em servidores
Web espalhados na rede dedicada. A tecnologia empregada na camada de
apresentação supriria as características funcionais existentes na IHM do SASE.
Questões como atualização rápida e periódica, representação gráfica de diagramas
49
unifilares e facilidade de manutenção e reconfiguração devem ser cuidadosamente
estudadas.
Tecnologias
como
SVG
(Scalable
Vector
Graphics)
e
AJAX
(Asynchronous JavaScript and XML) foram utilizadas no protótipo. Entretanto, o
estudo dessas tecnologias foge do escopo deste trabalho, podendo ser obtido em
[Dometerco06].
Nessa arquitetura, o SASE não mais existiria nos centros de operação. Sua
dimensão se restringiria às subestações, controlando os IEDs e executando as
funções elétricas automáticas. Na rede de operação existente em cada subestação,
inserir-se-ia um computador comunicando-se com o SASE e também executando a
solução de agentes na JVM. Por meio de conectores JNI, os dois ambientes
trocariam dados.
Uma vez dentro da plataforma de agentes, o fluxo de dados pode seguir
diretamente para outros agentes ou para o servidor Web associado com uma sessão
de navegação do operador.
Haveria um sistema geral de controle, atuando como mediador para as
sessões de operação, que reconheceria todas as subestações disponíveis para
gerenciamento e todos os usuários operadores. 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 e; uma camada intermediária, ponte entre as duas anteriores. A arquitetura
permitiria que qualquer centro, aplicando-se as devidas regras de segurança,
controlasse uma subestação independentemente da sua localização geográfica.
A estrutura física do sistema distribuído pode ser entendida analisando a
Figura 11. Cada subestação contém uma rede IP local para uso do SCADA. Nela,
pode-se inserir um computador com a aplicação “JAVA SE”. Esta aplicação é
executada sobre a plataforma de agentes JADE, com o modelo CIM implementado
na forma de objetos, comunicando-se com o SCADA. Através de um switch, tem-se
50
a ligação com a VLAN dedicada para a automação, implantada sobre a rede de
fibras ópticas que cobre todo o estado do Paraná.
Servidor JAVA - 1
Operador 1
Subestação N
Rede dedicada
Subestação 1
Operador Z
switch
Servidor JAVA - N
Ethernet
UCC
UCC
Aplicação JAVA SE
comutador serial
UTR
UTR
UTR
Figura 11 - Estudo da estrutura física na COPEL.
Os microcomputadores IHM representam as diversas sessões de aplicação
nos usuários, através de um navegador de Internet capacitado para executar
chamadas AJAX e interpretar tags XML de gráficos SVG. Estes IHMs se conectam
apenas na rede dedicada e representam os operadores de todos os centros de
controle.
Os computadores identificados como “Servidores JAVA” devem executar o
container Tomcat para servir as páginas aos microcomputadores IHMs. Também
devem executar as aplicações “JAVA COV”. Estas aplicações são executadas sobre
51
a plataforma JADE e implementam os conceitos de um COV.
Dentro do Tomcat existem servlets que disparam um container JADE. É
neste container que os agentes SEnProxy, explicados na seção 5.5, serão ativados
quando uma aplicação “JAVA SE” estiver presente na rede.
Uma vez que o modelo J2EE garante redundância para as sessões que
são executadas nos servidores Web, que o JADE especifica uma redundância de
main-container (não testado) e que a rede dedicada seja abrangente, robusta e
rápida, percebe-se que não há mais a necessidade de amarração física entre os
computadores IHM e os servidores Java e nem que haja uma correspondência em
quantidade de centros de controle reais e servidores Java.
Um exemplo de estrutura lógica do sistema pode ser visto na Figura 12.
Existem dois centros de controle: o COV 1 e o COV 2. Cada centro contém dois
operadores: COV 1 com operadores 1 e 2 e o COV 2 com operadores 3 e 4. O COV
1 controla as subestações 1 e 2. O COV 2 controla as subestações 3 e 4. Esta
configuração pode ser estruturada fisicamente da seguinte forma:
•
COV 1 é a aplicação “JAVA COV 1”, residente no servidor JAVA – 1;
•
COV 2 é a aplicação “JAVA COV 2”, residente no servidor JAVA – 2;
Neste exemplo, tem-se uma mera coincidência de quantidades de
centros e de servidores Java.
•
SE 1, SE 2, SE 3, SE 4 são as aplicações “JAVA SE 1”, “JAVA SE 2”,
“JAVA SE 3”, “JAVA SE 4”, residentes nas subestações 1, 2, 3 e 4,
respectivamente;
•
O COV 1 decidiu que o container Web a ser usado para vincular a SE 1
ao sistema é o existente no próprio servidor Java no qual ele se
hospeda. No caso, é o “ContainerWEB1”. Então, os operadores 1 e 2
receberão dados da subestação 1 em seus navegadores pelo Tomcat
existente no servidor JAVA – 1;
•
O COV 1 também decidiu que a SE 2 será atribuída ao
52
“ContainerWEB2”. Então, os operadores 1 e 2 receberão dados da
subestação 2 em seus navegadores pelo Tomcat existente no servidor
JAVA – 2;
•
Da mesma forma, o COV 2 decidiu que a SE 3 será atribuída ao
“ContainerWEB2” e a SE 4 ao “ContainerWEB1”. Assim, os operadores
3 e 4 receberão os dados da SE 3 pelo Servidor JAVA – 2 e os dados
da SE 4 pelo Servidor JAVA – 1;
Servidor JAVA - 1
COV 1
SE 1
SE 3
Operador 1
Operador 3
SE 2
Operador 2
SE 4
Operador 4
COV 2
Servidor JAVA - 2
Figura 12 - Estudo da estrutura lógica na COPEL.
Numa etapa anterior ao protótipo com agentes, foram feitos testes com
outras tecnologias de interconectividade, como Sockets, Java RMI e Web Services.
Seus resultados e avaliações podem ser obtidos em [Dometerco06] e [Geus06].
53
Para o trabalho no laboratório, utilizou-se a seguinte infra-estrutura de
hardware e de software:
•
Computadores PC Pentium ou AMD com 2GHz e 512MB de RAM;
•
Rede corporativa Ethernet Gigabit;
•
Sistema operacional Windows XP servicepack2;
•
JavaTM 2 Platform Standard Edition Development Kit 5.0 (JDK 1.5.0)
[Java06];
•
Ferramenta de desenvolvimento Eclipse SDK 3.2.1 Web Tools Platform
[Eclipse06];
•
Plataforma de agentes JADE 3.4 [Jade06];
•
Container JSP (Java Server Pages) Tomcat 5.5.9 [Tomcat06];
•
Navegador MS-Internet Explorer 6.0 sp2 [IE06];
•
Plugin Adobe SVG Viewer para visualização de gráficos SVG no MS-IE
[AdobeSVG06];
•
Ferramenta de modelagem UML Rational Rose 8.0 for Java
[Rational06];
•
Especificação CIM versão 10 revisão 4 [CIM06];
•
Editor de ontologia Protégé 3.1 [Protege06];
•
Plugin BeanGenerator 3.1.1 para criação de classes JADE no Protégé
[Bean06];
5.2 MODELAGEM DA SUBESTAÇÃO
Após a identificação das premissas, é necessário especificar os requisitos
mínimos existentes numa subestação (SE). Por ser um experimento inicial, seu
objetivo é mostrar que a tecnologia pode ser aplicada num sistema de automação.
Assim, reduziu-se ao máximo a modelagem de uma subestação real. A subestação
criada apresenta características encontradas em campo mas não possui um
54
correspondente real para uso no protótipo.
A SE contém apenas um transformador que recebe a tensão de outro localfonte. Para este transformador, tem-se também apenas um barramento sem
transferência e que alimenta dois circuitos de baixa tensão. Entre o transformador e
o barramento existe um disjuntor como elemento de proteção. Também se deve
considerar um disjuntor para cada circuito alimentador.
O diagrama unifilar correspondente pode ser visto na Figura 13.
Figura 13 - Unifilar proposto para o protótipo.
As medidas que podem ser lidas são:
•
VB:
Tensão no barramento, analógica;
•
FB:
Freqüência no barramento, analógica;
•
I1:
Corrente no circuito 1, analógica;
•
P1:
Potência no circuito 1, analógica;
•
I2:
Corrente no circuito 2, analógica;
55
•
P2:
Potência no circuito 2, analógica;
•
DP:
Estado do disjuntor principal, digital;
•
D1:
Estado do disjuntor do circuito 1, digital;
•
D2:
Estado do disjuntor do circuito 2, digital.
Além das medidas, a SE também pode executar comandos de abertura e
fechamento nos disjuntores.
5.3 SIMULADOR DE SUBESTAÇÃO
Como visto na descrição da arquitetura (seção 5.1), em uma subestação
deve ser executada uma aplicação Java que se comunica com o aplicativo SASE por
meio de conexão JNI. Outra forma seria a troca de mensagens com a plataforma de
agentes. Na seção 2.1, mostrou-se que o SASE foi construído em C, mas, não utiliza
um middleware que permita envio de mensagens IIOP, como o CORBA, para efetuar
a comunicação externa com o JADE (seção 3.5). Então, foi estudada a primeira
alternativa, com a carga de uma máquina Java a partir de um programa C e
instanciação de classes para popular valores nas estruturas de dados da linguagem
C e nos seus respectivos objetos Java. Estes testes não evoluíram pois
necessitariam de uma adaptação significativa do SASE para se comunicar com a
parte desenvolvida em Java, fugindo do foco deste trabalho.
A partir daí, criou-se um simulador para gerar atualização dos valores. A
aplicação
Java
executada
num
micro
simulando
uma
SE
contém
uma
implementação reduzida de objetos CIM para representar os valores tempo-real das
medidas analógicas, dos estados digitais e dos comandos digitais.
Este simulador apresenta as seguintes funcionalidades:
•
Implementa o CIM;
•
Os valores analógicos são atualizados aleatoriamente, dentro da faixa
estipulada para variação de acordo com o objeto CIM, a cada dez
56
segundos;
•
Os valores analógicos consideram os estados dos disjuntores. Por
exemplo, se o disjuntor D1 está aberto, as medidas de I1 e P1 ficam
zeradas;
•
Pode-se ler o banco analógico através de uma lista de medidas
analógicas de interesse;
•
As medidas digitais sofrem mudanças em períodos aleatórios na faixa
de cinco a dez segundos;
•
As mudanças de estado ficam armazenadas numa fila circular de até
300 registros, com a estampa de tempo das ocorrências;
•
Pode-se ler a fila de mudanças passando a quantidade de pontos que
se quer retirar dela. Quando o método for chamado, as mudanças
enviadas são eliminadas da fila;
•
Pedido de lista de valores analógicos CIM pelo teclado com
apresentação das mudanças na console (interface local). Deve-se
passar
uma
lista
contendo
atributos
name
dos
objetos
MeasurementValue cujos valores desejam ser recebidos;
•
Pode-se ler todas as medidas digitais (varredura de consistência);
•
(*) Recebe pedidos de comando através de identificações numéricas de
pontos de comando (PC), relacionados com a abertura ou fechamento
de cada um dos disjuntores;
•
(*) Simula a ação de comando através da mudança de um ponto de
estado (PE) relacionado ao equipamento desejado. Este ponto é
chamado PE de retorno;
•
(*) Após o recebimento de um comando, o PE de retorno passa para o
estado desejado após dois segundos e meio, sendo prevista a
simulação de falhas no acionamento a cada quatro comandos com
sucesso;
57
•
(*) Pode-se ter apenas um comando por vez;
(*) – Não modelado no CIM. Testado apenas na interface local do simulador.
5.4 IMPLEMENTAÇÃO DE OBJETOS CIM
Devido à abrangência da especificação CIM, uma implementação completa
iria consumir muito tempo e não seria o mais adequado para o protótipo. Fez-se um
trabalho de redução das classes originais para o estritamente necessário de modo a
modelar a subestação definida na seção 5.2. Com a exclusão das classes, muitos
pacotes também não tiveram representação, sendo eliminados. A Figura 14 mostra o
diagrama de classes completo do modelo reduzido gerado para o protótipo. Foi
ocultada a classe Core.Naming do diagrama para evitar a poluição visual, pois ela é
a superclasse de todas as demais do modelo que precisam de identificação por
nome.
A implementação do CIM reduzido foi feita na forma de objetos criados
estaticamente. Não foi usado banco de dados nem persistência para esses objetos.
Nem todas as classes do modelo reduzido foram necessárias. A lista de todos os
objetos presentes na aplicação Java executada na subestação estão na Tabela 2.
Os comentários na linha das medidas significam que outros atributos do objeto foram
preenchidos. O número entre parênteses identifica o valor considerado normal para
a medida. A letra n representa a faixa de variação considerada normal.
Foi implementado apenas um sensor (MeasurementValue) por medida
(Measurement).
Apesar de haver no modelo a classe para definição do transformador, seus
enrolamentos e comutador de taps, eles ainda não foram utilizados na
implementação.
CimVersionREDUZIDO
58
(from CIM)
Version : Logical View::jav a::lang::String = "cim10_030501"
LastUpdate : Logical View::jav a::lang::String = "11/05/2006"
CimVersionREDUZIDO()
+MemberOf _PSR
ValueToAlias
(from Meas)
+Values
1..n
PowerSy stemResource
(from Core)
0..1
+Terminal
+ValueAliasSet
Line
(from Wires)
Measurement
Value
1
ValueAliasSet
+Contains_Equipments
(from Meas)
(from Meas)
1..n
+Contain_MeasurementValues
0..1
+ValueAliasSet
0..1 +ValueAliasSet
+ConductingEquipment
0..1
0..n
Equipment
(from Core)
EquipmentContainer
(from Core)
+Controls
0..n
Control0..n
(from Meas)
+ControlledBy _Control
0..1
+Measurements
0..1
+MemberOf _Measurement
+MemberOf _SubControlArea
1
0..n +Contains_Measurements
SubControl +Contain_Substations
Measurement
Substation
Area
(from Meas)
0..n
0..n
+Controls
+MeasuredBy _Measurement
+Measurements
(from Core)0..1
1..n
(from Core)
1
0..n
0..n
+Measurements
ConductingEquipment
PowerTransf ormer
(from Core)
(from Wires)
+Terminals
0..n
+Measurements
0..1
Terminal
1 +Unit
Unit
(from Core)
1
+Unit
+LimitSets
0..n
(from Core)
+LimitSet
LimitSet
(from Meas)
1
+Limits
0..n
Connector
Switch
Conductor
(from Wires)
(from Wires)
(from Wires)
+Contains_ACLineSegments[]
Limit
(from Meas)
BusbarSection
(from Wires)
ACLineSegment
(from Wires)
(from Wires)
58
Figura 14 - Modelo CIM reduzido para o protótipo.
Breaker
59
Classe CIM
Substation
SubControlArea
Terminal[3]
Objeto
SE
AreaControle
TerminalConexao
TerminalConexao[0]
TerminalConexao[1]
TerminalConexao[2]
Breaker[3]
Disjuntor
Disjuntor[0]
Disjuntor[1]
Disjuntor[2]
BusbarSection
Barra
Line
Linha
ACLineSegment[2]
Circuito
Circuito[0]
Circuito[1]
Control[3]
Controle
Controle[0]
Controle[1]
Controle[2]
Measurement[9]
Medida
Medida[0]
Medida[1]
Medida[2]
Medida[3]
Medida[4]
Medida[5]
Medida[6]
Medida[7]
Medida[8]
MeasurementValue[9] ValorMedida
ValorMedida[0]
ValorMedida[1]
ValorMedida[2]
ValorMedida[3]
ValorMedida[4]
ValorMedida[5]
ValorMedida[6]
ValorMedida[7]
ValorMedida[8]
LimitSet[1]
atributo.aliasName
"SE Araucaria"
"COE Campo Comprido"
"T_BARRA"
"T_CIRC_1"
"T_CIRC_2"
"Terminal Barramento"
"Terminal Circuito 1"
"Terminal Circuito 2"
"DJ_P"
"DJ_1"
"DJ_2"
"BP"
"LF"
"DJ Principal"
"DJ Circuito 1"
"DJ Circuito 2"
"Barra Principal"
"Linha Fonte"
"C1"
"C2"
"Circuito 1"
"Circuito 2"
"C_DJ_P"
"C_DJ_1"
"C_DJ_2"
"Controle Disjuntor Principal"
"Controle Disjuntor Circuito 1"
"Controle Disjuntor Circuito 2"
"M_VB"
"M_FB"
"M_I1"
"M_P1"
"M_I2"
"M_P2"
"M_DJ_P"
"M_DJ_1"
"M_DJ_2"
"Tensao barramento"
"Frequencia barramento"
"Corrente Circuito 1"
"Potencia Circuito 1"
"Corrente Circuito 2"
"Potencia Circuito 2"
"Estado DJ Principal"
"Estado DJ Circuito 1"
"Estado DJ Circuito 2"
10 < n(13.8) < 14
55 < n(60) < 65
0 < n(300) < 350
0 < n(4) < 4.8
0 < n(15) < 175
0 < n(2) < 2.4
"S_VB"
"S_FB"
"S_I1"
"S_P1"
"S_I2"
"S_P2"
"S_E_DJ_P"
"S_E_DJ_1"
"S_E_DJ_2"
"Sensor Tensao Barramento"
"Sensor Frequencia Barramento"
"Sensor Corrente Circuito 1"
"Sensor Potencia Circuito 1"
"Sensor Corrente Circuito 2"
"Sensor Potencia Circuito 2"
"Sensor Estado DJ Principal"
Sensor Estado DJ Circuito 1
"Sensor Estado DJ Circuito 2"
double; sensor satura +30% do normal
double; sensor satura +8,33% do normal
double; sensor satura +30% do normal
double; sensor satura +30% do normal
double; sensor satura +30% do normal
double; sensor satura +30% do normal
boolean; registro de timestamp
boolean; registro de timestamp
boolean; registro de timestamp
Modelado apenas limites para a medida
M_VB
"CJ_LIM_N_VB"
"Conjunto de Limites Normais da
VB"
CjtoLimitesVB
CjtoLimitesVB[0]
Limit[2]
atributo.name
"ARC"
"COE_CCO"
Outros atributos
apenas um conjunto de limites normais
LimiteNormal
Unit[5]
ValueAliasSet[1]
LimiteNormal[0]
"LIM_N_VB_SUP"
LimiteNormal[1]
Unidade
Unidade[0]
Unidade[1]
Unidade[2]
Unidade[3]
Unidade[4]
DicionarioValores
"LIM_N_VB_INF"
Verbete
Verbete[0]
Verbete[1]
definido com o valor 14
definido com o valor 13
"kV"
"Hz"
"MW"
"A"
"DIGITAL"
Para o prototipo, há apenas um
dicionario de valores para associar em
todas as medidas / controles necessários
DicionarioValores[0]
ValueToAlias[2]
"Limite Superior VB para
ALarme"
"Limite Inferior VB para ALarme"
"ABERTO"
"FECHADO"
booleano definido como falso
booleano definido como verdadeiro
Tabela 2 - Objetos CIM para subestação do protótipo.
A Figura 15 identifica no diagrama unifilar da subestação os elementos que
foram modelados em objetos CIM. Os retângulos representam os objetos dos
60
sensores. São os sensores que fornecem ao sistema o valor das medidas
analógicas e digitais. As setas identificam as associações entre os objetos, conforme
o diagrama de classes do CIM apresentado na Figura 14.
COE_CCO
LF
ARC
S_E_DJ_P
LIM_N_VB_SUP
S_FB
M_DJ_P
C_DJ_P
S_VB
CJ_LIM_N_VB
LIM_N_VB_INF
DJ_P
S_E_DJ_1
M_VB
M_FB
S_E_DJ_2
T_BARRA
M_DJ_1
M_DJ_2
BP
DJ_1
DJ_2
C_DJ_1
C_DJ_2
T_CIRC_1
C1
T_CIRC_2
C2
M_I1
M_P1
M_I2
M_P2
S_I1
S_P1
S_I2
S_P2
Figura 15 – Identificação dos objetos CIM sobre o unifilar.
As seguintes associações foram realizadas:
•
A medida de tensão no barramento M_VB se associa com um conjunto
de limites CJ_LIM_N_VB. Este conjunto contém dois objetos de limites
identificados na geração de alarmes para ultrapassagem de nível alto e
nível baixo;
•
Os disjuntores DJ_P, DJ_1, DJ_2 se associam respectivamente com as
medidas M_DJ_P, M_DJ_1, M_DJ_2;
•
As medidas M_DJ_P, M_DJ_1, M_DJ_2 se associam com os
respectivos controles C_DJ_P, C_DJ_1, C_DJ_2;
61
•
As medidas M_DJ_P, M_DJ_1, M_DJ_2 se associam com seus
respectivos sensores S_E_DJ_P, S_E_DJ_1, S_E_DJ_2;
•
Todos os sensores se associam com as suas respectivas medidas;
•
A barra BP se associa ao terminal T_BARRA;
•
O terminal de conexão T_BARRA se associa com as medidas M_VB e
M_FB;
•
As medidas M_VB e M_FB se associam com seus respectivos
sensores S_VB e S_FB;
•
Os circuitos C1 e C2 se associam aos respectivos terminais de conexão
T_CIRC_1 e T_CIRC_2;
•
O terminal T_CIRC_1 se associa com as medidas M_I1 e M_P1 e estas
aos seus sensores S_I1 e S_P1;
•
O terminal T_CIRC_2 se associa com as medidas M_I2 e M_P2 e estas
aos seus sensores S_I2 e S_P2;
•
Todas as medidas se associam obrigatoriamente com um objeto de
identificação da unidade de grandeza sendo medida;
•
Todos os controles se associam a uma unidade também;
•
As medidas digitais M_DJ_P, M_DJ_1, M_DJ_2 se associam a um
dicionário de valores para identificar o que significa cada estado digital;
Exemplo: Para uma medida digital, os estados verdadeiro/falso
significam abertura/fechamento do equipamento, respectivamente. Para
outra medida, os mesmos estados significam operação normal/falha.
•
Os controles digitais C_DJ_P, C_DJ_1, C_DJ_2 também se associam
ao mesmo dicionário de valores;
Por enquanto, não há associação de linhas com elementos da subestação
e nem de modelagem do transformador.
O terminal (terminal de conexão) serve como ponto de junção entre um
barramento ou circuito e seus respectivos pontos de medição de valores.
62
O breaker (disjuntor) é um equipamento do sistema elétrico (derivado da
classe PowerSystemResource) para efetuar comando e para ler medidas digitais.
As atualizações a seguir foram necessárias para adaptar as classes do
modelo CIM à ontologia do JADE:
•
Core.Naming
o
Implementação da interface jade.content.Concept. Para que uma
classe do modelo possa ser mapeada num esquema de ontologia
do JADE como um conceito, ela precisa implementar esta
interface. Para facilitar, a implementação foi feita uma única vez
diretamente na superclasse do CIM para objetos que utilizam
atributos de nome;
o
Inclusão dos métodos setters/getters para acesso aos atributos.
Conforme
documentação
do
JADE
[JadeOnto04],
classes
ontológicas (classes associadas a um esquema de ontologia por
reflexão) devem fornecer esses métodos de acesso a atributos.
•
Domain.Numeric
o
Implementação da interface jade.content.Concept. Pelo mesmo
motivo usado nas classes nomeadas, a classe que define um tipo
numérico de dado também será usada como um conceito na
ontologia do protótipo;
o
Implementação dos setter/getters para os atributos. Classes
ontológicas devem implementar métodos de acesso padronizados
para seus atributos;
o
Inicialização dos atributos atualmente utilizados (INT_TYPE = 0,
DOUBLE_TYPE = 0, BOOLEAN_TYPE = false).
•
Meas.MeasurementValue
o
Implementação dos setter/getters para os atributos.
63
As
classes
abaixo
foram
removidas
do
modelo
por
possuírem
correspondentes na linguagem Java:
•
Domain.Boolean;
•
Domain.Integer;
•
Domain.Double;
•
Domain.Short.
5.5 TESTES COM ONTOLOGIA
As mensagens trocadas entre os agentes do protótipo devem registrar qual
a ontologia usada para identificação dos objetos (ver seção 3.5). A ontologia deve
ser gerada no JADE por uma classe que estenda jade.content.onto.Ontology. Essa
classe deve definir as constantes que compõem o vocabulário da ontologia, os
esquemas de identificação dos predicados, ações e conceitos e as classes Java
associadas (ver seção 3.7).
No primeiro contato com os exemplos existentes na documentação do
JADE para a criação de classes ontológicas, percebeu-se que este trabalho seria
árduo. Com isso em mente, foi otimizada a modelagem do que seria estritamente
necessário do CIM para a troca de dados, reduzindo-se a ontologia para a
implementação dos conceitos relacionados aos objetos Meas.MeasurementValue e
Domain.NUMERIC e do predicado MedidasExistentes.
O predicado passa uma lista de conceitos MeasurementValue, tendo os
atributos name preenchidos com as strings de identificação única do objeto CIM
modelado. Em resposta à mensagem QUERY-REF contendo o predicado
MedidasExistentes, é processada uma mensagem INFORM contendo os mesmos
conceitos interrogados, mas com os atributos value preenchidos com o valor da
medida
solicitada.
Com
esta
“mini-ontologia
CIM”,
denominada
OntologiaAutomacao, os agentes ficam aptos a mandar e receber as medidas
64
modeladas para a subestação.
A modelagem e construção da classe ontológica foram feitas na ferramenta
Protégé. A tela principal da OntologiaAutomacao feita na ferramenta é apresentada
na Figura 16.
Figura 16 - Protégé: mini-ontologia CIM.
Após a modelagem, aplica-se o plugin BeanGenerator (aba da direita vista
na tela da ferramenta Protégé) para a geração das classes em Java/JADE da
ontologia, esquema de predicado e esquema de conceitos. O processo de geração
exige apenas que se informe o local para geração, o pacote e o domínio das
classes. Uma vez acionado o plugin, é só inserir as classes no projeto e registrar a
ontologia no agente que gerencia o conteúdo do container JADE e nas mensagens
ACL.
65
5.6 AGENTES IMPLEMENTADOS
Conforme analisado na seção 3.3, há diversas formas de classificar e
utilizar os agentes de um sistema distribuído. O estágio atual do protótipo ainda não
implementa
nenhum
tipo
complexo,
contendo
apenas
agentes
simples,
desempenhando tarefas que não requerem inteligência. São meros coletores de
dados, mas que servem como uma primeira avaliação da tecnologia.
Por enquanto, foram construídos três tipos de agentes no protótipo:
•
COVx: agente global que gerencia um Centro de Operação Virtual de
número x;
•
SEn: agente local em uma subestação n que troca informações com o
simulador;
•
SEnProxy: agente local móvel que é criado pelo COVx após a
autenticação de um agente SEn e que migra para um container de
agentes Webcontainer. Troca dados com a servlet mantida para a
sessão do usuário e com o agente SEn respectivo.
Os locais (containers) onde os agentes residem são:
•
Main-Container: localizado no servidor de aplicação, hospeda o agente
COVx;
•
Webcontainer: localizado no servidor Web, é responsável por receber
agentes SEnProxy vindos do Main-Container;
•
Container-N: localizado na SE de número N, abriga o agente SEn.
Além dos agentes, são necessárias as classes:
•
OntologiaAutomação: contém a ontologia com base no CIM reduzido,
implementada como esquemas do JADE;
•
Servlet: lança o container Webcontainer e aguarda os dados
recebidos pelo agente SEnProxy;
•
Subestação: simulador de dados que fica aguardando mensagens do
66
JADE e gerando eventos para a fila.
A Figura 17 é uma tela capturada da ferramenta de interface gráfica para
controle da plataforma JADE, RMA (Remote Agent Management). Nela, pode-se
identificar a existência dos três containers e dos três agentes mencionados.
Percebe-se, ainda, a existência dos agentes ams e df no Main-Container, conforme
explicado na seção 3.5.
Figura 17 - Gerenciamento gráfico dos agentes do protótipo no JADE.
Com a ferramenta RMA, pode-se disparar as demais ferramentas que
acompanham o JADE (seção 3.6). Uma delas é um agente de escuta das
mensagens ACL, chamado Sniffer, mostrando o texto na linguagem SL0. Como
exemplo, a Figura 18 mostra a captura do conteúdo de uma mensagem com
propósito INFORM feita do agente SE1 para o agente SE1Proxy, passando a lista
de valores dos objetos MeasurementValue do modelo CIM associados com o
terminal T_BARRA, esquematizados na ontologia, e pedidos em uma mensagem
anterior (com propósito QUERY-REF).
67
((MedidasExistentes
(sequence (MeasurementValue :name S_VB
:value (NUMERIC :BOOLEAN_TYPE false
:INT_TYPE 0
:DOUBLE_TYPE 14.277346612698063))
(MeasurementValue :name S_FB
:value (NUMERIC :BOOLEAN_TYPE false
:INT_TYPE 0
:DOUBLE_TYPE 61.71474778014864)))))
Figura 18 - Sniffer: captura de mensagem ACL/SL0.
5.7 INTERAÇÃO ENTRE AGENTES E APRESENTAÇÃO
Para que o protótipo funcione conforme explicado na seção 5.5, com os
três containers do JADE e seus respectivos agentes, deve-se seguir os seguintes
passos:
•
Executar o JADE e carregar o agente COV1. O JADE se encarrega de
gerar o Main-Container automaticamente;
•
Lançar o servidor Tomcat com lançamento automático da servlet que
cria o Webcontainer;
•
Executar outra instância do JADE e carregar o agente SE1. O JADE se
encarrega de gerar o Container-1 automaticamente.
Quando o agente COV1 recebe a mensagem do agente SE1 com o
propósito CFP (Call for Proposal), ele sabe que está começando um protocolo de
conversação FIPA-ContractNet e aceita entrar na disputa pelo controle da
subestação, caso haja outros agentes do tipo COV na conversa. Assim que a
negociação termina, o COV1 passa a supervisionar a subestação e gera o agente
SE1Proxy para trocar os dados entre o agente SE1 e o servidor Tomcat, sendo
movido na seqüência para o Webcontainer.
A atualização dos dados na servlet ocorre de duas maneiras. A primeira, é
por um comportamento cíclico do agente SE1Proxy que envia uma mensagem com
propósito QUERY_REF para pesquisar os valores das medidas analógicas
68
existentes. O agente SE1 na subestação responde com os dados por uma
mensagem de propósito INFORM. A segunda maneira é por um comportamento
também cíclico do agente SE1 que manda uma mensagem INFORM para o
SE1Proxy, passando os valores dos conceitos MeasurementValue correspondente
às medidas digitais. Desta forma, os valores analógicos são perguntados para a
subestação mas as mudanças de valores digitais são enviadas sem pergunta prévia.
No componente de interface foi utilizada a combinação das tecnologias
Java Servlet , JSP, SVG e AJAX. Um servlet é uma classe Java, assim, é possível a
utilização de todos os recursos dessa linguagem para implementar o processamento
de uma requisição HTTP. A tecnologia JSP pode ser então utilizada no que ela faz
de melhor: controle de layout da página com inclusão de conteúdo dinâmico. A
combinação
das
tecnologias
forma
uma
ferramenta
poderosa
para
o
desenvolvimento de aplicações bem estruturadas e de fácil manutenção [Gomes03].
A interface do protótipo permite visualizar o diagrama unifilar no qual
aparecem as medidas existentes para a subestação. A instalação consiste apenas
de um navegador com suporte a SVG e AJAX. Para exemplificar, foi capturada uma
página HTML que representa a IHM do operador em um centro de controle (Figura
19). O diagrama está em SVG e os valores analógicos são atualizados por AJAX. A
representação dos estados dos disjuntores também ocorre por AJAX e é feita pela
mudança de cor dos símbolos retangulares destes equipamentos.
69
Figura 19 - Tela de operação do protótipo.
70
6
CONCLUSÕES
As empresas do setor de energia devem estar preparadas para um futuro
em que o ritmo de introdução de novas tecnologias é crescente. A supervisão tende
a não ficar baseada apenas em dados de baixo nível mas em informações de alto
nível sintetizadas automaticamente. Sistemas que contemplam interoperabilidade de
aplicações e que se preparam para incorporar inovações através de evolução sem
traumas tendem a reduzir custos e manter a motivação da empresa.
A modernização do sistema de automação da concessionária de energia
elétrica do estado do Paraná mantém-se alerta para a prospecção de tecnologias
emergentes que levem a empresa a um alto grau de sintonia com outros agentes do
sistema elétrico. Sistemas distribuídos com utilização da tecnologia de agentes são
largamente investigados na literatura científica. A adequação das tecnologias Java
na construção de um sistema distribuído moderno de automação passa a ser um
foco de interessante da área de desenvolvimento.
Os estudos de especificações voltadas para a criação de padrões
concretos de comunicação entre agentes abertos e interoperáveis fornecidas por
uma fundação internacional exclusiva para esse fim, a FIPA, e da plataforma JADE
para execução e desenvolvimento de agentes em Java mostram a evolução
existente da tecnologia. A plataforma JADE implementa diversas características que
facilitam a construção de um sistema distribuído. Sua aderência ao padrão FIPA
garante compatibilidade com outras plataformas de agentes. O produto ainda não foi
testado em seus aspectos de segurança e desempenho perante um ambiente de
testes severo, necessário para um sistema de missão-crítica.
A modelagem de dados CIM para a concessionária permite a concepção
de uma arquitetura baseada em padrões abertos envolvendo outros sistemas da
empresa. Novamente, a consciência de padrões internacionais utilizados no domínio
de conhecimento específico da área elétrica pode gerar benefícios para a integração
71
de sistemas.
O protótipo construído se preocupou em disponibilizar uma estrutura base
que possa servir de apoio a estudos mais aprofundados.
Por tudo o que se estudou neste trabalho, comprova-se que a tecnologia
abordada tem um potencial muito grande para compor uma operação eficiente e
eficaz do sistema elétrico paranaense.
6.1 TRABALHOS FUTUROS
Uma proposta de continuação do trabalho é o aprofundamento do estudo
de desempenho da tecnologia de agentes JADE para disponibilizar dados em
velocidade compatível com a criticidade do processo controlado. No caso de
processos elétricos considera-se, a grosso modo, o tempo de resposta de alguns
poucos segundos entre o acontecimento de um evento físico e sua entrada nos
algoritmos de funções elétricas automatizadas ou de sua apresentação ao operador
do sistema. Os sistemas de tempo real para a área elétrica também devem ter
capacidade de armazenar e processar seqüências de eventos (SOE – Sequence of
Events) devidamente discriminadas no tempo com resolução de um milissegundo.
O aperfeiçoamento do protótipo leva ao trabalho de: conversação com o
sistema SCADA existente; utilização das demais classes do modelo CIM, aplicandoas também na ontologia; uso de fila de mensagens para geração de alarmes; estudo
de criptografia e autenticação da plataforma e; construção de agentes inteligentes
para funções elétricas e configuração dinâmica. Interação entre a plataforma de
agentes e o mundo externo por Web, IIOP e JMS pode ser explorada no JADE
visando sempre o aumento do grau de integração corporativa.
O aprimoramento da questão de comunicação semântica, com a criação de
uma ontologia pesada, pode ser um fator contributivo quando se pensa em um
barramento de integração das principais aplicações da empresa. A possibilidade de
72
efetuar carregamento dinâmico da ontologia também pode ser explorada num futuro
próximo.
A adoção de outros padrões, como a interface de componentes IEC 61970401, deve ser estuda para levantamento de incompatibilidades com o uso da
tecnologia de agentes.
O desenvolvimento da interface também passa por validação da tecnologia
pelos operadores do atual sistema. A busca por maior grau de facilidades para
desenvolvimento e edição de unifilares deve ser considerada numa visão mais
ampla das necessidades do futuro sistema de automação.
Estudos sobre Tolerância a Faltas (TOF) também estão sendo feitos.
Falhas dos processos componentes do sistema deverão ser mascaradas de maneira
que o mesmo não dependa da confiabilidade de apenas um processo. Em
[Schultz06] são tratadas técnicas de TOF em sistemas distribuídos que podem ser
empregadas pela equipe de desenvolvimento de software da COPEL com aplicação
em um banco de dados de configuração e históricos.
Um exame das diversas possibilidades de surgimento ou desaparecimento
de centros, subestações ou operadores deve ser feito para uma modelagem de
negociação mais apurada. A distribuição de subestações para os operadores dos
centros deve considerar fatores como posição geoelétrica da subestação,
sobrecarga do centro, manobras em curso e manutenção de equipamentos.
73
REFERÊNCIAS
[ABNT06] ABNT - Associação Brasileira de Normas Técnicas; 04 julho 2006,
http://www.abnt.org.br.
[AdobeSVG06] Adobe SVG Viewer; 23 outubro 2006, http://www.adobe.com/svg.
[ANEEL06] ANEEL - Agencia Nacional de Energia Elétrica; 03 novembro 2006,
http://www.aneel.gov.br.
[ANSI06] ANSI - American
http://www.ansi.org.
National
Standards
Institute;
06
novembro
2006,
[Antoniou03] Antoniou, G.; van Harmelen, F. Web Ontology Language: OWL, Handbook on
Ontologies in Information Systems, 2003.
[Arpírez01] Arpírez, J. C.; Corcho, O.; Fernández-Lóopez, M.; Gómez-Pérez, A. WebODE: a
scalable ontological engineering workbench, First International Conference on
Knowledge Capture (KCAP'01), ACM Press, 2001.
[Azevedo99] Azevedo, Gilberto Pires de; Feijó, Bruno; Costa, Mônica A Estrutura da
Próxima Geração de Centros de Controle de Energia Elétrica, XV SNPTEE, 1999.
[Azevedo00] Azevedo, Gilberto P.; Feijó, Bruno; Costa, Mônica Control Centers Evolve with
Agent Technology, IEEE Computer Applications in Power, 2000.
[Bean06]
Ontology
Bean
Generator
for
Jade;
11
novembro
2006,
http://hcs.science.uva.nl/usr/aart/beangenerator/index25.html, http://protege.cim3.net.
[Bechhofer01] Bechhofer, S.; Horrocks, I.; Goble, C.; Stevens, R. OilEd: a Reason-able
Ontology Editor for the Semantic Web, In: Proceedings of 14th International Workshop on
Description Logics, Stanford, USA, August, 2001.
[Bellifemine99] Bellifemine, Fabio; Poggi, A.; Rimassa, Giovanni JADE: A FIPA-Compliant
agent framework, In: Practical Applications of Intelligent Agents and Multi-Agents,
1999.
[Buse03] Buse, D. P.; Sun, P.; Wu, Q. H., Fitch, J. Agent-Based Substation Automation, Proc.
IEEE Power & Energy, Vol 1, No 2, March/April 2003, pp. 50-55.
[CIM06]
CIM
–
Common
Information
http://www.cimusers.org/Model/CIM/root.html.
Model;
13
novembro
2006,
[COPEL06] COPEL – Companhia Paranaense de Energia; 14 novembro 2006,
http://www.copel.com.
[Dometerco06] Dometerco, J. H. Uma arquitetura baseada em agentes e interface web para
sistemas de automação de subestações de energia elétrica, Monografia de
Especialização, Curitiba, UTFPR, dezembro 2006.
[Domingue98] Domingue, J. Tadzebao and WebOnto: Discussing, Browsing and Editing
Ontologies on the Web, 11th International Workshop on Knowledge Management
Support, IEEE Intelligent Systems & their applications, Vol.15(3):26-32, 1998.
74
[Eclipse06] The Eclipse Foundation, 15 novembro 2006, http://www.eclipse.org.
[ENGTRA05] COPEL - Apresentação interna da área de engenharia de transmissão;
Curitiba, outubro 2005.
[Farquhar97] Farquhar, A.; Fikes, R.; Rice, J. The Ontolingua Server: A Tool for
Collaborative Ontology Construction, International Journal of Human Computer Studies,
Vol.46(6):707-727, 1997.
[FIPA06] FIPA - Foundation for Intelligent Physical Agents; Specifications Repository, 16
novembro 2006, http://www.fipa.org/specs/pesspecs.tar.gz.
[FipaOS03] FIPA - Open Source; 2001, Nortel Networks Corporation; 2003, Emorphia Ltd;
19
novembro
2006,
http://fipa-os.sourgeforge.net;
19
novembro
2006,
http://sourceforge.net/project/showfiles.php?group_id=3819 (última versão: FIPA-OS
2.2.0 de 18/03/2003).
[Geus06] Geus, K. de et al A distributed model for electrical substation automation based on
multi-agents technology, CIMCA'2006 and IAWTIC'2006, IEEE, novembro 2006.
[Gluz02] Gluz, João Carlos Linguagens de Comunicação entre Agentes: Fundamentos e
Propostas de Padronização, Trabalho Individual de Doutorado, Canoas, UFRGS, 2002.
[Gomes03] Gomes, Eduardo Rodrigues; Silveira, Ricardo Azambuja; Vicari, Rosa Utilização
de agentes FIPA em ambientes para Ensino a Distância, Trabalho apresentado no
CLEI2003, 2003.
[Gomes05] Gomes, Eduardo Rodrigues Objetos Inteligentes de Aprendizagem: uma
abordagem baseada em agentes para objetos de aprendizagem, Dissertação de Mestrado,
Porto Alegre, UFRGS, junho 2005.
[Gruber93] Gruber, T. R. A Translation Approach to Portable Ontology Specification,
Knowledge Acquisition 5, 1993.
[Heck03] Heck; Wills; Vachtsevanos Software Technology for Implementing Reusable,
Distributed Control Systems, Control Systems Magazine, IEEE, 2003.
[Hughes04] Hughes, Joe The Integrated Energy and Communication Systems Architecture,
Volume IV: Technical Analysis, EPRI, 2004.
[IE06] Microsoft Internet Explorer; 20 novembro 2006, http://www.microsoft.com.
[IEC06] IEC - International
http://www.iec.ch.
Electrotechnical
Commission;
22
novembro
2006,
[Jade06] Java Agent DEvelopment Framework; 23 novembro 2006, http://jade.tilab.com.
[JadeAdm05] Bellifemine, Fabio; Caire, Giovanni; Trucco, Tiziana; Rimassa, Giovanni JADE
Administrator’s Guide, JADE 3.4, 2006; 24 novembro 2006, http://jade.cselt.it.
[JadeOnto04] Caire, Giovanni; Cabanillas, David JADE Tutorial: Application-defined
Content Languages and Ontologies, JADE 2.6, 2004; 26 novembro 2006,
http://jade.cselt.it.
75
[JadePrg05] Bellifemine, Fabio; Caire, Giovanni, Trucco, Tiziana; Rimassa, Giovanni JADE
Programmer’s Guide, JADE 3.3, 2005; 27 novembro 2006, http://jade.cselt.it.
[Java06] JavaTM 2 Platform Standard Edition Development Kit 5.0; 28 novembro 2006,
http://java.sun.com.
[Jennings98] Jennings, N.; Sycara, K. e Wooldrige, M. A Roadmap of Agent Research and
Development, Autonomous Agents and Multi-Agent Sytems, Vol. 1, pp. 7-38, 1998.
[McGuinness04] McGuinness, D.; van Harmelen, F. OWL Web Ontology Language
Overview,
W3C
Recommendation,
2004;
29
novembro
2006,
http://www.w3.org/TR/owl-features.
[Malucelli06] Malucelli, Andreia Ontology-based Services for Agent Interoperability, Tese de
Doutorado, University of Porto, 2006.
[Noy00] Noy, N. F.; Fergerson, R. W.; Musen, M. A. The knowledge model of Protégé-2000:
Combining interoperability and exibility, Knowledge Engineering and Knowledge
Management. Methods, Models, and Tools: 12th International Conference, LNCS, 2000.
[Nwana99] Nwana, H. et al ZEUS: a toolkit for building distributed multi-agent systems, In:
Artifical Intelligence Journal, 1999.
[ONS06] ONS - Operador Nacional do Sistema Elétrico; 30 novembro 2006,
http://www.ons.org.br.
[Pereira95] Pereira, Luiz A.C. Pereira et al SAGE - Um Sistema Aberto para a Evolução,
Eletroevolução: sistema de potência, CIGRE, 1995.
[Prates05] Prates, Petronio Spyer Integração de Sistemas no Ambiente Corporativo Baseado
em Padrões, VI SIMPASE, 2005.
[Prayurachatuporn01] Prayurachatuporn, S; Benedicenti, L. Increasing the reliability of
control systems with agen technology, ACM SIGAPP Applied Computing Review, v. 9,
n. 2, Jul. 2001.
[Protege06]
Protégé,
Stanford
http://protege.stanford.edu.
Medical
Informatics;
01
dezembro
2006,
[QIU02] B. Qiu, H. B. Gooi, Y. Liu, E. K. Chan Internet-based SCADA display system, IEEE
Computer Applications in Power, January, 2002, Pp. 14-19.
[QNX] QNX Software Systems; 03 dezembro 2006, http://www.qnx.com.
[Rational06] IBM-Rational; 04 dezembro 2006, http://www.rational.com.
[Schultz06] Schultz, R. Aplicação de Técnicas de Tolerância a Faltas em Sistemas
Distribuídos na Comunicação dos Processos de um Sistema de Automação do Sistema
Elétrico, Curitiba, Monografia de Especialização, PUC-PR, 2006.
[Shono02] Shono, T. et al A Remote Supervisory System for a Power System Protection and
Control Unit Applying Mobile Agent Technology, In: Transmission and Distribution
Conference and Exhibition 2002, IEEE/PES, 2002.
76
[Silva04] Silva, Paulo Sérgio da Uma abordagem para incorporar mecanismos de
inteligência artificial a agentes móveis, Tese de Doutorado, Universidade Estadual de
Campinas, novembro 2004.
[Sure02] Sure, Y.; Erdmann, M.; Angele, J.; Staab, S.; Studer, R.; Wenke, D. OntoEdit:
Collaborative Ontology Engineering for the Semantic Web, First International Semantic
Web Conference (ISWC'02), 2002.
[Tomcat06] The Apache Jakarta Tomcat Servlet/JSP Container; 05 dezembro 2006,
http://jakarta.apache.org.
[Uschold96] Uschold, M.; Grüninger, M. Ontologies: Pinciples, Methods and Applications,
Knowledge Engineering Review, 1996.
[Uslar05] Uslar, Mathias Semantic Interoperability within the Power Systems Domain,
IHIS’05, novembro 2005, ACM.
[Vergara02] Vergara, Jorge E. López de; Villagrá, Víctor A.; Berrocal, Julio Semantic
Management: advantages of using na ontology-based management information metamodel, HPOVUA-2002 workshop, 2002.
[Vrba03] Vrba, Pavel JAVA-Based Agent Platform Evaluation, LNAI 2744, 2003.
[Vos01] Vos, A. de; Widergren, S.E.; Zhu, J. XML for CIM Model Exchange, IEEE, 2001.
[Waldo01] Waldo, J. Mobile Code, Distributed Computing, and Agents, IEEE Intelligent
Systems, March/April, 2001, p.10- 12.
[Wong99] Wong, D.; Paciorek, N.; Moore, D. Java-based Mobile Agents, Communications of
the ACM, v. 2, n. 3, p. 92-102, March, 1999.
Download