Configuracion PI.pdf

106
UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO INDUSTRIAL Simplementação, Configuração e Customização do Sistema PI na Unidade Multipropósito de FCC Monografia submetida à Universidade Federal de Santa Catarina como requisito para a aprovação da disciplina: DAS 5511 Projeto de Fim de Curso Samia Kamal Genena Florianópolis, Março de 2004

Transcript of Configuracion PI.pdf

Page 1: Configuracion PI.pdf

UNIVERSIDADE FEDERAL DE SANTA CATARINA

CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO INDUSTRIAL

Simplementação, Configuração e

Customização do Sistema PI na Unidade Multipropósito de FCC

Monografia submetida à Universidade Federal de Santa Catarina como requisito para a aprovação da disciplina:

DAS 5511 Projeto de Fim de Curso

Samia Kamal Genena

Florianópolis, Março de 2004

Page 2: Configuracion PI.pdf

Implementação, Configuração e Customização do Sistema PI na Unidade Multipropósito de FCC

Monografia submetida à Universidade Federal de Santa Catarina

como requisito para a aprovação da disciplina:

DAS 5511: Projeto de Fim de Curso

Samia Kamal Genena

Florianópolis, março de 2004

Page 3: Configuracion PI.pdf

Implementação, Configuração e Customização do Sistema PI na Unidade Multipropósito de FCC

Samia Kamal Genena

Esta monografia foi julgada no contexto da disciplina DAS 5511: Projeto de Fim de Curso

e aprovada na sua forma final pelo Curso de Engenharia de Controle e Automação Industrial

Banca Examinadora:

Alberto Jamhour, Eng. Orientador Empresa

Julio Elias Normey Rico, PhD. Orientador do Curso

Prof. Augusto Humberto Bruciapaglia Responsável pela disciplina

Prof. Ubirajara Franco Moreno, Avaliador

Ronald Gomes, Debatedor

Rodrigo Castelan Carlson, Debatedor

Page 4: Configuracion PI.pdf

i

À memória de minha filha Santra,

com todo carinho.

Page 5: Configuracion PI.pdf

ii

Agradecimentos

Ao engenheiro e orientador Alberto Jamhour, pela habilidade com que

orientou meu trabalho nunca deixando de me incentivar, propiciando um ambiente

de trabalho favorável, facilitador de minha jornada.

Ao professor e orientador Julio Elias Normey Rico, que prontamente aceitou o

desafio de me orientar, apesar das dificuldades ligadas ao tema, pela sua grande

dedicação e conhecimento em projetos de pesquisa, e pela minha formação

profissional.

À Universidade Federal de Santa Catarina - UFSC - e aos professores do

curso de Engenharia de Controle e Automação Industrial, responsáveis pela minha

formação.

Ao apoio financeiro da Agência Nacional do Petróleo - ANP - e da

Financiadora de Estudos e Projetos - FINEP - por meio do Programa de Recursos

Humanos da ANP para o Setor Petróleo e Gás - PRH nº34 - ANP/MCT.

À PETROBRAS/UN-SIX pela oportunidade de estágio e aprendizado

oferecidos.

Ao suporte da OSIsoft, especialmente Wanda Eaton e Justin Starnes, pela

competência e dedicação, estando sempre presentes quando surgiram dúvidas

relacionadas ao sistema PI.

Ao operador Gilson Mauro Herbst, conhecedor do Sistema PI, que colaborou

no início do projeto explicando o funcionamento do sistema.

À engenheira química e amiga, Luciana Monteguti, que com paciência me

explicou o funcionamento do processo de Craqueamento Catalítico Fluidizado.

Obrigada pelo companheirismo, amizade e suporte emocional que proporcionou.

Aos estagiários da PETROBRAS/UN-SIX, que compartilharam o período de

estágio comigo, em especial ao estagiário e amigo João Rodrigues Giovani de

Souza e à estagiária e amiga Daniela Muccillo, pelo companheirismo, compreensão

e amizade.

Page 6: Configuracion PI.pdf

iii

A minha mãe Tânia Regina Ferreira, exemplo de coragem, determinação,

retidão e perseverança, pessoa a qual admiro muito, pela dedicação e amor durante

toda a minha vida, pelo constante incentivo para prosseguir na busca do meu ideal,

e a minha irmã gêmea Aziza Kamal Genena, pessoa que também admiro e amo,

obrigada pelo incentivo dedicado a mim.

Ao meu namorado, Ricardo Gabriel Steinbach, uma pessoa convicta e

sensível, que sempre compartilhou entusiasticamente de várias idéias, uma pessoa

de visão e motivadora, obrigada pelo companheirismo, carinho e amor dedicados a

mim.

Às amigas, Clarice Urban Chagas e Michelle Bonatti, que sempre foram

fontes de amizade e força, estando presentes em diversas situações da minha vida.

Aos amigos da graduação: Victor Rocha, Leonardo Soliz Encinas e Hermínio

Matias Neto, os quais admiro imensamente pela inteligência e pela maneira com que

vivem e enxergam a vida.

Agradeço em especial ao amigo Leandro de Souza, Engenheiro de Controle e

Automação Industrial, que para mim, mais que um amigo é um irmão, sempre

compartilhando comigo os bons e maus momentos, alegrias e tristezas, ajudando-

me com palavras sábias de um verdadeiro amigo que ele é, sempre me incentivando

e dando força para seguir em frente sem me deixar abater.

Por fim e não menos importante, agradeço saudosa de minha pedra preciosa

e filha Santra, que faleceu no decurso deste projeto, deixando saudade. Obrigada

pelo amor incondicional que durante dez anos foi fonte inesgotável de alegria e

essência da magia que é a razão da minha persistência, energia e luta, rendo-lhe

meu amor eterno e homenagem.

Page 7: Configuracion PI.pdf

iv

A conclusão de um curso de

graduação é um passo no desenvolvimento

pessoal num tempo em que a única

constante é a mudança.

Page 8: Configuracion PI.pdf

v

Resumo

O sistema PI (Plant Information) pode ser traduzido como um conjunto de

ferramentas que permite o acompanhamento de processos industriais, o

armazenamento do histórico dos dados desses processos e o acompanhamento on-

line das suas variáveis. A grande vantagem desse sistema é a possibilidade de

realizar consultas aos dados sem haver necessidade de vínculo físico do cliente com

o Sistema de Controle Distribuído (SDCD).

O objetivo do Projeto de Fim de Curso foi a implementação, configuração e

customização do sistema PI na Unidade Multipropósito de Craqueamento Catalítico

Fluido da SIX.

As atividades desenvolvidas na Petrobras/SIX que serão abordadas nesta

monografia estiveram relacionadas ao conhecimento do sistema, atualização e

inserção de novos tags no banco de dados do servidor, instalação e configuração de

uma nova interface de coleta de dados entre o SDCD e o servidor, criação de telas

de processo para acompanhamento do processo nas máquinas clientes, e

principalmente o desenvolvimento de aplicativos em Visual Basic, os quais são

responsáveis por monitorar e inserir dados manualmente no servidor.

Page 9: Configuracion PI.pdf

vi

Abstract

The Plant Information System (PI System) can be defined as a group of tools

that allows the attendance of industrial processes, the storage of the processes data

report and the on-line attendance of their variables.

The great advantage of PI System is the possibility to watch the process data

without the need of a physical bond between the client machines and the DCS.

The objective of this dissertation is to describe the developed work of

implementation, configuration and customizing of the PI System in the Fluid Catalytic

Cracking Unit of SIX.

The developed activities that will be approached in this monograph were

related to the knowledge of the system, updating and inserting of new tags in the

server's database, installation and configuration of a new interface of data collection

between DCS and server, creation of process screens for attendance of the process

in the client machines, and mainly the development of applications in Visual Basic,

which are responsible for monitoring and manually inserting data in the server.

Page 10: Configuracion PI.pdf

vii

Sumário

Agradecimentos................................................................................................ ii

Resumo ............................................................................................................ v

Abstract ........................................................................................................... vi

Sumário .......................................................................................................... vii

Índice de Figuras .............................................................................................. x

Índice de Anexos ............................................................................................ xii

Capítulo 1: Introdução ......................................................................................1

Capítulo 2: Petrobras – Petróleo Brasileiro S/A................................................3

2.1: Áreas de Atuação...................................................................................4

2.1.1: Abastecimento.................................................................................4

2.1.2: Exploração e Produção ...................................................................4

2.1.3: Gás e Energia..................................................................................5

2.1.4: Internacional ....................................................................................5

2.2: Unidade de Industrialização do Xisto – SIX ...........................................6

2.2.1: Processo PETROSIX ......................................................................6

2.2.2: Gerência de Pesquisa – GEPES.....................................................9

2.3: Craqueamento Catalítico Fluido...........................................................13

2.3.1: Descrição Sumária do Processo ...................................................14

2.3.2: Produtos de Craqueamento...........................................................16

2.3.3: Catalisadores para FCC ................................................................19

2.3.4: Carga para Craqueamento............................................................19

2.3.5: Variáveis Operacionais..................................................................20

2.4: Unidade Multipropósito de FCC – U144...............................................21

Page 11: Configuracion PI.pdf

viii

2.4.1: Descrição Geral.............................................................................21

2.4.2: Fluxo de Catalisador......................................................................22

2.4.3: Fluxo de Carga ..............................................................................23

2.4.4: Fluxo de Ar ....................................................................................23

2.4.5: Fluxo de Vapor ..............................................................................24

2.4.6: Fluido de Selagem.........................................................................24

2.4.7: Amostrador de Topo e Sistemas de Condensação .......................24

Capítulo 3: O Sistema PI ................................................................................26

3.1: O Armazenamento dos Dados.............................................................28

3.1.1: Buferização dos Dados .................................................................29

3.1.2: Teste de Exceção..........................................................................30

3.1.3: Compressão dos Dados ................................................................30

3.2: Tags .....................................................................................................33

3.3: Acesso aos Dados ...............................................................................35

3.3.1: PI-API ............................................................................................35

3.3.2: Utilitários Clientes..........................................................................37

3.3.3: Interface semAPI ...........................................................................39

3.4: Sistema de Controle Distribuído – SDCD ............................................43

Capítulo 4: Etapas do Trabalho Desenvolvido................................................44

4.1: Instalação e Configuração da Interface................................................44

4.2: Criação de Planilhas para Automação de Tarefas Repetitivas ............50

4.2.1: Cálculo de Atributos dos Tags a partir do BD do SDCD................50

4.2.2: Cálculo de Estados Digitais ...........................................................53

4.2.3: Cálculo de Valores Atuais das Variáveis .......................................54

4.3: Criação de Telas de Processo .............................................................55

4.4: Desenvolvimento de Aplicativos em Visual Basic ................................60

Page 12: Configuracion PI.pdf

ix

4.4.1: PI Tag Monitor ...............................................................................60

4.4.2: Entrada Manual de Dados.............................................................64

4.4.3: PI Data Insert.................................................................................65

Capítulo 5: Discussão dos Resultados, Conclusões e Perspectivas ..............68

Bibliografia: .....................................................................................................71

Anexos:...........................................................................................................72

Page 13: Configuracion PI.pdf

x

Índice de Figuras

Figura 1 – Produtos e Subprodutos do Xisto ....................................................7

Figura 2 – Processo Petrosix............................................................................8

Figura 3 – Unidade de extração do óleo de xisto (retorta)................................9

Figura 4 – Diagrama de Blocos do Craqueamento Catalítico.........................16

Figura 5 – Unidade Multipropósito de FCC.....................................................22

Figura 6 – Fluxo dos Dados............................................................................26

Figura 7 – Arquitetura do Sistema PI na SIX ..................................................27

Figura 8 – Processamento de Informações Novas.........................................28

Figura 9 – PI Snapshot Subsystem ................................................................28

Figura 10 – Fluxo da Exceção à Compressão................................................29

Figura 11 – Exemplo do Processo de Filtragem dos Dados...........................29

Figura 12 – Sistema de Buferização...............................................................29

Figura 13 – Como funciona o Exception Report .............................................30

Figura 14 – Parâmetros de Compressão........................................................31

Figura 15 – Primeiro Passo da Compressão de Dados..................................31

Figura 16 – Zona Morta da Compressão ........................................................32

Figura 17 – Determinação do valor a ser armazenado...................................32

Figura 18 – Compressão dos Dados ..............................................................33

Figura 19 – Resultado Final da Compressão dos Dados ...............................33

Figura 20 – Máquina Cliente com PI-API........................................................36

Figura 21 – PI Tag Configurator – add-in para Microsoft Excel ......................38

Figura 22 – PI Point Builder ............................................................................38

Figura 23 – Interface – Intermediador na Coleta de Dados ............................39

Page 14: Configuracion PI.pdf

xi

Figura 24 – Esquema do Interfaceamento ABB/Bailey-PI semAPI.................39

Figura 25 – Módulo/Cartão de Comunicação INICI03 ....................................40

Figura 26 – Estrutura do Interfaceamento ABB/Bailey-PI semAPI .................41

Figura 27 – Tela do LICENTRY......................................................................45

Figura 28 – Tela do ICICONF.........................................................................46

Figura 29 – Buffer Primário de Memória sendo utilizado ................................49

Figura 30 – Buffer Secundário de Memória sendo utilizado ...........................49

Figura 31 – Guia EngUnits .............................................................................50

Figura 32 – Guia Bailey PointType .................................................................51

Figura 33 – Guia BD SDCD ............................................................................52

Figura 34 – Guia Cálculo para Exportar .........................................................52

Figura 35 – Estados Digitais Lógicos..............................................................53

Figura 36 - Estados digitais de cada tag digital .............................................54

Figura 37 – Retorno de Valor Atual das Variáveis ..........................................55

Figura 38 – Lista de telas do PI-ProcessBook ................................................56

Figura 39 – Comparação entre telas de processo..........................................57

Figura 40 –Tela de Processo Geral criada no PI-ProcessBook......................58

Figura 41 – Tela criada no PI-ProcessBook ...................................................59

Figura 42 – Gráfico do PI-ProcessBook .........................................................59

Figura 43 – PI Tag Monitor – Splash Screen..................................................61

Figura 44 – PI Tag Monitor – Tela de Monitoração dos Dados ......................61

Figura 45 – PI Tag Monitor – Tela de Busca ..................................................62

Figura 46 – PI Tag Monitor – Resultado da Busca Efetuada..........................63

Figura 47 – PI Tag Monitor – Monitoramento de Variáveis.............................64

Figura 48 – PI Data Insert – Tela de Inserção dos Dados..............................66

Figura 49 – PI Data Insert – Processo de Inserção dos Dados ......................67

Page 15: Configuracion PI.pdf

xii

Índice de Anexos

Anexo A – Fluxograma Unidade Multipropósito de FCC ................................72

Anexo B – Código Fonte do arquivo piapi32.bas............................................73

Anexo C – Código Fonte do arquivo piutil.bas................................................79

Anexo D – PI Tag Monitor – Código Fonte do Splash Form..........................82

Anexo E – PI Tag Monitor – Código Fonte do Display Form .........................83

Anexo F – PI Tag Monitor – Código Fonte do Search Form...........................85

Anexo G – PI Data Insert – Código Fonte do DataInsert Form.......................87

Anexo H – Supported Input Point Types (ABB/Bailey Data to PI) ..................89

Anexo I – Lista Completa de parâmetros do blysem.bat ................................90

Page 16: Configuracion PI.pdf

1

Capítulo 1: Introdução

O assunto a ser abordado no decorrer desta monografia foi desenvolvido

durante a execução do Projeto de Fim de Curso, realizado durante período de

estágio na empresa Petrobras/UN-SIX, onde se trabalhou junto à Gerência de

Pesquisa com o sistema PI (Plant Information), sendo exigida a implementação,

configuração e customização do mesmo de acordo com os objetivos a serem

alcançados pela companhia.

Por implementação entende-se dar efeito prático a algo concebido através de

uma ação objetiva. Configurar por sua vez significa dar forma. Customização, por

fim, tem o sentido de adaptar os produtos e processos ao gosto do cliente,

originando da palavra do inglês customer, que significa cliente.

Assim, durante a realização do trabalho foi possível efetivar de fato o

funcionamento do sistema PI, dando forma ao mesmo para que funcionasse

corretamente, e criando interfaces de comunicação entre os usuários e o servidor de

dados que se adaptassem a utilização requerida pelo cliente.

Sendo o sistema PI um conjunto de servidor/cliente desenvolvido para

automatizar totalmente a coleta, armazenamento e apresentação das informações

de um processo, esse Projeto de Fim de Curso está completamente inserido no

contexto do curso de Engenharia de Controle e Automação Industrial.

Constavam entre os objetivos do trabalho a ser realizado: a operacionalização

do sistema para as unidades de pesquisa da SIX, iniciando pela U144 (Unidade

Multipropósito de Craqueamento Catalítico Fluido); a integração dos dados oriundos

do PI com os programas para balanço de massa e energia da unidade; e a

elaboração roteiros para manutenção e implementação adicionais, quando

necessárias.

O sistema PI foi encontrado fora de funcionamento, especialmente no que diz

respeito à comunicação entre o SDCD e a interface de coleta dos dados. Assim, o

foco inicial do trabalho resumiu-se em fazer com que a interface funcionasse

corretamente.

Page 17: Configuracion PI.pdf

2

A metodologia adotada foi baseada no aprendizado e no conhecimento

adquirido progressivamente sobre o funcionamento do sistema através de manuais,

internet e contatos com o fabricante e o representante no Brasil, seguindo o princípio

de que é preciso conhecer bem o sistema para poder configurá-lo e fazê-lo funcionar

corretamente.

No decorrer da monografia poder-se-á acompanhar as etapas de

desenvolvimento do trabalho realizado.

Primeiramente, no capítulo 2, é feita uma apresentação da empresa onde o

estágio foi realizado, composta de um breve relato sobre sua história e áreas de

atuação. Nesse mesmo capítulo é feita uma descrição do processo de

craqueamento catalítico fluido, a título de informação para os leitores e de sua

implementação na Unidade de Industrialização do Xisto – SIX.

No capítulo 3 descreve-se os conhecimentos adquiridos sobre o sistema PI e

seu funcionamento, bem como o funcionamento da interface semAPI que executa a

coleta de dados do SDCD.

No quarto capítulo são descritas as atividades desenvolvidas pela autora,

acompanhadas de esclarecimentos sobre projetos quando esses se fizerem

necessários.

Finalmente, no quinto e último capítulo, é apresentada uma discussão dos

resultados, junto com conclusões e perspectivas sobre o projeto, onde se faz uma

análise crítica das realizações e dificuldades encontradas durante o período.

Page 18: Configuracion PI.pdf

3

Capítulo 2: Petrobras – Petróleo Brasileiro S/A

Em outubro de 1953, através da Lei nº. 2.004, a Petrobras era criada para

executar as atividades do setor de petróleo no Brasil em nome da União.

Ao longo de quatro décadas, tornou-se líder em distribuição de derivados no

país, colocando-se entre as vinte maiores empresas petrolíferas na avaliação

internacional.

Em 1997, o Brasil ingressou no seleto grupo de 16 países que produz mais de

um milhão de barris de óleo por dia. E nesse mesmo ano foi criada a Lei nº. 9.478,

que abre as atividades da indústria petrolífera à iniciativa privada.

Com a lei, foram criados a Agência Nacional do Petróleo (ANP), encarregada

de regular, contratar e fiscalizar as atividades do setor; e o Conselho Nacional de

Política Energética, um órgão formulador da política pública de energia. Em sintonia

com a mudança do cenário, a Petrobras seguiu preparada para a livre competição,

ampliando novas perspectivas de negócios e tendo maior autonomia empresarial.

Noventa e três plataformas de produção, mais de dez refinarias, quase

dezesseis mil quilômetros em dutos e mais de sete mil postos de combustíveis,

esses são números da Petrobras que representam sua forte presença no Brasil.

A Petrobras desenvolve diversas atividades no exterior e mantém uma

consistente atividade internacional, tal como: compra e venda de petróleo,

tecnologias, equipamentos, materiais e serviços; acompanhamento do

desenvolvimento da economia americana e européia; operação financeira com

