Buscar

Tutorial_E3_Avançado

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Versão 5.6.74 (14/01/2021)
Tutorial do E3 Avançado
Copyright © 1999-2021 Elipse Software Ltda. Todos os direitos reservados.
I
Sumário
1 Treinamento Avançado ............................................................................................................................. 1
1.1 Aplicação do Treinamento .................................................................................................................. 1
1.2 Exercícios ............................................................................................................................................... 2
2 Canais de Suporte ....................................................................................................................................... 4
2.1 Elipse Knowledgebase .......................................................................................................................... 4
2.2 Elipse Fórum .......................................................................................................................................... 5
2.3 Canal de Vídeos ..................................................................................................................................... 7
3 Referências aos Objetos .......................................................................................................................... 10
3.1 Application .......................................................................................................................................... 10
3.2 Objetos do Servidor ........................................................................................................................... 10
3.3 Método Item ....................................................................................................................................... 10
3.4 Comando Set ....................................................................................................................................... 11
3.5 Eventos ................................................................................................................................................ 11
3.6 Exercícios ............................................................................................................................................. 13
4 Usuários .................................................................................................................................................... 14
4.1 Login .................................................................................................................................................... 14
4.2 Administração de Usuários ............................................................................................................... 14
4.3 Confirmação de Senha ....................................................................................................................... 15
4.4 Bloqueio de Senha .............................................................................................................................. 16
4.5 Exercícios ............................................................................................................................................. 16
5 Bibliotecas: XObjects e XControls .......................................................................................................... 18
5.1 XControl .............................................................................................................................................. 18
5.2 XObject ................................................................................................................................................ 19
5.3 Exercícios ............................................................................................................................................. 19
6 Layer .......................................................................................................................................................... 31
6.1 Exercícios ............................................................................................................................................. 31
7 Adicionando Objetos em Tempo de Execução ..................................................................................... 33
7.1 Adicionar Objeto ................................................................................................................................ 33
7.2 Evento CustomConfig ........................................................................................................................ 34
7.3 Exercícios ............................................................................................................................................. 35
8 Arrays ........................................................................................................................................................ 36
8.1 Exercícios ............................................................................................................................................. 36
9 Bibliotecas: XFolders ............................................................................................................................... 37
9.1 Exercícios ............................................................................................................................................. 37
10 IOKit ........................................................................................................................................................ 43
10.1 Trabalhando Offline ......................................................................................................................... 43
10.2 Exercícios ........................................................................................................................................... 43
11 Importação e Exportação ...................................................................................................................... 47
11.1 Arquivo CSV ...................................................................................................................................... 47
11.2 Gerenciador de Modelos ................................................................................................................. 47
II
12 Consulta .................................................................................................................................................. 51
12.1 Criando e Acessando Variáveis ....................................................................................................... 51
12.2 Edição Direta do Código SQL .......................................................................................................... 51
12.3 Update ............................................................................................................................................... 51
12.4 Delete ................................................................................................................................................ 51
12.5 Exercícios ........................................................................................................................................... 52
13 GetADORecordSet ................................................................................................................................. 57
13.1 Exercícios ........................................................................................................................................... 57
14 Storage .................................................................................................................................................... 59
14.1 Funcionamento ................................................................................................................................ 59
14.2 Configuração ....................................................................................................................................59
14.3 Consultas Internas ........................................................................................................................... 60
15 Alarmes ................................................................................................................................................... 62
15.1 Eventos versus Alarmes .................................................................................................................. 62
15.2 Campos do Usuário .......................................................................................................................... 62
15.3 Assinatura Eletrônica ....................................................................................................................... 62
15.4 Exercícios ........................................................................................................................................... 64
16 Relatórios ................................................................................................................................................ 73
16.1 Group Header e Footer .................................................................................................................... 73
16.2 Exercícios ........................................................................................................................................... 73
17 WebViewer ............................................................................................................................................. 76
17.1 Aplicações E3 na Web ...................................................................................................................... 76
17.2 Arquivos E3Web.asp e DocWrite.asp ............................................................................................ 78
17.3 Configurando o Internet Information Services ............................................................................ 78
17.4 Licenças ............................................................................................................................................. 82
17.5 Exercícios ........................................................................................................................................... 82
17.6 Exercícios Complementares ............................................................................................................ 82
18 Event Log Viewer ................................................................................................................................... 83
18.1 Configuração do Armazenamento de Arquivos ........................................................................... 83
18.2 Abertura de Arquivos ...................................................................................................................... 83
18.3 Merge de Eventos ............................................................................................................................ 84
18.4 Filtros ................................................................................................................................................. 84
18.5 Exercícios ........................................................................................................................................... 86
19 E3 Tweak ................................................................................................................................................. 87
19.1 Configurações do E3 Server ............................................................................................................ 87
19.2 Configurações do E3Run ................................................................................................................. 87
19.3 Configurações do REC ..................................................................................................................... 87
19.4 Configurações dos Logs .................................................................................................................. 88
19.5 Configurações do Filtro COM ......................................................................................................... 88
19.6 Exercícios ........................................................................................................................................... 88
20 Preparatório para a Certificação .......................................................................................................... 89
Treinamento Avançado 
 
 1
1
Treinamento Avançado
CAPÍTULO
Durante o Treinamento vão ser discutidos os seguintes itens:
· Referências aos Objetos: Referência a objetos do Servidor e do Viewer, comandos Item e Set, eventos de scripts
· Usuários: Login, administração de usuários, confirmação de senha, bloqueio de usuário, inatividade
· Bibliotecas: XObject, XControl, Combo Box, Option Button, Tela indexada, SelectMenu
· Layer: Camadas
· Adicionando Objetos em Tempo de Execução: AddObject, TypeName, CustomConfig
· Arrays: Copiar configuração de objetos
· IOKit: Trabalhando offline, XFolder
· Importação e Exportação: Lista de Tags de comunicação
· Consulta: Consulta, criando e acessando variáveis, edição direta do código SQL, Update e Delete
· GetADORecordSet: Buscando resultados de uma Consulta
· Alarmes: Eventos, campos do usuário, assinatura eletrônica, evento OnDrawRow do E3Browser
· Relatórios: Grupos e totalizadores
· WebViewer: Publicando uma aplicação do E3 na Internet
· Event Log Viewer: Logs do E3
· E3 Tweak: Chaves de registro
1.1 Aplicação do Treinamento
Neste Treinamento é apresentado um estudo de caso que simula uma aplicação real, um sistema de supervisão e
controle. O instrutor desenvolve a aplicação junto com os alunos, passo a passo, facilitando o entendimento e o
aprendizado da ferramenta.
Este sistema apresenta uma planta de saneamento, exemplificando vários aspectos e recursos disponíveis no E3.
O operador do sistema pode visualizar as temperaturas e o nível dos tanques, e controlar o funcionamento das
bombas.
Tela de visualização de tanques e bombas
O sistema também mostra condições de alarme no caso de algum parâmetro ultrapassar os limites estabelecidos,
como por exemplo um aumento excessivo de temperatura.
2 
 
 Treinamento Avançado
Tela de visualização de alarmes
O usuário também pode inserir, atualizar e remover registros em um banco de dados.
Tela de cadastro no banco de dados
1.2 Exercícios
1.2.1 Projeto
1. Crie uma nova aplicação padrão com o nome "TreinamentoAvancado". Responda Não à todas as perguntas do
Assistente de Aplicações.
2. Adicione as figuras FundoSaneamento, Bomba, Tanque, MedidaAnalogica e Alarme como Recursos da
aplicação.
NOTA
Os arquivos de recursos deste Treinamento podem ser baixados, juntamente com a aplicação completa, no artigo KB
4276 do Elipse Knowledgebase.
https://kb.elipse.com.br/aplicacao-utilizada-no-treinamento-e3-avancado/
https://kb.elipse.com.br/aplicacao-utilizada-no-treinamento-e3-avancado/
Treinamento Avançado 
 
 3
1.2.2 Tela Inicial
1. Configure como figura de fundo da Tela a figura FundoSaneamento, inserida como Recurso.
2. Modifique a cor de fundo da Tela (propriedade BackgroundColor) para a cor cinza (RGB(210, 210, 210)).
Tela de saneamento
4 
 
 Canais de Suporte
2
Canais de Suporte
CAPÍTULO
A Elipse Software possui alguns recursos online para ajudá-lo a tirar dúvidas e buscar informações sobre produtos.
Osrecursos disponíveis estão descritos nos tópicos a seguir.
2.1 Elipse Knowledgebase
O Elipse Knowledgebase tem como finalidade ajudar o usuário dos produtos da Elipse Software a encontrar
respostas rápidas para dúvidas ou problemas que esteja enfrentando durante a utilização, seja durante o
desenvolvimento de aplicações ou depois de prontas. Este espaço nada mais é do que um portal onde muitas
informações técnicas e dicas estão concentradas. A sua base de informações é constantemente atualizada e tem uma
linguagem simples que visa o rápido entendimento de quem está utilizando. O KB está disponível em kb.elipse.com.br,
conforme a figura a seguir.
Página inicial do Elipse Knowledgebase
2.1.1 Busca no KB
Esta opção busca em toda a base de dados por uma palavra ou palavras que o usuário digitar, retornando todos os
artigos que possuem a palavra alvo da busca. Para isto, digite uma palavra ou expressão e clique em Pesquisar.
https://kb.elipse.com.br/
Canais de Suporte 
 
 5
