Você está na página 1de 61

CLARISSA HATSUE FRANTZ ROGRIO MAUTARITI PIMENTA GOMIDE

INTERFACE PARA SISTEMA DE CONTROLE DE RELIGADOR AUTOMTICO

Projeto apresentado ao curso de Engenharia Eltrica da Universidade Federal de Gois. Orientador: Prof. Dr. Jos Wilson Lima Nerys Co-orientador: Prof. Dr. Enes Gonalves Marra

GOINIA 2003

SUMRIO

RESUMO........................................................................................... 5 1. 2. 2.1. INTRODUO................................................................................. 6 PLANEJAMENTO DE UM SISTEMA DE POTNCIA............. 8 TIPOS DE PROTEO DE SISTEMAS DE POTENCIA .............. 9

2.1.1. Proteo Primria............................................................................. 9 2.1.2. Proteo de Retaguarda................................................................... 10 2.2. 2.3. CORRENTE DE FALTA................................................................... 11 PROTEES MAIS USADAS EM SISTEMAS

ELTRICOS................................................................................................... 12 2.3.1. Rel de Sobrecorrente....................................................................... 13 2.3.1.1. Rels de Sobrecorrente Instantneo................................................... 13 2.3.1.2. Rels de Sobrecorrente de Tempo Definido...................................... 13 2.3.1.3. Rels de Sobrecorrente de Tempo Inverso......................................... 13 2.3.1.4. Rels de Sobrecorrente de Tempo Muito Inverso.......... .................... 14 2.3.1.5. Rels de Religamento......................................................................... 14

3. 3.1. 3.2. 3.3.

RELIGADOR AUTOMTICO....................................................... 14 DEFINIO....................................................................................... 14 PRINCPIO DE FUNCIONAMENTO..................................... .......... 15 CLASSIFICAO DOS RELIGADORES........................................ 16

3.3.1. Quanto ao nmero de fases.............................................................. 16 3.3.2. Quanto ao tipo de controle............................................................... 17 3.3.3. Quanto ao meio de interrupo........................................................18 3.4. 4. 5. 6. 7. 8. CRITRIO PARA SELEO DE RELIGADORES.........................19 AJUSTES DO RELIGADOR...........................................................21 HISTRIA DA AUTOMAO...................................................... 23 A IHM (INTERFACE HOMEM MQUINA)............................ 25 RS 232 OU EIA 232.....................................................................27 CONCLUSO................................................................................... 31 REFERNCIAS BIBLIOGRFICAS............................................ 33 ANEXO.............................................................................................. 34

RESUMO

Todo sistema de potncia deve ser planejado de forma a satisfazer requisitos mnimos de confiabilidade, que esto diretamente ligados a proteo. Os religadores so equipamentos de proteo largamente utilizados para reduzir o tempo de interrupo e aumentar a confiabilidade dos sistemas de potncia; eles permitem o restabelecimento rpido e automtico de energia nos casos de faltas transitrias, como as descargas atmosfricas, contato da rede eltrica com rvores, ao do vento e contato de animais. A importncia dos religadores fica mais evidente com o resultado de estudos, que revelam que de 50 a 90% das faltas num sistema so de natureza transitria. Um projeto de pesquisa sobre religadores est em andamento na Escola de Engenharia Eltrica e trata do controle de religadores usando processadores digitais de sinais (DSP). O presente projeto de final de curso trata de uma plataforma DELPHI para monitoramento e controle do projeto em andamento. A plataforma possibilita o monitoramento e o armazenamento dos valores das correntes do religador.

1. INTRODUO
O presente relatrio tem por objetivo expor o projeto de final de curso de Engenharia Eltrica, desenvolvido por Clarissa Hatsue Frantz e Rogrio Mautariti Pimenta Gomide. As linhas areas de distribuio esto sujeitas a vrios tipos de aes externas que podem causar interrupes na sua operao. A maior parte delas so faltas de natureza transitria como descargas atmosfricas, contato de rvores e animais com a rede eltrica, ao do vento e outras. Para evitar o desligamento da linha por um tempo muito maior que o necessrio, utilizam-se religadores. Religadores so equipamentos de proteo que desligam e religam automaticamente os circuitos um nmero predeterminado de vezes. O objetivo deste projeto a implementao de uma plataforma DELPHI que permitir o controle e monitoramento de religadores atravs de processadores digitais de sinais, alm de avaliar o comportamento do sistema de potncia protegido quanto aos nveis de corrente e contribuir para aumentar a capacidade de coordenao dos religadores de um sistema de distribuio.

Esperamos que o produto de nosso trabalho seja utilizado, avaliado e validado por profissionais da rea, para ser eventualmente ajustado as suas reais necessidades.

2. PLANEJAMENTO DE UM SISTEMA DE POTNCIA


Quando iniciamos o planejamento de um sistema devemos levar em considerao um conjunto de aspectos, a fim de chegar a um arranjo adequado para a expanso do mesmo (estamos quase sempre expandindo um sistema existente). Isto significa que novos elementos devem ser compatveis com elementos e arranjos j existentes. O planejamento deve conceber um sistema que seja expansvel no futuro e que satisfaa os mnimos requisitos de confiabilidade a um custo justificvel. Os aspectos econmicos so complexos e representam uma carga enorme para o projetista. Eliminar um nmero de dispositivos de proteo um meio fcil de reduzir os custos de projeto e, ao mesmo tempo, se distanciar do ideal e contribuir para um sistema deficiente quanto confiabilidade. O engenheiro, ao aplicar dispositivos de proteo, planeja seu esquema de proteo baseado nos disjuntores disponveis. prefervel que cada elemento do circuito (linha, transformador, barra, etc...) possa ser completamente isolado por seus disjuntores, quando um curto-circuito ocorre no dispositivo, protegendo, assim, o sistema e facilitando a sua remoo sem maiores transtornos aos outros dispositivos. Contudo, isto no sempre possvel devido ao aspecto, j citado, custo. Com a eliminao de disjuntores as zonas de atuao dos dispositivos de proteo tm que ser aumentadas e passam a incluir diversos mecanismos do sistema. A desvantagem evidente devido ao fato de

que um defeito em qualquer um dos equipamentos provoca o desligamento de uma parte maior do sistema do que seria necessrio. A proteo, portanto, desempenha um papel importante num sistema confivel, e deve ser devidamente considerada ao planejar o sistema. Os disjuntores e os rels associados devem atuar para proteger o sistema dos efeitos dos curtos-circuitos nos equipamentos e com o objetivo de minimizar os danos nos equipamentos com falta.

2.1. POTNCIA
2.1.1.

TIPOS DE PROTEO DE SISTEMAS DE

Proteo Primria

A proteo primria funciona como a primeira linha de defesa contra curtos-circuitos, um elemento crtico no sistema de potncia. Na maioria dos casos, os rels primrios operam dentro de alguns ciclos para iniciar a atuao do disjuntor e resultam em tempos de limpezas lquidos da ordem de trs a sete ciclos (base de 60Hz). Este tempo de limpeza reduzido muitas vezes crtico para estabilidade e sempre crtico quanto minimizao dos danos de falta. muito freqente, o caso em que os tempos de chaveamento crticos so apenas levemente superiores que os tempos de limpeza da proteo primria. No caso de falha de uma proteo primria, por ocasio de uma falta severa, praticamente assegura uma falta de sincronismo. A interrupo no fornecimento de energia aos consumidores e os danos aos equipamentos, quando o sistema se

10

esfacela devido instabilidade, so conseqncias que tornam a proteo primria to importante.