bancos e bolsa de valores; recrutamento de pessoal especializado; afretamento de

navios; apoio em eventos internacionais, entre outros.

Além de estar presente em diversos países como Angola, Argentina, Bolívia,

Colômbia, Estados Unidos e Nigéria, a Petrobras conta ainda com o apoio de seus

escritórios no exterior como em Nova Iorque e no Japão. Além disso, há o CENPES,

o Centro de Pesquisas da Petrobras, que possui uma das mais avançadas

tecnologias do mundo e é reconhecido internacionalmente pela sua competência.

Page 19: Configuracion PI.pdf

4

2.1: Áreas de Atuação

A Petrobras atua em várias áreas do setor de energia. Desde a exploração de

gás e petróleo até a distribuição, passando pelo refino e abastecimento, as

atividades da companhia estão divididas em: Exploração e Produção, Gás e Energia,

Abastecimento, e Internacional.

Como empresa de energia, a Petrobras atua em várias áreas desse setor,

desde a exploração de gás e petróleo, refino, abastecimento até a distribuição.

2.1.1: Abastecimento

A Petrobras abastece quase toda a demanda do mercado brasileiro por

derivados de petróleo – cerca de 1,7 milhões de barris/dia - mercado esse composto

por 140 milhões de consumidores.

Além do objetivo de aumentar sua capacidade de produção, de modo a

atender a crescente demanda por derivados, a Petrobras precisa enfrentar outro

desafio: adaptar suas refinarias de modo a aumentar a taxa de conversão de

diferentes tipos de óleo, dentro da já existente estrutura de processamento,

eliminando, assim, a dependência da importação.

De acordo com a Petroleum Intelligence Weekly, a Petrobras é a nona maior

companhia no setor downstream - refino, transporte e comercialização. O termo

downstream, na Petrobras, está ligado à boa parte da estrutura operacional da

companhia: suas onze refinarias, duas fábricas de fertilizantes, bases, dutos,

terminais e navios.

2.1.2: Exploração e Produção

O órgão de Exploração e Produção (E&P) da Petrobras é responsável pela

pesquisa, localização, identificação, desenvolvimento, produção e incorporação de

reservas de óleo e gás natural dentro do território nacional.

Impulsionado pelo fato de grande parte das reservas brasileiras se

encontrarem em bacias marítimas a grandes profundidades, o E&P, em parceria

com outras áreas da Companhia, tem alçado a Petrobras à excelência mundial em

desenvolvimento e aplicação de tecnologia de exploração e produção em águas

Page 20: Configuracion PI.pdf

5

profundas. Esse esforço foi reconhecido internacionalmente através do recebimento,

pela segunda vez, no ano 2001, do prêmio mais importante da indústria mundial de

petróleo, o Distinguished Achievement Award, oferecido na Offshore Technology

Conference (OTC).

2.1.3: Gás e Energia

A área de negócios de Gás & Energia é responsável pela comercialização do

gás natural nacional e importado e pela implantação de projetos, em parceria com o

setor privado, que irão garantir a oferta deste combustível em todo o país.

Elevar a participação do gás natural na matriz energética do país dos atuais

3% para 10% até 2005 é um dos principais objetivos da companhia. Para isso, a

Petrobras dedica esforço permanente junto às distribuidoras de gás e seus clientes,

buscando alternativas técnicas e econômicas que ampliem o uso do gás nos

segmentos industriais, automotivos, na geração e co-geração de energia.

A área de Gás & Energia da Petrobras é responsável por grande parte da

estrutura de transporte e comercialização, atuando sempre de maneira segura e

ambientalmente correta. Entre todos os combustíveis atualmente disponíveis em

larga escala, o gás natural é aquele que se destaca como o mais versátil, econômico

e limpo.

2.1.4: Internacional

A Petrobras desenvolve também diversas atividades no exterior e mantém

uma consistente atividade internacional, como: exploração; compra e venda de

petróleo, tecnologias, equipamentos, materiais e serviços; acompanhamento do

desenvolvimento da economia americana e européia; operação financeira com

bancos e bolsa de valores; recrutamento de pessoal especializado; afretamento de

navios; apoio em eventos internacionais, entre outros.

Ainda assim, a Companhia está associada às maiores empresas de petróleo

do mundo, fazendo-se presente em Angola, Argentina, Bolívia, Colômbia,

Casaquistão, Estados Unidos, Guiné Equatorial, Nigéria e Trinidad & Tobago.

Page 21: Configuracion PI.pdf

6

2.2: Unidade de Industrialização do Xisto – SIX

A Unidade de Industrialização do Xisto foi constituída em 1º de junho de 1954,

com a missão de estudar as potencialidades do xisto betuminoso e a viabilidade

econômica de sua transformação industrial.

A sede está localizada no município de São Mateus do Sul, no Paraná, a 140

quilômetros de Curitiba, onde também se encontram a mina e a área industrial.

Em função da capacidade tecnológica desenvolvida na exploração do xisto, a

Petrobras resolveu transformar a planta industrial do xisto também num centro

avançado de pesquisa na área de refino. Assim, dentro da SIX podem ser

encontrados dois núcleos distintos, a Gerência de Produção e a Gerência de

Pesquisa.

Hoje, vários projetos estão sendo desenvolvidos em conjunto com

universidades e centros de pesquisas. Além disso, a SIX confere atenção especial à

preservação dos ecossistemas, promove e apóia os órgãos públicos de defesa do

meio ambiente e entidades ambientalistas.

2.2.1: Processo PETROSIX

O Brasil tem um dos maiores volumes mundiais de xisto: reservas de 1,9

bilhão de barris de óleo, 25 milhões de toneladas de gás liquefeito, 68 bilhões de

metros cúbicos de gás combustível e 48 milhões de toneladas de enxofre só na

formação Irati, que engloba os estados de São Paulo, Paraná, Santa Catarina, Rio

Grande do Sul, Mato Grosso do Sul e Goiás.

A Petrobras concentrou suas operações na jazida de São Mateus do Sul,

cidade do Paraná, onde o minério é encontrado em duas camadas: a camada

superior de xisto com 6,4 metros de espessura e teor de óleo de 6,4%, e a camada

inferior com 3,2 metros de espessura e teor de óleo de 9,1%.

Em 1972, entrou em operação a Usina Protótipo do Irati (UPI), que

comprovou a viabilidade técnica do processo PETROSIX, testou equipamentos e

levantou dados básicos para projetos de usinas industriais.

O processo de consolidação da tecnologia PETROSIX se completou em

dezembro de 1991, quando entrou em operação o Módulo Industrial (MI), em plena

Page 22: Configuracion PI.pdf

7

escala. Atualmente, a SIX processa diariamente 7.800 toneladas de xisto

betuminoso, que geram 3.870 barris de óleo de xisto, 120 toneladas de gás

combustível, 45 toneladas de gás liquefeito de xisto e 75 toneladas de enxofre.

Figura 1 – Produtos e Subprodutos do Xisto

A principal característica da tecnologia desenvolvida pela Petrobras é a

simplicidade operacional. Depois de minerado a céu aberto, o xisto vai para um

britador, que reduz as pedras a tamanhos que variam de 6 a 70 milímetros. Então,

estas pedras são levadas a uma retorta, onde são pirolisadas (cozidas) a uma

temperatura de aproximadamente 500 graus Celsius liberando-se a matéria orgânica

nelas contida sob a forma de óleo e gás.

O calor para a pirólise é fornecido por uma corrente gasosa de elevada

temperatura, que entra na zona de retortagem e se mistura com uma segunda

corrente, injetada pela base da retorta, para recuperar o calor do xisto já retortado.

Page 23: Configuracion PI.pdf

8

Figura 2 – Processo Petrosix

Nas zonas de aquecimento e secagem, a massa gasosa ascendente cede

calor ao xisto e se resfria, resultando na condensação dos vapores de óleo sob a

forma de gotículas, transportadas para fora da retorta pelos gases. Estes, com as

gotículas de óleo, passam por dois outros equipamentos (ciclone e precipitador

eletrostático), onde são coletados o óleo pesado e as partículas sólidas arrastadas

na etapa anterior.

O gás limpo de neblina de óleo (ou seja, das gotículas de óleo pesado

condensadas durante a retortagem) passa por um compressor e se divide em três

correntes: uma retorna para o fundo da retorta, outra também volta à retorta após

ser aquecida em um forno, e a terceira, denominada gás produto, vai para um

condensador onde o óleo leve é recuperado. Depois de retirado o óleo leve, o gás é

encaminhado à unidade de tratamento de gás para a produção de gás combustível

de xisto e para a recuperação do GLX (gás liquefeito de xisto) e do enxofre.

Page 24: Configuracion PI.pdf

9

Figura 3 – Unidade de extração do óleo de xisto (retorta)

O óleo produzido é vendido diretamente para as indústrias e também é

enviado para a REPAR, Refinaria do Paraná. A nafta é toda processada pela

refinaria, produzindo gasolina. O GLX e o enxofre são vendidos diretamente para

terceiros.

Terminado o processo de retirada do óleo e gás da rocha, o xisto, agora dito

“retortado”, é devolvido à área minerada que será reabilitada.

2.2.2: Gerência de Pesquisa – GEPES

Desde sua criação em 1954, a SIX vem atuando como um centro de

desenvolvimento de tecnologia, inicialmente para o aproveitamento do xisto e a partir

de 1991 em outros projetos, principalmente na área de refino, trabalhando em

conjunto com o Centro de Pesquisas da Petrobras – CENPES.

Com a implantação do Programa de Desenvolvimento de Tecnologias

Estratégicas de Refino (Proter), que busca compatibilizar a maior oferta de petróleos

nacionais com o aumento da demanda de combustíveis e da sociedade pela

melhoria do ar e dos produtos, a SIX passou a trabalhar nas áreas de craqueamento

Page 25: Configuracion PI.pdf

10

catalítico, desasfaltação, hidrogenação e no desenvolvimento de novas rotas para o

aproveitamento do coque e do resíduo asfáltico.

Assim, a SIX sedia um dos maiores esforços de desenvolvimento tecnológico

do país e vem realizando estudos para desenvolvimento de processos e

equipamentos, possuindo diversas plantas piloto, entre as quais destacamos:

2.2.2.1: Unidade Multipropósito de FCC

Estuda o craqueamento catalítico de petróleos nacionais;

Testa e desenvolve equipamentos como ciclones, riser, regenerador,

resfriador de catalisador e stripper;

Determina a influência de variáveis de processo no rendimento e na qualidade

dos produtos;

Levanta dados de projetos de novas unidades de FCC de resíduos;

Desenvolve equipamentos e processos, e testa catalisadores.

2.2.2.2: Unidade de Nebulizadores de FCC

Desenvolve dispersores de carga com boa distribuição de vazão, formando

um jato em leque, com tamanho e distribuição de gotículas controlados, alta

durabilidade, facilidade de contração, baixo consumo de fluido de atomização

e baixo diferencial de pressão.

2.2.2.3: Unidade de Hidroconversão de Resíduos

Desenvolve tecnologia de hidroconversão, que maximiza a produção de

diesel com qualidade, a partir do resíduo de vácuo de Petróleo Marlim.

2.2.2.4: Unidade a Frio de Ciclones

Avalia novas concepções e novas geometrias de ciclones;

Avalia novas condições operacionais e desenvolve ciclones de alta eficiência,

baixa perda de carga e elevado fator operacional.

Page 26: Configuracion PI.pdf

11

2.2.2.5: Unidade de Recirculação de Catalisador

Pesquisa para propiciar aumento da taxa média de utilização do parque de

refino;

Pesquisa materiais e desenvolve equipamentos para unidades de alto

desempenho e refino de petróleo nacional, com ênfase na conversão de

resíduos.

2.2.2.6: Unidade de Destilação

Produz cortes de gasolinas especiais de competição, especialmente para a

Fórmula 1;

Produz cortes de petróleo para estudo da qualidade e rendimentos dos

produtos;

Avalia internos de torres.

2.2.2.7: Unidade de Desasfaltação

Estuda a influência das variáveis operacionais na qualidade e rendimento dos

produtos;

Avalia o desempenho de solventes com diferentes composições;

Realiza testes de co-processamento e outros produtos na carga de

desasfaltação;

Faz a avaliação de internos de torres;

Produz cortes pesados para estudos de produção de asfaltos especiais.

2.2.2.8: Unidade de Pneus

Armazena e promove a dosagem correta de pneus picados à carga de

minério. O processo Petrosix permite a reciclagem de 140 mil toneladas/ano,

ou o equivalente a 27 milhões de pneus - 1 tonelada de pneus rende: 532 kg

de óleo, 24 kg de gás, 314 kg de carbono e 110 kg de aço.

Page 27: Configuracion PI.pdf

12

2.2.2.9: Unidade de Tratamento e Misturas

Reverte termicamente o concentrado nitrogenado de gasóleo, viabilizando a

acidificação de cargas para UFCCs;

Utilizada para preparo de misturas diversas, combustíveis para queima e

testes de fornos.

2.2.2.10: Laboratório

O laboratório está preparado para realizar análises elementares completas,

com equipamentos de última geração, tais como:

Espectrômetro de absorção atômica com geração de hidretos, da Varian,

modelo Aa220;

Espectrômetro por quimiluminescência e fluorescência para determinação de

nitrogênio e enxofre, da Antec, modelo NS9000;

Analisador por infravermelho e condutividade térmica para determinação de

carbono, hidrogênio e nitrogênio, da Leco, modelo CHN2000;

Destilador D-86;

Cromatógrafos para destilação simulada (D-2887 e HT750) da HP;

Cromatógrafo para análise de PIANIO - HP 6890;

Bancada de destilação (PEV, POT STEEL e D1150).

Além de executar ensaios de acompanhamento de processos e vendas da

SIX, o laboratório fornece suporte a todas as plantas do Parque Tecnológico, sendo

capacitando a realizar mais de 120 trabalhos e ensaios.

2.2.2.11: Laboratório de Medição de Partículas a Laser

Laser de argônio INNOVA 70C-5, de 5 watts, para medir o tamanho de

partículas (PDPA - phase doppler particle analyser) e sua velocidade no

interior de ciclones (LDV - laser doppler velocimeter).

Page 28: Configuracion PI.pdf

13

2.2.2.12: Laboratório de Combustão

Obtém informações a respeito da queima de diversos tipos de combustíveis e

suas emissões, inclusive particulados;

Testa queimadores, materiais e equipamentos;

Otimiza condições operacionais, em função do combustível e queimador.

2.2.2.13: Unidade de Tratamento Ácido de Gasóleo/ Emulsões

Desenvolve o processo de remoção de nitrogênio básico de cargas de FCC,

visando aumentar a conversão e qualidade dos produtos;

Estuda emulsões diversas e tratamentos de rejeitos industriais.

2.3: Craqueamento Catalítico Fluido

O processo de Craqueamento Catalítico Fluido – FCC (Fluid Catalytic

Cracking) – nasceu em 1942 e apesar de quase 60 anos de amadurecimento

continua sendo uma tecnologia em evolução, sendo atualmente o principal processo

de conversão das frações pesadas de petróleo para produtos leves das refinarias

modernas.

Até 1913, toda a gasolina produzida era obtida por destilação direta do

petróleo, portanto, tanto a qualidade como a quantidade dependiam unicamente do

tipo de cru refinado. Como havia grande variedade de petróleos, havia também uma

grande variação no rendimento e na qualidade das gasolinas. Em média, entretanto,

o rendimento situava-se em torno de 20% em volume.

A partir da segunda década do século, começaram a surgir processos

comerciais de craqueamento, objetivando suprir as necessidades da indústria

automobilística. Iniciando com o craqueamento térmico, o processo mais tarde

passou a utilizar a versão catalítica, em leitos fixo, móvel ou fluidizado,

desenvolvendo-se de forma notável esta última concepção, até atingir o estágio em

que hoje nos encontramos, onde o craqueamento catalítico fluido é praticamente um

processo imprescindível às modernas refinarias.

Page 29: Configuracion PI.pdf

14

O craqueamento catalítico é um processo de refino que visa aumentar a

produção de gasolina e de gás liquefeito de petróleo – GLP, através da conversão

de cortes pesados provenientes da destilação do petróleo (gasóleo e resíduos), em

frações mais leves. É um processo largamente utilizado em todo o mundo, uma vez

que a demanda de gasolina em vários países é superior a dos óleos combustíveis.

O craqueamento catalítico corrige a produção de gasolina e GLP,

suplementando a diferença entre a quantidade obtida diretamente do petróleo e a

requerida pela refinaria de modo a atender ao mercado.

O FCC é hoje um processo largamente difundido em todo o mundo, devido

principalmente a dois fatores. O primeiro deles consiste no fato de contribuir

eficazmente com a refinaria no sentido de ajustar sua produção às reais

necessidades do mercado consumidor local, devido à sua grande flexibilidade

operacional. O segundo fator que tornou consagrado o processo está ligado ao

aspecto econômico, transformando frações residuais, de baixo valor comercial, em

derivados nobres de alto valor.

2.3.1: Descrição Sumária do Processo

O processo consiste na quebra de moléculas pesadas presentes nos

gasóleos e resíduos, por ação de um catalisador à base de sílica-alumina, em altas

temperaturas. A ruptura das ligações possibilita o aparecimento de moléculas leves,

principalmente compostos de 3 a 12 átomos de carbono (GLP e Gasolina), devido à

seletividade do catalisador usado. As reações provocam também a formação, em

menor escala, de gases leves, gasóleos leve e pesado, e coque, este último

depositando-se na superfície do catalisador.

A deposição de coque provoca a desativação do catalisador, devido à

considerável redução da área disponível aos reagentes (hidrocarbonetos). Com o

objetivo de restaurar-se a atividade, o catalisador inativado pelo coque é

continuamente retirado do vaso de reação e enviado a um vaso de regeneração

onde, por intermédio de uma injeção de ar e por ação de alta temperatura, o coque é

queimado, restabelecendo a atividade catalítica. O conjunto reator-regenerador é

denominado conversor.

Page 30: Configuracion PI.pdf

15

Os gases de craqueamento efluentes do reator são encaminhados à seção de

fracionamento, onde, por intermédio de uma torre de destilação, obtém-se uma

separação primária dos cortes produzidos. Pelo fundo da torre produz-se um óleo

pesado, bastante denso, denominado Resíduo de Craqueamento. Esta corrente

também é conhecida como Óleo Decantado ou Óleo Clarificado.

A fracionadora produz, como corte lateral, um óleo leve de faixa de ebulição

semelhante ao diesel conhecido como Óleo Leve de Reciclo (Light Cycle Oil – LCO)

ou Diesel de Craqueamento.

Pelo topo da torre sai uma corrente gasosa composta da nafta (gasolina) de

craqueamento e de hidrocarbonetos mais leves que, uma vez resfriada e

condensada parcialmente, gera no tambor de acúmulo duas correntes. A corrente

gasosa é composta de hidrocarbonetos leves (C1, C2, C3 e C4), enquanto a fração

líquida é constituída de nafta instabilizada (grande quantidade de gases leves

dissolvidos). Ambas as correntes são enviadas à seção de recuperação de gases.

A finalidade da seção de recuperação de gases é, através de operações de

compressão, absorção, retificação e destilação em várias etapas, processar as

correntes de gases e de nafta instabilizada, e dela separar três frações distintas, o

Gás Combustível do Gás Liquefeito – GLP, e o tratamento Merox , tratamento que

remove mercaptanas, que do GLP e da nafta. As mercaptanas são compostos

orgânicos que contém enxofre, do tipo RSH, onde R é um radical orgânico. Esses

compostos causam efeitos negativos na qualidade da gasolina, como mau cheiro e

formação de goma na estocagem da gasolina. O tratamento Merox é também

chamado de adoçamento Merox (Mercaptan Oxidation), e utiliza soda cáustica –

hidróxido de sódio – para remover as mercaptanas através da formação de

dissulfeto. Após essas operações as frações são destinadas à estocagem.

A corrente de gás ácido rico em H2S, proveniente do tratamento DEA,

tratamento que utiliza dietilamina (DEA) para remover compostos indesejáveis

(contendo enxofre) de corrente de gases, principalmente gás combustível, através