Pesquisa no KB
2.1.2 Categorias
Existe a possibilidade de acessar todos os artigos pertencentes a uma categoria específica. Para isto, no campo
Categorias, selecione a categoria que deseja buscar os respectivos artigos.
Categorias no KB
Todos os artigos da categoria selecionada são retornados como resultado da busca. Dentro destas categorias
existem várias subcategorias, cada uma delas tratando de um tema específico.
2.2 Elipse Fórum
O Fórum da Elipse Software é uma ferramenta online para discussões e troca de conhecimento sobre produtos e
novidades. O Fórum está disponível em forum.elipse.com.br, conforme a figura a seguir.
https://forum.elipse.com.br/
6 
 
 Canais de Suporte
Página inicial do Fórum da Elipse Software
2.2.1 Categorias
O Fórum apresenta categorias tais como Elipse E3, Elipse Power e Elipse Mobile, conforme a figura a seguir.
Categorias do Fórum
Assim, caso o usuário deseje comentar sobre o Elipse Mobile, por exemplo, há uma página específica para isto.
Assim, o Fórum disponibiliza as informações de forma mais organizada, não deixando que um comentário sobre o E3
seja publicado em meio aos posts referentes aos Drivers, por exemplo, centralizando as discussões.
2.2.2 Acompanhamento
Para manter o usuário informado sobre o andamento de sua conversa sem necessidade de se manter logado, o
Fórum também notifica, via e-mail, caso alguma resposta seja publicada em relação ao comentário. A mesma lógica
Canais de Suporte 
 
 7
também é válida para os casos em que o nome do usuário seja apenas mencionado. As opções de acompanhamento
são as seguintes:
· Observar: O usuário é notificado a cada novo post e resposta
· Monitorar: O usuário é notificado quando alguém mencionar o nome ou responder um post
· Normal: O usuário é notificado caso alguém mencione o nome ou responda um post. Esta é a opção padrão
· Silenciar: O usuário não é notificado sobre nenhum post ou tópico
Opções de acompanhamento no Fórum
2.3 Canal de Vídeos
A Elipse Software possui um canal de vídeos de seus produtos. Este canal contém desde vídeos rápidos que ensinam
um determinado assunto até vídeo-aulas completas.
O Canal de Vídeos está disponível em youtube.com/elipsesoftware, conforme a figura a seguir.
https://www.youtube.com/user/ElipseSoftware
8 
 
 Canais de Suporte
Página inicial do Canal de Vídeos
2.3.1 Playlists
A seção Playlists contém diversos vídeos, separados por produtos de forma organizada e de fácil acesso.
Playlists do Canal de Vídeos
Canais de Suporte 
 
 9
2.3.2 Inscrição
Clique em Inscrever-se e inscreva-se no Canal de Vídeos para ser notificado a cada novo vídeo postado.
Inscrição no Canal de Vídeos
10 
 
 Referências aos Objetos
3
Referências aos Objetos
CAPÍTULO
Objetos são componentes de software reutilizáveis, que permitem maximizar o uso e aumentar a qualidade e
produtividade em aplicativos.
Um objeto no E3 encapsula ou contém três diferentes partes (propriedades, métodos e eventos) que podem ser
manipuladas para a utilização das vantagens de sua funcionalidade na aplicação.
Propriedades definem atributos de um objeto, como sua aparência na Tela ou seu valor inicial quando o aplicativo é
iniciado.
Métodos são funções que realizam uma ação específica em ou com um objeto.
Eventos são notificações geradas por um objeto em resposta a alguma ocorrência em particular, como um clique de
mouse ou uma mudança no valor de um Tag, entre outras.
Uma das características mais importantes ao se trabalhar com scripts no E3 é considerar a separação existente entre
os processos que são executados no Servidor e aqueles executados na interface do Cliente (E3 Viewer).
3.1 Application
A palavra Application representa o contexto atual do objeto e pode indicar tanto funções que são executadas no E3
Viewer quanto no Servidor. Neste caso, o objeto Application sabe de antemão quais funções devem ser executadas
tanto para um quanto para o outro caso. Não é possível, entretanto, executar métodos de Viewer dentro do Servidor,
assim como também não é possível executar métodos de Servidor dentro do E3 Viewer. Exemplos:
· Application.ChangePassword: Método do Viewer que permite alterar a senha do usuário atual
· Application.Trace(mensagem): Método do Servidor que escreve uma mensagem em um arquivo texto
3.2 Objetos do Servidor
Para se acessar um objeto que está sendo executado no Servidor a partir de um Objeto de Tela ou um ElipseX, deve-
se usar o método Application.GetObject. Exemplo:
Objetos de Servidor
· Application.GetObject("Dados.TagInterno1"): Tag Interno do Servidor de Dados
· Application.GetObject("BancoDados"): Banco de Dados
3.3 Método Item
O método Item retorna a referência para o objeto filho do objeto que o chamou. Este método pode buscar um
objeto tanto pelo nome quanto pelo índice (inteiro). Se o índice ou o nome especificado é válido, o método Item
retorna a referência ao objeto. Caso contrário, o método retorna um erro de parâmetro inválido. Exemplo:
Referências aos Objetos 
 
 11
Objeto E3Browser
· Screen.Item("E3Browser1"): Objeto E3Browser que está dentro da Tela
· Screen.Item("E3Browser1").Item("Consulta1"): Objeto Consulta que está dentro do E3Browser
3.4 Comando Set
O VBScript implementa o conceito das linguagens de programação orientadas a objeto, permitindo que uma variável
do tipo Variant assuma a forma de um objeto qualquer através do comando Set. Deste modo, a variável funciona
como um ponteiro para o objeto desejado, permitindo acessar seus métodos e propriedades. Exemplo:
Set retangulo = Screen.Item("Retangulo1")
retangulo.BackgroudColor = RGB(255, 0, 0)
'Sem o comando Set, a mesma chamada
'teria que ser escrita da seguinte forma
Screen.Item("Retangulo1").BackgroundColor = RGB(255, 0, 0)
Aparentemente, não existe vantagem neste caso, pois pode-se executar a mesma tarefa em uma única linha de
código. Porém, se logo a seguir, no mesmo script, outras operações sejam necessárias, o processo se torna mais
simples e rápido se a chamada ao método Item não é repetida em todas as linhas.
'Exemplo ruim
Screen.Item("Retangulo1").BackgroundColor=RGB(212, 208, 20)
Screen.Item("Retangulo1").Height = 500
Screen.Item("Retangulo1").Width = 500
'Exemplo melhor
Set Retangulo = Screen.Item("Retangulo1")
Retangulo.BackgroundColor = RGB(212, 208, 20)
Retangulo.Height = 500
Retangulo.Width = 500
3.5 Eventos
Eventos são notificações geradas por um objeto em resposta a alguma ocorrência em particular, como um clique de
mouse ou uma mudança no valor de um Tag, entre outras. Alguns exemplos de eventos estão listados nos tópicos a
seguir.
3.5.1 KeyDown
KeyDown(KeyCode, Shift)
Ocorre no momento em que uma tecla é pressionada, independente do foco na Tela. Os parâmetros deste evento
estão descritos na tabela a seguir.
Parâmetros disponíveis no evento KeyDown
NOME DESCRIÇÃO
KeyCode Número inteiro que identifica o caractere ASCII da tecla
pressionada
Shift Mostra o atalho de teclado usado juntamente com a tecla
pressionada:
· 4: Tecla SHIFT
· 8: Tecla CTRL
12 
 
 Referências aos Objetos
NOME DESCRIÇÃO
· 12: Teclas CTRL + SHIFT
Exemplo:
Sub TelaInicial_KeyDown(KeyCode, Shift)
 ' Mostra uma caixa de mensagem quando
 ' o usuário pressiona uma tecla
 MsgBox "Código da tecla: " & KeyCode
