Tipos de Dados Definidos pelo Usuário

Driver Modicon Modbus

Tipos de Dados Definidos pelo Usuário

Topo  Anterior  Próximo

Os tipos de dados definidos pelo usuário, ou estruturas, após configurados na janela de configuração User Defined Types, podem ser usados nas operações do Driver da mesma forma que os tipos de dados pré-definidos.

Estes tipos de dados são na verdade estruturas cujos elementos podem ter tipos de dados nativos diferentes, ou seja, um tipo de dados definido pelo usuário nada mais é do que uma estrutura definida a partir dos tipos de dados pré-definidos pelo Driver (tipos de dados nativos ou built-in), permitindo ao usuário configurar Tags Bloco onde cada Elemento pode ter um tipo de dados nativo diferente.

O usuário pode utilizar praticamente todos os tipos de dados pré-definidos pelo Driver em suas estruturas. Somente não são permitidos os tipos de dados Bit, os tipos de dados de oito bits, os tipos de dados de tamanho variável, como String e BCD, e tipos de dados de evento associados à funções específicas de SOE.

Uma vez tendo definido um tipo de dados, o usuário pode associá-lo a qualquer Tag, desde que ela utilize funções Modbus que suportem Words, ou seja, não é permitida a associação de um tipo de dados definido pelo usuário a uma operação que defina como função de leitura (Read) a função 01, por exemplo, uma vez que esta lê apenas bits.

Além da definição dos elementos da estrutura, cujos valores são retornados em Elementos de Bloco, o usuário pode também definir o tipo de timestamp do Tag, bem como o endereço padrão para a estrutura, endereço que é usado para o parâmetro B4 dos Tags disponíveis via Tag Browser do E3.

 

Aplicações

Os tipos de dados definidos pelo usuário foram originalmente implementados para uso em conjunto com a Rotina de SOE Genérico do Driver Modbus (Gen SOE), uma vez que esta rotina executa a leitura de tabelas de estruturas de dados.

Além de poder ser utilizado com a rotina genérica de SOE, este recurso pode também ser usado para agrupar tipos de dados diferentes em um mesmo Tag Bloco, otimizando a comunicação em aplicações que não contam com o recurso de Superblocos, caso do Elipse SCADA, ou caso o equipamento em uso por algum motivo não permita o uso de Superblocos (veja o tópico Leitura por Superblocos).

 

Configuração de Tipos de Dados Definidos pelo Usuário

A configuração de tipos de dados definidos pelo usuário é realizada em janela específica, clicando em User Defined Types na Aba Operations da janela de configurações do Driver, conforme a figura a seguir.

Aba Operations da janela de configurações do Driver

Aba Operations da janela de configurações do Driver

A janela de configuração dos tipos de dados definidos pelo usuário permite a edição do arquivo de configuração das estruturas. Ao abrir a janela pela primeira vez, é mostrado o arquivo de configuração padrão (com comentários), e que define três tipos de dados de exemplo, que aparecem comentados por comentários de múltiplas linhas ("/*" e "*/"), conforme explicado a seguir.

A figura a seguir mostra a janela de configuração de tipos de dados definidos pelo usuário, com um pequeno arquivo definindo os três tipos de dados de exemplo.

Configuração de tipos de dados definidos pelo usuário

Configuração de tipos de dados definidos pelo usuário

Note que os comentários de linha iniciam sempre com "//", identificando tudo o que vier à direita, na mesma linha, como comentário, seguindo o padrão dos comentários de linha da linguagem de programação C++, também usado por outras linguagens como Java e C#.

Também são suportados comentários de múltiplas linhas, seguindo novamente a mesma sintaxe do C++, iniciando por "/*" e terminando com "*/". Note que o arquivo exemplo que vem com o Driver já aplica este formato de comentário a seus tipos de dados de exemplo, deixando-os comentados por padrão. Remova as linhas indicadas por "/* Sample types entirely commented by default" e "*/" (sem as aspas) para que os três tipos de dados de exemplos estejam prontos para o uso.