da absorção, é normalmente enviado à Unidade de Recuperação de Enxofre (URE),

onde, através de uma queima controlada da corrente gasosa, tem-se então a

produção de enxofre elementar.

Page 31: Configuracion PI.pdf

16

Os gases de combustão provenientes da queima do coque durante a

regeneração do catalisador saem dessa etapa em elevadas temperaturas,

superiores a 700ºC. De modo a aproveitar todo o potencial energético dessa

corrente, ela é encaminhada a caldeiras recuperadoras de calor, onde produzem

vapor de água de alta pressão, resfriando os gases de combustão antes dos

mesmos serem lançados à atmosfera.

A Figura 4 mostra em termo de diagrama de blocos todas as interligações das

várias seções do processo de Craqueamento Catalítico Fluido.

Figura 4 – Diagrama de Blocos do Craqueamento Catalítico

2.3.2: Produtos de Craqueamento

2.3.2.1: Gás Combustível

É composto basicamente de hidrogênio, metano, etano e eteno. Além desses,

podemos encontrar também, em menores proporções, outros gases, como o

propano, propeno, n-butano, iso-butano, n-buteno, iso-buteno, CO, CO2, N2. Os três

últimos compostos citados são provenientes do arraste de gás de combustão pelo

catalisador regenerado.

Page 32: Configuracion PI.pdf

17

Há também uma proporção variável de H2S, gerado pelas reações de

craqueamento dos compostos sulfurados presentes na carga. Este gás, porém, é

removido da mistura gasosa pelo tratamento DEA, de tal modo que o gás

combustível sai praticamente isento de H2S. Este, conhecido como gás ácido, é

enviado à unidade de recuperação de enxofre (URE), onde esse elemento é

produzido.

2.3.2.2: Gás Liquefeito de Petróleo (GLP)

O GLP de Craqueamento basicamente é composto de propano, propeno,

butanos e butenos. Em menores proporções ocorre também a presença de etanos e

pentanos. De forma similar ao gás combustível, também há ocorrência de H2S, que

é eliminado pelo tratamento DEA. Outros compostos de enxofre podem estar

também presentes, tendo seus teores reduzidos através do tratamento Merox.

A Unidade de FCC é a principal responsável pela geração do gás liquefeito

nas refinarias. Especificamente no Brasil isto é de extrema importância, devido ao

grande consumo desse derivado que temos no país.

2.3.2.3: Nafta de Craqueamento

A nafta produzida no FCC, devido à sua composição, é um excelente

componente para a produção de gasolina. Ela é rica em olefinas, isoparafinas e

aromáticos, sendo pobre em naftênicos e n-parafinas. Esta proporção de

hidrocarbonetos conduz a uma gasolina de bom índice de octanagem, bastante

superior aos valores de naftas de destilação e de processos térmicos de conversão.

O teor de enxofre de nafta de craqueamento é alto, necessitando submetê-la

ao tratamento Merox, que reduz o teor daquele elemento, além de diminuir-se e

enquadrar-se devidamente a corrosividade. O elevado valor de enxofre é devido ao

alto teor desse elemento presente na carga. Quando craqueamos cargas com

resíduos, o problema tende a se agravar devido à maior quantidade de enxofre de

natureza aromática, que o tratamento Merox não consegue remover.

O rendimento da gasolina no craqueamento varia de 50 a 65% do volume.

Page 33: Configuracion PI.pdf

18

2.3.2.4: Óleo Leve de Craqueamento (LCO)

O Óleo Leve de Craqueamento (Light Cycle Oil – LCO) é uma fração cuja

faixa de destilação é aproximadamente a do óleo diesel. Ele é constituído de uma

elevada concentração de aromáticos bi e tri nucleados com ramificações, além de

grandes quantidades de olefinas e diolefinas de longas cadeias. Em função dessa

composição, seu número de cetano é baixo, não sendo aproveitado como óleo

diesel.

2.3.2.5: Óleo Decantado

O Óleo Decantado, também conhecido como Óleo Clarificado (ClO), Óleo

Combustível de FCC e Resíduo de Craqueamento, é como o último nome indica, o

produto líquido mais pesado das reações de craqueamento.

Este produto é riquíssimo em hidrocarbonetos aromáticos polinucleados, com

algumas ramificações e olefinas pesadas também ramificadas. Seu maior uso em

refinarias é, à semelhança do LCO, servir como diluente do resíduo de vácuo para a

produção de óleos combustíveis. O Óleo Clarificado, embora bastante denso, é

muito menos viscoso que os resíduos de vácuo.

Devido à elevada aromaticidade, ele tem também uma alta relação

carbono/hidrogênio. Por isso, conforme sua característica, ele pode ser enquadrado

como Resíduo Aromático (RARO), produto este que pode ser vendido às indústrias

petroquímicas especializadas em produção de negro de fumo (carbono coloidal

finamente dividido). O negro de fumo é utilizado como carga para produção de

pneus, plásticos, pigmentos pretos, etc.

2.3.2.6: Gás Ácido (H2S)

A corrente de gás ácido é proveniente do tratamento de gás combustível e do

GLP pela Unidade de Tratamento DEA, sendo rica em H2S, ela é enviada para ser

processado numa URE. O rendimento de gás ácido é bastante variável em função

do tipo de carga processada e das condições de severidade das reações de

craqueamento.

Page 34: Configuracion PI.pdf

19

Devido ao seu alto poder calorífico, sua facilidade de queima, seu caráter

antipoluente (em virtude do baixo teor de enxofre) e sobretudo porque – caso não

seja utilizado – será queimado na tocha, o gás combustível é largamente consumido

em fornos e caldeiras das diversas unidades da refinaria.

2.3.3: Catalisadores para FCC

O catalisador de craqueamento em leito fluidizado desempenha três funções

principais no processo:

Promotor das reações de craqueamento – esta é a principal função do

catalisador no processo. Ele promove a ocorrência de reações de quebra em

condições bem mais suaves do que aquelas requeridas ao craqueamento

térmico. Além disso, a quantidade e a qualidade dos produtos são bastante

superiores ao processo realizado na ausência de catalisador.

Agente de transporte de coque – o carbono depositado na superfície do

catalisador é transportado do reator ao regenerador, onde é queimado,

produzindo energia, sendo esta a principal fonte de calor do processo. Este

efeito é muito importante, pois caso não houvesse o catalisador, o coque

formado tenderia a se depositar no interior dos vasos de reação, acabando

por provocar entupimentos, reduzindo, em conseqüência, o tempo de

operação contínua da unidade. Isto se observa constantemente no

craqueamento térmico.

Agente de transferência de calor – o calor gerado pela queima do coque no

regenerador é parcialmente utilizado no aquecimento do catalisador, elevando

sua temperatura em 100 a 350°C. A circulação do catalisador retira esta

energia do regenerador e a utiliza para aquecer e vaporizar a carga, de modo

a possibilitar e manter as reações de craqueamento.

2.3.4: Carga para Craqueamento

A carga enviada a uma unidade de craqueamento constitui-se em uma das

mais relevantes variáveis deste processo. Suas características influenciam

diretamente na conversão, e em conseqüência, na qualidade e quantidade dos

produtos obtidos pela quebra das moléculas.

Page 35: Configuracion PI.pdf

20

A qualidade da carga é determinada pelos vários tipos e quantidades de

hidrocarbonetos que a constitui, assim como as impurezas que nela estão presentes.

A composição da carga, por sua vez, é influenciada pelas características do petróleo

original e do seu refino. A carga é constituída de hidrocarbonetos parafínicos,

olefínicos, naftênicos e aromáticos nas suas diversas formas e arranjos, além de

outros compostos de caráter orgânico ou não, classificados como impurezas. Dentro

deste último grupo, encontram-se os compostos orgânicos de nitrogênio, oxigênio e

enxofre, juntamente com pequenas quantidades de metais pesados (níquel, cobre,

ferro e vanádio) e alcalinos (sódio, potássio e cálcio).

2.3.5: Variáveis Operacionais

O FCC é um processo no qual devem existir três equilíbrios simultâneos em

sua operação:

Equilíbrio de calor: o excesso de geração de energia causa elevadas

temperaturas, causando danos ao equipamento e ao catalisador. A baixa

geração de energia causa temperaturas insuficientes do catalisador, fazendo

com que as reações não ocorram corretamente.

Equilíbrio de pressões: é fundamental para que o catalisador circule

corretamente e não ocorra inversão do fluxo.

Equilíbrio químico: também chamado de equilíbrio de coque ou balanço de

carbono, consiste na queima do coque gerado na reação. A insuficiência da

queima de coque causa um acúmulo deste no catalisador, o que afeta as

conversões. Por outro lado, a insuficiência na geração de coque afeta o

balanço térmico.

Assim, o Craqueamento Catalítico é um processo bastante complexo devido à

quantidade de variáveis que estão envolvidas. Podem-se classificar as variáveis

operacionais em dois grandes grupos: variáveis independentes (ou de ação direta),

nas quais se atua através de um controlador e variáveis dependentes (ou de ação

indireta), que são alteradas em conseqüência da mudança de alguma variável

independente.

Pode-se citar como variáveis independentes: vazão de carga fresca,

qualidade da carga fresca, atividade do inventário de catalisador, temperatura do

Page 36: Configuracion PI.pdf

21

reator, etc. Como variáveis dependentes podem-se citar: conversão, rendimento dos

produtos, razão catalisador/óleo, circulação de catalisador, tempo de contato,

temperatura da fase densa do regenerador, vazão de ar para combustão, etc.

2.4: Unidade Multipropósito de FCC – U144

Plantas multipropósito são unidades de testes que visam reproduzir condições

operacionais reais. Estas unidades, de porte intermediário entre uma unidade piloto

e protótipo, buscam representar os fenômenos de um processo, sendo adequadas

para estudos de otimização de processos e equipamentos. Entre os objetivos de

uma unidade multipropósito podemos citar:

Aquisição de dados experimentais para desenvolvimento de modelagem

matemática e simulação do processo.

Desenvolvimento de equipamentos e sistemas.

Estudo de processos em novas condições operacionais, por exemplo,

alteração das vazões processadas e de catalisadores.

2.4.1: Descrição Geral

A unidade de FCC visa o aproveitamento de certas frações de petróleo,

transformando-as em frações nobres, como GLP e Gasolina. A unidade

multipropósito estuda, por sua vez, o comportamento do processo, considerando

variáveis como: temperatura, pressão, catalisador, tempo de contato, etc.

As principais características da planta são:

Carga entre 60 e 300 kg/h;

Temperatura de reação entre 460 e 580 ºC;

Temperatura de carga entre 100 e 350 ºC;

Pressão do reator entre 1,0 e 2,5 kgf/cm2 man;

Temperatura de regeneração entre 600 e 730 ºC.

Page 37: Configuracion PI.pdf

22

Figura 5 – Unidade Multipropósito de FCC

A planta é monitorada por um SDCD – Sistema de Controle Distribuído, que

conta com inúmeros indicadores de pressão, temperatura, diferenciais de pressão

com grandes facilidades de acompanhamento.

O riser apresenta quatro pontos de injeção da carga, permitindo variar o

tempo de contato entre 0,5 e 3 segundos com qualquer tipo de carga.

2.4.2: Fluxo de Catalisador

O catalisador percorre um circuito fechado dentro do conversor. O

escoamento se torna possível por toda a massa estar em estado fluidizado, o que se

consegue com ar, hidrocarbonetos vaporizados e vapor de água.

O catalisador regenerado e aquecido escoa do regenerador para a base do

riser. Ao entrar em contato com a carga, fornece calor vaporizando-a, sendo então

arrastado pelos vapores de hidrocarbonetos e vapor de água, através do riser onde

ocorrem as reações de transformação da carga, agregando-se o coque ao

catalisador.

Na saída do riser o fluxo passa por ciclones onde há a separação

catalisador/produtos. O catalisador escoa pelas pernas dos ciclones e deposita-se

Page 38: Configuracion PI.pdf

23

no stripper onde passa por um processo que utiliza vapor de água para a retirada

dos hidrocarbonetos que podem estar presentes no catalisador.

Do stripper o catalisador escoa por uma tubulação para o regenerador, onde

em contato com o ar queima o coque agregado durante as reações, completando-se

o ciclo.

2.4.3: Fluxo de Carga

A carga é pré-aquecida a certa temperatura. A seguir é enviada para os bicos

dispersores, entrando no riser e vaporizando em contato com o catalisador.

Após a passagem pelo riser e pelos ciclones, o gás separado do catalisador

passa para a primeira etapa de condensação. A seguir passa por um segundo

permutador de calor, onde o óleo condensado é armazenado nos tanques e a

corrente gasosa mais os hidrocarbonetos leves passam por um condensador a

freon. O fluxo segue então para os tanques de selagem e em seguida para o flare

onde os gases são queimados.

A carga pode ser injetada no riser em quatro pontos distintos, com o objetivo

de alterar o tempo de contato com o catalisador, como já citado.

Os produtos armazenados durante o teste são amostrados e transferidos para

o tanque de produtos.

2.4.4: Fluxo de Ar

Passando por um aquecedor, o fluxo é aquecido e direcionado para a base do

regenerador onde, através de uma placa distribuidora, entra no equipamento

promovendo a fluidização e queima do coque no catalisador, regenerando-o.

Os gases formados no regenerador passam por ciclones para a separação de

partículas arrastadas do leito, que são devolvidas ao regenerador. O fluxo isento de

sólidos é lançado na atmosfera.

Page 39: Configuracion PI.pdf

24

2.4.5: Fluxo de Vapor

Vapor de Lift: É o vapor utilizado para acelerar o catalisador na base do riser.

O vapor é condensado por um sistema de condensação sendo posteriormente

separado do óleo.

Vapor de dispersão: É o vapor utilizado para atomizar a carga. Entra no “riser”

pelos bicos dispersores, seguindo também com os produtos para o sistema

de condensação sendo posteriormente separado.

Vapor de “estripagem”: É utilizado para remover os hidrocarbonetos presentes

no catalisador, sendo que estes e o vapor saem pelo topo do stripper

somando-se ao fluxo de produtos, seguindo então para o sistema de

condensação.

2.4.6: Fluido de Selagem

Ar e gás inerte servem como fluidos de selagem para o processo em linhas e

válvulas. O gás inerte é pressurizado e armazenado em um vaso pulmão, onde um

compressor garante sua pressão na saída.

2.4.7: Amostrador de Topo e Sistemas de Condensação

Após o craqueamento, sai do riser uma mistura contendo vapores de

hidrocarbonetos, vapor de água, gases e catalisador gasto (com coque). Esta

mistura segue para dois ciclones em série, nos quais o catalisador gasto é separado.

A corrente que segue ao topo da unidade é então composta apenas de vapores e

gases, sendo que uma parte desta segue para o sistema de condensação e outra

parte é desviada para o Amostrador de Topo ou RMS (Reactor Mixer Sampler –

Amostrador da Mistura de Produtos do Reator).

No amostrador de topo, a corrente passa por um permutador a ar,

condensando parte do óleo, que é coletado em um tanque. O restante da corrente

passa por um permutador a água, condensando uma fração menos pesada de óleo,

coletado também no tanque. Finalmente, a mistura não condensada segue para uma

torre de recheio, na qual a neblina restante, que passou com esta corrente, é retida.

O último permutador utiliza freon, sendo condensada a parte mais leve do óleo. O

Page 40: Configuracion PI.pdf

25

gás resultante é coletado e levado para a análise cromatográfica. O óleo (composto

de todas as frações condensadas) também é encaminhado ao laboratório para a

destilação simulada. Para medir a quantidade de gás que passa pelo amostrador de

topo, existe um medidor MGU (Medidor de Gás Úmido).

A outra parte da corrente que sai do ciclone e que não foi desviada ao RMS,

passa por um sistema de condensação semelhante ao do Amostrador de Topo,

porém com os dois primeiros permutadores a água. A vazão de gás é indicada pelo

SDCD, tem sua amostra coletada para análise cromatográfica e é depois queimada

no flare. O óleo condensado é coletado em um tanque, e depois de separado de

grande parte da água, é levado ao laboratório para análise de destilação simulada.

Um fluxograma da Unidade Multipropósito de Craqueamento Catalítico Fluido

encontra-se no Anexo A.

Page 41: Configuracion PI.pdf

26

Capítulo 3: O Sistema PI

O sistema PI (Plant Information) é um conjunto de módulos de software

servidor/cliente desenvolvidos para automatizar totalmente a coleta, armazenamento

e apresentação das informações da planta de um processo, gerenciando essas

operações. Assim, o sistema PI é freqüentemente utilizado como uma integração e

plataforma de desenvolvimento de largas aplicações, tornando-se a ligação principal

entre a área industrial e o escritório.

Ele foi desenvolvido para executar a monitoração e análise de plantas de

processo, servindo como servidor de dados para aplicações cliente. Operadores,

engenheiros e gerentes podem usar as aplicações clientes para visualizar os dados

armazenados no servidor PI.

O PI um sistema que engloba todas as interfaces e ferramentas necessárias

para apresentar em tempo real os inúmeros dados que provêm de dispositivos

normalmente encontrados numa planta. Atualmente o sistema PI conta com mais de

350 interfaces para mais de 500 sistemas de controle.

Muitos nomes são utilizados para fazer referência a essa coleção de módulos

de software. Neste documento, em geral, sistema PI ou simplesmente PI, refere-se

ao sistema como um todo. O servidor ou nó primário é chamado de servidor PI.

O servidor colhe a informação dos nós de coleta de dados, que são

designados para pegar informação diretamente do processo de produção, e

compartilha os dados com a organização, localmente e/ou remotamente.

Figura 6 – Fluxo dos Dados

Page 42: Configuracion PI.pdf

27

O fluxo de dados se dá do processo de produção para o sistema de PI. A

Figura 6 ilustra como os dados fluem do sistema de controle para dentro do arquivo

de dados do servidor PI.

A arquitetura do sistema é o que faz o sistema PI tão robusto e valioso. Tudo

começa com a camada de informações da planta ou do processo de produção, onde

o servidor PI coleta os dados de um número qualquer de fontes. Este servidor, assim

como as bases de dados que estão associadas a ele, é otimizado para realizar a

coleta de informações.

Figura 7 – Arquitetura do Sistema PI na SIX

Page 43: Configuracion PI.pdf

28

3.1: O Armazenamento dos Dados

O sistema de armazenamento dos dados do sistema PI é o PI Data Archive,

arquivo de dados, onde as informações obtidas do processo de produção são

armazenadas.

Para cada variável de processo a ser rastreada, um ponto é definido no

sistema PI. Cada ponto tem aproximadamente 50 atributos. Estes atributos definem

como os dados são coletados e armazenados.

Figura 8 – Processamento de Informações Novas

Observa-se na Figura 8 como no sistema PI o valor mais recente para cada

ponto é conhecido por snapshot, que é uma estrutura de dados na memória principal

que retém só o valor atual de cada ponto, e representa o primeiro destino dos dados

à medida que são coletados.

Figura 9 – PI Snapshot Subsystem

Page 44: Configuracion PI.pdf

29

O segundo destino dos dados são os arquivos de dados do servidor que são

armazenados em disco. Antes dos dados serem armazenados em arquivo eles

podem ser filtrados eletronicamente e estatisticamente. O primeiro desses processos

ocorre no nó ou ponto de coleta dos dados e é chamado de Teste de Exceção,

enquanto o outro é executado pelo próprio servidor PI sendo chamado de

Compressão de Dados. Um esquema sucinto desses processos pode ser

visualizado nas Figuras 10 e 11.

Figura 10 – Fluxo da Exceção à Compressão

Figura 11 – Exemplo do Processo de Filtragem dos Dados

3.1.1: Buferização dos Dados

O sistema de buferização dos dados do sistema PI é composto de dois

buffers de memória (primário e secundário) e um buffer de disco.

Figura 12 – Sistema de Buferização

Page 45: Configuracion PI.pdf

30

A buferização está sempre ativada quando a interface que coleta dados do

SDCD está conectada ao servidor PI, só o buffer primário de memória é ativado,

assim todos os dados são armazenados no buffer primário. Quando a conexão com