End Sub
NOTA
Para uma lista com todos os códigos de tecla disponíveis para o parâmetro KeyCode, consulte o artigo Keys
Enumeration no Microsoft Developer Network.
3.5.2 MouseDown
MouseDown(Button, ShiftState, MouseX, MouseY)
Ocorre quando se pressiona qualquer botão do mouse na Tela. Utilize o evento MouseDown para determinar ações
específicas quando a Tela é clicada pelo usuário. Os parâmetros deste evento estão descritos na tabela a seguir.
Parâmetros disponíveis no evento MouseDown
NOME DESCRIÇÃO
Button Mostra o botão do mouse pressionado:
· 1: O botão do mouse pressionado é o esquerdo
· 2: O botão do mouse pressionado é o direito
· 4: O botão do mouse pressionado é o do meio
ShiftState Mostra a tecla pressionada juntamente com o botão do
mouse:
· 4: Tecla SHIFT
· 8: Tecla CTRL
· 12: Teclas CTRL + SHIFT
MouseX Mostra a coordenada X onde o botão do mouse foi
clicado na Tela
MouseY Mostra a coordenada Y onde o botão do mouse foi
clicado na Tela
Exemplo:
Sub TelaInicial_MouseDown(Button, ShiftState, MouseX, MouseY)
 ' Mostra uma caixa de mensagem
 ' com as coordenadas do ponteiro do mouse
 MsgBox "Coordenada X: " & MouseX & _
 vbNewLine & "Coordenada Y: " & MouseY
End Sub
https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(VS.71).aspx
https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(VS.71).aspx
Referências aos Objetos 
 
 13
3.6 Exercícios
1. Qual das alternativas a seguir é o modo correto de se referenciar o objeto Consulta1?
Objeto Consulta
a. ( ) Screen.Item("Consulta1")
b. ( ) Item("TelaInicial").Item("Consulta1")
c. ( ) Screen.Item("E3Browser1").Item("Consulta1")
d. ( ) Item("E3Browser1").Item("Consulta1")
2. Para sair da aplicação ao pressionar a tecla ESC, crie o seguinte script no evento KeyDown da TelaInicial.
'ESC: Sair da aplicação
If KeyCode = 27 Then
 Application.Exit()
End If
14 
 
 Usuários
4
Usuários
CAPÍTULO
Através desta opção é possível controlar o acesso às Telas, Alarmes, Domínios e E3 Viewers em uma lista de usuários
e grupos. Conforme a opção configurada, a aplicação permite ou não o acesso aos usuários cadastrados.
As permissões de acesso são configuradas por usuário ou por grupos de usuários. Os grupos podem ser criados
contendo apenas usuários ou também outros grupos.
4.1 Login
Login([Mode])
Este método abre uma caixa de diálogo para o login (autenticação de usuário) na aplicação. O usuário logado
permanece na memória até que seja realizado outro login ou logout (saída do usuário da aplicação). Este método
possui o parâmetro Mode, um Booleano que determina se uma mensagem de confirmação ou de falha da operação
deve ser mostrada (o padrão é Falso).
Tela de login
4.2 Administração de Usuários
Apenas o Administrador pode ter acesso ao método UserAdministration. A caixa de diálogo para configuração dos
usuários é acessível somente ao usuário habilitado como Administrador.
Administração de usuários
UserAdministration()
Este método abre uma caixa de diálogo que permite editar a lista de usuários do E3 Server. As funções disponíveis
são as seguintes:
· Mostrar a lista de todos os usuários
· Apagar usuários (não é possível apagar o usuário atual)
· Adicionar e editar usuários
· Editar as configurações de um usuário
· Alterar a senha do usuário
· Alterar os demais dados do usuário (login, nome, etc.)
Usuários 
 
 15
Aba Usuários
4.3 Confirmação de Senha
Para confirmar a senha do usuário logado na aplicação, utilize o método PasswordConfirm.
PasswordConfirm([Mode])
Este método abre uma caixa de diálogo solicitando a confirmação da senha do usuário atualmente logado. O método
retorna Verdadeiro se a senha é confirmada ou Falso caso contrário. O parâmetro Booleano Mode determina se deve
ser executado um logout em caso de falha na confirmação (Verdadeiro) ou não (Falso).
Se a caixa de diálogo é fechada ao clicar em Cancelar, o método retorna Falso. Caso não haja usuário logado, o
método retorna Falso, mas sem abrir a caixa de diálogo. Caso a senha digitada não esteja correta, a solicitação é
repetida até no máximo três vezes. Se o usuário digitar a senha incorreta nestas três vezes, a caixa de diálogo é
fechada e o método retorna Falso.
Confirmação de senha
16 
 
 Usuários
4.4 Bloqueio de Senha
A conta de um usuário pode ser bloqueada nas seguintes condições:
· Se a senha expirar (o tempo de expiração pode ser um atributo global, de grupo ou de usuário)
· Se o usuário digitar a senha errada um determinado número de vezes seguidas, isto é, se ocorrer uma falha de
login
Uma vez bloqueada, a conta não permite login. Esta condição persiste até que um administrador desbloqueie a senha
manualmente ou então o time-out de bloqueio expire.
4.5 Exercícios
4.5.1 Usuários
1. No menu Arquivo, selecione a opção Usuários.
2. Selecione a aba Grupos e crie dois grupos de usuários, chamados "Manutenção" e "Operador".
3. Através da aba Usuário, crie dois usuários. Configure um como pertencente ao grupo Manutenção e outro ao
grupo Operador.
4. Na configuração do usuário pertencente ao grupo Manutenção, selecione a opção Este usuário é um
administrador.
4.5.2 Login
1. Na parte superior da TelaInicial, insira o Texto "Usuário" e ao lado um Display para exibir o nome do usuário
logado.
2. No Display, crie uma Associação entre a propriedade Value e a propriedade User do Viewer.
3. Insira um botão com o texto "Login" na TelaInicial e crie o script a seguir.
'Login
Application.Login(True)
4.5.3 Administração de Usuários
Tela Inicial
1. Ao lado do botão de login, insira um Botão de Comando com o texto "Adm".
2. Neste Botão de Comando, insira o script a seguir.
'Administração de usuários
Application.UserAdministration()
4.5.4 Confirmação de Senha
A cada 10 minutos, o usuário deve confirmar a sua senha.
1. Insira no Viewer um Tag Contador com o nome de "ConfirmarSenha".
2. Configure as seguintes propriedades do Tag Contador:
· AutoRestart: True
· CounterType: 0 - Preset
· Preset: 600
3. No evento OnPreset do Tag Contador, insira o script a seguir.
'Confirmar senha
If Parent.PasswordConfirm(True) = False Then
 'Sair do ViewerParent.Exit()
End If
4. Execute a aplicação e teste a nova funcionalidade.
Usuários 
 
 17
4.5.5 Logout por Inatividade
1. Abra a Janela de Propriedades do Viewer e, na aba Visualizador, configure a verificação de inatividade após cinco
minutos e duas retentativas de login.
Janela de Propriedades do Viewer
2. No evento OnInactive do Viewer, crie o script a seguir.
Logout(False)
MsgBox "Sessão encerrada por inatividade."
18 
 
 Bibliotecas: XObjects e XControls
5
Bibliotecas: XObjects e XControls
CAPÍTULO
O E3 fornece uma ferramenta de bibliotecas do usuário chamada de ElipseX. O uso de bibliotecas no E3 é altamente
recomendável na maioria dos casos, devido ao ganho de produtividade que trazem às aplicações. Algumas das
vantagens dos ElipseX:
· Reutilização de código
· Minimização de testes durante o desenvolvimento
· Criação de interfaces padrão para os objetos desenvolvidos
· Diminuição do tempo de desenvolvimento de novos projetos
· Proteção do conteúdo do projeto
· Hierarquização de objetos
5.1 XControl
Um XControl define uma interface gráfica com o usuário, que pode ser composta de quaisquer objetos do E3 e tem
o propósito de ser multiplicada facilmente pelo projeto.
Aba Design de um XControl
Bibliotecas: XObjects e XControls 
 
 19
Aba Propriedades de um XControl
A edição do objeto gráfico pode ser realizada da mesma forma como é realizada a edição de uma Tela, possuindo os
mesmos recursos gráficos e opções. Pode-se inserir XControls em qualquer Tela, ou ainda dentro de outro XControl.
NOTA
Se o tamanho deste objeto é alterado na aba Design do Editor da Biblioteca e registrado novamente, é necessário
selecionar a opção Tamanho Original no menu contextual da Tela para que a alteração seja visível.
5.2 XObject
Além dos XControls e XFolders, pode-se criar uma biblioteca de dados, denominada XObject. Com esta biblioteca,
pode-se definir uma estrutura de dados que é executada no Servidor. Tal estrutura pode realizar cálculos,
Associações, comunicações, verificação de alarmes ou registro histórico, entre outras tarefas, independente de haver
alguma interface gráfica (E3 Viewer) aberta ou em execução naquele momento.
Aba Propriedades de um XObject
Podem ser inseridos em um XObject quaisquer módulos do E3 que sejam executados no Servidor, a saber:
· Drivers de Comunicação e Drivers de Comunicação OPC
· Tags de Comunicação
· Servidores de Alarmes e Alarmes
· Fórmulas
· Servidores de Dados
· Históricos
Isto permite que se possa definir como uma biblioteca um sistema complexo de gerenciamento, que pode ser
facilmente replicado quantas vezes sejam necessárias em um aplicativo.
IMPORTANTE
Veja que XControls, XFolders e XObjects só podem se relacionar com o mundo externo através das propriedades
(ou ainda através do ponteiro do mouse e teclado, no caso dos XControls). Isto significa que não se pode acessar
dados internos de um XControl, XFolder ou XObject, exceto de dentro do próprio objeto.
5.3 Exercícios
Nestes exercícios, vamos trabalhar com a estrutura XObject-XControl e criar um terceiro objeto de biblioteca, o
XControl ConfigBomba, para a Tela indexada.
20 
 
 Bibliotecas: XObjects e XControls
