Você está na página 1de 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.


2
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
i
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.
ii
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.

iii
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.

iv
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
v
7.3: Resultados Obtidos..............................................................................87
Captulo 8: Concluses ..................................................................................90
Bibliografia:.....................................................................................................92
Anexo A Instrues STL utilizadas ............................................................93




1
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 Nm
3
/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.
2
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.
3
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.

4
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.
5
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.
6
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.

7
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 auto-
suficincia 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.
8


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

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

9
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 natal
1
molhada, ou seja, localizada no fundo do mar. O leo extrado
chega plataforma e passa pelo manifold
2
. 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.

1
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.
10
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
11
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 preocupou-
se 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.
12
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
13
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
14
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.
15

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.
16

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.

17
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.
18
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.
19
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
110 / 230 VDC
120 / 230 VAC
Tenso Permitida
88 at 300 VDC
85 at 264 VAC
Freqncia do Sistema
Freqncia Classificada 50 / 60 Hz
Freqncia Permitida 47 at 63 Hz
Sada
Tenso de Sada (Valores Classificados) 5 / 24 VDC
Corrente de Sada (Valores Classificados) 5 VDC: 10 A / 24 VDC: 1,0 A

20
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 Integrada
2 MB para dados
Expansvel At 10 MB para programa
21
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
O mdulo CP 443-1 o
responsvel pela comunicao do S7-
400 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
22
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 60C
Temperatura de Transporte /
Armazenagem
-40 a 70C
Umidade Relativa @ 25C Mx. 95% @ 25C

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
redundantes, como os presentes na
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 9,6 kbits/s a 12 Mbits/s
Interface
Tecnologia de transmisso Cabo RS-485
Conexo Soquete de 9 pinos
Tenso de alimentao 5 V DC 5%
Consumo de corrente @ 5 V 1,2 A
Perda de Potncia 6,5 W
23
Condies Ambientais de Operao
Temperatura de Operao 0 a 60C
Temperatura de Transporte /
Armazenamento
-40 a 70C
Umidade Relativa Mx. 95% @ 25C

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
Interface
Nmero de entradas 2, varivel
20 mA (TTY) (mx. 19,2 kbits/s)
RS232 (V24) (mx. 115,2 kbits/s)
Mtodo de transmisso
RS422 / RS485 (X27) (mx. 115,2
kbits/s)
Taxa de Trasmisso Mxima 115,2 kbits/s distribudos nas 2
interfaces
RS 232C (V24): 10m
20 mA (TTY): 1000m
Distncia de Transmisso Mxima
RS 422 / 485 (X27): 1200m
Parametrizao Via Step 7

24
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.
25
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
26
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.
27

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
Notao
no S7
Descrio
Tabela Imagem da
Periferia de
Entrada
Iy
No comeo do ciclo de varredura (scan) a CPU l
as entradas dos mdulos de entrada e salva estes
valores nesta rea.
Tabela Imagem da
Periferia de Sada
Qy
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.
Memria de Bit My
Esta rea fornece espao para resultados
intermedirios calculados no programa.
Temporizadores T Fornece espao para temporizadores.
28
Contadores C Fornece espao para contadores.
Bloco de Dados DBy
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
Bloco de Dados
Instance
DIy
So Blocos de Dados abertos no programa com a
instruo OPN DI.
Dados Locais Ly
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.

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 deve-
se 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
PIy
rea Periferia de
Sada
PQy
As reas Periferia de Entrada e Sada permitem
acesso direto s entradas e sadas centrais e
distribudas.
29
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.
T <endereo>
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.
TAK Troca o contedo do ACCU 1 com o contedo do ACCU 2.
30
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.
31
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].
32

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.
33
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,
34
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.
==D
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.
LAR1 Copia o contedo de ACCU 1 no registrador de endereos AR1.
+I
Faz a operao de soma entre o ACCU 1-L e o ACCU 2-L e
armazena o resultado em ACCU 1-L.

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
35
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 rea de Memria Descrio
81 I Tabela Imagem das Entradas
82 Q Tabela Imagem das Sadas
83 M rea de Memria de Bits
84 DB Bloco de Dados
85 DI Bloco de Dados Instance
86 L Dados Locais (pilha)
87 V 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
36
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).
37

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
38
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
39
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
Blocos de Usurio
Tipos de Blocos Caractersticas
Blocos de Organizao (OB) Interface do usurio entre sistema e o programa;
Nveis de prioridades (1 a 26);
Informaes especiais de inicializao na pilha
de dados locais.
Bloco de Funo (FB) Um valor de retorno ser transferido (parmetros
devem ser designados para a chamada);
Parametrizvel / Retentivo;
No Parametrizvel / Retentivo;
No Parametrizvel / No Retentivo.
Funo (FC) Um valor de retorno ser transferido (parmetros
devem ser designados para a chamada);
Parametrizvel / No Retentivo.
Blocos de Dados (DB) 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.

