|
<< 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 pela aplicação após cada download bem-sucedido 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, ou seja, a variável W03 igual à variável W04. Antes de executar o download do buffer, a aplicação consulta o contador de overflow e, se é diferente de 0 (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 pela aplicação, um DWord de 32 bits, deve ser zerada pelo CLP quando ligado e é atualizado pela aplicação após cada download 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 pela aplicação caso haja overflow do buffer circular
•W08/W09 (endereço 8210h/8212h): Próxima base de tempo a ser utilizada, um DWord de 32 bits, deve ser zerada pelo CLP quando ligado. A aplicação 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 um 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 por uma 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 os índices de leitura e escrita retornando a 0 (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 9 (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 9 (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 por uma 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, ou seja, a 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 à aplicação o overflow do buffer circular, informação crucial na validação dos dados.
O CLP registra a data base para a aplicação junto com os eventos de sincronização. Isto permite que uma aplicação que esteja desligado possa interpretar corretamente o contador de centésimos dos eventos do buffer.
O armazenamento da última base de tempo utilizada pela aplicação, as variáveis W06 ou W07, permite que uma aplicação seja interrompida e reiniciada 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 uma aplicação 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, ou seja, as variáveis W06 ou W07.
Quando há mais de uma aplicação, deve ser criado um mecanismo de comunicação entre os CLPs de forma que, quando uma das aplicações 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 uma aplicação atualize a base de tempo de todos os CLPs sem a necessidade de que todas as aplicações estejam ativas.