Vous êtes sur la page 1sur 104

UNIVERSIDADE FEDERAL DE SANTA CATARINA

CURSO DE ENGENHARIA DE CONTROLE E AUTOMAO INDUSTRIAL

Automao das Plataformas P-34 e P-48: Tratamento dos Pontos de Entrada e Sada

Monografia submetida Universidade Federal de Santa Catarina como requisito para a aprovao da disciplina: DAS 5511: Projeto de Fim de Curso

Ricardo Souza Santos

Florianpolis, Maro de 2004.

Automao das Plataformas P-43 e P-48: Tratamento dos Pontos de Entrada e Sada

Ricardo Souza Santos


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 Automao Industrial Banca Examinadora:

Fernando Gonalves Costa Orientador Empresa Daniel Juan Pagano Orientador do Curso Prof. Augusto Humberto Bruciapaglia Responsvel pela disciplina Prof. Julio Elias Normey Rico, Avaliador Rafael Carvalho Uberti, Debatedor Pedro Alves Brito de Azambuja, Debatedor

Agradecimentos

Aos meus pais, por terem me apoiado incondicionalmente, e por terem me dado todas as condies de concluir os meus objetivos. Aos meus irmos, pelo tempo que passamos juntos e por sempre terem me ajudado. Aos amigos que fiz em todos nestes 5 anos de convivncia na UFSC. Aos professores do DAS, pela extrema competncia e dedicao, em especial aos professores Augusto Humberto Bruciapaglia e Daniel Juan Pagano que me deram uma oportunidade de ingressar no mundo da pesquisa e, at o momento, no mundo do petrleo. Ao orientador Fernando Gonalves Costa, com quem tive calorosas e valorosas discusses. Unicontrol pela excelente oportunidade que me deu.

Resumo

A P-43 e P-48 so as mais novas plataformas de explorao de petrleo desenvolvidas pela estatal Petrobras. Elas so a aposta da auto-suficincia na produo de petrleo no Brasil depois de anos em busca desta meta. A construo de estruturas de grandes propores como estas exige um longo trabalho de logstica e engenharia. Neste contexto, a Unicontrol foi a responsvel por toda a parte de desenvolvimento e implantao do sistema de automao destas plataformas. O sistema de controle baseado em automao por CLP. No caso das plataformas, isto significa controle central com entradas e sadas distribudas atravs de redes de comunicao. O sistema composto de vrios subsistemas redundantes que cuidam, cada uma deles, de uma funo de controle. Assim por exemplo, existe o sistema de controle do processo, o sistema de desligamento de emergncia e assim por diante. Este sistema de controle diretamente dependente da interao com os sinais de campo. Neste trabalho, foi desenvolvido o Sistema de Tratamento dos Pontos de Entrada e Sada, uma interface de software que visa garantir o cumprimento de especificaes de projeto. Estas especificaes so definidas pela Petrobras e visam facilitar o desenvolvimento da lgica e garantir uniformidade e confiabilidade na comunicao entre os sinais de campo e os controladores centrais (CLPs). O desenvolvimento do software se deu em linguagem STL para o CLP Siemens da famlia S7-400. Blocos de programa foram desenvolvidos e testados em laboratrio e cumprem com os requisitos especificados. O Sistema de Tratamento dos Pontos de Entrada e Sada substituiu outro, desenvolvido anteriormente, com vantagens em relao ao tempo de execuo, clareza da lgica e principalmente em relao ao espao de memria utilizado.

ii

Abstract

P-43 and P-48 are the newest oil platforms developed by the stated-owned Petrobras. With this two projects, Brazil will accomplish its goal of self-sufficiency in oil production. To build structures like these, a whole engineering and logistic work is needed. In this context, Unicontrol has been responsible for the development and implementation of the automation system. The control system is based in central PLCs controlling distributed I/O over a networked system. The system is composed by a set of redundant subsystems which are responsible, each one, for a control function. Thus, for example, there is the Process Control System, the Emergency Shutdown System, etc. This control system is directly dependant on the communication with field signaling. In this work, it has been developed an I/O Signals Management System, a software interface which aims at a project specification accomplishment. These specifications are defined by Petrobras to facilitate the logic development and to ensure sameness and reliability in the communication between field signaling and PLCs. The software has been developed in STL (Statement List) Language for Siemens S7-400 PLC. Software blocks have been developed and tested in laboratory and they accomplish the specifications required. This system has displaced another one, previously developed, with advantages related to the scan time and mainly related to the memory space required for the logic. In this way, control system gets faster ensuring a whole system better performance.

iii

Sumrio

Agradecimentos................................................................................................. i Resumo ............................................................................................................ ii Abstract ........................................................................................................... iii Sumrio ........................................................................................................... iv Captulo 1: Introduo ......................................................................................1 Captulo 2: Unicontrol no Projeto......................................................................4 Captulo 3: Caractersticas Construtivas das Plataformas................................7 3.1: Caractersticas do leo..........................................................................9 3.2: Viso Geral do Processo .......................................................................9 Captulo 4: Arquitetura Geral das Redes de Controle ....................................11 4.1: Acesso aos Dados Remotos................................................................12 4.2: Rede Profibus DP ................................................................................13 4.3: Profibus FMS e Nvel Superior de Controle .........................................14 Captulo 5: S7-400 e S7-300 ..........................................................................18 5.1: Hardware Controlador Central.........................................................18 5.2: Princpios de Programao do S7-400 ................................................24 Captulo 6: Tratamento de Entradas e Sadas ...............................................47 6.1: Objetivo do Tratamento de Entradas e Sadas ....................................47 6.2: Mapeamento de Memria do CLP .......................................................49 6.3: Implementao ....................................................................................50 Captulo 7: Resultados ...................................................................................86 7.1: Condies de Obteno dos Resultados.............................................86 7.2: Visualizao do Funcionamento ..........................................................87 iv

7.3: Resultados Obtidos..............................................................................87 Captulo 8: Concluses ..................................................................................90 Bibliografia:.....................................................................................................92 Anexo A Instrues STL utilizadas ............................................................93

Captulo 1: Introduo

Os Campos de Produo de leo de Caratinga e Barracuda esto localizados na parte central da Bacia de Campos, onde a lmina dgua atinge 1040 metros. O Projeto das Plataformas P-43 / Barracuda e P-48 / Caratinga consiste da construo de duas plataformas FPSO (Floating Production, Storage and Offloading Units) para processar 150.000 bpd (barris por dia) de leo cru e 3.000.000 Nm3/d (metros cbicos por dia nas condies normais de temperatura e presso) de gs natural cada uma. Estas plataformas so responsveis pela extrao de um total de 45 poos (26 para P-43 / Barracuda e 19 para P-48 / Caratinga). Nestas refinarias flutuantes, onde a primeira fase do refino executada, o petrleo dos reservatrios transportado para a superfcie, separado da gua, gs e areia que o acompanham.

Fig. 1.1 Localizao dos Campos de Barracuda e Caratinga

Estas plataformas exigem um complexo e extenso sistema de controle e superviso de maneira a promover o funcionamento automatizado do sistema. Uma rede eficiente, com possibilidade de integrao a outros sistemas, uma das ferramentas necessrias ao atendimento deste requisito.

A rede de controle utilizada nestas plataformas na verdade um conjunto de redes que atuam em conjunto para garantir segurana e confiabilidade ao sistema. Sua arquitetura e tecnologia foram projetadas para evitar ao mximo que falhas afetem a controlabilidade do sistema. Um exemplo disso so os anis de comunicao que interligam os painis remotos aos CLPs: alm da redundncia, seguem caminhos alternativos na plataforma. So ainda construdos em fibra tica garantindo segurana nas reas classificadas, imunidade a rudos eletromagnticos e menor perda de pacotes de informao. Outra rede existente, utilizada especificamente para fazer a manuteno preditiva da instrumentao baseada em sinais de 4 a 20 mA, o protocolo Hart. H ainda a rede do AFDS (Sistema Enderevel de Deteco de Fogo), responsvel pela interligao dos sensores de fogo e gs. O sistema supervisrio est concentrado na ECOS (Estao Central de Operao e Superviso), localizado na sala de controle. O sistema de controle central e basicamente formado por 5 CPUs de CLP redundantes, totalizando 10 CPUs. A ECOS ligada aos CLPs atravs de uma rede Ethernet. As plataformas P-43 e P-48 fazem parte da categoria das grandes plataformas. Seu sistema de controle possui mais de 15.000 pontos de E/S. Estes sinais so parte fundamental do sistema de controle da plataforma. O tratamento de sinais de E/S visa prover o sistema de controle de informao vinda do campo de uma maneira padronizada, realizando funes de temporizao, bypass de entrada e travamento de estado (selo de alarme). A sada do sistema igualmente tratada, dando ao operador do sistema a flexibilidade de sobrescrever os bits da lgica do intertravamento, atravs do supervisrio. Uma dificuldade em implementar tal sistema est no fato de a linguagem disponvel para programao ser de baixo nvel. Para fazer a varredura (scan) de todos os bits teve-se de utilizar um ponteiro especial que d informao de endereo e comprimento de rea. Alm disso, o fato de se utilizar temporizao (na verdade, um atraso no sinal) cria uma dificuldade adicional que ser explicada no captulo especfico. Nos captulo 2, ser feita a descrio do papel da Unicontrol no projeto, principalmente do escopo de suprimento. 2

No captulo seguinte, algumas caractersticas construtivas das plataformas sero descritas, assim como uma viso geral do processo. No quarto captulo, a arquitetura das redes de controle ser mostrada. As particularidades de cada uma e sua importncia no alcance do projeto. No quinto captulo, as caractersticas do hardware sero mostradas, assim como as de software. Alguns conceitos bsicos do CLP utilizado sero mostrados para que no sexto captulo seja caracterizada a implementao propriamente dita. No stimo captulo sero apresentados os resultados obitidos e ser discutida a soluo adotada. No oitavo e ltimo captulo, sero expostas as concluses acerca do trabalho realizado.

Captulo 2: Unicontrol no Projeto

O projeto de construo das plataformas Barracuda e Caratinga P-43 / P-48 teve incio com a abertura da licitao. A Petrobras no constri as plataformas mas contrata empresas competentes para faz-lo. A vencedora da licitao para a construo foi a empresa KBR, ligada americana Halliburton. A KBR recebeu da Petrobras um contrato de cerca de U$ 1,3 bilho para ser usado na perfurao dos poos e construo das duas plataformas. Devido magnitude do projeto, e diversidade de tarefas envolvidas na construo, nem todos os servios so realizados pela ganhadora da licitao (Tabela 2-1). Outras empresas so usualmente contratadas para tarefas mais especficas como por exemplo a automatizao das plataformas. Neste contexto, a Unicontrol foi ento escolhida pela KBR para ser a responsvel pela automao da plataforma.
Tabela 2-1 Ordem de Contratao das Empresas

Produo de Petrleo Construo da P-43 e P-48

Automao

O papel da Unicontrol envolveu o suprimento de todo o equipamento e servios para a ECOS (Estao Central de Operao e Superviso), incluindo:

11 painis de E/S remotos com grau de proteo IP54.

12 painis de E/S remotos com grau de proteo IP65. 45 km de fibra tica (halogen free para evitar propagao de incndio). CLPs para todos os subsistemas de controle e painis de E/S, num total de 10 CPUs e 1750 cartes de E/S.

8 estaes de trabalho e 2 servidores. 19 microcomputadores e notebooks para manuteno, administrao e aplicaes de terceiros.

Sistema de deteco de Fogo & Gs (AFDS).

A Unicontrol cobriu as reas de engenharia, manufatura, compra, desenvolvimento de software e comissionamento. Toda a parte de engenharia foi concentrada no Brasil j que a Halliburton / KBR e Petrobras tm seus centros de operao para este projeto no Rio de Janeiro. A compra dos equipamentos foi feita atravs do escritrio da Unicontrol em So Paulo. Os painis com grau de proteo IP54 (proteo contra poeira e projees dgua) foram usados para reas no-classificadas enquanto os painis IP65 (proteo total contra poeira e contra jatos dgua), tiveram de ser projetados e manufaturados pela Unicontrol, com o processo de certificao feito no Brasil. Estes foram posteriormente enviados Singapura, local da construo naval da P-43, conforme a necessidade. Toda a programao do CLP, desde a anlise das matrizes de causa-efeito at o desenvolvimento, aprovao e implementao dos blocos de funo esto sob a responsabilidade da Unicontrol. A Arquitetura de Controle por Unidade de Processo (MCPU) divide a segurana e as funes do processo de qualquer unidade em cinco grupos: Controle do Processo (Control), Fogo & Gs (F&G VAC), Utilidades da Embarcao (Vessel), Gerenciamento de Energia (Electrical) e Desligamento de Emergncia (ESD). Cada grupo funcional implementado na configurao do seu prprio hardware redundante.

O uso da Arquitetura MCPU resulta em cada unidade do processo sendo controlada por at cinco controladores diferentes, cada um responsvel por um dos grupos funcionais descritos acima. Neste sentido, a perda de parte da funcionalidade em algum grupo funcional no significar que a plataforma como um todo ser afetada. Devido configurao por funes, a cada dispositivo inteligente permitido comunicar-se com os elementos instalados em cada rea de processo da plataforma. Para garantir maior confiabilidade ao sistema, todos os servios diretamente envolvidos com a ECOS (Estao Central de Operao e Superviso) esto tambm sob a responsabilidade da Unicontrol. Isto inclui: Todo o projeto, desenvolvimento e implementao de todos os aspectos de engenharia da ECOS. Todos os servios de campo, da instalao ao comissionamento, startup, operao assistida e treinamento. Interligao a outros pacotes j instalados, garantindo sua total integrao ECOS.

Captulo 3: Caractersticas Construtivas das Plataformas

Quanto s plataformas, esta a primeira vez que duas plataformas esto sendo construdas em dois lugares diferentes (Singapura e Brasil) para iniciar a produo quase que simultaneamente. A P-48 est sendo construda no estaleiro Bras Fels em Angra dos Reis RJ. A parte de construo naval da P-43 foi quase que totalmente realizada em Singapura, no Estaleiro Jurong. Isto devido inexistncia, no Brasil, de um outro dique seco que comportasse o seu porte (337 m de comprimento). Atualmente, a P-43 encontra-se no Estaleiro Mau-Jurong em Niteri RJ em fase de comissionamento e instalao dos mdulos. As plataformas P-43 e P-48 so resultado da converso de antigos navios petroleiros em plataformas e so mais um passo da Petrobras em busca da autosuficincia no mercado de petrleo. Juntas ambas podem produzir 300 mil barris de petrleo por dia. Os petroleiros utilizados nestas plataforamas no poderiam mais ser utilizados no transporte de petrleo pelo fato de possurem casco simples (normas ambientais internacionais no permitem mais a utilizao deste tipo de navio nesta atividade). Foram ento transformadas em FPSOs (Floating Production, Storage and Offloading), unidades flutuantes que produzem, separando o leo da gua e areia, armazenam at um certo limite e depois descarregam o leo produzido em outro navio de transporte. So versteis devido a sua capacidade de locomoo, feita atravs de rebocadores, e por no precisarem de dutos ligando-as terra para o escoamento a produo. A FPSO P-43, por exemplo, tem uma capacidade de armazenamento mxima maior do que 1,5 milho de barris, o que equivale a aproximadamente a 75% da mdia diria de produo da Petrobras em 2003, que foi de 2.001.100 bpd [1]. A produo esperada da plataforma de 150 mil bpd, ou seja, pode ficar aproximadamente 10 dias em produo continuada sem descarregamento. No entanto, quando estiver em funcionamento, prev-se que o descarregamento da produo se dar a cada 7 dias durando dois dias. A capacidade de bombeamento mxima, da P-43 para o navio de transporte, superior a 60 mil barris por hora. 7

Fig. 3.1 Stena Continent: Navio convertido na P-43

Fig. 3.2 P-43 chegando de Singapura (sem os mdulos superiores)

3.1: Caractersticas do leo


O leo a ser produzido em Barracuda tem um API de 26, o que caracteriza um leo pesado, tpico da Bacia de Campos. Seus valores de viscosidade so de 30,0 cP (30 C); 21,0 cP (50 C) e 15,7 cP (60 C). O incio do deposio de parafina ocorre a 15 C.

3.2: Viso Geral do Processo


Numerosos poos alimentam as FPSOs de Barracuda e Caratinga (26 poos do campo de Barracuda para a P-43 e 19 do campo de Caratinga para a P-48). Estes poos so ligados ao navio atravs de dutos flexveis (risers). Existem tambm as linhas que fazem a transmisso dos sinais de controle chamadas de umbilicais. O controle de abertura do poo feito atravs de acionamento hidrulico pela rvore de natal1 molhada, ou seja, localizada no fundo do mar. O leo extrado chega plataforma e passa pelo manifold2. Neste local existe um conjunto de tubulaes grandes propores, preparadas para receber o petrleo vindo dos poos. Existem na plataforma trs manifolds: dois de produo e um de testes do leo produzido. Os testes so necessrios para verificar se leo encontra-se dentro dos padres esperados para aquela regio e para analisar o efeito dos mtodos de elevao artificial na composio do leo. Isto inclui a relao gua / leo e a quantidade de areia. O leo vindo dos manifolds de produo ento encaminhado aos separadores para a retirada de gua e gs (Fig. 3.3). A separao neste caso d-se por decantao: a gua, assim como algumas impurezas presentes no leo, mais densas, tendem a descer enquanto o leo e o gs, menos densos, tendem a subir. A gua retirada no pode ser simplesmente descartada. Ela passa por um processo de filtragem no hidrociclone e depois descartada.

rvores de natal so conjuntos de conectores e vlvulas usadas para controlar o fluxo dos

