|
<< Clique para Mostrar o Sumário >>
Procedimento de Aquisição na Aplicação |
Neste tópico é detalhada a configuração de uma aplicação para a aquisição dos eventos acumulados no CLP ou dispositivo escravo programável.
A leitura dos eventos em uma aplicação é realizada por meio de Tags que usam a função especial de leitura Gen SOE. O tipo de dados do Tag define a estrutura dos eventos armazenados na tabela de um equipamento. Se um tipo de dados nativo deste Driver, ou built-in type, é definido, cada evento tem apenas um elemento deste tipo de dados, sem estampa de tempo fornecida pelo CLP, pois a estampa de tempo representa o momento da coleta dos eventos. Por outro lado, se são usados tipos de dados definidos pelo usuário, é possível definir estruturas para os eventos, incluindo estampas de tempo, como visto mais adiante neste tópico.
A seguir é descrita a configuração dos Tags tanto na nova metodologia de configuração por Strings, os campos Dispositivo e Item, como na antiga configuração numérica do Elipse SCADA, os parâmetros N e B.
•Dispositivo: "<Slave Id>:"
•Item: "elsoe<N>.<end. inicial>[.<tipo>[<tam. do tipo>]][.<byte order>][/bit]"
Onde:
•N: Tamanho da tabela no dispositivo, em número máximo de eventos comportados
•end. inicial: Endereço do primeiro registro de controle, usando o valor definido na tabela exemplo do tópico Tabela de Eventos
•tipo: Tipo de dados nativo ou do usuário usado para cada evento. Para mais informações, consulte o tópico Configuração por Strings
•tam. do tipo: Usado apenas para tipos de dados de tamanho variável. Para mais informações, consulte o tópico Configuração por Strings
•byte order: Ordenamento de bytes. Deve ser omitido para equipamentos que seguem plenamente o padrão do protocolo. Para mais informações, consulte o item Byte Order no tópico Configuração por Strings. Quando são usadas estruturas, afeta apenas os elementos individuais. Para mais informações, consulte o tópico Tipos de Dados Definidos pelo Usuário
•bit: Mascaramento de bits. Em geral pode ser omitido, dificilmente seria usado aqui. Para mais informações, consulte o campo Bit no tópico Configuração por Strings
Exemplo:
•Dispositivo: "1:"
•Item: "elsoe150.&h101.TYPE3"
O tipo TYPE3 está definido da seguinte forma no arquivo padrão de exemplo do Driver. Para mais informações, consulte o tópico Tipos de Dados Definidos pelo Usuário.
// This type has an UTC32-type timestamp
// and a few named elements
struct TYPE3
{
DefaultAddress = 0x101;
timestamp = UTC32;
float Va;
float Vb;
float Vc;
float Ia;
float Ib;
float Ic;
}
Trata-se, portanto, de um tipo de dados Estrutura com 6 (seis) campos de dados e estampa de tempo. Daí deduz-se que o Tag deve ser um Bloco com 6 (seis) Elementos para representar esta estrutura.
Note que, conforme já explicado, o valor da estampa de tempo, embora ocupe registros no CLP, não necessita de Elementos de Tag Bloco, pois o valor é retornado na propriedade Timestamp do Tag.
NOTA |
O parâmetro N informa o tamanho da tabela em número máximo de eventos suportados, e não em registros Modbus. Em conjunto com o parâmetro Endereço Inicial, informa indiretamente o endereço final ou limite superior da tabela. O tamanho da área de dados da tabela, portanto, em número de registros Modbus, é o produto de N pelo tamanho de cada evento em número de registros Modbus, ou seja, em Words de 16 bits. |
Para configurar Tags de leitura de Elipse SOE usando a configuração numérica, é necessário configurar uma operação na aba Operations usando a função especial GenSOE.
A figura a seguir mostra um exemplo de adição de operação utilizando a função especial GenSOE com o tipo de dados Word.

Função especial GenSOE
Note que foi selecionada a função 16 (Write Multiple Registers) como função de escrita, que é a função mais comum. No entanto, recomenda-se o uso da função 06 (Write Single Register) sempre que seja suportada por um equipamento.
A figura a seguir mostra a mesma operação com o tipo de dados definido pelo usuário TYPE3, que é um tipo de dados definido no arquivo de configuração de exemplo, disponível com este Driver e que é usado como exemplo neste tópico. Para mais informações, consulte o tópico Tipos de Dados Definidos pelo Usuário.