o servidor PI é perdida o buffer secundário é ativado. A buferização no disco rígido

apenas é ativada depois que o buffer secundário de memória estiver cheio. A

buferização no disco rígido é utilizada até que o tamanho máximo de arquivo,

previamente determinado, seja atingido.

3.1.2: Teste de Exceção

Uma variável viola o teste de exceção se seu valor difere do valor anterior por

ExcDev (Exception Deviation Specification) ou se o tempo desde a última exceção

for maior ou igual ao ExcMax (Maximum Exception Time). Além disso, nenhum valor

é informado até que o ExcMin (Minimum Exception Time) tenha sido excedido desde

a última exceção. Quando uma variável viola o teste de exceção, então o valor que

violou o teste e o valor anterior são informados.

Figura 13 – Como funciona o Exception Report

3.1.3: Compressão dos Dados

O objetivo da compressão dos dados é manter a tendência original dos

mesmos usando o menor número de pontos, salvando dessa forma espaço em

disco, e mantendo ao mesmo tempo uma precisão extremamente alta sem a

necessidade de armazenar toda a amostra de dados ou de ter que recorrer ao

Page 46: Configuracion PI.pdf

31

cálculo da média ou a técnicas de amostragem periódica para determinar a

tendência dos mesmos.

Figura 14 – Parâmetros de Compressão

A compressão de dados é similar ao teste de exceção onde somente uma

mudança significativa em relação ao valor anteriormente arquivado é armazenada.

Figura 15 – Primeiro Passo da Compressão de Dados

A Figura 15 mostra como o sistema usa o parâmetro CompDev (Compression

Deviation) para "desenhar" um paralelogramo do último ponto arquivado até o valor

atual. A largura do paralelogramo é duas vezes o valor CompDev (um valor de

desvio para cima e um para baixo).

Nesse caso a primeira "zona morta" é desenhada em volta do primeiro ponto

e estendida até o próximo ponto e aos pontos consecutivos. Tal zona também é

chamada de cobertura de compressão.

Page 47: Configuracion PI.pdf

32

Quando qualquer valor fica fora da cobertura de compressão, (fora dos

paralelogramos), o PI armazena um valor no PI Data Archive, como pode ser

observado nas ilustrações a seguir.

Figura 16 – Zona Morta da Compressão

O sistema PI não armazena o valor que cometeu a violação, ao invés disso,

ele armazena o valor anterior.

Figura 17 – Determinação do valor a ser armazenado

Na figura o valor obtido em 12:01:45 viola o teste e o valor de 12:01:30 é

arquivado.

O processo de compressão de dados reinicia novamente a partir do valor que

acabou de ser armazenado, como pode ser verificado na Figura 18.

Page 48: Configuracion PI.pdf

33

Figura 18 – Compressão dos Dados

Finalmente o processo de compressão termina para o exemplo citado. Os

valores circulados são os que serão armazenados em arquivo.

Figura 19 – Resultado Final da Compressão dos Dados

Note que PI não armazena exatamente o que aconteceu, mas sim um bom

senso do que ocorreu com os dados. A precisão da tendência dos pontos

armazenados depende do valor escolhido como desvio de compressão, o CompDev.

3.2: Tags

Cada tag possui uma localização única no sistema PI, e deve ser utilizado

para armazenar fluxos individuais de dados, por exemplo: o fluxo em uma tubulação,

um modo de controlador em operação, um comentário em forma de texto, os

resultados de um totalizador, qualquer coisa que possa ser medida pode ser

capturada utilizando um tag do PI como uma definição.

Page 49: Configuracion PI.pdf

34

Cada tag do PI tem uma série de atributos para descrever as partes

diferentes do sistema. Estes atributos podem ser resumidos pela pergunta que cada

definição tenta responder, como:

• descrever o tag para uma aplicação cliente e para o usuário, determinando

como a informação deve ser exibida;

• descrever o tag para a interface, determinando como e onde a interface

deve coletar a informação para a qual está destinada;

• descrever o tag para o servidor PI, determinando como o servidor deve

armazenar a informação.

Os tags possuem certos atributos que controlam como os dados são exibidos

e manipulados dentro do sistema. Alguns dos atributos mais importantes são:

• Tag name: nome único destinado a cada variável monitorada;

• Descriptor: descrição do tag com no máximo 26 caracteres;

• Point Source: permite agrupamento dos tags segundo a interface de dados

utilizada (SDCD, CLP, ou outras fontes). O valor padrão é K para pontos

da Pesquisa;

• Zero, Span e Typical value: valor mínimo, escala e valor típico;

• Step: mostra a informação como ZOH (Zero Order Holder – Interpolação

de Ordem Zero) ou como uma interpolação linear;

• Location#: define o endereço da informação no SDCD:

o Location1: contém o número da interface, normalmente, o

número da interface deve coincidir com o número lógico utilizado

pelo software da ABB/Bailey;

o Location2: deve ser igual a (INFI90 Loop Number * 256) + PCU

Number;

o Location3: INFI90 Module Number;

o Location4: INFI90 Block Number;

o Location5: especifica o tipo de ABB/Bailey Point Type que será

lido, com por exemplo: analog, digital, station, RCM, etc.

Page 50: Configuracion PI.pdf

35

• PtOwner, PtGroup, PtAccess: controla os usuários que podem modificar

ou ver os atributos dos tags;

• DataOwner, DataGroup, DataAccess: controla quem pode ler ou escrever

dados;

• Compression Specification: controla como a informação é arquivada;

• Exception Specification: controla como os dados e o ruído são filtrados

para obter-se um fluxo de dados limpo e significante.

3.3: Acesso aos Dados

O sistema PI permite a coleta de dados através de uma grande variedade de

nós de rede. Essa estrutura distribuída oferece muitas vantagens sobre uma

estrutura monolítica, incluindo escalabilidade, robustez e flexibilidade.

Ele dispõe de ferramentas que possibilitam a criação de novos aplicativos

para realizar o acesso aos dados, como:

• PI-API (Application Program Interface - C-style function library)

• PI-SDK (Software Development Kit - COM-based object oriented module)

• PI ODBC / PI OLEDB

• PI Interfaces (Read/Write Interfaces - exemplo: interface semAPI)

3.3.1: PI-API

O PI-API provê uma interface comum de programação para o sistema PI. É

uma biblioteca de funções que permite acessar o sistema PI para leitura e gravação.

A própria OSIsoft (fabricante do PI System) utiliza essa biblioteca para criar as

interfaces para várias plataformas.

Usuários licenciados podem criar suas próprias aplicações fazendo uso dela.

O PI-API é uma biblioteca de funções que pode ser chamada a partir de linguagens

de programação como C, C++, Visual Basic, Delphi, etc. Estas funções permitem ler

e escrever valores no servidor PI, além de alterar ou obter configuração de pontos.

Page 51: Configuracion PI.pdf

36

Figura 20 – Máquina Cliente com PI-API

Todas as aplicações clientes da OSIsoft são escritas usando o PI-API, o PI-

SDK ou uma combinação dos dois para comunicação com o servidor PI. Elas

comunicam-se com o servidor PI através do protocolo de rede TCP/IP. Entre os

softwares clientes disponibilizados pela OSIsoft estão: PI-ProcessBook, PI-DataLink,

PI-BatchView, PI-SQC, etc.

O arquivo "piapi32.bas" contém todas as funções, procedimentos e definições

de tipos de variáveis da biblioteca PI-API. As funções do PI-API são divididas em

grupos:

• PIAR: Archive functions (read and write)

• PIBA: PI Batch functions

• PIEL: Event Log functions

• PILG: Common dialog boxes & Message logging

• PIPT: Point database functions

• PISN: Snapshot functions (read and write)

• PITM: Time functions

• PIUT: Utility functions

Page 52: Configuracion PI.pdf

37

3.3.2: Utilitários Clientes

Podem-se utilizar as aplicações clientes do PI para acessar os dados

armazenados no servidor: PI-ProcessBook, PI-DataLink, PI-ManualLogger, PI-

ControlMonitor, PI-BatchView, PI-ActiveView, PI-SQC, PI-SMT, PI-AlarmView, etc.

• PI-ProcessBook: aplicação que possibilita ao usuário construir e visualizar

telas de processos, gráficos e valores das variáveis envolvidas. É um

pacote gráfico fácil de utilizar, que permite criar gráficos dinâmicos,

gráficos interativos mostrando dados em tempo real. Também permite que

sejam criadas telas de processo para acompanhamento em tempo real.

• PI-DataLink: add-in para Microsoft Excel que possibilita a visualização de

valores do sistema PI de diversas formas, bem como copiá-los para uma

planilha para realizar análises adicionais. As funções do PI-DataLink são

acessadas dentro do Microsoft Excel por um menu que aparece depois

que o add-in é instalado. Com PI-DataLink, um usuário pode trocar

informação diretamente com o banco de dados do PI. Essa ferramenta

combinada com a funcionalidade da planilha eletrônica faz com que o PI-

DataLink seja um utilitário poderoso e fácil de usar por reunir, analisar e

relatar dados do PI.

Existem ainda ferramentas de gerenciamento do Sistema PI (PI System

Management Tools), como o PI Tag Configurator e o PI Point Builder.

• PI Tag Configurator: add-in para Microsoft Excel para criação e

manutenção de tags.

• PI Point Builder: aplicação para criação de tags e manutenção de tabela

de estados digitais.

Page 53: Configuracion PI.pdf

38

Figura 21 – PI Tag Configurator – add-in para Microsoft Excel

Figura 22 – PI Point Builder

Page 54: Configuracion PI.pdf

39

3.3.3: Interface semAPI

Interfaces são módulos de software para coleta de dados de sistemas

externos, como pode ser visto na Figura 23 .

Figura 23 – Interface – Intermediador na Coleta de Dados

As origens típicas de dados são SDCDs, CLPs, e sistemas de laboratório. A

interface utilizada na coleta de informação da Unidade de FCC onde o trabalho foi

desenvolvido chama-se ABB/Bailey semAPI.

A interface é o dispositivo necessário para realizar a comunicação entre o

processo de produção e o servidor PI. Essa função pode ser facilmente identificada

na figura a seguir.

Figura 24 – Esquema do Interfaceamento ABB/Bailey-PI semAPI

Page 55: Configuracion PI.pdf

40

A comunicação utilizando a interface semAPI exige o software semAPI Run-

Time da ABB/Bailey, o módulo de interface com o computador, e ainda o software

Blysem da interface PI-Bailey semAPI da OSIsoft.

O semAPI Run-Time da ABB/Bailey manipula em baixo nível os protocolos de

comunicação e o trânsito de dados da rede INFI90 da ABB/Bailey, disponibilizando-

os em alto nível para a interface. Isto é necessário uma vez que os protocolos de

baixo nível são proprietários e sua documentação não é fornecida por se tratar de

segredo industrial.

A interface trabalha com o módulo de interfaceamento com o computador

INICI03 que é conectado ao computador via conexão SCSI. O módulo INICI03

consiste de três módulos: INICT03 Computer Transfer, INNIS01 Network Interface,

IMMPI01 Multifunction Processor Interface.

Figura 25 – Módulo/Cartão de Comunicação INICI03

A interface PI-Bailey semAPI fornece uma transferência de dados bidirecional

entre o sistema PI e a rede ABB/Bailey INFI90. Essa interface foi desenvolvida para

tirar proveito da biblioteca semAPI da ABB/Bailey. A interface controla todo o

protocolo de comunicações da ABB/Bailey, tornando assim possível que o sistema

PI se comunique com os módulos INICI da ABB/Bailey por uma série de métodos

como: conexão serial, Ethernet, e SCSI.

Page 56: Configuracion PI.pdf

41

Figura 26 – Estrutura do Interfaceamento ABB/Bailey-PI semAPI

Todos os dados lidos pela interface vêm de relatórios de exceção do sistema

ABB/Bailey, que gera um relato de exceção sempre que o valor ou status de uma

variável muda, ou quando um limite específico de tempo foi atingido desde o último

relato.

A topologia de rede usual utilizada pela interface é a ponto-a-ponto, sendo

que o software semAPI e o processo da interface estão no mesmo computador. O

computador é fisicamente conectado por um cabo SCSI ao cartão de comunicação

da ABB/Bailey, e este cartão está conectado à rede INFI90 da ABB/Bailey.

3.3.3.1: Seqüência de Ações da Interface

A seqüência de operações da interface após a inicialização é a seguinte.

• A interface obtém todos os tags de um respectivo PointSource e processa

somente aqueles tags cujo atributo onde é descrito o número da INICI

coincide com aquele que foi passado para ela como parâmetro na sua

inicialização. No caso da U144, o PointSource é “K” e o número da INICI é

2. A interface cria então uma lista indexada pelo número do pointID da lista

de tags.

Page 57: Configuracion PI.pdf

42

• A interface tenta iniciar a comunicação com o módulo de comunicação da

ABB/Bailey. Quando a comunicação é estabelecida, a interface cria um

device driver que manipula fisicamente e em baixo nível os protocolos de

comunicação.

• A interface então estabelece os tags na tabela do módulo de comunicação

da ABB/Bailey. Após todos os dados serem estabelecidos e conectados, a

interface entra na fase de coleta de dados.

• A interface mantém a leitura dos exception reports até o número máximo

de exceções especificada na inicialização da interface.

• Se mais de dois minutos se passarem desde a última leitura na tabela de

pontos, a interface verifica se houveram alterações nesta tabela e

promove então a alteração em sua tabela interna, adicionando, deletando

ou atualizando os atributos dos pontos.

• Os dois últimos passos são repetidos continuamente enquanto a interface

estiver rodando.

• Se a interface encontrar dez erros consecutivos durante a coleta de dados,

então ela volta para o início do procedimento, tentando iniciar a

comunicação com o módulo de comunicação da ABB/Bailey.

3.3.3.2: Inicialização da Interface

A interface permite que a sua inicialização seja customizada visando atender

às necessidades de cada sistema. Os parâmetros mais importantes a serem

especificados no script de instalação da interface são os seguintes:

/host=X especifica o nome do host do PI Server

/id=X ID da Interface

/ps=X pointsource para a interface

/ec=X contador da taxa de I/O

/sn ao usar este parâmetro haverá tratamento de exceção do PI sobre os exception reports da ABB/Bailey

/in=X número da interface, deve coincidir com o atributo location1 da configuração dos tags do PI

/ici=X número da ICI da ABB/Bailey

/to=X ICI timeout (O cartão de comunicação fica offline após não receber mensagem da interface por este período)

/fm=X modo de redundância , 1 primária, 2 for secundária

Page 58: Configuracion PI.pdf

43

/dl=X intervalo entre varredura das exceções da ABB/Bailey

/me=X número máximo de exceções por interação

/mp=X número máximo de pontos para esta interface

/ef=X exception screening 0=default=não

/ts=X sincronização de tempo 1 -> pi master, -1 -> ABB/Bailey master

/f=X taxa de scan

3.4: Sistema de Controle Distribuído – SDCD

O Sistema de Controle Distribuído – SDCD, muito embora não faça parte do

sistema PI como um todo, é o responsável pela coleta de dados tanto analógicos

quanto digitais na área de produção. Os dados enviados para o SDCD pelos

dispositivos de campo são os mesmos repassados em tempo real para interface que

enviará os dados para o PI Data Archive. Assim, faz-se necessário uma explicação

sucinta do que é o Sistema de Controle Distribuído.

O SDCD, lançado em meados da década de 70, tinha a função de

automatizar uma planta por completo, substituindo os painéis dos controladores

(variáveis analógicas) assim com os de relés (variáveis digitais).

Os SDCDs, flexibilizaram o tamanho de seu hardware de forma a atender

aplicações de pequeno/médio portes e também “abriram” o seu sistema viabilizando

a comunicação com qualquer hardware/software do mercado. Eles foram concebidos

de forma a permitir a escalabilidade do sistema e também a operação ininterrupta do

processo, possibilitando a inclusão de cartões de I/O e a redundância dos mesmos

sem a parada da CPU do sistema.

Os Sistemas de Controle Distribuído têm sido usados em aplicações que

exigem um controle de processo em larga escala, onde é possível rodar várias

operações complexas para uma variada gama de processos diferentes.

A utilização de SDCDs reduziu o uso de computadores centralizados, e,

dentro deste conceito distribuiu a IHM (Interface Homem Máquina), o controle lógico

e a base de dados em diferentes placas de circuito dentro do computador, reduzindo

assim o risco de falhas do sistema como um todo.

Page 59: Configuracion PI.pdf

44

Capítulo 4: Etapas do Trabalho Desenvolvido

O trabalho desenvolvido no setor de Pesquisa da Unidade de Industrialização

do Xisto, dividiu-se em etapas. De maneira geral, após a conclusão de cada etapa

proposta, novos desafios foram sendo sugeridos.

4.1: Instalação e Configuração da Interface

O principal problema no início do trabalho desenvolvido na SIX foi identificado

na interface de coleta de dados do sistema PI, que não estava coletando

corretamente os dados provenientes do SDCD. O problema poderia estar

relacionado:

• aos softwares instalados no computador da interface;

• ao hardware da interface;

• ao cabo SCSI conectado ao SDCD;

• ou ainda, ao próprio cartão de comunicação INICI03 do SDCD.

Devido à urgência de solução do problema da interface, deu-se início a um

estudo específico sobre a instalação e a configuração da mesma.

A instalação dos softwares e hardwares da ABB/Bailey foi realizada

anteriormente pelo serviço de suporte da mesma em um computador destinado a ser

a interface entre o SDCD e o servidor PI, o qual estava localizado ao lado do

gabinete do SDCD.

Primeiro foi realizada a instalação do cartão de comunicação INICI03 no

gabinete do SDCD da U144. Depois se deu a instalação de placa SCSI 2940 na

interface e seus respectivos drivers com a interligação da placa com o hardware do

gabinete através de cabo SCSI padrão. Por último ocorreu a instalação do software

semAPI Run-Time da ABB/Bailey.

Junto com o pacote semAPI Run-Time da ABB/Bailey, o programa ICICONF

tem como aplicabilidade definir um ICI lógico para cada módulo INICI instalado.

Page 60: Configuracion PI.pdf

45

O software key é um alfa-numérico longo e o user string é normalmente igual

a "LICENSE01". Esses dois parâmetros são fornecidos pela ABB/Bailey. Eles

precisam ser inseridos em três lugares. A chave do software deve ser inserida no

aplicativo LICENTRY. E o user string precisa ser inserido tanto no aplicativo

LICENTRY como no ICICONF. Se os parâmetros corretos não forem utilizados, a

interface não conseguirá conectar ao cartão de comunicação INICI.

Figura 27 – Tela do LICENTRY

No computador da interface está instalado o aplicativo ICICONF, que define o

ICI lógico para cada módulo INICI. Ao tentar-se descobrir por que a interface não

estava coletando os dados corretamente, um dos problemas detectados foi a má

configuração do aplicativo ICICONF que foi então configurado como na Figura 28,

onde:

• Application Logical ICI = 2 (isso porque na produção já existe um ICI lógico

denominado 1)

• Physical ICI Device = S000: (endereçamento reconhecido pela interface

para o cartão de comunicação ao qual ela está conectada por um cabo

SCSI)

Page 61: Configuracion PI.pdf

46

• Physical Connection Type = SCSI (o computador da interface possui uma

placa SCSI conectada por um cabo SCSI ao cartão de comunicação

INICI03 do SDCD)

• Name/Address of Node = P28110179L (é o nome do computador da

interface reconhecido pela rede corporativa TCP/IP. Aqui também poderia

ser definido o IP da máquina ao invés do nome).

• Network Communication Protocol = TCP/IP (tipo de rede de comunicação

entre a interface e o servidor)

• License String = LICENSE01 (nome do arquivo *.sla que contém os dados

da licença da interface)

• TCP/IP Port = 3001 (número da porta utilizada para comunicação).

Figura 28 – Tela do ICICONF

Após a realização da configuração correta do aplicativo ICICONF, deu-se

continuidade ao trabalho que envolveu três etapas distintas:

• Instalação do PI-API, um pré-requisito para a instalação da interface, e do