1. Crie um novo projeto e, através do Assistente de Aplicações, selecione a opção Biblioteca de componentes do
E3. Nomeie a biblioteca como "LibSaneamento". Clique em Avançar, adicione-a ao Domínio ativo e conclua.
5.3.1 XO_Bomba
Este XObject tem as propriedades Velocidade (baixa, média e alta) e Estado (ligado e desligado).
1. Insira um novo XObject na biblioteca, nomeando-o como "XO_Bomba". Insira duas propriedades e configure-as
conforme a figura a seguir.
XObject XO_Bomba
2. Salve o objeto e registre a biblioteca.
5.3.2 XC_Bomba
O XControl XC_Bomba simula o estado de uma bomba, conforme as configurações do XObject XO_Bomba.
1. Insira um novo XControl na biblioteca, com o nome "XC_Bomba".
2. Insira a imagem da bomba, adicionada anteriormente como Recurso.
Bomba
3. Insira os objetos Texto e Display, conforme a figura a seguir.
Bibliotecas: XObjects e XControls 
 
 21
Texto e Display
4. No desenho da bomba, clique com o botão direito do mouse e selecione as opções Converter para símbolo e
Explodir símbolo.
NOTA
Este XControl é inserido dentro da Tela Inicial, sobre as imagens das bombas. Por isto, adapte o tamanho da figura
Bomba com o tamanho das imagens das bombas na Tela, facilitando a futura inserção do objeto.
5. Modifique a propriedade OverrideFillMode para 2 - SolidFill e a propriedade OverrideFillColor para a cor cinza
(RGB(150, 150, 150)).
Propriedades OverrideFillColor e
OverrideFillMode
6. Na aba Propriedades, crie as Propriedades mostradas na figura a seguir.
22 
 
 Bibliotecas: XObjects e XControls
Aba Propriedades
7. Os Textos devem criar o nome do objeto XO_Bomba associado. Na propriedade Value dos Textos, crie uma
Associação Simples com a propriedade Name do objeto XO_Bomba através da propriedade Fonte.
Associação com a propriedade Value
8. O Texto com o nome da bomba pode aparecer em cima ou embaixo da figura, dependendo da posição do
objeto na Tela. Crie uma Associação Simples na propriedade Visible do Texto de baixo com a propriedade
Embaixo do objeto XC_Bomba.
9. Para o Texto de cima, crie uma Associação Simples na propriedade Visible com a expressão "NOT
XC_Bomba.Embaixo".
Associação com as propriedades Value e Visible
10. No objeto que representa a bomba, crie uma Associação Digital na propriedade OverrideFillColor, conforme a
figura a seguir.
Bibliotecas: XObjects e XControls 
 
 23
Associação Digital na propriedade OverrideFillColor
11. No objeto Texto inserido ao lado da bomba, vamos exibir o estado da bomba (On ou Off). Para isto, crie uma
Associação Digital na propriedade Value, conforme a figura a seguir.
Associação Digital na propriedade Value
12. No objeto Display, vamos exibir a velocidade de rotação da bomba. Para isto, vamos alterar a letra (B: Baixa, M:
Média e A: Alta) e a cor do objeto. Para alterar a letra, crie uma Associação por Tabela na propriedade Value
com a Propriedade Velocidade do objeto XO_Bomba, conforme a figura a seguir.
24 
 
 Bibliotecas: XObjects e XControls
Associação por Tabela na propriedade Value
13. Para mudar a cor do Display, crie uma Associação por Tabela da propriedade ForegroundColor com a
propriedade Velocidade.
Associação por Tabela na propriedade ForegroundColor
14. Para que o Display não seja exibido caso a bomba esteja desligada, crie uma Associação Simples da propriedade
Visible do Display com a propriedade Estado do objeto XO_Bomba.
Bibliotecas: XObjects e XControls 
 
 25
Associação Simples na propriedade Visible
15. Salve as modificações e registre a biblioteca.
5.3.3 Tela
1. Sobre cada imagem de bomba na TelaInicial, insira um XControl do tipo XC_Bomba. Ajuste a propriedade
Embaixo conforme desejar.
5.3.4 Dados
Para facilitar futuras lógicas, vamos separar os XObjects XO_Bomba em uma pasta chamada Bombas.
1.No Servidor de Dados, pasta Dados, insira uma Pasta de Dados chamada "Bombas".
2. Para cada bomba na Tela, insira na pasta Bombas um XObject XO_Bomba. Configure as propriedades Name para
"B01"e DocString para "Bomba01" na primeira bomba e nomeie sequencialmente as demais.
Pasta Bombas
26 
 
 Bibliotecas: XObjects e XControls
Propriedades Name e DocString
3. Associe os XControls XC_Bomba da Tela com os XObjects criados.
Associação com os XObjects
4. Configure as propriedades Estado e Velocidade das bombas e verifique a funcionalidade.
5.3.5 XC_Comando
Para alterar as propriedades da bomba, vamos criar um XControl que vai ser utilizado como Tela indexada.
1. Insira um XControl chamado "XC_Comando".
2. Configure-o conforme a figura a seguir. São utilizados três Textos ("Nome", "Comando" e "Velocidade"), um Botão
Liga e Desliga ("ON" e "OFF") e um Botão de Comando ("Velocidade").
Bibliotecas: XObjects e XControls 
 
 27
XControl XC_Comando
3. Crie a propriedade Fonte para acessar as propriedades do XObject XO_Bomba.
Propriedade Fonte
4. No Texto Nome, crie uma Associação Simples na propriedade Value com a propriedade DocString do objeto
XO_Bomba.
28 
 
 Bibliotecas: XObjects e XControls
Associação Simples com a propriedade DocString
5. No Botão Liga e Desliga, crie uma Associação Bidirecional na propriedade Value com a propriedade Estado do
XObject XO_Bomba para alterar o estado da bomba. Na propriedade Caption, crie uma Associação Digital para
alterar o texto do Botão de Comando dependendo do valor da propriedade Estado.
Associações com as propriedades Value e Caption
6. No Botão de Comando, vamos alterar o valor da velocidade de rotação da bomba. Para isto, vamos utilizar o
método SelectMenu do Viewer no evento Click do Botão de Comando e passar o valor retornado para a
propriedade Velocidade.
NOTA
Como o retorno do método SelectMenu começa em 1 (um) e não em 0 (zero) como o valor da Propriedade
Velocidade (0: Baixa, 1: Média e 2: Alta), subtraímos 1 (um) da variável op no script.
op = Application.SelectMenu("Baixa|Média|Alta")
XC_Comando.Fonte.Velocidade = op - 1
7. Na propriedade Caption do Botão Liga e Desliga, crie uma Associação por Tabela para alterar o texto do Botão
de Comando de acordo com o valor da Propriedade Velocidade.
Bibliotecas: XObjects e XControls 
 
 29
Associação com as propriedades Caption e Velocidade
8. Para desabilitar a alteração da velocidade se a bomba estiver desligada, crie uma Associação Simples na
propriedade Enabled com a propriedade Estado.
Associação entre as propriedades Enabled e Estado
9. Salve as modificações e registre a biblioteca.
5.3.6 Tela Indexada
É muito comum termos Telas que se repetem na aplicação. Ao invés de criar várias Telas, vamos criar apenas uma e
configurar de onde buscar os dados. Para este tipo de Tela usamos o nome de Tela Indexada.
1. Crie uma Tela chamada "TelaComando", com o tamanho de 300 por 300 pixels.
2. Insira o XControl XC_Comando nesta Tela.
3. Para abrir a tela de configuração ao clicar em uma bomba, no XControl XC_Bomba insira o script a seguir no
evento Click do objeto que representa a bomba.
Arg = XC_Bomba.Fonte.PathName
Set newScreen = Application.GetFrame("virtualFrame")
newScreen.MoveFrame , , 200, 250
newScreen.SetFrameOptions XC_Bomba.Fonte.Name, 1 + 2 + 16 + 64 + 2048
Set screenObj = Application.GetScreen("TelaComando")
newScreen.ShowScreen screenObj, 100, 0
screenObj.Item("XC_Comando1").Fonte = Arg
30 
 
 Bibliotecas: XObjects e XControls