Configuração com a função GenSOE e um tipo de dados definido pelo usuário
O tipo de dados TYPE3 está definido da seguinte forma no arquivo de exemplo deste Driver:
// This type has an UTC32-type timestamp
// and a few named elements
struct TYPE3
{
DefaultAddress = 0x101;
timestamp = UTC32;
float Va;
float Vb;
float Vc;
float Ia;
float Ib;
float Ic;
}
Trata-se, portanto, de um tipo de dados Estrutura com 6 (seis) campos de dados e estampa de tempo, e com endereço padrão, o parâmetro B4 do Tag, igual a "101H", ou 257 em decimal. Para a leitura, portanto, é preciso definir um Tag Bloco de 6 (seis) Elementos com a seguinte configuração:
•B1: Endereço do dispositivo escravo (CLP) na rede (Slave Id)
•B2: 8 (operação definida anteriormente com a função especial GenSOE)
•B3: N (tamanho da tabela no dispositivo, em número máximo de eventos comportados)
•B4: 100 (endereço do primeiro registro de controle, usando o valor definido na tabela exemplo do tópico Tabela de Eventos)
•Size: 6 (seis)
NOTA |
O parâmetro B3 informa o tamanho da tabela em número máximo de eventos suportados, e não em registros Modbus. Em conjunto com o parâmetro B4, informa indiretamente o endereço final ou limite superior da tabela. O tamanho da área de dados da tabela, portanto, em número de registros Modbus, é o produto de B3 pelo tamanho de cada evento em número de registros Modbus, ou seja, em Words de 16 bits. |
Note que, caso o Tag Browser do Elipse E3, do Elipse Power ou do Elipse Water seja usado para inserir o Tag em uma aplicação, como explicado no tópico Tipos de Dados Definidos pelo Usuário, Elementos do Tag já são nomeados conforme o nome dado aos elementos da estrutura na declaração. O Tag Browser pode ser aberto clicando-se em
na aba Design deste Driver.
Uma vez tendo definido o Tag, ou Tags, apropriado, habilite a varredura e deixe com este Driver a tarefa de coletar os eventos da respectiva tabela, sempre que novos eventos sejam detectados.
Tags associados à função GenSOE, ou elsoe na configuração por Strings, são sempre reportados a eventos. Isto significa, conforme já explicado no tópico Tipos de Dados Definidos pelo Usuário, que é possível a este Driver retornar vários eventos em uma única operação de leitura, ou seja, em um único intervalo da varredura do Tag.
Isto significa que este Driver retorna o conjunto de eventos, ou no caso do exemplo anterior conjuntos de blocos com 6 (seis) campos de dados e estampa de tempo, de uma só vez, o que produz uma sequência de eventos OnRead no Tag, um para cada evento, ou bloco com 6 (seis) campos de dados e estampa de tempo, retornado por este Driver.
Para instruções detalhadas sobre a maneira correta de tratar Tags reportados a eventos, consulte o tópico Tags Reportados por Evento no Manual do Usuário do Elipse E3. O Manual do Usuário do Elipse SCADA também possui um tópico análogo.
Em suma, a forma usual de tratar Tags reportados a eventos é inserir no evento OnRead o método WriteRecord do objeto Histórico previamente associado, garantindo assim a gravação de todos os eventos que cheguem ao Histórico. Neste caso, o Histórico deve ser configurado sem banda morta, ou seja, configurar a propriedade DeadBand com o valor 0 (zero), e desabilitar o histórico por scan, ou seja, no Elipse E3, no Elipse Power ou no Elipse Water configurar a propriedade ScanTime com o valor 0 (zero). A propriedade EnableDeadBand do Tag também deve ser configurada para Falso.
IMPORTANTE |
Ao ler eventos de memória de massa em Tags reportados a eventos no Elipse E3, no Elipse Power ou no Elipse Water, desabilite a banda morta do Tag, ou seja, configure a propriedade EnableDeadBand como Falso, e também no objeto Histórico associado, ou seja, configure a propriedade DeadBand com o valor 0 (zero), para evitar a perda de eventos com valores próximos. Também é importante desabilitar o histórico por varredura, ou seja, no Elipse E3, no Elipse Power ou no Elipse Water configure a propriedade ScanTime com o valor 0 (zero). Com isto, garante-se que novos eventos só são armazenados através do método WriteRecord, executado no evento OnRead do Tag, evitando a duplicação de eventos. |
Alguns equipamentos, como os CLPs da marca ATOS, não suportam a leitura em blocos de tipos de dados de estruturas diferentes. Na prática, isto impede que este Driver leia em um bloco único dados de registradores de controle e de eventos. Para coletar eventos de CLP com estas restrições, é preciso desabilitar a opção Enable Control and Data Registers Grouping na aba Gen SOE.