2.1.2.

Proteo de Retaguarda

A proteo de retaguarda, como o prprio nome indica, instalada para salvar o sistema no caso de falha da proteo primria. Tambm, salva a situao, no caso de falha do disjuntor para limpar curto-circuito detectado pela proteo primria. Esta definio subentende que a proteo de retaguarda tm que ser alimenta de TCs, TPs e tenso contnua de controle independente da usada para proteo primria. Alm disso, a proteo de retaguarda tem que disparar disjuntores diferentes daqueles disparados pela proteo primria. Aspectos econmicos muitas vezes ditam um custo menor para a proteo de retaguarda. Ao aprofundarmos no estudo da proteo descobriremos que um custo menor habitualmente implica em rels de maior tempo de operao. Disso conclui-se que faltas limpadas pelas protees de retaguarda resultam em danos de maior vulto e perturbao no sistema do que no caso de faltas limpadas pela proteo primria (uma parte geral do sistema ser removida de servio quando opera a retaguarda). Existem dois tipos de proteo de retaguarda: a proteo de retaguarda local e a proteo de retaguarda remota.

11

2.2.

CORRENTE DE FALTA

A aplicao de dispositivos contra faltas requer conhecimento detalhado das correntes e tenses que ocorrero no ponto de aplicao de qualquer rel durante os curto-circuitos. Deve-se considerar a operao dos rels durante faltas trifsicas, faltas bifsicas a terra, faltas de fase a fase e faltas de fase para a terra, bem como todo o tipo de faltas quando incluem impedncia de falta. A resposta dos rels deve ser conhecida para faltas na direo do disparo e no disparo no caso de rels direcionais. Todos estes tipos de faltas podem ser calculadas com a ajuda de um computador. A tcnica da matriz impedncia de barra a mais popular e prestase ao clculo rpido de falta em todas as barras, uma vez que a matriz de impedncia tenha sido formada. Uma matriz de impedncia da rede de seqncia positiva permite somente o exame das faltas trifsicas e das faltas fase a fase, onde as impedncias de seqncia positiva e negativa podem ser consideradas iguais. Faltas envolvendo terra podem ser calculadas por essa tcnica; contudo, a matriz impedncia de seqncia zero interligadas pelo programa para simular os tipos de faltas desejadas e suas localizaes. Variaes no sistema podem ser representadas por casos alternativos em tal programa. Alternativas tpicas que necessitam freqentemente ser analisadas so o defeito na barra com uma linha fora e os casos de falta na extremidade desta linha. Na primeira, as correntes e tenses de falta em algum ponto do sistema podem variar consideravelmente, se uma linha est ou no em operao. Consideraes quanto ao releamento podem requerer que os rels tenham um desempenho adequado com ou sem linha e, assim, essas correntes e tenses de falta devem ser conhecidas em ambos os casos . Na situao de falta na extremidade da linha , verifica-se que os rels das

12

duas extremidades de uma linha operam simultaneamente. Quando o disjuntor, numa extremidade de uma linha sob falta, abre antes do disjuntor na extremidade oposta, pode haver uma mudana significativa na distribuio das correntes de falta. Esta redistribuio das correntes de falta pode ser de importncia na coordenao dos rels.

2.3.

PROTEES

MAIS

USADAS

EM

SISTEMAS ELTRICOS
Os dispositivos de proteo mais usados em sistemas eltricos so: - rel de sobrecorrente; - rel de sobrecorrente direcional; - rel de sobretenso; - rel de subtenso; - rel direcional de potncia; - rel de distncia; - rel diferencial; - de religamento; Para efeito de proteo, em sistemas de distribuio, so mais importantes os rels de sobrecorrente e os rels de religamento, que sero aqui apresentados.

13

2.3.1.

Rel de Sobrecorrente

Os rels de sobrecorrente (NEMA-50/51) supervisionam a corrente do circuito, comandando a abertura de um ou mais disjuntores, quando esta corrente ultrapassa um valor prefixado. A bobina do rel pode estar ligada diretamente em srie no circuito ou atravs de um transformador de corrente. Os rels de corrente, de acordo com os tempos de atuao, podem ser classificados nos seguintes tipos:

2.3.1.1. Rels de Sobrecorrente Instantneo A operao se completa em um intervalo de tempo muito curto, aps a ocorrncia de sobrecorrentes, e, praticamente, independe de suas variaes. No h retardo de tempo propositalmente includo na seqncia de detecooperao. O tipo construtivo que mais se adapta a este modo de operao o de atrao magntica.

2.3.1.2. Rels de Sobrecorrente de Tempo Definido O tempo de atuao independe do valor da corrente.

2.3.1.3. Rels de Sobrecorrente de Tempo Inverso O tempo de operao inversamente proporcional ao valor da corrente.

14

2.3.1.4. Rels de Sobrecorrente de Tempo Muito Inverso So rels que apresentam variaes mais acentuadas das

caractersticas do tempo com a corrente de atuao.

2.3.1.5. Rels de Religamento Os rels de religamento (cf.NEMA-79) so rels auxiliares, usados para comandar o religamento dos disjuntores correspondentes, depois de terem sido abertos por acionamentos de rels de sobrecorrente. H possibilidade de diversas combinaes de ordens instantneas e temporizadas.

3. RELIGADOR AUTOMTICO 3.1. DEFINIO


Religador um dispositivo interruptor automtico, que abre e fecha seus contatos repetidas vezes na eventualidade de uma falha do circuito por ele protegido.

15

3.2.

PRINCPIO DE FUNCIONAMENTO

O religador um equipamento de proteo a sobrecorrentes utilizado em circuitos areos de distribuio que opera quando detecta correntes de curtocircuito, desligando e religando automaticamente os circuitos um nmero predeterminado de vezes. Quando o religador sente uma sobrecorrente, os contatos so abertos durante um determinado tempo, chamado tempo de religamento, aps o qual se fecham automaticamente para reenergizao da linha. Se a sobrecorrente persistir, a seqncia de abertura e fechamento dos contatos repetida at trs vezes consecutivas, e aps a quarta abertura, os contatos ficam abertos e travados. As operaes de um religador podem ser combinadas nas seguintes seqncias:

a) se for ajustado para quatro operaes:


- uma rpida e trs retardadas; - duas rpidas e duas retardadas; - trs rpidas e uma retardada; - todas rpidas; - todas retardadas.

b) para

qualquer nmero de operaes menor que quatro, em

combinaes similares de operaes rpidas e retardadas. Geralmente, os fabricantes fornecem a curva mdia para uma operao temporizada do religador com variaes de 10%. Isto significa que, para uma

16

dada corrente In, o tempo de operao correspondente pode variar sobre uma reta, de 10% na base do tempo e 10% na base da corrente. O maior desvio ser o limite aceitvel.

3.3.

CLASSIFICAO DOS RELIGADORES

3.3.1. Quanto ao nmero de fases Monofsicos. So utilizados para proteo de linhas monofsicas ou ramais de alimentao trifsicos (um para cada fase), onde as cargas so predominantemente monofsicas.

Figura 1: Religador monofsico

Trifsicos. So utilizados onde necessrio o bloqueio das trs fases simultaneamente, para qualquer tipo de falha permanente, a fim de evitar que cargas trifsicas sejam alimentadas com apenas duas fases. Podem ser:

17