À medida que o texto do arquivo de configuração é alterado, a barra de status mostra o resultado da análise sintática do arquivo, em tempo real. Esta barra de status mostra a mensagem "Status: OK!" se não forem detectados erros no arquivo.

A cada momento, a linha e a coluna da posição do cursor na caixa de edição são sempre mostradas no lado direito da barra de status. Os erros mostrados na barra de status sempre referenciam ao número da linha e da coluna onde ele foi detectado.

A verificação pode ser feita na íntegra também clicando-se em Verify e, em caso de erro, o cursor já é posicionado automaticamente na linha do erro.

A definição de cada tipo tem a seguinte sintaxe (os elementos entre colchetes são opcionais):

struct <Nome do Tipo> {
  [timestamp = <tipo data e hora>;]
  [DefaultAddress = <endereço>;]
  <tipo> [nome do elemento 1];
  <tipo> [nome do elemento 2];
  <tipo> [nome do elemento 3];
[...]
  <tipo> [nome do elemento n];
}

 

Onde:

·struct: Palavra-chave, em letras minúsculas, que inicia a definição do tipo de dados definido pelo usuário

·<Nome do Tipo>: Nome pelo qual o novo tipo de dados é identificado pelo Driver. Este é o nome mostrado na caixa de seleção Data, na configuração das operações. Deve ter no máximo seis caracteres

·timestamp: Campo opcional que indica que a estrutura tem um timestamp definido pelo dispositivo, que deve ser retornado no campo Timestamp do Tag. Cada estrutura pode ter no máximo um timestamp. A ordem em que aparece na estrutura influencia a posição em que o campo é lido no frame retornado pelo equipamento (note que nos Tags este valor é retornado somente no campo Timestamp). Podem ser definidos quaisquer tipos de dados de data e hora suportados pelo Driver. Na versão atual, o Driver suporta os tipos de dados de data e hora GenTime, Sp_time, UTC64d e UTC32. Para mais informações sobre tipos de dados, consulte o tópico Tipos de Dados Suportados

·DefaultAddress: Campo opcional que especifica um valor de endereço padrão, usado para preencher o parâmetro B4 dos Tags no Tag Browser que referenciem as operações contendo a estrutura definida. Os valores de endereço podem ser fornecidos em decimal ou em hexadecimal. Para usar este último, é preciso preceder o número com o prefixo "0x" (por exemplo, usar "0x10" para codificar o valor decimal 16 em hexadecimal)

·<tipo data e hora>: Tipos de dados de data e hora pré-definidos pelo Driver, que podem ser utilizados como timestamp pelo dispositivo escravo. Na atual versão do Driver, são aceitos os tipos de dados nativos GenTime, Sp_time, UTC32 e UTC64d

·<tipo>: Tipo de dados do elemento. Deve ser definido como um dos tipos de dados pré-definidos pelo Driver, e escrito da mesma forma que aparece na caixa de seleção Data, no frame de configuração dos parâmetros das operações, considerando letras maiúsculas e minúsculas. Não são permitidos tipos de dados Bit, tipos de dados de oito bits e nem tipos de dados de tamanho variável, como BCD e String

·[nome do elemento]: Parâmetro opcional que define o nome de cada Elemento do Bloco. Se definido, determina o nome dos Elementos de Bloco nos Tags presentes no Tag Browser do E3. Se não for definido na declaração da estrutura, o Driver atribui nomes padrão aos Elementos no Tag Browser, com a palavra-chave "Element" seguida do valor do índice do Elemento dentro do Bloco ("Element1", "Element2", etc.)

 

Importação e Exportação

As opções Import File e Export File permitem importar e exportar o arquivo de configuração de tipos de dados definidos pelo usuário para arquivos texto em disco. Podem ser utilizados para a realização de cópias de segurança do arquivo, ou para compartilhá-lo entre vários Drivers. O arquivo é sempre gravado e lido no formato ANSI padrão do Windows (Charset Windows-1252). Futuras versões do Driver podem suportar outros formatos.