sistema de buferização da interface semAPI, efetuado durante a instalação

do PI-API.

Page 62: Configuracion PI.pdf

47

• Instalação da interface PI-Bailey semAPI (blysem.exe) com os parâmetros

específicos para a o sistema ABB/Bailey da pesquisa, com a configuração

do startup da interface.

• Adequação da tabela de proxys do servidor para permissão de acesso da

interface ao servidor (etapa realizada pelo responsável pelo servidor PI da

SIX).

A instalação do PI-API foi simples, de forma que apenas bastou seguir os

passos definidos pelo arquivo de setup, não envolvendo qualquer segredo. O

procedimento de instalação da interface PI-Bailey semAPI foi o seguinte:

• Criou-se o diretório C:\PI\interfaces\blysem#\, onde “#” deveria

corresponder ao número da interface que foi especificado usando o

parâmetro /id no arquivo blysem#.bat. Foram copiados os arquivos

blysem.exe e blysem.bat para o disco rígido, de forma que os dois foram

chamados de blysem#.exe e blysem#.bat, de acordo com o que foi

mencionado acima. As linhas de comando do arquivo blysem#.bat foram

configuradas para customizar a interface.

O código do arquivo blysem2.bat da interface que coleta e transfere

corretamente os dados pode ser visualizado a seguir:

-------------------

rem BLYSEM2.bat 22/10/2003

rem Os parametros a seguir sao da interface da pesquisa

rem ICI=2 (numero do ICI)

rem PointSource tipo K (da pesquisa)

rem IN=2 (respectivo location1 - parametro das tags tipo K no PI Server)

rem ID=1 (ICI primario, nao reduntante)

rem com output habilitada

rem f sao definicoes de scan classes

rem ec = io rate counter (utilizado se necessario)

rem to = ICI timeout

rem me = numero maximo de excecoes por iteracao

rem outros parametros setados como default.

blysem2.exe /host=S2811AU02:5450 /id=1 /ec=1 /ps=K /in=2 /ici=2 /me=1000 /to=180 /f=00:00:15,00:00:00 /f=00:00:30,00:00:00 /f=00:00:45,00:00:00 /of=1 /q /stopstat

-------------------

Page 63: Configuracion PI.pdf

48

A interface foi testada ao executar-se o arquivo *.bat, verificando-se se os

dados estavam sendo transferidos corretamente para o arquivo de dados do PI no

servidor. Essa verificação foi feita utilizando-se o aplicativo para MS-DOS

apisnap.exe. Além disso realizou-se uma varredura por mensagens de erro no

arquivo pipc.log.

Quando foi verificado o correto funcionamento da interface, a mesma foi

configurada para rodar como um serviço do Windows, inicializando de maneira

automática junto com o computador.

Para instalar a interface como um serviço do Windows era necessário saber

se o serviço de buferização (Bufserv) seria utilizado ou não. O propósito do Bufserv

é continuar a coleta de dados da interface caso o servidor esteja desligado por

algum motivo. Sabe-se que o serviço de buferização foi instalado juntamente com o

PI-API quando o mesmo foi instalado.

A interface foi instalada como um serviço automático, executando-se a linha

de comando abaixo no prompt de comando:

> blysem2 -install -auto -depend "tcpip DD_<device name> bufserv"

> blysem – start

O parâmetro DD_<device name> faz referência ao nome do dispositivo

setado durante a configuração do aplicativo ICICONF.

Durante os testes para verificar se a interface estava funcionando

corretamente foi utilizado o utilitário bufutil.exe, para verificar se o serviço de

buferização, caso o servidor estivesse desligado por algum motivo, estava

funcionando corretamente, como pode ser observado nas Figuras 29 e 30.

Page 64: Configuracion PI.pdf

49

Figura 29 – Buffer Primário de Memória sendo utilizado

Figura 30 – Buffer Secundário de Memória sendo utilizado

Além dos testes realizados sobre o sistema de buferização da interface, foram

realizados testes onde o objetivo era verificar se a interface estava repassando

corretamente os dados para o servidor PI. Tais testes foram realizados utilizando-se

os aplicativos PI-ProcessBook e apisnap.exe, que remetiam em tempo real os

valores atuais das variáveis que foram comparados com os valores obtidos pelo

software supervisório da ABB/Bailey, para verificar se os mesmos eram iguais.

Page 65: Configuracion PI.pdf

50

4.2: Criação de Planilhas para Automação de Tarefas Repetitivas

Quando foi obtido o funcionamento correto da interface de coleta de dados do

sistema PI, a etapa seguinte foi a configuração dos tags no servidor e a utilização

dos dados coletados segundo a necessidade da Gerência de Pesquisa.

Para isso foram criadas diversas planilhas eletrônicas utilizando o aplicativo

Microsoft Excel para automação das tarefas repetitivas. Entre as planilhas mais

importantes criadas estão as citadas a seguir.

4.2.1: Cálculo de Atributos dos Tags a partir do BD do SDCD

A planilha eletrônica responsável pelo cálculo dos atributos dos tags a serem

enviados para o servidor PI, foi desenvolvida de maneira que utiliza dados

provenientes do banco de dados do SDCD da ABB/Bailey, para promover a correta

configuração dos atributos. Para isso faz-se necessário que as localizações dos

pontos no SDCD sejam definidas com precisão, para que não haja erro ao buscar o

valor das variáveis.

Figura 31 – Guia EngUnits

Page 66: Configuracion PI.pdf

51

Dentro da planilha as guias "EngUnits" e "BayleyPointType" não devem ser

alteradas, pois apenas servem de referência para a guia "BD SDCD" executar os

cálculos. Todas as guias da planilha foram interligadas, dessa forma uma guia pode

depender das outras para efetuar os cálculos para os quais foi designada.

Figura 32 – Guia Bailey PointType

A guia "BD SDCD" deve ser editada com dados obtidos do banco de dados

do SDCD a ser obtido com o operador responsável. Os dados a serem inseridos

nessa guia são: TAGNAME, TAGDESC, TAGTYPE, PV/UNITS, PV/LOW, PV/HIGH,

LOOP, PCU, MODULE, BLOCK.

Além disso a guia “BD SDCD” é responsável por retirar das guias

anteriormente citadas, os valores para as colunas “Bailey Point Type”, “Unidades”, e

“Point Type”. Para isso foram utilizadas funções como “INDEX” e “MATCH”, para

correlacionar as tabelas e os valores armazenados nelas.

Assim, por exemplo, se uma variável possuía seu “TAGTYPE” igual a

“ANALOG”, então seu “Bailey Point Type” seria igual a 5. Da mesma forma as

“Unidades” de uma variável foram buscadas pelo valor do seu “Unit_ID”, e o “Point

Type” da variável foi determinado pelo “TAGTYPE” dela.

Page 67: Configuracion PI.pdf

52

Figura 33 – Guia BD SDCD

Na guia "Cálculo para Exportar", os outros atributos (locations, zero, span,

typicalvalue, engunits, excdev, compdev, compmin, compmax, compressing,

pointtype) são calculados a partir dos dados previamente obtidos.

Figura 34 – Guia Cálculo para Exportar

Page 68: Configuracion PI.pdf

53

Assim, a guia "Cálculo para Exportar" está pronta para ser exportada para o

servidor com os tags devidamente definidos e seus parâmetros devidamente

calculados.

Para exportar os dados calculados para o servidor, utiliza-se o utilitário PI-Tag

Configurator, um add-in para Microsoft Excel, fornecido pela OSIsoft.

4.2.2: Cálculo de Estados Digitais

Utilizando o mesmo princípio da planilha anteriormente citada, foi

desenvolvida uma planilha responsável pelo cálculo do estado digital das variáveis

coletadas pelo servidor PI.

Figura 35 – Estados Digitais Lógicos

Como pode observar-se na Figura 35, essa planilha utiliza-se de uma tabela

de estados digitais lógicos que são retornados pelo SDCD. Além disso, como pode

verificar-se na guia seguinte, a planilha também depende dos atributos LS0 à LS3

retirados do banco de dados do SDCD.

Page 69: Configuracion PI.pdf

54

Figura 36 - Estados digitais de cada tag digital

O mecanismo de cálculo dos estados digitais está baseado na busca pela

correspondência na tabela de estados lógicos, do valor encontrado nas colunas LS0

a LS3, preenchendo assim as colunas ZERO, UM, DOIS e TRÊS.

Assim, os valores digitais 0 e 1 monitorados pelo sistema PI, podem ter

significados diferentes como: abre e fecha, início e fim, ligado e desligado, etc.

4.2.3: Cálculo de Valores Atuais das Variáveis

O monitoramento dos valores atuais das variáveis através de planilha

eletrônica é feito utilizando-se uma funcionalidade fornecida pelo add-in para

Microsoft Excel, PI-Data Link. Esse add-in disponibiliza inúmeras funções para

monitoramento e inserção de dados diretamente no servidor.

Page 70: Configuracion PI.pdf

55

A função PICurrVal , como se verifica na Figura 37, retorna o valor atual das

variáveis solicitadas, a partir do conhecimento do tag, ou seja, o nome das mesmas.

Figura 37 – Retorno de Valor Atual das Variáveis

O desenvolvimento das planilhas eletrônicas que otimizaram diversas tarefas,

ocorreu de forma gradativa e concomitantemente à realização de outras atividades.

4.3: Criação de Telas de Processo

A criação de telas de processo deu-se devido a necessidade de

monitoramento do que estava acontecendo na área, sem que fosse necessário ir até

a mesma para acompanhar o processo, ou ainda, sem que fosse necessário acessar

o software supervisório da ABB/Bailey para obter informações em tempo real.

Todas as telas de processo criadas foram disponibilizadas num servidor na

intranet da SIX. Para que pudessem ser acessadas bastava mapear nos

computadores o endereço de rede onde essas telas estão armazenadas. Para

Page 71: Configuracion PI.pdf

56

visualizá-las o usuário precisava possuir o aplicativo PI-ProcessBook instalado em

seu computador.

Figura 38 – Lista de telas do PI-ProcessBook

O processo de criação de telas do PI-ProcessBook para monitorar processos

em tempo real, envolvia os seguintes passos:

• Inserção de um novo Display (Menu File > New > ProcessBook Display

(.pdi) File > OK), onde se pode definir o nome do Display a ser criado,

entrando com o mesmo na caixa de texto ProcessBook Name.

• No novo Display pode-se montar o processo utilizando as bibliotecas do

PI-ProcessBook, fazendo-se desenhos, ou utilizando panos de fundo. No

caso das telas criadas foram utilizados panos de fundo retirados do

software supervisório da ABB/Bailey e editados, como se verifica na Figura

39.

Page 72: Configuracion PI.pdf

57

Figura 39 – Comparação entre telas de processo

• Para utilizar o pano de fundo, é preciso certificar-se de que a imagem a

ser utilizada como pano de fundo tenha sido salva como "256 Color

Bitmap", "16 Color Bitmap" ou "Monochrome Bitmap", isso porque se a

imagem for salva como "24-bit Bitmap" a mesma perderá resolução ao ser

inserida como pano de fundo no display do PI-ProcessBook.

• Os campos onde são mostrados os valores atuais das variáveis de

processo a serem monitoradas em tempo real, são adicionados a partir do

Menu Draw > Value, quando uma janela abrir-se-á e poder-se-á definir o

servidor, o nome da variável a ser monitorada, o formato do número, etc.

• A inserção de links de uma tela de monitoramento para outra, é realizada

a partir da inserção de um botão que aponte para o caminho correto. Para

inserir um botão utilize o Menu Draw > Button. Uma janela aparecerá onde

se pode definir o nome do botão, o tipo de comando a que ele estará

relacionado, no caso de criar um link para outra tela escolhe-se a opção

Linked Display. Em Action Item deve-se a definir qual tela aparecerá ao

Page 73: Configuracion PI.pdf

58

clicar o botão, e por fim ainda pode-se escolher se esta ação abrirá uma

nova tela ou permanecerá na mesma.

Ao todo foram criadas 49 telas de processo e 12 telas de gráficos. Exemplos

são mostrados abaixo.

Figura 40 –Tela de Processo Geral criada no PI-ProcessBook

Page 74: Configuracion PI.pdf

59

Figura 41 – Tela criada no PI-ProcessBook

Figura 42 – Gráfico do PI-ProcessBook

Page 75: Configuracion PI.pdf

60

4.4: Desenvolvimento de Aplicativos em Visual Basic

O trabalho final que foi executado para a Gerência de Pesquisa da SIX, foi o

desenvolvimento de aplicativos em Visual Basic objetivando otimizar e automatizar o

monitoramento das variáveis do processo de Craqueamento Catalítico Fluido, e a

inserção de dados de laboratório no servidor PI.

A primeira etapa do desenvolvimento dos aplicativos, foi o estudo da

linguagem de programação Visual Basic. A escolha dessa linguagem de

programação deu-se pelo fato de que já existiam softwares de balanço de massa e

energia que utilizavam essa linguagem em operação na U144.

O objetivo inicial era desenvolver uma rotina em Visual Basic, a qual seria

inserida nos aplicativos UMProcess/DataLab e UMProcess/BME, para que os

mesmos enviassem automaticamente os valores de balanços por eles calculados

para serem armazenados no servidor PI juntamente com as outras variáveis

referentes ao processo de FCC coletadas pelo SDCD.

Foram desenvolvidos dois softwares, PI Tag Monitor e PI Data Insert. O

primeiro responsável pelo monitoramento amigável, em tempo real ou não, das

variáveis armazenadas no servidor. E o segundo, responsável pela inserção de

dados de laboratório no servidor.

4.4.1: PI Tag Monitor

O aplicativo PI Tag Monitor foi elaborado para efetuar o monitoramento dos

dados do servidor PI a partir da coleta em tempo real dos mesmo. A maior

dificuldade encontrada durante a elaboração do aplicativo foi a escolha de uma

função que melhor se adequasse ao monitoramento correto de todos os tipos de

variáveis. A única função do módulo piapi32.bas que coletava corretamente as

variáveis do tipo string era piar_getarcvaluex.

É possível realizar uma procura pelas variáveis desejadas e mostrar seus

valores corretos, independente dos seus pointtypes (float32, int32 ou string), de

acordo com o timestamp definido pelo usuário.

A seguir são apresentadas telas passo a passo do aplicativo em

funcionamento. A Figura 43 mostra a tela inicial do programa, onde se entra com o

Page 76: Configuracion PI.pdf

61

nome do servidor na caixa de texto, e clica-se no botão Conectar, para que a

conexão com o servidor seja efetuada. No passo seguinte, Figura 44, deve-se clicar

no botão Procurar presente na tela de monitoração dos dados.

Figura 43 – PI Tag Monitor – Splash Screen

Figura 44 – PI Tag Monitor – Tela de Monitoração dos Dados

Uma nova tela que realiza a procura pelas variáveis desejadas é aberta. No

caso do exemplo abaixo o Tag Mask escolhido foi “TI-144*”, determinando assim

Page 77: Configuracion PI.pdf

62

que o programa deve rastrear por todas as variáveis presentes no servidor PI que

iniciam com o prefixo inserido na caixa de texto. A procura só é realmente efetivada

após clicar-se no botão Procurar.

Figura 45 – PI Tag Monitor – Tela de Busca

Ainda na tela de busca é possível especificar se a procura deve ser realizada

somente para um tipo de PointSource, ou se a mesma deve procurar todos os tipos.

No caso dos tags da Gerência de Pesquisa da SIX, o PointSource é igual a “K”. Já

no caso das variáveis inseridas manualmente no servidor, o PointSource é igual a

“L”.

O resultado da procura realizada é evidenciado na própria tela de busca que é

atualizada após o término da ação de procurar pelas variáveis que possuíam o

TagMask igual a “TI-144*” e o PointSource igual a “K”.

Page 78: Configuracion PI.pdf

63

Figura 46 – PI Tag Monitor – Resultado da Busca Efetuada

Outras buscas podem ser efetuadas, para que o usuário consiga numa

mesma tela monitorar todas as variáveis desejadas. O número máximo de variáveis

que podem ser monitoradas ao mesmo tempo pelo programa PI Tag Monitor é

dezesseis.

A Figura 47 mostra a tela final de monitoramento do aplicativo elaborado.

Nela estão sendo monitoradas variáveis atualizadas pelo SDCD (TI-144*) e variáveis

inseridas manualmente (U144*), sendo a variável “U144-AAFluidoSerpentina“, uma

variável do tipo string, evidenciando que a dificuldade apontada no início dessa

seção foi superada, e que a leitura dos tags do tipo string é realizada corretamente.

Page 79: Configuracion PI.pdf

64

Figura 47 – PI Tag Monitor – Monitoramento de Variáveis

4.4.2: Entrada Manual de Dados

A inserção manual de informações no banco de dados do PI exige que os

tags a elas relacionadas possuam atributos configurados adequadamente.

O PointSource utilizado para variáveis que recebem entrada manual de dados

deve ser igual a “L” de Laboratory Tags, indicando que os valores inseridos não vêm

de uma interface, mas sim de uma entrada do usuário ou de uma aplicação

específica.

O parâmetro Compressing normalmente deve ser igual a zero, pois as

entradas de dados manuais não devem sofrer o teste de compressão de dados que

serve para remover valores que não tenham mudado significativamente.

Page 80: Configuracion PI.pdf

65

Por outro lado, o parâmetro Step geralmente é setado em um, já que a

maioria dos dados manuais devem ser mostrados com interpolação do tipo ZOH,

Interpolador de Ordem Zero, pois é considerada má prática interpolar linearmente

entre valores inseridos manualmente, para tentar calcular que valor a variável teria

se a medida tivesse sido realizada num momento particular.

Os parâmetros Location# podem ser ignorados, porque não existe uma

interface envolvida na coleta dos dados. Da mesma forma os parâmetros ExcDev,

ExcMin, ExcMax, e ExcDevPercent também podem ser ignorados, pois o teste de

exceção normalmente é realizado pela interface, e no caso da inserção manual de

dados não existe interface envolvida.

Por último, o parâmetro DataAccess deve ser configurado para que seja igual

a "o:rw g:rw w:rw", assim as aplicações criadas para inserir dados manualmente no

servidor, terão acesso a ele e poderão escrever no banco de dados.

4.4.3: PI Data Insert

A elaboração do aplicativo PI Data Insert, utilizando a linguagem de

programação Visual Basic, visou o lançamento dos dados da operação diretamente

no servidor PI, com o objetivo de unificar a base de dados, alocando todos os

valores de processo, ou variáveis calculadas num mesmo servidor.

Assim como no desenvolvimento do PI Tag Monitor, a maior dificuldade

encontrada durante o desenvolvimento do PI Data Insert, foi a inserção incorreta dos

dados do tipo texto no servidor. Após inúmeras tentativas descobriu-se a função que

inseria corretamente strings no servidor, bem como os parâmetros que para ela

deveriam ser passados. Tal função era a pisn_putsnapshotx.

O aplicativo testa se o dado inserido está de acordo com o PointType

armazenado no servidor, assim se o número que está sendo inserido deve ser um

inteiro, e o usuário tentar inserir um número fracionário, o programa mostra uma

mensagem de erro ao usuário solicitando que um número inteiro seja inserido.

A seqüência de ações executadas pelo programa é a seguinte: o programa

testa se a caixa de texto associada a cada variável está vazia ou não, caso esteja

vazia, ele pula para próxima caixa de texto, caso contrário ele executa o teste que

verifica se o valor inserido é do tipo do valor determinado no servidor para aquela

Page 81: Configuracion PI.pdf

66

variável. Se o valor estiver incorreto o programa pede para que o usuário digite na

caixa de texto um valor compatível com o tipo exigido pela variável. Caso o valor

inserido na caixa de texto passe no teste anterior, o programa verifica se foi

especificada a Data e Hora de inserção dos dados, se esse parâmetro não foi

especificado, o programa solicita que o usuário especifique-o, para que ele possa

dar continuidade ao processo de inserção do novo dado no servidor.

Figura 48 – PI Data Insert – Tela de Inserção dos Dados

Assim, se o valor passar por todos os testes citados anteriormente, ele é

inserido no servidor, com a Data e Hora especificadas pelo usuário. Após a inserção