40
Funo de Sistema (SFC): Funo de Sistema uma funo pr-
programada 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
Blocos de Sistema
Tipo de Bloco Caractersticas
Funo de Sistema (SFC) Arquivados no sistema operacional das CPUs;
Usurio pode chamar esta funo (sem memria).
Bloco de Funo de
Sistema (SFB)
Arquivados no sistema operacional das CPUs;
Usurio pode chamar esta funo (com memria).
Blocos de Dados de
Sistema (SDB)
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.
41
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
Acesso ao quarto bit (bit 3), do byte 10 da tabela imagem da periferia
de entrada.
MW 6
Acesso word que se inicia no byte 6 (e inclui o byte 7) da memria de
bit.
QD 12
Acesso double word que se inicia no byte 12 (e inclui os bytes 13, 14
e 15) da tabela imagem da periferia de sada.
DBX 13.0
Acesso ao bit 0 do byte 13 do DB que estiver aberto (aquele cujo
nmero estiver armazenado no registrador de DB).
DIB 10
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.
42
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 MW [MD 30] //Carrega no ACCU 1 a MW apontada por
MD30
A I [#pointer_1] //Faz a lgica E da entrada apontada por
#pointer_1
A DBX [#dbn] //Faz a lgica E do bit apontado por #dbn
localizado no DB que estiver aberto (DB cujo nmero estiver no registrador de DB)
43

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 P#5.2 //Carrega no ACCU1 um ponteiro para o byte 5,
bit 2
T DBD 12 //Copia o contedo do ACCU1 para a double
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
44
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 // Carrega no AR1 um ponteiro para o byte 2,
bit 2.
L ID [AR1,P#2.0] // Carrega no ACCU1 a double word de entrada
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.

45
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 // Carrega no AR1 um ponteiro para o byte 3 da
tabela imagem da periferia.
L B [AR1,P#1.0] // Carrega no ACCU1 o byte 4 da entrada
(tabela imagem de periferia de entrada).
Tabela 5-14 Formas de Endereamento no S7-400
Endereamento Direto Endereamento Indireto
Absoluto Simblico Memria Indireta Registrador Indireto

Ponteiro de
16 bits
Ponteiro de
32 bits
(rea int.)
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
46
elementares
3
), 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 complexos
4
e dados
definidos pelo usurio
5
).
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.





3
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.
47
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.
48
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,
49
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, e 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
50
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 Tabela Ao permitida
ENT Entrada fsica Interna ao CLP
EPB Entrada polarizada e bypassada Interna ao CLP
SAI Sada fsica Interna ao CLP
SLG Sada da lgica VXL l
SLO Sada sobrescrita da lgica VXL l
EPT Entradas polarizadas temporizadas VXL l
EBS Entradas polarizadas, bypassadas e seladas VXL l
REC Reconhecimento de alarme VXL l / escreve
BYP Requisio de bypass VXL l / escreve
OV1 Requisio de sobrescrever 1 VXL l / escreve
OV0 Requisio de sobrescrever 0 VXL l / escreve
ESP Estado esperado da entrada Definido no CLP

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
51
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).
ep esp ent =
Tabela 6-2 Operao OU EXCLUSIVO entre ent e esp gerando ep



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
ent esp ep
0 0 0
0 1 1
1 0 1
1 1 0
52
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
53
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
54
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 2
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 //Carrega endereo do ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#2.0] //Carrega a word que contm o fator
de repetio
T #esp_rep_factor //Transfere para a varivel local
L W [AR1,P#4.0] //Carrega o nmero de DB (se
existente, seno carrega zero)
T #esp_dbn //Transfere para varivel local
L D [AR1,P#6.0] //Carrega informao do endereo
T #esp_end //Transfere para esp_end

L P##EP //Carrega endereo do ponteiro
LAR2 //Transfere para o AR2
L W [AR2,P#2.0] //Carrega a word que contm o fator
de repetio
T #ep_rep_factor //Transfere para a varivel local
L W [AR2,P#4.0] //Carrega o nmero de DB (se
existente, seno carrega zero)
T #ep_dbn //Transfere para varivel local
L D [AR2,P#6.0] //Carrega informao endereo
T #ep_end //Transfere para ep_end
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.
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.
55
Network 2 FC 43

L #ent_rep_factor // Carrega tamanho da tab. ENT
L #esp_rep_factor // Carrega tamanho da tab. ESP
<I // Verifica se ENT menor que ESP
JC REP1 // Se sim, pula para REP1
L #ep_rep_factor // Se no, carrega tamanho da tab.
EP
<I // E verifica se menor que ESP
JC REP2 // Se sim, pula para REP2
T #rep_factor // Se no, atribui a rep_factor tam.
de EP
JU INI // Pula para a prxima network

REP1: L #ent_rep_factor // Carrega tamanho da tab. ENT
L #ep_rep_factor // Carrega tamanho da tab. EP
<I // Verifica se ENT menor que EP
JC REP3 // Se sim, pula para REP3
T #rep_factor // Se no, atribui a rep_factor tam.
de EP
JU INI // Pula para a prxima network
REP2: L #esp_rep_factor // Carrega tamanho da tab. ESP
T #rep_factor // E atribui a rep_factor
JU INI // Pula para a prxima network
REP3: L #ent_rep_factor // Carrega tamanho da tab. ENT
T #rep_factor // E atribui a rep_factor
JU INI // Pula para a prxima network
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
56
Network 3 FC 43

INI: L #rep_factor //Inicia a network carregando o
fator de repetio adequado

IFG: 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 #ent_end //Incremento dos ponteiros
L P#4.0
+D
T #ent_end
L #esp_end
L P#4.0
+D
T #esp_end
L #ep_end
L P#4.0
+D
T #ep_end

L #contador //Decrementa o contador do loop
LOOP IFG
BEU //Fim de Bloco
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.
O passo final o incremento dos ponteiros para a prxima volta do loop. Faz-
se 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.
57
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).
58
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
59
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
60
Network 1 FC 44

L P##SUB //Carrega endereo do ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#0.0] //Carrega o nmero do DB
T #sub_dbn //Tranfere para a varivel local
L D [AR1,P#2.0] //Carrega informao do endereo
T #sub_end //Tranfere para a varivel local

L P##ATT //Carrega endereo do ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#2.0] //Carrega a word que contm o fator
de repetio
T #att_rep_factor //Transfere para a varivel local
L W [AR1,P#4.0] //Carrega o nmero de DB (se
existente, seno carrega zero)
T #att_dbn //Transfere para a varivel local
L D [AR1,P#6.0] //Carrega informao do endereo
T #att_end //Tranfere para att_end

L P##EP //Carrega endereo do ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#2.0] //Carrega a word que contm o fator
de repetio
T #ep_rep_factor //Transfere para a varivel local
L W [AR1,P#4.0] //Carrega o nmero de DB (se
existente, seno carrega zero)
T #ep_dbn //Transfere para a varivel local
L D [AR1,P#6.0] //Carrega informao do endereo
T #ep_end //Tranfere para ep_end

L P##EPT //Carrega endereo do ponteiro
LAR2 //Transfere para o AR2
L W [AR2,P#2.0] //Carrega a word que contm o fator
de repetio
T #ept_rep_factor //Transfere para a varivel local
L W [AR2,P#4.0] //Carrega o nmero de DB (se
existente, seno carrega zero)
T #ept_dbn //Transfere para a varivel local
L D [AR2,P#6.0] //Carrega informao do endereo
T #ept_end //Tranfere para ept_end

L 0 //Carrega o inteiro 0
T #dbbyte //Transfere para dbbyte

CALL FB 1 , DB1 //Chama FB 1, com DB instance 1
diferente de zero a varredura nos bits executada (somente da double word
diferente de zero).
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.
61
Network 2 FC 44

L #ep_rep_factor //Carrega tamanho da tab. EP
L #ept_rep_factor //Carrega tamanho da tab. EPT
<I //Verifica se EP menor que EPT
JC REP1 //Se sim, pula para REP1
T #rep_factor //Se no, atribui a rep_factor
tamanho da tab. EP
JU SEE //Pula para SEE (network seguinte)

REP1: L #ep_rep_factor //Carrega tamanho da tab. EP
T #rep_factor //E atribui a rep_factor
JU SEE //Pula para SEE (network seguinte)
Cada bit da tabela EP possui um espao reservado nesta rea de memria para que
seja armazenado o tempo de transio.
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
62
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 (t
a
) e tempo de transio (t
t
):
( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )

< +

=
0 ___ _______ 60
0 ___ _ __________
t a t a
t a t a
t c t c se t c t c
t c t c se t c t c
t d
O bit correspondente da tabela EPT s deve ser setado se:
( )
at
t t d
Onde t
at
representa o tempo de atraso definido como parmetro de entrada
da FC 44.
63
Network 3 FC 44

SEE: L #rep_factor //Carrega fator de repetio
VSZ: T #contador_2 //Transfere para o contador do loop
OPN DB [#ep_dbn]
LAR1 #ep_end //Verifica se a double word da tab.
EP zero
L D [AR1,P#0.0]
L 0
==D
JC IDOU //Se sim, pula para IDOU / Se no,
faz varredura nos bits

L 32 //Carrega com 32 (bits numa double)
IF1: T #contador //Carrega o contador do loop
OPN DB [#ep_dbn]
LAR2 #ep_end
A [AR2,P#0.0] //Carrega o ponto cujo endereo est
em ep_end
OPN DB [#sub_dbn]
LAR1 #sub_end //sub_end aponta para o estado de ep
no scan anterior
FP [AR1,P#0.0] //Verifica se houve transio
positiva
= #ciclo
JC MEMT //Se sim, pula para MEMT / Se no,
verifica se ep j est em 1

OPN DB [#ep_dbn]
A [AR2,P#0.0] //Verifica se ep est em 1
= #ciclo
JC SETA //Se sim, pula para SETA

OPN DB [#ept_dbn] //Se no
LAR1 #ept_end
R [AR1,P#0.0] //Reseta bit ept correspondente
JU IBIT //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

SETA: 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)

64
>=I //Verifica se a diferena maior ou
igual ao T_ATRASO
JC UM //Se sim, pula para UM
JU IBIT //Se no, pula para IBIT
UM: OPN DB [#ept_dbn]
LAR1 #ept_end
S [AR1,P#0.0] //Seta bit ept correspondente

IBIT: L #ep_end //Incremento dos ponteiros (para bits)
L P#0.1
+D
T #ep_end

L #ept_end
L P#0.1
+D
T #ept_end

L #sub_end
L P#0.1
+D
T #sub_end

L #att_end
L P#1.0
+D
T #att_end

L #contador //Decrementa o Contador do Loop
LOOP IF1
JU INCD //Pula para INCD, para decrementar o
contador_2

IDOU: OPN DB [#ept_dbn]
LAR1 #ept_end
L 0
T D [AR1,P#0.0] //Reseta a double apontada por ept_end

OPN DB [#sub_dbn]
LAR1 #sub_end
L 0
T D [AR1,P#0.0] //Reseta a double apontada por sub_end

L #ep_end //Incremento dos Ponteiros
L P#4.0
+D
T #ep_end

L #ept_end
L P#4.0
+D
T #ept_end

L #sub_end
L P#4.0
+D
T #sub_end

L #att_end
L P#32.0
+D
T #att_end

INCD: L #contador_2
LOOP VSZ

BEU

65
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 :
epb byp ept =
Tabela 6-3 Tabela Verdade da Operao



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).
ept byp epb
0 0 0
0 1 0
1 0 1
1 1 0
66
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.



67
Network 1 FC 45

L P##EPT //Carrega endereo do ponteiro EPT
LAR1 //Transfere para o AR1
L W [AR1,P#2.0] //Carrega o fator de repetio
T #ept_rep_factor //Transfere para uma varivel local
L W [AR1,P#4.0] //Carrega nro. do DB (se existente)
T #ept_dbn //Transfere para uma varivel local
L D [AR1,P#6.0] //Carrega informao de endereo
T #ept_end //Transfere para uma varivel local
L B [AR1,P#6.0] //Carrega informao de rea de mem.
T #ept_area //Transfere para uma varivel local

L P##BYP //Carrega endereo do ponteiro BYP
LAR1 //Transfere para o AR1
L W [AR1,P#2.0] //Carrega o fator de repetio
T #byp_rep_factor //Transfere para uma varivel local
L W [AR1,P#4.0] //Carrega nro. Do DB (se existente)
T #byp_dbn //Transfere para uma varivel local
L D [AR1,P#6.0] //Carrega informao de endereo
T #byp_end //Transfere para uma varivel local

L P##EPB //Carrega endereo do ponteiro EPB
LAR2 //Tranfere para o AR2
L W [AR2,P#2.0] //Carrega o fator de repetio
T #epb_rep_factor //Transfere para uma varivel local
L W [AR2,P#4.0] //Carrega nro. do DB (se existente)
T #epb_dbn //Transfere para uma varivel local
L D [AR2,P#6.0] //Carrega informao de endereo
T #epb_end //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 #ept_rep_factor
L #byp_rep_factor
<I
JC REP1
L #epb_rep_factor
<I
JC REP2
T #rep_factor
JU INI

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

INI: L #rep_factor //Carrega o menor fator de repetio

IF1: T #contador //Carrega o contador do loop

OPN DB [#byp_dbn] //Abre DB (se existente)
LAR1 #byp_end //Transfere o endereo do BYP p/ AR1
L D [AR1,P#0.0] //Carrega dword apontada por byp_end
INVD //Inverte BYP
OPN DB [#ept_dbn] //Abre DB (se existente)
LAR1 #ept_end //Transfere o endereo de EPT p/ AR1
L D [AR1,P#0.0] //Carrega dword apontada por ept_end
AD //Executa a lgica AND
OPN DB [#epb_dbn] //Abre DB (se existente)
LAR1 #epb_end //Transfere o endereo do EPB p/ AR1
T D [AR1,P#0.0] //Transfere resultado da lgica

L #ept_end //Seqncia de incr. dos ponteiros
L P#4.0
+D
T #ept_end

L #byp_end
L P#4.0
+D
T #byp_end

L #epb_end
L P#4.0
+D
T #epb_end

L #contador // Decrementa o contador do loop
LOOP IF1

BEU
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
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.
69
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).
70
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
71
Network 1 FC 46

L P##EPB //Carrega endereo do ponteiro
LAR1 //Transfere para AR1
L W [AR1,P#4.0] //Carrega nro. do DB
T #epb_dbn //Transfere p/ var. local
L D [AR1,P#6.0] //Carrega informao de endereo
T #epb_end //Transfere p/ var. local
L W [AR1,P#2.0] //Carrega fator de repetio
T #epb_rep_factor //Transfere p/ var. local

L P##REC //Carrega endereo do ponteiro
LAR1 //Transfere para AR1
L W [AR1,P#4.0] //Carrega nro. do DB
T #rec_dbn //Transfere p/ var. local
L D [AR1,P#6.0] //Carrega informao de endereo
T #rec_end //Transfere p/ var. local
L W [AR1,P#2.0] //Carrega fator de repetio
T #rec_rep_factor //Transfere p/ var. local

L P##EBS //Carrega endereo do ponteiro
LAR1 //Transfere para AR1
L W [AR1,P#4.0] //Carrega nro. do DB
T #ebs_dbn //Transfere p/ var. local
L D [AR1,P#6.0] //Carrega informao de endereo
T #ebs_end //Transfere p/ var. local
L W [AR1,P#2.0] //Carrega fator de repetio
T #ebs_rep_factor //Transfere p/ var. local
Network 2 FC 46

L #epb_rep_factor
L #rec_rep_factor
<I
JC REP1
L #ebs_rep_factor
<I
JC REP2
T #rep_factor
JU INI

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

INI: L #rep_factor //Carrega fator de repetio

ROT: T #contador //Transfere para o contador do loop
LAR1 #rec_end //Transfere rec_end p/ AR1
OPN DB [#rec_dbn] //Abre DB (se existente)
L D [AR1,P#0.0] //Carrega dword do REC
INVD //Faz complemento de 1 (inv. sinal)
LAR2 #epb_end //Transfere epb_end p/ AR2
OPN DB [#epb_dbn] //Abre DB (se existente)
L D [AR2,P#0.0] //Carrega dword de EPB
OD //Faz operao OU nas dwords

LAR1 #ebs_end //Transfere ebs_end p/ AR1
OPN DB [#ebs_dbn] //Abre DB (se existente)
L D [AR1,P#0.0] //Carrega dword de EBS
AD //Faz operao E nas dwords

OPN DB [#epb_dbn] //Abre DB (se existente)
L D [AR2,P#0.0] //Carrega dword de EPB
OD //Faz operao OU nas dwords
OPN DB [#ebs_dbn] //Abre DB (se existente)
T D [AR1,P#0.0] //Transfere resultado p/ EBS

L #epb_end //Incrementa ponteiros
L P#4.0
+D
T #epb_end

L #rec_end
L P#4.0
+D
T #rec_end

L #ebs_end
L P#4.0
+D
T #ebs_end

L #contador
LOOP ROT //Decrementa contador do loop

BEU //Fim de Bloco
(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.
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.
73
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
74
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.

75
Network 1 FB 47

L P##REC //Carrega o endereo do Ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#4.0] //Carrega nro. do DB (se existente)
T #rec_dbn //Transfere para varivel local
L D [AR1,P#6.0] //Carrega endereo inicial
T #rec_end //Transfere para varivel local
L W [AR1,P#2.0] //Carrega fator de repetio
T #rec_rep_factor //Transfere para varivel local

L P##EBS //Carrega o endereo do Ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#4.0] //Carrega nro. do DB (se existente)
T #ebs_dbn //Transfere para varivel local
L D [AR1,P#6.0] //Carrega endereo inicial
T #ebs_end //Transfere para varivel local
L W [AR1,P#2.0] //Carrega fator de repetio
T #ebs_rep_factor //Transfere para varivel local

L P##RECL //Carrega o endereo do Ponteiro
LAR1 //Transfere para o AR1
L W [AR1,P#4.0] //Carrega nro. do DB (se existente)
T #recl_dbn //Transfere para varivel local
L D [AR1,P#6.0] //
T #recl_end //Transfere para varivel local
L W [AR1,P#2.0] //
T #recl_rep_factor //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.

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
Network 2 FB 47

L #recl_rep_factor //Carrega tam. de REC
L #rec_rep_factor //Carrega tam. De REC
<I //REC < REC?
JC REP1 //Se sim, pula p/ REP1
L #ebs_rep_factor //Se no, carrega tam. EBS
<I //REC < EBS
JC REP2 //Se sim, pula p/ REP2
T #rep_factor //Se no, rep_factor = tam. EBS
JU INI //Pula p/ network seguinte

REP1: L #recl_rep_factor //Carrega tam. REC
L #ebs_rep_factor //Carrega tam. EBS
<I //REC < EBS?
JC REP3 //Se sim, pula para REP3
T #rep_factor //Se no, rep_factor = tam. EBS
JU INI //Pula p/ network seguinte
REP2: L #rec_rep_factor //Carrega tam. REC
T #rep_factor //rep_factor = tam. REC
JU INI //Pula p/ network seguite
REP3: L #recl_rep_factor //Carrega tam. REC
T #rep_factor //rep_factor = tam. REC
JU INI //Pula p/ network seguinte
76
Network 4 FB 47

A #onda.Q //Se a onda estiver em 1
JCN TMRZ //Vai para network 6, seno para a 5
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.

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.
77
Network 5 FB 47

L #rep_factor //Carrega fator de repetio
RREC: T #contador //Transfere p/ contador do loop
LAR1 #rec_end //Transfere rec_end p/ AR1
OPN DB [#rec_dbn] //Abre DB (se existente)
L D [AR1,P#0.0] //Carrega double da tab. REC
LAR2 #ebs_end //Transfere ebs_end p/ AR2
OPN DB [#ebs_dbn] //Abre DB (se existente)
L D [AR2,P#0.0] //Carrega double da tab. EBS
AD //Faz operao lgica E
LAR1 #recl_end //Transfere recl_end p/AR1
OPN DB [#recl_dbn] //Abre DB (se existente)
T D [AR1,P#0.0] //Transfere resultado da operao

L #rec_end //Incrementa ponteiros
L P#4.0
+D
T #rec_end

L #ebs_end
L P#4.0
+D
T #ebs_end

L #recl_end
L P#4.0
+D
T #recl_end

L #contador //Carrega contador
LOOP RREC //Decrementa contador

BEU //Fim de Bloco
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.

78
Network 6 FB 47

TMRZ: L #rep_factor //Carrega o fator de repetio
MV: T #contador //Transfere para o contador do loop

LAR2 #recl_end //Transfere recl_end p/ AR2
OPN DB [#recl_dbn] //Abre DB (se existente)
L D [AR2,P#0.0] //Carrega double de REC
LAR1 #rec_end //Transfere rec_end p/ AR1
OPN DB [#rec_dbn] //Abre DB (se existente)
T D [AR1,P#0.0] //Transfere para double de REC o
valor da double de REC

L #rec_end //Incremento dos ponteiros
L P#4.0
+D
T #rec_end

L #recl_end
L P#4.0
+D
T #recl_end

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).
1 1 lg sl ov s = +
Tabela 6-4 Operao OU entre SLG e OV1 gerando SL1
slg ov1 sl1
0 0 0
0 1 1
1 0 1
1 1 1
79


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.
80

Fig. 6.21 Tabela de declaraes do bloco FC 48

Network 3 FC 48

INI: L #rep_factor //Carrega fator de repetio

IF1: T #contador //Transfere p/ contador do loop
OPN DB [#slg_dbn] //Abre DB (se existente)
LAR1 #slg_end //Transfere slg_end p/ AR1
L D [AR1,P#0.0] //Carrega double de SLG
OPN DB [#ov1_dbn] //Abre DB (se existente)
LAR1 #ov1_end //Transfere ov1_end p/ AR1
L D [AR1,P#0.0] //Carrega double de OV1
OD //Executa operao OU
OPN DB [#sl1_dbn] //Abre DB (se existente)
LAR1 #sl1_end //Transfere sl1_end p/ AR1
T D [AR1,P#0.0] //Transfere resultado p/ SL1

L #slg_end //Incremento dos ponteiros
L P#4.0
+D
T #slg_end

L #ov1_end
L P#4.0
+D
T #ov1_end

L #sl1_end
L P#4.0
+D
T #sl1_end

L #contador //Carrega contador
LOOP IF1 //Decrementa contador e pula p/ IF1

BEU //Fim de Bloco
81
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.
slo ov sl = 0 1
Tabela 6-5 Tabela Verdade da Operao



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.
sl1 ov0 slo
0 0 0
0 1 0
1 0 1
1 1 0
82
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
83
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.
sai ssp slo =
Tabela 6-6 Operao OU EXCLUSIVO entre SLO e SSP gerando SAI



slo ssp sai
0 0 0
0 1 1
1 0 1
1 1 0
Network 3 FC 49

INI: L #rep_factor //Carrega fator de repetio

IF1: T #contador //Transfere p/ contador do loop
OPN DB [#ov0_dbn] //Abre DB (se existente)
LAR1 #ov0_end //Transfere ov0_end para AR1
L D [AR1,P#0.0] //Carrega double de ov0
INVD //Inverte sinal de OV0
OPN DB [#sl1_dbn] //Abre DB (se existente)
LAR1 #sl1_end //Transfere sl1_end p/ AR1
L D [AR1,P#0.0] //Carrega double de SL1
AD //Faz lgica E
OPN DB [#slo_dbn] //Abre DB (se existente)
LAR1 #slo_end //Transfere slo_end p/ AR1
T D [AR1,P#0.0] //Transfere resultado p/ SLO

L #sl1_end //Incremento dos ponteiros
L P#4.0
+D
T #sl1_end

L #ov0_end
L P#4.0
+D
T #ov0_end

L #slo_end
L P#4.0
+D
T #slo_end

L #contador //Carrega contador
LOOP IF1 //Decrementa contador e pula p/ IF1

BEU //Fim de Bloco
84

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
85
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: L #rep_factor //Carrega fator de repetio

IF1: T #contador //Transfere para contador do loop
OPN DB [#slo_dbn] //Abre DB (se existente)
LAR1 #slo_end //Transfere sl0_end para AR1
L D [AR1,P#0.0] //Carrega double word de SLO
OPN DB [#ssp_dbn] //Abre DB (se existente)
LAR1 #ssp_end //Transfere ssp_end para AR1
L D [AR1,P#0.0] //Carrega double word de SSP
XOD //Faz operao OU EXCLUSIVO
OPN DB [#sai_dbn] //Abre DB (se existente)
LAR1 #sai_end //Transfere sai_end para AR1
T D [AR1,P#0.0] //Transfere resultado para SAI

L #slo_end //Incremento dos ponteiros
L P#4.0
+D
T #slo_end

L #ssp_end
L P#4.0
+D
T #ssp_end

L #sai_end
L P#4.0
+D
T #sai_end

L #contador //Carrega contador
LOOP IF1 //Decrementa contador e pula p/ IF1

BEU
86
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.
87
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
88
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
89
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.





90
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
91
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.
92
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.
93
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.
94
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
95
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>
96
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)
97
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.

Você também pode gostar