- Trifsicos com Operao Monofsica e Bloqueio Trifsico. So constitudos de trs religadores monofsicos, montados num mesmo tanque, com os mecanismos interligados apenas para ser processado o bloqueio trifsico. Cada fase opera independentemente em relao s correntes de defeito. Se qualquer das fases operar o nmero pr-ajustado para bloqueio, as duas outras fases so abertas e bloqueadas atravs do mecanismo que as interliga. - Trifsicos com Operao Trifsica e Bloqueio Trifsico. So constitudos de um nico religador, que opera e bloqueia sempre trifasicamente, independentemente do tipo de falha ocorrida, isto , mesmo que a falha afete apenas uma das fases, todos os contatos realizam a operao de abertura e religamento.

Figura 2: Religador trifsico

3.3.2. Quanto ao tipo de controle Controle Hidrulico. Nos religadores com este tipo de controle, as correntes so detectadas pelas bobinas de disparo que esto em srie com a linha. Quando, atravs da bobina, flui uma corrente igual ou superior corrente mnima de disparo do religador, o ncleo da bobina atrado para seu interior,

18

provocando a abertura dos contatos principais do religador. O sistema de controle hidrulico econmico e simples, eficiente e de grande vida til. Essas caractersticas so extremamente importantes para reas de baixa densidade de carga ou para outras reas que no requeiram nveis de preciso acentuados na operao do equipamento, corrente de disparo muito pequenas, tanto para fase, como para neutro, ou grande velocidade na interrupo. Controle Eletrnico. Com este tipo de controle, o religamento apresenta maior flexibilidade e mais facilidade para ajustes e ensaios, alm de ser mais preciso, comparativamente ao de controle hidrulico. Contudo, essas vantagens devem ser economicamente avaliadas antes de ser procedida a escolha entre um religador com controle hidrulico e um com controle eletrnico. O controle eletrnico abrigado numa caixa separada do religador e permite as seguintes modificaes de ajustes no equipamento, sem que seja necessrio sua abertura: -caracterstica tempo x corrente; -nveis de corrente de disparo; -seqncia de operao.

3.3.3. Quanto ao meio de interrupo Quanto ao meio de interrupo, os religadores se classificam em:

19

-religadores com interrupo a leo; -religadores com interrupo a vcuo. Os religadores do segundo tipo apresentam possibilidade de perodo de trabalho de cerca de 3 a 4 vezes o do primeiro tipo, entre manutenes. Contudo, as garrafas de vcuo que substituem o leo so importadas e seu uso deve ser economicamente avaliado.

3.4.

CRITRIO PARA SELEO DE

RELIGADORES
Para a seleo de religadores , devem ser levados em conta os seguintes requisitos: 1. A corrente nominal do equipamento deve ser superior mxima corrente do alimentador, convenientemente medida ou avaliada na situao de maior carga do circuito, e deve prever aumentos futuros de carga. 2. A tenso nominal deve ser compatvel com a do sistema. 3. A capacidade de interrupo deve ser maior que a mxima corrente de curto-circuito, trifsica ou fase-terra, calculada no ponto de sua instalao. 4. A corrente de curto-circuito mxima simtrica no ponto de instalao deve ser menor do que a corrente de interrupo simtrica do religador correspondente ao valor X/R no ponto. Quando no se dispe desses

20

dados do fabricante, prtica usual adotar, para comparao, o valor simtrico nico por ele fornecido. 5. As correntes de disparo devem ser menores do que as correntes de curto-circuito na zona de proteo do equipamento, incluindo, sempre que possvel, os trechos a serem adicionados quando se realizarem manobras consideradas usuais. 6. A temporizao deve possibilitar a coordenao com outros equipamentos de proteo a justante e a montante. 7. A corrente nominal da bobina-srie, no caso de religador, deve ser dimensionada de acordo com a corrente mxima do alimentador, incluindo manobras usuais, e com previso de crescimento de carga, sempre que possvel. 8. A bobina de fechamento, no caso de religador, deve ter tenso nominal igual tenso entre as fases do circuito. 9. O nvel de isolamento deve ser compatvel com o do sistema. 10. A freqncia deve ser compatvel com a do sistema.

Quanto proteo de falhas fase-terra, para o caso de sistemas noefetivamente-aterrados, como as correntes de curto-circuito fase-terra apresentam intensidades muito pequenas, recomendado o uso de dispositivos eletrnicos para disparo do neutro. Esse dispositivo, normalmente, composto dos seguintes elementos: transformador de corrente, bobina de disparo e circuito eletrnico de disparo.

21

A corrente mnima de disparo do dispositivo determinada pelo valor de um resistor, o qual deve ser especificado de modo que a referida corrente seja menor que o curto-circuito fase-terra mnimo calculado. Os tempos de operao do dispositivo (operao rpida e operao retardada) so determinados por capacitores. No caso de sistema efetivamente aterrados, so usados dispositivos de sobrecorrente apropriados ao equipamento. Para o caso de sistema com o neutro isolado, recomendvel o uso de dispositivo de proteo defeito fase-terra baseado na tenso residual. Esse dispositivo composto dos seguintes elementos: transformadores de potencial monofsicos e bobinas de disparo. recomendvel, ainda, a utilizao da chave auxiliar, para isolamento da bobina de disparo, quando os contatos do religador estiverem abertos, e da chave de bloqueio, para tornar inoperante a bobina de disparo antes do fechamento manual do religador.

4. AJUSTES DO RELIGADOR
Os religadores instalados em subestaes devem ser ajustados de modo a atender os seguintes requisitos: a) Ajuste de Disparo de Fase. A corrente mnima de disparo de fase do religador deve ser menor que a corrente mnima de defeito fase-fase, dentro da

22

zona de proteo do religador, incluindo, sempre que possvel, os trechos a serem adicionados quando forem realizadas as manobras. b) Ajuste de Disparo de Neutro. A corrente mnima de disparo de neutro do religador deve ser menor que a corrente de defeito fase-terra mnimo, dentro da zona de proteo do religador, e deve der maior que a mxima corrente de desbalano para o neutro. c) Caracterstica Tempo x Corrente (Fase e Neutro). Esta caracterstica deve atender aos seguintes requisitos: - a curva de operao do religador para toda a faixa de valores de curto-circuito deve estar sempre abaixo da curva de dano dos condutores e equipamentos do circuito para as mesmas correntes; - a curva escolhida deve permitir a coordenao com equipamentos de proteo situados a montante e a justante. d) Seqncia de Operao. A seqncia de operao deve ser definida de modo a permitir a coordenao seletiva dos equipamentos de proteo ao longo do circuito. e) Tempo de Religamento. Deve ser ajustado, de modo a permitir coordenao com equipamentos de proteo situados a montante e a justante, cuja operao depende desse tempo.

23

Obs.: Nos religadores com controle hidrulico, a corrente mnima de operao de fase e a caracterstica tempo x corrente de disparo de fase dependem exclusivamente da bobina-srie.

5. HISTRIA DA AUTOMAO
Desde os primrdios que o homem vem utilizando a sua criatividade para desenvolver instrumentos que o ajudassem a controlar e modificar o meio ambiente em que est inserido, melhorando assim, sua condio de vida. Com o decorrer da histria, compreendeu-se que a criao de novos mecanismos pudesse substituir o processo produtivo artesanal, poderiam ser chaves para o sucesso e possibilitaria o alcance de seus objetivos de forma rpida e econmica. Com essa nova meta traada e com a promessa pautada na melhoria da qualidade de vida e liberao do ser humano da mo de obra braal , que em meados do sculo XVIII , foram desenvolvidas as primeiras mquinas que acabaram dando suporte tecnolgico para a primeira revoluo industrial. Essa primeira revoluo industrial, tambm conhecida como revoluo da mquina, ocorreu na Inglaterra, mais precisamente no perodo de 1760 a 1850, foi caracterizada pela transio de um processo predominantemente agrcola de subsistncia e da produo de bens e consumo para uma sociedade industrializada , caracterizada pela introduo de mquina simples , para substituio da fora muscular pela mecnica , em tarefas repetidas, antes executadas pelo homem .