fluidos produzidos ou injetados, instalados em cima da cabea do poo.


2

Manifold um equipamento de passagem e de manobra da produo, onde o leo

agrupado em um mesmo coletor.

Deste separador inicial, o leo segue para o desidratador de leo e depois para o tratador eletrosttico. O tratador eletrosttico retira as impurezas restantes ainda presentes que no saram por decantao. Deste, o leo segue at os separadores atmosfricos para a retirada do restante do gs. J sem gua e sem gs, o leo pode ser armazenado nos tanques de estocagem do navio. Uma parte do gs pode ser utilizada na elevao artificial por gas lift. Existem vasos para armazen-lo j que o gs o combustvel utilizado para a gerao de energia na plataforma. O excesso de gs queimado no flare. Ainda existem processos auxiliares para a desidratao de gs.

Fig. 3.3 Fluxo de Processo

10

Captulo 4: Arquitetura Geral das Redes de Controle

O bom funcionamento da automao da plataforma diretamente dependente das redes de comunicao entre os sensores, controladores e atuadores. Um bom projeto de engenharia essencial neste caso que envolve mais de 15000 pontos de entrada e sada. evidente que esta quantidade de sinais no pode ser ligada diretamente a mdulos de E/S na sala de controle a quantidade de cabos torna praticamente impossvel esta abordagem. A arquitetura preocupouse ento em distribuir o controle usando painis remotos com estes cartes de E/S deixando a comunicao com o controlador central sob responsabilidade de uma rede Profibus DP. Desta maneira, reduz-se a fiao e permite-se que os instrumentos fiquem fisicamente mais prximos de seus cartes de integrao. Garante-se desta maneira maior confiabilidade ao sistema e maior resistncia a falhas. O controle da plataforma feito centralmente, a partir de CLPs localizados em uma sala de painis ao lado da sala de controle. Mais especificamente, realizado por 5 CLPs Siemens S7-400 redundantes alimentados por uma fonte de alimentao da mesma srie. Cada um destes CLPs responsvel por uma funo de controle, os chamados subsistemas de controle. Esto presentes na plataforma os seguintes subsistemas de controle:

Emergency Shutdown Subsystem (Sistema de Desligamento de Emergncia) composto por duas CPUs de CLP redundantes.

Vessel Control Subsystem (Sistema de Controle de Utilidades da Embarcao) composto por duas CPUs de CLP redundantes

Electrical Control Subsystem (Sistema de Controle Eltrico) composto por duas CPUs de CLP redundantes.

Fire & Gas Subsystem (Sistema de Conteno de Fogo & Gs) composto por duas CPUs de CLP redundantes.

11

Process Control Subsystem (Sistema de Controle de Processos) composto por duas CPUs de CLP redundantes.

Alm destes, existem outros dois CLPs, tambm redundantes, totalizando quatro CPUs, que fazem o controle do Sistema de Gerenciamento de Energia e do Gerador de Emergncia. Estes dois sistemas no estiveram sob responsabilidade da Unicontrol e no sero abordados neste trabalho.

4.1: Acesso aos Dados Remotos


A comunicao entre os instrumentos de campo e os CLPs feita atravs de subredes que esto associadas a cada um dos subsistemas que formam o sistema de controle (Emergency Shutdown ESD; Vessel Control VCS; Electrical Control ECS; Fire & Gas FGV; Process Control PCS). Cada subsistema da plataforma possui seus prprios pontos de entrada e sada. A arquitetura bsica formada por painis de entrada e sada remotos, localizados no campo, prximos aos instrumentos, que centralizam a coleta e distribuio dos dados. Todos os instrumentos automatizados so ligados a estes painis. Nestes painis esto alocados cartes de E/S digitais e analgicos, responsveis pela transformao dos sinais, da srie Siemens S7-300 e uma fonte alimentadora. Desta maneira os sinais podem ser endereados pela CPU S7-400 (controlador central) e utilizados nas rotinas de controle. Os sinais de um mesmo subsistema so agrupados em um mesmo mdulo de interface chamado IM. Deste mdulo existe uma ligao a um conversor OLM eltrico / tico. Existem usualmente duas abordagens em relao redundncia no campo. Uma delas prev a duplicao do I/O, isto , a utilizao de dois instrumentos de campo para a leitura do mesmo sinal. Outra se utiliza da redundncia do meio de transmisso. Para escolher uma ou outra deve-se levar em conta os custos de engenharia. Foi devido ao grande nmero de instrumentos de campo que a segunda opo foi escolhida. Os cabos redundantes percorrem caminhos diferentes na

12

plataforma para garantir maior segurana. Isto porque, caso houver rompimento de um deles, no necessariamente o outro se romper. Esta rede redundante utiliza o protocolo Profibus DP e interliga painis e controladores centrais.

4.2: Rede Profibus DP


No caso do acesso aos dados dos painis, utilizada a rede Profibus DP, considerada uma das redes de campo de mais rpidas e confiveis disponveis atualmente. um formato de troca de mensagens especificamente projetado para acesso serial s entradas e sadas. O sufixo DP (decentralized periphery) refere-se periferia descentralizada, que usado para descrever a arquitetura de E/S distribudo com controle centralizado. No caso das plataformas, como j dito anteriormente, imperativa a utilizao de um barramento de campo como este. Com mais de 15000 pontos de E/S, seria impossvel ligar todos os dispositivos diretamente aos controladores centrais, usando um par de fios para cada dispositivo como no modo mais usual. Os problemas de cabeamento seriam evidentes, tanto na quantidade como na qualidade das conexes, trazendo muitos problemas ao controle devido a falhas. O protocolo permite que os dispositivos de E/S sejam conectados aos seus respectivos controladores centrais por apenas um par de fios. O Profibus DP utiliza um mestre no barramento para controle de acesso ao cabo serial RS-485. Um escravo Profibus DP qualquer dispositivo perifrico que processa informao e envia sua sada ao mestre. O escravo uma estao passiva na rede j que no tem direito a aceso ao barramento e pode apenas enviar sinais de reconhecimento de mensagens recebidas ou enviar mensagens de resposta ao mestre sob requisio. Todos os escravos Profibus tm a mesma prioridade e toda a comunicao da rede se origina do mestre. A CPU S7-400, utilizada no controle central, suporta a utilizao do protocolo Profibus DP e possui uma entrada especfica para este protocolo. No caso da rede utilizada na plataforma, esta CPU faz o papel de mestre de comunicao. Os mestres so as estaes ativas na rede. Eles determinam a velocidade de transmisso e os escravos detectam automaticamente esta taxa. Os mestres lidam com o envio e recebimento de dados 13

de seus escravos e agem como os controladores na troca de informao de E/S com seus escravos, fazendo uma atualizao cclica dos dados. Os mestres podem acessar escravos de maneira individual, de maneira grupal (multicast) ou podem enderear escravos de maneira geral para todos os escravos conectados (broadcast). Os escravos retornam respostas para todos as mensagens endereadas individualmente a eles. Eles no respondem a um multicast ou um broadcast de um dispositivo mestre. Devido ao fato de o Profibus DP usar um algoritmo que permite o acesso ao barramento de maneira cclica (peridica) ele um protocolo determinstico. Isto significa que o sistema Profibus garante um tempo mximo de ciclo no qual todos os dispositivos sero atualizados. De fato, a rede Profibus DP foi projetada para ter este comportamento determinstico. Isto garante mais confiabilidade ao sistema pelo fato de nenhum sinal ficar sem ser lido em um tempo determinado, ou seja, no ocorre a postergao indefinida no acesso. Isto especialmente importante na plataforma pois quase todos os sinais trazem, direta ou indiretamente, informaes sobre segurana do sistema. Na Fig. 4.1 pode-se ter uma viso geral do sistema, incluindo as redes Profibus DP e Profibus FMS, que ser abordada no prximo item.

4.3: Profibus FMS e Nvel Superior de Controle


Cada CLP se comunica com seu redundante via enlace tico instalado na prpria CPU. A redundncia de hardware mais uma das caractersticas do sistema que visa garantir a segurana do controle. Todo o rack que contm as CPUs duplicado. Isto inclui as fontes de alimentao, as prprias CPUs (com entradas MPI e Profibus DP), o modulo de comunicao via Ethernet, o mdulo de comunicao Profibus FMS e, em alguns subsistemas, os mdulos de comunicao via Modbus. O enlace tico (Fig. 4.2) a maneira pela qual as CPUs de um mesmo subsistema se comunicam para manter a sincronia das informaes e para avisar que a outra deve entrar em ao devido a alguma falha na CPU principal. A este sistema d-se o nome de hot stand by.

14

Fig. 4.1 Arquitetura do sistema de controle principal

Todas as CPUs dos 14 CLPs (subsistemas de controle, Sistema de Gerenciamento de Energia e Gerador de Emergncia) so interligadas em um anel de fibra tica que funciona utilizando o protocolo Profibus FMS. Para a utilizao desta tecnologia, est acoplado ao rack da CPU S7-400 um mdulo Siemens CP443-5 que contm um carto especfico para esta finalidade. Deste mdulo existe uma ligao a uma OLM, um dispositivo conversor eltrico / tico. Este dispositivo possui uma sada eltrica e duas ticas, formando um T que permite a topologia em anel. Desta forma, todas as CPUs do sistema ficam penduradas no anel (Fig. 4.2). A topologia em anel possui uma caracterstica que a torna vantajosa em relao a outras. Em caso de rompimento do cabo em algum ponto, ainda assim a comunicao via Profibus FMS entre as CPUs poder acontecer, pois existir um caminho ligando todas elas.

15

Fig. 4.2 Redundncia dos racks, enlace tico e rede Profibus FMS

A transmisso de dados por uma via Profibus FMS (Fieldbus Message Specification) adequada para a transmisso de dados estruturados [2], neste caso entre as CPUs dos CLPs. A grande vantagem do protocolo Profibus FMS que estruturas de dados podem ser transferidas em um formato neutro (padro) e ento convertidos no formato exigido pelo dispositivo final. O direito de acesso rede definido pelo token que passado de um dispositivo mestre para outro. Os dispositivos escravos s reagem quando requisitados por um mestre. Em termos de funcionalidade de um dispositivo FMS, uma distino feita entre:

Cliente FMS: requisita um servio, assumindo que este um dispositivo mestre.

Servidor FMS: fornece o servio requisitado. Tanto um mestre no Profibus como um escravo podem atuar como servidores.

16

Um sistema mestre FMS formado por dispositivos que tenham, todos eles, capacidade de se comunicar no formato FMS na mesma subrede Profibus. A rede utilizada na plataforma, no nvel dos CLPs, deste tipo.

17

Captulo 5: S7-400 e S7-300

Como exposto anteriormente, o sistema de controle da plataforma central e realizado pelo CLP Siemens srie S7-400, com a CPU 417H. So dez CPUs, cinco delas ativas e cinco em modo stand by. Os mdulos de expanso de E/S so da srie S7-300. Ambas as sries fazem parte da famlia Simatic Step 7.

5.1: Hardware Controlador Central


Os CLPs encontram-se nos racks na sala de painis, ao lado da sala de controle da plataforma. A configurao utilizada pode ser visualizada na Fig. 5.1.

Fig. 5.1 Configurao do Rack

5.1.1: Fonte de Alimentao PS 407


responsvel pela alimentao de todos os dispositivos presentes no rack. capaz de fornecer uma tenso de sada de 5 V DC e 24 V DC dependendo da aplicao. O fornecimento se d via barramento backplane, localizado na parte de trs do rack. A tenso de entrada pode ser tanto 120 quanto 230 V AC. A PS 407 suporta uma corrente mxima de fornecimento de 10 A e ocupa o espao correspondente a dois slots no rack.

18

A fonte PS 407 possui, em seu painel frontal:

Leds para confirmar tenso de sada em conformidade, tenso correta na bateria de backup e led para indicar falha interna;

Chave para reconhecimento de falha; Compartimento para bateria de backup; Chave para ativao do monitoramento da bateria;

Seletor de tenso de entrada; Conexo com plug de 3 pinos.


Fig. 5.2 PS 407

Tabela 5-1 Especificaes Tcnicas PS 407 10A R

Especificaes Tcnicas PS 407 10A R Entrada Tenso de Entrada Tenso Classificada Tenso Permitida Freqncia do Sistema Freqncia Classificada Freqncia Permitida Tenso de Sada (Valores Classificados) Corrente de Sada (Valores Classificados) 50 / 60 Hz 47 at 63 Hz Sada 5 / 24 VDC 5 VDC: 10 A / 24 VDC: 1,0 A 110 / 230 VDC 120 / 230 VAC 88 at 300 VDC 85 at 264 VAC

19

5.1.2: CPU 417-4H

a Unidade Central de Processamento usada na plataforma, utilizada para sistemas que requerem alto desempenho e segurana. Esta a CPU mais poderosa da famlia S7-400. Possui entrada para dois mdulos de sincronia para conectar as CPUs redundantes atravs de um cabo de fibra tica. Na plataforma, eles so utilizados. Possui ainda uma interface mestre Profibus DP [3] e uma MPI (Multi-Point Interface) integradas diretamente CPU.
Fig. 5.3 Viso esquemtica da CPU 417-4H

Pode-se ainda utilizar cartes para expandir a memria de carga. Existem cartes de diversos tamanhos e dependendo da aplicao deve-se optar por mais ou menos memria. Na plataforma, foi utilizado um carto de expanso de memria RAM de 2 MB.
Fig. 5.4 CPU 417-4H

Tabela 5-2 Especificaes Tcnicas CPU 417-4H

Especificaes Tcnicas CPU 417-4H Memria Memria do Usurio 2 MB para programa 2 MB para dados At 10 MB para programa 20

Integrada Expansvel

At 10 MB para dados Memria de Carga Integrada 256 kB RAM Expansvel FEPROM Carto de Memria at 64 MB Expansvel RAM Carto de Memria at 64 MB Tempo de Execuo das Instrues Operao com Bits (mn.) 0,1 s Operao com Palavras (mn.) 0,1 s Operao com Ponto fixo (mn.) 0,1 s Operao com Ponto-flutuante (mn.) 0,6 s Temporizadores / Contadores Contadores S7 512 Retentividade Selecionvel C 0 at C 511 Alcance dos Contadores 0 at 999 Contadores IEC Sim Tipo SFB Temporizadores S7 512 Alcance 10 ms a 9990 s Temporizadores IEC Sim Tipo SFB reas de Dados Memria de bits 16 kB Retentividade Selecionvel MB 0 at MB 16383 Entradas e Sadas rea total de endereamento 16 kB Tabela Imagem da Periferia 16 kB Canais Digitais 131072 Canais Analgicos 8192

5.1.3: CP 443-1

mdulo

CP

443-1

responsvel pela comunicao do S7400 com a rede Industrial Ethernet. A taxa de transmisso de 10 ou 100 Mbits. A conexo com a rede Ethernet se d atravs de um conector de 15 pinos [3].
Fig. 5.5 CP 443-1

21

Tabela 5-3 Especificaes Tcnicas do Mdulo Ethernet CP 443-1

Especificaes Tcnicas CP 443-1 Interfaces Conexo Industrial Ethernet Soquete de 15 pinos Consumo de Corrente @ +5 V DC Aproximadamente 1,4 A @ 24 V DC Tpico 220 mA, mx. 340 mA Perda de Potncia 8,6 W Condies Ambientais de Operao Temperatura de Operao 0 a 60 C Temperatura de Transporte / -40 a 70 C Armazenagem Umidade Relativa @ 25 C Mx. 95% @ 25 C

5.1.4: CP 443-5 BASIC

O CP 443-5 BASIC o responsvel pela integrao do S7-400, como mestre, rede Profibus FMS. Suas funcionalidades incluem a operao com sistemas S7 como os presentes na redundantes,

aplicao da plataforma [3].


Fig. 5.6 CP 443-5 BASIC

Tabela 5-4 Especificaes Tcnicas do Mdulo Profibus CP 443-5 BASIC

Especificaes Tcnicas CP 443-5 BASIC Taxa de transmisso de dados Tecnologia de transmisso Conexo Tenso de alimentao Consumo de corrente @ 5 V Perda de Potncia 9,6 kbits/s a 12 Mbits/s Interface Cabo RS-485 Soquete de 9 pinos 5 V DC 5% 1,2 A 6,5 W 22

Condies Ambientais de Operao Temperatura de Operao 0 a 60 C Temperatura de Transporte / -40 a 70 C Armazenamento Umidade Relativa Mx. 95% @ 25 C

5.1.5: CP 441-2
O mdulo CP 441-2 utilizado nos subsistemas Vessel e Fogo & Gs que possuem comunicao Modbus. No caso do subsistema Vessel, este tipo de comunicao seria usado para controle do nvel dos tanques de produo, enquanto no sistema Fogo & Gs ele usado pelo AFDS (Sistema Enderevel de Deteco de Fogo). O mdulo foi projetado para comunicao ponto a ponto serial de alta velocidade. Ele aceita interfaces variveis (2 com 2) para uma comunicao mais eficiente.
Fig. 5.7 CP 441-2

Tabela 5-5 Especificaes Tcnicas do Mdulo Modbus CP 441-2

Especificaes Tcnicas CP 441-2 Nmero de entradas Mtodo de transmisso Interface 2, varivel 20 mA (TTY) (mx. 19,2 kbits/s) RS232 (V24) (mx. 115,2 kbits/s) RS422 / RS485 (X27) (mx. 115,2 kbits/s) 115,2 kbits/s distribudos nas 2 interfaces RS 232C (V24): 10m 20 mA (TTY): 1000m RS 422 / 485 (X27): 1200m Parametrizao Via Step 7

Taxa de Trasmisso Mxima Distncia de Transmisso Mxima

23