ser efetuada, o programa ainda testa para verificar se o dado foi inserido

corretamente, e acende uma “luz verde”, para indicar que a ação foi efetuada com

sucesso, como ilustrado na Figura 49.

Page 82: Configuracion PI.pdf

67

Figura 49 – PI Data Insert – Processo de Inserção dos Dados

Page 83: Configuracion PI.pdf

68

Capítulo 5: Discussão dos Resultados, Conclusões e Perspectivas

No período inicial do estágio na SIX, onde foi realizado o Projeto de Fim de

Curso, que resultou nessa monografia, procedeu-se um estudo sobre o sistema PI

que resultou num aprendizado progressivo sobre o que ele é e sua aplicabilidade no

sistema Petrobras, devido suas potencialidades.

De fato, concentrar todas as informações num banco de dados, torna fácil a

organização e o acesso a esses dados armazenados, sendo esse o maior objetivo

da implementação do sistema PI.

O servidor PI da UN-SIX, é um servidor que armazena tanto os dados da

produção, que processa o xisto, quanto os dados provindos das unidades de

pesquisa.

A interface responsável pela coleta dos dados das unidades da Gerência de

Pesquisa não estava realizando a tarefa para a qual foi atribuída, comportando-se

como uma máquina ociosa, de forma que dados importantes de testes realizados

pelas unidades não estavam sendo armazenados no servidor PI.

Com a instalação e configuração da interface os dados de operação e testes

das unidades, em especial da Unidade Multipropósito de Craqueamento Catalítico

Fluido, passaram a ser enviados e armazenados corretamente no servidor,

possibilitando assim que esses dados pudessem ser acessados de qualquer

máquina conectada à intranet da SIX, ou até mesmo da Petrobras.

Um problema a ser resolvido futuramente é o problema de travamento da

interface, que embora esteja coletando corretamente os dados, tem “congelado” em

dias de temperatura muito altas, o que leva à necessidade de reinicialização da

mesma. Vários componentes de hardware da máquina foram trocados, não

solucionando o problema.

Com a interface funcionando adequadamente deu-se início ao

desenvolvimento de ferramentas que automatizassem o processo de criação e

Page 84: Configuracion PI.pdf

69

edição de tags no servidor PI, e que fossem capazes de visualizar dados, além de

inseri-los corretamente no banco de dados do PI.

Assim, foram criadas planilhas eletrônicas utilizando-se o aplicativo Microsoft

Excel, responsáveis por: configurar corretamente os atributos dos tags, monitorar

variáveis em tempo real, e especificar o estado digital de cada variável digital

presente no servidor. Citando que durante o trabalho realizado, foram criados e

editados quase 1900 pontos no servidor PI. A não utilização das planilhas

desenvolvidas, tornaria uma tarefa extremamente trabalhosa, inserir os dados no

servidor, um por um, o que não compensaria.

As quase cinqüenta telas de processo criadas para acompanhamento do

funcionamento da Unidade de FCC utilizando-se o software PI-ProcessBook,

permitem que o usuário monitore o andamento dos testes realizados em qualquer

máquina conectada à intranet, em tempo real. O aspecto das telas do software

supervisório da ABB/Bailey foi mantido, para que os operadores da unidade,

tivessem facilidade ao acompanhar o andamento do processo por outro aplicativo,

no caso o PI-ProcessBook.

Os aplicativos PI Data Insert e PI Tag Monitor, foram elaborados para facilitar

a inserção dos dados da operação no servidor PI, como também para monitorar as

variáveis no período de tempo desejado. São aplicativos que customizam a maneira

como os dados são vistos e inseridos no servidor. A principal dificuldade encontrada

na elaboração desses dois aplicativos esteve relacionada aos dados do tipo texto,

que ou eram inseridos incorretamente no servidor, ou eram lidos incorretamente pelo

aplicativo de monitoramento das informações. A solução para esse problema com os

dados do tipo texto foi encontrada a partir do contato com o suporte da OSIsoft,

empresa desenvolvedora do sistema PI, que disponibiliza dos módulos piapi32.bas e

piutil.bas, para facilitar o desenvolvimento de aplicações em Visual Basic.

De modo geral, o desenvolvimento dessas atividades transcorreu

gradualmente, à medida que o sistema foi sendo conhecido e desmistificado. O uso

da palavra “desmistificado” é cabível, uma vez que o sistema era previamente

conhecido apenas pelo operador responsável pelo mesmo no setor de

processamento do xisto na SIX.

Page 85: Configuracion PI.pdf

70

Com o aprendizado adquirido sobre o sistema, e com a transferência e

disseminação das informações absorvidas, o sistema passou de desconhecido, e

por que não abandonado, para uma ferramenta valiosa de coleta, armazenamento e

gerenciamento dos dados provenientes de testes nas unidades de Pesquisa da SIX.

Conclui-se que as funções de implementar, configurar e customizar o sistema

Plant Information, na Unidade Multipropósito de Craqueamento Catalítico Fluido,

inseridas no contexto do curso de Engenharia de Controle e Automação Industrial,

obtiveram sucesso, sabendo que o trabalho desenvolvido no período de agosto de

2003 a fevereiro de 2004 teve seu valor reconhecido pelas partes interessadas.

Como perspectivas futuras de tarefas a serem desenvolvidas listam-se:

• Reinstalar e configurar o servidor PI e a interface em novas máquinas;

• Criar interfaces amigáveis para inserção dos dados oriundos do laboratório

e da engenharia no servidor PI;

• Adquirir e instalar o utilitário PI Active View para permitir acesso remoto via

browser às telas do PI-ProcessBook.

Page 86: Configuracion PI.pdf

71

Bibliografia:

[ 1 ] PI Application Programming Interface – Version 1.3.3. San Leandro, CA: OSI

Software Inc., July 2000.

[ 2 ] PI Data Link User's Guide – Version 1.9. San Leandro, CA: OSI Software Inc.,

November 2000.

[ 3 ] PI-Process Book – Programmer's Reference Manual – Version 2.12. San

Leandro, CA: OSI Software Inc., December 1999

[ 4 ] BROWN, Steve. Visual Basic 6 Complete: Sybex, 1999. 1011 p.

[ 5 ] http://www.osisoft.com

Page 87: Configuracion PI.pdf

72

Anexos:

Anexo A – Fluxograma Unidade Multipropósito de FCC

FRE

ON

Uni

dade

Mul

tipro

pósi

to d

e FC

C U

-144

cicl

ones

cicl

ones

"ris

er"

cond

ensa

dore

s

cond

ensa

dor

cond

ensa

dor to

rre d

eab

sorç

ão

PR

CV

d

"flar

e"

óleo

pesa

doHV

carg

a

atm

TRC

V

LRC

V

gase

s de

com

bust

ãova

por

de "l

ift"

óleo

prod

utoól

eole

ve

PR

CV

bPD

RC

Vat

m

atm

"stri

pper

"

vapo

r

rege

nera

dor

silo

de

carg

a

gase

s de

com

bust

ão

ar d

eco

mbu

stão

cata

lisad

or

arat

m

Page 88: Configuracion PI.pdf

73

Anexo B – Código Fonte do arquivo piapi32.bas

' $Archive: /PI/clients/piapi/piapi32.bas $ 'Copyright (c) 1993-98 OSI Software, Inc. All rights reserved. 'Unpublished - rights reserved under the copyright law of the United States. ' 'USE OF A COPYRIGHT NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION 'OR DISCLOSURE. ' 'THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF 'OSI SOFTWARE, INC. USE, DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT 'THE PRIOR EXPRESS WRITTEN PERMISSION OF OSI SOFTWARE, INC. ' 'RESTRICTED RIGHTS LEGEND 'Use, duplication, or disclosure by the Government is subject to restrictions 'as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and 'Computer Software clause at DFARS 252.227.7013 ' 'OSI Software, Inc. '777 Davis Street, Suite 250, San Leandro CA 94577 ' ' $Log: /PI/clients/piapi/piapi32.bas $ ' ' 17 2/26/03 9:31a Matzen ' Added function prototype for get_utctime ' ' 16 2/19/03 2:48p Matzen ' The prototype for piut_getloginuser was changed to return a long ' instead of a string. Although visual basic strings can be returned as ' parameters in function calls (as long as they are declared as Byval ' String), visual basic strings cannot directly be returned by a function ' writen in C or C++ unless the C or C++ function returns a BSTR. Once ' must treat function returns of char* as long in visual basic and then ' manipulate the long using win32 calls. See clientele call 52201GMBH. ' ' 15 4/16/02 11:34a Harry ' Changed case of PITime in method definitions. Screws up VB projects ' that include it and want to use PISDK PITime. Rem Rem 14 8/10/99 2:27p Cahenze Rem Added piut_getloginuser Rem Rem 13 7/27/99 5:29p Cahenze Rem drVals were #, not Any. Rem Rem 12 5/13/99 11:19a Cahenze Rem Added piut_strerror Rem Rem 11 4/28/99 8:08a Charlie Rem Added archive retrieval flags which were missing. Added missing $ type Rem in pilg_addnewserver. Removed Byval declaration in piut_errormsg for Rem msglen. Rem Rem 10 2/15/99 5:45p Charlie Rem pisn_evmexceptx: first argument changed to byref. Rem Rem 9 2/08/99 1:09p Charlie Rem Added pilg_checklog, pilg_formputlog, pisn_evmexceptx, Rem pisn_sendexcepstrucq, piut_fastserverversion. Rem Rem 8 12/03/98 5:07p Charlie Rem Removed unusable PIvaluetypes. Modified PITIMESTAMP.reserved to Rem PITIMESTAMP.tzinfo. Added piar_putarcvaluesx and mode definitions, Rem pitm_isdst, pitm_setdst and piut_getserverversion. Rem Rem 7 5/15/98 11:35a Harry Rem Removed line Rem Attribute VB_Name = "Module1" Rem Conflicted with other modules when loading into VB projects and not Rem required. Leaving it out causes the module to take the next available Rem name. Rem Rem 6 4/30/98 10:19a Charlie Rem Rem 4 10/29/97 7:45a Harry Rem Added defined constants for extended API, GETSAME, PI_NOMOREVALUES, and Rem BITFLAGS ' ' History

Page 89: Configuracion PI.pdf

74

' 11/22/96 hs Added and fixed extended api declarations and types Option Explicit '------------------------------- piar_summary definitions Global Const ARCTOTAL = 0 Global Const ARCMINIMUM = 1 Global Const ARCMAXIMUM = 2 Global Const ARCSTDEV = 3 Global Const ARCRANGE = 4 Global Const ARCAVERAGE = 5 Global Const ARCMEAN = 6 '------------------------------- piar_value definitions Global Const ARCVALUEBEFORE = 1 Global Const ARCVALUEAFTER = 2 Global Const ARCVALUEINTERP = 3 Global Const ARCVALUECODE = 4 '------------------------------- piel_evntactn definitions Global Const ELEQSEARCH = 1 Global Const ELGESEARCH = 2 Global Const ELLESEARCH = 3 Global Const ELGTSEARCH = 4 Global Const ELLTSEARCH = 5 Global Const ELEDIT = 6 Global Const ELDELETE = 7 '------------------------------- pilg_putoutput definitions Global Const MSGLOG = 1 Global Const STDOUTPUT = 2 '------------------------------- pipt_updates definitions Global Const NOTAGS = 0 Global Const POINTCREATE = 1 Global Const POINTEDIT = 2 Global Const POINTDELETE = 3 '------------------------------- piut_login definitions Global Const PILOGINOK = 1 Global Const PIREADACCESS = 2 Global Const PIWRITEACCESS = 4 Global Const PILOGINREAD = 8 Global Const PILOGINWRITE = 16 Global Const PILOGINPIUSER = 256 Global Const PILOGINVMS = 512 Global Const PILOGINUNIX = 1024 Global Const PINO = 0 Global Const PIREAD = 1 Global Const PIREADWRITE = 2 '-------------------------------- pilg definitions Global Const GETFIRST = 0 Global Const GETNEXT = 1 Global Const GETSAME = 2 Global Const PI_NOMOREVALUES = 100 Global Const PI_M_AFLAG = 1 Global Const PI_M_QFLAG = 2 Global Const PI_M_SFLAG = 4 Global Const MAX_POINT_NUM_LEN = 16 Global Const MAX_NODENAME_LEN = 30 Global Const MAX_TAGNAME_LEN = 256 Global Const MAX_USERNAME_LEN = 30 Global Const PILOGIN_SERVER_TYPE_PI = 1000 '-------------------------------- extended API definitions Global Const ARCflag_time = 4 Global Const ARCFLAG_EVEN = 8 Global Const ARCflag_filter = 16 Global Const ARCflag_mark = 32 Global Const ARCFLAG_COMP = 64 Global Const PI_Type_null = 0 Global Const PI_Type_bool = 1 Global Const PI_Type_uint8 = 2 Global Const PI_Type_int8 = 3 Global Const PI_Type_char = 4 Global Const PI_Type_uint16 = 5 Global Const PI_Type_int16 = 6 Global Const PI_Type_uint32 = 7 Global Const PI_Type_int32 = 8 Global Const PI_Type_uint64 = 9 Global Const PI_Type_int64 = 10 Global Const PI_Type_float16 = 11

Page 90: Configuracion PI.pdf

75

Global Const PI_Type_float32 = 12 Global Const PI_Type_float64 = 13 Global Const PI_Type_PI2 = 14 Global Const PI_Type_digital = 101 Global Const PI_Type_blob = 102 Global Const PI_Type_PIstring = 105 Global Const PI_Type_bad = 255 ' piar_putarcvaluesx defines Global Const ARCNOREPLACE = 3 ' add unless event(s) exist at same time (PI 2.x) Global Const ARCAPPEND = 4 ' add event regardless of existing events Global Const ARCREPLACE = 5 ' add event, replace if event at same time Global Const ARCREPLACEX = 6 ' replace existing event (fail if no event at time) Global Const ARCDELETE = 7 ' remove existing event Global Const ARCAPPENDX = 8 ' add event regardless of existing events, no compression '---------------------------- Structure declarations Type QERROR Point As Long piapierror As Long End Type Global Const MAXPI3PUTSNAP = 255 'For queue call return values. Type QERRORS syserror As Long numpterrs As Long qerr(MAXPI3PUTSNAP) As QERROR End Type Type PI_EXCEPT NewVal As Single newstat As Long newTime As Long oldVal As Single oldstat As Long oldTime As Long prevVal As Single prevstat As Long prevTime As Long ExcDevEng As Single ExcMin As Long ExcMax As Long End Type Type PI_VAL bSize As Long istat As Long FLAGS As Integer End Type Type TagList server As String * MAX_NODENAME_LEN NodeID As Long tagname As String * MAX_TAGNAME_LEN Point As Long reserved As Long End Type Type PITimeStamp Month As Long ' /* 1-12 */ Year As Long ' /* four digit */ Day As Long ' /* 1-31 */ Hour As Long ' /* 0-23 */ Minute As Long ' /* 0-59 */ tzinfo As Long Second As Double ' /* 0-59.99999999.... */ End Type 'PI batch function declarations -- New with PI-API v1.1.0 Declare Function piba_getunit Lib "piapi32.dll" (ByVal unit$, ByVal slen&, ByVal index&, number&) As Long Declare Function piba_getaliaswunit Lib "piapi32.dll" (ByVal unit$, ByVal balias$, ByVal slen&, ByVal index&, number&) As Long Declare Function piba_getunitswalias Lib "piapi32.dll" (ByVal balias$, ByVal unit$, ByVal slen&, ByVal index&, number&) As Long Declare Function piba_findaliaspoint Lib "piapi32.dll" (ByVal unit$, ByVal balias$, ptno&, ByVal tagname$, ByVal slen&) As Long Declare Function piba_search Lib "piapi32.dll" (ByVal batchid$, ByVal blen&, ByVal unit$, ByVal ulen&, ByVal product$, ByVal plen&, stime&, etime&, ByVal sf&, ByVal timeout&) As Long 'PI Login Services function declarations -- new with PI-API v1.1.0

Page 91: Configuracion PI.pdf

76

Declare Function pilg_addnewserver Lib "pilog32.dll" (ByVal servername$, ByVal servertype&, ByVal username$, ByVal portnum&) As Long Declare Function pilg_connectdlg Lib "pilog32.dll" (ByVal hwndparent&) As Long Declare Function pilg_disconnect Lib "pilog32.dll" () As Long Declare Function pilg_disconnectnode Lib "pilog32.dll" (ByVal servername$) As Long Declare Function pilg_getconnectedserver Lib "pilog32.dll" (ByVal servernamebuf$, bufsize&, NodeID&, port&, ByVal seq&) As Long Declare Function pilg_getdefserverinfo Lib "pilog32.dll" (ByVal servernamebuf$, bufsize&, NodeID&, port&) As Long Declare Function pilg_getnodeid Lib "pilog32.dll" (ByVal servernamebuf$, NodeID&) As Long Declare Function pilg_getselectedtag Lib "pilog32.dll" (taglst As TagList, ByVal seq&) As Long Declare Function pilg_getservername Lib "pilog32.dll" (ByVal NodeID&, ByVal servernamebuf$, bufsize&) As Long Declare Function pilg_login Lib "pilog32.dll" (ByVal hwndparent&, ByVal username$, ByVal servername$, ByVal password$, valid&) As Long Declare Function pilg_pointattdlg Lib "pilog32.dll" (ByVal hwndparent&, taglst As TagList) As Long Declare Function pilg_registerapp Lib "pilog32.dll" (ByVal dllname$) As Long ' The function below requires allocating a linked list which is not supported in VB ' 'Declare Function pilg_registerhelp Lib "pilog32.dll" (ByVal helpfile$, linklist&) As Long Declare Function pilg_setservernode Lib "pilog32.dll" (ByVal servername$) As Long Declare Function pilg_tagsearchdlg Lib "pilog32.dll" (ByVal hwndparent&) As Long Declare Function pilg_unregisterapp Lib "pilog32.dll" () As Long 'Function declarations Declare Function piar_calculation Lib "piapi32.dll" (count&, times&, rvals!, istats&, ByVal Expr$) As Long Declare Function piar_compvalues Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&, ByVal rev&) As Long Declare Function piar_compvaluesfil Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&, ByVal Expr$, ByVal rev&, ByVal fil&) As Long Declare Function piar_deletevalue Lib "piapi32.dll" (ByVal pt&, ByVal timedate&) As Long Declare Function piar_interpvalues Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&) As Long Declare Function piar_interpvaluesfil Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&, ByVal Expr$) As Long Declare Function piar_panvalues Lib "piapi32.dll" (ByVal pt&, count&, timedate&) As Long Declare Function piar_plotvalues Lib "piapi32.dll" (ByVal pt&, ByVal intervals&, count&, times&, rvals!, istats&) As Long Declare Function piar_putvalue Lib "piapi32.dll" (ByVal pt&, ByVal rval!, ByVal istat&, ByVal timedate&, ByVal wait&) As Long Declare Function piar_replacevalue Lib "piapi32.dll" (ByVal pt&, ByVal timedate&, ByVal rval!, ByVal istat&) As Long Declare Function piar_summary Lib "piapi32.dll" (ByVal pt&, time1&, time2&, rval!, pctgood!, ByVal code&) As Long Declare Function piar_timedvalues Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&, ByVal prev&) As Long Declare Function piar_timedvaluesfil Lib "piapi32.dll" (ByVal pt&, count&, times&, rvals!, istats&, ByVal Expr$) As Long Declare Function piar_timefilter Lib "piapi32.dll" (ByVal StartTime&, ByVal EndTime&, ByVal Expr$, tottime&, passtime&) As Long Declare Function piar_value Lib "piapi32.dll" (ByVal pt&, timedate&, ByVal Mode&, rval!, istat&) As Long Declare Function piel_addevnt Lib "piapi32.dll" (pitime&, number&, ByVal group&, ByVal etype&, ByVal Msg$, ByVal timeout&) As Long Declare Function piel_evntactn Lib "piapi32.dll" (pitime&, number&, group&, etype&, ByVal slen&, ByVal Msg$, ByVal action&, ByVal timeout&) As Long Declare Function pilg_checklogfile Lib "piapi32.dll" (ByVal action&, ByVal LogFile$) As Long Declare Function pilg_formputlog Lib "piapi32.dll" (ByVal Msg$, ByVal IdString$) As Long Declare Function pilg_puthomelog Lib "piapi32.dll" (ByVal Msg$) As Long Declare Function pilg_putlog Lib "piapi32.dll" (ByVal Msg$) As Long Declare Function pilg_putoutput Lib "piapi32.dll" (ByVal Msg$, ByVal FLAGS&) As Long Declare Function pipt_compspecs Lib "piapi32.dll" (ByVal pt&, compdev&, compmin&, compmax&) As Long Declare Function pipt_compspecseng Lib "piapi32.dll" (ByVal pt&, compdeveng!, compmin&, compmax&) As Long Declare Function pipt_dates Lib "piapi32.dll" (ByVal pt&, creationdate&, ByVal creator$, ByVal crlen&, changedate&, ByVal changer$, ByVal chlen&) As Long Declare Function pipt_descriptor Lib "piapi32.dll" (ByVal pt&, ByVal desc$, ByVal slen&) As Long Declare Function pipt_digcode Lib "piapi32.dll" (digcode&, ByVal digstring$) As Long Declare Function pipt_digcodefortag Lib "piapi32.dll" (ByVal pt&, digcode&, ByVal digstring$) As Long Declare Function pipt_digpointers Lib "piapi32.dll" (ByVal pt&, digcode&, dignumb&) As Long Declare Function pipt_digstate Lib "piapi32.dll" (ByVal digcode&, ByVal digstate$, ByVal slen&) As Long Declare Function pipt_displaydigits Lib "piapi32.dll" (ByVal pt&, displaydigits&) As Long Declare Function pipt_engunitstring Lib "piapi32.dll" (ByVal pt&, ByVal engunitstring$, ByVal slen&) As Long