24

A segunda revoluo industrial se deu com aperfeioamento e implantao das mquinas por toda a Europa no perodo de 1850 a 1900, foi caracterizado por um grande avano na tecnologia, onde apareceram a locomotiva a vapor e o barco a vapor. O primeiro trabalho significativo, ocorreu neste perodo, foi James Watt, que construiu, no sculo XVIII, um controlador centrifugo para o controle de velocidade de uma mquina a vapor. A automao nasceu da necessidade de aumento de flexibilizao, maior rapidez na produo e reduo de custos das empresas de manufatura ou de processo contnuo , afim de que pudessem se adequar rapidamente s necessidades do consumidor e assim manter-se competitivo no mercado cada vez mais exigente . A automao industrial tem desempenhado um papel vital no avano da engenharia e da cincia. Alm de sua extrema importncia para veculos espaciais, para sistema de guiamento de msseis e sistema de robtica e similares. O controle automtico tornou-se uma parte importante e integrante dos processos industriais e de manufatura modernos. Por exemplo, a automao industrial essencial no comando numrico de mquinas-ferramentas das indstrias manufatureiras, no projeto de sistemas de pilotagem automtica da indstria aeroespacial e no projeto de automveis e caminhes da indstria automobilstica. ainda essencial nas operaes industriais tais como: controle de presso, temperatura, umidade, viscosidade e vazo nas indstrias de processo. Considerando que os avanos na teoria e na prtica na automao industrial propiciam meios para se atingir desempenho timo de sistemas dinmicos, melhoria da produtividade , alvio no trabalho enfadonho de muitas

25

operaes manuais repetitivas de rotina e muito mais , os engenheiros campo.

cientistas , em sua maioria , devem possuir agora um bom conhecimento deste

Foi pensando nesses aspectos e com intenes similares que executamos este projeto, que se trata da automatizao e superviso do desempenho de um dispositivo de proteo de sistemas de transmisso de potncia, conhecido como religador. O projeto tem como objetivo aperfeioar o processo de atuao da proteo digitalizando o dispositivo que, em tempos passados, era composto por um mecanismo eletro-mecnico.

6. A IHM (INTERFACE HOMEM - MQUINA)

A interface faz parte do sistema computacional e determina como as pessoas operam e controlam o sistema. Quando a interface bem projetada, ela compreensvel, agradvel e controlvel; os usurios se sentem satisfeitos e responsveis pelas aes. fcil notar a importncia do assunto, pois todos somos usurios de interfaces. s vezes utilizamos sistemas e nem lembramos que existe uma interface, outras vezes, tudo que se quer encontrar o boto de sair. A interface homem-mquina uma preocupao da indstria muito antes de se falar em interface de programas de computador. Existe muita experincia adquirida sobre o assunto, como por exemplo utilizao de mais

26

de um perfil do operador (usurio) e nveis de conhecimento ou experincia (iniciante, intermedirio e expert). A tecnologia de construo de interfaces tem sido influenciada principalmente pelos seguintes fatores: a. Disseminao microprocessados; b. Aumento da complexidade dos sistemas; c. Preocupao com a qualidade do software dentro da caracterstica de usabilidade (conforme as definies da Norma ISO/IEC 9126-1). O Projeto de Interface resulta de uma anlise mais detalhada da mesma. Essa anlise pode se dar atravs da especificao de requisitos, mdulo de qualidades e perfil dos usurios. Nessa fase normalmente se considera a modelagem do dilogo (onde se encontra o projeto visual) e a modelagem dinmica (tratamento dos eventos). No incio do processamento de dados, distingue-se basicamente as interfaces baseadas em caracteres. Atualmente, a maioria das aplicaes se utilizam das famosas interfaces grficas GUI (Graphical User Interface ) e algumas j esto evoluindo o conceito deixando de ser voltadas a aplicao para se tornarem voltadas a objeto, utilizando as OUI ( Object User Interface ) e, paralelamente, com a crescente utilizao da Internet, surgiram as WUI ( Web User Interface ) amplamente difundidas dentro da World Wide Web. Todas essas amostras de interfaces so apenas uma pequena demonstrao do desenvolvimento que ainda est por vir, ainda mais, do uso de sistemas e equipamentos

27

considerando-se a crescente demanda por utilizao de recursos de multimdia a integrao de textos, som (msica, voz e rudo) e imagem (real, digitalizada, sintetizada; esttica ou em movimento). A interface foi o grande desafio deste projeto, pensando nas afirmaes anteriores,construmos um software sob a plataforma Borland Delphi, verso 5, onde o ambiente principal de fcil visualizao e interao com o usurio, permitindo supervisionar o funcionamento do religador, assim como inicializar e desligar o programa. possvel a visualizao das correntes IA, IB, IC e IN, das tenses VA, VB e VC, status da RS 232 e status de alarme. H tambm o nvel de configurao, que acessado apenas com senha, e nos mostra 32 itens que so parmetros de controle do rel que atua sobre o religador e fazem parte da frmula da curva de operao. Outro nvel o de resultados que nos mostra grficos e permite obter relatrios.

7. RS - 232 ou EIA - 232

Caractersticas principais:

A interface RS 232, estabelecida pela EIA ( Eletronic Industries

Association ), um padro de interface fsica que define a conexo mecnica, funcional e eltrica para transmisso serial de dados.

Velocidades tpicas de 38.4 Kbps, 115,2 Kbps;

28

utilizada para transmisses entre equipamentos separados por

uma distncia de at 15 metros.

o padro n\mais comum utilizado pelos fabricantes de

equipamentos para informtica e telecomunicaes;

Sinais de tenso no balanceadas: o valor limite oscila entre

25V a + 25V, sendo o seu padro de +/-12V.

As transmisses de dados de eletrnicos entre elementos cairo geralmente em duas categorias largas: single-ended e diferencial. RS232 (singleended) foi introduzido em 1962, e apesar dos boatos que levaram a sua reduo de uso adiantada, continuou sendo usada extensamente na indstria.

Os intervalos de dados da RS232 so: +3 A +12 volts bipolares indicam on1-state (MARCA), quando A -3 a -12 volts indicam uma condio de "off"0-state (ESPAO). O equipamento de computador moderno ignora o nvel negativo e aceita um nvel de tenso zero como o estado de "off". De fato, o estado de "on pode ser conseguido com pouco potencial positivo. Isto significa que os circuitos alimentados por 5 VDC so capazes de dirigir os circuitos RS232.

29

O nvel do sinal de sada oscila geralmente entre +12V e -12V. A rea inoperante" entre +3v e -3v projetada para absorver o rudo de linha. Nas vrias definies de RS-232 esta rea inoperante pode variar. Por exemplo, a definio para V.10 tem uma rea inoperante de +0.3v a -0.3v. Muitos receptores projetados para RS-232 so sensveis aos diferenciais de 1v ou menos.

Nota: Para transmitir e receber ligaes os pinos (2 ou 3) podem ser invertidos dependendo do uso do equipamento - equipamento de transmisses de dados (DCE) ou um equipamento terminal de dados (DTE). Utilizamos transmisso serial com RS 232 atravs do programa ASYNC 32 do DELPHI.