Existe, neste mdulo, um driver disponvel para comunicao em Modbus no formato RTU.

5.1.6: Rack do Controlador Central


A integrao dos dispositivos descritos nos itens acima pode ser visualizada na Fig. 5.8.

Fig. 5.8 Vista geral do Rack

5.2: Princpios de Programao do S7-400


A maior parte da programao se d atravs do software SIMATIC Manager que a principal aplicao para execuo do projeto pois, atravs dele, pode-se configurar, editar e fazer testes nos programas. O primeiro passo para se iniciar um projeto configurar o hardware da aplicao. A primeira comunicao do terminal de programao (geralmente um PC) com o CLP deve ser atravs da MPI (Multi-Point Interface) pois este o nico meio que se conecta ao CLP sem configurao. A MPI tem como objetivo conectar o CLP ao terminal de programao ou interface de operao, ou ainda a outros CLPs. Na CPU existe somente uma MPI porm possvel acessar atravs dela todos os outros mdulos programveis. 24

Geralmente, utiliza-se a MPI para se fazer o download de uma configurao de hardware para a CPU. Isto porque sua taxa de transmisso de 187,5 kbps, muito abaixo da taxa de uma rede Ethernet por exemplo que de 10 Mbps ou 100 Mbps. Ento, utiliza-se a MPI somente para configurar uma rede Ethernet para acessar o CLP do terminal de programao. A programao no CLP Siemens S7-400 segue a norma IEC 1131. Esta norma um documento escrito por um consrcio de fabricantes de CLPs, casas de sistemas e instituies direcionadas a desenvolver plataformas para nveis de padronizaes na automao industrial. Contm caractersticas de funes e definies de termos gerais comuns para CLPs. Por exemplo, processamento cclico, imagem de processo, divises de tarefas entre dispositivos de programao, CLPs e Interfaces Homem Mquina. De maneira geral, o ciclo de processamento da CPU se d como mostrado na Fig. 5.9. Ele consiste de trs partes principais:

A CPU atualiza o estado dos sinais de entrada na tabela imagem das entradas;

A CPU executa o programa do usurio com as respectivas operaes chamadas pelo OB 1;

A CPU escreve os valores da tabela imagem das sadas no mdulo de sadas.

As tabelas imagem de entrada e sada so reas da CPU onde os estados das entradas e sadas so a cada ciclo armazenadas. Existem reas distintas para as entradas e para as sadas. Normalmente o programa de usurio, quando acessa uma entrada ou sada, est acessando na realidade esta rea. A tabela imagem das entradas do processo o local onde o estado das entradas so arquivadas na CPU. Antes do incio de cada ciclo de programa, a CPU l a periferia (mdulos de entrada) e transfere os estados dos sinais digitais para esta rea. Da mesma maneira, a tabela imagem das sadas contm o valor das

25

sadas resultantes do processamento do programa. Somente no final do ciclo de programa, estes valores de sada so transferidos para os mdulos de sada. Esta abordagem garante que um mesmo sinal de entrada ou sada tenha sempre o mesmo valor durante um scan do CLP.

Fig. 5.9 Ciclo de Processamento da CPU

5.2.1: reas de Memria


Existem trs reas de memria na CPU S7-400: a memria de carga, a memria de trabalho e a memria de sistema (Fig. 5.10). A memria de carga parte do mdulo programvel. Ela contm objetos criados pelo dispositivo de programao e pode ser tanto um carto de memria como uma memria integrada na CPU. ainda dividida em memria de carga dinmica e memria de carga retentiva. A memria de trabalho do tipo RAM e aquela que o processador da CPU acessa quando executa o programa de usurio. Contm o programa de usurio executvel.

26

Fig. 5.10 reas de Memria da CPU S7-400

A memria de sistema tambm RAM e integrada na CPU. Ela armazena dados de temporizadores, contadores, da memria de bits e dados necessrios internamente pelo sistema operacional. Possui ainda a pilha de blocos (ordem de chamada dos blocos), a pilha de interrupo e o buffer de diagnstico (que d informaes dos ltimos eventos ocorridos com a CPU). A memria de sistema dividida internamente em algumas reas que podem ser acessadas pelo programa de usurio como mostrado na Tabela 5-6.
Tabela 5-6 reas de Endereo da Memria de Sistema

Memria de Sistema rea de Endereo Tabela Imagem da Periferia de Entrada Tabela Imagem da Periferia de Sada Memria de Bit Temporizadores Notao no S7 Iy Descrio No comeo do ciclo de varredura (scan) a CPU l as entradas dos mdulos de entrada e salva estes valores nesta rea. Durante o ciclo de varredura (scan) o programa calcula os valores de sada e os aloca nesta rea. No final do ciclo, a CPU envia estes valores calculados aos mdulos de sada. Esta rea fornece espao para resultados intermedirios calculados no programa. Fornece espao para temporizadores. 27

Qy

My T

Contadores

Fornece espao para contadores. Blocos de Dados contm informao para o programa. Eles podem ser definidos para uso geral ou podem ser determinados para um especfico Bloco de Funo ou Bloco de Funo do Sistema. So abertos no programa de usurio com a instruo OPN DB So Blocos de Dados abertos no programa com a instruo OPN DI. Esta rea contm dados temporrios de um bloco enquanto este est sendo executado. A L stack tambm fornece memria para transferncia de parmetros e para salvar resultados temporrios.

Bloco de Dados

DBy

Bloco de Dados Instance Dados Locais

DIy

Ly

Obs. 1: y fornece a dimenso de acesso rea. Pode ser B para bytes, W para words e D para double words. Obs. 2: quando o acesso ao bit no preciso usar o indicador de dimenso de acesso y, exceto quando o acesso for em um DB ou em um DI. Neste caso devese utilizar X para acess-lo.

5.2.2: Acesso Direto s E/S


Pode-se acessar diretamente os sinais de entrada e sada. Isto demanda mais tempo j que necessrio acesso rede que conecta os perifricos ao CLP (no caso das plataformas, a rede Profibus DP). Para estas reas, no possvel o acesso a bits, porque este acesso foi projetado exclusivamente para endereamento a variveis analgicas.
Tabela 5-7 Acesso direto rea de E/S

rea Periferia de Entrada rea Periferia de Sada

PIy PQy

As reas Periferia de Entrada e Sada permitem acesso direto s entradas e sadas centrais e distribudas.

28

5.2.3: Registradores
Existem quatro tipos de registradores na CPU S7-400: os acumuladores, os registradores de endereos, os registradores de blocos de dados e a palavra de status. A seguir, sero descritos o funcionamento e a utilidade de cada um deles. 5.2.3.1: Acumuladores Existem quatro acumuladores presentes na CPU S7-400. Eles so utilizados para instrues envolvendo bytes, words e double words em operaes aritimticas, comparaes e outras. O tamanho dos acumuladores de 32 bits. Eles so referenciados por ACCU X, onde X o nmero do acumulador. Ainda podem ser referenciados por ACCU X-L ou ACCU X-H, sendo que L se refere word menos significativa e H word mais significativa. Da mesma maneira, pode haver uma referncia ao byte. Neste caso, utilizam-se duas letras, como por exemplo ACCU 1-L-L, que se refere ao byte menos significativo da word menos significativa do acumulador 1.

Fig. 5.11 Acumuladores no S7-400

Tabela 5-8 Exemplo de comandos envolvendo acumuladores

L <endereo>

Carrega o byte, word ou double word no ACCU 1 (acumulador 1) endereado depois de o antigo contedo do ACCU 1 ter sido salvo no ACCU 2 e depois de ACCU 1 ter sido resetado. Copia o contedo do ACCU 1 no endereo de destino. O nmero de bytes copiado do ACCU 1 depende do tamanho especificado no endereo de destino. Troca o contedo do ACCU 1 com o contedo do ACCU 2.

T <endereo> TAK

29

5.2.3.2: Registrador de Endereos Dois registradores de endereo de 32 bits cada um so usados como ponteiros para o registro de endereamento indireto. Eles so referenciados por AR1 e AR2. O registrador de endereo contm informao da rea de memria (I, Q, M, DB, etc.), do byte e do bit endereado. O registro enderea univocamente os bits de todas as reas, exceto dos Blocos de Dados (DBs). Para estes, deve-se informar a priori o nmero do DB a ser utilizado.

Fig. 5.12 Formato do Registrador de Endereos

5.2.3.3: Registrador de Bloco de Dados Os registradores de bloco de dados contm os nmeros dos blocos de dados que esto abertos (ativos). Eles possuem 16 bits (tamanho necessrio para armazenar um nmero inteiro). Assim possvel que dois DBs estejam simultaneamente abertos; um DB no registrador de DB e o outro como DB Instance no registrador DI.

Fig. 5.13 Registradores de Bloco de Dados

Para abrir um Bloco de Dados, deve-se guardar o nmero deste no registrador de bloco de dados. Para isso existe a instruo OPN cujo funcionamento est descrita no Anexo A.

30

5.2.3.4: Palavra de Status A Palavra de Status contm vrios bits que refletem o resultado ou o estado lgico de instrues individuais durante a execuo do programa. Possui 16 bits mas apenas os 9 primeiros so utilizados.

Fig. 5.14 Formato da Palavra de Status

O bit 1 da palavra de status o bit RLO (Result of Logic Operation). usado como memria temporria em operaes de lgica binria. Uma instruo gerada verifica o estado de um contato e o combina logicamente com o resultado do cheque (bit de status) de acordo com as regras da lgica. O resultado armazenado no bit de RLO. Existem comandos que atuam diretamente no RLO. Com SET pode-se forar RLO para 1, com CLR para 0, e com NOT inverte-se o estado de RLO. O bit 2 da palavra de status o bit STA (bit de status). Este contm o valor de um bit endereado. O bit de status sempre mostra, por leitura ou escrita o estado do bit endereado. Estes so os principais bits da palavra de status e os que so efetivamente utilizados.

5.2.4: Linguagens de Programao


Esto disponveis no SIMATIC Manager 4 tipos de linguagens de prograo: LAD (ladder), FBD (function block diagram), STL (statement list) e o SCL que uma programao baseada em Pascal. 5.2.4.1: LAD Ladder Tambm chamada de linguagem de diagrama de contatos, esta linguagem remete conexo entre lgebra de Boole e circuitos eltricos. Na linguagem ladder, cada contado, ao assumir dois estados (fechado ou aberto), representa uma varivel booleana, ou seja, uma varivel que assume dois estados: verdadeiro ou falso [4]. 31

Fig. 5.15 Exemplo de diagrama ladder

Pela facilidade de construo e pela semelhana com os quadros de comando eltrico, o diagrama ladder (que quer dizer escada ou cascata) foi uma das primeiras tcnicas de programao de CLPs. Na Fig. 5.15 tem-se um exemplo de diagrama ladder. Neste caso, a equao booleana representada em ladder : Y = A.C + B. O diagrama possui duas linhas verticais, representando barras de alimentao. As relaes causa-efeito so representadas por linhas horizontais formadas por um elemento controlado (bobina de rel) e um conjunto de condies para o controle do elemento (rede de contatores). O diagrama , no entanto, uma representao lgica e no considera a tenso das barras de alimentao. O funcionamento no CLP se d por uma varredura, chamada scan, de cada linha horizontal do programa. As bobinas de rels apresentam ento um estado lgico dependente do estado lgico dos contatores que as controlam. As instrues bsicas da linguagem, disponveis em todos os CLPs so contatores normalmente abertos (NA ou NO), contatores normalmente fechados (NF ou NC), bobinas, bobinas inversas, bobinas de rearme (set), bobinas de desarme (reset), contatores sensveis borda de subida e contatores sensveis borda de descida. Ainda existem instrues de temporizador, instrues de contadores, instrues de movimentao, instrues de comparao e instrues de operaes algbricas que variam de acordo com o fabricante do CLP e outras definidos pela IEC (International Eletrotechnical Commission). No SIMATIC Manager pode-se agrupar um determinado nmero de linhas horizontais para formar uma network. As networks facilitam o entendimento do cdigo porque separam o cdigo em pequenos blocos que podem ser comentados e nomeados.

32

5.2.4.2: FBD Function Block Diagram Esta linguagem difere um pouco da linguagem ladder mas possui o mesmo objetivo. A diferena est no fato de que em FBD a programao escrita da mesma maneira que no diagrama de portas lgicas. Esta linguagem possui as mesmas funcionalidades da linguagem ladder, apenas a representao diferente. Como exemplo, temos na Fig. 5.16, a representao em FDB da equao Y = A.C + B, a mesma mostrada na Fig. 5.15 em ladder.

Fig. 5.16 Exemplo de Programao em FBD

5.2.4.3: STL Statement List Programming Language STL uma linguagem textual das mais poderosas do CLP S7-400. Com ela pode-se fazer uma programao mais eficiente porque so eliminadas linhas desnecessrias de cdigo. Alm disso, permitido o uso de ponteiros, fazendo com que a programao fique mais gil. Na Fig. 5.17 mostrado o exemplo de como seria a representao da equao booleana Y = A.C + B em STL.

Fig. 5.17 Exemplo de Programao em STL

Em STL, cada instruo corresponde a um passo da CPU. Um certo nmero de instrues, definido pelo usurio, pode ser agrupado para formar uma network. As instrues so muito mais prximas linguagem de mquina. Por exemplo, para mover um byte em ladder, basta utilizar o bloco especfico para isto. Em STL, 33

necessrio carregar o byte no acumulador e depois copiar o contedo do acumulador para o local desejado.
Tabela 5-9 Comandos STL

Exemplos de Comandos em STL JC <jump label> Se RLO = 1, JC interrompe a varredura seqencial do programa e pula para o destino identificado por jump label. Compara o contedo do ACCU 1 com o contedo do ACCU 2 . O contedo interpretado como nmeros inteiros de 32 bits. O resultado indicado pelo RLO; caso RLO = 1 a comparao verdadeira, caso contrrio, a comparao falsa. Copia o contedo de ACCU 1 no registrador de endereos AR1. Faz a operao de soma entre o ACCU 1-L e o ACCU 2-L e armazena o resultado em ACCU 1-L.

==D LAR1 +I

5.2.5: Ponteiros e seus formatos


Pode-se fazer uma programao em STEP 7 com a utilizao de ponteiros. Nesta seo ser descrito o funcionamento e a chamada destes. 5.2.5.1: POINTER O primeiro tipo de ponteiro o POINTER. O POINTER um ponteiro de 6 bytes que pode armazenar endereos de todas as reas de memria de sistema.

Fig. 5.18 Formato do POINTER

Os dois primeiros bytes se referem ao nmero do Bloco de Dados (DB) endereado. Caso o ponteiro no esteja endereando um DB, deve-se preencher 34

estes bytes com 0. O byte 2 se refere rea de memria endereada. So 7 reas endereveis e cada uma delas possui um cdigo hexadecimal como mostrado na Tabela 5-10. Os bytes 3, 4 e 5 endeream os diretamente o byte e o respectivo bit.
Tabela 5-10 Cdigos das reas de Memria

Cdigo Hexadecimal 81 82 83 84 85 86 87

rea de Memria I Q M DB DI L V

Descrio Tabela Imagem das Entradas Tabela Imagem das Sadas rea de Memria de Bits Bloco de Dados Bloco de Dados Instance Dados Locais (pilha) Dados Locais Prvios

A seguir so dados exemplos de como entrar com um dado do tipo POINTER no programa:

P#DB23.DBX5.5 ponteiro para o bit 5, byte 5 do DB 23; P#M20.0 ponteiro para o bit 0, byte 20 da Memria de bits; M20.0 ponteiro se o parmetro j foi declarado como sendo POINTER

5.2.5.2: Ponteiro ANY O parmetro ANY um ponteiro um pouco mais completo que o parmetro POINTER. So necessrios 10 bytes para armazen-lo. O parmetro ANY, ao contrrio do POINTER pode enderear toda uma rea de memria, alm de poder apontar para temporizadores, contadores e blocos de programa. Ele pode ser usado em um bloco quando o tipo de dado do parmetro desconhecido ou quando qualquer tipo de dado pode ser usado. Na tabela de declarao de variveis do bloco, deve-se declarar o parmetro como sendo um ANY. Pode-se ento determinar um tipo de dado de qualquer tipo ao parmetro. O STEP 7 gerencia de maneira diferente os dados contidos no ponteiro ANY, de acordo com o seu contedo. Se o ponteiro estiver passando um tipo de dado 35

elementar ou complexo o formato deferente daquele quando o ponteiro passa um tipo de parmetro (contadores, temporizadores e blocos de programa). Para tipos de dados elementares ou complexos, o ponteiro ANY (Fig. 5.19) armazena: o tipo do dado, o fator de repetio, o nmero do DB, a rea de memria na qual a informao est armazenada e o endereo inicial dos dados.

Fig. 5.19 Formato do Ponteiro ANY

O fator de repetio identifica a quantidade do tipo de dado indicado a ser transferido pelo ponteiro ANY. Ele funciona como uma espcie comprimento de rea. Se, por exemplo, se quiser transferir 10 bytes, o valor 10 deve ser inserido no fator de repetio e o cdigo de bytes deve ser inserido no campo tipo de dado. O campo nmero do DB deve ser mantido em 0 se a rea endereada no for um Bloco de Dados. O campo seguinte identifica a rea de memria (os cdigos so os mesmos que os utilizados para o POINTER). O endereo restante armazenado no formato byte.bit. Caso o campo tipo de dado identifique a passagem de um contador, temporizador ou bloco de programa, a avaliao dos campos feita de maneira diferente (Fig. 5.20).

36

Fig. 5.20 Formato do ponteiro ANY passando tipos de parmetros

5.2.6: Blocos de Programa


