• Nenhum resultado encontrado

A lógica de controle ficou muito mais clara do que a implementada anteriormente. A principal vantagem advinda do Sistema de Tratamento dos Pontos de Entrada e Saída é a rapidez de execução e a clareza da lógica. Agora, basta descrever a área de memória onde os pontos estão alocados e reservar uma área de memória para algumas tabelas auxiliares. O uso dos ponteiros ANY é fundamental nesta tarefa. Qualquer lugar de memória pode alocar os pontos envolvidos na operação pois os blocos de programa foram desenvolvidos para lidar com esta variedade.

No entanto, o entendimento da lógica por parte da Petrobras é essencial para que o Sistema seja aprovado para uso na plataforma. As providências para que isso ocorra estão sendo tomadas por aqueles que trabalham diretamente na plataforma P-43. É a primeira vez que estas especificações estão 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 Niterói) para garantir a viabilidade do sistema. Um dos problemas que pode ocorrer é o excessivo tempo de execução da lógica. Nos testes feitos em laboratório isto não ocorreu porque o número de pontos simulados na entrada do sistema foi muito inferior ao que será na prática. A relação direta entre tamanho de tabelas e tempo de execução não foi encontrada. Se necessário, algumas alterações deverão ser executadas nos blocos mais críticos, principalmente no FC 44 e FB 47, visivelmente os “gargalos” do sistema pela presença de temporização.

O Sistema de Tratamento de Entradas e Saídas é um passo em busca do mais importante em plataformas de petróleo: a segurança. Ele foi praticamente todo desenvolvido em STL, linguagem que otimiza utilização do espaço e faz programas mais velozes, especialmente porque esta era uma das partes críticas do projeto. O que se buscou em todos os momentos foi a robustez e a simplicidade do programa. Isto foi alcançado graças ao uso intensivo dos diversos tipos de ponteiros

disponíveis, da organização interna dos blocos (todos seguem um padrão) e da divisão do sistema em subtarefas (um bloco para cada operação lógica).

Com esta simplicidade e organização espera-se que, com os testes que serão realizados em plataforma, o Sistema de Tratamento dos Pontos de Entrada e Saída possa cumprir fielmente com o papel para o qual foi desenvolvido.

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 Automação Industrial”, LTC, 2001.

[5] SIMATIC System Software for S7-300/400 System and Standard Functions, 2002.

Anexo A — Instruções STL utilizadas

Neste anexo estão listadas as instruções utilizadas nos blocos do Sistema de Tratamento dos Pontos de Entrada e Saída, com seus respectivos formatos e descrições.

• Instruções Lógicas de Bit:

1. A (AND) Formato: A <Bit>

Descrição: A instrução A verifica se o estado do bit endereçado é “1” e faz a lógica AND com o bit RLO.

2. R (RESET) Formato: R <Bit>

Descrição: A instrução R escreve “0” no bit endereçado se o RLO = 1. 3. S (SET)

Formato: S <Bit>

Descrição: A instrução S escreve “1” no bit endereçado se o RLO = 1. 4. = (ATRIBUIÇÃO)

Formato: = <Bit>

Descrição: A instrução = escreve o conteúdo de RLO no bit endereçado.

5. FP (SENSOR DE TRANSIÇÃO POSITIVA) Formato: FP <Bit>

Descrição: A instrução FP detecta uma borda positiva quando o RLO transiciona de “0” para “1” e indica isso escrevendo “1” em RLO.

Durante cada ciclo de varredura, o estado de RLO é comparado com o obtido no ciclo anterior para verificar se houve mudança de estado. O estado anterior de RLO é armazenado no endereço indicado por <Bit> para se fazer a comparação.

• Instruções de Salto: todas as intruções de salto utilizam como parâmetro um jump label. Este jump label pode ter no máximo quatro caracteres e o primeiro deles deve ser uma letra. São seguidos obrigatoriamente por “:” e devem preceder a instrução de programa.