30

O programa ASYNC 32 um componente, pertencente ao DELPHI, que controla o buffer de transmisso serial permitindo, assim, o gerenciamento do controle do fluxo de dados de acordo com as necessidades do usurio.

31

8. CONCLUSO

Com o presente projeto adquirimos um maior conhecimento sobre o funcionamento de dispositivos de proteo, principalmente religadores, transmisso serial, usando interface RS 232 e linguagem de programao orientada a objeto, Delphi. Conseguimos implementar a plataforma que nos possibilita o monitoramento do religador, a transmisso dos parmetros de configurao do controlador e a emisso de relatrios. Isso foi conseguido pelo controle do buffer de transmisso serial (RS 232) pelo componente ASYNC32, existente no Delphi. Ao final do trabalho ficamos ainda curiosos em saber como teria sido o controle de dados se o controlador estivesse em servio, pois este no teria dispositivos de transmisso praticamente prontos em sua configurao e, ento, necessitaramos da aquisio de protocolos de comunicao, para segurana no trfego de dados.

32

Terminamos gratos com o trabalho pois ele nos deu uma viso prtica da viabilidade de estarmos aplicando nossos conhecimentos, adquiridos na Escola de Engenharia Eltrica UFG, em atividades e processos rotineiros tentando, assim, aperfeio-los.

33

REFERNCIAS BIBLIOGRFICAS

1. CAMINHA, Amadeu Casal. Introduo Proteo dos Sistemas Eltricos. So Paulo. 1977. Ed. Edgard Blcher LTDA. 2. CLARK, Harrison K. Proteo de Sistemas Eltricos de Potncia. Santa Maria. 1979. Universidade Federal de Santa Maria. 3. ELETROBRS. Comit de Distribuio. Proteo de Sistemas Areos de Distribuio. Rio de Janeiro. 1982. Vol. 2. Eletrobrs. 4. FLUCKIGER, Franois. Understanding Network Multimedia.

34

ANEXO

35

