1) Introdução
A ferramenta de importação e exportação do E3 Studio permite ao usuário gravar um arquivo do tipo CSV contendo informações sobre objetos do E3, e posteriormente utilizar este arquivo para criar novos objetos. Essas informações incluem propriedades, associações e coleções dos objetos.
O processo de importação e exportação foi reformulado a partir da versão 2.5 do E3, e está baseado agora na utilização de modelos. Os modelos são arquivos com extensão .INI (arquivos de inicialização do Windows) utilizados para configurar a ferramenta de importação e exportação. Através desses modelos é possível especificar qual o separador de colunas será utilizado no arquivo CSV, quais as colunas que esse arquivo terá, etc. Alguns modelos são fornecidos pela Elipse Software juntamente com a instalação da nova versão do E3, mas é possível criar modelos específicos para cada necessidade do usuário.
No decorrer deste artigo serão apresentadas instruções de como criar modelos adequados a cada situação, além de dicas para melhor usufruir das funcionalidades dessa nova ferramenta.
2) Entendendo a estrutura dos modelos
Os modelos, embora sejam arquivos texto, devem respeitar uma estrutura para que possam ser compreendidos pela ferramenta de importação e exportação. Essa estrutura é a mesma encontrada nos arquivos de inicialização do Windows, com extensão .INI. Estes arquivos são organizados em seções e, em cada uma delas, é possível definir variáveis para o que se deseja configurar. Por exemplo, na seção Configuration, encontra-se a variável Separator, que define qual o separador de colunas que deverá ser utilizado.
O trecho abaixo
[Configuration]
Separator=','
significa que será utilizada a vírgula como separador de colunas do arquivo CSV.
Os arquivos .INI, de um modo geral, seguem o seguinte formato:
O formato é um texto facilmente alterável pelo usuário, pois é de fácil compreensão devido à forma organizada de apresentar as informações. É possível gerar um modelo novo utilizando um editor de textos comum, tendo um modelo antigo como base ou partindo desde o início.
Os modelos utilizados no E3 permitem que o usuário redefina valores para os nomes das colunas do arquivo CSV, bem como para os tipos de objetos. Além disso, também permitem que o usuário agrupe mais de uma propriedade em uma mesma coluna. Isso tudo é feito através da definição de identificadores, que são palavras-chave utilizadas no arquivo CSV e associadas a propriedades ou classes de objetos no arquivo .INI.
No E3, os modelos da ferramenta de importação e exportação devem ser definidos com as seções e variáveis apresentadas a seguir. Algumas são obrigatórias para a exportação e serão indicadas no decorrer do texto, mas para a importação, são todas opcionais. Caso omitidas, o E3 assume um comportamento padrão.
[Header]
Nesta seção devem ser definidos os identificadores permitidos para os nomes de colunas e tipos de objetos, bem como a ordem das colunas no arquivo CSV, para o caso da exportação. Essa seção é obrigatória para a exportação e as variáveis definidas são:
header: Nesta variável devem ser listadas todas as colunas, separadas por vírgula, e na ordem em que devem estar no arquivo CSV. Se o nome da coluna não é igual a um nome de propriedade, na variável header deve ser utilizado o identificador, e a relação dele com o nome real da propriedade deve ser feita através de uma variável na seção [Columns]. A variável header é obrigatória no processo de exportação.
types: Define os identificadores para os tipos de objetos permitidos no arquivo CSV. Os identificadores deverão ser listados nesta variável separados por vírgulas. Só é necessário definir essa variável se algum identificador for diferente do nome da classe do objeto. Neste caso, para cada um deverá haver também uma variável na seção [Types].
| [Header] header=ObjectType,Name,DocString,N1/B1,N2/B2,N3/B3,N4/B4,Scan,AllowRead types=Tag,Bloco,Elemento |
| [Configuration] separator=',' root=true link=true collection=true objectduplicated=askalways bindduplicated=askalways |
| [Types] Tag=IOTag Bloco=IOBlock Elemento=IOBlockElement |
| [Columns] N1/B1=N1,B1 N2/B2=N2,B2 N3/B3=N3,B3 N4/B4=N4,B4 |
| [Filter] exclude=IOFolder ; importa/exporta tudo, exceto IOFolders |
| [Header] header=ObjectType,Name,DocString,N1/B1,N2/B2,N3/B3,N4/B4,Scan,AllowRead types=Tag,Bloco,Elemento [Configuration] separator=',' ; utiliza a vírgula como separador de colunas no CSV root=true ; exporta/importa o objeto-raiz link=true ; exporta/importa as associações collection=true ; exporta/importa as coleções ; sempre pergunta o que fazer quando encontrar um objeto duplicado objectduplicated=askalways ; sempre pergunta o que fazer quando encontrar uma associação duplicada bindduplicated=askalways [Types] Tag=IOTag ; Tag na coluna ObjectType significa objeto da classe IOTag Bloco=IOBlock Elemento=IOBlockElement [Columns] ; N1/B1 como nome de coluna significa uma das duas propriedades: N1 ou B1 N1/B1=N1,B1 N2/B2=N2,B2 N3/B3=N3,B3 N4/B4=N4,B4 [Filter] exclude=IOFolder ; importa/exporta tudo, exceto IOFolders |
| [Header] header=ObjectType, Name |
| [Header] header=ObjectType, Name [Columns] Name = Name ; Note o espaço em branco antes na variável |
| [Header] header=ObjectType,Name ; sem espaço em torno da vírgula |
| [Header] header=ObjectType,Na;me,DocString,Value [Columns] Na;me = Name |
Criando um modelo através do Gerenciador de Modelos do E3 Studio
Para utilizar o Gerenciador de Modelos do E3, basta clicar na opção Importar/Exportar, e uma vez aberta a janela da opção, clicar no botão [Configurar...]. As abas disponíveis para configuração são mostradas a seguir. Para finalizar a criação do modelo, basta clicar no botão [OK], estando em qualquer aba.
Aba Configurações
Nesta aba é possível definir as opções válidas tanto para importação quanto para exportação. Estas opções incluem a configuração do separador de colunas e da importação ou exportação do objeto-raiz, das associações e das coleções, além de definir o nome do modelo, caso o usuário deseje salvá-lo para utilizá-lo novamente.
Figura 1: Aba Configurações
Aba Importação
Nesta aba é possível definir as opções válidas apenas para importação. Estas opções incluem definir o comportamento quando estiver sendo importado um objeto ou uma associação duplicados.
Figura 2: Aba Importação
Aba Filtros
É possível definir aqui quais as classes que devem ser importadas ou quais as classes que não devem. A lista das classes é preenchida através do botão [Alterar...].
Figura 3: Aba Filtros
Aba Identificadores
Nesta aba são definidos os identificadores para as classes de objetos. O preenchimento não é obrigatório, apenas se alguma classe deve ser importada ou exportada utilizando um identificador no lugar do próprio nome.
Figura 4: Aba Identificadores
Aba Propriedades
Nesta aba são listadas as propriedades que deverão ser importadas ou exportadas. A lista deverá estar na ordem correta para a opção de exportação. No caso da importação, a ordem é definida pelo próprio arquivo CSV e não pelo modelo. O preenchimento é obrigatório para a exportação.
No caso da importação, só é necessário preencher esta lista apenas se alguma coluna estiver utilizando um identificador no lugar do nome da propriedade. Assim, a variável que define o identificador será criada corretamente. Aqui também é possível definir o agrupamento de duas ou mais propriedades numa mesma coluna.
Figura 5: Aba Propriedades
4) Dicas para melhor utilização dos modelos e da ferramenta
O separador de colunas
O arquivo CSV tem sua estrutura baseada em colunas. Para a identificação correta dessas colunas, é importante que a definição do separador entre elas esteja coerente na exportação e na importação. O mesmo separador de colunas deve ser usado em ambas as operações, para que seja possível importar corretamente os objetos. Uma opção é utilizar o separador de listas configurado no Windows. Essa configuração é feita através do menu Iniciar – Configurações – Painel de Controle – Opções Regionais e de Idioma.
Figura 6: Configurações regionais do Windows
Como esta configuração varia de computador para computador, é importante conferir se o separador utilizado no momento da geração do arquivo CSV é o mesmo configurado quando estiver sendo feita a importação.
Outra opção é configurar manualmente o separador de colunas, através da variável Separator, na seção [Configuration] do modelo. Neste caso, a configuração fica no modelo, e basta utilizar o mesmo modelo na exportação e na importação para garantir que o separador está configurado corretamente.
Agrupe colunas e torne seu arquivo mais versátil
A nova ferramenta traz uma opção prática para diminuir a quantidade de colunas do arquivo CSV. Algumas vezes, quando são exportados objetos diferentes em um mesmo arquivo CSV, pode haver o caso de se ter propriedades que não são comuns aos diferentes objetos, gerando arquivos com diversas colunas em branco. Por exemplo, considerando o caso de tags e blocos de comunicação, têm-se as propriedades N1 a N4 para tags que não são propriedades dos blocos. Por outro lado, as propriedades B1 a B4 dos blocos não são propriedades de tags. Um arquivo CSV para essas oito propriedades seria:
| ObjectType;Name ;N1;N2;N3;N4;B1;B2;B3;B4 IOTag ;Tag1 ;1 ;1 ;1 ;1 ; ; ; ; IOBlock ;Bloco1; ; ; ; ;1 ;1 ;1 ;1 |
| ObjectType;Name ;N1/B1;N2/B2;N3/B3;N4/B4 IOTag ;Tag1 ;1 ;1 ;1 ;1 IOBlock ;Bloco1;1 ;1 ;1 ;1 |
Mantenha sempre um modelo básico para cada objeto
É interessante manter sempre um modelo para cada um dos objetos que mais frequentemente serão importados ou exportados. Por exemplo, um modelo para Drivers de Comunicação, um modelo para Alarmes, um modelo para Telas, outro para Servidores de Dados, e assim por diante, de acordo com as necessidades de cada usuário. Esses modelos básicos tornam mais fácil a configuração da ferramenta.
Eles podem conter, por exemplo, todas as propriedades que devem ser utilizadas, e quais os tipos de objetos desejados. Quando for iniciado um novo procedimento de importação ou exportação, basta selecionar o modelo básico e então clicar no botão [Configurar...]. Todas as configurações que forem encontradas no modelo básico já serão carregadas.
Na opção Salvar as alterações deste modelo em um arquivo INI, escolha um novo nome para o modelo, para que o básico não seja sobrescrito, e altere apenas o que for necessário.
Importe arquivos de tags gerados pelas versões antigas do E3 Studio
O formato dos arquivos CSV gerados pelas versões antigas do E3 na exportação de tags também é suportado pela ferramenta atual, bastando configurar um modelo corretamente. A Elipse Software fornece um modelo apropriado para essa importação, que se encontra no diretório de instalação do E3, na pasta Templates. Mas, caso necessite, a configuração de um novo modelo é simples.
No Gerenciador de Modelos do E3 Studio, siga os seguintes procedimentos:
1) Na aba Configurações, selecione o separador de listas do Windows como separador de colunas, desabilite as opções de importar/exportar o objeto-raiz, as associações e as coleções, e escolha um nome para o modelo.
2) Na aba Importação, deixe a configuração padrão.
3) Na aba Filtros, selecione a opção Incluir apenas estes objetos e clique no botão [Alterar...] para incluir as classes IOTag, IOBlock e IOBlockElement.
4) Na aba Identificadores, defina três identificadores de tipos. Clique no botão [+] e inclua as classes IOTag, IOBlock e IOBlockElement, e defina os identificadores PLC Tag, Block Tag e Element, respectivamente.
Figura 8: Definição dos identificadores para as classes de objetos
5) Na aba Propriedades, defina as propriedades que a versão antiga (2.0 ou anterior) exporta, e relacione com os identificadores utilizados no arquivo CSV. Para ObjectType, associe o identificador type. Para as demais, siga as instruções abaixo:
Figura 9: Escolha das propriedades
- DocString para Description.
- Scan para ScanTime.
- AdviseType para Advise.
- EnableScaling para Scaling.
- EUHigh para High2.
6) Clique no botão [OK]. O modelo será salvo e está pronto para ser utilizado pela ferramenta. O arquivo com extensão .INI deve estar semelhante ao mostrado a seguir:
| [HEADER] Header=Type,Name,Description,N1/B1,N2/B2,N3/B3,N4/B4,ScanTime,AllowRead, AllowWrite,Advise,Scaling,DeviceLow,DeviceHigh,EULow,EUHigh,EU,Size, Index,ParamDevice,ParamItem Types=Element,Block Tag,PLC Tag [TYPES] Element=IOBlockElement Block Tag=IOBlock PLC Tag=IOTag [COLUMNS] N1/B1=N1,B1 N2/B2=N2,B2 N3/B3=N3,B3 N4/B4=N4,B4 Scaling=EnableScaling ScanTime=Scan Type=ObjectType Advise=AdviseType Description=DocString [CONFIGURATION] Root=FALSE Link=FALSE Collection=FALSE ObjectDuplicated=AskAlways BindDuplicated=AskAlways [FILTER] Include=IOTag,IOBlock,IOBlockElement |