Além de copiar o arquivo para o disco, pode-se também usar as teclas de atalho CTRL + A (Selecionar Tudo), CTRL + C (Copiar) e CTRL + V (Colar) para copiar e colar o conteúdo do arquivo em outro Editor de Texto.

A opção Load Default Configuration carrega novamente no editor o arquivo padrão de configuração, o mesmo que já vem carregado no editor quando a janela de configuração é aberta pela primeira vez.

 

NOTA

Ao clicar em Cancel, todas as alterações realizadas no arquivo são descartadas pelo Driver. Clicando-se em OK, o arquivo é armazenado na aplicação. Esta operação realiza a verificação completa do arquivo e, se for identificado algum erro, este é mostrado e a janela não é fechada. Se for preciso salvar alterações com erros ainda pendentes, exporte o arquivo ou copie-o e cole-o em outro Editor de Textos.

 

Utilizando Tipos de Dados Definidos pelo Usuário na Configuração por Strings

Pode-se fornecer nomes de tipos de dados definidos pelo usuário como mnemônicos do campo Tipo do campo Item, como ocorre com os tipos de dados nativos do Driver, desde que o nome tenha sido previamente declarado, como explicado anteriormente neste tópico.

 

IMPORTANTE

Como no E3 o campo Item não diferencia entre minúsculas e maiúsculas, para usar tipos de dados definidos pelo usuário neste campo é necessário que os nomes dos tipos de dados definidos não difiram apenas pela caixa alta ou baixa, ou seja, não se deve definir, por exemplo, um tipo de dados com o nome "tipo1" e outro com o nome "TIPO1". Caso isto ocorra, não é possível usar tipos de dados definidos pelo usuário no campo Item até que os nomes sejam corrigidos.

 

Para mais informações sobre a configuração de Tags usando Strings, consulte o tópico Configuração por Strings. Exemplo:

·Leitura ou escrita de Holding Registers (funções 03 e 06) de endereço 100 do equipamento com Id 5, interpretado como um tipo de dados definido pelo usuário chamado "mytype", com Slave Id no campo Item:

·Dispositivo: "" (empty String)

·Item: "5:shr100.mytype"

 

NOTA

As opções de permuta (ordenamento de bytes) para tipos de dados definidos pelo usuário têm efeito apenas nos elementos da estrutura definida e não na estrutura inteira, ou seja, se a opção Swap Words está habilitada, todos os elementos com mais de 16 bits têm seus Words permutados. Os elementos de 16 bits, entretanto, não são alterados.

 

Utilizando Tipos Definidos pelo Usuário na Configuração Numérica

Após a definição dos novos tipos de dados no arquivo de configuração na janela User-Defined Types, estes tipos de dados estão disponíveis para uso nas operações do Driver. Lembre-se que somente as operações que utilizam funções Modbus para acesso a registradores de 16 bits, como por exemplo as funções 03, 04, 06 e 16, permitem tipos de dados definidos pelo usuário.

A figura a seguir mostra a configuração de uma nova operação que utiliza o tipo de dados definido pelo usuário (estrutura) de nome TYPE3, mostrado no exemplo acima, após o usuário clicar em Add.

Adicionar tipo de dados definido pelo usuário

Adicionar tipo de dados definido pelo usuário

NOTA

As opções de permuta para tipos de dados definidos pelo usuário têm efeito apenas nos elementos da estrutura definida e não na estrutura inteira, ou seja, se a opção Swap Words está habilitada, todos os elementos com mais de 16 bits têm seus Words permutados. Os elementos de 16 bits, entretanto, não são alterados.

 

Após a definição da nova operação, usando o novo tipo TYPE3, defina um Tag Bloco com o mesmo tipo de dados e com tamanho igual ao número de elementos da estrutura, conforme mostrado na figura a seguir.