PROGRAMA
unit Principal; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CommInt, ExtCtrls, Mask, Buttons, VaClasses, VaComm, jpeg, ComCtrls, Psock, NMFtp; type TfrmPrincipal = class(TForm) sbtConfig: TSpeedButton; sbtResultados: TSpeedButton; sbtConectar: TSpeedButton; sbtDesconectar: TSpeedButton; Timer: TTimer; Comm1: TComm; mStatus: TMemo; sbtSair: TSpeedButton; Label1: TLabel; editCorB: TEdit; editCorA: TEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; editFaseC: TEdit; editCorC: TEdit; editFaseB: TEdit; editFaseA: TEdit; editCorN: TEdit; Image1: TImage; Label8: TLabel; Panel1: TPanel; StatusBar1: TStatusBar; NMFTP1: TNMFTP; StatusBar2: TStatusBar; procedure sbtConectarClick(Sender: TObject); procedure sbtDesconectarClick(Sender: TObject); procedure sbtSairClick(Sender: TObject); procedure Comm1Break(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure Comm1RxChar(Sender: TObject; Count: Integer);

36

procedure FormCreate(Sender: TObject); procedure sbtResultadosClick(Sender: TObject); procedure sbtConfigClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmPrincipal: TfrmPrincipal; tempo: TTime; FlagFechado: byte; NumByte,ia,ib,ic,ineutro,fa,fb,fc: integer; msg,via,vib,vic,vin,vfa,vfb,vfc,vtp: string; mia,mib,mic,min,mfa,mfb,mfc,tp: array[1..1000] of integer;

implementation uses Resultados, Configuracao;

{$R *.DFM}

procedure AlarmeA(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobrecorrente na fase A' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin

37

assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobrecorrente na fase A' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

procedure AlarmeB(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobrecorrente na fase B' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobrecorrente na fase B' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

38

procedure AlarmeC(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobrecorrente na fase C' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobrecorrente na fase C' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

procedure AlarmeN(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobrecorrente no neutro' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end

39

else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobrecorrente no neutro' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

procedure AlarmeVa(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobretenso na fase A' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobretenso na fase A' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

40

procedure AlarmeVb(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto, 'Sobretenso na fase B' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobretenso na fase B' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

procedure AlarmeVc(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto);

41

writeln(texto, 'Sobretenso na fase C' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Alarmes - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'HISTRICO DOS ALARMES'); writeln(texto); writeln(texto); writeln(texto, 'Tipo de Falta' + 'Horrio' + 'Valor da Falta'); writeln(texto, 'Sobretenso na fase C' + FormatDateTime('hh:mm:ss',now) + frmPrincipal.editCorB.Text); Closefile(texto); end; end;

procedure SalvarArquivo(s:string); var texto: text; begin CreateDir('c:\Resultados.'); If FileExists(concat('c:\Resultados.\Entradas - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then begin assignfile(texto,concat('c:\Resultados.\Entradas - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Append(texto); writeln(texto,s); Closefile(texto); end else begin assignfile(texto,concat('c:\Resultados.\Entradas - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); Rewrite(texto); writeln(texto,'LEGENDA'); writeln(texto); writeln(texto,'Ia: Corrente na fase A'); writeln(texto,'Ib: Corrente na fase B'); writeln(texto,'Ic: Corrente na fase C'); writeln(texto,'In: Corrente no neutro'); writeln(texto,'Va: Tenso na Fase A'); writeln(texto,'Vb: Tenso na fase B');

42

writeln(texto,'Vc: Tenso na fase C'); writeln(texto,'_____________________________________________________'); writeln(texto,'Horrio Ia Ib Ic In Va Vb Vc '); writeln(texto,'_____________________________________________________'); writeln(texto,s); Closefile(texto); end; end;

procedure TfrmPrincipal.sbtConectarClick(Sender: TObject); begin Comm1.Open; FlagFechado := 0; tempo:=0; sbtConectar.Enabled := false; sbtDesconectar.Enabled := true; mStatus.Lines.Add(' Porta pronta: ' + Comm1.DeviceName); mStatus.Lines.Add(' ' +FormatDateTime('hh:mm:ss',tempo )); StatusBar1.Panels.Items[0].Text := 'Conectado - COM1'; Timer.Enabled:=true; end;

procedure TfrmPrincipal.sbtDesconectarClick(Sender: TObject); begin Comm1.Close; FlagFechado := 1; sbtConectar.Enabled := true; sbtDesconectar.Enabled := false; mStatus.Lines.Add(' Porta fechada: ' + Comm1.DeviceName); StatusBar1.Panels.Items[0].Text := 'Desconectado '; Timer.Enabled:=false; end;

procedure TfrmPrincipal.sbtSairClick(Sender: TObject); begin if Application.MessageBox('Tem certeza que deseja sair?','Confirmao', MB_IconQuestion + MB_YesNo) = idYes then Close;

43

end;

procedure TfrmPrincipal.Comm1Break(Sender: TObject); begin showmessage('A conexo foi perdida!'); end;

procedure TfrmPrincipal.TimerTimer(Sender: TObject); begin mStatus.Lines.Add(' ' + FormatDateTime('hh:mm:ss',now)); StatusBar1.Panels.Items[1].Text := FormatDateTime('hh:mm:ss ',now); end;

procedure TfrmPrincipal.Comm1RxChar(Sender: TObject; Count: Integer); type CharBuf = array[0..9999] of Char; var Buffer: ^CharBuf; Bytes, P: Integer; begin If FlagFechado = 0 then // Conferir evento RXChar durante Close ! Begin GetMem(Buffer, Comm1.ReadBufSize); try Fillchar(Buffer^, Comm1.ReadBufSize, 0); Bytes := Comm1.Read(Buffer^, Count); if Bytes = -1 then mStatus.Lines.Add('Erro ao ler o sinal' + Comm1.DeviceName) else begin mStatus.Lines.Add(' Total de byte(s) recebido(s): ' + inttostr(bytes)); for P := 0 to Bytes - 1 do begin NumByte := NumByte + 1; Case NumByte of 1: Begin ia := ia +1; editCorA.Text := floattostr(integer(CharBuf(Buffer^)[P])); mia[ia] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar1.Text)then StatusBar2.Panels.Items[0].Text := 'ALARME: Sobrecorrente na fase A'; AlarmeA(msg);

44

end end; 2: Begin ib := ib +1; editCorB.Text := floattostr(integer(CharBuf(Buffer^)[P])); mib[ib] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar2.Text)then StatusBar2.Panels.Items[0].Text := 'ALARME: Sobrecorrente na fase B'; AlarmeB(msg); end end; 3: Begin ic := ic +1; editCorC.Text := floattostr(integer(CharBuf(Buffer^)[P])); mic[ic] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar3.Text)then AlarmeC(msg); StatusBar2.Panels.Items[0].Text := 'ALARME: Sobrecorrente na fase C'; end end; 4: Begin ineutro := ineutro +1; editCorN.Text := floattostr(integer(CharBuf(Buffer^)[P])); min[ineutro] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar4.Text)then AlarmeN(msg); StatusBar2.Panels.Items[0].Text := 'ALARME: Sobrecorrente no neutro'; end end; 5: Begin fa := fa +1; editFaseA.Text := floattostr(integer(CharBuf(Buffer^)[P])); mfa[fa] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar5.Text)then AlarmeVa(msg); StatusBar2.Panels.Items[0].Text := 'ALARME: Subtenso na fase A'; end end; 6: Begin fb := fb +1; editFaseB.Text := floattostr(integer(CharBuf(Buffer^)[P])); mfb[fb] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar6.Text)then StatusBar2.Panels.Items[0].Text := 'ALARME: Subtenso na fase B'; AlarmeVb(msg); end end; 7: Begin

45

fc := fc +1; editFaseC.Text := floattostr(integer(CharBuf(Buffer^)[P])); mfc[fc] := integer(CharBuf(Buffer^)[P]); Begin if mia[ia] > integer(frmConfiguracao.editPar7.Text)then AlarmeVc(msg); StatusBar2.Panels.Items[0].Text := 'ALARME: Subtenso na fase C'; end end; end; msg := concat(msg,' ',inttostr(integer(CharBuf(Buffer^)[P]))); If NumByte = 7 then Begin msg := concat(FormatDateTime('hh"h"mm"m"ss"s"',now),' ',msg); SalvarArquivo(msg); msg := ''; NumByte := 0; end; end; //Fim do For end; Application.ProcessMessages; finally FreeMem(Buffer); end; end; end; procedure TfrmPrincipal.FormCreate(Sender: TObject); begin NumByte := 0; ia:=0; ib:=0; ib:=0; ineutro:=0; fa:=0; fb:=0; fc:=0; msg := ''; via:='';vib:='';vic:='';vin:='';vfa:='';vfb:='';vfc:='';vtp:=''; Comm1.Close; FlagFechado := 1; tempo := 0; ia:=0; ib:=0; ic:=0; ineutro:=0; fa:=0; fb:=0; fc:=0; sbtDesconectar.Enabled := false; editCorA.Text:= ''; editCorB.Text:= ''; editCorC.Text:= ''; editFaseA.Text:= ''; editFaseB.Text:= '';

46

editFaseC.Text:= ''; editCorN.Text:= ''; mStatus.Lines.Add('' + FormatDateTime('hh:mm:ss',tempo)); Timer.Enabled:=false; end;

procedure TfrmPrincipal.sbtResultadosClick(Sender: TObject); begin If FileExists(concat('c:\Resultados.\Entradas - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')) then Begin frmResultados.show; frmResultados.sbtRelatorio.Enabled := true; frmResultados.editResultados.Lines.LoadFromFile(concat('c:\Resultados.\Entradas ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); end else showmessage('Os dados no foram recebidos!'); end;

procedure TfrmPrincipal.sbtConfigClick(Sender: TObject); var senha: string; begin senha := ''; if InputQuery('Senha', 'Digite a senha:', senha) then begin if senha = frmConfiguracao.editParSenha.Text then frmConfiguracao.Show else showmessage('Senha incorreta!'); end; end;

end. unit Resultados; interface uses

47

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart, ComObj,jpeg, ComCtrls; type TfrmResultados = class(TForm) chartCorA: TChart; sbtRelatorio: TBitBtn; sbtSairII: TBitBtn; editResultados: TMemo; sbtSalvar: TBitBtn; BitBtn1: TBitBtn; sbtEditar: TButton; sbtReset: TButton; chartCorC: TChart; Chart3: TChart; Chart4: TChart; Chart5: TChart; Chart1: TChart; Series3: TLineSeries; Series1: TLineSeries; Series4: TLineSeries; Series5: TLineSeries; Series6: TLineSeries; Series7: TLineSeries; Chart2: TChart; Series2: TLineSeries; procedure sbtSairIIClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure sbtSalvarClick(Sender: TObject); procedure sbtRelatorioClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmResultados: TfrmResultados; implementation uses Principal; {$R *.DFM} procedure TfrmResultados.sbtSairIIClick(Sender: TObject);

48

begin Close; end;

procedure TfrmResultados.FormShow(Sender: TObject); var a: integer; Begin tp[1] := 0; For a := 2 to ia do Begin tp[a] := tp[a-1] + 1; via := concat(vtp,' ',inttostr(tp[a])); end; With Series1 do Begin For a := 1 to ic do Begin AddXY(tp[a],mic[a]); vic := concat(vic,' ',inttostr(mic[a])); end; end; With Series2 do Begin For a := 1 to ib do Begin AddXY(tp[a],mib[a]); vib := concat(vib,' ',inttostr(mib[a])); end; end; With Series3 do Begin For a := 1 to ia do Begin AddXY(tp[a],mic[a]); via := concat(via,' ',inttostr(mia[a])); end; end; With Series4 do Begin For a := 1 to ineutro do Begin AddXY(tp[a],min[a]); vin := concat(vin,' ',inttostr(min[a])); end; end; With Series5 do

49

Begin For a := 1 to fa do Begin AddXY(tp[a],mfa[a]); vfa := concat(vfa,' ',inttostr(min[a])); end; end; With Series6 do Begin For a := 1 to fb do Begin AddXY(tp[a],mfb[a]); vfb := concat(vfb,' ',inttostr(min[a])); end; end; With Series7 do Begin For a := 1 to fc do Begin AddXY(tp[a],mfc[a]); vfc := concat(vfc,' ',inttostr(min[a])); end; end; end;

procedure TfrmResultados.sbtSalvarClick(Sender: TObject); var texto: TextFile; cont :integer; Begin cont := 1; If FileExists(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.m')) then Begin While FileExists(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.m')) do cont := cont + 1; assignfile(texto,concat('c:\Resultados.\Entradas - ',inttostr(cont),'.m')); Rewrite(texto); writeln(texto,concat(char(#37),'Universidade Federal de Gois - Ncleo PEQ')); writeln(texto,concat(char(#37),'Criado em ',FormatDateTime('dd "de" mmmm "de" yyyy',date),' s ',FormatDateTime('hh"h"mm"m"ss"s"',now))); writeln(texto,concat(char(#37),'Autores:')); writeln(texto,concat(char(#37),' Rogrio Gomide - rogeriogomide@ig.com.br')); writeln(texto,concat(char(#37),' Clarissa Hatsue - clarissa_frantz@ig.com.br')); writeln(texto,''); writeln(texto,concat('Ia=[',via,'];')); writeln(texto,concat('Ib=[',vib,'];'));

50

writeln(texto,concat('Ic=[',vic,'];')); writeln(texto,concat('In=[',vin,'];')); writeln(texto,concat('Va=[',vfa,'];')); writeln(texto,concat('Vb=[',vfb,'];')); writeln(texto,concat('Vc=[',vfc,'];')); Closefile(texto); end else Begin assignfile(texto,concat('c:\Resultados.\Entradas - ','.m')); Rewrite(texto); writeln(texto,concat(char(#37),'Universidade Federal de Gois - Ncleo PEQ')); writeln(texto,concat(char(#37),'Criado em ',FormatDateTime('dd "de" mmmm "de" yyyy',date),' s ',FormatDateTime('hh"h"mm"m"ss"s"',now))); writeln(texto,concat(char(#37),'Autores:')); writeln(texto,concat(char(#37),' Rogrio Gomide - rogeriogomide@ig.com.br')); writeln(texto,concat(char(#37),' Clarissa Hatsue - clarissa_frantz@ig.com.br')); writeln(texto,''); writeln(texto,concat('Ia=[',via,'];')); writeln(texto,concat('Ib=[',vib,'];')); writeln(texto,concat('Ic=[',vic,'];')); writeln(texto,concat('In=[',vin,'];')); writeln(texto,concat('Va=[',vfa,'];')); writeln(texto,concat('Vb=[',vfb,'];')); writeln(texto,concat('Vc=[',vfc,'];')); Closefile(texto); end; editResultados.Lines.SaveToFile(concat('c:\Resultados.\Entradas - ',FormatDateTime('dddd, d "de" mmmm "de" yyyy',date),'.txt')); editResultados.ReadOnly := true; editResultados.TabStop := false; end;

procedure TfrmResultados.sbtRelatorioClick(Sender: TObject); var Excel: variant; Linha,cont:Integer; begin cont := 1; Excel := CreateOleObject('Excel.Application'); If FileExists(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')) then Begin while FileExists(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')) do cont := cont +1; Excel.Workbooks.Add;

51

Excel.Workbooks[1].Sheets[1].Name := 'Vetores'; Excel.Workbooks[1].Sheets[1].Cells[1,1] := 'VALORES:'; Excel.Workbooks[1].Sheets[1].Cells[1,2] := Datetostr(Now); Excel.Workbooks[1].Sheets[1].Cells[1,3] := Timetostr(Now); Excel.Workbooks[1].Sheets[1].Cells[3,1] := 'Corrente'; Excel.Workbooks[1].Sheets[1].Cells[3,2] := 'Horrio'; For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,1] := mia[Linha]; For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,2] := Timetostr(Now); Excel.Workbooks[1].SaveAs(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')); Excel.Workbooks[1].Close; Begin while FileExists(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')) do cont := cont +1; Excel.Workbooks.Add; Excel.Workbooks[1].Sheets[1].Name := 'Vetores'; Excel.Workbooks[1].Sheets[1].Cells[1,1] := 'VALORES:'; Excel.Workbooks[1].Sheets[1].Cells[1,2] := Datetostr(Now); Excel.Workbooks[1].Sheets[1].Cells[1,3] := Timetostr(Now); Excel.Workbooks[1].Sheets[1].Cells[3,1] := 'Corrente Fase A'; Excel.Workbooks[1].Sheets[1].Cells[3,2] := 'Corrente Fase B'; Excel.Workbooks[1].Sheets[1].Cells[3,3] := 'Corrente Fase C'; Excel.Workbooks[1].Sheets[1].Cells[3,4] := 'Corrente Neutro'; Excel.Workbooks[1].Sheets[1].Cells[3,5] := 'Tenso Fase A'; Excel.Workbooks[1].Sheets[1].Cells[3,6] := 'Tenso Fase B'; Excel.Workbooks[1].Sheets[1].Cells[3,7] := 'Tenso Fase C'; Excel.Workbooks[1].Sheets[1].Cells[3,8] := Timetostr(Now); For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,1] := mia[Linha]; For Linha := 1 to ib do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,2] := mib[Linha]; For Linha := 1 to ic do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,3] := mic[Linha]; For Linha := 1 to ineutro do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,4] := min[Linha]; For Linha := 1 to fa do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,5] := mfa[Linha]; For Linha := 1 to fb do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,6] := mfb[Linha]; For Linha := 1 to fc do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,7] := mfc[Linha]; For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,8] := Timetostr(Now); Excel.Workbooks[1].SaveAs(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')); Excel.Workbooks[1].Close; end end else Begin Excel.Workbooks.Add; Excel.Workbooks[1].Sheets[1].Name := 'Vetores'; Excel.Workbooks[1].Sheets[1].Cells[1,1] := 'VALORES:'; Excel.Workbooks[1].Sheets[1].Cells[1,2] := Datetostr(Now);

52

Excel.Workbooks[1].Sheets[1].Cells[1,3] := Timetostr(Now); Excel.Workbooks[1].Sheets[1].Cells[3,1] := 'Corrente Fase A'; Excel.Workbooks[1].Sheets[1].Cells[3,2] := 'Corrente Fase B'; Excel.Workbooks[1].Sheets[1].Cells[3,3] := 'Corrente Fase C'; Excel.Workbooks[1].Sheets[1].Cells[3,4] := 'Corrente Neutro'; Excel.Workbooks[1].Sheets[1].Cells[3,5] := 'Tenso Fase A'; Excel.Workbooks[1].Sheets[1].Cells[3,6] := 'Tenso Fase B'; Excel.Workbooks[1].Sheets[1].Cells[3,7] := 'Tenso Fase C'; Excel.Workbooks[1].Sheets[1].Cells[3,8] := 'Horrio'; For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,1] := mia[Linha]; For Linha := 1 to ib do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,2] := mib[Linha]; For Linha := 1 to ic do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,3] := mic[Linha]; For Linha := 1 to ineutro do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,4] := min[Linha]; For Linha := 1 to fa do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,5] := mfa[Linha]; For Linha := 1 to fb do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,6] := mfb[Linha]; For Linha := 1 to fc do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,7] := mfc[Linha]; For Linha := 1 to ia do Excel.Workbooks[1].Sheets[1].Cells[Linha+3,8] := Timetostr(Now); Excel.Workbooks[1].SaveAs(concat('c:\Resultados.\Entradas - ',inttostr(cont),'.xls')); Excel.Workbooks[1].Close; end; sbtRelatorio.Enabled := false; end; end. unit Configuracao; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, CommInt, ComCtrls; type TfrmConfiguracao = class(TForm) editPar4: TEdit; editPar2: TEdit; editPar3: TEdit; editPar5: TEdit; editPar6: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel;

