E3tutorial Advanced PTB PDF
E3tutorial Advanced PTB PDF
E3tutorial Advanced PTB PDF
I
11.3 Exercícios ........................................................................................................................................... 47
12 Consulta .................................................................................................................................................. 49
12.1 Criando e Acessando Variáveis ....................................................................................................... 49
12.2 Edição Direta do Código SQL .......................................................................................................... 49
12.3 Update ............................................................................................................................................... 49
12.4 Delete ................................................................................................................................................ 49
12.5 Exercícios ........................................................................................................................................... 50
13 GetADORecordSet ................................................................................................................................. 55
13.1 Exercícios ........................................................................................................................................... 55
14 Storage .................................................................................................................................................... 57
14.1 Funcionamento ................................................................................................................................ 57
14.2 Configuração .................................................................................................................................... 57
14.3 Consultas Internas ........................................................................................................................... 58
15 Alarmes ................................................................................................................................................... 60
15.1 Eventos versus Alarmes .................................................................................................................. 60
15.2 Campos do Usuário .......................................................................................................................... 60
15.3 Assinatura Eletrônica ....................................................................................................................... 60
15.4 Exercícios ........................................................................................................................................... 62
16 Relatórios ................................................................................................................................................ 71
16.1 Group Header e Footer .................................................................................................................... 71
16.2 Exercícios ........................................................................................................................................... 71
17 WebViewer ............................................................................................................................................. 74
17.1 Aplicações E3 na Web ...................................................................................................................... 74
17.2 Arquivos E3Web.asp e DocWrite.asp ............................................................................................ 76
17.3 Configurando o Internet Information Services ............................................................................ 76
17.4 Licenças ............................................................................................................................................. 81
17.5 Exercícios ........................................................................................................................................... 82
17.6 Exercícios Complementares ............................................................................................................ 82
18 Event Log Viewer ................................................................................................................................... 84
18.1 Configuração do Armazenamento de Arquivos ........................................................................... 84
18.2 Abertura de Arquivos ...................................................................................................................... 84
18.3 Merge de Eventos ............................................................................................................................ 85
18.4 Filtros ................................................................................................................................................. 85
18.5 Exercícios ........................................................................................................................................... 87
19 E3 Tweak ................................................................................................................................................. 88
19.1 Configurações do E3 Server ............................................................................................................ 88
19.2 Configurações do E3Run ................................................................................................................. 88
19.3 Configurações do REC ..................................................................................................................... 88
19.4 Configurações dos Logs .................................................................................................................. 89
19.5 Configurações do Filtro COM ......................................................................................................... 89
19.6 Exercícios ........................................................................................................................................... 89
II
20 Preparatório para a Certificação .......................................................................................................... 90
III
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
1 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.
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.
Treinamento Avançado 2
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
3 Treinamento Avançado
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 são os seguintes:
· Elipse Knowledgebase
· Elipse Fórum
· Canal de Vídeos
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.
Pesquisa no KB
Canais de Suporte 4
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.
5 Canais de Suporte
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
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 6
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.
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.
7 Canais de Suporte
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])
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
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 12
Aba Usuários
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
13 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)
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()
Opções do Domínio
2. Na aba Segurança, configure as opções conforme a figura a seguir.
Usuários 14
Políticas de segurança
NOTA
Configurações de segurança não são aplicadas aos usuários já existentes, apenas na alteração ou na criação de um
usuário.
15 Usuários
Janela de Propriedades do Viewer
2. No evento OnInactive do Viewer, crie o script a seguir.
Logout(False)
MsgBox "Sessão encerrada por inatividade."
Usuários 16
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.
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.
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.
Bomba
3. Insira os objetos Texto e Display, conforme a figura a seguir.
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)).
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.
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.
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").
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.
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
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.
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).
Layer 28
Associação Digital
29 Layer
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
33 Arrays
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.
Bibliotecas: XFolders 34
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.
35 Bibliotecas: XFolders
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.
Bibliotecas: XFolders 36
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.
37 Bibliotecas: XFolders
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.
Bibliotecas: XFolders 38
Associação com a propriedade Fonte
3. Repita a Associação do procedimento anterior para as todos os objetos XC_Tanque da Tela.
39 Bibliotecas: XFolders
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
IOKit 40
· Modbus Mode: Modbus TCP
· Aba Setup
· 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
41 IOKit
6. Teste a conexão.
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.
IOKit 42
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
43 IOKit
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 (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.
Importação e Exportação 44
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.
45 Importação e Exportação
Aba Propriedades
Ao clicar em , a janela da figura a seguir é aberta para a seleção de propriedades.
Adicionar propriedades
Importação e Exportação 46
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.
11.3 Exercícios
11.3.1 Exportação
1. Clique com o botão direito do mouse em um objeto Driver e selecione a opção Exportar.
Menu Exportar
11.3.2 Importação
1. Clique com o botão direito do mouse no Driver e selecione a opção Importar.
2. Selecione o arquivo CSV criado no exercício anterior.
3. Caso já exista o Tag que foi importado, aparece uma mensagem perguntando se este deve ser sobrescrito ou
ignorado.
47 Importação e Exportação
Aviso de importação
4. Verifique se todos os Tags foram criados com sucesso.
Importação e Exportação 48
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%>'
49 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 50
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.
51 Consulta
Configuração do Histórico
8. Gere a estrutura da tabela.
Consulta 52
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.
53 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 54
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 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
55 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 56
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 (á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
57 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 58
· 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.
59 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 eles, é
possível especificar e gerenciar alarmes e eventos das variáveis de um processo.
Alarmes 60
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 (por exemplo, "Alteração do valor"). Este parâmetro é opcional
e o seu 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
· To: Variant que contém o novo valor do Tag ou o valor a ser aplicado em Action. Este parâmetro é opcional
· User: Texto de retorno. Recebe o nome de login digitado na caixa de diálogo. Este parâmetro é opcional
· Comment: Texto de retorno. Recebe o comentário digitado na caixa de diálogo. Este parâmetro é opcional
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.
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.
61 Alarmes
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, ele é 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 62
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.
63 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 64
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.
65 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 (aba
Área de Alarmes) para salvar o nome da bomba (propriedade Name).
Alarmes 66
Fonte do Campo do Usuário
Tag Interno
2. Abra a Janela de Propriedades do Servidor de Alarmes e configure o campo UserField2 (aba Campos do
Usuário) para salvar o motivo de reconhecimento do Alarme.
67 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 (aba Conexões) com o Servidor de Alarmes criado
anteriormente.
3. Selecione as colunas e cores de sua preferência. 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 seu 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"
3. No E3Alarm, crie uma Associação Múltipla no campo AreaFilter com a expressão 'TelaInicial.cbFiltroAlarme.Value
= "Todos"'.
4. Adicione duas linhas na Associação Múltipla. Para o valor 0 (zero), o filtro deve receber o valor da Lista de
Seleção. Para o valor -1 (menos um), deve receber uma String vazia.
Alarmes 68
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
(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 o E3Browser para exibir a tabela Alarms. Selecione os campos ConditionActive, InTime, OutTime e
AckTime e mais os campos de sua preferência.
4. Para colorir o E3Browser simulando o 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
69 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 70
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 (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 sua
propriedade DataField.
6. Finalize o design do Relatório conforme sua preferência.
71 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 72
'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.
73 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
(Telas, bitmaps, etc.) para a máquina local. Todas as funcionalidades do E3 Viewer (E3Chart, E3Alarm, etc.) são
suportadas pelo WebViewer.
Recursos do Windows
5. Selecione, no mínimo, as opções a seguir e clique em OK.
· Ferramentas de Gerenciamento da Web (Web Management Tools)
· Console de Gerenciamento do IIS (IIS Management Console)
· Scripts e Ferramentas de Gerenciamento do IIS (IIS Management Scripts and Tools)
· Serviço de Gerenciamento do IIS (IIS Management Service)
WebViewer 74
· Serviços da World Wide Web (World Wide Web Services)
· Recursos de Desenvolvimento de Aplicativos (Application Development Features)
· ASP
· 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)
6. O sistema inicia a instalação do software. Aguarde a finalização do processo para configurar o sistema.
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 sua 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.
75 WebViewer
17.2 Arquivos E3Web.asp e DocWrite.asp
Os arquivos E3Web.asp e DocWrite.asp têm a função de carregar e iniciar o ActiveX E3Downloader. O arquivo
e3downloader.cab é o ActiveX que é enviado para a máquina cliente e executa a instalação do arquivo e3webviewer-
x86-ptb.exe. Os arquivos e3web2.asp e docwrite2.asp têm a função de carregar e iniciar o ActiveX do WebViewer que
mostra a aplicação sendo executada 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. Exemplo:
<param name="UseServers" value="False">
A configuração do WebViewer para abrir no modo Somente Leitura é realizada através do parâmetro StartReadOnly.
<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. Exemplo:
<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 76
sobre este assunto podem ser obtidas no artigo Publicando aplicações E3 na Internet com o Microsoft Internet
Information Services do Elipse Knowledgebase.
Documento padrão
4. 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.
77 WebViewer
Adicionar documento padrão
5. Após estes procedimentos, o computador cliente pode acessar o servidor web utilizando o Internet Explorer.
WebViewer 78
Documento padrão
4. 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.
79 WebViewer
Adicionar documento padrão
5. Após estes procedimentos, o computador cliente pode acessar o servidor web utilizando o Internet Explorer.
17.3.3 Windows 10
No Windows 10, siga estes procedimentos:
1. Clique com o botão direito do mouse no menu Iniciar (Start).
2. Clique em Painel de Controle (Control Panel).
3. Clique em Ferramentas Administrativas (Administrative Tools).
4. Abra o item Gerenciador do Serviços de Informações da Internet (Internet Information Services (IIS) Manager).
5. 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.
WebViewer 80
Documento padrão
6. 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.
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.
81 WebViewer
17.5 Exercícios
1. Siga o conteúdo do capítulo e publique uma aplicação E3 na Internet.
WebViewer 82
17.6.2 KB
· KB-32109: Licença para WebViewer
83 WebViewer
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 XP SP3 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 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 da 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.
E3 Tweak 88
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.
89 E3 Tweak
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
Anotações
Anotações
Matriz Filial em São Paulo
Rua Mostardeiro, 322/902 Rua dos Pinheiros, 870/Cj. 141 e 142
90430-000 — Porto Alegre — RS 05422-001 — São Paulo — SP
Fone: (+55 51) 3346-4699 Fone: (+55 11) 3061-2828
Fax: (+55 51) 3222-6226 Fax: (+55 11) 3086-2338
E-mail: [email protected] E-mail: [email protected]
www.elipse.com.br
kb.elipse.com.br
forum.elipse.com.br
www.youtube.com/elipsesoftware
[email protected]