Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial Do E3 Avançado - 6.5.162
Tutorial Do E3 Avançado - 6.5.162
I
12 Consulta .................................................................................................................................................. 52
12.1 Criando e Acessando Variáveis ....................................................................................................... 52
12.2 Edição Direta do Código SQL .......................................................................................................... 52
12.3 Update ............................................................................................................................................... 52
12.4 Delete ................................................................................................................................................ 52
12.5 Exercícios ........................................................................................................................................... 53
13 GetADORecordSet ................................................................................................................................. 58
13.1 Exercícios ........................................................................................................................................... 58
14 Storage .................................................................................................................................................... 60
14.1 Funcionamento ................................................................................................................................ 60
14.2 Configuração .................................................................................................................................... 60
14.3 Consultas Internas ........................................................................................................................... 61
15 Alarmes ................................................................................................................................................... 63
15.1 Eventos versus Alarmes .................................................................................................................. 63
15.2 Campos do Usuário .......................................................................................................................... 63
15.3 Assinatura Eletrônica ....................................................................................................................... 63
15.4 Exercícios ........................................................................................................................................... 65
16 Relatórios ................................................................................................................................................ 74
16.1 Group Header e Footer .................................................................................................................... 74
16.2 Exercícios ........................................................................................................................................... 74
17 WebViewer ............................................................................................................................................. 77
17.1 Aplicações E3 na Web ...................................................................................................................... 77
17.2 Arquivos E3Web.asp e DocWrite.asp ............................................................................................ 78
17.3 Configurando o Internet Information Services ............................................................................ 79
17.4 Licenças ............................................................................................................................................. 81
17.5 Exercícios ........................................................................................................................................... 81
17.6 Exercícios Complementares ............................................................................................................ 81
18 Event Log Viewer ................................................................................................................................... 82
18.1 Configuração do Armazenamento de Arquivos ........................................................................... 82
18.2 Abertura de Arquivos ...................................................................................................................... 82
18.3 Merge de Eventos ............................................................................................................................ 83
18.4 Filtros ................................................................................................................................................. 83
18.5 Exercícios ........................................................................................................................................... 85
19 E3 Tweak ................................................................................................................................................. 86
19.1 Configurações do E3 Server ............................................................................................................ 86
19.2 Configurações do E3Run ................................................................................................................. 86
19.3 Configurações do REC ..................................................................................................................... 86
19.4 Configurações dos Logs .................................................................................................................. 87
19.5 Configurações do Filtro COM ......................................................................................................... 87
19.6 Exercícios ........................................................................................................................................... 87
20 Preparatório para a Certificação .......................................................................................................... 88
II
CAPÍTULO
Treinamento Avançado
1
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
Treinamento Avançado 1
Tela de visualização de alarmes
O usuário também pode inserir, atualizar e remover registros em um 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.
2 Treinamento Avançado
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
Treinamento Avançado 3
CAPÍTULO
Canais de Suporte
2
A Elipse Software possui alguns recursos online para ajudá-lo a tirar dúvidas e buscar informações sobre produtos.
Os recursos disponíveis estão descritos nos tópicos a seguir.
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.
4 Canais de Suporte
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 resultados da busca. Dentro destas categorias
existem várias subcategorias, cada uma delas tratando de um tema específico.
Canais de Suporte 5
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 uma 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
6 Canais de Suporte
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
Canais de Suporte 7
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.
8 Canais de Suporte
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.
Canais de Suporte 9
CAPÍTULO
Referências aos Objetos
3
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
Objetos de Servidor
· Application.GetObject("Dados.TagInterno1"): Tag Interno do Servidor de Dados
· Application.GetObject("BancoDados"): Banco de Dados
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
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
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
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
4.1 Login
Login([Mode], [PosX], [PosY], [WindowShowLastCredentials])
Este método abre uma caixa de diálogo para o login, ou autenticação de usuário, na aplicação. O usuário logado
permanece na memória até que seja realizado outro login ou logout, ou saída do usuário da aplicação. Os parâmetros
deste método, todos opcionais, são os seguintes:
· Mode: Um Booleano que determina se uma mensagem de confirmação ou falha da operação deve ser mostrada.
Se este parâmetro é omitido, a mensagem de confirmação ou falha de operação não é mostrada. Quando uma
Tela estiver para ser aberta, através do método OpenScreen, este método verifica se existe alguma configuração
de segurança. Caso exista, a Tela só é aberta se o usuário logado tem permissão. Caso não tenha permissão,
abre-se uma caixa de diálogo para o login
· PosX: Indica a posição, em pixels, da caixa de diálogo em relação à margem esquerda da janela. Caso este
parâmetro seja omitido, a respectiva coordenada da caixa de diálogo é centralizada na janela
· PosY: Indica a posição, em pixels, da caixa de diálogo em relação à margem superior da janela. Caso este
parâmetro seja omitido, a respectiva coordenada da caixa de diálogo é centralizada na janela
· WindowShowLastCredentials: Um Booleano que indica se, ao selecionar a autenticação pelo Windows, os
campos de usuário e senha são completados com o usuário atualmente logado no Windows. Se este parâmetro é
omitido, os campos de usuário e senha são completados
NOTA
Caso ambos os parâmetros PosX e PosY sejam omitidos, a caixa de diálogo é centralizada na janela.
Tela de login
14 Usuários
· Mostrar a lista de todos os usuários
· Excluir usuários (não é possível excluir o usuário atual)
· Adicionar e editar usuários
· Editar as configurações de um usuário
· Alterar a senha de um usuário
· Alterar os demais dados de um usuário, tais como login e nome
Caso os parâmetros PosX e PosY sejam omitidos, a respectiva coordenada da caixa de diálogo é centralizada na
janela, e caso algum dos valores destes parâmetros posicionem a caixa de diálogo fora da área visível da janela, os
valores são automaticamente ajustados para garantir que a caixa de diálogo esteja visível. Este método retorna
Verdadeiro se não houve nenhum problema na edição e Falso caso contrário.
Usuários 15
PasswordConfirm([Mode], [PosX], [PosY])
Este método abre uma caixa de diálogo solicitando a reconfirmação da senha do usuário atualmente logado. Retorna
Verdadeiro se a senha é confirmada ou Falso caso contrário. O parâmetro opcional Mode determina se deve ser
executado um logout em caso de falha na confirmação (Verdadeiro) ou não (Falso). Se omitido, não é executado um
logout em caso de falha de confirmação. O parâmetro opcional PosX indica a posição, em pixels, da caixa de diálogo
em relação à margem esquerda da janela. Caso este parâmetro seja omitido, a respectiva coordenada da caixa de
diálogo é centralizada na janela. O parâmetro opcional PosY indica a posição, em pixels, da caixa de diálogo em
relação à margem superior da janela. Caso este parâmetro seja omitido, a respectiva coordenada da caixa de diálogo
é centralizada na janela. Caso os valores indicados nos parâmetros PosX e PosY posicionem a caixa de diálogo fora da
área visível da janela, estes valores são ajustados automaticamente para garantir que a caixa de diálogo esteja visível.
Confirmação de senha
Se a caixa de diálogo é fechada clicando em Cancelar, este método retorna Falso. Caso não haja usuário logado, este
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 este método retorna Falso.
NOTA
Este método só está disponível se o usuário logado é um usuário do Domínio do E3.
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.
NOTA
As opções do grupo Segurança da janela de configurações do Domínio não se aplicam aos usuários do Windows,
apenas aos usuários do Domínio do E3.
4.5 Exercícios
4.5.1 Usuários
1. Selecione o menu Arquivo - Usuários. Caso a aplicação não tenha nenhum usuário cadastrado, clique em OK na
caixa de diálogo que se abre para criar um usuário administrador.
2. Selecione o item Usuários e crie mais um usuário.
3. Selecione o item Grupos e crie dois grupos de usuários, chamados "Manutenção" e "Operador".
4. Configure o usuário administrador criado inicialmente para pertencer ao grupo Manutenção e o outro usuário
para pertencer ao grupo Operador.
16 Usuários
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. Neste Display, crie uma Associação entre a propriedade Value e a propriedade User do Viewer.
3. Insira um Botão de Comando com o texto "Login" na TelaInicial e crie o script a seguir.
'Login
Application.Login(True)
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()
Usuários 17
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 Usuários
CAPÍTULO
Bibliotecas: XObjects e XControls
5
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.
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.
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.
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.
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.
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
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").
Propriedade Fonte
4. No Texto Nome, crie uma Associação Simples na propriedade Value com a propriedade DocString do objeto
XO_Bomba.
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.
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
Layer 33
CAPÍTULO
Adicionando Objetos em Tempo de Execução
7
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.
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.
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
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
Arrays 37
CAPÍTULO
Bibliotecas: XFolders
9
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: XFolders 41
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.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.
Bibliotecas: XFolders 43
CAPÍTULO
IOKit
10
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.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.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
IOKit 47
CAPÍTULO
Importação e Exportação
11
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 do 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 do E3 Studio para um arquivo CSV. Para cada objeto, podem ser gravadas as
propriedades, Associações e os 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.
48 Importaçã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 esta propriedade seja adicionada ou removida, dependendo se 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.
Importação e Exportação 51
CAPÍTULO
Consulta
12
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.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 os 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
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)
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 o código a seguir.
DELETE FROM ConfigEquipamento
WHERE Equipamento = '<%Equipamento%>'
Consulta 57
CAPÍTULO
GetADORecordSet
13
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
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 a 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 contém 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
GetADORecordSet 59
CAPÍTULO
Storage
14
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, como por
exemplo á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.
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 61
· FieldHighEng: Limite superior
· FieldDeadBand: Banda morta para gravação
· FieldDeadBandUnit: Unidade de banda morta (absoluta ou percentagem)
· FieldMinRecTime: Tempo mínimo para gravação
· FieldMaxRecTime: Tempo máximo para gravação
· FieldSize: Tamanho do campo
· FieldVARTYPE: Tipo de dados nativo do campo
· FieldScanTimeMs: Tempo de varredura usado para refazer o gráfico do Tag
14.3.4 CompressedDataNValues
Retorna, para um único Tag, N valores definidos pela variável NumVals, armazenados a partir de um instante inicial,
definido pela variável StartTime.
14.3.5 CompressedDataStartEndTime
Retorna, para um único Tag, os valores armazenados entre intervalos definidos pelas variáveis StartTime e EndTime.
14.3.6 SampledData
Retorna, para um ou mais Tags, os valores interpolados, ou seja, estimados entre instantes definidos pelas variáveis
StartTime e EndTime, a intervalos fixos definidos pela variável TimeInterval.
14.3.7 CalculatedData
Retorna, para um ou mais Tags, o resultado de operações matemáticas aplicadas aos dados entre os instantes
definidos pelas variáveis StartTime e EndTime, a intervalos fixos definidos pela variável TimeInterval. Os tipos de
cálculos são Total, Mínimo, Máximo, Desvio Padrão, Amplitude, Média e Mediana.
62 Storage
CAPÍTULO
Alarmes
15
O E3 dispõe de um conjunto de objetos que permite ao usuário monitorar Alarmes em uma aplicação. Com estes
objetos, é possível especificar e gerenciar Alarmes e Eventos das variáveis de um processo.
Alarmes 63
Assinatura Eletrônica
ESign(ObjName, [Description], [Action], [From], [To], [User], [Comment])
· ObjName: Texto que contém o nome de um Tag ou outro objeto da aplicação
· Description: Texto que contém a descrição de ObjName. Este parâmetro é opcional e, se omitido, busca os
dados da propriedade DocString de ObjName
· Action: Texto que contém a ação a ser executada, como por exemplo "Alteração do valor". Este parâmetro é
opcional e o valor padrão é uma String vazia
· From: Variant que contém o valor original ou o estado que vai ser alterado. Este parâmetro é opcional e o valor
padrão é uma String vazia
· To: Variant que contém o novo valor do Tag ou o valor a ser aplicado em Action. Este parâmetro é opcional e o
valor padrão é uma String vazia
· User: Texto de retorno. Recebe o nome de login digitado na caixa de diálogo. Este parâmetro é opcional e o
valor padrão é uma String vazia
· Comment: Texto de retorno. Recebe o comentário digitado na caixa de diálogo. Este parâmetro é opcional e o
valor padrão é uma String vazia
Ao clicar em , abre-se uma janela que permite autenticar o usuário. Se a opção Windows é selecionada, os campos
Nome do usuário e Senha são automaticamente desabilitados. Clique em Outro usuário para selecionar um usuário
pertencente ao domínio de rede. Caso a opção E3 seja selecionada, digite as informações de um usuário pertencente
ao Domínio do E3 nos campos Nome do usuário e Senha.
64 Alarmes
Login integrado
Este método retorna Verdadeiro se o usuário clicar em OK, e se os campos Usuário e Senha são válidos. Se a caixa
de diálogo é cancelada ou se o login ou a senha estiverem errados, após três tentativas o método retorna Falso. Em
caso de falha, os parâmetros User e Comment são configurados para uma String vazia.
Os comentários pré-definidos são guardados no Registro do Windows. Apenas os últimos 26 comentários são salvos.
Cada vez que a janela é criada, os últimos comentários são buscados no Registro e usados para preencher a lista de
seleção. Se um novo comentário é informado pelo usuário, este é salvo e o mais antigo é descartado, caso não haja
posição livre. Se um comentário pré-definido é utilizado, este passa a ser o primeiro da lista de comentários mais
recentes.
15.4 Exercícios
Neste exercício, vamos monitorar o nível dos tanques e, caso esteja fora do valor esperado, gerar um Alarme.
Desejamos salvar na tabela de Alarmes a descrição do tanque e também o motivo de reconhecimento do Alarme.
Alarmes 65
15.4.2 Configuração de Alarmes
Todo tanque deve ter um Alarme monitorando a informação de nível.
1. Insira nas instâncias do XFolder XF_MedidaAnalogica (Nivel) um Alarme Analógico.
Alarme Analógico
NOTA
Ao criar este Alarme, automaticamente a propriedade Fonte é configurada para monitorar a propriedade Value do
objeto Nivel, conforme a figura a seguir.
66 Alarmes
Configuração do Alarme Analógico
3. No objeto Nivel, modifique a propriedade IsAlarmArea para o valor True.
4. Repita os procedimentos anteriores para todos os objetos Nivel. Pode-se arrastar o Alarme criado para outro
objeto Nivel com a tecla CTRL pressionada, de forma a copiar o Alarme.
NOTA
Não esqueça de configurar a propriedade IsAlarmArea de todos os objetos Nivel para o valor True.
Alarme Digital
4. Na aba Digital deste Alarme, configure a opção Valor para 2 (dois) e as mensagens do Alarme como desejar.
Alarmes 67
Configuração do Alarme Digital
NOTA
Para modificar a opção Valor para 2 (dois), modifique o tipo de dados desta opção para Integer.
15.4.3 XC_Bomba
Sempre que a velocidade de rotação da bomba estiver alta, vamos sinalizar para a operação através de uma imagem
na Tela.
1. No XControl XC_Bomba, adicione a imagem Alarme, inserida como Recurso na galeria de imagens.
Figura Alarme
2. Na propriedade Visible da figura Alarme, insira uma Associação Simples com a expressão a seguir.
68 Alarmes
Associação Simples
NOTA
Trabalhe com os comandos Copiar (CTRL + C) e Colar (CTRL + V). Para editar uma Associação criada anteriormente,
use a tecla F2.
15.4.4.1 Tanques
1. No objeto Nivel de TQ1, abra a Janela de Propriedades e, na aba Área de Alarmes, configure o Campo
UserField1 para salvar o nome do objeto Tanque.
15.4.4.2 Bombas
1. Abra a Janela de Propriedades da Área Bombas do XObject XO_Bomba e configure o Campo UserField1, na aba
Área de Alarmes, para salvar o nome da bomba, na propriedade Name.
Alarmes 69
Fonte do Campo do Usuário
Tag Interno
2. Abra a Janela de Propriedades do Servidor de Alarmes e configure o Campo UserField2, na aba Campos do
Usuário, para salvar o motivo de reconhecimento do Alarme.
70 Alarmes
Servidor de Alarmes
15.4.5 E3Alarm
1. Na parte inferior da TelaInicial, insira um objeto E3Alarm.
2. Configure a coluna Servidor de Alarmes da Conexão padrão, na aba Conexões, com o Servidor de Alarmes
criado anteriormente.
3. Selecione as colunas e cores como preferir. Não se esqueça de selecionar o Campo de Usuário 1 (UserField1) e o
Campo de Usuário 2 (UserField2).
Vamos configurar uma opção de Filtro através de uma Lista de Seleção. Caso seja selecionado o item Todos, não
deve haver Filtro. Caso contrário, deve exibir apenas a Área selecionada na Lista de Seleção.
1. Insira, ao lado do objeto E3Alarm, uma Lista de Seleção (Combo Box) e altere o nome para "cbFiltroAlarme".
2. No evento OnStartRunning, insira o script a seguir para preencher a Lista de Seleção.
'Limpar a lista
Clear()
'Adicionar itens
AddItem "Todos"
AddItem "Nivel"
AddItem "Bomba"
Alarmes 71
Associação Múltipla
5. Teste a nova funcionalidade.
15.4.7 E3Browser
Os Alarmes gravados na tabela de Alarmes são visualizados em um E3Browser. Para separar os tipos de informação,
ou seja, entrada, reconhecimento e saída do Alarme, mudaremos a cor do texto da linha.
1. Insira uma nova Tela, chamada "TelaAlarmes", com o tamanho de 500 por 500 pixels.
2. Insira um E3Browser nesta Tela.
3. Configure este E3Browser para exibir a tabela Alarms. Selecione os Campos ConditionActive, InTime, OutTime e
AckTime e mais os Campos que desejar.
4. Para colorir o E3Browser simulando um E3Alarm, no evento OnDrawRow insira o script a seguir.
ConditionActive = GetColumnValue(0)
InTime = GetColumnValue(1)
OutTime = GetColumnValue(2)
AckTime = GetColumnValue(3)
'Alarme ativo
If ConditionActive = 1 Then
'Entrada de alarme ou reconhecimento
If AckTime = "00:00:00" Then 'Entrada
RowTextColor = vbRed
Else 'Reconhecimento
RowTextColor = vbBlue
End If
Else
72 Alarmes
'Saída de alarme ou reconhecimento
If AckTime = "00:00:00" Then 'Saída
RowTextColor = vbMagenta
Else 'Reconhecimento
RowTextColor = vbBlack
End If
End If
Alarmes 73
CAPÍTULO
Relatórios
16
O Relatório é um componente ActiveX chamado ActiveReport, que permite a visualização e impressão de valores
instantâneos de variáveis do sistema e dados armazenados em bancos de dados, tais como Alarmes, Históricos,
Consultas e Fórmulas. Para utilizar o Relatório, clique com o botão direito do mouse no item Visualização - Relatórios
do Organizer, em modo Domínio, selecione a opção Inserir Relatório em e em seguida o nome do projeto
desejado.
O Relatório também utiliza o objeto Consulta. Este objeto permite que seja especificada a origem dos dados do
banco de dados que são visualizados no Relatório.
Um Relatório contém várias Seções. Cada Seção do Relatório contém um grupo de controles que são processados e
impressos ao mesmo tempo, como uma unidade.
16.2 Exercícios
16.2.1 Relatório
1. Insira um Relatório no projeto, chamado "RelatorioAlarmes".
2. Clique com o botão direito do mouse no objeto Consulta1 do Relatório e selecione a opção Configurar.
3. Selecione o Banco de Dados e, na sequência, a tabela Alarms.
4. Selecione o campo E3TimeStamp e mais os campos que desejar.
5. Para cada campo selecionado na Consulta, insira um Campo de Dados na Seção Detail e configure a propriedade
DataField.
6. Finalize o design do Relatório conforme desejar.
74 Relatórios
Inserir expressão em um Campo
3. Copie o campo E3TimeStamp da Seção Detail para a Seção GroupFooter1.
4. Para calcular o número de registros no minuto modifique, no Campo de Dados E3TimeStamp no GroupFooter1,
as propriedades conforme a figura a seguir.
Propriedades de E3TimeStamp
5. À frente do Campo de Dados, insira um texto fixo com a expressão "Número de alarmes no minuto".
16.2.3 Imprimir
1. Na TelaAlarmes, insira um Botão de Comando e altere a propriedade Caption para "Imprimir".
2. Insira um Pick do tipo Imprimir Relatório e selecione o RelatorioAlarmes para ser impresso na Tela.
16.2.4 Exportar
Para que o usuário selecione o nome e o diretório do arquivo que vai ser gerado, vamos abrir uma caixa de diálogo.
1. Na TelaAlarmes, insira um Botão de Comando e altere a propriedade Caption para "Exportar".
2. Crie o script a seguir.
Relatórios 75
'Exportar
If Application.ShowFilePicker(False, NomeArquivo,"pdf", _
128, "Arquivos PDF|*.pdf|Todos os arquivos|*.*") Then
Set Report = Application.LoadReport("RelatorioAlarmes")
Report.Export "PDF", NomeArquivo
End If
Filtro de arquivos
9. O filtro é sempre um par de Strings separadas por uma barra vertical (o caractere "|"), em que o primeiro item é
o nome que aparece para o usuário e o segundo é uma identificação para o sistema operacional.
10. Substitua o parâmetro Filter pela expressão "Arquivos PDF|*pdf|Todos os arquivos|*.*".
11. O arquivo só pode ser gerado se o usuário clicar em Salvar. Se o usuário cancelar a ação, nada deve acontecer.
No início do comando ShowFilePicker, digite "If" e ao final digite "Then".
12. Para exportar o Relatório, selecione no AppBrowser o item Tarefas - Carregar relatório - RelatorioAlarmes e, à
direita, o método Export.
Set Report = Application.LoadReport("RelatorioAlarmes")
Report.Export([ExportFilter], [ExportFileName])
13. Substitua o parâmetro ExportFilter por "PDF" e o parâmetro ExportFileName pela variável NomeArquivo, criada
anteriormente.
14. Teste a nova funcionalidade da aplicação.
76 Relatórios
CAPÍTULO
WebViewer
17
O WebViewer é um componente ActiveX que permite ao navegador comportar-se como o E3 Viewer, visualizando e
controlando aplicações E3 via Internet. Desta forma, é possível visualizar e interagir com um processo de chão de
fábrica através do Internet Explorer, que pode estar em qualquer computador da rede que tenha acesso ao E3 Server.
Depois de instalado, o WebViewer funciona exatamente como o E3 Viewer, executando o download da aplicação, tais
como Telas e bitmaps, para o computador local. Todas as funcionalidades do E3 Viewer, tais como E3Chart e
E3Alarm, são suportadas pelo WebViewer.
WebViewer 77
· Extensões ISAPI (ISAPI Extensions)
· Filtros ISAPI (ISAPI Filters)
· Recursos Http Comuns (Common Http Features)
· Conteúdo Estático (Static Content)
· Documento Padrão (Default Document)
· Redirecionamento de HTTP (HTTP Redirection)
· Segurança (Security)
· Autenticação Básica (Basic Authentication)
· Filtragem de Solicitações (Request Filtering)
O servidor verifica se o cliente tem um WebViewer instalado e atualizado. Se não existir, o pacote do WebViewer é
enviado para instalação no cliente.
Aviso de Segurança
Quando o usuário confirmar o aviso de segurança, o plug-in é instalado. O componente é assinado pela Elipse
Software, e o usuário deve aceitar a instalação para que se iniciem as configurações necessárias.
No acesso seguinte não é mais necessário instalar os componentes, e o tempo de conexão é mais rápido.
78 WebViewer
mostra a aplicação em execução na máquina do Internet Explorer. Todos estão disponíveis para configuração do
usuário. Estes arquivos estão localizados no diretório onde o E3 foi instalado, na pasta web.
A página docwrite2.asp vem configurada considerando-se que o E3 Server está executando no mesmo computador
que o servidor web. Porém, é possível alterar o código fonte desta página para atender a configuração desejada. Para
mais informações, consulte o Manual do Usuário do E3. É possível editar o arquivo docwrite2.asp incluindo algumas
configurações. Caso se queira permitir ao usuário informar uma Tela inicial válida, diferente da configurada no
Domínio, deve-se alterar a linha a seguir, colocando em Nome_da_tela um nome de Tela válido na aplicação.
<param name="Screen" value="Nome_da_tela">
Caso se queira informar a necessidade de se executar o comando ping para o servidor antes de tentar a conexão,
deve-se alterar a linha a seguir. O valor pode ser True ou False.
<param name="Ping" value="True">
Caso seja preciso que o WebViewer procure por outros servidores na rede se não conseguir conectar ao servidor
especificado no parâmetro Domain, deve-se alterar o parâmetro UseServers no arquivo docwrite2.asp. Se o parâmetro
não é informado, o WebViewer tenta se conectar apenas ao servidor especificado no parâmetro Domain, que é o
comportamento padrão do WebViewer (valor "True"). A alteração do valor para "False" só funciona para servidores e
WebViewers que estejam na mesma rede, conforme o exemplo a seguir.
<param name="UseServers" value="False">
A configuração do WebViewer para abrir no modo Somente Leitura é realizada através do parâmetro StartReadOnly,
conforme o exemplo a seguir.
<param name="StartReadOnly" value="False">
Em ambos os casos, esta configuração só tem efeito na abertura do WebViewer. Se o parâmetro é mudado durante
a execução, a conexão ou reconexão do WebViewer não é afetada.
Para se navegar para uma página diferente do padrão após o carregamento do WebViewer, deve-se modificar o
atributo value do parâmetro URLToLoad do arquivo docwrite.asp para o endereço desejado, conforme o exemplo a
seguir.
<param name="URLToLoad" value="URL">
NOTA
Caso o parâmetro InstallACP esteja configurado com o valor "False", as Telas da aplicação que utilizem MS Forms
podem apresentar erros durante o carregamento, se os objetos MS Forms não tenham sido previamente instalados
por outros aplicativos, como por exemplo o Microsoft Office.
WebViewer 79
E3 Server e IIS no mesmo servidor
17.3.1 Windows 10
No Windows 10 ou superior, siga estes procedimentos:
1. Clique no menu Iniciar (Start).
2. Selecione a pasta Ferramentas Administrativas do Windows (Windows Administrative Tools).
3. Clique em Gerenciador do Serviços de Informações da Internet (Internet Information Services (IIS) Manager).
4. Selecione o item Site da Web Padrão (Default Web Site) no painel Conexões (Connections) e selecione a opção
Documento Padrão (Default Document) no quadro central.
Documento padrão
5. Clique em Abrir Recurso (Open Feature) e em Adicionar (Add) no painel Ações (Actions), digite "e3web.asp" no
campo Nome (Name) e clique em OK.
80 WebViewer
Adicionar documento padrão
6. Após estes procedimentos, o computador cliente pode acessar o servidor web utilizando o Internet Explorer.
17.4 Licenças
Deve-se considerar o número de licenças para acesso, pois cada WebViewer conectado consome uma licença de E3
Viewer como se estivesse fora do Internet Explorer. Sempre que necessário, podem ser adquiridas novas licenças de
E3 Viewer, possibilitando um maior número de acessos simultâneos.
17.5 Exercícios
1. Siga o conteúdo do capítulo e publique uma aplicação E3 na Internet.
WebViewer 81
CAPÍTULO
Event Log Viewer
18
O Elipse Event Log Viewer é um sistema de logs desenvolvido pela Elipse Software. Os processos do E3 usam um
formato binário para gravação de eventos, disponível para sistemas operacionais Windows 10 ou superiores e, para
sistemas anteriores, os logs são gravados em arquivos de texto.
Os arquivos são armazenados em formato estruturado, que permite uma série de funcionalidades, tais como filtros,
gravação de mensagens binárias, ordenamento e pesquisa.
O Event Log Viewer é um controle ActiveX que pode ser integrado ao E3, para que seja possível o acompanhamento
dos processos do E3 de dentro de uma aplicação e possui um serviço de controle e gerenciamento de arquivos pelo
sistema, que garante a manutenção de um tamanho máximo de arquivos em disco sem esgotamento do espaço
disponível.
Para utilizar o Event Log Viewer, selecione o menu Ferramentas - Log Viewer no E3 Studio ou clique com o botão
direito do mouse no ícone do E3 Admin na Área de Notificações do Windows e selecione o menu Atalhos - Log
Viewer .
18.4 Filtros
Esta seção contém informações sobre a filtragem de eventos no Event Log Viewer.
Isto significa que apenas são exibidos eventos que satisfaçam à equação lógica a seguir.
(Process == 0xC48 OR 0x9C8) AND Module == MANAGER______
18.5 Exercícios
1. Abra o Event Log Viewer.
2. Selecione o arquivo com a data atual para ser visualizado.
3. Realize testes de filtros por mensagem e por tempo.
86 E3 Tweak
19.4 Configurações dos Logs
Definir o Tempo Mínimo da Função de Gravar Logs
É possível definir o tempo mínimo para logar uma função nos logs Full. Funções que durarem menos que este tempo
não são logadas.
19.6 Exercícios
1. Altere o número de retentativas de leitura do dispositivo de proteção para 10 retentativas.
E3 Tweak 87
CAPÍTULO
Preparatório para a Certificação
20
Leituras recomendadas:
· Como o E3 funciona
· Noções de VBScript no Software E3: Introdução
· Usando Bibliotecas no E3: Introdução
· Usando o E3 Viewer no E3: Introdução
· Usando Bancos de dados no E3: Introdução
www.elipse.com.br
kb.elipse.com.br
forum.elipse.com.br
www.youtube.com/elipsesoftware
elipse@elipse.com.br