Considerações Sobre o Processamento de Eventos no Programa do CLP

<< Clique para Mostrar o Sumário >>

 

Considerações Sobre o Processamento de Eventos no Programa do CLP

O programa do CLP deve manter as variáveis a seguir.

W03 (endereço 8206h): Apontador de escrita do buffer circular, deve ser atualizado pelo programa do CLP sempre que um novo evento é adicionado ao buffer

W04 (endereço 8208h): Apontador de leitura do buffer circular, deve ser zerado pelo CLP quando ligado e é atualizado pelo supervisório após cada baixa bem sucedida do buffer

W05 (endereço 820Ah): Contador de overflow do buffer circular, deve ser zerado pelo CLP quando ligado. Sempre que o CLP adicionar um evento ao buffer, deve incrementar o contador de overflow caso o buffer tenha estourado (variável W03 igual à variável W04). Antes de baixar o buffer, o supervisório consulta o contador de overflow e, se estiver diferente de zero, então o apontador de leitura é desconsiderado e o buffer inteiro é considerado válido

W06/W07 (endereço 820Ch/820Eh): Última base de tempo utilizada pelo supervisório (DWord de 32 bits), deve ser zerada pelo CLP quando ligado e é atualizado pelo supervisório após cada baixa do buffer. A variável W06 contém os 16 bits menos significativos e a variável W07 os 14 bits mais significativos. Esta base é desconsiderada pelo supervisório caso haja overflow do buffer circular

W08/W09 (endereço 8210h/8212h): Próxima base de tempo a ser utilizada (DWord de 32 bits), deve ser zerada pelo CLP quando ligado. O supervisório escreve nestas memórias antes de enviar um comando de sincronização de relógio, que consiste na ativação de uma saída de um dos CLPs conectada a uma entrada específica em todos os outros CLPs. A ativação desta entrada nos CLPs deve ser interpretada como um comando de sincronização de relógio. Quando o CLP recebe um comando de sincronização, deve adicionar ao buffer um evento de troca de base de tempo, o evento de sincronização, contendo o valor destas memórias. A variável W08 contém os 16 bits menos significativos e a variável W09 os 14 bits mais significativos. Este comando deve ser acionado periodicamente pela aplicação da Elipse Software, devido à imprecisão dos relógios dos controladores

 

NOTA

As bases de tempo (DWord de 32 bits) contêm o número de segundos passados desde 1/1/1998 00:00:00. Apenas os 30 bits menos significativos são utilizados, constituindo um intervalo de datas representáveis entre 01/01/1998 00:00:00 e 10/01/2032 13:37:03. O CLP não precisa manipular estes números, apenas copiá-los quando necessário.

 

BUFFER (endereço 8A00h em diante): Buffer de armazenamento de eventos. Trata-se de um buffer circular, com seus índices de leitura e escrita retornando a zero após ultrapassar o final. O espaço a ser alocado para este buffer depende do número máximo de eventos definido nos parâmetros de configuração extras deste Driver

 

Cada evento possui dois Words de 32 bits. Os dois bits mais significativos indicam o tipo de evento:

00 (canal em zero): Os nove bits menos significativos do primeiro Word indicam o endereço da entrada que gerou o evento e o segundo Word contém o valor do contador de centésimos no momento do evento

01 (canal em um): Os nove bits menos significativos do primeiro Word indicam o endereço da entrada que gerou o evento e o segundo Word contém o valor do contador de centésimos no momento do evento

10: Overflow no contador de centésimos

11 (sincronização): Mudança na base de tempo. Os 14 bits menos significativos do primeiro Word contém os bits (de 16 a 30) do novo tempo base e o segundo Word contém os 16 bits menos significativos do novo tempo base. Este evento é normalmente ativado periodicamente pela aplicação da Elipse Software, ativando uma saída de um dos CLPs, que por sua vez está ligada a uma entrada específica de cada CLP, que quando ativada é interpretada pela aplicação do CLP como um evento de sincronização

 

As tarefas do programa do CLP são as seguintes:

Ao ligar: Zerar as memórias de W04 a W09

Após adicionar um evento no buffer de memória: Verificar se houve overflow (variável W03 igual à variável W04) e, em caso positivo, incrementar a variável W05

 

O apontador de leitura permite ao CLP detectar e sinalizar ao supervisório o overflow do buffer circular, informação crucial na validação dos dados.

O CLP registra a data base para o supervisório junto com os eventos de sincronização. Isto permite que um supervisório que esteja desligado possa interpretar corretamente o contador de centésimos dos eventos do buffer.

O armazenamento da última base de tempo utilizada pelo supervisório, as variáveis W06 ou W07, permite que o supervisório seja interrompido e reiniciado a qualquer momento. Eventos não são perdidos e os registros de tempo são completamente confiáveis. A única perda ocorre se há overflow no buffer do CLP.

A indicação de overflow da memória permite que o supervisório tente recuperar um número maior de eventos, pois quando isto ocorre o contador de leitura é desconsiderado e todo o buffer é lido. Esta indicação também valida ou não a última base de tempo utilizada por este Driver (variáveis W06 ou W07).

Quando há mais de um supervisório, deve ser criado um mecanismo de comunicação entre os CLPs de forma que, quando um dos supervisórios sincronizar o relógio, este possa passar para um dos CLPs a nova base de tempo e este CLP informe aos outros CLPs na rede a nova base de tempo, copiando o conteúdo das variáveis W08 e W09. Isto permite que um supervisório atualize a base de tempo de todos os CLPs sem a necessidade de que todos os supervisórios estejam ativos.

Esta página foi útil?