A programao em STEP 7 permite que o programa de usurio seja estruturado, fazendo com que este seja repartido em sees de programa. Isso traz uma srie de vantagens como facilidade de compreenso do cdigo, padronizao de sees, organizao, facilidade de manuteno no cdigo, debug apenas nas sees desejadas e facilidade de comissionamento. Os exemplos mostram que a diviso em tarefas individuais em um grande processo vantajosa. As sees de programa de um programa de usurio estruturado correspondem a estas tarefas individuais (na maioria dos casos) e so conhecidas como blocos de um programa.

5.2.7: Tipos de Blocos


Os blocos de programa so divididos basicamente em dois tipos: blocos de sistema e blocos de usurio. Os blocos de sistema so funes pr-definidas ou blocos de funo integradas ao sistema operacional da CPU. Estes blocos no ocupam nenhum espao adicional na memria do usurio. Os blocos de sistema so chamados pelos programas de usurio. Os blocos de usurio so reas disponveis para escrever o cdigo e os dados para o programa. Baseado nas necessidades da aplicao, pode-se estruturar o programa com vrias opes de blocos de usurio. Alguns blocos podem ser executados ciclicamente enquanto outros podem ser executados 37

somente quando necessitado. Blocos de usurio so tambm chamados de blocos de programa. 5.2.7.1: Blocos de Usurio Dentre os blocos de usurio, o mais importante deles o OB 1. Este faz o processamento cclico do programa, ou seja, executado no incio de cada scan e tem por funo chamar os outros blocos e porventura executar instrues.

Blocos de organizao (OB): Faz a interface entre a CPU e o programa do usurio. O OB 1 o bloco de processamento cclico que executado a cada scan. Pode-se escrever todo o programa todo nele, mas uma programao mais elegante usa o OB 1 para chamar outros blocos quando necessrio. Alm do OB 1, o sistema operacional pode chamar outros OBs que reagem a certos eventos, tais como: interrupo de data programada, interrupo de diagnstico, interrupo de erros, interrupo de tempo de ciclo, interrupo de hardware, start-up do hardware. Caso dois OBs estejam programados para ser executados ao mesmo tempo, a prioridade do OB ser levada em considerao. Para evitar que isso acontea, pode-se usar um deslocamento temporal em um deles (offset) para que as interrupes ocorram em instantes distintos. Obs.: os OBs temporais utilizam o clock do CLP para ser ativados. O OB 1, apesar de ser um OB cclico, no possui um tempo de execuo fixo pois a cada ciclo podem ocorrem eventos que alteram o tempo de ciclo (por exemplo: chamada de outro OB, alterao nas entradas que provoquem a chamada de outro bloco, etc.).

Blocos de funo (FB): Um bloco de funo uma funo ou uma seqncia de comandos armazenados em um bloco lgico, onde os prmetros podem ser arquivados em uma memria. O FB utiliza uma memria adicional na forma de um Bloco de Dados Instance. Parmetros passados para o FB e alguns dos dados locais so arquivados neste bloco de dados associado (Instance DB). Outros 38

dados temporrios so arquivados na pilha local (L stack). Dados arquivados em Instance DB so retidos quando o bloco de funo fechado. Dados arquivados na pilha local no so retidos. Funo (FC): A funo um bloco de operao lgica similar ao bloco de funo para o qual no designado rea de memria. Um FC no necessita de um bloco de dados instance. As variveis locais so arquivadas na pilha local (L stack) at que a funo esteja concluda, sendo perdidos quando o FC termina a execuo. Bloco de Dados (DB): Um bloco de dados uma rea de dados permanente na qual dados ou informaes que outras funes coletaram so armazenados. Blocos de dados so reas de leitura / escrita que podem ser carregadas na CPU como parte do programa.
Tabela 5-11 Tipos de Blocos de Usurio

Tipos de Blocos Blocos de Organizao (OB)

Bloco de Funo (FB)

Funo (FC)

Blocos de Dados (DB)

Blocos de Usurio Caractersticas Interface do usurio entre sistema e o programa; Nveis de prioridades (1 a 26); Informaes especiais de inicializao na pilha de dados locais. Um valor de retorno ser transferido (parmetros devem ser designados para a chamada); Parametrizvel / Retentivo; No Parametrizvel / Retentivo; No Parametrizvel / No Retentivo. Um valor de retorno ser transferido (parmetros devem ser designados para a chamada); Parametrizvel / No Retentivo. Estruturado, arquiva dados locais (DB instance); Estruturado, arquiva dados globais (shared DB).

5.2.7.2: Blocos de Sistema Estes so os blocos que no ocupam espao adicional na memria. Quando so FCs ou FBs, tm o cdigo protegido contra leitura.

39

Funo de Sistema (SFC): Funo de Sistema uma funo prprogramada e testada que integrada na CPU. Algumas das tarefas suportadas por estas funes so setar parmetros dos mdulos, comunicao de dados, funes de cpia, etc. Uma SFC pode ser chamada pelo programa principal mas mesmo assim no ocupar memria de trabalho.

Blocos de Funo de Sistema (SFB): Um Bloco de Funo de Sistema funciona de maneira similar a um FB porm no ocupa espao na memria de trabalho. Da mesma maneira, deve ser associado a um DB que deve ser transferido CPU como parte do programa.

Blocos de Dados do Sistema (SDB): Um Bloco de Dados de Sistema uma rea de memria que a ferramenta cria para arquivar dados necessrios para o controle de operaes. Informaes, tais como dados de configurao, conexes de comunicao e parmetros so salvos em SDBs.
Tabela 5-12 Tipos de Blocos de Sistema

Tipo de Bloco Funo de Sistema (SFC) Bloco de Funo Sistema (SFB) Blocos de Dados Sistema (SDB)

de de

Blocos de Sistema Caractersticas Arquivados no sistema operacional das CPUs; Usurio pode chamar esta funo (sem memria). Arquivados no sistema operacional das CPUs; Usurio pode chamar esta funo (com memria). Blocos de dados para configurao de dados e parmetros.

5.2.8: Endereamento com S7-400


Existem vrias maneiras de se fazer o endereamento no SIMATIC Manager. Dependendo da aplicao, pode ser mais ou menos interessante usar uma ou outra maneira. A seguir, sero exemplificadas as maneiras de se fazer isto.

40

5.2.8.1: Endereamento Direto Com Endereamento Direto, o local da memria a ser acessado codificado na prpria instruo, ou seja, na prpria intruo est o endereo que a instruo deve processar. Ainda h um subdiviso no Endereamento Direto. Os endereos podem ser endereados absolutamente ou simbolicamente. No endereamento absoluto utilizada a identificao da rea de memria (I, M, Q, DB, DI, etc.) seguida da dimenso do acesso (B, W ou D) e do nmero do byte. No necessrio usar dimenso de acesso quando se enderea o bit, exceto no caso de DB ou DI. Neste caso deve-se usar X para endere-los.
Tabela 5-13 Exemplos de Endereamento Absoluto

I 10.3 MW 6 QD 12 DBX 13.0 DIB 10

Acesso ao quarto bit (bit 3), do byte 10 da tabela imagem da periferia de entrada. Acesso word que se inicia no byte 6 (e inclui o byte 7) da memria de bit. Acesso double word que se inicia no byte 12 (e inclui os bytes 13, 14 e 15) da tabela imagem da periferia de sada. Acesso ao bit 0 do byte 13 do DB que estiver aberto (aquele cujo nmero estiver armazenado no registrador de DB). Acesso ao byte 10 do DB Instance (aquele cujo nmero estiver armazenado no registrador de DI).

No endereamento simblico, o acesso feito atravs de nomes e no de endereos absolutos. Para isto necessrio determinar um nome (smbolo) ao endereo desejado. Isto pode ser feito de duas maneiras. Numa delas o smbolo determinado dentro de um bloco na tabela de declarao de variveis do bloco. Neste caso o smbolo local e vlido somente dentro do bloco. Quando utilizado, o smbolo estar precedido de #. A outra maneira determinar um smbolo global na tabela de smbolos que ser vlido em todo o projeto. Quando utilizado no programa, o smbolo estar entre aspas duplas. Podem ser endereados simbolicamente bits, bytes, words e double words.

41

5.2.8.2: Endereamento Indireto Com o endereamento indireto, pode-se acessar reas de memria que, ao contrrio do endereamento absoluto, so definidas ou modificadas durante a execuo do programa. O endereamento indireto permite que partes do programa sejam executadas repetidamente (loop), cada uma delas com um endereo diferente. Existe ainda uma subdiviso do endereamento indireto: endereamento indireto de memria e endereamento indireto de registro. No endereamento indireto de memria, o endereo a ser acessado armazenado em uma rea da prpria memria do usurio. A esta rea pode-se dar, se necessrio, um nome simblico. No endereamento indireto de registro, o endereo armazenado em um dos registradores de endereo (AR1 ou AR2) em vez de ser armazenado em uma rea de memria.

5.2.8.2.1: Endereamento Indireto de Memria


Usando Endereo de 32 bits: com este tipo de endereamento, o endereo da varivel se encontra em uma rea de memria (M, L ou DB) a qual pode ter ou no um nome simblico definido. A instruo, para se usar endereamento indireto de memria, contm a prpria instruo (A, L, etc.), um identificador de rea (I, Q, M, DB, etc.), uma dimenso de acesso (B, W ou D) e uma varivel. Esta varivel possui 32 bits, ou seja, uma double word, deve estar entre colchetes e contm o endereo da varivel a ser acessada. Ex.: L MD30 A #pointer_1 A DBX [#dbn] //Faz a lgica E do bit apontado por #dbn I [#pointer_1] //Faz a lgica E da entrada apontada por MW [MD 30] //Carrega no ACCU 1 a MW apontada por

localizado no DB que estiver aberto (DB cujo nmero estiver no registrador de DB)

42

Fig. 5.21 Formato do ponteiro de 32 bits

Para se armazenar um ponteiro em uma locao de memria deve-se primeiro carreg-lo no ACCU1 e depois copi-lo para o local desejado. Ex.: L bit 2 T DBD 12 //Copia o contedo do ACCU1 para a double P#5.2 //Carrega no ACCU1 um ponteiro para o byte 5,

word 12 do DB que estiver aberto A I [DBD 12] //Faz a lgica E do bit de entrada 5.2

Usando Endereo de 16 bits: este endereamento, ao contrrio do endereamento de 32 bits, usado para localizar DBs, temporizadores e contadores alm de FBs e FCs. O endereo armazenado em uma word na memria (M, L ou DB). O programa interpreta o ponteiro como um inteiro sem sinal entre 0 e 65535. Ex.: UC FC [MW 12] //Chama incondicionalmente a FC cujo nmero