53

Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; editPar1: TEdit; editPar7: TEdit; editPar8: TEdit; editPar9: TEdit; editPar10: TEdit; editPar11: TEdit; editPar12: TEdit; editPar13: TEdit; editPar14: TEdit; editPar15: TEdit; editPar16: TEdit; editPar17: TEdit; editPar18: TEdit; editPar19: TEdit; editPar20: TEdit; editPar21: TEdit; editPar22: TEdit; editPar24: TEdit; editPar23: TEdit; editPar25: TEdit; editPar26: TEdit; editPar27: TEdit; editPar28: TEdit; editPar29: TEdit; editPar30: TEdit; editPar31: TEdit; editPar32: TEdit; editParSenha: TEdit; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel;

54

Label24: TLabel; Label25: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label30: TLabel; Label31: TLabel; Label32: TLabel; Label33: TLabel; Label34: TLabel; Label35: TLabel; sbtConfigEnviar: TButton; sbtConfigSalvar: TButton; sbtConfigSair: TButton; Panel1: TPanel; Panel2: TPanel; mStatus: TStatusBar; ProgressBar1: TProgressBar; procedure sbtConfigSairClick(Sender: TObject); procedure sbtConfigEnviarClick(Sender: TObject); procedure sbtConfigSalvarClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;