1. JU (Jump Unconditional) Formato: JU <jump label>

Descrição: A instrução JU interrompe o funcionamento seqüencial 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 instrução, porém deve estar no mesmo bloco de programa. 2. JC (Jump Conditional)

Formato: JC <jump label>

Descrição: A instrução JC interrompe o funcionamento seqüencial do programa e salta para <jump label> se RLO = 1.

3. JCN (Jump if RLO = 0)

Descrição: A instrução JCN interromper o funcionamento seqüencial do programa e salta para <jump label> se RLO = 0.

• Instruções com Double Words, Word e Bytes:

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

Descrição: Esta instrução compara o conteúdo do ACCU 1 com o conteúdo do ACCU 2. Se ambos são iguais, RLO é escrito com “1”. 2. +D (Adição com Double Integer)

Formato: +D

Descrição: Esta instrução soma o conteúdo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. O conteúdo dos acumuladores é interpretado como inteiros de 32 bits.

3. <I (Compara Integer) Formato: <I

Descrição: Esta instrução verifica se o conteúdo, interpretado como um número inteiro, de ACCU 2-L é menor do que o de ACCU 1-L.

4. >=I (Compara Integer) Formato: >=I

Descrição: Esta instrução verifica se o conteúdo, interpretado como um número inteiro, de ACCU 2-L é maior ou igual do que o de ACCU 1-L. 5. –I (Subtração Integer)

Formato: –I

Descrição: Esta instrução subtrai o conteúdo de ACCU 1-L do conteúdo de ACCU 2-L e armazena o resultado em ACCU 1-L.

6. L (Load)

Formato: L <address>

Descrição: Esta instrução carrega o byte, word ou double word endereçado no ACCU 1 depois de o antigo conteúdo deste ser copiado para ACCU 2 e de o ACCU ser resetado para “0”.

7. T (Transfer)

Descrição: Esta instrução copia o conteúdo do ACCU1 para o destino endereçado por <address>. O número de bytes copiado para o destino depende do tamanho expressado no endereço de destino.

8. LAR1 ou LAR2 (Load AR1 or AR2) Formato: LAR1 <D>

Descrição: Esta instrução carrega o registrador AR1 com o conteúdo da double word <D> ou do ponteiro.

9. TAK (Toggle Accu 1 with Accu 2) Formato: TAK

Descrição: Esta instrução troca o conteúdo dos acumuladores ACCU 1 e ACCU 2.

10. INVD (Complemento de um de double interger) Formato: INVD

Descrição: Esta instrução forma o complemento de “1” do conteúdo de ACCU 1. Isto inverte o valor, bit a bit, do conteúdo de ACCU 1.

11. AD (And double word) Formato: AD

Descrição: Faz a operação booleana E entre o conteúdo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1.

12. OD (Or double word) Formato: OD

Descrição: Faz a operação booleana OU entre o conteúdo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1.

13. XOD (Exclusive OR double word) Formato: XOR

Descrição: Faz a operação booleana OU EXCLUSIVO entre o conteúdo de ACCU 1 e ACCU 2 e armazena o resultado em ACCU 1. 14. OPN (Open a data block)

Formato: OPN <data block>

Descrição: Esta instrução armazena <data block> no registrador de DB. Este DB pode ser Compartilhado ou Instance.

15. LOOP (Faz o Loop) Formato: LOOP <jump label>

Descrição: Esta instrução decrementa ACCU 1-L e salta para <jump label> se ACCU 1-L for diferente de zero.

16. BEU (Block End Unconditional) Formato: BEU

Descrição: Encerra o processamento do bloco atual e salta para o bloco que chamou o atual. A varredura recomeça na instrução imediatamente subseqüente à que chamou o bloco.

17. CALL (Block Call)

Formato: CALL <logic block indentifier>

No documento Ricardo s. Santos Prh34 Ufsc Das g (páginas 97-104)

Documentos relacionados