est em MW12 OPN DB [#ent_dbn] //Abre o DB apontado por ent_dbn

Fig. 5.22 Formato do ponteiro de 16 bits

5.2.8.2.2: Endereamento Indireto de Registro


Com o Endereamento Indireto de Registro, o endereo da varivel a ser acessada est armazenado em um registrador de endereo. Tambm neste tipo de endereamento existe uma outra subdiviso: Endereamento Indireto de Registro de rea Interna e Endereamento Indireto de Registro de rea Cruzada. Este tipo de 43

endereamento serve para acessar dados (bits, bytes, word e double words) que estejam armazenados na memria. rea Interna: uma instruo utilizando o registrador de endereos (rea interna) consiste da prpria instruo (A, L, T, etc.), de um indentificador de rea (I, M, Q, DB, etc.), de uma dimenso de acesso (B, W ou DB) e de uma declarao do registrador utilizado junto com um offset entre colchetes. Ex.: L MW [AR1,P#0.0] // Carrega no ACCU1 a word da memria de

bits cujo endereo est no registrador de endereos 1 (AR1). A I [AR2,P#5.3] // Faz a lgica E da entrada apontada por AR2

mais 5 bytes e 3 bits. No registrador, deve estar armazenado um ponteiro com o endereo desejado. Para armazenar um ponteiro no registrador de endereo, existe uma instruo especial. Ex.: LAR1 P#2.0 bit 2. L ID [AR1,P#2.0] // Carrega no ACCU1 a double word de entrada // Carrega no AR1 um ponteiro para o byte 2,

cujo endereo est em AR1 mais 2 bytes, ou seja, ID 4. Obs.: para instrues com byte, word ou double word, o offset deve ter 0 no bit caso contrrio um erro ativado na CPU.

rea Cruzada: este o ponteiro mais completo pois contm alm do endereo do byte e do bit, a informao da rea de memria. Neste caso, ao armazenar o ponteiro no registrador de endereos, deve-se informar a rea de memria a ser acessada. Uma instruo utilizando o registrador de endereos (rea cruzada) consiste da prpria instruo (A, L, T, etc.), de uma dimenso de acesso (B, W ou DB) e de uma declarao do registrador utilizado junto com um offset entre colchetes. Neste caso no necessrio fazer a identificao de rea. Ela j foi feita quando o ponteiro foi armazenado.

44

Ex.: L

D [AR1,P#2.0]

// Carrega a double word apontada pelo AR1

deslocada de 2 bytes. O ponteiro armazenado em AR1 deve ter a informao de rea de memria, de bytes e de bits. Para armazenar o ponteiro com informao de rea de memria, de bytes e bits (endereo completo), deve-se utilizar novamente a instruo LAR1 ou LAR2. Ex.: LAR1 P#I 3.0 tabela imagem da periferia. L B [AR1,P#1.0] // Carrega no ACCU1 o byte 4 da entrada // Carrega no AR1 um ponteiro para o byte 3 da

(tabela imagem de periferia de entrada).


Tabela 5-14 Formas de Endereamento no S7-400

Endereamento Direto Absoluto Simblico

Endereamento Indireto Memria Indireta Ponteiro de 16 bits Ponteiro de 32 bits (rea int.) Registrador Indireto Ponteiro de 32 bits (rea int.) Ponteiro de 32 bits (rea cruz.)

Exemplos:
Q 6.5 MD 12 Pump_on #var_inc OPN DB[MW16] OPN DB[#epdbn] A M[MD30] L IW[analog] A I[AR1,P#6.0] L MB[AR2,P#0.0] A [AR1,P#0.0] T W[AR1,P#0.0]

5.2.9: Declarao de Variveis


Juntamente com os comandos, as variveis so os mais importantes elementos do sistema de programao. Pode-se guardar nelas valores que podem ser salvos na memria no CLP para serem utilizados posteriormente no programa. As variveis possuem propriedades que as distinguem de uma rea de memria qualquer que so: nome simblico, tipo de dado, alcance (faixa de validade). Antes de utilizar uma varivel, deve-se primeiro cri-la, por meio de um processo de declarao de varivel. Existem trs maneiras de se declarar uma varivel em S7: por meio da tabela de smbolos global (somente para tipos de dados

45

elementares3), utilizando a tabela de declarao de variveis de um bloco de programa e tambm pela tabela de declarao de variveis de um Bloco de Dados global (para todos os tipos de dados, incluindo os dados complexos4 e dados definidos pelo usurio5). Uma propriedade das variveis declaradas na tabela de declarao de variveis dos blocos de programa o tipo de declarao. Dentre os tipos de declarao temos: in: so as variveis de entrada do bloco, ou seja, necessrias para a execuo; in/out: so variveis que necessrias na chamada do bloco e que podem ser utilizadas diretamente na sada; out: so variveis retorno da funo, ou seja, o resultado de seu processamento; temp: so as variveis temporrias; stat: so as variveis que ficam armazenadas de uma varredura para outra.

Entende-se por Dados Elementares os tipos de dados Bit (BOOL, BYTE, WORD, DWORD,

CHAR), os tipos de dados Matemticos (INT, DINT, REAL) e os tipos de dados Tempo (S5TIME, TIME, DATE, TIME_OF_DAY). Possuem at 32 bits.
4

Entende-se por Dados Complexos os tipos de dados Tempo (DATE_AND_TIME), Matriz

(ARRAY), Estrutura (STRUCT) e Cadeia de Caracteres (STRING). Estes tipos de dados so maiores que 32 bits
5

Entende-se por Dados Definidos pelo Usurio (UDT) os dados maiores do que 32 bits que

podem ser definidos pelo usurio.

46

Captulo 6: Tratamento de Entradas e Sadas

Para o tratamento dos pontos de entrada e sada foram desenvolvidos 9 blocos de programa. Ele utilizado em todas as plataformas em operao. Esta a primeira vez que o CLP Siemens utilizado no controle de plataformas da Petrobras portanto no havia experincia prvia de implementao deste sistema de tratamento. Algumas dificuldades foram encontradas no decorrer do trabalho principalmente porque as especificaes foram feitas baseadas em CLPs de outras marcas.

6.1: Objetivo do Tratamento de Entradas e Sadas


Existem alguns motivos pelos quais o tratamento dos pontos de entrada e sada se tornou uma norma da Petrobras. Eles sero expostos nas sees 6.1.1: Tratamento de Entradas e 6.1.2: Tratamento de Sadas.

6.1.1: Tratamento de Entradas


O tratamento de entradas garante facilidade de programao atravs da uniformizao dos sinais de entrada. O que essa uniformizao quer dizer que o sinal 1 ocorre na lgica (no intertravamento) apenas quando este sinal est em sua condio anormal, ou seja, fora da condio considerada padro. Isto ocorre porque existem sinais de campo que esto, em sua condio normal, enviando 1 e outros que, em sua condio normal esto enviando 0. A uniformizao, chamada de polarizao de entrada, visa garantir que a programao do intertravamento seja transparente a estas particularidades. A segunda operao executada pelo tratamento de entradas a temporizao do sinal. Esta temporizao um atraso provocado pelo tratamento de entradas no sinal vindo do campo. Este atraso evita que transitrios ativem alguma lgica no intertravamento, ou seja, confirma atravs de um atraso de tempo, a real existncia de uma condio anormal. A terceira operao executada o bypass de entrada. Esta serve para o operador, atravs do supervisrio (ECOS), sobrescrever o sinal vindo do campo, ou seja, ignor-lo. O sinal resultante destas trs primeiras operaes utilizado no intertravamento. 47

Ainda existe uma quarta operao, responsvel pela comunicao com o supervisrio. Nesta funo, o sinal resultante das trs primeiras operaes travado logicamente e enviado ao supervisrio at que ocorra o reconhecimento. Este reconhecimento feito atravs do supervisrio e serve para garantir que o operador tomou conhecimento da alterao do estado do sinal no campo. Existe ainda uma quinta operao que serve para limpar (resetar) a tabela de reconhecimento de alarme. Esta funo teve de ser implementada porque no existe, no supervisrio utilizado, o comando pulsado. De maneira concisa, o que o sistema de tratamento de entradas deve fazer :

A lgica de polarizao da entrada; A lgica do filtro; A lgica de bypass; A lgica de travamento de alarme e de seu reconhecimento.

Fig. 6.1 Esquema Geral do Tratamento de Entradas

6.1.2: Tratamento de Sadas


O tratamento de sadas faz, como o prprio nome diz, o tratamento dos sinais provenientes da lgica de intertravamento com destino ao campo. Neste tratamento, 48

a primeira funo faz a lgica de sobrescrever 1 no sinal de sada do intertravamento, se assim desejado pelo operador. A segunda funo faz o contrrio, ou seja, a lgica de sobrescrever 0 no sinal proveniente da primeira funo. A terceira funo faz a lgica das sadas esperadas. Esta funo faz uma comparao da sada da segunda funo com um sinal pr-definido e envia o resultado ao campo. De maneira geral, o que o sistema de tratamento de sadas deve fazer :

A lgica de sobrescrever a sada da lgica; A lgica de polarizao da sada.

Fig. 6.2 Esquema Geral do Tratamento de Sadas

Todas

as

funes,

seus

objetivos,

sua

implementao,

sero

detalhadamente expostos a seguir.

6.2: Mapeamento de Memria do CLP


Todos os sinais dos diagramas da Fig. 6.1 e da Fig. 6.2 so armazenados em tabelas que o CLP ou o supervisrio podem ler ou escrever. Dependendo do sinal, existem direitos dados ao CLP ou ao supervisrio de ler e escrever. A Tabela 6-1 mostra os direitos de acesso aos dados do tratamento de E/S. Por exemplo, o sinal de entrada fsica (da tabela ENT) interno ao CLP. Somente o controlador tem acesso a este sinal que ser posteriormente tratado e enviado ao supervisrio para leitura. A escrita igualmente proibida pelo supervisrio pois isto poderia trazer conseqncias imprevisveis para o controle, alm de no refletir a real situao de campo. Para modificar a situao real do

49

campo existe um outro sinal, o de requisio de bypass, ao qual o supervisrio tem direitos de escrita e leitura.
Tabela 6-1 Memria do CLP

Mnemnico ENT EPB SAI SLG SLO EPT EBS REC BYP OV1 OV0 ESP Entrada fsica

Tabela

Ao permitida Interna ao CLP Interna ao CLP Interna ao CLP VXL l VXL l VXL l VXL l VXL l / escreve VXL l / escreve VXL l / escreve VXL l / escreve Definido no CLP

Entrada polarizada e bypassada Sada fsica Sada da lgica Sada sobrescrita da lgica Entradas polarizadas temporizadas Entradas polarizadas, bypassadas e seladas Reconhecimento de alarme Requisio de bypass Requisio de sobrescrever 1 Requisio de sobrescrever 0 Estado esperado da entrada

6.3: Implementao
Como j dito anteriormente, o sinal fsico no ser utilizado diretamente na lgica, mas sim um sinal previamente tratado. Durante a varredura do CLP, algumas tabelas so alteradas e outras so usadas como auxiliares do sistema de tratamento.

6.3.1: Funo de Gerao das Entradas Polarizadas (EP)


Para a gerao das entradas polarizadas, foi criado um bloco de programa do tipo funo. Este bloco faz uma operao com a tabela da Entrada Fsica (ENT) e 50

com a tabela Estado Esperado da Entrada (ESP) para a gerao de uma terceira tabela, a tabela das Entradas Polarizadas (EP). A operao lgica necessria a OU EXCLUSIVO (Tabela 6-2).
ent esp = ep
Tabela 6-2 Operao OU EXCLUSIVO entre ent e esp gerando ep

ent 0 0 1 1

esp 0 1 0 1

ep 0 1 1 0

Fig. 6.3 OU EXCLUSIVO

Na Tabela 6-2 mostrada a tabela verdade da operao OU EXCLUSIVO entre sinais provenientes de ENT e ESP gerando um sinal que ser alocado na tabela EP. Esta operao utilizada porque toda vez que o sinal de campo se encontra fora de sua condio normal, o sinal 1 deve ser ativado. Isto de fato ocorre quando se utiliza a operao OU EXCLUSIVO. Pode-se notar que toda vez que o sinal de campo (tab. ENT) diferente do sinal esperado (tab. ESP), o sinal de entrada polarizada (tab. EP) ativado. A tabela ENT proveniente da Tabela Imagem da Periferia de Entrada (I) enquanto a tabela ESP definida internamente no CLP podendo ser pertencente a um bloco de dados (DB) ou memria de bits (M). Da mesma forma, a tabela gerada EP pode ser alocada tanto em um bloco de dados (DB) como na memria de bits (M).

6.3.2: Funcionamento do FC 43 Gerador de Entradas Polarizadas


O bloco FC 43 tem por funo fazer a operao OU EXCLUSIVO entre os pontos da tabela ENT e os pontos da tabela ESP. O resultado da operao deve ser 51

seqencialmente armazenado na tabela EP. Esta operao pode ser melhor visualizada na Fig. 6.4. Nesta figura, em cada tabela esto representados o endereo completo ( esquerda) e o contedo do endereo ( direita). O endereo completo est representado como se estivesse armazenado do registrador de endereos (Fig. 5.12).

Fig. 6.4 Atualizao da tabela EP

A chamada do bloco pode ser feita atravs da funo CALL. Quando se faz a chamada do bloco, todos os parmetros de entrada devem ser passados para este ser executado e para a tabela EP ser atualizada. Enquanto os parmetros no so passados as requisies de parmetro ficam em vermelho e o bloco que est chamando o outro no pode ser salvo.

Fig. 6.5 Chamada de Bloco no S7

Fig. 6.6 Chamada de Bloco com passagem de parmetros

52

Os parmetros do bloco FC 43 so trs ponteiros do tipo ANY que vo identificar todas as reas de memria a ser endereadas. Neste caso as tabelas ENT, ESP e EP. Sabe-se de antemo que a tabela ENT pertencente rea de memria Tabela Imagem da Periferia de Entrada (I) e que as tabelas ESP e EP pertencem Memria de bit (M) ou a um Bloco de Dados (DB). No ponteiro ANY deve ser identificada a rea de memria a qual os dados pertencem, bem como o endereo inicial, o tipo de dado endereado (no caso do tratamento de E/S todos sero double word) e o fator de repetio, que representa o comprimento da rea de memria. Caso a rea endereada seja um Bloco de Dados (DB) deve ainda ser identificado o nmero deste. Por exemplo, na Fig. 6.6, est representada uma chamada de bloco em que a tabela ENT se inicia no edereo 200.0 (byte 200, bit 0) da Tabela Imagem da Periferia de Entrada (I), possui 5 double words, ou seja 120 bits e ocupa 20 bytes da regio I. Da mesma forma, a tabela ESP est alocada na Memria de Bits, inicia-se no endereo 200.0 e possui 5 double words. J a tabela EP est em um Bloco de Dados de nmero 41, e se inicia no endereo 0.0 deste DB. Tambm possui 5 double words, ocupando um total de 20 bytes (at o endereo 19.7). A FC 43 possui ainda variveis declaradas na tabela de declaraes do bloco. Todas elas so do tipo temp, ou seja, temporrias.

Fig. 6.7 Tabela de declaraes de variveis do FC 43

53

A primeira network da FC 43 tem por objetivo armazenar nas variveis locais, definidas na tabela de declaraes, os dados provenientes do ponteiro ANY. Os dados armazenados so o fator de repetio, o nmero de DB (se existente) e o endereo inicial da rea apontada. Como o ponteiro ANY possui mais de 32 bits ele no pode ser transferido para nenhum dos acumuladores. Para extrair os dados nele contidos necessrio usar Endereamento Indireto de Registro de rea Cruzada.
Network 1 FC 43 L P##ENT //Carrega endereo do ponteiro ENT LAR1 //Transfere para o AR1 L W [AR1,P#2.0] //Carrega a word (deslocada de bytes)cujo endereo est em AR1; esta armazena o fator de repetio T #ent_rep_factor //Transfere para a varivel local L D [AR1,P#6.0] //Carrega informao do endereo T #ent_end //Transfere para ent_end L P##ESP LAR1 L W [AR1,P#2.0] de repetio T #esp_rep_factor L W [AR1,P#4.0] existente, seno carrega zero) T #esp_dbn L D [AR1,P#6.0] T #esp_end L P##EP LAR2 L W [AR2,P#2.0] de repetio T #ep_rep_factor L W [AR2,P#4.0] existente, seno carrega zero) T #ep_dbn L D [AR2,P#6.0] T #ep_end

//Carrega endereo do ponteiro //Transfere para o AR1 //Carrega a word que contm o fator //Transfere para a varivel local //Carrega o nmero de DB //Transfere para varivel local //Carrega informao do endereo //Transfere para esp_end //Carrega endereo do ponteiro //Transfere para o AR2 //Carrega a word que contm o fator //Transfere para a varivel local //Carrega o nmero de DB //Transfere para varivel local //Carrega informao endereo //Transfere para ep_end (se (se

A segunda network da funo, um verificador de tamanho de tabelas. necessrio que a operao de polarizao de entradas seja feita entre tabelas de mesmo tamanho. Isto ocorre para evitar sobreposio de dados. Esta network faz ento uma srie de operaes de comparao entre os fatores de repetio das reas endereadas. O menor fator de repetio armazenado em uma varivel local para que seja utilizado posteriormente na execuo da operao entre tabelas.

54

Network 2 FC 43 L L <I JC L <I JC T JU L L <I JC T JU L T JU L T JU #ent_rep_factor #esp_rep_factor REP1 #ep_rep_factor REP2 #rep_factor INI #ent_rep_factor #ep_rep_factor REP3 #rep_factor INI #esp_rep_factor #rep_factor INI #ent_rep_factor #rep_factor INI // // // // // Carrega tamanho da tab. ENT Carrega tamanho da tab. ESP Verifica se ENT menor que ESP Se sim, pula para REP1 Se no, carrega tamanho da tab.

EP

de EP REP1:

// E verifica se menor que ESP // Se sim, pula para REP2 // Se no, atribui a rep_factor tam. // Pula para a prxima network // // // // // // // // // // // // Carrega tamanho da tab. ENT Carrega tamanho da tab. EP Verifica se ENT menor que EP Se sim, pula para REP3 Se no, atribui a rep_factor tam. Pula para a prxima network Carrega tamanho da tab. ESP E atribui a rep_factor Pula para a prxima network Carrega tamanho da tab. ENT E atribui a rep_factor Pula para a prxima network

de EP REP2: REP3:

A operao realizada pela network 2 pode ser melhor entendida atravs da Fig. 6.8.

Fig. 6.8 Fluxograma do verificador de tamanho de tabela

A terceira network faz a operao de OU EXCLUSIVO propriamente dita. A operao feita em um loop que faz a operao de double word em double word. O primeiro passo a transferncia do fator de repetio calculado para o contador do loop. Depois disso, carrega-se no ACCU 1 e ACCU 2 as double words que so partes das tabelas que sero usadas na operao (ENT, ESP). Faz-se a operao 55

de OU EXCLUSIVO entre as duas double words e transfere-se o resultado para a tabela EP. Em alguns casos necessrio guardar no registrador de DB o nmero do Bloco de Dados a ser utilizado. Caso no haja DB a ser aberto, o registrador ser carregado com o valor 0 (devido instruo OPN), no influenciando a operao.
Network 3 FC 43 INI: L #rep_factor fator de repetio adequado IFG: //Inicia a network carregando o

T #contador //Transfere para o contador do loop L ID [#ent_end] //Carrega a double word de entrada apontada por ent_end (ENT) LAR1 #esp_end //Carrega o AR1 com esp_end OPN DB [#esp_dbn] //Abre o DB cujo nro. est em esp_dbn L D [AR1,P#0.0] //Carrega a double word cujo endereo est em AR1 (ESP) XOD //Faz a operao de OU EXCLUSIVO entre ENT e ESP LAR2 #ep_end //Carrega o AR2 com ep_end OPN DB [#ep_dbn] //Abre o DB cujo nro. est em ep_dbn T D [AR2,P#0.0] //Transfere o resultado da operao para a double word cujo endereo est em AR2 L L +D T L L +D T L L +D T L LOOP BEU #ent_end P#4.0 #ent_end #esp_end P#4.0 #esp_end #ep_end P#4.0 #ep_end #contador IFG //Decrementa o contador do loop //Fim de Bloco //Incremento dos ponteiros

O passo final o incremento dos ponteiros para a prxima volta do loop. Fazse carregando um ponteiro de valor 4 bytes (equivalente a uma double word) e adicionando este ao endereo utilizado na volta atual. Na prxima volta, os valores operados sero aqueles cujos endereos foram atualizados na volta atual. Existe ainda a instruo de fim de bloco para indicar a finalizao das tarefas de atualizao das tabelas.

56

6.3.3: Funo de Gerao das Entradas Polarizadas Temporizadas (EPT)


Para a gerao das entradas polarizadas temporizadas, foi criado um bloco de programa do tipo funo. Este bloco opera a tabela das Entradas Polarizadas (EP) gerada pela funo descrita no item acima para a gerao de uma outra tabela, a tabela das Entradas Polarizadas Temporizadas (EPT). Neste caso, nenhuma operao lgica necessria, bastando apenas funo retardar o aparecimento do sinal lgico 1 proveniente da tabela EP, na tabela EPT. Quando o sinal em EP estiver em 0, o seu respectivo em EPT tambm o deve estar.

Fig. 6.9 Diagrama da Funo

Objetivo desta funo fazer uma filtragem temporal nos sinais vindos do campo. Ela faz uma espcie de confirmao de estado anormal do sinal, ou seja, apenas aps o tempo de atraso pr-definido o sinal dado como anormal. Isto serve para ativar a lgica do intertravamento apenas em casos onde o sinal, em seu estado alterado, persistir. Um caso que pode ilustrar a funcionalidade desta funo o de uma chave de nvel por exemplo. Vamos supor que, em um determinado momento, devido a uma oscilao do navio, a chave envia sinal e a tabela de entrada (ENT) modificada no bit correspondente. No entanto, logo depois, o nvel volta a seu estado anterior e no ativa mais a chave de nvel. Se no houvesse a lgica de filtragem temporal, toda uma lgica no intertravamento poderia ter sido disparada sem necessidade. Quanto localizao das tabelas na memria do CLP, a tabela operada EP e a tabela gerada EPT podem estar armazenadas em duas diferentes reas de memria: a Memria de Bits (M) ou em um Bloco de Dados (DB).

57

6.3.4: Funcionamento do FC 44 Gerador de Entradas Polarizadas Temporizadas


O bloco FC 44 foi desenvolvido para executar o descrito no item 6.3.3: retardar o aparecimento do sinal vindo de EP em EPT. A operao executada de maneira seqencial a cada 32 bits (double word). Os parmetros do bloco FC 44 so trs ponteiros do tipo ANY, um ponteiro do tipo POINTER, e um nmero hexadecimal do tamanho de um byte. Dos ponteiros ANY, dois deles identificam as reas de memria onde esto alocadas as tabelas EP e EPT. O outro, identifica uma rea de memria onde ser alocada uma tabela auxiliar. Esta tabela auxiliar armazena, no formato hexadecimal, os tempos nos quais as transies positivas dos bits de EP ocorrem. O ponteiro tipo POINTER aponta para um Bloco de Dados que guarda o estado dos bits de EP na varredura anterior. Isto necessrio para utilizar o contato transicional. O parmetro tipo byte contm um nmero hexadecimal que denota, em segundos, o tempo de espera (retardo do sinal em EPT) para todo o conjunto operado. A FC 44 possui na tabela de declaraes do bloco (Fig. 6.10) variveis do tipo temp (temporrias) e variveis in (de entrada). A primeira network da FC 44 tem por objetivo armazenar nas variveis locais, definidas na tabela de declaraes, os dados provenientes dos ponteiros ANY e POINTER. Os dados armazenados so o fator de repetio, o nmero de DB (se existente) e o endereo inicial da rea apontada. Alm disso, o FB 1 chamado, juntamente com seu Bloco de Dados Instance DB 1. Este FB por sua vez possui uma chamada a uma Funo de Sistema que ser utilizada em outra network. A Funo de Sistema utilizada a SFC 1 READ_CLK [5]. Com esta Funo, pode-se ler o valor atual de data ou tempo do clock da CPU. O bloco possui dois parmetros, ambos de sada. Um deles um indicador de erros e o outro fornece os valores de tempo. Os valores de tempo esto armazenados em duas double words que contm valores do ano, ms, dia, hora, minutos, segundos e milissegundos alm do dia da semana. A segunda network faz uma comparao entre os tamanhos das tabelas (como na FC 43). Neste caso a comparao somente entre duas tabelas, o que 58

facilita o entendimento do cdigo. Os tamanhos das tabelas so reconhecidos pelas variveis locais e o menor deles copiado na varivel #rep_factor.

Fig. 6.10 Tabela de declaraes de variveis da FC 44

Uma das maneiras de se implementar a FC 44 fazendo a varredura em todos os bits da tabela EP. No entanto, observando a operao, notou-se a existncia de uma propriedade na relao EP x EPT: sempre que o bit da tabela EP est em 0, seu correspondente na tabela EPT tambm deve estar. Usando esta propriedade, a varredura nos bits foi substituda por uma varredura nas double words. O primeiro passo na network 3 a verificao de uma double word da tabela EP. Caso esta double word no seja igual a zero, isto significa que pelo menos um de seus bits est em 1. Ento se, e somente se, a double word na tabela EP for 59

diferente de zero a varredura nos bits executada (somente da double word diferente de zero).
Network 1 FC 44 L LAR1 L T L T P##SUB W [AR1,P#0.0] #sub_dbn D [AR1,P#2.0] #sub_end //Carrega endereo do ponteiro //Transfere para o AR1 //Carrega o nmero do DB //Tranfere para a varivel local //Carrega informao do endereo //Tranfere para a varivel local //Carrega endereo do ponteiro //Transfere para o AR1 //Carrega a word que contm o fator //Transfere para a varivel local //Carrega o nmero de DB (se //Transfere para a varivel local //Carrega informao do endereo //Tranfere para att_end //Carrega endereo do ponteiro //Transfere para o AR1 //Carrega a word que contm o fator //Transfere para a varivel local //Carrega o nmero de DB (se //Transfere para a varivel local //Carrega informao do endereo //Tranfere para ep_end //Carrega endereo do ponteiro //Transfere para o AR2 //Carrega a word que contm o fator //Transfere para a varivel local //Carrega o nmero de DB (se //Transfere para a varivel local //Carrega informao do endereo //Tranfere para ept_end //Carrega o inteiro 0 //Transfere para dbbyte 1 , DB1 //Chama FB 1, com DB instance 1

L P##ATT LAR1 L W [AR1,P#2.0] de repetio T #att_rep_factor L W [AR1,P#4.0] existente, seno carrega zero) T #att_dbn L D [AR1,P#6.0] T #att_end L P##EP LAR1 L W [AR1,P#2.0] de repetio T #ep_rep_factor L W [AR1,P#4.0] existente, seno carrega zero) T #ep_dbn L D [AR1,P#6.0] T #ep_end L P##EPT LAR2 L W [AR2,P#2.0] de repetio T #ept_rep_factor L W [AR2,P#4.0] existente, seno carrega zero) T #ept_dbn L D [AR2,P#6.0] T #ept_end L T CALL 0 #dbbyte FB

Nesta varredura dos bits da tabela EP, uma srie de verificaes deve ser feita. A primeira delas a verificao de transio positiva do bit. Entende-se por transio positiva a mudana de 0 para 1 em um certo ciclo de varredura. Caso isto tenha ocorrido, o tempo de transio deve ser armazenado. Isto vai permitir que se verifique, a cada ciclo, se este sinal deve ser ativado tambm na tabela EPT. O local onde este tempo de transio armazendo apontado pelo ponteiro ANY.

60

Cada bit da tabela EP possui um espao reservado nesta rea de memria para que seja armazenado o tempo de transio.
Network 2 FC 44 L #ep_rep_factor L #ept_rep_factor <I JC REP1 T #rep_factor tamanho da tab. EP JU SEE REP1: L T JU #ep_rep_factor #rep_factor SEE //Carrega tamanho da tab. EP //Carrega tamanho da tab. EPT //Verifica se EP menor que EPT //Se sim, pula para REP1 //Se no, atribui a rep_factor //Pula para SEE (network seguinte) //Carrega tamanho da tab. EP //E atribui a rep_factor //Pula para SEE (network seguinte)

Uma segunda verificao feita para averiguar se o bit da tabela EP j est em 1. Caso ele esteja deve-se ver, atravs de uma terceira verificao, se no o momento de setar, no respectivo lugar da tabela EPT, o bit correspondente. Caso contrrio, o bit de EPT resetado. Com o final da varredura dos bits a prxima double word verificada e todo o ciclo recomea. O funcionamento da funo pode ser melhor entendido pela Fig. 6.11.

Fig. 6.11 Fluxograma do funcionamento da FC 44

O ponteiro SUB tipo POINTER, que utilizado como parmetro da funo, tem o papel de enderear uma rea de memria que armazena o estado da tabela EP na varredura anterior. Isto serve para a verificao de transio positiva do bit (instruo FP). Quando o estado atual do bit 1 e o estado anterior 0 o bit RLO 61

da palavra de status setado para 1. Isto ocorre e ativa a lgica de armazenamento do tempo de transio no Bloco de Dados de armazenamento do tempo de transio. Na verdade, o tempo de transio armazenado o segundo em que ocorreu a mudana de 0 para 1. Todos os dados do instante de transio poderiam ser armazenados porm isto demandaria gasto de memria excessivo e desnecessrio. No necessrio, do ponto de vista prtico e como ser visto pelo clculo adiante, saber a hora em que a transio ocorreu. Desta maneira, decidiu-se utilizar apenas a informao do segundo de transio, informado pelo clock do CLP, como na Fig. 6.12.

Fig. 6.12 Segundos do Clock em funo do tempo

Esta informao serve apenas para se fazer o clculo necessrio ao atraso de tempo. Basicamente, o bit em 1 deve ser setado em EPT quando a diferena entre o instante atual e o instante de tempo de transio for maior ou igual ao tempo de atraso definido como parmetro de entrada do bloco. Seja c(t) a funo da Fig. 6.12. Define-se ento uma funo d(t) que dependente da diferena entre o tempo atual (ta) e tempo de transio (tt):
d (t ) = c(t a ) c(t t ) ___________ se ___ c(t a ) c(t t ) 0 c(t a ) c(t t ) + 60 _______ se ___ c(t a ) c(t t ) < 0

O bit correspondente da tabela EPT s deve ser setado se:


d (t ) t at

Onde tat representa o tempo de atraso definido como parmetro de entrada da FC 44. 62

Network 3 FC 44 SEE: VSZ: EP zero L T OPN LAR1 #rep_factor #contador_2 DB [#ep_dbn] #ep_end D [AR1,P#0.0] 0 IDOU bits 32 #contador DB [#ep_dbn] #ep_end [AR2,P#0.0] DB [#sub_dbn] #sub_end [AR1,P#0.0] #ciclo MEMT est em 1 DB [#ep_dbn] [AR2,P#0.0] #ciclo SETA DB [#ept_dbn] #ept_end [AR1,P#0.0] IBIT //Se sim, pula para IDOU / Se no, //Carrega com 32 (bits numa double) //Carrega o contador do loop //Carrega o ponto cujo endereo est //sub_end aponta para o estado de ep //Verifica se houve transio //Carrega fator de repetio //Transfere para o contador do loop //Verifica se a double word da tab.

L L ==D JC faz varredura nos IF1: L T OPN LAR2 A

OPN LAR1 no scan anterior FP positiva = JC verifica se ep j OPN A = JC OPN LAR1 R JU

em ep_end

//Se sim, pula para MEMT / Se no,

//Verifica se ep est em 1 //Se sim, pula para SETA //Se no //Reseta bit ept correspondente //Pula para seqncia de incremento

de bits MEMT:

L DB1.DBB 7 //Carrega segundos do clock do CLP OPN DB [#att_dbn] T DBB [#att_end] //Transfere para byte correspondente do DB de armazenamento do tempo de transio JU IBIT //Pula para seqncia de incremento de bits L DB1.DBB 7 //Carrega segundos do clock do CLP OPN DB [#att_dbn] L DBB [#att_end] //Carrega segundo em que ocorreu a transio positiva (previamente armazenado no DB de armazenamento do instante de transio) -I //Subtrai os valores (para ver se ept j deve ser setado) L B#16#0 //Verifica se o resultado deu negativo <I TAK //Troca ACCU1 com ACCU2 para colocar o zero no ACCU2 e a diferena em ACCU1 JC ANOR JU NORM ANOR: L B#16#60 //Adiciona 60 diferena (caso em que T_ATRASO + instante de transio negativa > 59) +I NORM: L #T_ATRASO //Ateno: escrever em HEXADECIMAL o tempo de espera (em segundos: 01h, 02h, ... , 58h ou 59h) (CONTINUA NA PRXIMA PGINA) SETA:

63

>=I igual ao T_ATRASO JC JU UM: OPN LAR1 S IBIT: L L +D T L L +D T L L +D T L L +D T L LOOP JU OPN LAR1 L T OPN LAR1 L T L L +D T L L +D T L L +D T L L +D T INCD: L LOOP BEU

//Verifica UM IBIT DB [#ept_dbn] #ept_end [AR1,P#0.0] #ep_end P#0.1 #ep_end #ept_end P#0.1 #ept_end #sub_end P#0.1 #sub_end #att_end P#1.0 #att_end #contador IF1 INCD DB [#ept_dbn] #ept_end 0 D [AR1,P#0.0] DB [#sub_dbn] #sub_end 0 D [AR1,P#0.0] #ep_end P#4.0 #ep_end #ept_end P#4.0 #ept_end #sub_end P#4.0 #sub_end #att_end P#32.0 #att_end #contador_2 VSZ

se

diferena

maior

ou

//Se sim, pula para UM //Se no, pula para IBIT //Seta bit ept correspondente //Incremento dos ponteiros (para bits)

//Decrementa o Contador do Loop //Pula para INCD, para decrementar o

contador_2 IDOU:

//Reseta a double apontada por ept_end

//Reseta a double apontada por sub_end //Incremento dos Ponteiros

64

6.3.5: Funo de Gerao das Entradas Polarizadas Bypassadas (EPB)


Para a gerao das entradas polarizadas bypassadas, foi criado um bloco de programa do tipo funo. Este bloco faz uma operao com a tabela da Entrada Polarizada Temporizada (EPT) e com a tabela Requisio de Bypass (BYP) para a gerao da tabela das Entradas Polarizadas Bypassadas (EPB). A operao lgica executada :
ept byp = epb
Tabela 6-3 Tabela Verdade da Operao

ept 0 0 1 1

byp 0 1 0 1

epb 0 0 1 0

Fig. 6.13 Operao de Gerao de EPB

Na Tabela 6-3 mostrada a tabela verdade da operao que executada para a gerao da tabela EPB. Esta operao tem por objetivo dar ao operador do sistema a liberdade de ignorar um sinal em 1 vindo do campo. Para tal basta atribuir ao bit correspondente da tabela de requisio de bypass o valor 1. Este artifcio utilizado para, por exemplo, ignorar sinais vindos de sensores defeituosos. Pela tabela verdade da operao percebe-se que o bit da tab. EPB somente setado quando ept est em 1 e byp est em 0. Quanto localizao na memria do CLP, as tabelas EPT, BYP e EPB podem se localizar tanto na Memria de Bits (M) como em um Bloco de Dados (DB).

65

6.3.6: Funcionamento do FC 45 Gerador de Entradas Polarizadas Bypassadas


O bloco FC 45 um bloco do tipo funo resposvel por fazer a operao descrita no item anterior. Os parmetros do bloco FC 45 so trs ponteiros do tipo ANY responsveis por enderear as reas de memria das tabelas envolvidas na operao. Tem-se a informao, atravs do ponteiro ANY, das trs reas de memria envolvidas e de seu tamanho. A FC 45 possui ainda variveis usadas dentro do bloco listadas na tabela de declaraes. Todas elas so do tipo temp, ou seja, temporrias.

Fig. 6.14 Tabela de declaraes de variveis do FC 45

A primeira network da FC 45 faz o armazenamento das variveis locais, definidas na tabela de declaraes, dos dados provenientes dos ponteiros ANY. Os dados armazenados so o fator de repetio, o nmero de DB (se existente) e o endereo inicial da rea apontada.

66

Network 1 FC 45 L LAR1 L T L T L T L T L LAR1 L T L T L T L LAR2 L T L T L T P##EPT W [AR1,P#2.0] #ept_rep_factor W [AR1,P#4.0] #ept_dbn D [AR1,P#6.0] #ept_end B [AR1,P#6.0] #ept_area P##BYP W [AR1,P#2.0] #byp_rep_factor W [AR1,P#4.0] #byp_dbn D [AR1,P#6.0] #byp_end P##EPB W [AR2,P#2.0] #epb_rep_factor W [AR2,P#4.0] #epb_dbn D [AR2,P#6.0] #epb_end //Carrega endereo do ponteiro EPT //Transfere para o AR1 //Carrega o fator de repetio //Transfere para uma varivel local //Carrega nro. do DB (se existente) //Transfere para uma varivel local //Carrega informao de endereo //Transfere para uma varivel local //Carrega informao de rea de mem. //Transfere para uma varivel local //Carrega endereo do ponteiro BYP //Transfere para o AR1 //Carrega o fator de repetio //Transfere para uma varivel local //Carrega nro. Do DB (se existente) //Transfere para uma varivel local //Carrega informao de endereo //Transfere para uma varivel local //Carrega endereo do ponteiro EPB //Tranfere para o AR2 //Carrega o fator de repetio //Transfere para uma varivel local //Carrega nro. do DB (se existente) //Transfere para uma varivel local //Carrega informao de endereo //Transfere para uma varivel local

A segunda network da funo , da mesma maneira que nas outras funes, um verificador de tamanho de tabelas. A estrutura bsica da network a mesma. O menor fator de repetio armazenado em uma varivel local para que seja

Network 2 FC 45 L L <I JC L <I JC T JU REP1: L L <I JC T JU L T JU L T JU #ept_rep_factor #byp_rep_factor REP1 #epb_rep_factor REP2 #rep_factor INI #ept_rep_factor #epb_rep_factor REP3 #rep_factor INI #byp_rep_factor #rep_factor INI #ept_rep_factor #rep_factor INI

REP2: REP3:

67

utilizado posteriormente na execuo da operao lgica. A terceira network a responsvel pela execuo da lgica. A rotina bsica um loop que faz a operao descrita em 32 bits por volta. O primeiro passo a transferncia do fator de repetio para o contador do loop indicando o nmero de voltas que sero dadas. Logo aps, uma instruo OPN faz a abertura do Bloco de Dados se esta for realmente a rea de dados endereada. Caso contrrio, o registrador de Bloco de Dados carregado com 0 e no influencia no resto das instrues. Percebe-se que, da mesma maneira que nas outras funes, h um uso intensivo de endereamento indireto atravs do endereamento indireto de registro
Network 3 FC 45 INI: IF1: L T OPN LAR1 L INVD OPN LAR1 L AD OPN LAR1 T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador DB [#byp_dbn] #byp_end D [AR1,P#0.0] DB [#ept_dbn] #ept_end D [AR1,P#0.0] DB [#epb_dbn] #epb_end D [AR1,P#0.0] #ept_end P#4.0 #ept_end #byp_end P#4.0 #byp_end #epb_end P#4.0 #epb_end #contador IF1 // Decrementa o contador do loop //Carrega o menor fator de repetio //Carrega o contador do loop //Abre DB (se existente) //Transfere o endereo do BYP p/ AR1 //Carrega dword apontada por byp_end //Inverte BYP //Abre DB (se existente) //Transfere o endereo de EPT p/ AR1 //Carrega dword apontada por ept_end //Executa a lgica AND //Abre DB (se existente) //Transfere o endereo do EPB p/ AR1 //Transfere resultado da lgica //Seqncia de incr. dos ponteiros

de rea cruzada e indireto de memria. Os passos finais so os incrementos nos ponteiros a cada volta do loop e a instruo BEU indicando fim de bloco incondicional.

68

6.3.7: Funo de Gerao das Entradas Polarizadas Bypassadas Seladas (EBS)


Para a gerao das entradas polarizadas bypassadas seladas, foi criado um bloco de programa do tipo funo. Este bloco opera a tabela das entradas polarizadas bypassadas (EPB) e a Tabela de Reconhecimento de Alarme (REC) gerando a Tabela das Entradas Polarizadas Bypassadas Seladas (EBS). A operao lgica executada um travamento lgico do estado 1 de epb (bit da tabela EPB) at que haja o reconhecimento por parte de rec (bit da tabela REC).

Fig. 6.15 Operao de Gerao de EBS

O reconhecimento uma operao executada pelo operador, na sala de controle, atravs de um comando no supervisrio da planta. Quando ocorre de um sinal da tabela EPB ser ativado, um alarme acionado no supervisrio da planta e o respectivo bit da tabela EBS setado. No entanto, o sinal que de fato utilizado na lgica do intertravamento o proveniente da tabela EPB (ver Fig. 6.1). Para o sinal de EBS ser resetado, deve-se aguardar o respectivo sinal da tabela EPB ser levado a 0 antes, e o sinal da tabela REC ser setado. O objetivo desta funo assegurar que haja o reconhecimento, por parte do operador, de uma mudana de estado no campo. Enquanto no h o reconhecimento um alarme disparado na tela do supervisrio. De posse desta informao o operador pode tomar as medidas necessrias para o correto funcionamento do processo. A localizao das tabelas na memria do CLP , como na maioria dos casos, varivel. Todas as tabelas podem se localizar tanto na Memria de Bits (M) como em um Bloco de Dados (DB).

69

6.3.8: Funcionamento do FC 46 Gerador de Entradas Polarizadas Bypassadas Seladas


O bloco FC 46 um bloco do tipo funo que faz a operao de travamento do alarme na tela do supervisrio. Os parmetros deste bloco so trs ponteiros tipo ANY que endeream as tabelas alocadas em alguma rea de memria do CLP. Como j descrito, o ponteiro ANY descreve toda a rea de memria e no apenas o endereo inicial. Alm destes, a FC 46 possui variveis internas que auxiliam as operaes necessrias na implementao (Fig. 6.16).

Fig. 6.16 Tabela de declaraes de variveis do FC 46

A primeira network da FC 46 armazena em variveis locais os dados informados pelos ponteiros ANY. Como nas outras funes, os dados armazenados so o fator de repetio, o nmero do DB e o endereo inicial da rea apontada. A segunda network faz a verificao do tamanho das tabelas e utiliza o menor valor de tamanho na execuo da opeao. Esta network funciona como j descrito

70

Network 1 FC 46 L LAR1 L T L T L T L LAR1 L T L T L T L LAR1 L T L T L T P##EPB W [AR1,P#4.0] #epb_dbn D [AR1,P#6.0] #epb_end W [AR1,P#2.0] #epb_rep_factor P##REC W [AR1,P#4.0] #rec_dbn D [AR1,P#6.0] #rec_end W [AR1,P#2.0] #rec_rep_factor P##EBS W [AR1,P#4.0] #ebs_dbn D [AR1,P#6.0] #ebs_end W [AR1,P#2.0] #ebs_rep_factor //Carrega endereo do ponteiro //Transfere para AR1 //Carrega nro. do DB //Transfere p/ var. local //Carrega informao de endereo //Transfere p/ var. local //Carrega fator de repetio //Transfere p/ var. local //Carrega endereo do ponteiro //Transfere para AR1 //Carrega nro. do DB //Transfere p/ var. local //Carrega informao de endereo //Transfere p/ var. local //Carrega fator de repetio //Transfere p/ var. local //Carrega endereo do ponteiro //Transfere para AR1 //Carrega nro. do DB //Transfere p/ var. local //Carrega informao de endereo //Transfere p/ var. local //Carrega fator de repetio //Transfere p/ var. local

anteriormente nas outras funes. Na Fig. 6.8 tem-se a descrio detalhada de como funciona a network.
Network 2 FC 46 L L <I JC L <I JC T JU REP1: L L <I JC T JU L T JU L T JU #epb_rep_factor #rec_rep_factor REP1 #ebs_rep_factor REP2 #rep_factor INI #epb_rep_factor #ebs_rep_factor REP3 #rep_factor INI #rec_rep_factor #rep_factor INI #epb_rep_factor #rep_factor INI

REP2: REP3:

A terceira network da FC 46 faz o travamento lgico do alarme. Em primeiro lugar se carrega o fator de repetio obtido na network 2, que igual ao tamanho da menor tabela envolvida na operao, sendo o tamanho o nmero de double words da tabela. Este valor transerido ao contador do loop e ser decrementado a cada volta. A primeira operao executada a lgica OU entre os bits de EPB e REC 71

(Fig. 6.15). O valor obtido desta operao imediatamente utilizado sem ser armazenado para fazer a lgica E com o valor da tabela EBS. O valor desta operao tambm utilizado sem ser armazenado para obter o novo valor de EBS.
Network 3 FC 46 INI: ROT: L T LAR1 OPN L INVD LAR2 OPN L OD LAR1 OPN L AD OPN L OD OPN T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador #rec_end DB [#rec_dbn] D [AR1,P#0.0] #epb_end DB [#epb_dbn] D [AR2,P#0.0] #ebs_end DB [#ebs_dbn] D [AR1,P#0.0] DB [#epb_dbn] D [AR2,P#0.0] DB [#ebs_dbn] D [AR1,P#0.0] #epb_end P#4.0 #epb_end #rec_end P#4.0 #rec_end #ebs_end P#4.0 #ebs_end #contador ROT //Decrementa contador do loop //Fim de Bloco //Carrega fator de repetio //Transfere para o contador do loop //Transfere rec_end p/ AR1 //Abre DB (se existente) //Carrega dword do REC //Faz complemento de 1 (inv. sinal) //Transfere epb_end p/ AR2 //Abre DB (se existente) //Carrega dword de EPB //Faz operao OU nas dwords //Transfere ebs_end p/ AR1 //Abre DB (se existente) //Carrega dword de EBS //Faz operao E nas dwords //Abre DB (se existente) //Carrega dword de EPB //Faz operao OU nas dwords //Abre DB (se existente) //Transfere resultado p/ EBS //Incrementa ponteiros

O passo final do loop fazer o incremento dos ponteiros e o decremento do contador para a prxima volta. Quando o loop finalizado, a instruo de fim de bloco executada.

72

6.3.9: Funo de Reset de Reconhecimento


Para a implementao da funo de reset de reconhecimento foi criado um bloco de programa do tipo bloco de funo. Este bloco opera a tabela REC e uma tabela auxiliar REC de maneira a resetar a primeira.

Fig. 6.17 Operao de Reset de REC

Esta funo tem por objetivo fazer no prprio CLP o comando de reset do reconhecimento. Isto feito em primeiro lugar porque o supervisrio (que envia o sinal de reconhecimento) no possui um comando no formato pulso. O outro motivo pelo qual o reset do reconhecimento feito no CLP, garantir que o sinal de reconhecimento chegue a lgica de tratamento de entradas e sadas. Se o sinal fosse pulsado e o CLP estivesse em um ciclo de varredura longo (situao rara mas possvel), poderia ocorrer de o sinal de reconhecimento ir para 0 antes de sua utilizao na lgica de tratamento de entradas. Na Fig. 6.17 tem-se o diagrama de funcionamento do bloco de funo. Os dois temporizadores tem por objetivo gerar uma onda quadrada de perodo T = 2s. Esta onda ora habilita, ora desabilita o bloco de movimentao. Quando os bits correspondentes das tabelas EBS e REC esto ativados, em algum momento o bit REC tambm o ser. Quanto localizao na memria do CLP, as tabelas EPT, BYP e EPB podem se localizar tanto na Memria de Bits (M) como em um Bloco de Dados (DB).

6.3.10: Funcionamento do FB 47 Reset de Reconhecimento de Alarme


O bloco FB 47 um bloco do tipo bloco de funo que faz a operao de reset de reconhecimento de alarme. Este reconhecimento feito atravs de um comando do supervisrio. Os parmetros de entrada deste bloco so trs ponteiros tipo ANY que endeream as tabelas do CLP envolvidas na operao. Alm destes 73

parmetros de entrada, o bloco FB 47 possui variveis outras variveis do tipo temp e do tipo stat. Aqui, deve-se dizer o porqu de se utilizar um FB e no um FC como nos outros blocos de programa. Como j descrito anteriormente, os FBs possuem a capacidade de armazenar, de uma varredura para a outra, os valores de algumas variveis. Neste caso, como foi necessrio o uso de temporizadores, isso foi imprescindvel. Os temporizadores devem, necessariamente, armazenar algumas variveis para por exemplo, saber se esto ativos ou no. Para a chamada do bloco, necessrio ainda designar um Bloco de Dados que ser o seu Bloco de Dados Instance (todo bloco de funo deve ser chamado com a designao de um Bloco de Dados Instance). Na Fig. 6.18, tem-se a visualizao das variveis do Bloco.

Fig. 6.18 Tabela de declaraes de variveis do FB 47

A primeira network do Bloco de Funo armazena em variveis locais os dados informados pelos ponteiros ANY. Os dados armazenados so o fator de repetio, o nmero do DB e o endereo inicial da rea apontada. Eles sero usados nas networks seguintes.

74

Network 1 FB 47 L LAR1 L T L T L T L LAR1 L T L T L T L LAR1 L T L T L T P##REC W [AR1,P#4.0] #rec_dbn D [AR1,P#6.0] #rec_end W [AR1,P#2.0] #rec_rep_factor P##EBS W [AR1,P#4.0] #ebs_dbn D [AR1,P#6.0] #ebs_end W [AR1,P#2.0] #ebs_rep_factor P##RECL W [AR1,P#4.0] #recl_dbn D [AR1,P#6.0] #recl_end W [AR1,P#2.0] #recl_rep_factor //Carrega o endereo do Ponteiro //Transfere para o AR1 //Carrega nro. do DB (se existente) //Transfere para varivel local //Carrega endereo inicial //Transfere para varivel local //Carrega fator de repetio //Transfere para varivel local //Carrega o endereo do Ponteiro //Transfere para o AR1 //Carrega nro. do DB (se existente) //Transfere para varivel local //Carrega endereo inicial //Transfere para varivel local //Carrega fator de repetio //Transfere para varivel local //Carrega o endereo do Ponteiro //Transfere para o AR1 //Carrega nro. do DB (se existente) //Transfere para varivel local // //Transfere para varivel local // //Transfere para varivel local

A segunda network serve para a verificao do tamanho das tabelas e utiliza o menor valor deles na execuo da opeao. Esta network anloga quela descrita na Fig. 6.8.
Network 2 FB 47 L L <I JC L <I JC T JU REP1: L L <I JC T JU L T JU L T JU #recl_rep_factor #rec_rep_factor REP1 #ebs_rep_factor REP2 #rep_factor INI #recl_rep_factor #ebs_rep_factor REP3 #rep_factor INI #rec_rep_factor #rep_factor INI #recl_rep_factor #rep_factor INI //Carrega tam. de REC //Carrega tam. De REC //REC < REC? //Se sim, pula p/ REP1 //Se no, carrega tam. EBS //REC < EBS //Se sim, pula p/ REP2 //Se no, rep_factor = tam. EBS //Pula p/ network seguinte //Carrega tam. REC //Carrega tam. EBS //REC < EBS? //Se sim, pula para REP3 //Se no, rep_factor = tam. EBS //Pula p/ network seguinte //Carrega tam. REC //rep_factor = tam. REC //Pula p/ network seguite //Carrega tam. REC //rep_factor = tam. REC //Pula p/ network seguinte

REP2: REP3:

A terceira network do Bloco de Funo faz a gerao da onda quadrada atravs de dois temporizadores. Eles so do tipo atraso na subida ou seja, quando um sinal 1 aparece na sua entrada, o temporizador retarda um tempo definido pelo 75

usurio seu aparecimento na sada. Com dois temporizadores ligados em srie (como mostrado na Fig. 6.19), pode-se fazer a onda quadrada, de qualquer perodo, apenas ajustando o tempo de retardo. Dependendo do estado da onda quadrada (alto ou baixo) o fluxo de programa direcionado para a network 5 ou para a network 6 atravs de um jump condicional. Este teste feito na network 4.

Fig. 6.19 Network 3 do FB 48

A network 4 faz o teste para verificar em que estado se encontra a onda quadrada.
Network 4 FB 47 A JCN #onda.Q TMRZ //Se a onda estiver em 1 //Vai para network 6, seno para a 5

A network 5 faz a operao lgica E entre os bits da tabela EBS e da tabela REC e transfere o resultado para a tabela REC. J se sabe de antemo que, se se est na network 5, o estado da onda quadrada alto. Ento, o que se faz realmente nesta network a operao lgica E entre trs sinais: os dois j descritos mais o sinal da onda quadrada. Isto vem ao encontro do especificado graficamente pela Fig. 6.17.

76

Network 5 FB 47 RREC: L T LAR1 OPN L LAR2 OPN L AD LAR1 OPN T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador #rec_end DB [#rec_dbn] D [AR1,P#0.0] #ebs_end DB [#ebs_dbn] D [AR2,P#0.0] #recl_end DB [#recl_dbn] D [AR1,P#0.0] #rec_end P#4.0 #rec_end #ebs_end P#4.0 #ebs_end #recl_end P#4.0 #recl_end #contador RREC //Carrega contador //Decrementa contador //Fim de Bloco //Carrega fator de repetio //Transfere p/ contador do loop //Transfere rec_end p/ AR1 //Abre DB (se existente) //Carrega double da tab. REC //Transfere ebs_end p/ AR2 //Abre DB (se existente) //Carrega double da tab. EBS //Faz operao lgica E //Transfere recl_end p/AR1 //Abre DB (se existente) //Transfere resultado da operao //Incrementa ponteiros

A network 6 faz a operao de movimentao tambm descrita na Fig. 6.17. Esta network somente executada se o estado da onda quadrada for baixo. Durante o estado baixo da onda quadrada que se faz de fato reset da tabela de reconhecimento de alarme (REC). Isso se d pela transferncia dos valores da tabela REC para a tabela REC.

77

Network 6 FB 47 TMRZ: MV: L T #rep_factor #contador //Carrega o fator de repetio //Transfere para o contador do loop //Transfere recl_end p/ AR2 //Abre DB (se existente) //Carrega double de REC //Transfere rec_end p/ AR1 //Abre DB (se existente) //Transfere para double de //Incremento dos ponteiros

LAR2 #recl_end OPN DB [#recl_dbn] L D [AR2,P#0.0] LAR1 #rec_end OPN DB [#rec_dbn] T D [AR1,P#0.0] valor da double de REC L L +D T L L +D T #rec_end P#4.0 #rec_end #recl_end P#4.0 #recl_end

REC

L #contador //Carrega contador LOOP MV //Decrementa contedo de ACCU 1 e pula para MV se seu contedo for > 0 BEU //Fim de Bloco Incondicional

Ao final, a tabela de reconhecimento (REC) resetada depois de a lgica anterior (lgica de reconhecimento) ter sido executada pelo CLP. Tem-se assim o reconhecimento do sinal de campo em seu estado alterado de uma maneira segura.

6.3.11: Funo de Gerao de SL1


Para a implementao desta funo, foi criado um bloco de programa do tipo funo. Este bloco opera com a tabela Sada da Lgica (SLG) e a tabela Requisio de Override 1 (OV1) para a gerao da tabela SL1. Esta tabela o resultado da operao de override 1 no sinal de sada. A operao lgica necessria a OU (Tabela 6-4).

s lg+ ov1 = sl1


Tabela 6-4 Operao OU entre SLG e OV1 gerando SL1

slg 0 0 1 1

ov1 0 1 0 1

sl1 0 1 1 1

78

Fig. 6.20 Operao OU

A operao OU permite o sinal vindo de SLG aparea em SL1 quando OV1 0. Quando o bit de SLG 0, a operao permite sobrescrever a lgica atravs do sinal de OV1 bastando para isso, escrever 1 no bit correspondente. Esta operao pode ser til em casos como testes, falhas de equipamentos ou lgica defeituosa. A tabela SLG a sada da lgica ou seja, o resultado do intertravamento. Pode estar alocada tanto em Memria de Bits (M) como em Bloco de Dados (DB). As outras tabelas podem, da mesma maneira, estar alocadas na Memria de Bits ou em um Bloco de Dados (DB).

6.3.12: Funcionamento do FC 48 Gerador de SL1


O bloco FC 48 um bloco do tipo funo que faz a operao lgica OU entre os sinais das tabelas SLG e OV1. O bloco opera de maneira semelhante ao FC 43, apenas alterando a operao (de OU EXCLUSIVO para OU) e as tabelas envolvidas. Da mesma maneira, os parmetros do bloco so trs ponteiros do tipo ANY que endeream as diferentes reas de memria envolvidas na operao. A funo FC 48 possui variveis que auxiliam a execuo da operao e so declaradas na tabela de declaraes (Fig. 6.21). A primeira network armazena em variveis locais as informaes fornecidas pelo ponteiro ANY das trs reas envolvidas na operao. A segunda network faz a lgica de escolha do menor fator de repetio. O funcionamento semelhante ao das outras funes j explicadas. A terceira network faz a lgica de override 1. Os sinais de SLG e OV1 so carregados e a operao OU executada de double word em double word. Obs.: por questo de semelhana com a FC 43, apenas a network 3 mostrada neste caso. 79

Fig. 6.21 Tabela de declaraes do bloco FC 48 Network 3 FC 48 INI: IF1: L T OPN LAR1 L OPN LAR1 L OD OPN LAR1 T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador DB [#slg_dbn] #slg_end D [AR1,P#0.0] DB [#ov1_dbn] #ov1_end D [AR1,P#0.0] DB [#sl1_dbn] #sl1_end D [AR1,P#0.0] #slg_end P#4.0 #slg_end #ov1_end P#4.0 #ov1_end #sl1_end P#4.0 #sl1_end #contador IF1 //Carrega contador //Decrementa contador e pula p/ IF1 //Fim de Bloco //Carrega fator de repetio //Transfere p/ contador do loop //Abre DB (se existente) //Transfere slg_end p/ AR1 //Carrega double de SLG //Abre DB (se existente) //Transfere ov1_end p/ AR1 //Carrega double de OV1 //Executa operao OU //Abre DB (se existente) //Transfere sl1_end p/ AR1 //Transfere resultado p/ SL1 //Incremento dos ponteiros

80

6.3.13: Funo de Gerao de SLO


Para a implementao da funo de gerao da Sada da Lgica (SLO), foi criado um bloco de programa do tipo funo. Este bloco opera com a tabela SL1 e com a tabela Requisio de Override 0 (OV0) para a gerao da tabela SLO. Esta tabela o resultado da operao de override 0 no sinal de sada. A operao lgica necessria mostrada na equao abaixo e na Tabela 6-5.

sl1 ov0 = slo


Tabela 6-5 Tabela Verdade da Operao

sl1 0 0 1 1

ov0 0 1 0 1

slo 0 0 1 0

Fig. 6.22 Gerao de SLO

Com as operaes de override possvel que o operador tenha controle do sinal que sai da lgica do intertravamento. Neste caso, basta fazer uma requisio na tabela OV0 no bit correspondente para que o bit de SLO seja 0. Pela Tabela 6-5, pode-se notar que basta o bit de OVO ser igual a 0 que o bit correspondente de SLO tambm o ser. Quanto localizao na memria, as trs tabelas podem se localizar tanto em Memria de Bits (M) como em Bloco de Dados (DB).

6.3.14: Funcionamento do FC 49 Gerador de SLO


O bloco FC 49 um bloco do tipo funo que faz a operao descrita no item anterior. Assim como o bloco FC 48, este bloco opera de maneira semelhante ao FC 43, apenas alterando a operao (de OU EXCLUSIVO para a descrita acima) e as tabelas envolvidas. Os parmetros de entradas so os mesmos ponteiros ANY que endeream as tabelas SL1, OV0 e SLO. 81

A funo possui as variveis locais temp que auxiliam a execuo do bloco de programa (Fig. 6.23). A primeira network armazena em variveis locais as informaes fornecidas pelo ponteiro ANY das trs reas envolvidas na operao. A segunda network faz a lgica de escolha do menor fator de repetio. O funcionamento semelhante ao das outras funes j explicadas. A terceira network faz a lgica de override 0. Os sinais de SL1 e OV0 so carregados e a operao descrita executada de double word em double word e armazenada em SLO. Obs.: por questo de semelhana com a FC 43, apenas a network 3 mostrada para esta funo.

Fig. 6.23 Tabela de declaraes de variveis do FC 49

82

Network 3 FC 49 INI: IF1: L T OPN LAR1 L INVD OPN LAR1 L AD OPN LAR1 T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador DB [#ov0_dbn] #ov0_end D [AR1,P#0.0] DB [#sl1_dbn] #sl1_end D [AR1,P#0.0] DB [#slo_dbn] #slo_end D [AR1,P#0.0] #sl1_end P#4.0 #sl1_end #ov0_end P#4.0 #ov0_end #slo_end P#4.0 #slo_end #contador IF1 //Carrega contador //Decrementa contador e pula p/ IF1 //Fim de Bloco //Carrega fator de repetio //Transfere p/ contador do loop //Abre DB (se existente) //Transfere ov0_end para AR1 //Carrega double de ov0 //Inverte sinal de OV0 //Abre DB (se existente) //Transfere sl1_end p/ AR1 //Carrega double de SL1 //Faz lgica E //Abre DB (se existente) //Transfere slo_end p/ AR1 //Transfere resultado p/ SLO //Incremento dos ponteiros

6.3.15: Funo de Gerao de Sadas Fsicas (SAI)


Para a implementao da funo de gerao da Sada Fsica (SAI), foi criado um bloco de programa do tipo funo. Este bloco opera com a tabela Sada da Lgica (SLO) e com a tabela Sadas Esperadas (SSP) para a gerao das Sadas Fsicas (SAI). Esta tabela o resultado da operao OU EXCLUSIVO entre as duas primeiras. A operao lgica necessria mostrada abaixo e na Tabela 6-6.

slo ssp = sai


Tabela 6-6 Operao OU EXCLUSIVO entre SLO e SSP gerando SAI

slo 0 0 1 1

ssp 0 1 0 1

sai 0 1 1 0

83

Fig. 6.24 Gerao de SAI

A operao de gerao de SAI tem o mesmo princpio da gerao das entradas polarizadas (EP). O estado normal dos comandos armazenado na tabela SSP. Quando existe uma diferena entre um bit de SLO e de SSP a sada fsica ativada. Quanto localizao na memria, as trs tabelas podem se localizar tanto em Memria de Bits (M) como em Bloco de Dados (DB).

6.3.16: Funcionamento do FC 50 Gerador de Sadas Fsicas (SAI)


O bloco FC 50 um bloco do tipo funo que faz a operao OU EXCLUSIVO entre os sinais de SLO e SSP. Este bloco opera de maneira praticamente igual ao FC 43, apenas alterando as tabelas envolvidas na operao. Os parmetros de entradas so ponteiros ANY que endeream as tabelas SLO, SSP e SAI. Como nos outros blocos, a funo possui as variveis locais temp que funcionam como temporrias (Fig. 6.25).

Fig. 6.25 Tabela de declaraes de variveis do FC 50

84

A primeira network armazena em variveis locais as informaes fornecidas pelo ponteiro ANY das trs reas envolvidas na operao. A segunda network faz a lgica de escolha do menor fator de repetio. O funcionamento semelhante ao das outras funes j explicadas. A terceira network faz a lgica de OU EXCLUSIVO. A operao realizada de double word em double word. Obs.: por questo de semelhana com a FC 43, apenas a network 3 mostrada para esta funo.
Network 3 FC 50 INI: IF1: L T OPN LAR1 L OPN LAR1 L XOD OPN LAR1 T L L +D T L L +D T L L +D T L LOOP BEU #rep_factor #contador DB [#slo_dbn] #slo_end D [AR1,P#0.0] DB [#ssp_dbn] #ssp_end D [AR1,P#0.0] DB [#sai_dbn] #sai_end D [AR1,P#0.0] #slo_end P#4.0 #slo_end #ssp_end P#4.0 #ssp_end #sai_end P#4.0 #sai_end #contador IF1 //Carrega contador //Decrementa contador e pula p/ IF1 //Carrega fator de repetio //Transfere para contador do loop //Abre DB (se existente) //Transfere sl0_end para AR1 //Carrega double word de SLO //Abre DB (se existente) //Transfere ssp_end para AR1 //Carrega double word de SSP //Faz operao OU EXCLUSIVO //Abre DB (se existente) //Transfere sai_end para AR1 //Transfere resultado para SAI //Incremento dos ponteiros

85

Captulo 7: Resultados

Neste captulo sero mostrados os resultados obtidos com o sistema de tratamento de entrada implementado e sua posterior anlise. Os resultados referem-se a testes feitos em laboratrio com o CLP Siemens S7-400. Algumas consideraes a respeito dos monitorao e modificao das variveis foi feita por uma estao conectada ao CLP via Ethernet.

7.1: Condies de Obteno dos Resultados


A situao em que foram realizados os testes de verificao do sistema diferem da situao em que o sistema ser implementado nos seguintes aspectos:

A modificao da tabela ENT se dar pela mudana no estado dos sinais de campo, vindos da rede Profibus DP e no pela modificao manual via tabela d e variveis;

A modificao da tabela REC se far via supervisrio. No caso dos testes a modificao feita via tabela de variveis.

Em ambas as situaes, as condies de laboratrio, apesar de diferentes das condies de campo, no alteram grandemente os resultados que seriam obtidos em campo. No caso da modificao da tabela ENT, a diferena se d pelo tempo de atualizao da rede Profibus DP. No segundo caso, a situao de laboratrio praticamente igual a de campo. A diferena que a estao que modifica a tabela REC outra, no entanto est conectada na mesma rede Ethernet.

86

7.2: Visualizao do Funcionamento


Os testes em laboratrio foram realizados utilizando uma tabela de variveis que monitora o valor dos bits (Memria do CLP) online.

Fig. 7.1 Exemplo de Tabela de Variveis

Esta mesma ferramenta permite modificar o valor das variveis, verificar o tempo de ciclo, forar valores, etc. Em comparao monitorao de variveis diretamente no bloco, a tabela de variveis permite que se visualize diretamente, em uma mesma tela, todas as variveis de interesse. a melhor maneira para fazer testes com vrios blocos, pois independe da quantidade de chamadas.

7.3: Resultados Obtidos


Em relao ao sistema anteriormente implementado, o novo Sistema de Tratamento de Entradas e Sadas apresentou solues que mudaram sua caracterstica. A primeira grande mudana se deu no endereamento dos sinais. O 87

sistema anterior, em vez fazia o endereamento bit a bit para os blocos que utilizavam temporizadores. Esta abordagem fazia com que os blocos de programa ficassem com um tamanho extremamente grande porque, para cada sinal de entrada, era feita uma network com a respectiva lgica. Toda a lgica do Sistema de Tratamento dos Pontos de Entrada e Sada desenvolvida ocupa uma rea na memria de trabalho de 3.004 bytes. No sistema antigo, apenas para a gerao da tabela EPT, havia dois blocos com o tamanho de 24.986 bytes cada um. Este tamanho se deve ao exposto anteriormente. Para cada ponto do sistema havia uma network com todas as instrues necessrias para fazer a lgica de temporizao. No novo Sistema apenas necessrio informar a rea dos sinais. A lgica de temporizao feita em apenas uma network. No sistema antigo, no havia a possibilidade de haver variaes de rea de memria para uma determinada tabela. Para isso era necessria a criao de um novo bloco de programa. Por isso, o sistema s funcionava para tabelas alocadas na Memria de Bits (M). Com o novo Sistema, toda rea de memria pode ser enderaada para uma tabela, basta que o ponteiro ANY contenha esta informao. Quanto ao tempo do ciclo de varredura, o CLP Siemens possui uma ferramenta de anlise que permite verificar os tempos mnimo, mdio e mximo de ciclo. No entanto, os resultados obtidos em laboratrio no podem ser extrapolados diretamente para a plataforma. Isto porque no se tem uma relao direta entre o nmero de pontos das tabelas e o tempo de execuo. Para tabelas com 160 pontos (5 double words), o tempo de execuo mdio do tratamento de entradas de 3 ms e o de tratamento de sadas de 1 ms. Este tempo aumentado quando por exemplo, so mudados vrios pontos da tabela ENT no mesmo ciclo. Quando foram alterados os 160 pontos no mesmo ciclo de varredura, o CLP acusou um tempo de ciclo mximo de 64 ms. Isto porque provavelmente o bloco FC 44 de temporizao atuou em seus ciclos mais longos demandando mais tempo de execuo. A alterao de tantos pontos em to pouco tempo , no entanto, muito difcil de ocorrer na prtica. Alm disso, a especificao Petrobras sobre tempo de ciclo em relao ao tempo mdio e no em relao ao tempo mximo. Porm, como foi dito anteriormente, a relao entre o nmero de pontos das tabelas e tempo de ciclo no direta. Para um nmero maior de pontos (8 double words), o tempo de execuo mdio do tratamento de entradas se manteve em 3 ms. O 88

tempo de ciclo mdio exigido pela Petrobras para as CPUs de no mximo 150 ms. Com o sistema funcionando provisoriamente, o tempo de ciclo mdio das CPUs (mdia dos tempos mdios das 5 CPUs) est em cerca de 100 ms.

89

Captulo 8: Concluses

A lgica de controle ficou muito mais clara do que a implementada anteriormente. A principal vantagem advinda do Sistema de Tratamento dos Pontos de Entrada e Sada a rapidez de execuo e a clareza da lgica. Agora, basta descrever a rea de memria onde os pontos esto alocados e reservar uma rea de memria para algumas tabelas auxiliares. O uso dos ponteiros ANY fundamental nesta tarefa. Qualquer lugar de memria pode alocar os pontos envolvidos na operao pois os blocos de programa foram desenvolvidos para lidar com esta variedade. No entanto, o entendimento da lgica por parte da Petrobras essencial para que o Sistema seja aprovado para uso na plataforma. As providncias para que isso ocorra esto sendo tomadas por aqueles que trabalham diretamente na plataforma P-43. a primeira vez que estas especificaes esto sendo implementadas em um CLP Siemens, por isso este processo pode ser um pouco mais demorado. No entanto, testes devem ser realizados na P-43 (que se encontra em fase de comissionamento em Niteri) para garantir a viabilidade do sistema. Um dos problemas que pode ocorrer o excessivo tempo de execuo da lgica. Nos testes feitos em laboratrio isto no ocorreu porque o nmero de pontos simulados na entrada do sistema foi muito inferior ao que ser na prtica. A relao direta entre tamanho de tabelas e tempo de execuo no foi encontrada. Se necessrio, algumas alteraes devero ser executadas nos blocos mais crticos, principalmente no FC 44 e FB 47, visivelmente os gargalos do sistema pela presena de temporizao. O Sistema de Tratamento de Entradas e Sadas um passo em busca do mais importante em plataformas de petrleo: a segurana. Ele foi praticamente todo desenvolvido em STL, linguagem que otimiza utilizao do espao e faz programas mais velozes, especialmente porque esta era uma das partes crticas do projeto. O que se buscou em todos os momentos foi a robustez e a simplicidade do programa. Isto foi alcanado graas ao uso intensivo dos diversos tipos de ponteiros

90

disponveis, da organizao interna dos blocos (todos seguem um padro) e da diviso do sistema em subtarefas (um bloco para cada operao lgica). Com esta simplicidade e organizao espera-se que, com os testes que sero realizados em plataforma, o Sistema de Tratamento dos Pontos de Entrada e Sada possa cumprir fielmente com o papel para o qual foi desenvolvido.

91

Bibliografia:

[1] site: petrobras.com.br [2] SIMATIC NET NCM S7 for PROFIBUS / FMS Manual, Vol. 2, pg. 16-19, 2001. [3] SIMATIC S7-400 Manual, 2003. [4] C. C. de Moraes e P. L. Castrucci, Engenharia de Automao Industrial, LTC, 2001. [5] SIMATIC System Software for S7-300/400 System and Standard Functions, 2002.

92

Anexo A Instrues STL utilizadas

Neste anexo esto listadas as instrues utilizadas nos blocos do Sistema de Tratamento dos Pontos de Entrada e Sada, com seus respectivos formatos e descries.

Instrues Lgicas de Bit:

1. A (AND) Formato: A <Bit> Descrio: A instruo A verifica se o estado do bit endereado 1 e faz a lgica AND com o bit RLO. 2. R (RESET) Formato: R <Bit> Descrio: A instruo R escreve 0 no bit endereado se o RLO = 1. 3. S (SET) Formato: S <Bit> Descrio: A instruo S escreve 1 no bit endereado se o RLO = 1. 4. = (ATRIBUIO) Formato: = <Bit> Descrio: A instruo = escreve o contedo de RLO no bit endereado. 5. FP (SENSOR DE TRANSIO POSITIVA) Formato: FP <Bit> Descrio: A instruo FP detecta uma borda positiva quando o RLO transiciona de 0 para 1 e indica isso escrevendo 1 em RLO. 93

Durante cada ciclo de varredura, o estado de RLO comparado com o obtido no ciclo anterior para verificar se houve mudana de estado. O estado anterior de RLO armazenado no endereo indicado por <Bit> para se fazer a comparao.

Instrues de Salto: todas as intrues de salto utilizam como parmetro um jump label. Este jump label pode ter no mximo quatro caracteres e o primeiro deles deve ser uma letra. So seguidos obrigatoriamente por : e devem preceder a instruo de programa.

1. JU (Jump Unconditional) Formato: JU <jump label> Descrio: A instruo JU interrompe o funcionamento seqencial do programa e salta para um destino identificado por <jump label>. O <jump label> deve ser nico e pode se localizar tanto antes como depois da instruo, porm deve estar no mesmo bloco de programa. 2. JC (Jump Conditional) Formato: JC <jump label> Descrio: A instruo JC interrompe o funcionamento seqencial do programa e salta para <jump label> se RLO = 1. 3. JCN (Jump if RLO = 0) Descrio: A instruo JCN interromper o funcionamento seqencial do programa e salta para <jump label> se RLO = 0.

Instrues com Double Words, Word e Bytes:

1. ==D (Compara Double Integer) Formato: ==D 94

Descrio: Esta instruo compara o contedo do ACCU 1 com o contedo do ACCU 2. Se ambos so iguais, RLO escrito com 1. 2. +D (Adio com Double Integer) Formato: +D Descrio: Esta instruo soma o contedo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. O contedo dos acumuladores interpretado como inteiros de 32 bits. 3. <I (Compara Integer) Formato: <I Descrio: Esta instruo verifica se o contedo, interpretado como um nmero inteiro, de ACCU 2-L menor do que o de ACCU 1-L. 4. >=I (Compara Integer) Formato: >=I Descrio: Esta instruo verifica se o contedo, interpretado como um nmero inteiro, de ACCU 2-L maior ou igual do que o de ACCU 1-L. 5. I (Subtrao Integer) Formato: I Descrio: Esta instruo subtrai o contedo de ACCU 1-L do contedo de ACCU 2-L e armazena o resultado em ACCU 1-L. 6. L (Load) Formato: L <address> Descrio: Esta instruo carrega o byte, word ou double word endereado no ACCU 1 depois de o antigo contedo deste ser copiado para ACCU 2 e de o ACCU ser resetado para 0. 7. T (Transfer) Formato: T <address>

95

Descrio: Esta instruo copia o contedo do ACCU1 para o destino endereado por <address>. O nmero de bytes copiado para o destino depende do tamanho expressado no endereo de destino. 8. LAR1 ou LAR2 (Load AR1 or AR2) Formato: LAR1 <D> Descrio: Esta instruo carrega o registrador AR1 com o contedo da double word <D> ou do ponteiro. 9. TAK (Toggle Accu 1 with Accu 2) Formato: TAK Descrio: Esta instruo troca o contedo dos acumuladores ACCU 1 e ACCU 2. 10. INVD (Complemento de um de double interger) Formato: INVD Descrio: Esta instruo forma o complemento de 1 do contedo de ACCU 1. Isto inverte o valor, bit a bit, do contedo de ACCU 1. 11. AD (And double word) Formato: AD Descrio: Faz a operao booleana E entre o contedo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. 12. OD (Or double word) Formato: OD Descrio: Faz a operao booleana OU entre o contedo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. 13. XOD (Exclusive OR double word) Formato: XOR Descrio: Faz a operao booleana OU EXCLUSIVO entre o contedo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. 14. OPN (Open a data block) 96

Formato: OPN <data block> Descrio: Esta instruo armazena <data block> no registrador de DB. Este DB pode ser Compartilhado ou Instance. 15. LOOP (Faz o Loop) Formato: LOOP <jump label> Descrio: Esta instruo decrementa ACCU 1-L e salta para <jump label> se ACCU 1-L for diferente de zero. 16. BEU (Block End Unconditional) Formato: BEU Descrio: Encerra o processamento do bloco atual e salta para o bloco que chamou o atual. A varredura recomea na instruo imediatamente subseqente que chamou o bloco. 17. CALL (Block Call) Formato: CALL <logic block indentifier> Descrio: Usado para chamar FCs, FBs, SFCs ou SFBs.

97