NOTA
O método GetFrame permite abrir uma Tela em formato pop-up, definindo o seu tamanho através do método
MoveFrame. Já o método GetScreen permite definir uma Tela a ser aberta e sua fonte de dados, ou seja, a instância
do XObject XO_Bomba.
4. Salve a aplicação e teste as novas funcionalidades.
Layer 
 
 31
6
Layer
CAPÍTULO
A propriedade Layer de uma Tela define em quais camadas um objeto de Tela deve aparecer. O valor representa uma
máscara de 32 bits, um bit para cada camada. Portanto, podem ser definidas até 32 camadas individuais. Assim,
objetos de Tela podem ser agrupados logicamente e mostrados ou escondidos apenas modificando a máscara da
propriedade Layer.
Opções disponíveis para a propriedade Layer
BIT2 BIT1 BIT0 LAYER DESCRIÇÃO
0 0 0 0 Esconde todos os
objetos
0 0 1 1 Exibe objetos cuja
propriedade Layer
esteja configurada
como 1
0 1 0 2 Exibe objetos cuja
propriedade Layer
esteja configurada
como 2
0 1 1 3 Exibe objetos cuja
propriedade Layer
esteja configurada
como 1, 2 ou 3
1 0 0 4 Exibe objetos cuja
propriedade Layer
esteja configurada
como 4
1 0 1 5 Exibe objetos cuja
propriedade Layer
esteja configurada
como 1, 4 ou 5
1 1 0 6 Exibe objetos cuja
propriedade Layer
esteja configurada
como 2, 4 ou 6
1 1 1 7 Exibe objetos cuja
propriedade Layer
esteja configurada
como 1, 2, 3, 4, 5, 6
ou 7
NOTA
Para exibir todos os objetos de uma Tela, configure a propriedade Layer da Tela para o valor -1 (menos um).
6.1 Exercícios
1. No objeto XC_Bomba, altere a propriedade Layer dos Textos que exibem o nome do objeto para 2 (dois).
2. Salve a biblioteca e registre-a.
3. Na TelaInicial, insira uma Caixa de Seleção com o texto "Identificação". Altere o nome do objeto para "ckLayer".
4. Na Janela de Propriedades da TelaInicial, aba Associações, crie uma Associação Digital na propriedade Layer da
Tela com a propriedade Value do objeto ckLayer. Configure o campo Ligado para 3 (propriedade Layer ligada)
e o campo Desligado para 1 (propriedade Layer desligada).
32 
 
 Layer
Associação Digital
Adicionando Objetos em Tempo de Execução 
 
 33
7
Adicionando Objetos em Tempo de Execução
CAPÍTULO
Em algumas situações, uma aplicação não tem uma estrutura fixa, precisando criar os objetos necessários em tempo
de execução. Por exemplo, uma aplicação que deve ler uma lista de equipamentos em um banco de dados e
estabelecer uma comunicação com estes equipamentos. Além disto, estes equipamentos variam com o tempo, junto
com suas propriedades.
Se os objetos inseridos em tempo de execução são objetos do servidor (Tags, Drivers, Históricos, Alarmes, etc.), as
modificações podem ser salvas através do comando Save. Objetos de visualização (Telas ou Relatórios, por exemplo)
não podem ser salvos.
7.1 Adicionar Objeto
AddObject(ClassName, [Activate], [ObjectName])
Este método adiciona um novo objeto à aplicação. Os parâmetros deste método estão descritos na tabela a seguir.
Parâmetros disponíveis no método AddObject
NOME DESCRIÇÃO
ClassName Tipo de objeto a ser criado
Activate Indica se o objeto é ativado após sua criação
ObjectName Nome do objeto
Enquanto o objeto estiver ativo, as Associações e os scripts permanecem habilitados. Exemplo:
Set retangulo = Screen.AddObject("DrawRect", True)
retangulo.X = 200
retangulo.Y = 200
retangulo.ForegroundColor = vbRed
Se o objeto é criado com o parâmetro Activate em Falso, mais tarde ele pode ser ativado pelo método Activate.
O tipo do objeto pode ser visualizado na barra de título da Lista de Propriedades.Objeto Retângulo (DrawRect)
34 
 
 Adicionando Objetos em Tempo de Execução
Objeto Tag Interno (InternalTag)
7.2 Evento CustomConfig
O evento CustomConfig é um recurso presente a partir da versão 3.2 do E3. Permite criar assistentes de configuração
das instâncias de um objeto ElipseX no E3 Studio.
Uma opção de configuração aparece no menu contextual das instâncias de objetos ElipseX sempre que existir um
script associado ao evento CustomConfig da definição do objeto ElipseX. Quando a opção é selecionada no menu, o
evento é disparado.
O texto que aparece na opção do menu pode ser informado na propriedade CustomConfigText da definição do
objeto ElipseX. Se esta propriedade estiver em branco, aparece o texto "Configurar", conforme mostra a figura a
seguir.
Adicionando Objetos em Tempo de Execução 
 
 35
Configurando um XControl
NOTA
O script associado ao evento CustomConfig executa no E3 Studio, onde os objetos não estão ativos. Portanto, o
comportamento é diferente do usual.
7.3 Exercícios
Neste exercício é usado o evento CustomConfig do XControl XC_Bomba para criar o XObject e associá-lo à bomba
automaticamente, facilitando a configuração.
7.3.1 CustomConfig
1. No XControl XC_Bomba, selecione o evento CustomConfig e insira o script a seguir.
'Nome da bomba
Nome = InputBox("Digite o nome da Bomba:")
If Nome = "" Then Exit Sub
'Cria o objeto XO_Bomba
Set obj = Application.GetObject("Dados.Bombas")._
 AddObject("XO_Bomba", True, Nome)
obj.DocString = InputBox("Digite uma descrição para a Bomba:")
'Associa o XControl ao XObject
Fonte = obj.PathName
2. Salve as modificações e registre a biblioteca.
3. Na Tela, clique com o botão direito do mouse em uma bomba e selecione a opção Configurar.
36 
 
 Arrays
8
Arrays
CAPÍTULO
Em certas situações é conveniente atribuir mais de um valor relacionado a uma única variável. Para isto, pode-se criar
uma variável que contém uma série de valores, uma variável do tipo Array ou Vetor.
Para declarar uma variável explicitamente, utiliza-se o comando Dim. A declaração de um array utiliza parênteses
contendo sua dimensão. Exemplo:
Dim A(10)
Pode-se atribuir dados a cada um dos elementos de um array usando-se um índice começando em 0 (zero) e
terminando no tamanho declarado (o número de elementos de um array é sempre o número mostrado nos
parênteses mais um). Exemplo:
A(0) = 256
A(1) = 324
A(2) = 100
...
A(10) = 55
Também é possível criar um array utilizando o método Array(arglist) do VBScript. Este comando retorna uma variável
do tipo Variant que contém um array. Os valores devem ser separados por vírgulas. Exemplo:
A = Array(10, 20, 30)
MsgBox A(0)
MsgBox A(1)
MsgBox A(2)
8.1 Exercícios
Neste exercício, vamos programar a opção de copiar as configurações de uma bomba e passá-las para as demais
bombas usando o botão direito do mouse.
1. Crie um Tag Interno no Viewer chamado "CopiarBomba".
2. No XControl XC_Bomba, selecione o grupo com a imagem da bomba e insira o script a seguir no evento
MouseDown.
If Button = 2 Then 'Clique com o botão direito do mouse
 If TypeName(Application.Item("CopiarBomba").Value) = "Empty" Then
 Menu = "Copiar"
 Else
 Menu = "Copiar|Colar"
 End If
 opcao = Application.SelectMenu(Menu)
 If opcao = 1 Then 'Copiar
 'Salva as informações no Tag do Viewer
 Dim arr(2)
 arr(1) = XC_Bomba.Fonte.Estado
 arr(2) = XC_Bomba.Fonte.Velocidade
 Application.Item("CopiarBomba").Value = arr
 ElseIf opcao = 2 Then 'Colar
 'Passa as informações do Tag do Viewer para DadosBomba
 arr = Application.Item("CopiarBomba").Value
 XC_Bomba.Fonte.Estado = arr(1)
 XC_Bomba.Fonte.Velocidade = arr(2)
 End If
End If
3. Salve as modificações e registre a biblioteca.
4. Execute a aplicação e teste a nova funcionalidade.
Bibliotecas: XFolders 
 
 37
