Tabela de Eventos |
Topo Anterior Próximo |
Como já mencionado no tópico Algoritmo de Leitura de SOE Genérico da Elipse Software, cada tabela de eventos mantém os eventos em um buffer circular. O buffer circular de cada tabela é definido pelo seu endereço inicial, ou endereço base, contíguo aos registradores de controle, e por seu número máximo de registros, que define seu limite final. A tabela a seguir ilustra a disposição dos eventos dentro do buffer circular de uma tabela. Disposição de eventos do buffer circular
Cada linha da tabela anterior representa um evento armazenado, normalmente representado por uma estrutura, ou por Tipos de Dados Definidos pelo Usuário. Note que, no exemplo da tabela anterior, o primeiro elemento da estrutura dos eventos é o timestamp. Este campo, cuja presença não é obrigatória, e que não necessariamente precisa aparecer na primeira posição, define a propriedade Timestamp do Tag, não sendo retornado em seus Elementos (para mais informações, veja o tópico Tipos de Dados Definidos pelo Usuário). É possível também definir eventos com tipos de dados nativos do Driver, e neste caso tem-se apenas um Elemento de dado em cada evento, sem timestamp. Os eventos devem ser inseridos no buffer circular em ordem crescente, retornando ao endereço base após atingir o limite superior do buffer circular. Os seguintes registros de controle devem ser definidos para cada tabela: ·Status da tabela: Deve ser mantido pelo CLP, indicando o número de eventos disponíveis para a leitura no buffer circular. Deve ser atualizado pelo dispositivo sempre que novos eventos forem adicionados ao buffer circular, ou após a conclusão da coleta de eventos pela aplicação, o que pode ser detectado pelo Status da aquisição ·Ponteiro de gravação: Este valor indica o índice, começando em 0 (zero), da posição onde o dispositivo deve inserir o próximo evento. Deve ser incrementado pelo dispositivo a cada nova inserção de eventos no buffer circular, voltando ao endereço base após alcançar o limite superior do buffer. Note que este valor não deve ser fornecido em unidades de registradores Modbus, mas sim em posições de eventos, devendo ser incrementado em uma unidade a cada novo evento inserido, independente do número de registradores Modbus ocupados para cada evento no buffer circular. Com isto, o valor máximo permitido para este ponteiro pode ser dado pela fórmula MaxWritePtr = (Tamanho do buffer circular / Tamanho da estrutura de evento) - 1 ·Status da aquisição: Indica o número de registros já lidos pelo Driver a cada leitura individual de eventos. Após cada leitura, o Driver escreve neste registro o número de registros que conseguiu ler. O aplicativo residente no escravo (ladder) deve então imediatamente subtrair o valor escrito pelo Driver do Status da tabela e então zerar o Status da aquisição ·Reservado: Este registrador atualmente não é utilizado. Pode ser usado em futuras versões do Driver, podendo ser deixado em 0 (zero) na versão atual
Conforme já mencionado, o endereço base do buffer circular, ou seja, o endereço onde inicia a tabela de eventos, deve ser contíguo aos registradores de controle. Já os registradores de controle devem estar dispostos também em endereços contíguos, na ordem apresentada anteriormente, permitindo sua leitura em uma única operação, ou seja, supondo-se que o endereço base dos registradores de controle para uma determinada tabela seja 100, tem-se os seguintes endereços para os demais registradores: Endereços de registradores
No tópico Procedimento de Aquisição no CLP é descrito passo a passo o procedimento ou algoritmo de aquisição sob o ponto de vista do equipamento escravo (CLP). No tópico seguinte, Procedimento de Aquisição na Aplicação, discute-se como configurar a aplicação para a aquisição dos eventos da tabela. |