Configuracion PI.pdf

May 24, 2018 | Author: czavalaga | Category: Cracking (Chemistry), Physical Sciences, Science, Chemical Substances, Chemistry


Comments



Description

UNIVERSIDADE FEDERAL DE SANTA CATARINACURSO 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 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 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 À memória de minha filha Santra. com todo carinho. i . pelo companheirismo.por meio do Programa de Recursos Humanos da ANP para o Setor Petróleo e Gás . pela habilidade com que orientou meu trabalho nunca deixando de me incentivar. estando sempre presentes quando surgiram dúvidas relacionadas ao sistema PI. propiciando um ambiente de trabalho favorável. que com paciência me explicou o funcionamento do processo de Craqueamento Catalítico Fluidizado. Luciana Monteguti. ii . Aos estagiários da PETROBRAS/UN-SIX. apesar das dificuldades ligadas ao tema. Ao operador Gilson Mauro Herbst. facilitador de minha jornada. pela competência e dedicação. amizade e suporte emocional que proporcionou. Ao professor e orientador Julio Elias Normey Rico. À engenheira química e amiga. Ao suporte da OSIsoft. pela sua grande dedicação e conhecimento em projetos de pesquisa. que prontamente aceitou o desafio de me orientar.PRH nº34 . que colaborou no início do projeto explicando o funcionamento do sistema. Ao apoio financeiro da Agência Nacional do Petróleo .ANP .Agradecimentos Ao engenheiro e orientador Alberto Jamhour. responsáveis pela minha formação.e aos professores do curso de Engenharia de Controle e Automação Industrial. que compartilharam o período de estágio comigo.ANP/MCT.e da Financiadora de Estudos e Projetos . compreensão e amizade. À PETROBRAS/UN-SIX pela oportunidade de estágio e aprendizado oferecidos. em especial ao estagiário e amigo João Rodrigues Giovani de Souza e à estagiária e amiga Daniela Muccillo.FINEP .UFSC . conhecedor do Sistema PI. À Universidade Federal de Santa Catarina . Obrigada pelo companheirismo. e pela minha formação profissional. especialmente Wanda Eaton e Justin Starnes. os quais admiro imensamente pela inteligência e pela maneira com que vivem e enxergam a vida. ajudandome com palavras sábias de um verdadeiro amigo que ele é. pessoa a qual admiro muito. que para mim. agradeço saudosa de minha pedra preciosa e filha Santra. pela dedicação e amor durante toda a minha vida. alegrias e tristezas. pessoa que também admiro e amo. carinho e amor dedicados a mim. obrigada pelo companheirismo.A minha mãe Tânia Regina Ferreira. Clarice Urban Chagas e Michelle Bonatti. Ao meu namorado. Ricardo Gabriel Steinbach. Por fim e não menos importante. Leonardo Soliz Encinas e Hermínio Matias Neto. mais que um amigo é um irmão. sempre me incentivando e dando força para seguir em frente sem me deixar abater. uma pessoa convicta e sensível. e a minha irmã gêmea Aziza Kamal Genena. Às amigas. pelo constante incentivo para prosseguir na busca do meu ideal. iii . que sempre compartilhou entusiasticamente de várias idéias. retidão e perseverança. sempre compartilhando comigo os bons e maus momentos. deixando saudade. determinação. energia e luta. que sempre foram fontes de amizade e força. Engenheiro de Controle e Automação Industrial. estando presentes em diversas situações da minha vida. exemplo de coragem. que faleceu no decurso deste projeto. Agradeço em especial ao amigo Leandro de Souza. rendo-lhe meu amor eterno e homenagem. 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. obrigada pelo incentivo dedicado a mim. uma pessoa de visão e motivadora. Aos amigos da graduação: Victor Rocha. A conclusão de um curso de graduação é um passo no desenvolvimento pessoal num tempo em que a única constante é a mudança. iv . As atividades desenvolvidas na Petrobras/SIX que serão abordadas nesta monografia estiveram relacionadas ao conhecimento do sistema.Resumo O sistema PI (Plant Information) pode ser traduzido como um conjunto de ferramentas que permite o acompanhamento de processos industriais. instalação e configuração de uma nova interface de coleta de dados entre o SDCD e o servidor. o armazenamento do histórico dos dados desses processos e o acompanhamento online das suas variáveis. criação de telas de processo para acompanhamento do processo nas máquinas clientes. O objetivo do Projeto de Fim de Curso foi a implementação. 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). configuração e customização do sistema PI na Unidade Multipropósito de Craqueamento Catalítico Fluido da SIX. atualização e inserção de novos tags no banco de dados do servidor. os quais são responsáveis por monitorar e inserir dados manualmente no servidor. e principalmente o desenvolvimento de aplicativos em Visual Basic. v . The objective of this dissertation is to describe the developed work of implementation. 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. vi . creation of process screens for attendance of the process in the client machines. and mainly the development of applications in Visual Basic. the storage of the processes data report and the on-line attendance of their variables. configuration and customizing of the PI System in the Fluid Catalytic Cracking Unit of SIX. installation and configuration of a new interface of data collection between DCS and server. The developed activities that will be approached in this monograph were related to the knowledge of the system. which are responsible for monitoring and manually inserting data in the server.Abstract The Plant Information System (PI System) can be defined as a group of tools that allows the attendance of industrial processes. updating and inserting of new tags in the server's database. .....1: Abastecimento..............................Sumário Agradecimentos....4: Carga para Craqueamento ....................................4: Unidade Multipropósito de FCC – U144.......3....................................................5: Variáveis Operacionais...........16 2.....................4: Internacional ..............................3..................................................................................14 2......1...............4 2...............................................................2.................3: Catalisadores para FCC ....................5 2.........19 2.......................... vi Sumário ..............2......................................3 2...19 2.................................................... ii Resumo ..................................................................................6 2................................................... v Abstract .........1..................................3.........................................................6 2..................... x Índice de Anexos ....1............9 2.........................2: Unidade de Industrialização do Xisto – SIX ......................................3..............1: Processo PETROSIX ..5 2........................................................1 Capítulo 2: Petrobras – Petróleo Brasileiro S/A..........21 vii ...............................................................................................3....................................................................20 2..................1: Áreas de Atuação...................2: Exploração e Produção .......................................................................................................3: Gás e Energia...............................4 2............... vii Índice de Figuras .....................................................................2: Produtos de Craqueamento..........2: Gerência de Pesquisa – GEPES ...............................1....................................................................................................................................................................................3: Craqueamento Catalítico Fluido....................................................13 2........4 2...........1: Descrição Sumária do Processo .......................................................... xii Capítulo 1: Introdução ......... ...........2.....................4...........35 3.........2: Criação de Planilhas para Automação de Tarefas Repetitivas ..........6: Fluido de Selagem.2.........3..................4................7: Amostrador de Topo e Sistemas de Condensação ....22 2............................................................39 3.......................................43 Capítulo 4: Etapas do Trabalho Desenvolvido....24 2...............2: Teste de Exceção............................1: Descrição Geral.......................................................................50 4..................37 3........28 3...................44 4.....35 3..........3: Interface semAPI .............26 3............................................................55 4.................4..................1.......................2: Fluxo de Catalisador...................................4: Desenvolvimento de Aplicativos em Visual Basic ................2: Tags .......1....................................................3..................4.....................1.........2........................30 3......3: Compressão dos Dados ....2: Cálculo de Estados Digitais ....................................................1: O Armazenamento dos Dados ..........................................4: Fluxo de Ar ....21 2.....24 2.......................2: Utilitários Clientes...........4..................................................30 3.................................44 4.........................................50 4........................3: Cálculo de Valores Atuais das Variáveis ....1: Cálculo de Atributos dos Tags a partir do BD do SDCD.................3: Acesso aos Dados ....33 3.............................................3: Fluxo de Carga ..........................1: PI-API ..........4...............1: Instalação e Configuração da Interface..................3: Criação de Telas de Processo .....23 2..........4..................................................................60 viii .......5: Fluxo de Vapor ........................3........................................................................2....................................23 2...............................54 4....24 Capítulo 3: O Sistema PI .............................................................4: Sistema de Controle Distribuído – SDCD .....29 3.............................................................................................................................................53 4........................................1: Buferização dos Dados ............ ...............71 Anexos:.........................................60 4..................3: PI Data Insert..2: Entrada Manual de Dados .....................4.................................................................1: PI Tag Monitor .....64 4................68 Bibliografia:............72 ix ......................................4.65 Capítulo 5: Discussão dos Resultados..................... Conclusões e Perspectivas ..........................................................................................4................................................................................4.......................... ............................................................................................................32 Figura 17 – Determinação do valor a ser armazenado..................30 Figura 14 – Parâmetros de Compressão..................31 Figura 16 – Zona Morta da Compressão .............29 Figura 13 – Como funciona o Exception Report .....................................................................................................26 Figura 7 – Arquitetura do Sistema PI na SIX .......................................................................................................................................................7 Figura 2 – Processo Petrosix..............................................................................................39 x .....38 Figura 22 – PI Point Builder.9 Figura 4 – Diagrama de Blocos do Craqueamento Catalítico..............................29 Figura 12 – Sistema de Buferização.......27 Figura 8 – Processamento de Informações Novas.......................................28 Figura 10 – Fluxo da Exceção à Compressão ............................................................33 Figura 19 – Resultado Final da Compressão dos Dados .....................................Índice de Figuras Figura 1 – Produtos e Subprodutos do Xisto .................................8 Figura 3 – Unidade de extração do óleo de xisto (retorta)....................................29 Figura 11 – Exemplo do Processo de Filtragem dos Dados.....36 Figura 21 – PI Tag Configurator – add-in para Microsoft Excel ............................................................................................................................33 Figura 20 – Máquina Cliente com PI-API................22 Figura 6 – Fluxo dos Dados...............................................................................31 Figura 15 – Primeiro Passo da Compressão de Dados.....................................28 Figura 9 – PI Snapshot Subsystem ..16 Figura 5 – Unidade Multipropósito de FCC...............................................38 Figura 23 – Interface – Intermediador na Coleta de Dados .............................32 Figura 18 – Compressão dos Dados ................... ............52 Figura 35 – Estados Digitais Lógicos....67 xi ...............................46 Figura 29 – Buffer Primário de Memória sendo utilizado ..............................59 Figura 43 – PI Tag Monitor – Splash Screen...........41 Figura 27 – Tela do LICENTRY ................................................................................................................................................................................................40 Figura 26 – Estrutura do Interfaceamento ABB/Bailey-PI semAPI ............................................................49 Figura 30 – Buffer Secundário de Memória sendo utilizado ..................51 Figura 33 – Guia BD SDCD.......................52 Figura 34 – Guia Cálculo para Exportar .........Figura 24 – Esquema do Interfaceamento ABB/Bailey-PI semAPI.......45 Figura 28 – Tela do ICICONF.................................................................54 Figura 37 – Retorno de Valor Atual das Variáveis ..................................................................................59 Figura 42 – Gráfico do PI-ProcessBook .................................62 Figura 46 – PI Tag Monitor – Resultado da Busca Efetuada..........................................................................58 Figura 41 – Tela criada no PI-ProcessBook ....61 Figura 44 – PI Tag Monitor – Tela de Monitoração dos Dados ..56 Figura 39 – Comparação entre telas de processo..............49 Figura 31 – Guia EngUnits ..............................................................................................................................................55 Figura 38 – Lista de telas do PI-ProcessBook....................61 Figura 45 – PI Tag Monitor – Tela de Busca ..................................................................................39 Figura 25 – Módulo/Cartão de Comunicação INICI03 ............50 Figura 32 – Guia Bailey PointType .......53 Figura 36 ......57 Figura 40 –Tela de Processo Geral criada no PI-ProcessBook..........................66 Figura 49 – PI Data Insert – Processo de Inserção dos Dados ............................................................Estados digitais de cada tag digital .....................................................................................63 Figura 47 – PI Tag Monitor – Monitoramento de Variáveis.................................64 Figura 48 – PI Data Insert – Tela de Inserção dos Dados ... ...........................................73 Anexo C – Código Fonte do arquivo piutil........................87 Anexo H – Supported Input Point Types (ABB/Bailey Data to PI) ......72 Anexo B – Código Fonte do arquivo piapi32...........bat .............Índice de Anexos Anexo A – Fluxograma Unidade Multipropósito de FCC .................................bas......82 Anexo E – PI Tag Monitor – Código Fonte do Display Form ..83 Anexo F – PI Tag Monitor – Código Fonte do Search Form................bas...........................................90 xii ..........................89 Anexo I – Lista Completa de parâmetros do blysem...........................................85 Anexo G – PI Data Insert – Código Fonte do DataInsert Form.79 Anexo D – PI Tag Monitor – Código Fonte do Splash Form............ especialmente no que diz respeito à comunicação entre o SDCD e a interface de coleta dos dados. quando necessárias. que significa cliente. o foco inicial do trabalho resumiu-se em fazer com que a interface funcionasse corretamente. por fim. iniciando pela U144 (Unidade Multipropósito de Craqueamento Catalítico Fluido). 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.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. Assim. Sendo o sistema PI um conjunto de servidor/cliente desenvolvido para automatizar totalmente a coleta. originando da palavra do inglês customer. Por implementação entende-se dar efeito prático a algo concebido através de uma ação objetiva. e a elaboração roteiros para manutenção e implementação adicionais. configuração e customização do mesmo de acordo com os objetivos a serem alcançados pela companhia. O sistema PI foi encontrado fora de funcionamento. 1 . tem o sentido de adaptar os produtos e processos ao gosto do cliente. esse Projeto de Fim de Curso está completamente inserido no contexto do curso de Engenharia de Controle e Automação Industrial. onde se trabalhou junto à Gerência de Pesquisa com o sistema PI (Plant Information). Constavam entre os objetivos do trabalho a ser realizado: a operacionalização do sistema para as unidades de pesquisa da SIX. armazenamento e apresentação das informações de um processo. Customização. Assim. realizado durante período de estágio na empresa Petrobras/UN-SIX. Configurar por sua vez significa dar forma. a integração dos dados oriundos do PI com os programas para balanço de massa e energia da unidade. durante a realização do trabalho foi possível efetivar de fato o funcionamento do sistema PI. sendo exigida a implementação. No decorrer da monografia poder-se-á acompanhar as etapas de desenvolvimento do trabalho realizado. seguindo o princípio de que é preciso conhecer bem o sistema para poder configurá-lo e fazê-lo funcionar corretamente.A metodologia adotada foi baseada no aprendizado e no conhecimento adquirido progressivamente sobre o funcionamento do sistema através de manuais. Finalmente. bem como o funcionamento da interface semAPI que executa a coleta de dados do SDCD. no capítulo 2. 2 . acompanhadas de esclarecimentos sobre projetos quando esses se fizerem necessários. no quinto e último capítulo. a título de informação para os leitores e de sua implementação na Unidade de Industrialização do Xisto – SIX. Nesse mesmo capítulo é feita uma descrição do processo de craqueamento catalítico fluido. No capítulo 3 descreve-se os conhecimentos adquiridos sobre o sistema PI e seu funcionamento. internet e contatos com o fabricante e o representante no Brasil. é apresentada uma discussão dos resultados. junto com conclusões e perspectivas sobre o projeto. é 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. No quarto capítulo são descritas as atividades desenvolvidas pela autora. onde se faz uma análise crítica das realizações e dificuldades encontradas durante o período. Primeiramente. a Petrobras era criada para executar as atividades do setor de petróleo no Brasil em nome da União. um órgão formulador da política pública de energia. apoio em eventos internacionais. o Brasil ingressou no seleto grupo de 16 países que produz mais de um milhão de barris de óleo por dia. esses são números da Petrobras que representam sua forte presença no Brasil.Capítulo 2: Petrobras – Petróleo Brasileiro S/A Em outubro de 1953. acompanhamento do desenvolvimento da economia americana e européia. E nesse mesmo ano foi criada a Lei nº. mais de dez refinarias. que abre as atividades da indústria petrolífera à iniciativa privada. operação financeira com bancos e bolsa de valores.478. 2. recrutamento de pessoal especializado. entre outros. a Petrobras conta ainda com o apoio de seus escritórios no exterior como em Nova Iorque e no Japão.004. Além disso. a Petrobras seguiu preparada para a livre competição. encarregada de regular. há o CENPES. Em 1997. foram criados a Agência Nacional do Petróleo (ANP). que possui uma das mais avançadas tecnologias do mundo e é reconhecido internacionalmente pela sua competência. 9. Colômbia. Estados Unidos e Nigéria. afretamento de navios. Bolívia. Com a lei. Argentina. Noventa e três plataformas de produção. A Petrobras desenvolve diversas atividades no exterior e mantém uma consistente atividade internacional. colocando-se entre as vinte maiores empresas petrolíferas na avaliação internacional. tal como: compra e venda de petróleo. materiais e serviços. e o Conselho Nacional de Política Energética. tornou-se líder em distribuição de derivados no país. Além de estar presente em diversos países como Angola. tecnologias. Em sintonia com a mudança do cenário. equipamentos. através da Lei nº. 3 . Ao longo de quatro décadas. quase dezesseis mil quilômetros em dutos e mais de sete mil postos de combustíveis. contratar e fiscalizar as atividades do setor. o Centro de Pesquisas da Petrobras. ampliando novas perspectivas de negócios e tendo maior autonomia empresarial. Impulsionado pelo fato de grande parte das reservas brasileiras se encontrarem em bacias marítimas a grandes profundidades. Como empresa de energia. de modo a atender a crescente demanda por derivados. bases.mercado esse composto por 140 milhões de consumidores.refino. as atividades da companhia estão divididas em: Exploração e Produção. identificação. produção e incorporação de reservas de óleo e gás natural dentro do território nacional.2: Exploração e Produção O órgão de Exploração e Produção (E&P) da Petrobras é responsável pela pesquisa. refino. eliminando.7 milhões de barris/dia . abastecimento até a distribuição.1. tem alçado a Petrobras à excelência mundial em desenvolvimento e aplicação de tecnologia de exploração e produção em águas 4 . dentro da já existente estrutura de processamento. a Petrobras precisa enfrentar outro desafio: adaptar suas refinarias de modo a aumentar a taxa de conversão de diferentes tipos de óleo. Desde a exploração de gás e petróleo até a distribuição. a Petrobras atua em várias áreas desse setor. O termo downstream.2.1. localização. terminais e navios. desenvolvimento. desde a exploração de gás e petróleo. a dependência da importação. o E&P. Gás e Energia.1: Abastecimento A Petrobras abastece quase toda a demanda do mercado brasileiro por derivados de petróleo – cerca de 1. e Internacional. passando pelo refino e abastecimento. Além do objetivo de aumentar sua capacidade de produção.1: Áreas de Atuação A Petrobras atua em várias áreas do setor de energia. Abastecimento. assim. está ligado à boa parte da estrutura operacional da companhia: suas onze refinarias. a Petrobras é a nona maior companhia no setor downstream . na Petrobras. em parceria com outras áreas da Companhia. 2. De acordo com a Petroleum Intelligence Weekly. transporte e comercialização. 2. dutos. duas fábricas de fertilizantes. Para isso. que irão garantir a oferta deste combustível em todo o país. oferecido na Offshore Technology Conference (OTC). no ano 2001.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. A área de Gás & Energia da Petrobras é responsável por grande parte da estrutura de transporte e comercialização. Estados Unidos. Colômbia. a Companhia está associada às maiores empresas de petróleo do mundo.4: Internacional A Petrobras desenvolve também diversas atividades no exterior e mantém uma consistente atividade internacional. como: exploração. 5 . recrutamento de pessoal especializado. Argentina. 2. materiais e serviços. entre outros. automotivos. equipamentos. Bolívia. em parceria com o setor privado.1. pela segunda vez. o Distinguished Achievement Award. Casaquistão. na geração e co-geração de energia. operação financeira com bancos e bolsa de valores.profundas. Entre todos os combustíveis atualmente disponíveis em larga escala. tecnologias. apoio em eventos internacionais. atuando sempre de maneira segura e ambientalmente correta. do prêmio mais importante da indústria mundial de petróleo. o gás natural é aquele que se destaca como o mais versátil. afretamento de navios. compra e venda de petróleo. fazendo-se presente em Angola. acompanhamento do desenvolvimento da economia americana e européia. a Petrobras dedica esforço permanente junto às distribuidoras de gás e seus clientes.1. Ainda assim. Esse esforço foi reconhecido internacionalmente através do recebimento. 2. Nigéria e Trinidad & Tobago. buscando alternativas técnicas e econômicas que ampliem o uso do gás nos segmentos industriais. 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. econômico e limpo. Guiné Equatorial. em plena 6 . Rio Grande do Sul. que comprovou a viabilidade técnica do processo PETROSIX. com a missão de estudar as potencialidades do xisto betuminoso e a viabilidade econômica de sua transformação industrial. Em função da capacidade tecnológica desenvolvida na exploração do xisto. testou equipamentos e levantou dados básicos para projetos de usinas industriais.1%. onde também se encontram a mina e a área industrial.4 metros de espessura e teor de óleo de 6. Santa Catarina. e a camada inferior com 3. Paraná. Mato Grosso do Sul e Goiás. A sede está localizada no município de São Mateus do Sul. A Petrobras concentrou suas operações na jazida de São Mateus do Sul. promove e apóia os órgãos públicos de defesa do meio ambiente e entidades ambientalistas.2 metros de espessura e teor de óleo de 9. que engloba os estados de São Paulo. entrou em operação a Usina Protótipo do Irati (UPI). 25 milhões de toneladas de gás liquefeito. 2. Assim.9 bilhão de barris de óleo. 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. vários projetos estão sendo desenvolvidos em conjunto com universidades e centros de pesquisas. a 140 quilômetros de Curitiba.4%. no Paraná. O processo de consolidação da tecnologia PETROSIX se completou em dezembro de 1991.2: Unidade de Industrialização do Xisto – SIX A Unidade de Industrialização do Xisto foi constituída em 1º de junho de 1954. Em 1972. a Gerência de Produção e a Gerência de Pesquisa. a Petrobras resolveu transformar a planta industrial do xisto também num centro avançado de pesquisa na área de refino.2.2. onde o minério é encontrado em duas camadas: a camada superior de xisto com 6.1: Processo PETROSIX O Brasil tem um dos maiores volumes mundiais de xisto: reservas de 1. dentro da SIX podem ser encontrados dois núcleos distintos. Além disso. a SIX confere atenção especial à preservação dos ecossistemas. cidade do Paraná. Hoje. quando entrou em operação o Módulo Industrial (MI). a SIX processa diariamente 7. 120 toneladas de gás combustível. 7 . injetada pela base da retorta. Depois de minerado a céu aberto. Então. que entra na zona de retortagem e se mistura com uma segunda corrente.800 toneladas de xisto betuminoso.870 barris de óleo de xisto. 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. que geram 3.escala. que reduz as pedras a tamanhos que variam de 6 a 70 milímetros. 45 toneladas de gás liquefeito de xisto e 75 toneladas de enxofre. Atualmente. o xisto vai para um britador. para recuperar o calor do xisto já retortado. estas pedras são levadas a uma retorta. O calor para a pirólise é fornecido por uma corrente gasosa de elevada temperatura. Figura 1 – Produtos e Subprodutos do Xisto A principal característica da tecnologia desenvolvida pela Petrobras é a simplicidade operacional. 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. passam por dois outros equipamentos (ciclone e precipitador eletrostático). Depois de retirado o óleo leve. 8 . a massa gasosa ascendente cede calor ao xisto e se resfria.Figura 2 – Processo Petrosix Nas zonas de aquecimento e secagem. denominada gás produto. resultando na condensação dos vapores de óleo sob a forma de gotículas. outra também volta à retorta após ser aquecida em um forno. e a terceira. O gás limpo de neblina de óleo (ou seja. com as gotículas de óleo. transportadas para fora da retorta pelos gases. vai para um condensador onde o óleo leve é recuperado. onde são coletados o óleo pesado e as partículas sólidas arrastadas na etapa anterior. 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. Estes. 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.2.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. produzindo gasolina. Com a implantação do Programa de Desenvolvimento de Tecnologias Estratégicas de Refino (Proter). A nafta é toda processada pela refinaria. a SIX vem atuando como um centro de desenvolvimento de tecnologia. trabalhando em conjunto com o Centro de Pesquisas da Petrobras – CENPES. a SIX passou a trabalhar nas áreas de craqueamento 9 . 2. principalmente na área de refino. Refinaria do Paraná.2: Gerência de Pesquisa – GEPES Desde sua criação em 1954. agora dito “retortado”. inicialmente para o aproveitamento do xisto e a partir de 1991 em outros projetos. 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. é devolvido à área minerada que será reabilitada. 2. baixa perda de carga e elevado fator operacional. 2.catalítico. Assim. a partir do resíduo de vácuo de Petróleo Marlim. desasfaltação. Desenvolve equipamentos e processos.4: Unidade a Frio de Ciclones Avalia novas concepções e novas geometrias de ciclones. Determina a influência de variáveis de processo no rendimento e na qualidade dos produtos. com tamanho e distribuição de gotículas controlados. riser. que maximiza a produção de diesel com qualidade. formando um jato em leque.2. 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. resfriador de catalisador e stripper. hidrogenação e no desenvolvimento de novas rotas para o aproveitamento do coque e do resíduo asfáltico.2. regenerador.2.2.2. entre as quais destacamos: 2.3: Unidade de Hidroconversão de Resíduos Desenvolve tecnologia de hidroconversão. 2. 2. Levanta dados de projetos de novas unidades de FCC de resíduos.2. Avalia novas condições operacionais e desenvolve ciclones de alta eficiência. 10 . facilidade de contração.1: Unidade Multipropósito de FCC Estuda o craqueamento catalítico de petróleos nacionais. possuindo diversas plantas piloto. baixo consumo de fluido de atomização e baixo diferencial de pressão.2. e testa catalisadores.2: Unidade de Nebulizadores de FCC Desenvolve dispersores de carga com boa distribuição de vazão. alta durabilidade. Testa e desenvolve equipamentos como ciclones. 1 tonelada de pneus rende: 532 kg de óleo.2.2.2. Produz cortes pesados para estudos de produção de asfaltos especiais. Realiza testes de co-processamento e outros produtos na carga de desasfaltação.2.6: Unidade de Destilação Produz cortes de gasolinas especiais de competição. 11 . Avalia o desempenho de solventes com diferentes composições.7: Unidade de Desasfaltação Estuda a influência das variáveis operacionais na qualidade e rendimento dos produtos. Avalia internos de torres. O processo Petrosix permite a reciclagem de 140 mil toneladas/ano.2. ou o equivalente a 27 milhões de pneus . Pesquisa materiais e desenvolve equipamentos para unidades de alto desempenho e refino de petróleo nacional.8: Unidade de Pneus Armazena e promove a dosagem correta de pneus picados à carga de minério.2. 314 kg de carbono e 110 kg de aço. Produz cortes de petróleo para estudo da qualidade e rendimentos dos produtos. 2. 24 kg de gás. com ênfase na conversão de resíduos.2. especialmente para a Fórmula 1. 2.2. Faz a avaliação de internos de torres.2. 2.5: Unidade de Recirculação de Catalisador Pesquisa para propiciar aumento da taxa média de utilização do parque de refino. tais como: Espectrômetro de absorção atômica com geração de hidretos. com equipamentos de última geração. modelo CHN2000. Utilizada para preparo de misturas diversas. modelo NS9000.2.phase doppler particle analyser) e sua velocidade no interior de ciclones (LDV . combustíveis para queima e testes de fornos. Cromatógrafo para análise de PIANIO .2.2.2. Espectrômetro por quimiluminescência e fluorescência para determinação de nitrogênio e enxofre. da Varian.2.9: Unidade de Tratamento e Misturas Reverte termicamente o concentrado nitrogenado de gasóleo.laser doppler velocimeter).11: Laboratório de Medição de Partículas a Laser Laser de argônio INNOVA 70C-5. hidrogênio e nitrogênio.2. Analisador por infravermelho e condutividade térmica para determinação de carbono. da Antec.10: Laboratório O laboratório está preparado para realizar análises elementares completas. POT STEEL e D1150). Bancada de destilação (PEV. 12 .2. Destilador D-86. 2. de 5 watts. sendo capacitando a realizar mais de 120 trabalhos e ensaios. 2. da Leco. o laboratório fornece suporte a todas as plantas do Parque Tecnológico. Além de executar ensaios de acompanhamento de processos e vendas da SIX. Cromatógrafos para destilação simulada (D-2887 e HT750) da HP. modelo Aa220. viabilizando a acidificação de cargas para UFCCs. para medir o tamanho de partículas (PDPA .HP 6890. visando aumentar a conversão e qualidade dos produtos. A partir da segunda década do século. entretanto.2.2. móvel ou fluidizado. o rendimento situava-se em torno de 20% em volume. tanto a qualidade como a quantidade dependiam unicamente do tipo de cru refinado. 2. materiais e equipamentos. até atingir o estágio em que hoje nos encontramos. Testa queimadores. Otimiza condições operacionais. Até 1913.12: Laboratório de Combustão Obtém informações a respeito da queima de diversos tipos de combustíveis e suas emissões.2. Em média. objetivando suprir as necessidades da indústria automobilística. em leitos fixo.2. 2.2. havia também uma grande variação no rendimento e na qualidade das gasolinas. em função do combustível e queimador. Estuda emulsões diversas e tratamentos de rejeitos industriais. portanto. Iniciando com o craqueamento térmico. sendo atualmente o principal processo de conversão das frações pesadas de petróleo para produtos leves das refinarias modernas. toda a gasolina produzida era obtida por destilação direta do petróleo. onde o craqueamento catalítico fluido é praticamente um processo imprescindível às modernas refinarias. desenvolvendo-se de forma notável esta última concepção. Como havia grande variedade de petróleos.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. começaram a surgir processos comerciais de craqueamento. inclusive particulados. o processo mais tarde passou a utilizar a versão catalítica.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. 13 . O conjunto reator-regenerador é denominado conversor. O craqueamento catalítico corrige a produção de gasolina e GLP. o coque é queimado. principalmente compostos de 3 a 12 átomos de carbono (GLP e Gasolina). em derivados nobres de alto valor. 2. de baixo valor comercial. devido à sua grande flexibilidade operacional. em altas temperaturas. A deposição de coque provoca a desativação do catalisador. por ação de um catalisador à base de sílica-alumina. 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.1: Descrição Sumária do Processo O processo consiste na quebra de moléculas pesadas presentes nos gasóleos e resíduos. restabelecendo a atividade catalítica. em menor escala. este último depositando-se na superfície do catalisador. devido à seletividade do catalisador usado.3. O FCC é hoje um processo largamente difundido em todo o mundo. através da conversão de cortes pesados provenientes da destilação do petróleo (gasóleo e resíduos). uma vez que a demanda de gasolina em vários países é superior a dos óleos combustíveis. gasóleos leve e pesado. por intermédio de uma injeção de ar e por ação de alta temperatura. devido principalmente a dois fatores. A ruptura das ligações possibilita o aparecimento de moléculas leves. transformando frações residuais. 14 . e coque. É um processo largamente utilizado em todo o mundo. O segundo fator que tornou consagrado o processo está ligado ao aspecto econômico. 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. em frações mais leves. de gases leves. suplementando a diferença entre a quantidade obtida diretamente do petróleo e a requerida pela refinaria de modo a atender ao mercado. devido à considerável redução da área disponível aos reagentes (hidrocarbonetos).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. As reações provocam também a formação. Esta corrente também é conhecida como Óleo Decantado ou Óleo Clarificado. principalmente gás combustível. A finalidade da seção de recuperação de gases é. A corrente de gás ácido rico em H2S.Os gases de craqueamento efluentes do reator são encaminhados à seção de fracionamento. proveniente do tratamento DEA. tratamento que remove mercaptanas. 15 . onde. o Gás Combustível do Gás Liquefeito – GLP. através de operações de compressão. O tratamento Merox é também chamado de adoçamento Merox (Mercaptan Oxidation). Esses compostos causam efeitos negativos na qualidade da gasolina. enquanto a fração líquida é constituída de nafta instabilizada (grande quantidade de gases leves dissolvidos). através da absorção. C2. Pelo fundo da torre produz-se um óleo pesado. uma vez resfriada e condensada parcialmente. bastante denso. absorção. As mercaptanas são compostos orgânicos que contém enxofre. A corrente gasosa é composta de hidrocarbonetos leves (C1. através de uma queima controlada da corrente gasosa. e utiliza soda cáustica – hidróxido de sódio – para remover as mercaptanas através da formação de dissulfeto. como mau cheiro e formação de goma na estocagem da gasolina. A fracionadora produz. denominado Resíduo de Craqueamento. processar as correntes de gases e de nafta instabilizada. que do GLP e da nafta. e o tratamento Merox . Após essas operações as frações são destinadas à estocagem. retificação e destilação em várias etapas. do tipo RSH. como corte lateral. por intermédio de uma torre de destilação. é normalmente enviado à Unidade de Recuperação de Enxofre (URE). onde. gera no tambor de acúmulo duas correntes. obtém-se uma separação primária dos cortes produzidos. onde R é um radical orgânico. Pelo topo da torre sai uma corrente gasosa composta da nafta (gasolina) de craqueamento e de hidrocarbonetos mais leves que. C3 e C4). tratamento que utiliza dietilamina (DEA) para remover compostos indesejáveis (contendo enxofre) de corrente de gases. e dela separar três frações distintas. Ambas as correntes são enviadas à seção de recuperação de gases. 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. tem-se então a produção de enxofre elementar. N2. ela é encaminhada a caldeiras recuperadoras de calor. metano. outros gases.Os gases de combustão provenientes da queima do coque durante a regeneração do catalisador saem dessa etapa em elevadas temperaturas. iso-butano. como o propano. onde produzem vapor de água de alta pressão.2. Além desses. 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.2: Produtos de Craqueamento 2. Os três últimos compostos citados são provenientes do arraste de gás de combustão pelo catalisador regenerado. em menores proporções. superiores a 700ºC. CO2.3. De modo a aproveitar todo o potencial energético dessa corrente.3. 16 . resfriando os gases de combustão antes dos mesmos serem lançados à atmosfera. n-butano.1: Gás Combustível É composto basicamente de hidrogênio. etano e eteno. n-buteno. CO. podemos encontrar também. iso-buteno. propeno. Figura 4 – Diagrama de Blocos do Craqueamento Catalítico 2. Especificamente no Brasil isto é de extrema importância.3. Este. bastante superior aos valores de naftas de destilação e de processos térmicos de conversão. Esta proporção de hidrocarbonetos conduz a uma gasolina de bom índice de octanagem. butanos e butenos. Em menores proporções ocorre também a presença de etanos e pentanos. onde esse elemento é produzido. é enviado à unidade de recuperação de enxofre (URE). que reduz o teor daquele elemento. de tal modo que o gás combustível sai praticamente isento de H2S. 2. Outros compostos de enxofre podem estar também presentes. que é eliminado pelo tratamento DEA.2. O teor de enxofre de nafta de craqueamento é alto.2. 2. A Unidade de FCC é a principal responsável pela geração do gás liquefeito nas refinarias. propeno.3: Nafta de Craqueamento A nafta produzida no FCC. o problema tende a se agravar devido à maior quantidade de enxofre de natureza aromática. é um excelente componente para a produção de gasolina. isoparafinas e aromáticos. devido à sua composição. sendo pobre em naftênicos e n-parafinas. 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.Há também uma proporção variável de H2S. tendo seus teores reduzidos através do tratamento Merox. Quando craqueamos cargas com resíduos. é removido da mistura gasosa pelo tratamento DEA. De forma similar ao gás combustível. gerado pelas reações de craqueamento dos compostos sulfurados presentes na carga. que o tratamento Merox não consegue remover. devido ao grande consumo desse derivado que temos no país. 17 . Este gás. Ela é rica em olefinas. também há ocorrência de H2S.2: Gás Liquefeito de Petróleo (GLP) O GLP de Craqueamento basicamente é composto de propano. necessitando submetê-la ao tratamento Merox. porém. O rendimento da gasolina no craqueamento varia de 50 a 65% do volume.3. conhecido como gás ácido. Devido à elevada aromaticidade. conforme sua característica. embora bastante denso. Em função dessa composição. 2.2. ele tem também uma alta relação carbono/hidrogênio.3. ela é enviada para ser processado numa URE. é como o último nome indica. O Óleo Clarificado. plásticos. 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.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. servir como diluente do resíduo de vácuo para a produção de óleos combustíveis. não sendo aproveitado como óleo diesel.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. também conhecido como Óleo Clarificado (ClO). pigmentos pretos. etc. é muito menos viscoso que os resíduos de vácuo. sendo rica em H2S. além de grandes quantidades de olefinas e diolefinas de longas cadeias. ele pode ser enquadrado como Resíduo Aromático (RARO). seu número de cetano é baixo. à semelhança do LCO. Seu maior uso em refinarias é. Óleo Combustível de FCC e Resíduo de Craqueamento.2. 2. 18 . Ele é constituído de uma elevada concentração de aromáticos bi e tri nucleados com ramificações.2.3. Por isso.2. com algumas ramificações e olefinas pesadas também ramificadas. Este produto é riquíssimo em hidrocarbonetos aromáticos polinucleados.3.5: Óleo Decantado O Óleo Decantado. o produto líquido mais pesado das reações de craqueamento. O negro de fumo é utilizado como carga para produção de pneus. produto este que pode ser vendido às indústrias petroquímicas especializadas em produção de negro de fumo (carbono coloidal finamente dividido). 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. elevando sua temperatura em 100 a 350°C. Ele promove a ocorrência de reações de quebra em condições bem mais suaves do que aquelas requeridas ao craqueamento térmico. Agente de transferência de calor – o calor gerado pela queima do coque no regenerador é parcialmente utilizado no aquecimento do catalisador. A circulação do catalisador retira esta energia do regenerador e a utiliza para aquecer e vaporizar a carga. sua facilidade de queima. 2. de modo a possibilitar e manter as reações de craqueamento. pois caso não houvesse o catalisador. a quantidade e a qualidade dos produtos são bastante superiores ao processo realizado na ausência de catalisador. o gás combustível é largamente consumido em fornos e caldeiras das diversas unidades da refinaria. sendo esta a principal fonte de calor do processo. onde é queimado. Suas características influenciam diretamente na conversão. produzindo energia. Isto se observa constantemente no craqueamento térmico.3. acabando por provocar entupimentos. e em conseqüência. Além disso. Agente de transporte de coque – o carbono depositado na superfície do catalisador é transportado do reator ao regenerador. seu caráter antipoluente (em virtude do baixo teor de enxofre) e sobretudo porque – caso não seja utilizado – será queimado na tocha. o coque formado tenderia a se depositar no interior dos vasos de reação.Devido ao seu alto poder calorífico. reduzindo. em conseqüência. Este efeito é muito importante. na qualidade e quantidade dos produtos obtidos pela quebra das moléculas. 2. 19 . o tempo de operação contínua da unidade.4: Carga para Craqueamento A carga enviada a uma unidade de craqueamento constitui-se em uma das mais relevantes variáveis deste processo. 2. Dentro deste último grupo.3. classificados como impurezas. cobre. fazendo com que as reações não ocorram corretamente.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. A insuficiência da queima de coque causa um acúmulo deste no catalisador. por sua vez. Equilíbrio químico: também chamado de equilíbrio de coque ou balanço de carbono. naftênicos e aromáticos nas suas diversas formas e arranjos. a insuficiência na geração de coque afeta o balanço térmico. Equilíbrio de pressões: é fundamental para que o catalisador circule corretamente e não ocorra inversão do fluxo. ferro e vanádio) e alcalinos (sódio. assim como as impurezas que nela estão presentes. Por outro lado. Podem-se classificar as variáveis operacionais em dois grandes grupos: variáveis independentes (ou de ação direta). além de outros compostos de caráter orgânico ou não. nas quais se atua através de um controlador e variáveis dependentes (ou de ação indireta).A qualidade da carga é determinada pelos vários tipos e quantidades de hidrocarbonetos que a constitui. oxigênio e enxofre. atividade do inventário de catalisador. potássio e cálcio). Assim. olefínicos. A carga é constituída de hidrocarbonetos parafínicos. A composição da carga. temperatura do 20 . que são alteradas em conseqüência da mudança de alguma variável independente. A baixa geração de energia causa temperaturas insuficientes do catalisador. é influenciada pelas características do petróleo original e do seu refino. consiste na queima do coque gerado na reação. Pode-se citar como variáveis independentes: vazão de carga fresca. encontram-se os compostos orgânicos de nitrogênio. causando danos ao equipamento e ao catalisador. o Craqueamento Catalítico é um processo bastante complexo devido à quantidade de variáveis que estão envolvidas. o que afeta as conversões. qualidade da carga fresca. juntamente com pequenas quantidades de metais pesados (níquel. 2. transformando-as em frações nobres. Desenvolvimento de equipamentos e sistemas. de porte intermediário entre uma unidade piloto e protótipo. Como variáveis dependentes podem-se citar: conversão.4. por exemplo. Pressão do reator entre 1. por sua vez. razão catalisador/óleo. vazão de ar para combustão. como GLP e Gasolina. Estudo de processos em novas condições operacionais.1: Descrição Geral A unidade de FCC visa o aproveitamento de certas frações de petróleo. temperatura da fase densa do regenerador. tempo de contato. As principais características da planta são: Carga entre 60 e 300 kg/h. Temperatura de reação entre 460 e 580 ºC. etc. considerando variáveis como: temperatura. Estas unidades. rendimento dos produtos.reator. catalisador. sendo adequadas para estudos de otimização de processos e equipamentos. alteração das vazões processadas e de catalisadores. Temperatura de regeneração entre 600 e 730 ºC. etc. A unidade multipropósito estuda. circulação de catalisador.5 kgf/cm2 man. 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. o comportamento do processo. pressão. tempo de contato.4: Unidade Multipropósito de FCC – U144 Plantas multipropósito são unidades de testes que visam reproduzir condições operacionais reais. 21 . buscam representar os fenômenos de um processo. 2. etc.0 e 2. Temperatura de carga entre 100 e 350 ºC. temperatura. O riser apresenta quatro pontos de injeção da carga. através do riser onde ocorrem as reações de transformação da carga. sendo então arrastado pelos vapores de hidrocarbonetos e vapor de água. Na saída do riser o fluxo passa por ciclones onde há a separação catalisador/produtos. permitindo variar o tempo de contato entre 0. fornece calor vaporizando-a. Ao entrar em contato com a carga. hidrocarbonetos vaporizados e vapor de água. diferenciais de pressão com grandes facilidades de acompanhamento. o que se consegue com ar. 2. que conta com inúmeros indicadores de pressão.2: Fluxo de Catalisador O catalisador percorre um circuito fechado dentro do conversor. agregando-se o coque ao catalisador. O catalisador regenerado e aquecido escoa do regenerador para a base do riser.Figura 5 – Unidade Multipropósito de FCC A planta é monitorada por um SDCD – Sistema de Controle Distribuído. O escoamento se torna possível por toda a massa estar em estado fluidizado. O catalisador escoa pelas pernas dos ciclones e deposita-se 22 .5 e 3 segundos com qualquer tipo de carga.4. 4. A seguir passa por um segundo permutador de calor. A seguir é enviada para os bicos dispersores. o fluxo é aquecido e direcionado para a base do regenerador onde.no stripper onde passa por um processo que utiliza vapor de água para a retirada dos hidrocarbonetos que podem estar presentes no catalisador.4. Os produtos armazenados durante o teste são amostrados e transferidos para o tanque de produtos. que são devolvidas ao regenerador.3: Fluxo de Carga A carga é pré-aquecida a certa temperatura. 23 . com o objetivo de alterar o tempo de contato com o catalisador. O fluxo segue então para os tanques de selagem e em seguida para o flare onde os gases são queimados. 2. O fluxo isento de sólidos é lançado na atmosfera. através de uma placa distribuidora. Os gases formados no regenerador passam por ciclones para a separação de partículas arrastadas do leito. onde em contato com o ar queima o coque agregado durante as reações.4: Fluxo de Ar Passando por um aquecedor. como já citado. entrando no riser e vaporizando em contato com o catalisador. Após a passagem pelo riser e pelos ciclones. entra no equipamento promovendo a fluidização e queima do coque no catalisador. Do stripper o catalisador escoa por uma tubulação para o regenerador. completando-se o ciclo. A carga pode ser injetada no riser em quatro pontos distintos. o gás separado do catalisador passa para a primeira etapa de condensação. 2. onde o óleo condensado é armazenado nos tanques e a corrente gasosa mais os hidrocarbonetos leves passam por um condensador a freon. regenerando-o. 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.6: Fluido de Selagem Ar e gás inerte servem como fluidos de selagem para o processo em linhas e válvulas. seguindo então para o sistema de condensação. a corrente passa por um permutador a ar. é retida. vapor de água. coletado também no tanque. Vapor de “estripagem”: É utilizado para remover os hidrocarbonetos presentes no catalisador. condensando uma fração menos pesada de óleo.4. A corrente que segue ao topo da unidade é então composta apenas de vapores e gases. sendo que estes e o vapor saem pelo topo do stripper somando-se ao fluxo de produtos. No amostrador de topo.2.7: Amostrador de Topo e Sistemas de Condensação Após o craqueamento. Entra no “riser” pelos bicos dispersores.4. Vapor de dispersão: É o vapor utilizado para atomizar a carga. gases e catalisador gasto (com coque). a mistura não condensada segue para uma torre de recheio. O último permutador utiliza freon. seguindo também com os produtos para o sistema de condensação sendo posteriormente separado. sendo condensada a parte mais leve do óleo. 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). na qual a neblina restante.4. nos quais o catalisador gasto é separado. O restante da corrente passa por um permutador a água. O gás inerte é pressurizado e armazenado em um vaso pulmão. que passou com esta corrente. 2. condensando parte do óleo. Esta mistura segue para dois ciclones em série. sai do riser uma mistura contendo vapores de hidrocarbonetos. onde um compressor garante sua pressão na saída. Finalmente. O 24 . 2. que é coletado em um tanque. tem sua amostra coletada para análise cromatográfica e é depois queimada no flare. A vazão de gás é indicada pelo SDCD. 25 . O óleo (composto de todas as frações condensadas) também é encaminhado ao laboratório para a destilação simulada. e depois de separado de grande parte da água.gás resultante é coletado e levado para a análise cromatográfica. existe um medidor MGU (Medidor de Gás Úmido). passa por um sistema de condensação semelhante ao do Amostrador de Topo. Para medir a quantidade de gás que passa pelo amostrador de topo. O óleo condensado é coletado em um tanque. A outra parte da corrente que sai do ciclone e que não foi desviada ao RMS. porém com os dois primeiros permutadores a á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. em geral. Operadores. Figura 6 – Fluxo dos Dados 26 . O servidor ou nó primário é chamado de servidor PI. Atualmente o sistema PI conta com mais de 350 interfaces para mais de 500 sistemas de controle. tornando-se a ligação principal entre a área industrial e o escritório. Muitos nomes são utilizados para fazer referência a essa coleção de módulos de software. servindo como servidor de dados para aplicações cliente. gerenciando essas operações. 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. engenheiros e gerentes podem usar as aplicações clientes para visualizar os dados armazenados no servidor PI.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. Neste documento. Assim. localmente e/ou remotamente. que são designados para pegar informação diretamente do processo de produção. armazenamento e apresentação das informações da planta de um processo. Ele foi desenvolvido para executar a monitoração e análise de plantas de processo. e compartilha os dados com a organização. refere-se ao sistema como um todo. sistema PI ou simplesmente PI. O servidor colhe a informação dos nós de coleta de dados. o sistema PI é freqüentemente utilizado como uma integração e plataforma de desenvolvimento de largas aplicações. onde o servidor PI coleta os dados de um número qualquer de fontes. Este servidor. A Figura 6 ilustra como os dados fluem do sistema de controle para dentro do arquivo de dados do servidor PI. é otimizado para realizar a coleta de informações. A arquitetura do sistema é o que faz o sistema PI tão robusto e valioso.O fluxo de dados se dá do processo de produção para o sistema de PI. Tudo começa com a camada de informações da planta ou do processo de produção. assim como as bases de dados que estão associadas a ele. Figura 7 – Arquitetura do Sistema PI na SIX 27 . 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 28 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 29 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 30 Tal zona também é chamada de cobertura de compressão. Nesse caso a primeira "zona morta" é desenhada em volta do primeiro ponto e estendida até o próximo ponto e aos pontos consecutivos. 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.cálculo da média ou a técnicas de amostragem periódica para determinar a tendência dos mesmos. A largura do paralelogramo é duas vezes o valor CompDev (um valor de desvio para cima e um para baixo). 31 . 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. O processo de compressão de dados reinicia novamente a partir do valor que acabou de ser armazenado. 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. como pode ser verificado na Figura 18. o PI armazena um valor no PI Data Archive. (fora dos paralelogramos). ao invés disso. ele armazena o valor anterior. 32 . como pode ser observado nas ilustrações a seguir.Quando qualquer valor fica fora da cobertura de compressão. Figura 16 – Zona Morta da Compressão O sistema PI não armazena o valor que cometeu a violação. Figura 18 – Compressão dos Dados Finalmente o processo de compressão termina para o exemplo citado. por exemplo: o fluxo em uma tubulação.2: Tags Cada tag possui uma localização única no sistema PI. um comentário em forma de texto. qualquer coisa que possa ser medida pode ser capturada utilizando um tag do PI como uma definição. o CompDev. mas sim um bom senso do que ocorreu com os dados. Os valores circulados são os que serão armazenados em arquivo. um modo de controlador em operação. 3. A precisão da tendência dos pontos armazenados depende do valor escolhido como desvio de compressão. Figura 19 – Resultado Final da Compressão dos Dados Note que PI não armazena exatamente o que aconteceu. 33 . e deve ser utilizado para armazenar fluxos individuais de dados. os resultados de um totalizador. O valor padrão é K para pontos da Pesquisa. etc. Point Source: permite agrupamento dos tags segundo a interface de dados utilizada (SDCD. normalmente. o Location2: deve ser igual a (INFI90 Loop Number * 256) + PCU Number. CLP. com por exemplo: analog. o Location3: INFI90 Module Number. o Location4: INFI90 Block Number. Estes atributos podem ser resumidos pela pergunta que cada definição tenta responder. RCM. station. Alguns dos atributos mais importantes são: • • • Tag name: nome único destinado a cada variável monitorada. o número da interface deve coincidir com o número lógico utilizado pelo software da ABB/Bailey. • Location#: define o endereço da informação no SDCD: o Location1: contém o número da interface. • descrever o tag para o servidor PI. determinando como o servidor deve armazenar a informação. Descriptor: descrição do tag com no máximo 26 caracteres. como: • descrever o tag para uma aplicação cliente e para o usuário. Span e Typical value: valor mínimo. determinando como a informação deve ser exibida. escala e valor típico. determinando como e onde a interface deve coletar a informação para a qual está destinada. • descrever o tag para a interface. 34 . Step: mostra a informação como ZOH (Zero Order Holder – Interpolação de Ordem Zero) ou como uma interpolação linear. Os tags possuem certos atributos que controlam como os dados são exibidos e manipulados dentro do sistema. o Location5: especifica o tipo de ABB/Bailey Point Type que será lido. ou outras fontes). digital.Cada tag do PI tem uma série de atributos para descrever as partes diferentes do sistema. • • Zero. etc. DataGroup.• PtOwner. robustez e flexibilidade. PtAccess: controla os usuários que podem modificar ou ver os atributos dos tags. É uma biblioteca de funções que permite acessar o sistema PI para leitura e gravação. 35 .1: PI-API O PI-API provê uma interface comum de programação para o sistema PI. PtGroup.exemplo: interface semAPI) 3. Delphi. O PI-API é uma biblioteca de funções que pode ser chamada a partir de linguagens de programação como C. DataAccess: controla quem pode ler ou escrever dados. • • Compression Specification: controla como a informação é arquivada. além de alterar ou obter configuração de pontos.COM-based object oriented module) PI ODBC / PI OLEDB PI Interfaces (Read/Write Interfaces . Estas funções permitem ler e escrever valores no servidor PI. incluindo escalabilidade.3.3: Acesso aos Dados O sistema PI permite a coleta de dados através de uma grande variedade de nós de rede. Usuários licenciados podem criar suas próprias aplicações fazendo uso dela. Visual Basic.C-style function library) PI-SDK (Software Development Kit . A própria OSIsoft (fabricante do PI System) utiliza essa biblioteca para criar as interfaces para várias plataformas. como: • • • • PI-API (Application Program Interface . Exception Specification: controla como os dados e o ruído são filtrados para obter-se um fluxo de dados limpo e significante. • DataOwner. C++. 3. Ele dispõe de ferramentas que possibilitam a criação de novos aplicativos para realizar o acesso aos dados. Essa estrutura distribuída oferece muitas vantagens sobre uma estrutura monolítica. O arquivo "piapi32.Figura 20 – Máquina Cliente com PI-API Todas as aplicações clientes da OSIsoft são escritas usando o PI-API. PI-BatchView. o PISDK ou uma combinação dos dois para comunicação com o servidor PI. PI-DataLink. PI-SQC. As funções do PI-API são divididas em grupos: • • • • • • • • PIAR: PIBA: PIEL: PILG: PIPT: PISN: PITM: PIUT: Archive functions (read and write) PI Batch functions Event Log functions Common dialog boxes & Message logging Point database functions Snapshot functions (read and write) Time functions Utility functions 36 . procedimentos e definições de tipos de variáveis da biblioteca PI-API. etc.bas" contém todas as funções. 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-AlarmView. um usuário pode trocar informação diretamente com o banco de dados do PI. • PI Tag Configurator: add-in para Microsoft Excel para criação e manutenção de tags.2: Utilitários Clientes Podem-se utilizar as aplicações clientes do PI para acessar os dados armazenados no servidor: PI-ProcessBook. Existem ainda ferramentas de gerenciamento do Sistema PI (PI System Management Tools). Essa ferramenta combinada com a funcionalidade da planilha eletrônica faz com que o PIDataLink seja um utilitário poderoso e fácil de usar por reunir. gráficos e valores das variáveis envolvidas. etc. PI-BatchView. 37 . PI-SMT.3. • PI Point Builder: aplicação para criação de tags e manutenção de tabela de estados digitais. • PI-ProcessBook: aplicação que possibilita ao usuário construir e visualizar telas de processos. analisar e relatar dados do PI. que permite criar gráficos dinâmicos. bem como copiá-los para uma planilha para realizar análises adicionais. PI-ManualLogger. • PI-DataLink: add-in para Microsoft Excel que possibilita a visualização de valores do sistema PI de diversas formas. PI-SQC. Também permite que sejam criadas telas de processo para acompanhamento em tempo real. Com PI-DataLink. PI-DataLink. PI-ActiveView. As funções do PI-DataLink são acessadas dentro do Microsoft Excel por um menu que aparece depois que o add-in é instalado. como o PI Tag Configurator e o PI Point Builder.3. É um pacote gráfico fácil de utilizar. PIControlMonitor. gráficos interativos mostrando dados em tempo real. Figura 21 – PI Tag Configurator – add-in para Microsoft Excel Figura 22 – PI Point Builder 38 . Figura 24 – Esquema do Interfaceamento ABB/Bailey-PI semAPI 39 .3.3.3: Interface semAPI Interfaces são módulos de software para coleta de dados de sistemas externos. A interface é o dispositivo necessário para realizar a comunicação entre o processo de produção e o servidor PI. CLPs. e sistemas de laboratório. Figura 23 – Interface – Intermediador na Coleta de Dados As origens típicas de dados são SDCDs. A interface utilizada na coleta de informação da Unidade de FCC onde o trabalho foi desenvolvido chama-se ABB/Bailey semAPI. Essa função pode ser facilmente identificada na figura a seguir. como pode ser visto na Figura 23 . O módulo INICI03 consiste de três módulos: INICT03 Computer Transfer. Essa interface foi desenvolvida para tirar proveito da biblioteca semAPI da ABB/Bailey. INNIS01 Network Interface. A interface trabalha com o módulo de interfaceamento com o computador INICI03 que é conectado ao computador via conexão SCSI. o módulo de interface com o computador. A interface controla todo o protocolo de comunicações da ABB/Bailey. Ethernet. disponibilizandoos em alto nível para a interface.A comunicação utilizando a interface semAPI exige o software semAPI RunTime da ABB/Bailey. IMMPI01 Multifunction Processor Interface. e SCSI. 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. 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. 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. 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. 40 . e ainda o software Blysem da interface PI-Bailey semAPI da OSIsoft. e este cartão está conectado à rede INFI90 da ABB/Bailey. A interface cria então uma lista indexada pelo número do pointID da lista de tags. 3. A topologia de rede usual utilizada pela interface é a ponto-a-ponto.1: Seqüência de Ações da Interface A seqüência de operações da interface após a inicialização é a seguinte.3. o PointSource é “K” e o número da INICI é 2. 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. 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.3. que gera um relato de exceção sempre que o valor ou status de uma variável muda. No caso da U144. ou quando um limite específico de tempo foi atingido desde o último relato. • 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. • Os dois últimos passos são repetidos continuamente enquanto a interface estiver rodando. 1 primária. tentando iniciar a comunicação com o módulo de comunicação da ABB/Bailey. a interface verifica se houveram alterações nesta tabela e promove então a alteração em sua tabela interna. Os parâmetros mais importantes a serem especificados no script de instalação da interface são os seguintes: /host=X /id=X /ps=X /ec=X /sn /in=X /ici=X /to=X /fm=X especifica o nome do host do PI Server ID da Interface pointsource para a interface contador da taxa de I/O ao usar este parâmetro haverá tratamento de exceção do PI sobre os exception reports da ABB/Bailey número da interface. deletando ou atualizando os atributos dos pontos. a interface entra na fase de coleta de dados. a interface cria um device driver que manipula fisicamente e em baixo nível os protocolos de comunicação.3. • A interface mantém a leitura dos exception reports até o número máximo de exceções especificada na inicialização da interface. deve coincidir com o atributo location1 da configuração dos tags do PI número da ICI da ABB/Bailey ICI timeout (O cartão de comunicação fica offline após não receber mensagem da interface por este período) modo de redundância . • Se mais de dois minutos se passarem desde a última leitura na tabela de pontos. adicionando.• A interface tenta iniciar a comunicação com o módulo de comunicação da ABB/Bailey. então ela volta para o início do procedimento. Após todos os dados serem estabelecidos e conectados. 3. 2 for secundária 42 . Quando a comunicação é estabelecida. • A interface então estabelece os tags na tabela do módulo de comunicação da ABB/Bailey. • Se a interface encontrar dez erros consecutivos durante a coleta de dados.3.2: Inicialização da Interface A interface permite que a sua inicialização seja customizada visando atender às necessidades de cada sistema. Assim. Eles foram concebidos de forma a permitir a escalabilidade do sistema e também a operação ininterrupta do processo. o controle lógico e a base de dados em diferentes placas de circuito dentro do computador. e. Os Sistemas de Controle Distribuído têm sido usados em aplicações que exigem um controle de processo em larga escala. dentro deste conceito distribuiu a IHM (Interface Homem Máquina). reduzindo assim o risco de falhas do sistema como um todo. é o responsável pela coleta de dados tanto analógicos quanto digitais na área de produção. substituindo os painéis dos controladores (variáveis analógicas) assim com os de relés (variáveis digitais)./dl=X /me=X /mp=X /ef=X /ts=X /f=X intervalo entre varredura das exceções da ABB/Bailey número máximo de exceções por interação número máximo de pontos para esta interface exception screening 0=default=não sincronização de tempo 1 -> pi master. O SDCD. onde é possível rodar várias operações complexas para uma variada gama de processos diferentes. 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. -1 -> ABB/Bailey master taxa de scan 3. possibilitando a inclusão de cartões de I/O e a redundância dos mesmos sem a parada da CPU do sistema. lançado em meados da década de 70. 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. 43 . A utilização de SDCDs reduziu o uso de computadores centralizados.4: Sistema de Controle Distribuído – SDCD O Sistema de Controle Distribuído – SDCD. faz-se necessário uma explicação sucinta do que é o Sistema de Controle Distribuído. Os SDCDs. muito embora não faça parte do sistema PI como um todo. tinha a função de automatizar uma planta por completo. que não estava coletando corretamente os dados provenientes do SDCD.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. o qual estava localizado ao lado do gabinete do SDCD. ou ainda. 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. após a conclusão de cada etapa proposta. Junto com o pacote semAPI Run-Time da ABB/Bailey. novos desafios foram sendo sugeridos. 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. o programa ICICONF tem como aplicabilidade definir um ICI lógico para cada módulo INICI instalado. De maneira geral. ao cabo SCSI conectado ao SDCD. deu-se início a um estudo específico sobre a instalação e a configuração da mesma. Por último ocorreu a instalação do software semAPI Run-Time da ABB/Bailey. Primeiro foi realizada a instalação do cartão de comunicação INICI03 no gabinete do SDCD da U144. ao hardware da interface. dividiu-se em etapas. 44 . O problema poderia estar relacionado: • • • • aos softwares instalados no computador da interface. Devido à urgência de solução do problema da interface. 4. ao próprio cartão de comunicação INICI03 do SDCD.Capítulo 4: Etapas do Trabalho Desenvolvido O trabalho desenvolvido no setor de Pesquisa da Unidade de Industrialização do Xisto. a interface não conseguirá conectar ao cartão de comunicação INICI. que define o ICI lógico para cada módulo INICI. Eles precisam ser inseridos em três lugares. A chave do software deve ser inserida no aplicativo LICENTRY. Figura 27 – Tela do LICENTRY No computador da interface está instalado o aplicativo ICICONF.O software key é um alfa-numérico longo e o user string é normalmente igual a "LICENSE01". Se os parâmetros corretos não forem utilizados. Ao tentar-se descobrir por que a interface não estava coletando os dados corretamente. Esses dois parâmetros são fornecidos pela ABB/Bailey. E o user string precisa ser inserido tanto no aplicativo LICENTRY como no ICICONF. 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) 45 . sla que contém os dados da licença da interface) • TCP/IP Port = 3001 (número da porta utilizada para comunicação). e do sistema de buferização da interface semAPI. 46 . 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. efetuado durante a instalação do PI-API. Figura 28 – Tela do ICICONF Após a realização da configuração correta do aplicativo ICICONF. • Network Communication Protocol = TCP/IP (tipo de rede de comunicação entre a interface e o servidor) • License String = LICENSE01 (nome do arquivo *. Aqui também poderia ser definido o IP da máquina ao invés do nome).• 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. não envolvendo qualquer segredo.bat da interface que coleta e transfere corretamente os dados pode ser visualizado a seguir: ------------------rem BLYSEM2. Foram copiados os arquivos blysem. A instalação do PI-API foi simples.00:00:00 /of=1 /q /stopstat ------------------- 47 .• Instalação da interface PI-Bailey semAPI (blysem.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 . O procedimento de instalação da interface PI-Bailey semAPI foi o seguinte: • Criou-se o diretório C:\PI\interfaces\blysem#\.bat. de acordo com o que foi mencionado acima. 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.exe e blysem#.exe e blysem.00:00:00 /f=00:00:45. com a configuração do startup da interface. de forma que os dois foram chamados de blysem#. As linhas de comando do arquivo blysem#. O código do arquivo blysem2.exe /host=S2811AU02:5450 /id=1 /ec=1 /ps=K /in=2 /ici=2 /me=1000 /to=180 /f=00:00:15. de forma que apenas bastou seguir os passos definidos pelo arquivo de setup.exe) com os parâmetros específicos para a o sistema ABB/Bailey da pesquisa. blysem2. • 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).00:00:00 /f=00:00:30.parametro das tags tipo K no PI Server) rem ID=1 (ICI primario.bat foram configuradas para customizar a interface.bat. onde “#” deveria corresponder ao número da interface que foi especificado usando o parâmetro /id no arquivo blysem#.bat para o disco rígido. 48 . Essa verificação foi feita utilizando-se o aplicativo para MS-DOS apisnap. estava funcionando corretamente. para verificar se o serviço de buferização.A interface foi testada ao executar-se o arquivo *.log. O propósito do Bufserv é continuar a coleta de dados da interface caso o servidor esteja desligado por algum motivo. 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. Quando foi verificado o correto funcionamento da interface.exe. a mesma foi configurada para rodar como um serviço do Windows. inicializando de maneira automática junto com o computador. A interface foi instalada como um serviço automático. Durante os testes para verificar se a interface estava funcionando corretamente foi utilizado o utilitário bufutil.exe. como pode ser observado nas Figuras 29 e 30. Sabe-se que o serviço de buferização foi instalado juntamente com o PI-API quando o mesmo foi instalado. caso o servidor estivesse desligado por algum motivo. Além disso realizou-se uma varredura por mensagens de erro no arquivo pipc. 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.bat. verificando-se se os dados estavam sendo transferidos corretamente para o arquivo de dados do PI no servidor. para verificar se os mesmos eram iguais.exe. Tais testes foram realizados utilizando-se os aplicativos PI-ProcessBook e apisnap. 49 . 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.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. 2. para que não haja erro ao buscar o valor das variáveis. Entre as planilhas mais importantes criadas estão as citadas a seguir. foi desenvolvida de maneira que utiliza dados provenientes do banco de dados do SDCD da ABB/Bailey. 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 faz-se necessário que as localizações dos pontos no SDCD sejam definidas com precisão.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. Figura 31 – Guia EngUnits 50 . para promover a correta configuração dos atributos. 4.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. Para isso foram criadas diversas planilhas eletrônicas utilizando o aplicativo Microsoft Excel para automação das tarefas repetitivas. Dentro da planilha as guias "EngUnits" e "BayleyPointType" não devem ser alteradas. se uma variável possuía seu “TAGTYPE” igual a “ANALOG”. e “Point Type”. PV/UNITS. LOOP. para correlacionar as tabelas e os valores armazenados nelas. Da mesma forma as “Unidades” de uma variável foram buscadas pelo valor do seu “Unit_ID”. então seu “Bailey Point Type” seria igual a 5. PV/HIGH. MODULE. Assim. 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. BLOCK. PV/LOW. Para isso foram utilizadas funções como “INDEX” e “MATCH”. Os dados a serem inseridos nessa guia são: TAGNAME. por exemplo. TAGTYPE. Além disso a guia “BD SDCD” é responsável por retirar das guias anteriormente citadas. dessa forma uma guia pode depender das outras para efetuar os cálculos para os quais foi designada. pois apenas servem de referência para a guia "BD SDCD" executar os cálculos. os valores para as colunas “Bailey Point Type”. 51 . Todas as guias da planilha foram interligadas. e o “Point Type” da variável foi determinado pelo “TAGTYPE” dela. PCU. “Unidades”. TAGDESC. Figura 34 – Guia Cálculo para Exportar 52 . compmin. typicalvalue.Figura 33 – Guia BD SDCD Na guia "Cálculo para Exportar". compressing. pointtype) são calculados a partir dos dados previamente obtidos. excdev. os outros atributos (locations. span. engunits. compdev. zero. compmax. Além disso. um add-in para Microsoft Excel. Figura 35 – Estados Digitais Lógicos Como pode observar-se na Figura 35. fornecido pela OSIsoft.2: Cálculo de Estados Digitais Utilizando o mesmo princípio da planilha anteriormente citada. a planilha também depende dos atributos LS0 à LS3 retirados do banco de dados do SDCD. 4.2. 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.Assim. 53 . essa planilha utiliza-se de uma tabela de estados digitais lógicos que são retornados pelo SDCD. Para exportar os dados calculados para o servidor. como pode verificar-se na guia seguinte. utiliza-se o utilitário PI-Tag Configurator. foi desenvolvida uma planilha responsável pelo cálculo do estado digital das variáveis coletadas pelo servidor PI. DOIS e TRÊS. podem ter significados diferentes como: abre e fecha. os valores digitais 0 e 1 monitorados pelo sistema PI. 4. preenchendo assim as colunas ZERO. Assim.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. início e fim. 54 . UM.Figura 36 . ligado e desligado.2. Esse add-in disponibiliza inúmeras funções para monitoramento e inserção de dados diretamente no servidor. PI-Data Link. etc. do valor encontrado nas colunas LS0 a LS3.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. ou ainda. sem que fosse necessário ir até a mesma para acompanhar o processo. 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.A função PICurrVal . ocorreu de forma gradativa e concomitantemente à realização de outras atividades. Para 55 . Figura 37 – Retorno de Valor Atual das Variáveis O desenvolvimento das planilhas eletrônicas que otimizaram diversas tarefas.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. retorna o valor atual das variáveis solicitadas. o nome das mesmas. a partir do conhecimento do tag. sem que fosse necessário acessar o software supervisório da ABB/Bailey para obter informações em tempo real. ou seja. como se verifica na Figura 37. 4. ou utilizando panos de fundo. • No novo Display pode-se montar o processo utilizando as bibliotecas do PI-ProcessBook. 56 . envolvia os seguintes passos: • Inserção de um novo Display (Menu File > New > ProcessBook Display (. onde se pode definir o nome do Display a ser criado.visualizá-las o usuário precisava possuir o aplicativo PI-ProcessBook instalado em seu computador. fazendo-se desenhos. No caso das telas criadas foram utilizados panos de fundo retirados do software supervisório da ABB/Bailey e editados.pdi) File > OK). Figura 38 – Lista de telas do PI-ProcessBook O processo de criação de telas do PI-ProcessBook para monitorar processos em tempo real. entrando com o mesmo na caixa de texto ProcessBook Name. como se verifica na Figura 39. Em Action Item deve-se a definir qual tela aparecerá ao 57 . é realizada a partir da inserção de um botão que aponte para o caminho correto. é preciso certificar-se de que a imagem a ser utilizada como pano de fundo tenha sido salva como "256 Color Bitmap". etc. são adicionados a partir do Menu Draw > Value. quando uma janela abrir-se-á e poder-se-á definir o servidor. • A inserção de links de uma tela de monitoramento para outra. o nome da variável a ser monitorada. Para inserir um botão utilize o Menu Draw > Button. o tipo de comando a que ele estará relacionado. Uma janela aparecerá onde se pode definir o nome do botão. o formato do número.Figura 39 – Comparação entre telas de processo • Para utilizar o pano de fundo. "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. no caso de criar um link para outra tela escolhe-se a opção Linked Display. • Os campos onde são mostrados os valores atuais das variáveis de processo a serem monitoradas em tempo real. Exemplos são mostrados abaixo. e por fim ainda pode-se escolher se esta ação abrirá uma nova tela ou permanecerá na mesma. Figura 40 –Tela de Processo Geral criada no PI-ProcessBook 58 . Ao todo foram criadas 49 telas de processo e 12 telas de gráficos.clicar o botão. Figura 41 – Tela criada no PI-ProcessBook Figura 42 – Gráfico do PI-ProcessBook 59 . 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.4: Desenvolvimento de Aplicativos em Visual Basic O trabalho final que foi executado para a Gerência de Pesquisa da SIX. A seguir são apresentadas telas passo a passo do aplicativo em funcionamento. responsável pela inserção de dados de laboratório no servidor. 4. foi o desenvolvimento de aplicativos em Visual Basic objetivando otimizar e automatizar o monitoramento das variáveis do processo de Craqueamento Catalítico Fluido. independente dos seus pointtypes (float32. É possível realizar uma procura pelas variáveis desejadas e mostrar seus valores corretos.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 única função do módulo piapi32.4. e a inserção de dados de laboratório no servidor PI. em tempo real ou não. A primeira etapa do desenvolvimento dos aplicativos. PI Tag Monitor e PI Data Insert. das variáveis armazenadas no servidor. 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.4. Foram desenvolvidos dois softwares. A Figura 43 mostra a tela inicial do programa. foi o estudo da linguagem de programação Visual Basic. int32 ou string). de acordo com o timestamp definido pelo usuário. O primeiro responsável pelo monitoramento amigável. a qual seria inserida nos aplicativos UMProcess/DataLab e UMProcess/BME.bas que coletava corretamente as variáveis do tipo string era piar_getarcvaluex. 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. onde se entra com o 60 . E o segundo. Figura 44. No caso do exemplo abaixo o Tag Mask escolhido foi “TI-144*”. 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. deve-se clicar no botão Procurar presente na tela de monitoração dos dados. No passo seguinte. para que a conexão com o servidor seja efetuada.nome do servidor na caixa de texto. e clica-se no botão Conectar. determinando assim 61 . o PointSource é igual a “K”. ou se a mesma deve procurar todos os tipos. Já no caso das variáveis inseridas manualmente no servidor. o PointSource é igual a “L”. 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.que o programa deve rastrear por todas as variáveis presentes no servidor PI que iniciam com o prefixo inserido na caixa de texto. 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”. No caso dos tags da Gerência de Pesquisa da SIX. 62 . A procura só é realmente efetivada após clicar-se no botão Procurar. 63 . e que a leitura dos tags do tipo string é realizada corretamente. para que o usuário consiga numa mesma tela monitorar todas as variáveis desejadas. Nela estão sendo monitoradas variáveis atualizadas pelo SDCD (TI-144*) e variáveis inseridas manualmente (U144*). A Figura 47 mostra a tela final de monitoramento do aplicativo elaborado. O número máximo de variáveis que podem ser monitoradas ao mesmo tempo pelo programa PI Tag Monitor é dezesseis. sendo a variável “U144-AAFluidoSerpentina“. evidenciando que a dificuldade apontada no início dessa seção foi superada. uma variável do tipo string.Figura 46 – PI Tag Monitor – Resultado da Busca Efetuada Outras buscas podem ser efetuadas. indicando que os valores inseridos não vêm de uma interface.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. 64 . O parâmetro Compressing normalmente deve ser igual a zero. mas sim de uma entrada do usuário ou de uma aplicação específica.Figura 47 – PI Tag Monitor – Monitoramento de Variáveis 4. 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. O PointSource utilizado para variáveis que recebem entrada manual de dados deve ser igual a “L” de Laboratory Tags.4. 4. o parâmetro DataAccess deve ser configurado para que seja igual a "o:rw g:rw w:rw". foi a inserção incorreta dos dados do tipo texto no servidor. 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. para tentar calcular que valor a variável teria se a medida tivesse sido realizada num momento particular. com o objetivo de unificar a base de dados. e o usuário tentar inserir um número fracionário. Assim como no desenvolvimento do PI Tag Monitor. o programa mostra uma mensagem de erro ao usuário solicitando que um número inteiro seja inserido. Interpolador de Ordem Zero. visou o lançamento dos dados da operação diretamente no servidor PI.4. caso esteja vazia. pois é considerada má prática interpolar linearmente entre valores inseridos manualmente. assim as aplicações criadas para inserir dados manualmente no servidor. porque não existe uma interface envolvida na coleta dos dados. utilizando a linguagem de programação Visual Basic. Os parâmetros Location# podem ser ignorados.3: PI Data Insert A elaboração do aplicativo PI Data Insert. O aplicativo testa se o dado inserido está de acordo com o PointType armazenado no servidor. bem como os parâmetros que para ela deveriam ser passados. Da mesma forma os parâmetros ExcDev. caso contrário ele executa o teste que verifica se o valor inserido é do tipo do valor determinado no servidor para aquela 65 . pois o teste de exceção normalmente é realizado pela interface. Após inúmeras tentativas descobriu-se a função que inseria corretamente strings no servidor. ele pula para próxima caixa de texto. ou variáveis calculadas num mesmo servidor. ExcMin. a maior dificuldade encontrada durante o desenvolvimento do PI Data Insert. Tal função era a pisn_putsnapshotx. o parâmetro Step geralmente é setado em um. terão acesso a ele e poderão escrever no banco de dados. e ExcDevPercent também podem ser ignorados. já que a maioria dos dados manuais devem ser mostrados com interpolação do tipo ZOH. Por último. alocando todos os valores de processo. assim se o número que está sendo inserido deve ser um inteiro.Por outro lado. ExcMax. e no caso da inserção manual de dados não existe interface envolvida. o programa ainda testa para verificar se o dado foi inserido corretamente. Após a inserção ser efetuada. para que ele possa dar continuidade ao processo de inserção do novo dado no servidor. o programa verifica se foi especificada a Data e Hora de inserção dos dados. se o valor passar por todos os testes citados anteriormente.variável. e acende uma “luz verde”. Figura 48 – PI Data Insert – Tela de Inserção dos Dados Assim. o programa solicita que o usuário especifique-o. para indicar que a ação foi efetuada com sucesso. 66 . se esse parâmetro não foi especificado. 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. com a Data e Hora especificadas pelo usuário. como ilustrado na Figura 49. ele é inserido no servidor. Figura 49 – PI Data Insert – Processo de Inserção dos Dados 67 . procedeu-se um estudo sobre o sistema PI que resultou num aprendizado progressivo sobre o que ele é e sua aplicabilidade no sistema Petrobras. O servidor PI da UN-SIX. é um servidor que armazena tanto os dados da produção. Com a interface funcionando adequadamente deu-se início ao desenvolvimento de ferramentas que automatizassem o processo de criação e 68 . possibilitando assim que esses dados pudessem ser acessados de qualquer máquina conectada à intranet da SIX. o que leva à necessidade de reinicialização da mesma.Capítulo 5: Discussão Perspectivas dos Resultados. concentrar todas as informações num banco de dados. devido suas potencialidades. 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. que processa o xisto. Vários componentes de hardware da máquina foram trocados. torna fácil a organização e o acesso a esses dados armazenados. onde foi realizado o Projeto de Fim de Curso. tem “congelado” em dias de temperatura muito altas. de forma que dados importantes de testes realizados pelas unidades não estavam sendo armazenados no servidor PI. passaram a ser enviados e armazenados corretamente no servidor. sendo esse o maior objetivo da implementação do sistema PI. que embora esteja coletando corretamente os dados. De fato. ou até mesmo da Petrobras. não solucionando o problema. Com a instalação e configuração da interface os dados de operação e testes das unidades. quanto os dados provindos das unidades de pesquisa. em especial da Unidade Multipropósito de Craqueamento Catalítico Fluido. comportando-se como uma máquina ociosa. Um problema a ser resolvido futuramente é o problema de travamento da interface. que resultou nessa monografia. Conclusões e No período inicial do estágio na SIX. um por um. para que os operadores da unidade. Assim. empresa desenvolvedora do sistema PI. Citando que durante o trabalho realizado. ou eram lidos incorretamente pelo aplicativo de monitoramento das informações. como também para monitorar as variáveis no período de tempo desejado. A principal dificuldade encontrada na elaboração desses dois aplicativos esteve relacionada aos dados do tipo texto. As quase cinqüenta telas de processo criadas para acompanhamento do funcionamento da Unidade de FCC utilizando-se o software PI-ProcessBook. inserir os dados no servidor. tivessem facilidade ao acompanhar o andamento do processo por outro aplicativo. à medida que o sistema foi sendo conhecido e desmistificado. o que não compensaria. O uso da palavra “desmistificado” é cabível. que ou eram inseridos incorretamente no servidor. o desenvolvimento dessas atividades transcorreu gradualmente.edição de tags no servidor PI. e especificar o estado digital de cada variável digital presente no servidor. tornaria uma tarefa extremamente trabalhosa. São aplicativos que customizam a maneira como os dados são vistos e inseridos no servidor. A não utilização das planilhas desenvolvidas. De modo geral.bas e piutil. A solução para esse problema com os dados do tipo texto foi encontrada a partir do contato com o suporte da OSIsoft. monitorar variáveis em tempo real.bas. e que fossem capazes de visualizar dados. foram criados e editados quase 1900 pontos no servidor PI. além de inseri-los corretamente no banco de dados do PI. para facilitar o desenvolvimento de aplicações em Visual Basic. uma vez que o sistema era previamente conhecido apenas pelo operador responsável pelo mesmo no setor de processamento do xisto na SIX. no caso o PI-ProcessBook. foram criadas planilhas eletrônicas utilizando-se o aplicativo Microsoft Excel. Os aplicativos PI Data Insert e PI Tag Monitor. responsáveis por: configurar corretamente os atributos dos tags. foram elaborados para facilitar a inserção dos dados da operação no servidor PI. em tempo real. O aspecto das telas do software supervisório da ABB/Bailey foi mantido. 69 . que disponibiliza dos módulos piapi32. permitem que o usuário monitore o andamento dos testes realizados em qualquer máquina conectada à intranet. sabendo que o trabalho desenvolvido no período de agosto de 2003 a fevereiro de 2004 teve seu valor reconhecido pelas partes interessadas. inseridas no contexto do curso de Engenharia de Controle e Automação Industrial. e com a transferência e disseminação das informações absorvidas. o sistema passou de desconhecido. • Adquirir e instalar o utilitário PI Active View para permitir acesso remoto via browser às telas do PI-ProcessBook. e por que não abandonado. para uma ferramenta valiosa de coleta. 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. configurar e customizar o sistema Plant Information. na Unidade Multipropósito de Craqueamento Catalítico Fluido. obtiveram sucesso.Com o aprendizado adquirido sobre o sistema. Conclui-se que as funções de implementar. 70 . armazenamento e gerenciamento dos dados provenientes de testes nas unidades de Pesquisa da SIX. CA: OSI Software Inc..9.3. December 1999 [ 4 ] BROWN.. San Leandro. 1011 p. November 2000.com 71 . July 2000.Bibliografia: [ 1 ] PI Application Programming Interface – Version 1. CA: OSI Software Inc. [ 5 ] http://www.3. [ 2 ] PI Data Link User's Guide – Version 1. Steve. San Leandro.12. 1999. San Leandro. [ 3 ] PI-Process Book – Programmer's Reference Manual – Version 2.osisoft. Visual Basic 6 Complete: Sybex. CA: OSI Software Inc.. Unidade Multipropósito de FCC U-144 PDRCV PRCVb Anexos: atm ciclones condensadores "flare" PRCVd ciclones atm FREON condensador "stripper" "riser" vapor HV condensador torre de absorção Anexo A – Fluxograma Unidade Multipropósito de FCC 72 silo de carga regenerador LRCV óleo pesado atm carga óleo leve catalisador atm ar de combustão ar TRCV gases de combustão vapor de "lift" óleo produto gases de combustão . Rem Rem 10 2/15/99 5:45p Charlie Rem pisn_evmexceptx: first argument changed to byref. 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 #. Rem pisn_sendexcepstrucq. See clientele call 52201GMBH. Once ' must treat function returns of char* as long in visual basic and then ' manipulate the long using win32 calls. Removed Byval declaration in piut_errormsg for Rem msglen. Rem pitm_isdst.227. Although visual basic strings can be returned as ' parameters in function calls (as long as they are declared as Byval ' String). DISCLOSURE. pilg_formputlog. Added missing $ type Rem in pilg_addnewserver. piut_fastserverversion. USE. Rem Rem 8 12/03/98 5:07p Charlie Rem Removed unusable PIvaluetypes. Inc. GETSAME. duplication.bas ' $Archive: /PI/clients/piapi/piapi32.tzinfo. '777 Davis Street. 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. and Rem BITFLAGS ' ' History 73 . visual basic strings cannot directly be returned by a function ' writen in C or C++ unless the C or C++ function returns a BSTR.bas $ 'Copyright (c) 1993-98 OSI Software. not Any. ' 'USE OF A COPYRIGHT NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION 'OR DISCLOSURE.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. Rem Rem 9 2/08/99 1:09p Charlie Rem Added pilg_checklog. 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.rights reserved under the copyright law of the United States. 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. pitm_setdst and piut_getserverversion. pisn_evmexceptx. Screws up VB projects ' that include it and want to use PISDK PITime. All rights reserved.reserved to Rem PITIMESTAMP. INC. San Leandro CA 94577 ' ' $Log: /PI/clients/piapi/piapi32. Added piar_putarcvaluesx and mode definitions. ' 'THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF 'OSI SOFTWARE. Leaving it out causes the module to take the next available Rem name. INC. Modified PITIMESTAMP. ' 'RESTRICTED RIGHTS LEGEND 'Use. Suite 250. PI_NOMOREVALUES.7013 ' 'OSI Software. Inc. 'Unpublished . 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. OR REPRODUCTION IS PROHIBITED WITHOUT 'THE PRIOR EXPRESS WRITTEN PERMISSION OF OSI SOFTWARE.Anexo B – Código Fonte do arquivo piapi32. ' ' 15 4/16/02 11:34a Harry ' Changed case of PITime in method definitions. pilg_putoutput definitions Global Const MSGLOG = 1 Global Const STDOUTPUT = 2 '------------------------------.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 Global Global Global Global Global Global Global Global Global Global Global Const Const Const Const Const Const Const Const Const Const Const Const PI_Type_null = 0 PI_Type_bool = 1 PI_Type_uint8 = 2 PI_Type_int8 = 3 PI_Type_char = 4 PI_Type_uint16 = 5 PI_Type_int16 = 6 PI_Type_uint32 = 7 PI_Type_int32 = 8 PI_Type_uint64 = 9 PI_Type_int64 = 10 PI_Type_float16 = 11 74 .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 '------------------------------.' 11/22/96 hs Added and fixed extended api declarations and types Option Explicit '------------------------------.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 '-------------------------------.pipt_updates definitions Global Const NOTAGS = 0 Global Const POINTCREATE = 1 Global Const POINTEDIT = 2 Global Const POINTDELETE = 3 '------------------------------.piar_value definitions Global Const ARCVALUEBEFORE = 1 Global Const ARCVALUEAFTER = 2 Global Const ARCVALUEINTERP = 3 Global Const ARCVALUECODE = 4 '------------------------------.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 '------------------------------.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 '-------------------------------. new with PI-API v1. ByVal product$. ByVal unit$.New with PI-API v1. number&) As Long Declare Function piba_findaliaspoint Lib "piapi32. number&) As Long Declare Function piba_getunitswalias Lib "piapi32. ByVal slen&. ByVal index&. ByVal index&. ByVal plen&. etime&.Global Global Global Global Global Global Global Const Const Const Const Const Const Const PI_Type_float32 = 12 PI_Type_float64 = 13 PI_Type_PI2 = 14 PI_Type_digital = 101 PI_Type_blob = 102 PI_Type_PIstring = 105 PI_Type_bad = 255 ' add unless event(s) exist at same time (PI 2..1. ByVal sf&. ByVal tagname$. ByVal slen&.0 Declare Function piba_getunit Lib "piapi32. ByVal index&. ByVal ulen&.x) ' add event regardless of existing events ' add event. ByVal slen&.. number&) As Long Declare Function piba_getaliaswunit Lib "piapi32. ByVal timeout&) As Long 'PI Login Services function declarations -. 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.dll" (ByVal balias$.dll" (ByVal batchid$. ByVal blen&. ByVal balias$. no compression ' piar_putarcvaluesx defines Global Const ARCNOREPLACE = 3 Global Const ARCAPPEND = 4 Global Const ARCREPLACE = 5 Global Const ARCREPLACEX = 6 Global Const ARCDELETE = 7 Global Const ARCAPPENDX = 8 '---------------------------..0 75 .Structure declarations Type QERROR Point As Long piapierror As Long End Type Global Const MAXPI3PUTSNAP = 255 'For queue call return values.dll" (ByVal unit$. replace if event at same time ' replace existing event (fail if no event at time) ' remove existing event ' add event regardless of existing events.1. ptno&. ByVal balias$. ByVal unit$. */ End Type 'PI batch function declarations -.dll" (ByVal unit$.dll" (ByVal unit$. ByVal slen&) As Long Declare Function piba_search Lib "piapi32. stime&.99999999. dll" (ByVal pt&.dll" (pitime&. ByVal slen&) As Long 76 . compdeveng!. ByVal username$. bufsize&) As Long Declare Function pilg_login Lib "pilog32.dll" (ByVal pt&. ByVal slen&) As Long Declare Function pipt_digcode Lib "piapi32. istats&.dll" (ByVal pt&. ByVal Expr$. group&.dll" (ByVal servername$) As Long Declare Function pilg_tagsearchdlg Lib "pilog32. ByVal password$.dll" (ByVal pt&.dll" (ByVal pt&.dll" (ByVal pt&. count&. ByVal prev&) As Long Declare Function piar_timedvaluesfil Lib "piapi32. ByVal Msg$.dll" (ByVal Msg$) As Long Declare Function pilg_putoutput Lib "piapi32.dll" (ByVal pt&. ByVal intervals&. NodeID&. times&. ByVal engunitstring$.dll" (taglst As TagList. ByVal istat&. displaydigits&) As Long Declare Function pipt_engunitstring Lib "piapi32.dll" (ByVal Msg$) As Long Declare Function pilg_putlog Lib "piapi32. ByVal timedate&. ByVal crlen&.dll" (ByVal action&. ByVal chlen&) As Long Declare Function pipt_descriptor Lib "piapi32. ByVal FLAGS&) As Long Declare Function pipt_compspecs Lib "piapi32. ByVal group&.dll" (ByVal pt&. istats&. ByVal servernamebuf$. ByVal istat&) As Long Declare Function piar_summary Lib "piapi32. ByVal IdString$) As Long Declare Function pilg_puthomelog Lib "piapi32. compmin&. ByVal Expr$) As Long Declare Function piar_compvalues Lib "piapi32. ByVal digstring$) As Long Declare Function pipt_digpointers Lib "piapi32. taglst As TagList) As Long Declare Function pilg_registerapp Lib "pilog32.dll" (ByVal Msg$. count&. rvals!. NodeID&.dll" () As Long Declare Function pilg_disconnectnode Lib "pilog32. ByVal LogFile$) As Long Declare Function pilg_formputlog Lib "piapi32. times&.dll" (ByVal hwndparent&) As Long Declare Function pilg_disconnect Lib "pilog32. count&. rvals!.dll" (ByVal servernamebuf$. ByVal code&) As Long Declare Function piar_timedvalues Lib "piapi32. compmin&. bufsize&. compmax&) As Long Declare Function pipt_compspecseng Lib "piapi32.dll" (ByVal hwndparent&.dll" (ByVal pt&. digcode&.dll" (ByVal servername$) As Long Declare Function pilg_getconnectedserver Lib "pilog32. istats&. rvals!. time1&. ByVal servername$. istats&) As Long Declare Function piar_interpvaluesfil Lib "piapi32. ByVal Mode&. ByVal timedate&) As Long Declare Function piar_interpvalues Lib "piapi32. changedate&. rval!.dll" (ByVal servernamebuf$. times&. ByVal rev&. ByVal Expr$. ByVal seq&) As Long Declare Function pilg_getdefserverinfo Lib "pilog32. count&.dll" (ByVal StartTime&.dll" (ByVal digcode&. rvals!. port&. ByVal digstring$) As Long Declare Function pipt_digcodefortag Lib "piapi32.dll" (ByVal pt&. ByVal desc$.dll" (ByVal pt&. count&. creationdate&. compdev&.dll" (ByVal pt&. times&. NodeID&) As Long Declare Function pilg_getselectedtag Lib "pilog32.dll" (ByVal servername$.dll" (ByVal pt&. times&. ByVal Expr$) As Long Declare Function piar_panvalues Lib "piapi32. ByVal Msg$. time2&.dll" (ByVal hwndparent&) As Long Declare Function pilg_unregisterapp Lib "pilog32. ByVal action&. valid&) As Long Declare Function pilg_pointattdlg Lib "pilog32. rvals!. times&. passtime&) As Long Declare Function piar_value Lib "piapi32. pctgood!. ByVal fil&) As Long Declare Function piar_deletevalue Lib "piapi32. rvals!.dll" (ByVal hwndparent&. ByVal etype&.dll" (digcode&. times&. ByVal wait&) As Long Declare Function piar_replacevalue Lib "piapi32.dll" (ByVal pt&. port&) As Long Declare Function pilg_getnodeid Lib "pilog32. ByVal username$. ByVal timeout&) As Long Declare Function piel_evntactn Lib "piapi32. linklist&) As Long Declare Function pilg_setservernode Lib "pilog32.dll" (pitime&.dll" (ByVal pt&.dll" (ByVal pt&. ByVal changer$. ByVal servertype&. istats&.dll" (ByVal helpfile$.dll" (ByVal pt&.dll" (ByVal Msg$. times&. digcode&. ByVal rev&) As Long Declare Function piar_compvaluesfil Lib "piapi32. rval!.dll" () As Long 'Function declarations Declare Function piar_calculation Lib "piapi32. count&. istats&. ByVal portnum&) As Long Declare Function pilg_connectdlg Lib "pilog32. istats&. dignumb&) As Long Declare Function pipt_digstate Lib "piapi32.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. count&.dll" (count&. timedate&. ByVal slen&. ByVal timedate&.dll" (ByVal pt&. ByVal seq&) As Long Declare Function pilg_getservername Lib "pilog32. ByVal digstate$. ByVal EndTime&. ByVal creator$. etype&. tottime&. number&. ByVal rval!.dll" (ByVal servernamebuf$.Declare Function pilg_addnewserver Lib "pilog32. bufsize&.dll" (ByVal NodeID&. ByVal Expr$) As Long Declare Function piar_timefilter Lib "piapi32. ByVal slen&) As Long Declare Function pipt_displaydigits Lib "piapi32. compmax&) As Long Declare Function pipt_dates Lib "piapi32. rvals!. istat&) As Long Declare Function piel_addevnt Lib "piapi32. ByVal rval!. ByVal timeout&) As Long Declare Function pilg_checklogfile Lib "piapi32. istats&) As Long Declare Function piar_putvalue Lib "piapi32. number&. timedate&) As Long Declare Function piar_plotvalues Lib "piapi32.dll" (ByVal pt&.dll" (ByVal pt&. rvals!. count&.dll" (ByVal pt&. oldstat%. ByVal version$. istat&. timedate&. ByVal rval!.dll" (MinorVer&.dll" () As Long Declare Function pipt_sourcept Lib "piapi32.dll" (ByVal pt&. ByVal excmin%.dll" (ByVal Vers$. ByVal count&) As Long Declare Function pisn_sendexcepstruc Lib "piapi32. ByVal engunitstring$.dll" (ByVal version$. ByVal pttype%. ByVal rval!.dll" (ByVal ProcName$) As Long Declare Function piut_disconnect Lib "piapi32. rval!. squareroot&) As Long Declare Function pipt_tag Lib "piapi32.dll" (ByVal pt&. oldtime&. ByVal ExcDevEng!.dll" (ByVal pt&.dll" (ByVal pt&. oldstat%. ByVal reltime&. count&. count&) As QERRORS 'Declare Function pisn_putsnapshotq Lib "piapi32. filtercode&) As Long Declare Function pipt_instrumenttag Lib "piapi32. Mode&) As Long Declare Function pipt_userattribs Lib "piapi32.dll" (ByVal tagmask$. ByVal excmax%. ByVal tagname$.dll" (servertime&) As Long Declare Function pitm_syncwithservertime Lib "piapi32. istat&. piapierror&. ByVal tag$. ByVal timedate&) As Long Declare Function pisn_putsnapshots Lib "piapi32. userreal2!) As Long Declare Function pipt_wildcardsearch Lib "piapi32. prevval!. rescode&) As Long Declare Function pipt_scale Lib "piapi32. prevtime&.dll" () As Long Declare Sub pitm_formtime Lib "piapi32. lcompressing&. ByVal ExcMin%. ByVal slen&) As Long Declare Function pipt_totalspecs Lib "piapi32.dll" (ByVal pt&. ByVal BuildLen&) As Long Declare Function piut_getapiversion Lib "piapi32. ExcDevEng!. ExcMin&. pt&. ByVal slen&) As Long Declare Function pipt_taglong Lib "piapi32. totalcode&.dll" (ByVal pt&. prevTime&.dll" (ByVal pt&. ByVal exdesc$. pts&) As Long Declare Function pisn_evmexceptions Lib "piapi32. prevstat%. ByVal versionlen&. ByVal slen&) As Long Declare Function pipt_tagpreferred Lib "piapi32. ByVal pttype%. ByVal newTime&.dll" (ByVal SrvName$) As Long Declare Function piut_fastserverversion Lib "piapi32. ByVal instrumenttag$. larchiving&.dll" (ByVal pt&.dll" (ByVal pt&.these functions have return types incompatible with Visual Basic 'Declare Function pisn_sendexceptionq Lib "piapi32. ByVal istat&. ByVal slen&) As Long Declare Function pipt_excspecseng Lib "piapi32.dll" (ByVal pt&.dll" (count&.dll" (ByVal pt&. ByVal timestring$. istat&. istat&. pt&. ByVal direction&. userint1&.dll" (ByVal engunitcode&.dll" (ByVal pt&.dll" () As Long Declare Function piut_connect Lib "piapi32.dll" (ByVal pt&) As Long Declare Function pipt_recordtype Lib "piapi32.dll" () As Long Declare Function pitm_systime Lib "piapi32. ExcMax&) As Long Declare Function pipt_exdesc Lib "piapi32. ByVal pttype%. qErrs As QERROR) As Long '----.dll" (pt&.dll" () As Long Declare Sub piut_getprotocolvers Lib "piapi32.dll" (ByVal pt&. oldTime&. timedate&.dll" (ByVal timedate&.dll" () As QERRORS Declare Function pitm_delay Lib "piapi32.dll" (ByVal pt&.Declare Function pipt_engunstring Lib "piapi32. sourcept&) As Long Declare Function pipt_squareroot Lib "piapi32.dll" (ByVal pt&.dll" (ByVal pt&. numfound&) As Long Declare Function pisn_evmdisestablish Lib "piapi32. ByVal ExcMax%. ByVal excdeveng!. location&) As Long Declare Function pipt_nextptwsource Lib "piapi32.dll" (ByVal source%. zero!.dll" (ByVal pt&. ByVal buildid$. pt&) As Long Declare Function pipt_inprocbits Lib "piapi32. count&) As Long Declare Function pisn_sendexceptions Lib "piapi32.dll" (ByVal pt&. rval!. ByVal tagname$.dll" (ByVal pt&. rval!. ByVal istat&. oldval!. rval!.dll" (ByVal pt&.dll" (ByVal pt&.dll" (ByVal pt&. lscan&) As Long Declare Function pipt_signupforupdates Lib "piapi32. ByVal Queueing%. ByVal slen&) Declare Sub pitm_intsec Lib "piapi32.dll" (ByVal pt&. ByVal timedate&) As QERRORS 'Declare Function pisn_flushputsnapq Lib "piapi32.dll" (ByVal pt&. steps&) As Long Declare Function pipt_rescode Lib "piapi32. ByVal buildid$. pts&) As Long Declare Function pisn_evmestablish Lib "piapi32. except As PI_EXCEPT. userreal1!.dll" () As Long Declare Function piut_disconnectnode Lib "piapi32. ByVal slen&) As Long Declare Function pipt_location Lib "piapi32. ByVal slen&.dll" (NodeID&. ByVal count&) As Long Declare Function pisn_putsnapshot Lib "piapi32. ByVal newstat%. ByVal buildidlen&) As Long 77 .dll" (ByVal timestr$. ByVal newstat%. timearray&) Declare Function pitm_servertime Lib "piapi32.dll" (pt&.dll" (ByVal pt&. timedate&) As Long Declare Function pisn_getsnapshot Lib "piapi32.dll" (ByVal tagname$. span!) As Long Declare Function pipt_scan Lib "piapi32. timedate&) As Long Declare Sub pitm_secint Lib "piapi32. timedate&) As Long Declare Function pisn_getsnapshots Lib "piapi32. userint2&. ByVal newtime&. ByVal slen&. ByVal slen&) As Long Declare Function piut_getloginuser Lib "piapi32. count&) As Long Declare Function pisn_sendexcepstrucq Lib "piapi32. numbptErrs&. except As PI_EXCEPT. ByVal slen&) As Long Declare Function pipt_findpoint Lib "piapi32.dll" (count&. prevVal!. oldVal!. ByVal newval!. ByVal pttype%. pt&) As Long Declare Function pipt_pointid Lib "piapi32.dll" (timedate&. typicalvalue!) As Long Declare Function pipt_updates Lib "piapi32. ByVal pttype$) As Long Declare Function pipt_ptexist Lib "piapi32.dll" (count&. found&.dll" (ByVal pt&. timearray&) Declare Function pitm_parsetime Lib "piapi32. prevstat%. piapierror&. ByVal servername$.dll" (pt&. ByVal slen&) Declare Function piut_getserverversion Lib "piapi32. ByVal servernamelen&. ipt&) As Long Declare Function pipt_pointsource Lib "piapi32. ByVal NewVal!. ByVal tag$. ByVal source$) As Long Declare Function pipt_pointtype Lib "piapi32.dll" (ByVal timedate&.dll" (ByVal pt&. convers!) As Long Declare Function pipt_typicalvalue Lib "piapi32.dll" (ByVal mseconds&) As Long Declare Function pitm_fastservertime Lib "piapi32. ByVal tag$. time0 As PITimeStamp.dll" (ByVal namestr$. Errors&.dll" (ByVal PtNum&. iVal&. prevTime As PITimeStamp. bSize&. ByVal xminute&.dll" (ByVal PtNum&. drVal As Any. PtNum&.Declare Sub piut_inceventcounter Lib "piapi32. istat&.dll" (ByVal counter&. Count&) As Long Declare Function pisn_sendexceptqx Lib "piapi32. ByVal NameLen&.dll" (ByVal namestr$. ByVal typeX&. bSize As Long. prevFlags%. ByVal Mode&. ByVal tm_isdst&) Declare Function pitm_setpitime Lib "piapi32. except As PI_EXCEPTSTRU. bSize&. numbptErrs&.dll" (numbptErrs&. bVal As Any. FLAGS%. lerror&. ByVal xyear&. drVal As Any. ByVal frac#) As Long Declare Function pitm_settime Lib "piapi32. istat&. ByVal Mode&. bVal As Any. ByVal addresslen&. bSize&. PtNum&. FLAGS%. qErrs As QERROR) As Long Declare Function pitm_getpitime Lib "piapi32. ByVal Mode&. FLAGS%. bVal As Any. istat&. oldTime As PITimeStamp. ByVal NameLen&. bSize&. iVal&. qErrs As QERROR) As Long 'Declare Function pisn_sendexceptionsx Lib "piapi32. bSize&. MsgLen&) As Long Declare Function piut_setpassword Lib "piapi32. ByVal addresslen&. qErrs As QERROR) As Long Declare Function pisn_getsnapshotsx Lib "piapi32. iVal&. count&. istat&. drVal As Any. time0 As PITimeStamp) As Long Declare Function pisn_putsnapshotqx Lib "piapi32. ByVal FuncCode&) As Long Declare Function piar_getarcvaluesfilterx Lib "piapi32. typeX&) As Long 'Declare Function pisn_evmexceptionsx Lib "piapi32. bVal As Any. ByVal xsecond#) As Long Declare Function piut_errormsg Lib "piapi32. event As PI_EVENT.dll" (time0 As PITimeStamp) As Long Declare Sub pitm_setcurtime Lib "piapi32.dll" (ByVal stat&. istat&. bSize&.dll" (time0 As PITimeStamp. ByVal NameLen&. istat&.dll" (PtNum&. numbptErrs&. FLAGS%. iVal&. FLAGS%. connected&) As Long Declare Function piut_netserverinfo Lib "piapi32. cntptnum&. ByVal password$. ByVal Msg$. ByVal ExcMax#. count&. bSize&. ByVal typestr$. valid&) As Long Declare Function piut_netinfo Lib "piapi32.dll" (time0 As PITimeStamp. ByVal count&) Declare Function piut_ishome Lib "piapi32. ByVal arcMode&. ByVal typeX&. ptnum&. bSize&.dll" (ByVal PtNum&. ByVal ExcDevEng#.dll" (time0 As PITimeStamp. FLAGS%. istat&. iVal&. oldVal As Variant. iVal&. istat&.dll" (count&. iVal&. ByVal oldpw$.dll" (ByVal Count&. drVal As Any. oldistat&. newTime As PITimeStamp.dll" (ByVal stat&. prevvalue As PI_EVENT. 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. FLAGS%. ByVal addressstr$. newvalue As PI_EVENT. ByVal newpw$) As Long Declare Function piut_strerror Lib "piapi32.dll" (ByVal PtNum&. previstat&. time0 As Any. PTnum&. typeX&. ByVal Queueing&. Val As Variant. FLAGS%.dll" (ByVal ProcName$) Declare Function piut_setservernode Lib "piapi32. bVal As Any. istat&. time0 As PITimeStamp. FLAGS%. count&.dll" (ByVal username$. ByVal addressstr$. ByVal arcMode&. iVal&. Errors&) As Long Declare Function pisn_putsnapshotx Lib "piapi32. drVal As Any.dll" (ByVal PtNum&. ByVal ExcMax#.dll" (ByVal counter&) Declare Function piar_getarcvaluesx Lib "piapi32.dll" (ByVal username$. bVal As Any. MsgLen&. iVal&. ByVal FuncCode&) As Long Declare Function piar_getarcvaluex Lib "piapi32. drVal As Any. drVal As Any.dll" (ByVal PtNum&. drVal As Any. drVal As Any. numbptErrs&. Errors&) As Long Declare Function piar_putarcvaluex Lib "piapi32. istat As Long. time1 As PITimeStamp. oldValue As PI_EVENT. FLAGS%. time0 As PITimeStamp) As Long Declare Function pipt_pointtypex Lib "piapi32.dll" (time0 As PITimeStamp) As Double Declare Function pitm_isdst Lib "piapi32. FLAGS%. ByVal SrcStr$) As Long 78 .dll" (ByVal servername$) As Long Declare Sub piut_zeroeventcounter Lib "piapi32. frac#) As Long Declare Function pitm_getutctime Lib "piapi32. Timeval As PITimeStamp. iVal&. PtNum&.dll" (time0 As PITimeStamp.dll" (ByVal PtNum&.dll" (ByVal count&. ByVal Expr$. FLAGS%. prevVal As Variant. TimeStamp As PITimeStamp. time1 As PITimeStamp. oldFlags%.dll" (ByVal num_pts&. typeX&. istat&.dll" (ByVal PtNum&. ByVal ExcMin#. connected&) As Long Declare Function piut_setdefaultservernode Lib "piapi32. ByVal addressstr$.dll" (ByVal pt&. ByVal FuncCode&) As Long Declare Function pisn_evmexceptx Lib "piapi32. bVal As Any. time0 As PITimeStamp.dll" () As Long Declare Function piut_login Lib "piapi32.dll" (ByVal pt&.dll" (ByVal namestr$. ByVal addresslen&. ByVal pitime&. bSize&. istat&. ByVal xmonth&.dll" (ByVal servername$) As Long Declare Sub piut_setprocname Lib "piapi32. ByVal typelen&) As Long Declare Function piut_netnodeinfo Lib "piapi32. ByVal Msg$. ByVal FuncCode&) As Long Declare Function pisn_getsnapshotx Lib "piapi32. bVal As Any. ByVal xday&. ByVal xhour&. drVal As Any. ByVal ExcMin#. ByVal Queueing&. time0 As PITimeStamp. Count&.dll" (time0 As PITimeStamp. time0 As PITimeStamp) As Long Declare Function piar_putarcvaluesx Lib "piapi32. bVal As Any. bVal As Any. ByVal Queueing&. time0 As Any) As Long 'Declare Function pisn_sendexceptionqx Lib "piapi32.dll" (ByVal count&. Val As Variant. ByVal incl_subsec%) Declare Sub pitm_setdst Lib "piapi32. ByVal ExcDevEng#. ByVal FuncCode&) As Long Declare Function pisn_flushputsnapqx Lib "piapi32. 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 79 '------------------------------------- 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.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 valu.istat, 80 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 81 95 . (Screen.Height) / 2 ServerFrame. dw As Long 'fix the width and height for small/large fonts dh = Height .85 .Height + dh Width = splashimage.Width) splashscreen.Text) GlobalInit End Sub / 2.SelLength = Len(ServerText.SelStart = 0 ServerText.Height - 82 .Width splashscreen.Height ServerFrame.Top = ScaleHeight * 0.Width + dw 'center the splash screen splashscreen.Move (Screen.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.ServerFrame.Left = ScaleWidth * 0.ScaleHeight dw = Width .Width ServerText.Visible = False Refresh Connect servername theTime = pitm_syncwithservertime() DisplayForm.ServerFrame.ScaleWidth Height = splashimage.Show Hide End Sub Private Sub Form_Load() Dim dh As Long. Private Sub showsnaps() Dim i As Integer Dim timestring As String * 19 Dim valu As PIVAL Dim TimeStamp As PITimeStamp Dim Dim Dim Dim Dim Dim Dim bVal As String * 30 bSize As Long Mode As Integer drVal As Long iVal As Long istat As Long FLAGS As Integer 83 . e então volta a ouvir todos os tags de novo. checar se existe algum dado novo. desabilita o timer e mostra os snapshots atuais. pttype(i)) OldTime(i) = FormatTime(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. "PI Tag Monitor Help" End Sub selecionar os Tags que devem ser monitorados.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. ' Quando o botão PROCURAR é apertado.1 If ptno(i) <> 0 Then StopListening ptno(i) End If Next i Searchform. Private Sub ConfigBtn_Click() Dim i As Integer reconfig = False exceptiontimer. ' Vai para o formulário SearchForm.". Private Sub Form_Load() exceptiontimer. Private Sub exceptiontimer_Timer() Dim pt As Long Dim valu As PIVAL Dim i As Integer Do getEVMexception pt.Enabled = False For i = 0 To ntags . o programa pára de ouvir todos os tags. valu If pt = 0 Then Exit Sub 'não existem dados novos End If For i = 0 To ntags .Anexo E – PI Tag Monitor – Código Fonte do Display Form Option Explicit Private Sub Ajudar_Click() MsgBox "Clique em PROCURAR para vbExclamation. 'e também é setado para monitorar mudanças no valor das variáveis.Show 1 'mostra o formulário de procura If reconfig Then showsnaps End If End Sub ' De tempos em tempos (timer).1 If ptno(i) = pt Then OldVal(i) = parsePIval(valu.timedate) If unconfirmed(i) Then If valu. timedate) ListenTo ptno(i) exceptiontimer.1 NameLab(i) = tagname(i) If ptno(i) > 0 Then If pttypex(i) <> 105 Then GetSnapshot ptno(i).Enabled = True Else bSize = 30 Mode = 1 apistat = piar_getarcvaluex(ptno(i). FLAGS. bSize. pttype(i)) OldTime(i) = FormatTime(valu. Mode. ByVal bVal. valu OldVal(i) = parsePIval(valu. TimeStamp) OldVal(i) = bVal OldTime(i) = FormatTime(pitm_systime()) End If End If Next i End Sub 84 . iVal. istat.For i = 0 To ntags . drVal. ItemData(dst.1 End If End If Else index = index + 1 End If Loop If src.List(index) dst. dst As ListBox.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 = OutList.ListCount < ntags moveitem SearchList.ItemData(index) src. index As Integer) dst.RemoveItem index End Sub 'Move os itens de uma lista para outra 'Entre com a capacidade = quantidade de linhas na lista destino.Enabled = SearchList.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. dst.Caption = "<<" Then movelist OutList.ListCount < ntags OKBtn. 0 Loop If MoveBtn.ListCount = 0 Or capacity = 0 Then MoveBtn. -1 ElseIf MoveBtn.ListCount > 0 And OutList.NewIndex) = src.ListCount If src.Selected(index) = 0 index = index + 1 Else moveitem src.ListCount End If End Sub Private Sub moveitem(src As ListBox. dst As ListBox. ByVal capacity As Integer) Dim index As Integer index = 0 Do While index < src. ntags .Enabled = False End If src. "PI Tag Monitor Help" End Sub Private Sub MoveBtn_Click() If MoveBtn.Caption = ">>" Then MoveBtn.ListIndex = -1 EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub OKBtn_Click() Dim i As Integer 85 . index If capacity > 0 Then capacity = capacity .".Caption = ">>" Then movelist SearchList.OutList.ListCount > 0 And OutList.Caption = "<<" Then MoveBtn. Entre os PointSources selecione: K para variáveis da pesquisa. SearchList.Selected(index) Then If capacity = 0 Then src. vbExclamation. e B para variáveis da engenharia.Clear If MoveBtn.Anexo F – PI Tag Monitor – Código Fonte do Search Form Option Explicit Private Sub AddAllBtn_Click() Do While SearchList. -1 se ilimitado Private Sub movelist(src As ListBox.AddItem src. OutList. L para variáveis inseridas manualmente. OutList.ListCount > 0 End Sub Private Sub InfoBtn_Click() MsgBox "Selecione no máximo 16 Tags que você deseje monitorar. status) <> 0 End If ProgBar. 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.Enabled = True Else MoveBtn.OutList. pt. OutList. ntags . vbExclamation.ListIndex > -1 And OutList.ListCount . "PI Tag Monitor Message" Exit Sub ElseIf ChkPIstatus("pipt_wildcardsearch". Len(tagname).Enabled = True Else MoveBtn.Visible = False EnableButtons 'habilita os botões como requerido End Sub Private Sub SearchList_Click() If SearchList.AddItem tagname 'adiciona a lista SearchList.For i = 0 To OutList.Clear tagmask = MaskText.ItemData(i) pttype(i) = getPtType(ptno(i)) apistat = pipt_pointtypex(ptno(i).ListCount End Sub Private Sub ShowOneSource_Click() SourceText. numfound) If found = 0 Then Exit Do Loop Until ChkPIstatus("pipt_wildcardsearch".ItemData(SearchList. pttypex(i)) Next i For i = OutList. -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.Text count = 0 ProgBar.1 tagname(i) = "" ptno(i) = 0 Next i reconfig = True Hide End Sub Private Sub OutList_Click() If OutList.Enabled = ShowOneSource.Enabled = False End If EnableButtons 'habilita o botão addall ">> All" se possível End Sub Private Sub OutList_DblClick() movelist OutList.List(i) ptno(i) = OutList. Len(tagname).ListCount < ntags Then MoveBtn. found. pt.Visible = True 'pega o primeiro ponto equivalente status = pipt_wildcardsearch(tagmask.ListIndex > -1 Then MoveBtn.NewIndex) = pt 'adiciona o PointNumber também End If status = pipt_wildcardsearch(tagmask. numfound) If status = -1 Or numfound = 0 Then 'nenhum ponto encontrado MsgBox "Nenhum Tag foi encontrado.Caption = "<<" MoveBtn.".Enabled = False End If EnableButtons 'habilita os botões como requerido End Sub Private Sub SearchList_DblClick() movelist SearchList. 0. found. SearchList. tagname. tagname.Width = 0 ProgBar.ListCount To ntags .Width = ProgBox.1 tagname(i) = OutList.Width * count / numfound src = getptsource(pt) 'are we showing only one source? If ShowOneSource = 0 Or src = SourceText Then SearchList.Value End Sub 86 . 1.Caption = ">>" MoveBtn. Text And Int(Value(i).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). mas é necessário número MsgBox "Um valor NUMÉRICO é necessário para " & tagname Value(i).Text <> "" Then tagname = "U144-" + Var(i).Text = "" Value(i). PointNumber) pt = pipt_pointtypex(PointNumber.Text) <= 32767 And Int(Value(i). O formato para data e hora é dd-mmm-yy hh:mm:ss" End Sub Private Sub Atual_Click() Data.Text istat = 0 End If If PointType = 8 Then 'valor inteiro? If Int(Value(i).SetFocus Exit Sub End If End If ElseIf PointType <> 105 Then 'inseriu texto.Text) = Value(i).Text rval = 0 Else MsgBox "Um valor INTEIRO é necessário para " & tagname Value(i). basta digitar o valor desejado na caixa de texto e clicar em ENVIAR.Text <> "" Then tagname = "U144-" + Var(i). PointType) If IsNumeric(Value(i).Caption pt = pipt_findpoint(tagname.Caption pt = pipt_findpoint(tagname.Text drVal = 0 iVal = 0 bSize = 0 istat = 0 sflag = 0 End If Envia_Ja End If ElseIf Valor.Text) >= 0 Then istat = Value(i).Anexo G – PI Data Insert – Código Fonte do DataInsert Form Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim tagname As String PointNumber As Long PointType As Long i As Integer j As Integer rval As Double bVal As String drVal As Long iVal As Long bSize As Long istat As Long Private Sub AJUDA_Click() MsgBox "Para inserir um novo valor no banco de dados do PI.Text) Then If PointType = 12 Then 'valor real rval = Value(i). PointType) bVal = Valor.Text 'string 87 .Text = "" Value(i). PointNumber) pt = pipt_pointtypex(PointNumber.SetFocus Exit Sub End If If PointType = 105 Then bVal = Value(i). FillColor = &H8000000F If j = 19 Then Valor.Text = "" End If Wait. sflag.drVal = 0 iVal = 0 bSize = 0 istat = 0 sflag = 0 Envia_Ja End If Next i Wait.FillColor = RGB(0.FillColor = RGB(0.Enabled = True End Sub Private Sub SAIR_Click() End End Sub Private Sub Wait_Timer() For j = 0 To 19 Confirma(j). istat. istat. 0) If ChkPIstatus("pisn_putsnapshotx". iVal.Enabled = False Next j End Sub Private Sub Envia_Ja() If PointType <> 105 Then pitime = parsetime(Data.Text = "" Else Value(j). rval.Interval = 500 Wait. 0)) = 0 Then unconfirmed = True Confirma(i). If PointType = 105 Then pitime = parsetime(Data. 0) 'luz verde End If End If End Sub 88 . pitime)) = 0 Then unconfirmed = True Confirma(i). bSize. drVal. 255. 255. 0) 'luz verde End If Else MsgBox "Você precisa especificar data e hora a serem inseridos" Data.Text.Text. piar_putvalue(PointNumber. 0) If pitime <> "" Then If ChkPIstatus("piar_putvalue".SetFocus End If End If pitime. pisn_putsnapshotx(PointNumber. ByVal bVal$. Anexo H – Supported Input Point Types (ABB/Bailey Data to PI) Bailey Point Type 1 2 3 4 5 6 7 14 15 19 21 29 30 51 52 53 54 60 70 71 72 73 Description Process Variable Set Point Read Control Output Read Ratio Index Read Analog Read Station Status Digital Read Module Status RCM Read RMSC Read 4-byte Analog Read DAANG ASCII string MSDD DD RMC DADIG Text Selector Harmony Analog Input Harmony Analog Output Harmony Digital Input Harmony Digital Output Data Type A A A A A D D D D A A A S D D D D I A A D D Bailey Function Code note 1 note 1 note 1 80. 23 30 note 1 45 OIS Type Name Station Station Station Station Analog Station Digital Extended Attribute No No No No Yes Yes No No 62 68 RCM RMSC Yes Yes Yes Yes No 129 123 Yes Yes Yes Yes No Yes Yes Yes Yes 89 . else 1 /of=X ! Outputs to ABB/Bailey allowed if 1. interface will restart itself if getting consecutive errors exceeding the timeout period. /fm=X ! failover mode. Required /ec=X ! IO rate counter /sn ! Overrides exception reporting to use snapshotting Interface Specific parameters (in any order ) /in=X ! Interface number. generated from interface ID string. Also. 0 for no timeout.ini. should match location1 of PI tags. 90 [def].bat rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem rem BLYSEM. /ici=X ! ABB/Bailey logical ICI number. Required for secondary /dl=X ! delay [sec] between ABB/Bailey get exceptions: default one second /me=X ! Max exceptions per iteration: default is 2500 [def] /mp=X ! Max number of points for this interface. command file to start the PI/ABB/Bailey semAPI Interface Parameters: Universal Interface parameters (in any order ) /host=X ! specifies host name of PIserver if it is not the default server defined in pilogin. 2 for secondary /fp=X ! failover Primary PCU address. -1 -> ABB/Bailey master /EVG=X ! Event logger group number for ASCII event /EVT=X ! event logger type number for ASCII event /fv=X /fs=X /rc /hncc ! ! ! ! Analog filter limit (mininum 1000) Analog filter digital status code(positive or negative) Range checking at interface level Must be set if connecting to HNCC and not ICI03 90 .bat OSIsoftware Inc. else 0 [default] /ts=X ! Time sync [0] default no timesync.Anexo I – Lista Completa de parâmetros do blysem. set to interface ID number if not define /icdb=X ! interface specific debug level. /id=X ! interface ID number. if not defined. 30000 [def] /ef=X ! Exception screening 0=none [def]. 0[def] for no failover. 1 for primary. 0 [def] /to=X ! ICI timeout (ICI goes offline after not receiving messages from interface for the timeout period). 1 -> pi master. Required /ps=X ! point source for interface. Maximun timeout is 240 second. this option is set to 0 by default. Otherwise. it can prevent the PI system from reconstructing the data between two exception reports accurately. for the secondary interface. See the CIU manual for details on how to use the CIU utilities. setting all the output points (PI to ABB/Bailey) bad quality. they will be replaced by a digital state code (specified by /FS) by the interface. Range Checking enabled at interface level. you should not set the watch dog timer to 0 if the interface is set up as fail over primary interface. Also. Therefore. the interface will default to NODATA(code 248) as the digital state to substitute the analog value over the filter limit. Hence. additional configuration is required. /TO=90 /EF =0 /TS=0 /EVG= and /EVT= /FV= and /FS /RC 91 . you need to supply the PCU number of the ICI mode communicating to the primary interface. the INFI90 sends only deviation exceptions. /FV specific a limit. The FV parameter has to be greater than 1000 to be considered valid by the interface. the watch dog timer will prevent old value from being used in the control loop. The Analog filter check is supported starting in version 1. All analog values above (Zero + Span) will be replaced with digital state OverRange. If the interface stops communicating with the ICI module for a period longer than the specified watch dog timer. For systems using PI values in the ABB/Bailey control loops.3. no analog filter checking will be performed by the interface (even if /FS is specified). the interface cannot set the time on the ABB/Bailey System. if the interface is linked to a Data Acquisition version of semAPI. This option specifies the ICI module watch dog timer. All analog values below Zero will be replaced with digital state UnderRange. the ICI module will go off-line. See the FailOver Operation section for details. Also. Though this feature will significantly reduce the communications traffic. Analog filter parameters. If /FS is omitted.1 of the interface. This option controls the time synchronization behavior between ABB/Bailey and PI systems. then ABB/Bailey would not send the change until the total change exceeded the deviation limit. When you specify VMS as the time master. If the analog values from ABB/Bailey is greater than this value. the secondary interface will not pick up data collection when the primary interface stops communicating with the ICI module. The time master of the loop is determined by the time accuracy factor on each node. Hence. For example: if a value changes slowly. 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. The EF option is primarily used for system with mostly digital or discrete data. no maximum time exceptions.Parameter /FM=0 Explanation This option controls the fail-over mode of the interface. The details of the fail-over mechanism are described in FailOver Operation section. If /FV is not specific. With exception screening option enabled. Define the Event Logger group and type to be used when ascii data (type 30) is sent to the Event Logger. Also. 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. one cannot distinguish a step change from a linear change. This option controls the exception screening behavior of the ICI module. Specify /FM=1 for the primary interface and /FM=2 for the secondary interface.
Copyright © 2024 DOKUMEN.SITE Inc.