9
Bibliotecas: XFolders
CAPÍTULO
Um XFolder é um objeto de servidor que permite organizar ou criar uma hierarquia de objetos nas instâncias criadas.
Os objetos que podem ser inseridos em uma instância de XFolder são Pastas de Dados, Tags de Comunicação,
Consultas, Filtros de Alarmes, instâncias de XFolders e XObjects e Alarmes.
NOTA
Não é permitido inserir objetos na definição de um XFolder, somente em suas instâncias.
9.1 Exercícios
Nestes exercícios, vamos trabalhar com a estrutura XFolder-XControl e criar uma certa hierarquia de objetos.
9.1.1 XF_Tanque
1. Insira um novo XFolder na biblioteca e nomeie-o como "XF_Tanque".
2. Modifique as propriedades FriendlyName e InstanceName, para "Tanque" e "TQ", respectivamente.
3. Vamos inserir uma figura para ser exibida nas instâncias deste objeto. Para isto, insira na propriedade IconPath o
nome do objeto Tanque inserido como Recurso na aplicação.
Propriedades do XFolder
9.1.2 XF_MedidaAnalogica
1. Insira um novo XFolder na biblioteca e nomeie-o como "XF_MedidaAnalogica".
2. Modifique as propriedades FriendlyName e InstanceName, para "MedidaAnalogica".
3. Vamos inserir uma figura para ser exibida nas instâncias deste objeto. Para isto, insira na propriedade IconPath o
nome do objeto MedidaAnalogica inserido como Recurso na aplicação.
4. Crie uma Propriedade chamada "Value", do tipo Double.
38 
 
 Bibliotecas: XFolders
Propriedade Value
5. Salve as modificações e registre a biblioteca.
9.1.3 Dados
Para facilitar futuras lógicas, vamos separar os XFolders XF_Tanque em uma pasta chamada Tanques.
1. No Servidor de Dados, insira uma Pasta de Dados chamada "Tanques" na pasta Dados.
2. Insira um objeto XF_Tanque.
3. Dentro deste objeto XF_Tanque, insira um objeto XF_MedidaAnalogica e modifique seu nome para "Nivel".
4. Repita este procedimento mais sete vezes, totalizando oito objetos XF_Tanque e seus níveis. Utilize os atalhos de
teclado CTRL + C (Copiar) e CTRL + V (Colar) para facilitar o procedimento.
Pasta Tanques
9.1.4 XC_Tanque
1. Insira um novo XControl na biblioteca e nomeie-o como "XC_Tanque".
2. Configure-o conforme a figura a seguir. São utilizados dois Textos ("Nome", "00") e um Retângulo.
Bibliotecas: XFolders 
 
 39
XControl
XC_Tanque
3. Crie a Propriedade Fonte para acessar as propriedades do XFolder XF_MedidaAnalogica.
Propriedade Fonte
4. No objeto Texto para exibir o valor do nível, modifique a formatação para Porcentagem e uma casa decimal.
Formato do Texto
5. Na propriedade Value do Texto, crie uma Associação Analógica com a Propriedade Value do objeto
XF_MedidaAnalogica, conforme a figura a seguir.
40 
 
 Bibliotecas: XFolders
Associação Analógica
6. Na propriedade VerticalPercentFill do Retângulo, crie uma Associação Simples com a Propriedade Value do
objeto XF_MedidaAnalogica.
Associação Simples
7. No Texto Nome, modifique a propriedade Layer para 2 (dois).
8. Ainda no Texto Nome, crie uma Associação Simples na propriedade Value com a Propriedade Name do objeto
XF_Tanque. Como a Propriedade Fonte acessa um objeto XF_MedidaAnalogica, é necessário adicionar a
expressão "Parent", que permite acessar o objeto pai de XF_MedidaAnalogica.
Bibliotecas: XFolders41
Associação Simples
NOTA
A Associação do procedimento anterior aparece em vermelho porque na biblioteca não é possível acessar a
hierarquia de objetos utilizada na aplicação.
9. Salve as modificações e registre a biblioteca.
9.1.5 Tela
1. Na Tela inicial da aplicação, insira oito objetos XC_Tanque, conforme a figura a seguir.
Objetos XC_Tanque
2. Associe as Propriedades Fonte dos objetos XC_Tanque aos objetos Nivel dos objetos XF_Tanque da Pasta
Tanques.
42 
 
 Bibliotecas: XFolders
Associação com a propriedade Fonte
3. Repita a Associação do procedimento anterior para as todos os objetos XC_Tanque da Tela.
IOKit 
 
 43
10
IOKit
CAPÍTULO
O IOKit é um componente compartilhado utilizado pelos Drivers de Comunicação da Elipse Software, implementando
o acesso padrão do nível físico e proporcionando interfaces para Serial, Modem, Ethernet e RAS.
Atualmente o IOKit permite que apenas uma conexão seja aberta para cada Driver. Isto significa que, caso seja
necessário o acesso a duas portas seriais, devem ser adicionados dois Drivers na aplicação e cada um deles
configurado para cada uma das portas seriais.
10.1 Trabalhando Offline
O modo Offline foi planejado para sistemas onde o Driver necessita ser configurado em tempo de execução. Este é o
caso quando simplesmente não se sabe o tipo de conexão ou os parâmetros até que a aplicação esteja em execução.
Em modo Offline, todos os Tags de Comunicação do Driver falham (todas as escritas e leituras). Os únicos Tags
permitidos são os Tags gerais do IOKit (N1/B1 igual a menos um e N2/B2 igual a zero). Embora seja possível chavear
o Driver entre os modos Online e Offline em tempo de execução, geralmente os seguintes passos são necessários:
1. Configure a opção Start driver Offline na janela de propriedades Extras do Driver. Esta opção permite que o
Driver inicie no estado Offline.
2. Configure os parâmetros do Driver em um script da aplicação. O script pode ser executado automaticamente ou
de acordo com uma solicitação do usuário.
3. Configure o Driver para o modo Online.
10.2 Exercícios
Neste exercício vamos alternar o acesso a dois equipamentos (Elipse Modbus Simulator) em tempo de execução,
modificando a porta TCP/IP de acesso.
10.2.1 Simulador Modbus
1. Execute o Elipse Modbus Simulator e insira dois CLPs, conforme a figura a seguir.
Elipse Modbus Simulator
10.2.2 Driver
1. Insira um objeto Driver de Comunicação na aplicação.
2. Configure este Driver para comunicar com o Elipse Modbus Simulator utilizando as seguintes propriedades:
· Aba Modbus
· Modbus Mode: Modbus TCP
· Aba Setup
44 
 
 IOKit
· Physical Layer: Ethernet
· Aba Ethernet
· Main IP: 127.0.0.1
· Port: 502
3. Insira oito Tags de Comunicação e configure-os para ler os endereços de 1 (um) a 8 (oito) do Simulador.
· N1: 1 (um)
· N2: 1 (um)
· N3: 0 (zero)
· N4: De 1 (um) a 8 (oito)
4. Como o Elipse Modbus Simulator varia entre 0 (zero) e 65535 e a variação usada na aplicação deve estar entre 0
(zero) e 100, habilite a escala nos Tags conforme a figura a seguir.
Tags de Comunicação
5. Abra o Tag Browser , selecione o Tag IO.Ethernet.MainPort, que está na pasta IOKit - Parameters na lista
Tags disponibilizados pelo driver, e arraste-o para a lista Tags do projeto corrente.
Tag Browser
6. Teste a conexão.
IOKit 
 
 45
10.2.3 Tanques
1. Na pasta de dados Tanques, em Objetos de Servidor - Objetos de Dados - Dados, selecione o objeto Nivel
dentro do tanque TQ1.
Objeto Nivel
2. Crie uma Associação Bidirecional na propriedade Value com o Tag de Comunicação Nivel1.
Associação Bidirecional
3. Repita esta Associação para os demais objetos Nivel e seus respectivos Tags.
4. Execute a aplicação e teste as novas funcionalidades.
10.2.4 Script
Neste exercício, vamos criar um script para alterar os simuladores acessados através da porta TCP/IP configurada.
1. Na Tela inicial, insira um Botão de Comando.
2. Selecione a aba Scripts e crie um novo script no evento Click.
3. Insira o código a seguir.
46 
 
 IOKit
Set driver = Application.GetObject("Driver1")
Set porta = Application.GetObject("Driver1.[IO.Ethernet.MainPort]")
' Coloca o Driver em modo Offline
driver.Write -1, 0, 0, 4, 0
' Muda a porta TCP/IP
If porta.value = 502 Then
 porta.WriteEx 503
Else
 porta.WriteEx 502
End If
' Coloca o Driver em modo Online
driver.Write -1, 0, 0, 4, 1
4. Execute a aplicação e teste as novas funcionalidades.
Importação e Exportação 
 
 47
