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