var frmConfiguracao: TfrmConfiguracao; implementation uses Principal; {$R *.DFM}

procedure TfrmConfiguracao.sbtConfigSairClick(Sender: TObject);

55

begin if Application.MessageBox('Tem certeza que deseja sair das configuraes?','Confirmao', MB_IconQuestion + MB_YesNo) = idYes then Close; end;

procedure TfrmConfiguracao.sbtConfigEnviarClick(Sender: TObject); var S: string; Count: Integer; begin with TfrmConfiguracao.Create(nil) do try ProgressBar1.Max := 96; Show; Update; begin S := editPar1.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar2.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar3.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar4.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar5.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3);

56

S := editPar6.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar7.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar8.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar9.text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar10.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar11.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar12.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar13.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar14.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar15.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count);

57

ProgressBar1.StepBy(3); S := editPar16.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar17.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar18.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar19.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar20.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar21.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar22.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar23.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar24.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar25.Text;

58

Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar26.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar27.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar28.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar29.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar30.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar31.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); S := editPar32.Text; Count := Length(S); Count := frmPrincipal.Comm1.Write(S[1], Count); ProgressBar1.StepBy(3); sbtConfigEnviar.Enabled := false; end finally Free; end; end ;

59

procedure TfrmConfiguracao.sbtConfigSalvarClick(Sender: TObject); var texto: textfile; begin CreateDir('c:\ConfiguracaoReligador.'); If FileExists(concat('c:\ConfiguracaoReligador.\Parametros.txt')) then begin assignfile(texto,concat('c:\ConfiguracaoReligador.\Parametros.txt')); rewrite(texto); writeln(texto, editPar1.Text); writeln(texto, editPar2.Text); writeln(texto, editPar3.Text); writeln(texto, editPar4.Text); writeln(texto, editPar5.Text); writeln(texto, editPar6.Text); writeln(texto, editPar7.Text); writeln(texto, editPar8.Text); writeln(texto, editPar9.Text); writeln(texto, editPar10.Text); writeln(texto, editPar11.Text); writeln(texto, editPar12.Text); writeln(texto, editPar13.Text); writeln(texto, editPar14.Text); writeln(texto, editPar15.Text); writeln(texto, editPar16.Text); writeln(texto, editPar17.Text); writeln(texto, editPar18.Text); writeln(texto, editPar19.Text); writeln(texto, editPar20.Text); writeln(texto, editPar21.Text); writeln(texto, editPar22.Text); writeln(texto, editPar23.Text); writeln(texto, editPar24.Text); writeln(texto, editPar25.Text); writeln(texto, editPar26.Text); writeln(texto, editPar27.Text); writeln(texto, editPar28.Text); writeln(texto, editPar29.Text); writeln(texto, editPar30.Text); writeln(texto, editPar31.Text); writeln(texto, editPar32.Text); writeln(texto, editParSenha.Text); Closefile(texto); sbtConfigEnviar.Enabled := true;

60

showmessage ('Dados salvos!') end else begin assignfile(texto,concat('c:\ConfiguracaoReligador.\Parametros.txt')); rewrite(texto); writeln(texto, editPar1.Text); writeln(texto, editPar2.Text); writeln(texto, editPar3.Text); writeln(texto, editPar4.Text); writeln(texto, editPar5.Text); writeln(texto, editPar6.Text); writeln(texto, editPar7.Text); writeln(texto, editPar8.Text); writeln(texto, editPar9.Text); writeln(texto, editPar10.Text); writeln(texto, editPar11.Text); writeln(texto, editPar12.Text); writeln(texto, editPar13.Text); writeln(texto, editPar14.Text); writeln(texto, editPar15.Text); writeln(texto, editPar16.Text); writeln(texto, editPar17.Text); writeln(texto, editPar18.Text); writeln(texto, editPar19.Text); writeln(texto, editPar20.Text); writeln(texto, editPar21.Text); writeln(texto, editPar22.Text); writeln(texto, editPar23.Text); writeln(texto, editPar24.Text); writeln(texto, editPar25.Text); writeln(texto, editPar26.Text); writeln(texto, editPar27.Text); writeln(texto, editPar28.Text); writeln(texto, editPar29.Text); writeln(texto, editPar30.Text); writeln(texto, editPar31.Text); writeln(texto, editPar32.Text); writeln(texto, editParSenha.Text); Closefile(texto); sbtConfigEnviar.Enabled := true; showmessage ('Dados salvos!') end; end;

61

procedure TfrmConfiguracao.FormCreate(Sender: TObject); var texto: textfile; F: string; begin CreateDir('c:\ConfiguracaoReligador.'); If FileExists(concat('c:\ConfiguracaoReligador.\Parametros.txt')) then begin assignfile(texto,concat('c:\ConfiguracaoReligador.\Parametros.txt')); reset(texto); readln(texto, F); editPar1.Text :=F; readln(texto, F); editPar2.Text :=F; readln(texto, F); editPar3.Text :=F; readln(texto, F); editPar4.Text :=F; readln(texto, F); editPar5.Text :=F; readln(texto, F); editPar6.Text :=F; readln(texto, F); editPar7.Text :=F; readln(texto, F); editPar8.Text :=F; readln(texto, F); editPar9.Text :=F; readln(texto, F); editPar10.Text :=F; readln(texto, F); editPar11.Text :=F; readln(texto, F); editPar12.Text :=F; readln(texto, F); editPar13.Text :=F; readln(texto, F); editPar14.Text :=F; readln(texto, F); editPar15.Text :=F; readln(texto, F); editPar16.Text :=F; readln(texto, F); editPar17.Text :=F;

62

readln(texto, F); editPar18.Text :=F; readln(texto, F); editPar19.Text :=F; readln(texto, F); editPar20.Text :=F; readln(texto, F); editPar21.Text :=F; readln(texto, F); editPar22.Text :=F; readln(texto, F); editPar23.Text :=F; readln(texto, F); editPar24.Text :=F; readln(texto, F); editPar25.Text :=F; readln(texto, F); editPar26.Text :=F; readln(texto, F); editPar27.Text :=F; readln(texto, F); editPar28.Text :=F; readln(texto, F); editPar29.Text :=F; readln(texto, F); editPar30.Text :=F; readln(texto, F); editPar31.Text :=F; readln(texto, F); editPar32.Text :=F; readln(texto, F); editParSenha.Text :=F; Closefile(texto); end else begin showmessage ('No h parmetros criados!'); end; end;

end.

Você também pode gostar