11
Importação e Exportação
CAPÍTULO
A ferramenta de importação de objetos do E3 tem como objetivo ler as informações sobre os objetos de um arquivo
CSV (Comma-Separated Values) e recriá-los no ambiente de configuração (E3 Studio). Para cada objeto, é possível
obter informações sobre propriedades, Associações e itens de coleções.
A ferramenta de exportação de objetos do E3 tem como objetivo salvar informações sobre os objetos selecionados
no ambiente de configuração (E3 Studio) para um arquivo CSV. Para cada objeto, podem ser gravadas suas
propriedades, Associações e seus itens de coleções.
Qualquer objeto do E3 pode ser importado ou exportado. O objeto selecionado para a operação é chamado de
objeto raiz. Além dos objetos, as Associações e as coleções também podem ser importadas e exportadas.
NOTA
Os scripts NÃO são exportados, apenas objetos e Associações. Para trabalhar com importação ou exportação é
necessário ter uma licença de E3 Studio.
11.1 Arquivo CSV
Um arquivo CSV (Comma-Separated Values) é um arquivo texto baseado em colunas separadas por um caractere
separador previamente definido. Cada coluna do arquivo CSV representa uma ou mais propriedades de objetos do
E3. Cada linha do arquivo representa um objeto, Associação ou item de coleção. Para que estes arquivos sejam
utilizados corretamente, é preciso observar alguns detalhes:
· A primeira linha do arquivo CSV deve conter um cabeçalho que identifique as colunas corretamente
· O cabeçalho deve ter obrigatoriamente uma coluna que identifica o tipo do objeto que está sendo importado ou
exportado. Esta coluna chama-se ObjectType
· O cabeçalho das demais colunas deve ser o próprio nome da propriedade
· As colunas podem ser colocadas em qualquer ordem no arquivo. Pode haver colunas a mais ou a menos, sem
prejuízo da operação de importação ou exportação. A única coluna obrigatória é ObjectType, porque sem ela
não é possível identificar o tipo de objeto que deve ser criado
11.2 Gerenciador de Modelos
Modelos são arquivos INI utilizados para configurar a ferramenta de importação e exportação, informando, por
exemplo, qual o separador que deve ser utilizado no arquivo CSV e se as Associações dos objetos devem ou não ser
exportadas, entre outras configurações.
O Gerenciador de Modelos é uma ferramenta que auxilia o usuário na criação de um arquivo INI para ser utilizado na
importação ou exportação de objetos do E3.
Na aba Configurações é possível salvar um arquivo de modelo. Quando a opção Salvar as alterações deste modelo
em um arquivo INI é selecionada, define-se o arquivo INI onde as alterações do modelo são salvas, e este arquivo
pode ser reutilizado.
48Importação e Exportação
Aba Configurações
Através da aba Propriedades, o usuário seleciona quais as propriedades dos objetos que deseja utilizar na
importação ou na exportação. O valor inicial da lista é ObjectType. As demais propriedades devem ser adicionadas
manualmente pelo usuário.
Importação e Exportação 
 
 49
Aba Propriedades
Ao clicar em , a janela da figura a seguir é aberta para a seleção de propriedades.
Adicionar propriedades
50 
 
 Importação e Exportação
As propriedades em negrito nesta lista já foram inseridas na lista que define as colunas do arquivo CSV. Clique duas
vezes em uma propriedade para que ela seja adicionada ou removida, dependendo se ela já estava na lista ou não.
As propriedades também podem ser agrupadas. Selecione as que deseja agrupar e clique em . Os nomes das
propriedades são agrupados em uma mesma linha, utilizando o nome da coluna definido para a propriedade que
está no topo da lista.
Consulta 
 
 51
12
Consulta
CAPÍTULO
Neste capítulo vamos abordar o objeto Consulta do E3 (Query), com foco na utilização da edição direta do código
SQL (Structured Query Language), isto é, sem a utilização do Assistente de Configuração de Consultas.
12.1 Criando e Acessando Variáveis
Na janela de configuração da Consulta, na aba Campos, pode-se adicionar filtros diretamente nos campos. Estes
filtros podem ser constituídos de variáveis que são definidas por script, utilizando o método SetVariableValue da
Consulta. A forma de declarar as variáveis depende do tipo de dados que representam:
· <%Nome_da_Variavel%> se o valor é numérico
· '<%Nome_da_Variavel%>' se o valor é uma String
· #<%Nome_da_Variavel%># se o valor é uma data
12.2 Edição Direta do Código SQL
O objeto Consulta do E3, além de criar o código SQL automaticamente através de configuração, também permite que
o usuário defina diretamente a consulta desejada. Para isto, utilize a opção Habilita edição direta do SQL na aba
SQL.
Opção Habilita edição direta do SQL
12.3 Update
Utilize o comando Update para editar campos de uma tabela, respeitando certas condições.
UPDATE Tabela1
 SET Tabela1.Campo = '<%NovoValor%>'
 WHERE Tabela1.Campo = '<%ValorAntigo%>'
12.4 Delete
Utilize o comando Delete na sintaxe SQL a seguir.
DELETE
 FROM Tabela1
 WHERE Tabela1.Campo = '<%Valor%>'
52 
 
 Consulta
NOTA
O método Execute da Consulta deve ser utilizado em um comando SQL que não tenha retorno, como Delete ou
Update. O parâmetro ImmediateExecute indica se a operação passa pelas filas de operações do Banco de Dados
(configurado como Falso) ou se é enviada diretamente para o banco de dados (configurado como Verdadeiro).
12.5 Exercícios
Neste exercício vamos implementar uma Tela para o cadastro de CLPs da aplicação, informando o nome, porta TCP/IP
e endereço IP do equipamento.
12.5.1 Aplicação
1. Insira no projeto um novo Servidor de Dados, chamado "DadosHistorico".
2. Neste Servidor de Dados, insira três Tags Internos chamados "Equipamento", "IP" e "Porta".
Servidor de Dados
3. Insira um objeto Banco de Dados no projeto.
4. Selecione a opção 0 - stAccess na aba Configuração e selecione um nome para o arquivo MDB.
Consulta 
 
 53
Configuração do Banco de Dados
5. Insira um objeto Histórico chamado "HistEquipamento" e crie os campos Equipamento, Porta e IP, configurando
a coluna Fonte de cada um destes campos com seus respectivos Tags Internos criados no Servidor de Dados
DadosHistorico.
6. Não é permitido mais de um registro com o mesmo nome de equipamento, portanto selecione o campo
Equipamento como chave primária utilizando a Caixa de Seleção da coluna Chave Primária .
Configuração do Histórico
7. Abra a Janela de Propriedades do Histórico e configure-o para gravar os dados na tabela
ConfigEquipamento do Banco de Dados, gravando um registro novo a cada 0 (zero) milissegundos.
54 
 
 Consulta
Configuração do Histórico
8. Gere a estrutura da tabela.
Consulta 
 
 55
12.5.2 Tela
Tela de configuração dos equipamentos
1. Insira uma nova Tela no projeto, chamada "TelaEquipamentos", com o tamanho de 500 por 500 pixels.
2. Insira nesta Tela um objeto E3Browser.
3. Configure o E3Browser para exibir a tabela ConfigEquipamento e retornar os campos Equipamento, Porta e IP e
ainda atualizar-se a cada 1000 milissegundos.
4. Abaixo do E3Browser, insira três SetPoints para poder editar o nome do equipamento, sua porta TCP/IP e seu
endereço IP. Identifique cada SetPoint com um Texto.
5. Para facilitar os scripts seguintes, renomeie os SetPoints para "spEquipamento", "spPorta" e "spIP".
6. Crie uma Associação Bidirecional dos SetPoints com seus respectivos Tags em DadosHistorico.
7. Abaixo dos textos, insira três Botões de Comando chamados "Inserir", "Atualizar" e "Remover".
8. Na TelaInicial, insira um Botão de Comando para abrir a TelaEquipamentos.
12.5.3 Inserir
Para inserir um registro no Histórico sem habilitar a gravação por scan, deve-se utilizar o método WriteRecord do
próprio Histórico.
1. Ao clicar em Inserir, o objeto Histórico deve inserir uma linha na tabela. No evento Click do botão Inserir, crie o
script a seguir.
Application.GetObject("HistEquipamento").WriteRecord()
2. Execute a aplicação e cadastre pelo menos dois CLPs, modificando a porta TCP/IP de acordo com os
equipamentos criados no Elipse Modbus Simulator.
56 
 
 Consulta
12.5.4 Atualizar
Para atualizar um registro já existente na tabela, deve-se utilizar o comando Update. O registro que deve ser
modificado é o registro selecionado. Para retornar o valor dos campos de um E3Browser, use o método
GetColummValue.
1. Insira na Tela um objeto Consulta e nomeie-o como "ConsultaUpdate".
2. Na aba SQL, habilite a edição direta e altere o comando existente.
UPDATE ConfigEquipamento
 SET Porta = <%Porta%>, IP = '<%IP%>'
 WHERE Equipamento = '<%Equipamento%>'
3. Deseja-se atualizar a linha selecionada no E3Browser. Para retornar o valor de uma linha do E3Browser, crie o
script a seguir no evento DblClick deste objeto.
Screen.Item("spEquipamento").Value = GetColumnValue(0)
Screen.Item("spPorta").Value = GetColumnValue(1)
Screen.Item("spIP").Value = GetColumnValue(2)
4. No botão Atualizar, adicione o script a seguir no evento Click.
'UPDATE
Screen.Item("ConsultaUpdate").SetVariableValue _
 "Equipamento", Screen.Item("spEquipamento").Value