Page 92: Configuracion PI.pdf

77

Declare Function pipt_engunstring Lib "piapi32.dll" (ByVal engunitcode&, ByVal engunitstring$, ByVal slen&) As Long Declare Function pipt_excspecseng Lib "piapi32.dll" (ByVal pt&, ExcDevEng!, ExcMin&, ExcMax&) As Long Declare Function pipt_exdesc Lib "piapi32.dll" (ByVal pt&, ByVal exdesc$, ByVal slen&) As Long Declare Function pipt_findpoint Lib "piapi32.dll" (ByVal tagname$, pt&) As Long Declare Function pipt_inprocbits Lib "piapi32.dll" (ByVal pt&, larchiving&, lcompressing&, filtercode&) As Long Declare Function pipt_instrumenttag Lib "piapi32.dll" (ByVal pt&, ByVal instrumenttag$, ByVal slen&) As Long Declare Function pipt_location Lib "piapi32.dll" (ByVal pt&, location&) As Long Declare Function pipt_nextptwsource Lib "piapi32.dll" (ByVal source%, pt&) As Long Declare Function pipt_pointid Lib "piapi32.dll" (ByVal pt&, ipt&) As Long Declare Function pipt_pointsource Lib "piapi32.dll" (ByVal pt&, ByVal source$) As Long Declare Function pipt_pointtype Lib "piapi32.dll" (ByVal pt&, ByVal pttype$) As Long Declare Function pipt_ptexist Lib "piapi32.dll" (ByVal pt&) As Long Declare Function pipt_recordtype Lib "piapi32.dll" (ByVal pt&, steps&) As Long Declare Function pipt_rescode Lib "piapi32.dll" (ByVal pt&, rescode&) As Long Declare Function pipt_scale Lib "piapi32.dll" (ByVal pt&, zero!, span!) As Long Declare Function pipt_scan Lib "piapi32.dll" (ByVal pt&, lscan&) As Long Declare Function pipt_signupforupdates Lib "piapi32.dll" () As Long Declare Function pipt_sourcept Lib "piapi32.dll" (ByVal pt&, sourcept&) As Long Declare Function pipt_squareroot Lib "piapi32.dll" (ByVal pt&, squareroot&) As Long Declare Function pipt_tag Lib "piapi32.dll" (ByVal pt&, ByVal tag$, ByVal slen&) As Long Declare Function pipt_taglong Lib "piapi32.dll" (ByVal pt&, ByVal tag$, ByVal slen&) As Long Declare Function pipt_tagpreferred Lib "piapi32.dll" (ByVal pt&, ByVal tag$, ByVal slen&) As Long Declare Function pipt_totalspecs Lib "piapi32.dll" (ByVal pt&, totalcode&, convers!) As Long Declare Function pipt_typicalvalue Lib "piapi32.dll" (ByVal pt&, typicalvalue!) As Long Declare Function pipt_updates Lib "piapi32.dll" (pt&, ByVal tagname$, ByVal slen&, Mode&) As Long Declare Function pipt_userattribs Lib "piapi32.dll" (ByVal pt&, userint1&, userint2&, userreal1!, userreal2!) As Long Declare Function pipt_wildcardsearch Lib "piapi32.dll" (ByVal tagmask$, ByVal direction&, found&, ByVal tagname$, ByVal slen&, pt&, numfound&) As Long Declare Function pisn_evmdisestablish Lib "piapi32.dll" (count&, pts&) As Long Declare Function pisn_evmestablish Lib "piapi32.dll" (count&, pts&) As Long Declare Function pisn_evmexceptions Lib "piapi32.dll" (count&, pt&, rval!, istat&, timedate&) As Long Declare Function pisn_getsnapshot Lib "piapi32.dll" (ByVal pt&, rval!, istat&, timedate&) As Long Declare Function pisn_getsnapshots Lib "piapi32.dll" (pt&, rval!, istat&, timedate&, piapierror&, ByVal count&) As Long Declare Function pisn_putsnapshot Lib "piapi32.dll" (ByVal pt&, ByVal rval!, ByVal istat&, ByVal timedate&) As Long Declare Function pisn_putsnapshots Lib "piapi32.dll" (pt&, rval!, istat&, timedate&, piapierror&, ByVal count&) As Long Declare Function pisn_sendexcepstruc Lib "piapi32.dll" (ByVal pt&, ByVal pttype%, except As PI_EXCEPT, count&) As Long Declare Function pisn_sendexceptions Lib "piapi32.dll" (ByVal pt&, ByVal pttype%, oldVal!, oldstat%, oldTime&, prevVal!, prevstat%, prevTime&, ByVal NewVal!, ByVal newstat%, ByVal newTime&, ByVal ExcDevEng!, ByVal ExcMin%, ByVal ExcMax%, count&) As Long Declare Function pisn_sendexcepstrucq Lib "piapi32.dll" (ByVal pt&, ByVal pttype%, except As PI_EXCEPT, count&, ByVal Queueing%, numbptErrs&, qErrs As QERROR) As Long '----- these functions have return types incompatible with Visual Basic 'Declare Function pisn_sendexceptionq Lib "piapi32.dll" (ByVal pt&, ByVal pttype%, oldval!, oldstat%, oldtime&, prevval!, prevstat%, prevtime&, ByVal newval!, ByVal newstat%, ByVal newtime&, ByVal excdeveng!, ByVal excmin%, ByVal excmax%, count&) As QERRORS 'Declare Function pisn_putsnapshotq Lib "piapi32.dll" (ByVal pt&, ByVal rval!, ByVal istat&, ByVal timedate&) As QERRORS 'Declare Function pisn_flushputsnapq Lib "piapi32.dll" () As QERRORS Declare Function pitm_delay Lib "piapi32.dll" (ByVal mseconds&) As Long Declare Function pitm_fastservertime Lib "piapi32.dll" () As Long Declare Sub pitm_formtime Lib "piapi32.dll" (ByVal timedate&, ByVal timestring$, ByVal slen&) Declare Sub pitm_intsec Lib "piapi32.dll" (timedate&, timearray&) Declare Function pitm_parsetime Lib "piapi32.dll" (ByVal timestr$, ByVal reltime&, timedate&) As Long Declare Sub pitm_secint Lib "piapi32.dll" (ByVal timedate&, timearray&) Declare Function pitm_servertime Lib "piapi32.dll" (servertime&) As Long Declare Function pitm_syncwithservertime Lib "piapi32.dll" () As Long Declare Function pitm_systime Lib "piapi32.dll" () As Long Declare Function piut_connect Lib "piapi32.dll" (ByVal ProcName$) As Long Declare Function piut_disconnect Lib "piapi32.dll" () As Long Declare Function piut_disconnectnode Lib "piapi32.dll" (ByVal SrvName$) As Long Declare Function piut_fastserverversion Lib "piapi32.dll" (MinorVer&, ByVal buildid$, ByVal BuildLen&) As Long Declare Function piut_getapiversion Lib "piapi32.dll" (ByVal version$, ByVal slen&) As Long Declare Function piut_getloginuser Lib "piapi32.dll" () As Long Declare Sub piut_getprotocolvers Lib "piapi32.dll" (ByVal Vers$, ByVal slen&) Declare Function piut_getserverversion Lib "piapi32.dll" (NodeID&, ByVal servername$, ByVal servernamelen&, ByVal version$, ByVal versionlen&, ByVal buildid$, ByVal buildidlen&) As Long

Page 93: Configuracion PI.pdf

78