Declaração de Tags usando estruturas no E3 ou Elipse Power

Declaração de Tags usando estruturas no E3 ou Elipse Power

Se foi definido o nome para cada elemento da estrutura, é possível utilizar o Tag Browser do E3 para incluir um Tag Bloco referente ao tipo de dados desejado na aplicação, sem precisar digitar novamente. Para utilizar este recurso, é necessário selecionar a opção Show Operations in Tag Browser na aba Operations. A figura a seguir ilustra o procedimento.

Uso do Tag Browser para definir Tags usando estruturas

Uso do Tag Browser para definir Tags usando estruturas

Como a figura sugere, clique em Tag Browser na aba Design do Driver para abrir o Tag Browser e arraste o tipo de dados desejado da lista Tags disponibilizados pelo Driver (Tags available from driver) para a lista Tags do projeto corrente (Tags from current project).

 

Leitura Reportada a Eventos

Os tipos de dados definidos pelo usuário ou estruturas são comumente utilizados para a definição de eventos na memória do CLP, podendo ser usados com o Algoritmo de Leitura de SOE Genérico da Elipse Software. Se entretanto for necessário ler eventos organizados na memória do CLP, como uma sequência de estruturas, em uma operação que utilize apenas função pública de leitura do protocolo, ou seja, sem o emprego de funções especiais com algoritmo de SOE, tal procedimento pode ser realizado de duas formas:

·Leitura em Bloco: Crie um Bloco com um número de Elementos que seja múltiplo do número de elementos das estruturas de dados do usuário. Por exemplo, um tipo de dados definido pelo usuário ou estrutura com dois elementos que represente eventos acumulados em um arranjo na memória do CLP. Caso se deseje ler em bloco cinco eventos, é necessário definir um Tag Bloco contendo 10 Elementos. Assim, uma única leitura neste Tag traz todos os eventos de uma só vez

·Leitura Reportada a Evento: Usa uma sequência de eventos OnRead do Tag para ler o bloco de dados. Com isto, considerando o exemplo do item anterior, ao invés de criar um Tag com 10 Elementos, o usuário precisa criar apenas um único Tag Bloco com dois Elementos, configurando o parâmetro B3 com o valor "5". Desta forma, ao realizar a leitura do Tag, o E3 chama cinco vezes o evento OnRead do Tag, e em cada chamada os Elementos e propriedades do Tag Bloco contêm dados relativos a um evento específico. O uso mais comum dos Tags reportados a evento é o armazenamento dos eventos lidos diretamente na base de dados de histórico. Isto é facilmente executado através do método WriteRecord do objeto Histórico previamente associado ao Tag, dentro do evento OnRead do Tag reportado a evento. Para mais informações, consulte o tópico sobre Tags Reportados a Eventos no Manual do Usuário do E3

 

Em outras palavras, todo Tag de Comunicação que use estruturas e que utilize uma função pública de leitura do protocolo (este recurso não funciona para funções especiais de SOE), torna-se um Tag Reportado a Eventos se o seu parâmetro B3 for configurado com um valor não nulo.

No caso de funções especiais de SOE, como a função Gen SOE, o retorno reportado a eventos é definido pelo próprio algoritmo proprietário da função.

Para mais informações a respeito da configuração de Tags de Comunicação, consulte o tópico Configurando um Tag de Comunicação.

 

IMPORTANTE

Ao ler eventos de memória de massa em Tags reportados a eventos no E3, desabilite a banda morta no Tag (propriedade EnableDeadBand configurada como Falso) e também no objeto Histórico associado (propriedade DeadBand igual a zero), para evitar a perda de eventos com valores próximos. Também é importante desabilitar o histórico por varredura (no E3, propriedade ScanTime igual a 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.

 
Esta seção da documentação ajudou você a configurar este Driver?
Sim Não
Comentários (opcional):