Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
i
P
i
(4.1)
P
i
= T
a,i
+T
h,i
(4.2)
Onde i = 1,2,...,N.
O valor de T
a
, em uma transmisso sem falhas, sempre constante, pois obtm sempre
a mesma quantidade de dados, ao contrrio de T
h
que pode variar dependendo do nmero
de dados histricos pedidos ao controlador.
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 38
Tabela 4.3: Denio dos smbolos utilizados neste trabalho
Smbolo Signicado
JN Janela de tempo disponvel para um dia
TT Tempo total comunicao para obter os dados de todos os poos
P
i
Tempo para obter os dados do poo i (segundos)
T
a
Tempo de aquisio dos dados Atuais e de Ciclo (segundos)
T
h
Tempo de aquisio dos dados de histrico (segundos)
T
x
Taxa de produo de dados (dados/segundo)
T
min
Tempo mnimo de aquisio de dados histricos
Controlando o valor de T
h
possvel determinar se a aquisio dos dados dos contro-
ladores vai privilegiar a leitura dos dados histricos ou dos dados atuais. Quanto menor T
h
maior o nmero de perodos TT que aparecero em uma mesma janela JN, o que informa
que os dados atuais esto sendo atualizados numa frequncia maior.
No entanto, para evitar o aumento do nmero de dados histricos no controlador:
T
h,i
> T
min,i
(4.3)
Onde:
T
min,i
= T
x,i
N
j1
P
j
(4.4)
O algoritmo para realizar o clculo do tempo mnimo exibido na gura 4.13.
float MinTempoHistorico(int pocoAtual){
for(i=1 ate numero_Pocos){
if(i != pocoAtual){
TempoMinimo += P[i]
}
}
TempoMinimo = TempoMinimo * Tx[pocoAtual]
return TempoMinimo;
}
Figura 4.13: Rotina para determinar o mnimo tempo para a aquisio de dados histricos
Determinar o tempo mnimo para adquirir os dados histricos impede que os mesmos
sejam perdidos sem o conhecimento dos usurios. Pois quando se tem o tempo mnimo
determinado possvel gerar alarmes aos usurios para que os mesmos sejam alertados
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 39
sobre o problema da perda de dados. No entanto, ainda possvel aperfeioar a aquisio
dos dados permitindo que uma quantidade maior de dados histricos possam ser adquiri-
dos em um menor tempo. Para aumentar a quantidade de dados histricos adquiridos
possvel aumentar o tempo de aquisio dos dados histricos em detrimento dos dados
atuais. O favorecimento de um tipo de aquisio em relao ao outro possvel pois
em muitos momentos os usurios no estaro necessitando dos dados atuais o que torna
desnecessria uma freqncia alta na atualizao dos dados atuais.
Na gura 4.14 apresentado umalgoritmo para permitir comportamento adaptativo na
aquisio dos dados histricos e dados atuais. Este algoritmo baseia-se na freqncia dos
pedidos dos usurios para determinar se deve privilegiar a aquisio dos dados histricos
ou atuais. Portanto, quando muitos pedidos forem feitos ao sistema os dados atuais sero
adquiridos com uma freqncia maior. Quando no houver pedidos de dados atuais, por
parte dos usurios, os dados histricos sero privilegiados em relao aos dados atuais.
No algoritmo da gura 4.14 possvel observar que existe um limite de tempo mnimo
para aquisio dos dados histricos j que necessrio esvaziar os dados existentes no
controlador. Da mesma forma que existe um tempo mnimo para a aquisio dos dados
de histrico tambm interessante que exista um tempo mnimo para os dados atuais
(MinTempoDadoAtual) para impedir que os dados atuais quem desatualizados por um
longo perodo de tempo.
void modificaTempoAquisicao(){
TempoDadoAtual = MinTempoDadoAtual + ConstDA * frequencia_requisicoes;
TempoHistorico = TEMPO_MAX - TempoDadoAtual;
if(TempoHistorico < MinTempoHistorico()){
TempoHistorico = MinTempoHistorico();
TempoDadoAtual = TEMPO_MAX - TempoHistorico;
}
}
Figura 4.14: Rotina para modicar taxa de aquisio entre dados histrico e dados atuais
Com o algoritmo apresentado na gura 4.14 possvel determinar se os dados histri-
cos vo ser privilegiados em relao aos dados atuais ou o oposto. No entanto, quando um
poo produzir uma maior quantidade de dados histricos em relao aos outros, no pos-
svel, com o algoritmo da gura 4.14, privilegiar o poo com a maior quantidade de dados.
Para proporcionar uma nova otimizao proposto um algoritmo que divida a quantidade
de tempo total do histrico em partes no iguais entre os poos. Desta forma, os poos
com maior nmero de dados devem receber uma maior parte do tempo de aquisio en-
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 40
quanto os poos com menor quantidade de dados recebem um tempo menor.
O algoritmo apresentado na gura 4.15 permite a mudana nos tempos de leitura de
cada poo, permitindo que os poos com a maior quantidade de dados sejam privilegiados
em relao aos poos que possuem uma menor quantidade de dados. Esta mudana
realizada atravs de uma mdia ponderada onde a quantidade de dados de um poo
dividida pela quantidade total de dados de todos os poos e por m e multiplicado pelo
tempo total para leitura de todos os dados histricos.
T
h,i
= (nH
i
/totalHist) TT
h
(4.5)
O algoritmo para aquisio dos dados apresentado na gura 4.15 possui a incumbn-
cia de modicar a relao entre tempo de dados atuais e tempo de dados histricos. O
prximo passo consiste em aumentar o tempo de leitura de histrico dos poos que pos-
suem uma maior quantidade de dados e diminuir o tempo dos poos que possuem poucos
dados. E por m so adquiridos os dados de todos os poos.
void AdquireDados(){
modificaTempoAquisicao();
for(i=1 ate num_poco)
totalDadosHist += DadosPoco[i].numDados();
for(i=1 ate num_poco)
TempoPedido[i]=(DadosPoco[i].numDados/totalDadosHist)*TempoTotalHist();
for(i=1 ate num_poco){
tempoInicial=tempoAtual();
while(tempoInicial-tempoAtual() < TempoPedido[i]){
adquireDadosHistoricos(i);
}
adquireDadosAtuais(i);
}
}
Figura 4.15: Algoritmo para realizar a aquisio dos dados
4.4.4 Reestruturao do Mestre
O software SISAL foi idealizado para trabalhar com vrios mtodos de elevao; no
entanto, o SISAL supervisionava somente poos com o mtodo de elevao bombeio
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 41
mecnico. Este fato levou a que a programao do mestre de campo casse, durante este
perodo, muito voltada s necessidades do mtodo de elevao bombeio mecnico. Isso
gerou diculdades na manuteno e desenvolvimento do cdigo, pois tornou o mesmo
muito especco ao mtodo de elevao bombeio mecnico. Portanto, para desenvolver
o mestre de campo para o mtodo de elevao plunger lift, foi necessrio refazer a en-
genharia de software deste mdulo. A reestruturao do mestre consistiu em refazer a
engenharia de software de uma parte do mestre de campo e esta subseo tratar deste
assunto.
De forma simplicada, o mestre de campo pode ser denido em trs mdulos expos-
tos na gura 4.16. A Comunicao com o Servidor desempenhada pelo mdulo de
mesmo nome. O mdulo de Comunicao com Controladores se encarrega de realizar
a comunicao com os controladores, utilizando a rede campo e os protocolos especcos
de cada controlador. O mdulo de Representao dos Controladores tem a funo de
representar os controladores supervisionados, como tambm armazenar temporariamente
os dados adquiridos dos controladores para serem enviados ao servidor.
A interao entre os mdulos acontece com cada pedido recebido no mestre, seguindo
a ordem apresentada na gura 4.16, ou seja, o pedido recebido na comunicao com o
servidor, repassado para o mdulo de representao dos controladores para em seguida
ser feito o pedido pela rede de campo aos controladores.
Figura 4.16: Mdulos do mestre de campo plunger lift
Dos trs mdulos apresentados, a reestruturao deu-se somente no mdulo de rep-
resentao dos controladores. Para armazenar os dados obtidos do campo este mdulo
representa cada poo supervisionado atravs de uma instncia que possui variveis rep-
resentando todos os dados supervisionados. O conjunto destas instncias so agrupados
em um buffer o qual atualizado pelo mdulo de comunicao com os controladores. O
buffer tambm responsvel por fornecer os dados pedidos pelo mdulo de comunicao
com o servidor.
O buffer em questo pode conter representaes de controladores com caractersticas
diferentes. Com isto a estrutura do mdulo de representao dos controladores foi con-
struda, como pode ser visto na gura 4.18, por vrios buffers diferentes. Desta forma,
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 42
para cada controlador especco havia um buffer para armazenar seus dados. Por exem-
plo, existindo trs tipos de controladores diferentes para o mtodo de elevao bombeio
mecnico, existiriam trs buffers. Esta estrutura comeou a apresentar problemas me-
dida em que houve um aumento do nmero de controladores diferentes supervisionados
pelo SISAL. Aprincipal diculdade gerada foi o aumento da complexidade para gerenciar
os vrios buffers o que dicultava a insero de novas representaes de controladores,
alm de uma maior diculdade na manuteno do software.
Para desenvolver este trabalho necessrio fazer comque todas as informaes adquiri-
das estejam armazenadas em um nico buffer. Portanto este buffer deve ser capaz de
armazenar dados de todos os mtodos de elevao e tambm de qualquer tipo de contro-
lador. A gura 4.17 mostra como o buffer deve ser formado, ou seja, por vrias instncias
que representammtodos de elevao diferentes ou ummesmo mtodo comcontroladores
diferentes.
Figura 4.17: Buffer do Mestre de Campo para diversos controladores e mtodos de ele-
vao
A possibilidade de agrupar a representao de todos os controladores em um nico
buffer torna mais eciente o desenvolvimento do cdigo. Ao utilizar a estrutura apre-
sentada na gura 4.19, o programador diminui a possibilidade de produzir erros j que
concentra a representao em mdulos que podem ser reutilizados.
Na gura 4.19 possvel observar uma estrutura para representar os controladores com
3 nveis de especicidade, onde o nvel superior representa os dados mais genricos dos
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 43
Figura 4.18: Buffer do Mestre de campo antes da reestruturao
controladores, ou seja, os dados sempre requisitados pelo SISAL: o horrio da aquisio
dos dados, a produo do poo, alarmes, etc. Osegundo nvel de especicidade representa
os dados de um mtodo de elevao, tal como, uma carta dinamomtrica para o bombeio
mecnico ou um dado de ciclo para o plunger lift. O terceiro nvel possui a representao
do controlador utilizado no poo onde est sendo realizada a aquisio dos dados, ou seja,
neste nvel esto presentes os endereos de memria do controlador onde esto os dados
a serem lidos ou qualquer outra particularidade de hardware do controlador necessria
superviso.
Para codicar a estrutura da gura 4.19 foram utilizados conceitos de programao
orientada a objetos tais como herana e classe virtual. Na gura 4.19 os nveis mais
baixos representam classes que herdam, das classes representadas pelos nveis superiores,
caractersticas genricas dos mtodos de elevao e dos dados do SISAL.
Para permitir que os dados sejam representados em um nico buffer, como represen-
tado na gura 4.16, foi necessrio utilizar o conceito de classe virtual. Esse conceito de
programao permite criar interfaces para que as classes mais genricas possam utilizar
os recursos das classes mais especcas. Utilizando-se deste recurso possvel criar um
vetor de controladores genricos, que representa todos so poos, mas permite acessar os
recursos especcos das classes que representam os mtodos de elevao e os contro-
ladores reais.
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 44
Figura 4.19: Estrutura Existente para cada Controlador
4.4.5 Modelagem em Rede de Petri
Nesta subseo apresentada a modelagem da aquisio dos trs tipos de dados do
mestre de campo: dados atuais, dados histricos e dados de ciclo. A modelagem da
comunicao foi feita utilizando redes de Petri [Cardoso & Valette 1997] que podem ser
observadas na guras 4.20, 4.21 e 4.22. A rede de Petri da gura 4.20 modela a escolha
do tipo de dado que ser adquirido, a rede da gura 4.21 modela a aquisio dos dados
histricos enquanto que na gura 4.22 modelado o envio dos dados de histrico para o
mestre de banco.
As redes de Petri das guras 4.22, 4.21 e 4.20 foram simuladas utilizando o software
Abaixo so exibidos os lugares e as suas correspondentes aes na rede de Petri da
gura 4.20:
Ler_DA: Realizando a leitura dos dados Atuais
Ler_DH: Realizando a leitura dos dados Histricos
Ler_DC: Realizando a leitura dos dados de Ciclo
Num_DA: Representa o nmero de aquisies dos Dados Atuais
Num_DH: Representa o nmero de aquisies dos dados Histricos
Os passos abaixo exibem o comportamento da rede de Petri da gura 4.20. No in-
cio, da rede de Petri da gura 4.20, o nmero de tokens dos lugares L3 e L4 devem
ser respectivamente as constantes N
1
-1 e N
2
para, desta forma, modelar corretamente o
comportamento algoritmico de um if .
Passo 1 A aquisio comea em L2 enquanto a thread de aquisio de dados espera para
iniciar a leitura dos dados atuais.
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 45
Ler_DA
Ler_DH
Num_ DH
L1
Num_DA L2
Ler_DC
L3
L4
A
B
N
1
N
1
-1
N
2
N
2
Figura 4.20: Rede de Petri para determinar qual o tipo de dado deve ser lido
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 46
Passo 2 retirado um token de L2 e L4 e ento passado para Ler_DA onde iniciada a
leitura dos dados atuais
Passo 3 O token passado para Ler_DH onde iniciada a leitura dos dados histricos.
Este passo visto com maior detalhe nas guras 4.21 e 4.22
Passo 4 Realizada a leitura dos dados histricos um token passa para L1 e um token
adicionado a Num_DH.
Passo 5 Chegando neste passo existem duas possibilidades:
Existe pelo menos umtoken em L3: Umtoken que esta em L1 e L3 e removido
e em seguida realizada uma nova leitura de Dados histricos voltando para
o passo 3.
Existem N
1
tokens em Num_DH: Quando N
1
leituras de dados histricos
foram realizadas adicionado um token em L2 e em Num_DA, informando
quantas leituras de dados atuais foram realizadas.
Passo 6 Quando o token estiver presente em L2 existem duas possibilidades:
Se existir algum token em L4: Retira-se um token de L4 e o token que est em
L2 passa para Ler_DA. Desta forma, realizando uma nova leitura do dados
atuais, o ciclo reiniciado.
Se existem N
2
tokens em Num_DA: Quando N
2
leituras de dados atuais so
realizadas iniciada uma leitura de dados de ciclo.
Passo 7 Finalizada a leitura dos dados de ciclo N
2
tokens so enviados para L4 e um token
enviado para L2, No prximo passo o ciclo de aquisio de dados reiniciado.
A rede da gura 4.20 exibe o comportamento da aquisio de todos os trs tipos de
dados obtidos pelo supervisrio plunger lift, enquanto as redes das guras 4.21 e 4.22
detalham a aquisio e envio dos dados histricos. A rede de Petri da gura 4.21 modela
parte da mesma thread da rede da gura 4.20 enquanto que a rede da gura 4.22 representa
o comportamento de uma segunda thread. A primeira thread encarregada de adquirir
os dados dos controladores enquanto a segunda thread encarregada de envia-los para o
mestre de banco.
Para a comunicao entre as threads so utilizados:
Fifo Uma estrutura onde so armazenados os dados para o envio.
Semaforo Estrutura para proteo dos compartilhados
BufferSize Quantidade mxima de dados que podem ser armazenados antes de serem
enviados.
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 47
L1
Erro1
BufferSize
Semaforo
Fifo
A
T1
T2
B
Lugar
Transio Temporizada
Transio Imediata
Figura 4.21: Rede de Petri para thread que adquire dados do sistema
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 48
Os passos da aquisio de dados histricos que esto modelados na gura 4.21 so
descritos abaixo:
Passo 1 No momento em que a transio A acionada o sistema efetua a comunicao
com o rdio para obter os dados de histrico. A transio temporizada T1 modela
o tempo levado para obter os dados do atravs do rdio.
Passo 2 No passo dois o semforo de proteo adquirido. iniciada a contagem da
transio T2
Passo 3 Existem duas possibilidades para este passo:
Se o tempo da transio temporizada T2 se encerrar um erro gerado e um
tratamento do mesmo realizado.
Se existem tokens em BufferSize existe espao na la de envio, portanto, os
dados so copiados na estrutura destinada a esse m.
Passo 4 O semforo liberado indicando que os dados podem ser lidos pela thread de
envio.
A rede da gura 4.22 modela o comportamento do envio dos dados histricos ao
mestre de banco e os passos correspondentes a esta interao podem ser visto abaixo:
Passo 1 Quando existir qualquer dado na la de envio (Fifo) o semforo de proteo
dos dados compartilhados adquirido.
Passo 2 No passo dois os dados so lidos. Aps a leitura dos dados o semforo liberado.
Passo 3 Neste passo os dados so enviados para o mestre de banco e emseguida o sistema
aciona as transies temporizadas T1 e T2. A transio T2 modela o tempo de
resposta do retorno da funo, enquanto T1 modela o tempo para considerar que
ocorreu um erro:
Se T1 ocorrer signica que a resposta no chegou e o tratamento deste erro
acionado
Se T2 ocorrer os dados chegaram em segurana ao mestre de banco.
Passo 4 O semforo adquirido novamente.
Passo 5 O espao para o recebimento de mais mensagens liberado junto com o sem-
foro.
CAPTULO 4. DESENVOLVIMENTO E RESULTADOS 49
Erro2
Altera BuffSize
Espera retorno Funo
Lendo Fifo
BufferSize
Semaforo
Fifo
T1 T2
Lugar
Transio Temporizada
Transio Imediata
Figura 4.22: Thread que envia os dados ao mestre de banco
Captulo 5
Concluses e Trabalhos Futuros
Este trabalho apresentou como foi desenvolvido um mdulo para o software de su-
perviso de mtodos de elevao articial chamando SISAL. Este mdulo capaz de
supervisionar poos com mtodo de elevao plunger lift. A metodologia deste trabalho
subdividiu o problema de desenvolvimento em quatro partes as quais constituem o soft-
ware de superviso SISAL: cliente, servidor, mestre de banco e mestre de campo.
Para o cliente foram desenvolvidas diversas interfaces grcas com o objetivo de ex-
ibir os dados coletados do sistema.
No servidor foram criadas funes de comunicao, do protocolo utilizado no SISAL,
para permitir a troca de dados do mtodo de elevao plunger lift.
Com relao ao mestre de banco, responsvel pela interface entre o banco de dados
e o SISAL, foram realizadas modicaes nas tabelas do banco de dados para salvar as
novas informaes adquiridas. Alm das alteraes no banco de dados foi desenvolvida a
capacidade de comprimir dados pois o mtodo de elevao plunger lift produz um grande
volume de dados. Os resultados dos dados reais comprimidos mostraram uma taxa de
compresso em torno de 86%, o que corresponde a uma taxa satisfatria nesta aplicao.
No mestre de campo, responsvel pela aquisio dos dados dos controladores, foi de-
senvolvida a capacidade de adquirir os dados do mtodo de elevao plunger lift. Omestre
de campo foi desenvolvido seguindo uma nova estrutura de engenharia de software para
tornar mais eciente a sua manuteno. Foram realizados estudos sobre a comunicao
do mestre com os controladores os quais deniram polticas e algoritmos para aquisio
dos dados. Durante os estudos sobre a comunicao foi modelado, atravs de rede de
Petri, a comunicao entre o mestre e o rdio.
Atualmente o mdulo de superviso desenvolvido est supervisionando aproximada-
mente 15 poos. Devido a este pequeno nmero de poos supervisionados no houve a
necessidade de implementar as polticas sugeridas para otimizar a comunicao. Como
trabalho futuro interessante realizar a implementao destas polticas de otimizao para
CAPTULO 5. CONCLUSES E TRABALHOS FUTUROS 51
permitir a superviso de forma eciente de um nmero maior de controladores.
Referncias Bibliogrcas
Assmann, Benno Waldemar (2008), Estudo de estratgias de otimizao para poos de
petrleo com elevao por bombeio de cavidades progressivas, Tese de doutorado,
Universidade Federal do Rio Grande do Norte.
Baruzzi, J.O.A. (1994), Modelagem do plunger lift convencional, Dissertao de
mestrado, Universidade Estadual de Campinas Faculdade de Engenharia Mecnica
Departamento de Engenharia de Petrleo.
Cardoso, Janette & Robert Valette (1997), Redes de Petri, Editora da UFSC.
Chikuni, E. & M. Dondo (2007), Investigating the security of electrical power systems
SCADA, em AFRICON, pp. 1 7.
Daneels, A. & W.Salter (1999), What is SCADA?, em International Conference on Ac-
celerator and Large Experimental Physics Control Systems.
de Souza, Rodrigo B., Joo M. A. Nascimento, Andr L. Maitelli, Heitor P. Gomes &
Adelardo A. D. Medeiros (2006), SISAL - um sistema supervisrio para elevao
articial de petrleo, em Rio Oil & Gas Expo and Conference, Vol. 1, pp. 16.
de Souza, Rodrigo Barbosa (2005), Uma arquitetura para sistemas supervisrios indus-
triais e sua aplicao em processos de elevao articial de petrleo, Dissertao de
mestrado, Universidade Federal do Rio Grande do Norte.
Intanagonwiwat, C., R. Govindan & D. Estrin (2000), Directed diffusion: A scalable and
robust communication paradigm for sensor networks", em the Proceedings of the
6th Annual ACM/IEEE International Conference on Mobile Computing and Net-
working.
Jian, Wu, Cheng Yong & N.N. Schulz (2005), Overview of real-time database manage-
ment system design for power system SCADA system, em Proceedings of the IEEE
SoutheastCon., pp. 62 66.
52
REFERNCIAS BIBLIOGRFICAS 53
Jie, Wu, Yang Jinming, Zhang Song-Guang, Xu Qing & Wu Xiao-Chao (2006), Design of
supervisory system based on CAN bus for wind power plant, em IEEE International
Symposium on Industrial Electronics., Vol. 3, pp. 1679 1682.
Morrow, Stanley J., William Hearn & Ramiro Cisneros (2006), New techniques for
plunger lift in conventional and nonconventional gas, em Society of Petroleum En-
gineers Eastern Regional Meeting, Vol. 1.
Qingquan, Qian & Wu Sitao (2000), Using device driver software in SCADA systems,
em Power Engineering Society Winter Meeting, Vol. 3, pp. 20462049.
Roelofs, Greg & Mark Adler (n.d.), Biblioteca para compresso, http://www.zlib.net/.
Sastry, Chellury, Chi Ma, Michael Loiacono, Nazif Tas & Vladimir Zahorcak (2006),
Peer-to-peer wireless sensor network data acquisition system with pipelined time
division scheduling, em Sarnoff Symposium, 2006 IEEE.
Thomas, Jos Eduardo (2001), Fundamentos de Engenharia de Petrleo, Editora Inter-
cincia.
Vinh, Ich Nguyen, W. Benjapolakul & K. Visavateeranon (2007), A high-speed, low-cost
and secure implementation based on embedded ethernet and internet for SCADA
systems, em Society of Instrumentation and Control Engineers Annual Conference,
2007., Vol. 1, pp. 1692 1699.
Wang, Jun, Hong Wang, Haibin Yu & Aidong Xu (2006), Research of architecture and
scheduling for wireless industrial control system, em Proceedings of the 2006 IEEE
International Conference on Information Acquisition.
Zhao, Feng & Leonidas Guibas (2004), Wireless Sensor Networks, Morgan Kaufmann.