Declare Sub piut_inceventcounter Lib "piapi32.dll" (ByVal counter&, ByVal count&) Declare Function piut_ishome Lib "piapi32.dll" () As Long Declare Function piut_login Lib "piapi32.dll" (ByVal username$, ByVal password$, valid&) As Long Declare Function piut_netinfo Lib "piapi32.dll" (ByVal namestr$, ByVal NameLen&, ByVal addressstr$, ByVal addresslen&, ByVal typestr$, ByVal typelen&) As Long Declare Function piut_netnodeinfo Lib "piapi32.dll" (ByVal namestr$, ByVal NameLen&, ByVal addressstr$, ByVal addresslen&, connected&) As Long Declare Function piut_netserverinfo Lib "piapi32.dll" (ByVal namestr$, ByVal NameLen&, ByVal addressstr$, ByVal addresslen&, connected&) As Long Declare Function piut_setdefaultservernode Lib "piapi32.dll" (ByVal servername$) As Long Declare Sub piut_setprocname Lib "piapi32.dll" (ByVal ProcName$) Declare Function piut_setservernode Lib "piapi32.dll" (ByVal servername$) As Long Declare Sub piut_zeroeventcounter Lib "piapi32.dll" (ByVal counter&) Declare Function piar_getarcvaluesx Lib "piapi32.dll" (ByVal PtNum&, ByVal arcMode&, count&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp, time1 As PITimeStamp, ByVal FuncCode&) As Long Declare Function piar_getarcvaluesfilterx Lib "piapi32.dll" (ByVal PtNum&, ByVal Mode&, count&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp, time1 As PITimeStamp, ByVal Expr$, ByVal FuncCode&) As Long Declare Function piar_getarcvaluex Lib "piapi32.dll" (ByVal PtNum&, ByVal arcMode&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp) As Long Declare Function piar_putarcvaluesx Lib "piapi32.dll" (ByVal count&, ByVal Mode&, PtNum&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp, Errors&) As Long Declare Function piar_putarcvaluex Lib "piapi32.dll" (ByVal PtNum&, ByVal Mode&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp) As Long Declare Function pipt_pointtypex Lib "piapi32.dll" (ByVal PtNum&, typeX&) As Long 'Declare Function pisn_evmexceptionsx Lib "piapi32.dll" (ByVal Count&, PTnum&, event As PI_EVENT, ByVal FuncCode&) As Long Declare Function pisn_evmexceptx Lib "piapi32.dll" (count&, PtNum&, typeX&, Val As Variant, istat&, FLAGS%, Timeval As PITimeStamp, ByVal FuncCode&) As Long Declare Function pisn_flushputsnapqx Lib "piapi32.dll" (numbptErrs&, qErrs As QERROR) As Long Declare Function pisn_getsnapshotsx Lib "piapi32.dll" (PtNum&, cntptnum&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp, lerror&, ByVal FuncCode&) As Long Declare Function pisn_getsnapshotx Lib "piapi32.dll" (ByVal PtNum&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As PITimeStamp) As Long Declare Function pisn_putsnapshotqx Lib "piapi32.dll" (ByVal PtNum&, drVal As Any, iVal&, bVal As Any, bSize As Long, istat As Long, FLAGS%, TimeStamp As PITimeStamp, ByVal Queueing&, numbptErrs&, qErrs As QERROR) As Long 'pisn_putsnapshotsx takes a pointer to an array of string pointers which can't be generated in VB Declare Function pisn_putsnapshotsx Lib "piapi32.dll" (ByVal count&, PtNum&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As Any, Errors&) As Long Declare Function pisn_putsnapshotx Lib "piapi32.dll" (ByVal PtNum&, drVal As Any, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As Any) As Long 'Declare Function pisn_sendexceptionqx Lib "piapi32.dll" (ByVal pt&, ByVal typeX&, oldValue As PI_EVENT, prevvalue As PI_EVENT, newvalue As PI_EVENT, ByVal ExcDevEng#, ByVal ExcMin#, ByVal ExcMax#, Count&, ByVal Queueing&, numbptErrs&, qErrs As QERROR) As Long 'Declare Function pisn_sendexceptionsx Lib "piapi32.dll" (ByVal num_pts&, ptnum&, typeX&, except As PI_EXCEPTSTRU, Errors&, Count&) As Long Declare Function pisn_sendexceptqx Lib "piapi32.dll" (ByVal pt&, ByVal typeX&, oldVal As Variant, oldistat&, oldFlags%, oldTime As PITimeStamp, prevVal As Variant, previstat&, prevFlags%, prevTime As PITimeStamp, Val As Variant, istat&, FLAGS%, newTime As PITimeStamp, ByVal ExcDevEng#, ByVal ExcMin#, ByVal ExcMax#, count&, ByVal Queueing&, numbptErrs&, qErrs As QERROR) As Long Declare Function pitm_getpitime Lib "piapi32.dll" (time0 As PITimeStamp, frac#) As Long Declare Function pitm_getutctime Lib "piapi32.dll" (time0 As PITimeStamp) As Double Declare Function pitm_isdst Lib "piapi32.dll" (time0 As PITimeStamp) As Long Declare Sub pitm_setcurtime Lib "piapi32.dll" (time0 As PITimeStamp, ByVal incl_subsec%) Declare Sub pitm_setdst Lib "piapi32.dll" (time0 As PITimeStamp, ByVal tm_isdst&) Declare Function pitm_setpitime Lib "piapi32.dll" (time0 As PITimeStamp, ByVal pitime&, ByVal frac#) As Long Declare Function pitm_settime Lib "piapi32.dll" (time0 As PITimeStamp, ByVal xyear&, ByVal xmonth&, ByVal xday&, ByVal xhour&, ByVal xminute&, ByVal xsecond#) As Long Declare Function piut_errormsg Lib "piapi32.dll" (ByVal stat&, ByVal Msg$, MsgLen&) As Long Declare Function piut_setpassword Lib "piapi32.dll" (ByVal username$, ByVal oldpw$, ByVal newpw$) As Long Declare Function piut_strerror Lib "piapi32.dll" (ByVal stat&, ByVal Msg$, MsgLen&, ByVal SrcStr$) As Long

Page 94: Configuracion PI.pdf

79

Anexo C – Código Fonte do arquivo piutil.bas

' @(#)piutil.bas 1.1 09/20/95 ' 'Copyright (c) 1995 Oil Systems, Inc. All rights reserved. Unpublished - rights 'reserved under the copyright law of the United States. ' 'USE OF A COPYRIGHT NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION 'OR DISCLOSURE. ' 'THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF 'OIL SYSTEMS, INC. USE, DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT 'THE PRIOR EXPRESS WRITTEN PERMISSION OF OIL SYSTEMS, INC. ' 'RESTRICTED RIGHTS LEGEND 'Use, duplication, or disclosure by the Government is subject to restrictions 'as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and 'Computer Software clause at DFARS 252.227.7013 ' 'Oil Systems, Inc. '545 Estudillo Ave., San Leandro CA 94577 ' ' Option Explicit Type PIVAL rval As Single istat As Long timedate As Long End Type '----- declarations used to make a window "always on top" ----- 'courtesy of Microsoft Declare Function SetWindowPos Lib "user32" (ByVal h&, ByVal hb%, ByVal x%, ByVal y%, ByVal cx%, ByVal cy%, ByVal f%) As Integer Global Const SWP_NOMOVE = 2 Global Const SWP_NOSIZE = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST = -1 Global Const HWND_NOTOPMOST = -2 '------------------------------------- handle errors in PI Function ChkPIstatus(piname As String, apistatus As Long) As Long If apistatus <> 0 Then MsgBox "Error in " & piname & ": status = " & apistatus End If ChkPIstatus = apistatus End Function '------------------------------------- connect to PI server if server has changed Sub Connect(servername As String) Dim status As Long status = ChkPIstatus("piut_setservernode", piut_setservernode(servername)) End Sub Function FormatTime(pitime As Long) As String Dim timestring As String * 19 pitm_formtime pitime, timestring, Len(timestring) FormatTime = timestring End Function '----- Get digital state code, given a string Function getDigCode(theString As String) As Long Dim theCode As Long If pipt_digcode(theCode, theString) = -12 Then getDigCode = 0 ' return 0 if string not found Else getDigCode = -theCode 'return a negative value, it's more useful End If End Function '------------------------------------- get state string from code Function getDigState(code As Long) As String Dim state As String * 12 If ChkPIstatus("pipt_digstate", pipt_digstate(code, state, 12)) <> 0 Then state = "" 'return empty string on error End If getDigState = state End Function

Page 95: Configuracion PI.pdf

80

'------------------------------------- get a snapshot event Sub getEVMexception(ptno As Long, valu As PIVAL) Dim count As Long count = 1 If ChkPIstatus("pisn_evmexceptions", pisn_evmexceptions(count, ptno, valu.rval, valu.istat, valu.timedate)) <> 0 Or count = 0 Then ptno = 0 'return ptno = 0 if there is no exception at this time End If End Sub '----- get point number from point name Function getptno(itsName As String) As Long Dim ptno As Long Dim apistatus As Long Dim tagname As String * 80 'must be fixed-length string because API can modify it getptno = 0 'return zero on error tagname = itsName apistatus = pipt_findpoint(tagname, ptno) If apistatus = -5 Then MsgBox "Point """ & itsName & """ not found." ElseIf ChkPIstatus("pipt_findpoint", apistatus) = 0 Then getptno = ptno End If End Function '----- get point source character Function getptsource(ptno As Long) As String Dim ptsrc As String * 1 If ChkPIstatus("pipt_pointsource", pipt_pointsource(ptno, ptsrc)) <> 0 Then ptsrc = "" 'return empty string on error End If getptsource = ptsrc End Function '----- get point type character Function getPtType(ptno As Long) As String Dim pttype As String * 1 If ChkPIstatus("pipt_pointtype", pipt_pointtype(ptno, pttype)) <> 0 Then pttype = "" 'return empty string on error End If getPtType = pttype End Function '------------------------------------- get current value from point number Sub GetSnapshot(ptno As Long, valu As PIVAL) Dim status As Long status = ChkPIstatus("pisn_getsnapshot", pisn_getsnapshot(ptno, valu.rval, valu.istat, valu.timedate)) End Sub '------------------------------------- sign up for snapshot events on a point Sub ListenTo(ptno As Long) Dim count As Long, status As Long count = 1 status = ChkPIstatus("pisn_evmestablish", pisn_evmestablish(count, ptno)) End Sub '----- Make this an ordinary (not topmost) window Sub makenontopmost(theForm As Form) Dim success As Integer success = SetWindowPos(theForm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS) 'success is nonzero when successful End Sub '----- Make this window "always on top" Sub maketopmost(theForm As Form) Dim success As Integer Dim winhandle As Long winhandle = theForm.hWnd success = SetWindowPos(winhandle, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) 'success is nonzero when successful End Sub '----- process rval/istat, return result as string Function parsePIval(valu As PIVAL, pttype As String) As String If valu.istat < 0 Then parsePIval = getDigState(-valu.istat) ElseIf pttype = "I" Then 'integer tag parsePIval = Str$(valu.istat) Else 'real tag

Page 96: Configuracion PI.pdf

81

parsePIval = Str$(valu.rval) End If End Function '------------------------------------- parse a PI time string Function parsetime(s As String, rel As Long) As Long Dim timestr As String * 19 'must be fixed-length string because API can modify it Dim result As Long timestr = s If ChkPIstatus("pitm_parsetime", pitm_parsetime(timestr, rel, result)) <> 0 Then result = 0 'return zero on error End If parsetime = result End Function '-------------------- convert PI time to Excel time ' 1-jan-1970 is 25569 on MS Windows, and there are 86400 seconds in a day. Function pitime2xl(pitime As Long) As Double pitime2xl = CDbl(pitime) / 86400 + 25569 End Function '------------------------------------- stop listening for snapshot events on a point Sub StopListening(ptno As Long) Dim count As Long, status As Long count = 1 status = ChkPIstatus("pisn_evmdisestablish", pisn_evmdisestablish(count, ptno)) End Sub '----- Change a string into a PI value. ' return 0 if OK, 1 if error Function StringToPIVAL(theString As String, pttype As String, valu As PIVAL) As Long Dim theval As Variant Dim theInt As Integer StringToPIVAL = 0 'be optimistic, set for OK return valu.istat = getDigCode(theString) If valu.istat <> 0 Then 'it is a digital state valu.rval = 0 ElseIf pttype = "D" Then MsgBox "Digital value needed" StringToPIVAL = 1 'error Else ' point is not digital, value is not digital theval = CVar(theString) 'see if it's a number If Not IsNumeric(theval) Then MsgBox "Numeric value needed" StringToPIVAL = 1 'error Else 'point is numeric, value is numeric valu.rval = theval 'setup for a real point, the usual case valu.istat = 0 If pttype = "I" Then 'we need an integer theInt = Int(valu.rval) If theInt <> valu.rval Or theInt > 32767 Or theInt < 0 Then MsgBox "Valid integer value needed" StringToPIVAL = 1 'error Else 'point is integer, value is integer valu.istat = valu.rval valu.rval = 0 End If 'value is integer End If 'point is integer End If 'value is numeric End If 'point is numeric End Function

Page 97: Configuracion PI.pdf

82

Anexo D – PI Tag Monitor – Código Fonte do Splash Form

Option Explicit Private Sub ConnectBtn_Click() Dim servername As String Dim theTime As Long servername = ServerText ServerFrame.Visible = False Refresh Connect servername theTime = pitm_syncwithservertime() DisplayForm.Show Hide End Sub Private Sub Form_Load() Dim dh As Long, dw As Long 'fix the width and height for small/large fonts dh = Height - ScaleHeight dw = Width - ScaleWidth Height = splashimage.Height + dh Width = splashimage.Width + dw 'center the splash screen splashscreen.Move (Screen.Width - splashscreen.Width) / 2, (Screen.Height - splashscreen.Height) / 2 ServerFrame.Top = ScaleHeight * 0.85 - ServerFrame.Height ServerFrame.Left = ScaleWidth * 0.95 - ServerFrame.Width ServerText.SelStart = 0 ServerText.SelLength = Len(ServerText.Text) GlobalInit End Sub

Page 98: Configuracion PI.pdf

83

Anexo E – PI Tag Monitor – Código Fonte do Display Form

Option Explicit Private Sub Ajudar_Click() MsgBox "Clique em PROCURAR para selecionar os Tags que devem ser monitorados.", vbExclamation, "PI Tag Monitor Help" End Sub ' Quando o botão PROCURAR é apertado, o programa pára de ouvir todos os tags, ' Vai para o formulário SearchForm, e então volta a ouvir todos os tags de novo. Private Sub ConfigBtn_Click() Dim i As Integer reconfig = False exceptiontimer.Enabled = False For i = 0 To ntags - 1 If ptno(i) <> 0 Then StopListening ptno(i) End If Next i Searchform.Show 1 'mostra o formulário de procura If reconfig Then showsnaps End If End Sub ' De tempos em tempos (timer), checar se existe algum dado novo. Private Sub exceptiontimer_Timer() Dim pt As Long Dim valu As PIVAL Dim i As Integer Do getEVMexception pt, valu If pt = 0 Then Exit Sub 'não existem dados novos End If For i = 0 To ntags - 1 If ptno(i) = pt Then OldVal(i) = parsePIval(valu, pttype(i)) OldTime(i) = FormatTime(valu.timedate) If unconfirmed(i) Then If valu.timedate = changetime(i) Then 'verifica se timestamp é o mesmo unconfirmed(i) = False End If End If End If Next i Loop End Sub 'Após voltar do SearchForm, desabilita o timer e mostra os snapshots atuais. Private Sub Form_Load() exceptiontimer.Enabled = False showsnaps End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub Private Sub QuitBtn_Click() End End Sub 'Coleta e mostra o valor do snapshot de cada tag, 'e também é setado para monitorar mudanças no valor das variáveis. Private Sub showsnaps() Dim i As Integer Dim timestring As String * 19 Dim valu As PIVAL Dim TimeStamp As PITimeStamp Dim bVal As String * 30 Dim bSize As Long Dim Mode As Integer Dim drVal As Long Dim iVal As Long Dim istat As Long Dim FLAGS As Integer

Page 99: Configuracion PI.pdf

84

For i = 0 To ntags - 1 NameLab(i) = tagname(i) If ptno(i) > 0 Then If pttypex(i) <> 105 Then GetSnapshot ptno(i), valu OldVal(i) = parsePIval(valu, pttype(i)) OldTime(i) = FormatTime(valu.timedate) ListenTo ptno(i) exceptiontimer.Enabled = True Else bSize = 30 Mode = 1 apistat = piar_getarcvaluex(ptno(i), Mode, drVal, iVal, ByVal bVal, bSize, istat, FLAGS, TimeStamp) OldVal(i) = bVal OldTime(i) = FormatTime(pitm_systime()) End If End If Next i End Sub

Page 100: Configuracion PI.pdf

85

Anexo F – PI Tag Monitor – Código Fonte do Search Form

Option Explicit Private Sub AddAllBtn_Click() Do While SearchList.ListCount > 0 And OutList.ListCount < ntags moveitem SearchList, OutList, 0 Loop If MoveBtn.Caption = ">>" Then MoveBtn.Enabled = False End If EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub CanBtn_Click() Hide End Sub Private Sub ClearBtn_Click() OutList.Clear If MoveBtn.Caption = "<<" Then MoveBtn.Enabled = False End If EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub EnableButtons() 'habilita os botões ">> All" e "OK" se apropriado AddAllBtn.Enabled = SearchList.ListCount > 0 And OutList.ListCount < ntags OKBtn.Enabled = OutList.ListCount > 0 End Sub Private Sub InfoBtn_Click() MsgBox "Selecione no máximo 16 Tags que você deseje monitorar. Entre os PointSources selecione: K para variáveis da pesquisa, L para variáveis inseridas manualmente, e B para variáveis da engenharia.", vbExclamation, "PI Tag Monitor Help" End Sub Private Sub MoveBtn_Click() If MoveBtn.Caption = "<<" Then movelist OutList, SearchList, -1 ElseIf MoveBtn.Caption = ">>" Then movelist SearchList, OutList, ntags - OutList.ListCount End If End Sub Private Sub moveitem(src As ListBox, dst As ListBox, index As Integer) dst.AddItem src.List(index) dst.ItemData(dst.NewIndex) = src.ItemData(index) src.RemoveItem index End Sub 'Move os itens de uma lista para outra 'Entre com a capacidade = quantidade de linhas na lista destino, -1 se ilimitado Private Sub movelist(src As ListBox, dst As ListBox, ByVal capacity As Integer) Dim index As Integer index = 0 Do While index < src.ListCount If src.Selected(index) Then If capacity = 0 Then src.Selected(index) = 0 index = index + 1 Else moveitem src, dst, index If capacity > 0 Then capacity = capacity - 1 End If End If Else index = index + 1 End If Loop If src.ListCount = 0 Or capacity = 0 Then MoveBtn.Enabled = False End If src.ListIndex = -1 EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub OKBtn_Click() Dim i As Integer

Page 101: Configuracion PI.pdf

86

For i = 0 To OutList.ListCount - 1 tagname(i) = OutList.List(i) ptno(i) = OutList.ItemData(i) pttype(i) = getPtType(ptno(i)) apistat = pipt_pointtypex(ptno(i), pttypex(i)) Next i For i = OutList.ListCount To ntags - 1 tagname(i) = "" ptno(i) = 0 Next i reconfig = True Hide End Sub Private Sub OutList_Click() If OutList.ListIndex > -1 Then MoveBtn.Caption = "<<" MoveBtn.Enabled = True Else MoveBtn.Enabled = False End If EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub OutList_DblClick() movelist OutList, SearchList, -1 End Sub Private Sub SearchBtn_Click() Dim count As Long Dim found As Long Dim numfound As Long Dim pt As Long Dim src As String Dim status As Long Dim tagmask As String Dim tagname As String * 80 SearchList.Clear tagmask = MaskText.Text count = 0 ProgBar.Width = 0 ProgBar.Visible = True 'pega o primeiro ponto equivalente status = pipt_wildcardsearch(tagmask, 0, found, tagname, Len(tagname), pt, numfound) If status = -1 Or numfound = 0 Then 'nenhum ponto encontrado MsgBox "Nenhum Tag foi encontrado.", vbExclamation, "PI Tag Monitor Message" Exit Sub ElseIf ChkPIstatus("pipt_wildcardsearch", status) <> 0 Then Exit Sub End If If found <> 0 Then 'encontrou pelo menos um ponto Do 'entra em loop até que não encontre mais nenhum ponto count = count + 1 'atualiza a barra de progressão ProgBar.Width = ProgBox.Width * count / numfound src = getptsource(pt) 'are we showing only one source? If ShowOneSource = 0 Or src = SourceText Then SearchList.AddItem tagname 'adiciona a lista SearchList.ItemData(SearchList.NewIndex) = pt 'adiciona o PointNumber também End If status = pipt_wildcardsearch(tagmask, 1, found, tagname, Len(tagname), pt, numfound) If found = 0 Then Exit Do Loop Until ChkPIstatus("pipt_wildcardsearch", status) <> 0 End If ProgBar.Visible = False EnableButtons 'habilita os botões como requerido End Sub Private Sub SearchList_Click() If SearchList.ListIndex > -1 And OutList.ListCount < ntags Then MoveBtn.Caption = ">>" MoveBtn.Enabled = True Else MoveBtn.Enabled = False End If EnableButtons 'habilita os botões como requerido End Sub Private Sub SearchList_DblClick() movelist SearchList, OutList, ntags - OutList.ListCount End Sub Private Sub ShowOneSource_Click() SourceText.Enabled = ShowOneSource.Value End Sub

Page 102: Configuracion PI.pdf

87

Anexo G – PI Data Insert – Código Fonte do DataInsert Form

Dim tagname As String Dim PointNumber As Long Dim PointType As Long Dim i As Integer Dim j As Integer Dim rval As Double Dim bVal As String Dim drVal As Long Dim iVal As Long Dim bSize As Long Dim istat As Long Private Sub AJUDA_Click() MsgBox "Para inserir um novo valor no banco de dados do PI, basta digitar o valor desejado na caixa de texto e clicar em ENVIAR. O formato para data e hora é dd-mmm-yy hh:mm:ss" End Sub Private Sub Atual_Click() Data.Text = FormatTime(pitm_systime()) End Sub Private Sub Enviar_Click() 'rotina responsável por enviar o dado coletado nas caixas de texto 'para o servidor do PI For i = 0 To 19 If i <> 19 Then If Value(i).Text <> "" Then tagname = "U144-" + Var(i).Caption pt = pipt_findpoint(tagname, PointNumber) pt = pipt_pointtypex(PointNumber, PointType) If IsNumeric(Value(i).Text) Then If PointType = 12 Then 'valor real rval = Value(i).Text istat = 0 End If If PointType = 8 Then 'valor inteiro? If Int(Value(i).Text) = Value(i).Text And Int(Value(i).Text) <= 32767 And Int(Value(i).Text) >= 0 Then istat = Value(i).Text rval = 0 Else MsgBox "Um valor INTEIRO é necessário para " & tagname Value(i).Text = "" Value(i).SetFocus Exit Sub End If End If ElseIf PointType <> 105 Then 'inseriu texto, mas é necessário número MsgBox "Um valor NUMÉRICO é necessário para " & tagname Value(i).Text = "" Value(i).SetFocus Exit Sub End If If PointType = 105 Then 'string bVal = Value(i).Text drVal = 0 iVal = 0 bSize = 0 istat = 0 sflag = 0 End If Envia_Ja End If ElseIf Valor.Text <> "" Then tagname = "U144-" + Var(i).Caption pt = pipt_findpoint(tagname, PointNumber) pt = pipt_pointtypex(PointNumber, PointType) bVal = Valor.Text

Page 103: Configuracion PI.pdf

88

drVal = 0 iVal = 0 bSize = 0 istat = 0 sflag = 0 Envia_Ja End If Next i Wait.Interval = 500 Wait.Enabled = True End Sub Private Sub SAIR_Click() End End Sub Private Sub Wait_Timer() For j = 0 To 19 Confirma(j).FillColor = &H8000000F If j = 19 Then Valor.Text = "" Else Value(j).Text = "" End If Wait.Enabled = False Next j End Sub Private Sub Envia_Ja() If PointType <> 105 Then pitime = parsetime(Data.Text, 0) If pitime <> "" Then If ChkPIstatus("piar_putvalue", piar_putvalue(PointNumber, rval, istat, pitime, 0)) = 0 Then unconfirmed = True Confirma(i).FillColor = RGB(0, 255, 0) 'luz verde End If Else MsgBox "Você precisa especificar data e hora a serem inseridos" Data.SetFocus End If End If If PointType = 105 Then pitime = parsetime(Data.Text, 0) If ChkPIstatus("pisn_putsnapshotx", pisn_putsnapshotx(PointNumber, drVal, iVal, ByVal bVal$, bSize, istat, sflag, pitime)) = 0 Then unconfirmed = True Confirma(i).FillColor = RGB(0, 255, 0) 'luz verde End If End If End Sub

Page 104: Configuracion PI.pdf

89

Anexo H – Supported Input Point Types (ABB/Bailey Data to PI)

Bailey Point Type

Description Data Type

Bailey Function Code

OIS Type Name Extended Attribute

1 Process Variable A note 1 Station No

2 Set Point Read A note 1 Station No

3 Control Output Read

A note 1 Station No

4 Ratio Index Read A 80, 23 Station No

5 Analog Read A 30 Analog Yes

6 Station Status D note 1 Station Yes

7 Digital Read D 45 Digital No

14 Module Status D No

15 RCM Read D 62 RCM Yes

19 RMSC Read A 68 RMSC Yes

21 4-byte Analog Read

A Yes

29 DAANG A Yes

30 ASCII string S No

51 MSDD D 129 Yes

52 DD D 123 Yes

53 RMC D Yes

54 DADIG D Yes

60 Text Selector I No

70 Harmony Analog Input

A Yes

71 Harmony Analog Output

A Yes

72 Harmony Digital Input

D Yes

73 Harmony Digital Output

D Yes

Page 105: Configuracion PI.pdf

90

Anexo I – Lista Completa de parâmetros do blysem.bat

rem BLYSEM.bat OSIsoftware Inc. rem command file to start the PI/ABB/Bailey semAPI Interface rem rem Parameters: rem Universal Interface parameters (in any order ) rem /host=X ! specifies host name of PIserver if it is not the rem default server defined in pilogin.ini. rem /id=X ! interface ID number, Required rem /ps=X ! point source for interface. Required rem /ec=X ! IO rate counter rem /sn ! Overrides exception reporting to use snapshotting rem rem Interface Specific parameters (in any order ) rem /in=X ! Interface number, should match location1 of PI tags, rem if not defined, generated from interface ID string. rem /ici=X ! ABB/Bailey logical ICI number, set to interface ID number rem if not define rem /icdb=X ! interface specific debug level, 0 [def] rem /to=X ! ICI timeout (ICI goes offline after not receiving rem messages from interface for the timeout period), rem 90 [def], 0 for no timeout. Maximun timeout is rem 240 second. Also, interface will restart itself if rem getting consecutive errors exceeding the timeout rem period. rem /fm=X ! failover mode, 0[def] for no failover, 1 for primary, rem 2 for secondary rem /fp=X ! failover Primary PCU address. Required for secondary rem /dl=X ! delay [sec] between ABB/Bailey get exceptions: rem default one second rem /me=X ! Max exceptions per iteration: default is 2500 [def] rem /mp=X ! Max number of points for this interface, 30000 [def] rem /ef=X ! Exception screening 0=none [def], else 1 rem /of=X ! Outputs to ABB/Bailey allowed if 1, else 0 [default] rem /ts=X ! Time sync [0] default no timesync; 1 -> pi master, rem -1 -> ABB/Bailey master rem /EVG=X ! Event logger group number for ASCII event rem /EVT=X ! event logger type number for ASCII event rem rem /fv=X ! Analog filter limit (mininum 1000) rem /fs=X ! Analog filter digital status code(positive or negative) rem /rc ! Range checking at interface level rem /hncc ! Must be set if connecting to HNCC and not ICI03

Page 106: Configuracion PI.pdf

91

Parameter Explanation

/FM=0 This option controls the fail-over mode of the interface. Specify /FM=1 for the primary interface and /FM=2 for the secondary interface. Also, for the secondary interface, you need to supply the PCU number of the ICI mode communicating to the primary interface. The details of the fail-over mechanism are described in FailOver Operation section.

/TO=90 This option specifies the ICI module watch dog timer. If the interface stops communicating with the ICI module for a period longer than the specified watch dog timer, the ICI module will go off-line, setting all the output points (PI to ABB/Bailey) bad quality. For systems using PI values in the ABB/Bailey control loops, the watch dog timer will prevent old value from being used in the control loop. Also, you should not set the watch dog timer to 0 if the interface is set up as fail over primary interface. Otherwise, the secondary interface will not pick up data collection when the primary interface stops communicating with the ICI module. See the FailOver Operation section for details.

/EF =0 This option controls the exception screening behavior of the ICI module. With exception screening option enabled, the INFI90 sends only deviation exceptions, no maximum time exceptions. Though this feature will significantly reduce the communications traffic, it can prevent the PI system from reconstructing the data between two exception reports accurately. For example: if a value changes slowly, then ABB/Bailey would not send the change until the total change exceeded the deviation limit. Therefore, one cannot distinguish a step change from a linear change. Hence, this option is set to 0 by default. The EF option is primarily used for system with mostly digital or discrete data.

/TS=0 This option controls the time synchronization behavior between ABB/Bailey and PI systems. Note that the interface cannot change the PI system time if the interface is running on a VMS PINET node or when the interface is running on Windows NT. Also, if the interface is linked to a Data Acquisition version of semAPI, the interface cannot set the time on the ABB/Bailey System. When you specify VMS as the time master, additional configuration is required. The time master of the loop is determined by the time accuracy factor on each node. Hence, you need to set the time accuracy to 15 or greater on the CIU module through the CIU utilities by connecting a terminal to the CIU termination unit. See the CIU manual for details on how to use the CIU utilities.

/EVG= and /EVT=

Define the Event Logger group and type to be used when ascii data (type 30) is sent to the Event Logger.

/FV= and /FS

Analog filter parameters. /FV specific a limit. If the analog values from ABB/Bailey is greater than this value, they will be replaced by a digital state code (specified by /FS) by the interface. The FV parameter has to be greater than 1000 to be considered valid by the interface. If /FV is not specific, no analog filter checking will be performed by the interface (even if /FS is specified). If /FS is omitted, the interface will default to NODATA(code 248) as the digital state to substitute the analog value over the filter limit. The Analog filter check is supported starting in version 1.3.1 of the interface.

/RC Range Checking enabled at interface level. All analog values above (Zero + Span) will be replaced with digital state OverRange. All analog values below Zero will be replaced with digital state UnderRange.