Screen.Item("ConsultaUpdate").SetVariableValue _
 "IP", Screen.Item("spIP").Value
Screen.Item("ConsultaUpdate").SetVariableValue _
 "Porta", Screen.Item("spPorta").Value
Screen.Item("ConsultaUpdate").Execute(True)
5. Execute a aplicação e teste a nova funcionalidade.
12.5.5 Apagar
Neste exercício, vamos apagar o registro selecionado no E3Browser. Para remover um registro da tabela, use o
comando Delete.
1. Insira na Tela um objeto Consulta e nomeie-o como "ConsultaDelete".
2. Na aba SQL, edite o comando para ocódigo a seguir.
DELETE FROM ConfigEquipamento
 WHERE Equipamento = '<%Equipamento%>'
3. No botão Remover, insira o script a seguir.
'Nome do equipamento
clp = Screen.Item("spEquipamento").Value
'Confirmação do usuário
If MsgBox("Deseja realmente remover o equipamento " & _
 clp & "?", vbYesNo + vbQuestion) = vbYes Then
 Set cs = Screen.Item("ConsultaDelete")
 cs.SetVariableValue "Equipamento", Screen.Item("spEquipamento").Value
 cs.Execute()
End If
4. Execute a aplicação e teste a nova funcionalidade.
GetADORecordSet 
 
 57
13
GetADORecordSet
CAPÍTULO
O método GetADORecordSet da Consulta retorna um Recordset do tipo ADO (ActiveX Data Object), resultante da
execução da Consulta configurada.
O objeto ADORecordset é usado para acessar os registros de uma tabela do banco de dados e possui as
propriedades e métodos descritos nas tabelas a seguir.
Propriedades do objeto ADORecordset
NOME DESCRIÇÃO
BOF Retorna Verdadeiro se a posição do ponteiro é anterior
ao primeiro registro
EOF Retorna Verdadeiro se a posição do ponteiro é posterior
ao último registro
RecordCount Retorna o número de registros na tabela
Métodos do objeto ADORecordset
NOME DESCRIÇÃO
MoveFirst Move o ponteiro para o primeiro registro
MoveLast Move o ponteiro para o último registro
MoveNext Move o ponteiro para o próximo registro
MovePrevious Move o ponteiro para o registro anterior
Para acessar registros individualmente, utilize o comando Fields("NomeCampo"). Exemplo:
Set RS = Screen.Item("Consulta1").GetADORecordset()
For i = 1 To RS.RecordCount
 Campo1 = RS.Fields("Campo1").Value
 Campo2 = RS.Fields("Campo2").Value
 Campo3 = RS.Fields("Campo3").Value
 MsgBox Campo1 & vbTab & Campo2 & vbTab & Campo3
Next
13.1 Exercícios
Neste exercício, vamos alterar o equipamento acessado através da tabela de equipamentos do Banco de Dados.
13.1.1 GetADORecordSet
1. Na Tela inicial, insira um objeto Consulta (Query) com o nome de "ConsultaEquipamento".
2. Configure a Consulta para acessar a tabela ConfigEquipamento e retornar os campos Equipamento, Porta e IP.
3. Na Tela inicial, adicione um Botão de Comando. No evento Click deste objeto, insira o script a seguir.
Set porta = Application.GetObject("Driver1.[IO.Ethernet.MainPort]")
Set driver = Application.GetObject("Driver1")
'Acessa a tabela ConfigEquipamento
Set cs = Screen.Item("ConsultaEquipamento").GetADORecordset()
'Move o ponteiro para o último registro
cs.MoveLast
'Percorre toda tabela
For i = 1 To cs.RecordCount
 equip = cs.Fields("Equipamento").Value & "|" & equip
 'Move para o registro anterior
 cs.MovePrevious
Next
'Exibe o nome de todos os equipamentos registrados
op = Application.SelectMenu(equip)
'Move para o primeiro registro
cs.MoveFirst
For i = 1 To cs.RecordCount
 'Verifica se a linha da tabela contem o nome do CLP selecionado
58 
 
 GetADORecordSet
 If i = op Then
 'Coloca o Driver no modo Offline
 driver.Write -1, 0, 0, 4, 0
 'Muda a porta TCP/IP
 porta.WriteEx cs.Fields("Porta").Value
 'Coloca o Driver no modo Online
 driver.Write -1, 0, 0, 4, 1
 End If
 cs.MoveNext
Next
4. Execute a aplicação e teste a nova funcionalidade.
Storage 
 
 59
14
Storage
CAPÍTULO
O Storage é um módulo historiador do E3 desenvolvido para aperfeiçoar o uso de bancos de dados, permitindo que
uma determinada informação seja armazenada ocupando o menor espaço possível.
Existe todo um conjunto de funcionalidades específicas para este módulo, como consultas pré-construídas e
algoritmos de compactação de dados, entre outros. Através desta ferramenta é possível recuperar com grande
exatidão todas as mudanças nas variáveis de processo, ocupando assim o mínimo de espaço no banco de dados.
O uso do Storage é fortemente recomendado para processos onde o objetivo do registro seja o acompanhamento
de tendências que necessitem manter informações essenciais ao processo. Através de um algoritmo matemático
bastante difundido, o Storage pode fornecer informações relevantes de um determinado processo ocupando menos
espaço em disco do que os dados obtidos por um Histórico gravado periodicamente.
Em processos onde os dados devem ser precisos, como medições usadas para faturamento de insumos (água,
energia ou gás), ou processos onde os dados devem ser integralizados em um período, recomenda-se a utilização de
Históricos convencionais.
14.1 Funcionamento
A gravação no Storage é realizada da seguinte maneira:
· Após a definição da tabela, os dados são gravados de acordo com as configurações. Se houver variação na
qualidade do Tag, os dados também são gravados
· Os dados só não são gravados se a variação ocorreu em um tempo menor do que o tempo mínimo programado
Conforme vão sendo obtidos novos valores para as variáveis, um algoritmo de verificação de gravação interpreta a
sequência e decide se cada ponto é ou não armazenado.
Entretanto, esta verificação só ocorre para os campos analógicos. Para os campos de texto e digitais, basta que haja
uma mudança qualquer de valor ou de qualidade para que sejam gravados.
Para cada tipo de grandeza armazenada, um conjunto de tabelas é gerado automaticamente, um conjunto para os
Tags analógicos, outro conjunto para os Tags de texto e um terceiro conjunto para os Tags digitais. Desta forma,
cada Storage pode gerenciar até sete tabelas (backup), caso seja especificado que os três tipos de Tags devem ser
armazenados.
<NomeTabela>_Fields
<NomeTabela>
<NomeTabela>_Text
<NomeTabela>_Bit
<NomeTabela>_Backup
<NomeTabela>_Text_Backup
<NomeTabela>_Dig_Backup
14.2 Configuração
Quando um Storage é criado em uma Tela, é mostrada uma lista de definições dos campos de gravação, conforme a
figura a seguir.
Campos do Storage
Para efeitos de posterior consulta nos dados, toda a busca é realizada através do caminho do Tag ou da propriedade
que está sendo armazenada (coluna Fonte). A coluna Nome só é utilizada caso a coluna Fonte contenha uma
60 
 
 Storage
expressão. Logo, se expressões não são utilizadas na coluna Fonte, não há necessidade de se importar com a coluna
Nome.
14.3 Consultas Internas
A ferramenta Consulta (Query) prevê algumas facilidades para realizar consultas nos dados de um Storage. Ao
configurar uma Consulta, ao invés de exibir as tabelas, há uma árvore com todas as variáveis armazenadas.
Configuração da Consulta
O usuário pode escolher uma dentre as funções descritas nos tópicos a seguir para consolidação dos dados.
14.3.1 LastValue
Retorna o último valor armazenado no banco de dados.
14.3.2 ArchivedValue
Retorna um valor armazenado em relação a um determinado instante de tempo definido na variável TimeStamp. O tipo
de relação pode ser um dos seguintes:
· Previous: Valor armazenado imediatamente anterior à estampa de tempo fornecida
· Next: Valor armazenado imediatamente posterior à estampa de tempo
· Interpolated: Valor calculado a partir dos valores Previous e Next
· ExactTime: Valor armazenado no exato instante fornecido pela estampa de tempo
14.3.3 TagAttribute
Retorna um atributo do Tag, que pode ser um dos seguintes valores:
· FieldDescription: Significado ou descrição do Tag
· FieldSource: Caminho do Tag sendo armazenado
· FieldType: Tipo de dados (Double, Bit, String ou Integer)
· FieldEU: Unidade de engenharia
· FieldLowEng: Limite inferior
Storage

Continue navegando