Preparando a Coleta SOE

<< Clique para Mostrar o Sumário >>

 

Preparando a Coleta SOE

Antes de utilizar os Tags de Coleta SOE, é preciso preparar o CLP com a construção de uma Tabela DB (área V) e o desenvolvimento de uma lógica programável compatível com os procedimentos de coleta SOE desenvolvida para este Driver.

 

Tabela de Eventos do SOE

Esta tabela tem como objetivo dimensionar o tamanho do buffer de eventos e gerenciar a entrada e a saída destes em uma rotina de buffer circular. Esta tabela é constantemente atualizada, tanto pelo CLP quanto pelo Driver Siemens MProt (MPI/PPI/ISO-TCP).

A Tabela de Eventos SOE deve conter registros de controle e de armazenamento dos eventos, com base na estrutura de dados descrita na tabela a seguir.

Estrutura de dados

Endereço

Descrição

Tipo de Dados

0.0

 

STRUCT

+0.0

Status da tabela

WORD (16 bits sem sinal)

+2.0

Ponteiro de gravação

WORD (16 bits sem sinal)

+4.0

Status da aquisição

WORD (16 bits sem sinal)

+6.0

Limite máximo de itens do buffer circular

WORD (16 bits sem sinal)

+8.0

Buffer circular

ARRAY[1..n] (limite de itens definido pelo usuário)

 +0.0

 

STRUCT

 +0.0

TIMESTAMP_LOLO (ano)

  WORD (16 bits sem sinal)

 +2.0

TIMESTAMP_LOHI (dia e mês)

  WORD (16 bits sem sinal)

 +4.0

TIMESTAMP_HILO (hora e minuto)

  WORD (16 bits sem sinal)

 +6.0

TIMESTAMP_HIHI (segundo e milissegundo)

  WORD (16 bits sem sinal)

 +8.0

 Valor do tipo de evento 1 (um)

   Tipo de dados do evento (definido pelo usuário)

 +n.0

 Valor do tipo de evento 2 (dois)

   Repete o mesmo tipo de dados

 +n.0

 Valor do tipo de evento 3 (três)

   Repete o mesmo tipo de dados

 +n.0

 Valor do tipo de evento n

   Repete o mesmo tipo de dados

 =n.0

 

END_STRUCT

=n.0

 

END_STRUCT

 

Descrição dos Registros de Controle dos Eventos

Status da Tabela: Deve ser mantido exclusivamente pelo CLP, indicando o número de eventos disponíveis para a leitura no buffer circular. Deve ser atualizado pelo CLP sempre que novos eventos são adicionados ao buffer circular, ou após a conclusão da coleta de eventos pela aplicação, o que pode ser detectado pela mudança no Status da Aquisição

Ponteiro de Gravação: Deve ser mantido exclusivamente pelo CLP, indicando o índice, começando em 0 (zero), da posição onde deve ser inserido o próximo evento. O índice deve ser incrementado pelo CLP a cada nova inserção de eventos no buffer circular, voltando ao índice 0 (zero) após alcançar o limite máximo do buffer circular

Status da Aquisição: Deve ser mantido pelo CLP em conjunto com o Driver Siemens MProt (MPI/PPI/ISO-TCP), indicando o número de registros já lidos a cada transação. Após cada coleta, o Driver Siemens MProt (MPI/PPI/ISO-TCP) escreve neste registro o número de eventos que conseguiu ler. Ao detectar esta modificação, o CLP deve imediatamente descontar este valor escrito pelo Driver Siemens MProt (MPI/PPI/ISO-TCP) do Status da Tabela, e então zerar o Status da Aquisição

Limite Máximo de Itens do Buffer Circular: Valor constante que especifica o limite máximo de eventos a armazenar no buffer circular antes do ponteiro voltar para o índice 0 (zero). Deve conter exatamente o valor limite do Array dimensionado para os eventos do buffer circular

 

Descrição dos Registros de Armazenagem dos Eventos

TIMESTAMP: Horário da ocorrência do evento

Valor do Evento: Valor do evento ocorrido, que pode ser composto por um ou n valores, todos com o mesmo tipo de dados, e que são agrupados para o mesmo TIMESTAMP gerado na ocorrência de um evento

 

Formato do TIMESTAMP

O TIMESTAMP é representado por quatro Words, conforme a estrutura de dados descrita na tabela a seguir.

Estrutura de dados

Word

Conteúdo

Intervalo

0

Ano

Entre 0 (zero) e 65535

1

Dia e mês

ddddddddmmmmmmmm

2

Hora e minuto

hhhhhhhhmmmmmmmm

3

Segundo e milissegundo

ssssssmmmmmmmmmm

 

O primeiro Word contém um valor inteiro referente ao ano

O segundo Word está dividido em parte alta para representar o dia e em parte baixa para representar o mês

O terceiro Word está dividido em parte alta para representar as horas e em parte baixa para representar os minutos

O quarto Word usa os seis bits mais altos para representar os segundos e os 10 bits mais baixos para representar os milissegundos

 

Procedimento de Aquisição

O CLP deve iniciar a inserção dos eventos no sentido crescente, a partir do endereço base da tabela, referente ao início do buffer circular. A cada novo evento inserido, o ponteiro de gravação deve ser incrementado, passando a apontar para o próximo endereço disponível do buffer.

Este Driver executa a leitura do evento mais antigo para o mais recente. O endereço do início da leitura é calculado por este Driver através do valor do Ponteiro de Gravação e do Status da Tabela.

Se o número de eventos disponíveis é maior que o máximo permitido em um único frame de comunicação do protocolo, este Driver executa múltiplas leituras em bloco, atualizando o valor do Status da Aquisição no final do processo com o número total de eventos lidos.

Ao detectar que este Driver escreveu um valor maior que 0 (zero) no Status da Aquisição, o CLP deve imediatamente subtrair o valor do Status da Aquisição do valor do Status da Tabela e zerar o Status da Aquisição.

O CLP pode inserir novos eventos na tabela durante o processo de aquisição pelo CLP, desde que não ocorra overflow do buffer circular, incrementando o Status da Tabela.

A figura a seguir apresenta um pequeno fluxograma, em formato de Diagrama de Atividades UML, com uma sugestão de implementação para a lógica do CLP.

Fluxograma SOE

Fluxograma SOE

Esta página foi útil?