E3 v3.5 Build352 Documentation e3tutorial Certification Ptb

Embed Size (px)

Citation preview

Tutorial Preparatrio para Certificao do E3

2011 Elipse Software Ltda. Todos os direitos reservados. 16/08/2011 - Verso 3.5

Sumrio1 Preparao para a Certificao 1.1 Exerccios 1.2 Anotaes 2 Referncias aos Objetos 2.1 Application 2.2 Objetos do Servidor 2.3 Mtodo Item 2.4 Comando Set 2.5 Eventos 2.6 Exerccios 2.7 Anotaes 3 Usurios 3.1 Login 3.2 Administrao de Usurios 3.3 Confirmao de Senha 3.4 Bloqueio de Senha 3.5 Exerccios 3.6 Anotaes 4 Bibliotecas 4.1 XControl 4.2 XObject 4.3 Exerccios 4.4 Anotaes 5 Layer 5.1 Exerccios 5.2 Anotaes 6 Adicionando Objetos em Tempo de Execuo 6.1 Adicionar Objeto 6.2 Evento CustomConfig 6.3 Exerccios 6.4 Anotaes 7 Arrays 7.1 Exerccios 7.2 Anotaes 8 Simulador Modbus 8.1 Simulador 8.2 Exerccios 8.3 Anotaes 9 IOKit 9.1 Trabalhando Offline 9.2 Exerccios 9.3 Anotaes 5 6 7 8 8 9 9 10 10 11 12 13 13 14 15 16 16 20 21 21 22 23 29 30 31 32 33 33 34 35 36 37 37 39 40 40 42 44 45 45 45 50

10 Consulta 10.1 Criando e Acessando Variveis 10.2 Edio Direta do Cdigo SQL 10.3 Update 10.4 Delete 10.5 Exerccios 10.6 Anotaes 11 GetADORecordSet 11.1 Exerccios 11.2 Anotaes 12 Alarmes 12.1 Eventos Versus Alarmes 12.2 Campos do Usurio 12.3 Exerccios 12.4 Anotaes 13 Associaes 13.1 CreateLink 13.2 Exerccios 13.3 Anotaes

51 51 52 52 52 53 57 58 59 61 62 62 62 64 69 70 70 71 73

CAPTULO

Preparao para a CertificaoIremos discutir durante o treinamento os seguintes itens: Referncias aos Objetos: Referncia a objetos do Servidor e do Viewer. Comandos Item e Set. Eventos de scripts. Usurios: Login, administrao de usurios, confirmao de senha, bloqueio de usurio, inatividade. Bibliotecas: XObject, XControl, Combo Box, Option Button, Tela Indexada. Layer: Camadas. Adicionando objetos em tempo de execuo: AddObject, TypeName, CustomConfig. Arrays: Copiar configurao de objetos. Simulador Modbus: ModSim32. IOKit: Trabalhando Offline, Driver em Biblioteca. Consulta: Consulta. Criando e Acessando Variveis, Edio Direta do Cdigo SQL, Update e Delete. GetADORecordSet: Buscado resultados de uma Consulta. Alarmes: Campos do usurio, Assinatura Eletrnica, evento OnDrawRow do E3Browser. Associaes: CreateLink (simples e analgico).

1

Prepara o para a Certific a o

5

1.1 ExercciosEsta seo contm exerccios sobre o contedo deste captulo.

1.1.1 Projeto1. Crie uma nova aplicao padro com o nome "PreparatorioCertificao". Responda No pergunta sobre comunicao com equipamentos e Sim para armazenar dados em banco de dados e para monitorar alarmes. Salve os alarmes em disco.

1.1.2 TelaInicial1. Configure como figura de fundo da tela a figura FundoQuimica, inserida como Recurso.

6

Prepara o para a Certific a o

1.2 Anotaes

Prepara o para a Certific a o

7

CAPTULO

Referncias aos ObjetosOs Objetos so componentes de software reutilizveis que permitem maximizar o uso e aumentar a qualidade e produtividade em seus aplicativos. Um objeto no E3 encapsula ou contm trs diferentes partes (propriedades, mtodos e eventos) que podem ser manipuladas para a utilizao das vantagens de sua funcionalidade na aplicao. Propriedades definem atributos de um objeto, como a aparncia de um objeto de Tela ou o valor inicial de um objeto quando o aplicativo iniciado. Mtodos so funes que realizam uma ao especfica dentro de ou com um objeto. Eventos so notificaes geradas por um objeto em resposta a alguma ocorrncia em particular, como um clique de mouse ou uma mudana no valor de um tag, entre outros. Uma das caractersticas mais importantes ao se trabalhar com scripts dentro do E3 considerar a separao existente entre os processos que so executados no Servidor e aqueles executados na interface do Cliente (E3 Viewer).

2

2.1 ApplicationA palavra Application representa a aplicao como um todo e pode indicar tanto funes que so executadas no E3 Viewer quanto no Servidor. No caso, o objeto Application sabe de antemo quais funes devem ser executadas tanto para um quanto para outro caso. No possvel, entretanto, executar funes de E3 Viewer dentro do Servidor, assim como tambm no possvel executar funes de Servidor dentro do E3 Viewer. Exemplo: Application.ChangePassword: Mtodo do Viewer que permite alterar a senha do usurio atual. Application.Trace(mensagem): Mtodo do Servidor que escreve em um arquivo texto.

8

Refernc ias aos Objetos

2.2 Objetos do ServidorPara se acessar um objeto que est sendo executado no Servidor a partir de um Objeto de Tela ou um ElipseX, deve-se usar o mtodo Application.GetObject. Exemplo:

Objetos do Servidor Application.GetObject("Dados.TagInterno1"): Tag Interno do Servidor Dados. Application.GetObject("BancoDados"): Banco de Dados.

2.3 Mtodo ItemO mtodo Item retorna a referncia para o objeto filho do objeto que o chamou. Este mtodo pode buscar um objeto tanto pelo nome quanto pelo ndice (inteiro). Se o ndice ou o nome especificado for vlido, o mtodo Item retorna a referncia do objeto. Caso contrrio, o mtodo retorna um erro de parmetro invlido. Exemplo:

Objetos Screen.Item("E3Browser1"): Objeto E3Browser que est dentro da tela. Screen.Item("E3Browser1").Item("Consulta1"):Objeto Consulta que est dentro do E3Browser.

Refernc ias aos Objetos

9

2.4 Comando SetO VBScript implementa o conceito das linguagens orientadas a objeto, permitindo que uma varivel do tipo Variant assuma a forma de um objeto qualquer, atravs do comando Set. Deste modo, a varivel funciona como um ponteiro para o objeto desejado, permitindo acessar seus mtodos e propriedades. Exemplo:Set retangulo = Screen.Item("Retangulo1") retangulo.BackgroudColor = RGB(255, 0, 0) 'Sem o comando Set, a mesma chamada teria que ser Screen.Item("Retangulo1").BackgroundColor = RGB(255, 0, 0)

Aparentemente, no existe vantagem neste caso, pois se pode fazer tudo em uma nica linha de cdigo. Porm, se logo abaixo, no mesmo script, outras operaes forem necessrias, o processo se torna mais simples e rpido se a chamada ao mtodo Item no tiver sido colocada 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

2.5 EventosEventos so notificaes geradas por um objeto em resposta a alguma ocorrncia em particular, como um clique de mouse ou uma mudana no valor de um tag, entre outros. Alguns exemplos de eventos esto listados nas sees a seguir.

2.5.1 KeyDownKeyDown (KeyCode, Shift) Ocorre no momento em que uma tecla pressionada, independentemente do foco na Tela. KeyCode: Nmero inteiro que identifica o caractere ASCII da tecla que foi pressionada. Shift: Mostra a tecla pressionada juntamente com o mouse. 4: Tecla SHIFT, 8: Tecla CTRL, 12: Teclas CTRL + SHIFT. Exemplo:Sub Tela1_KeyDown(KeyCode, Shift) 'Mostra uma caixa de mensagem quando o usurio pressiona uma tecla MsgBox "Cdigo da tecla: " & KeyCode End Sub

10

Refernc ias aos Objetos

2.5.2 MouseDownMouseDown (Button, ShiftState, MouseX, MouseY) Ocorre quando se pressiona qualquer boto do mouse sobre a Tela. Utilize o evento MouseDown para determinar aes especficas quando a Tela for clicada pelo usurio. Button: 1: O boto do mouse pressionado o esquerdo. 2: O boto do mouse pressionado o direito. ShiftState: Mostra a tecla pressionada juntamente com o mouse. 4: Tecla SHIFT, 8: Tecla CTRL, 12: Teclas CTRL + SHIFT. MouseX: Mostra a posio X onde o mouse foi clicado na Tela. MouseY: Mostra a posio Y onde o mouse foi clicado na Tela. Exemplo:MsgBox "Coordenada X: " & MouseX & vbNewLine & "Coordenada Y: " & MouseY

2.6 Exerccios1. Qual das alternativas o modo correto de se referenciar o objeto Consulta1?

Referncia ao objeto Consulta1 2. Para sair da aplicao ao apertar a tecla ESC, crie um script no evento KeyDown da TelaInicial.'ESC: Sair da aplicao If KeyCode = 27 Then Application.Exit() End If

Refernc ias aos Objetos

11

2.7 Anotaes

12

Refernc ias aos Objetos

CAPTULO

UsuriosAtravs desta opo possvel controlar o acesso a Telas, Alarmes, Domnios e Viewer em uma lista de usurios e grupos. Conforme a opo configurada, o sistema permitir ou no o acesso aos usurios cadastrados. As permisses de acesso so configuradas por usurio ou por grupos de usurios. Os grupos podem ser criados contendo apenas usurios ou tambm outros grupos.

3

3.1 Login

Tela de Login Login(Mode) Abre uma caixa de dilogo para o login (autenticao de usurio) na aplicao. O usurio logado permanece na memria at que seja feito outro login ou logout (sada do usurio da aplicao). Este mtodo possui o parmetro Mode, que um booleano que determina se uma mensagem de confirmao ou falha da operao dever ser mostrada (o padro False).

Usurios

13

3.2 Administrao de UsuriosApenas o Administrador pode ter acesso ao mtodo UserAdministration. A caixa de configurao dos usurios acessvel somente ao usurio habilitado como Administrador. O usurio Administrador no pode se excluir e no pode marcar seu tipo para no Administrador.

Dados do Usurio UserAdministration() Este mtodo abre uma caixa de dilogo que permite editar a lista de usurios do E3 Server. As funes disponveis so: Mostrar a lista de todos os usurios. Apagar usurios (no possvel apagar o usurio atual). Adicionar e editar usurios. Editar as configuraes de um usurio. Alterar a senha do usurio. Alterar os demais dados do usurio (login, nome, etc.).

14

Usurios

Configurao de Usurios

3.3 Confirmao de SenhaPara confirmar a senha do usurio logado na aplicao utilizamos o mtodo PasswordConfirm. PasswordConfirm(Mode) O mtodo abre uma caixa de dilogo solicitando a confirmao da senha do usurio atualmente logado. O mtodo retorna True se a senha for confirmada, ou False, caso contrrio. O parmetro booleano Mode determina se deve ser dado um logout em caso de falha na confirmao (True) ou no (False). Se a caixa de dilogo for fechada atravs do boto Cancelar, o mtodo retorna False. Caso no haja usurio logado, o mtodo retorna False, mas sem abrir a caixa de dilogo. Caso a senha digitada no esteja correta, a solicitao repetida at no mximo trs vezes. Se o usurio digitar a senha incorreta nestas trs vezes, a caixa de dilogo fechada e o mtodo retorna False.

Usurios

15

Confirmao de senha do usurio

3.4 Bloqueio de SenhaA conta de um usurio pode ser bloqueada nas seguintes condies: Se a senha expirar (o tempo de expirao pode ser atributo global, de grupo ou de usurio). Se o usurio digitar a senha errada um determinado nmero de vezes seguidas, isto , falha de login. Uma vez bloqueada, a conta no permite login. Esta condio persiste at que um administrador desbloqueie a senha manualmente ou ento o timeout de bloqueio expire.

3.5 ExercciosEsta seo contm exerccios sobre o contedo do captulo.

3.5.1 Usurios1. No menu Arquivo, selecione a opo Usurios. 2. Acesse a aba Grupos e crie dois grupos de usurios, chamados Manuteno e Operador. 3. Atravs da aba Usurio crie dois usurios. Configure um como pertencente ao grupo Manuteno e outro ao grupo Operador.

16

Usurios

3.5.2 Login1. Insira o texto "Usuario" e ao lado um Display para exibir o nome do usurio logado. 2. No Display, faa uma associao da propriedade Value com a propriedade User do Viewer. 3. Insira um boto com o texto "Login" na TelaInicial e insira o seguinte script.'Login Application.Login(true)

3.5.3 Administrao de Usurios1. Ao lado do boto de login, insira um boto com o texto "Adm". 2. No boto, insira o seguinte script:'Administrao de usurios Application.UserAdministration()

3.5.4 Opes de Segurana1. Clique com o boto direito do mouse no cone do E3 na barra de ferramentas e acesse a opo Domnio - Opes.

Opes do Domnio 2. Na aba Segurana, configure as opes conforme a figura a seguir.

Usurios

17

Aba Segurana

NOTA: Configuraes de segurana no sero aplicadas aos usurios j existentes, apenas na alterao ou na criao de um usurio.

3.5.5 Confirmao de SenhaA cada 10 minutos, o usurio deve confirmar a sua senha. 1. Insira no Viewer um Tag Contador com o nome de ConfirmarSenha. 2. Configure o Tag Contador: AutoRestart: True CounterType: 0 - Preset Preset: 600 3. No evento OnPreset do Tag Contador, insira o seguinte script:'Confirmar senha If Parent.PasswordConfirm(True) = False Then 'Sair do Viewer Parent.Exit() End If

18

Usurios

4. Execute a aplicao e teste suas funcionalidades.

3.5.6 Logout por Inatividade1. Acesse as propriedades do Viewer e na aba Visualizador configure para verificar inatividade aps cinco minutos e duas retentativas de login.

Verificao de Inatividade 2. No evento OnInactive do Viewer, crie o seguinte script.Logout(false) MsgBox "Sesso encerrada por inatividade."

Usurios

19

3.6 Anotaes

20

Usurios

CAPTULO

BibliotecasO E3 fornece uma ferramenta de bibliotecas do usurio chamada de ElipseX. O uso de bibliotecas no E3 altamente recomendvel na maioria dos casos, devido ao ganho de produtividade que elas trazem s aplicaes. Algumas das vantagens dos ElipseX: Reutilizao de cdigos. Minimizao de testes durante o desenvolvimento. Criao de interfaces padro para os objetos desenvolvidos. Diminuio do tempo de desenvolvimento de novos projetos. Proteo do contedo do projeto.

4

4.1 XControlO XControl define uma interface grfica com o usurio, que pode ser composta de quaisquer objetos do E3, e ter o propsito de ser multiplicada facilmente por seu projeto.

XControl A edio do objeto grfico pode ser feita da mesma forma como feita a edio de

Bibliotec as

21

uma Tela, possuindo os mesmos recursos grficos e opes. Pode-se inserir os XControls em qualquer Tela, ou ainda dentro de outro XControl.

NOTA: Se o tamanho deste objeto for alterado na view de Design da Biblioteca e registrado novamente, ser necessrio acessar a opo Tamanho Original no seu menu de contexto da Tela para que a alterao aparea.

4.2 XObjectAlm dos Objetos grficos XControls, pode-se criar uma biblioteca de dados, denominada XObject. Com ela, pode-se definir uma estrutura de dados, que ser executada no Servidor. Tal estrutura poder realizar clculos, associaes, comunicaes, verificao de alarmes, registro histrico, etc., que independam de que alguma interface grfica (Viewer) esteja aberta ou sendo executada naquele momento.

XObject Podem ser inseridos num XObject quaisquer mdulos do E3 que sejam executados no Servidor, a saber: Driver de Comunicao e Driver de Comunicao OPC Servidor de alarmes e Alarmes Frmulas Servidor de Dados Histricos Isto permite que se possa definir como uma biblioteca um sistema complexo de gerenciamento, que poder ser facilmente replicado quantas vezes forem necessrias em um aplicativo.

22

Bibliotec as

IMPORTANTE: Veja que tanto os XControls quanto os XObjects s podero se relacionar com o mundo externo atravs das propriedades (ou ainda atravs do mouse e teclado, no caso dos XControls). Isso significa que no se pode acessar dados internos de um XObject ou XControl seno de dentro do prprio objeto.

4.3 ExercciosNesses exerccios vamos trabalhar com a estrutura XObject-XControl e criar um terceiro objeto de biblioteca, XControl ConfigBomba, para a tela indexada. 1. Crie um novo projeto, e atravs do Assistente de Projetos selecione a opo Biblioteca de componentes do E3. Nomeie a biblioteca como LibQuimica. Avance, adicione-a ao Domnio corrente e conclua.

4.3.1 DadosBombaEsse XObject ter as propriedades Ligado, Velocidade (baixa, mdia e alta) e Rotao. A propriedade Ligado habilita ou no a propriedade Rotao, que varia de 0 a 100 conforme a propriedade Velocidade. 1. Insira um novo XObject na biblioteca, nomeando-o como DadosBomba. Insira trs propriedades e configure-as conforme a figura.

XObject DadosBomba 2. Para simular a rotao, insira um Servidor de Dados no XObject chamado Dados. 3. Na pasta Dados, insira um Tag Demo com o nome de Rotacao do tipo Rampa de Descida (tipo 5 - RampDown) e Scan de 200 ms. 4. O valor da rotao deve estar acessvel atravs da propriedade do XObject. Crie uma associao reversa na propriedade Value do Tag Demo com a propriedade Rotacao do objeto DadosBomba. 5. A rotao s deve estar habilitada se a bomba estiver ligada. No tag Rotacao, crie uma associao simples na propriedade Enabled com a propriedade Ligado do objeto DadosBomba. 6. A velocidade de um Tag Demo est associado ao seu perodo. Crie uma associao por tabela na propriedade Period do tag Rotacao com a propriedade Velocidade do objeto DadosBomba. Bibliotec as 23

Associao por Tabela 7. Salve o objeto e registre a biblioteca.

4.3.2 BombaO XControl Bomba ir simular um movimento de rotao, conforme as configuraes do XObject DadosBomba. A imagem da bomba na tela pode estar na horizontal ou na vertical, sendo necessria uma lgica para escolher onde exibir o nome do objeto. 1. Insira um novo XControl na biblioteca, com o nome Bomba. 2. Desenhe a bomba conforme o modelo da figura a seguir. O desenho da bomba pode ser encontrado na Galeria (Pumps).

Bomba 3. Na aba Propriedades, crie as propriedades abaixo:

Propriedades 4. Clique com o boto direito do mouse na figura diversas vezes, escolhendo na sequncia Converter para smbolo, Explodir smbolo e Desagrupar. 5. Selecione as imagens do centro que simulam a rotao da bomba e agrupe-as. 6. Insira uma animao por rotao e simule o movimento de incio ao fim. Verifique se a propriedade RotationAngle est em 359, Enabled e EnabledSlider em False.

24

Bibliotec as

Rotao da bomba 7. Crie uma associao na propriedade Value na animao com a propriedade Rotacao do objeto DadosBomba.

Associao

NOTA: O valor da animao varia no intervalo das propriedades RangeMin e RangeMax (padro de 0 a 100) e o tag associado animao deve estar na mesma escala ou deve-se utilizar uma associao analgica para a converso.

8. Os textos devem mostrar o nome do objeto DadosBomba associado. Na propriedade Value dos textos, crie uma associao simples com a propriedade Name de DadosBomba.

Associao 9. O texto com o nome da bomba pode aparecer em cima ou embaixo da figura, dependendo da posio do objeto na tela. Crie uma associao na propriedade Visible do texto de baixo com a propriedade Embaixo da Bomba. 10.Para o texto de cima, cria uma associao na propriedade Visible do com a expresso NOT Bomba.Embaixo.

Associao 11.Salve as modificaes e registre a biblioteca.

Bibliotec as

25

4.3.3 Tela1. Sobre cada imagem de bomba na tela, insira um XControl Bomba. Para as bombas na vertical, altere a propriedade Angle para 90. Ajuste a propriedade Embaixo conforme desejar.

4.3.4 DadosPara facilitar futuras lgicas, vamos separar os XObjects DadosBombas em uma pasta chamada Bombas. 1. No Servidor, pasta Dados, insira uma Pasta de Dados chamada Bombas. 2. Para cada Bomba na tela, insira na pasta Bombas um XObject DadosBomba. Configure a propriedade Name e DocString. 3. Associe o XControl Bomba da tela com o XObject criado.

Associao 4. Configure as propriedades Ligado e Velocidade das bombas e verifique as funcionalidades.

4.3.5 ConfigBombaPara poder alterar as propriedades da bomba, vamos criar um XControl que ser utilizado como tela indexada. Usaremos os MSForms Option Button e Combo Box. 1. Insira um XControl chamado ConfigBomba. 2. Configure-o conforme a figura a seguir. So utilizados trs Textos (Nome, Descrio e Velocidade), dois Option Buttons (Ligado e Desligado) e um Combo Box.

26

Bibliotec as

XControl ConfigBomba 3. Crie a propriedade a seguir.

Propriedades 4. No texto Nome crie uma associao simples na propriedade Value com a propriedade Name do objeto DadosBomba. 5. No texto Descrio crie uma associao simples na propriedade Value com a propriedade DocString do objeto DadosBomba. 6. No Option Button Ligado crie uma associao bidirecional na propriedade Value com a propriedade Ligado do objeto DadosBomba. 7. Para que os Option Buttons no permitam mais de uma escolha simultnea, selecione ambos e configure a propriedade GroupName para GrupoLigado.

NOTA: Todos os objetos que pertencem ao mesmo grupo so mutuamente exclusivos, ou seja, apenas um pode estar com o valor verdadeiro.

8. Para o Combo Box iniciar preenchido , crie o script a seguir no evento OnStartRunning.Clear() AddItem "Alta" AddItem "Mdia" AddItem "Baixa"

NOTA: Para no inserir itens repetidos na lista de seleo (Combo Box), uma das opes sempre apagar os registros existentes antes de inserir novos.

Bibliotec as

27

9. No Combo Box crie uma associao bidirecional na propriedade ListIndex com a propriedade Velocidade do objeto DadosBomba. 10.Salve as modificaes e registre a biblioteca. 11.Crie uma tela chamada TelaConfigBomba com o tamanho de 300 x 300 pixels. 12.Insira o XControl ConfigBomba na tela.

4.3.6 Tela Indexada muito comum termos telas que se repetem na aplicao. Em vez de criarmos vrias telas, criamos apenas uma e configuramos de onde buscar os dados. Para esse tipo de tela usamos o nome de Tela Indexada. 1. Para abrir a tela de configurao ao clicar em uma bomba, no XControl Bomba agrupe as figuras e insira o seguinte script no vento Click do grupo.Arg = Bomba.DadosBomba.PathName Application.DoModal "TelaConfigBomba", "", 0, 0, , , Arg, 1 + 2 + 64 + 2048

2. Quando a TelaConfigBomba for aberta ter um argumento para utilizar, que o nome da bomba da qual desejamos visualizar as informaes. Esse argumento deve ser passado ao XControl inserido na tela. No evento OnPreShow da tela, crie o seguinte script.Item("ConfigBomba1").DadosBomba = Arg

3. Salve a aplicao e teste as funcionalidades.

28

Bibliotec as

4.4 Anotaes

Bibliotec as

29

CAPTULO

LayerA propriedade Layer de uma Tela define em quais camadas o objeto deve aparecer. O valor representa uma mscara de 32 bits, um bit para cada camada. Portanto, podem ser definidas at 32 camadas individuais. Assim, objetos podem ser agrupados logicamente e mostrados ou escondidos apenas com a modificao da mscara da propriedade Layer.

50 0 1 1

BIT2 0 0 0 0

BIT1 0 1 0 1

BIT0 0 1 2 3

LAYER Camada 1 Camada 2

DESCRIO

Camadas 3. Exibe tambm as camadas 1 e 2. Camada 4 Camada 5. Exibe tambm a camada 1. Camada 6. Exibe tambm a camada 2. Camada 7. Exibe tambm as camadas de 1 a 6.

1 1

0 0

0 1

4 5

1

1

0

6

1

1

1

7

30

Lay er

5.1 Exerccios1. No objeto Bomba, altere a propriedade Layer dos textos que exibem o nome do objeto para 2. 2. Salve a biblioteca e registre. 3. Na TelaInicial, insira um checkbox com o texto "Identificao". Altere o nome do CheckBox para ckLayer. 4. Nas propriedades da TelaInicial, aba Associaes, crie uma associao digital no Layer da tela com a propriedade Value do objeto ckLayer. Se ligado, a propriedade Layer ser igual a 3. Se desligado , a propriedade Layer ser igual a 1.

Associao digital

Lay er

31

5.2 Anotaes

32

Lay er

CAPTULO

Adicionando Objetos em Tempo de ExecuoAlgumas vezes a aplicao no tem uma estrutura fixa, precisando criar os objetos que deseja em tempo de execuo. Por exemplo, uma aplicao que deve ler uma lista de equipamentos em um banco de dados e criar uma comunicao com esses equipamentos. Esses equipamentos variam com o tempo, junto com suas propriedades. Se os objetos inseridos em tempo de execuo so objetos do servidor (Tags, Drivers, Histricos, Alarmes, etc.), as modificaes podem ser salvas atravs do comando Save . Objetos de visualizao (Telas, Relatrios) no podem ser salvos.

6

6.1 Adicionar ObjetoAddObject(strClassName, bActivate) Este mtodo adiciona um novo objeto aplicao. strClassName: tipo de objeto que ser criado. bActivate: indica se o objeto ser ativado aps a criao. Quando o objeto estiver ativado, os links e os scripts ficam habilitados. Se o objeto for criado com bActivate em False, mais tarde ele pode ser ativado pelo mtodo Activate. Exemplo:Set retangulo = Screen.AddObject("DrawRect", True) retangulo.X = 200 retangulo.Y = 200 retangulo.ForegroundColor = vbRed

O tipo do objeto pode ser visto na Lista de Propriedades.

Adic ionando Objetos em Tempo de Exec u o

33

Objeto Retngulo (DrawRect)

Objeto Tag Interno (InternalTag)

6.2 Evento CustomConfigO evento CustomConfig um recurso presente a partir da verso 3.2 do Elipse E3. Permite criar Wizards de configurao das instncias de um objeto ElipseX dentro do E3 Studio. Uma opo de configurao ir aparecer no menu de contexto das instncias de ElipseX sempre que existir um script associado ao evento CustomConfig da definio do ElipseX. Quando a opo selecionada no menu, o evento disparado. O texto que aparece na opo do menu pode ser informado na propriedade

34

Adic ionando Objetos em Tempo de Exec u o

CustomConfigText da definio do ElipseX. Se esta propriedade estiver em branco, aparecer o texto "Configurar".

Configurar o XControl NOTA: O script associado ao evento CustomConfig roda no E3 Studio, onde os objetos no esto ativos. Portanto, o comportamento ser diferente do usual.

6.3 ExercciosUsaremos o evento CustomConfig do XControl Bomba para criar o XObject e associ-lo bomba automaticamente, facilitando a configurao.

6.3.1 CustomConfig1. No XControl Bomba, acesse o evento CustomConfig e insira o seguinte script:'Nome da bomba Nome = InputBox("Digite o nome da Bomba:") If Nome = "" Then Exit Sub 'Cria objeto DadosBomba Set obj = Application.GetObject("Dados.Bombas").AddObject("DadosBomba", True) obj.Name = Nome obj.DocString = InputBox("Digite uma descrio para a Bomba:") 'Associa o XControl ao XObject criado DadosBomba = obj.PathName

2. Salve as modificaes e registre a biblioteca. 3. Na Tela, clique com o boto direito do mouse sobre uma bomba e escolha a opo Configurar.

Adic ionando Objetos em Tempo de Exec u o

35

6.4 Anotaes

36

Adic ionando Objetos em Tempo de Exec u o

CAPTULO

ArraysAlgumas vezes conveniente atribuir mais de um valor relacionado a uma nica varivel. Para isso, pode-se criar uma varivel que contm uma srie de valores, uma varivel do tipo Array ou Vetor. Para declarar uma varivel explicitamente, utiliza-se o comando Dim. A declarao de um array utiliza parnteses contendo sua dimenso. Exemplo:Dim A(10)

7

Pode-se atribuir dados a cada um dos elementos de um array usando-se um ndice comeando do zero e terminando no tamanho declarado (o nmero de elementos do array sempre o nmero mostrado nos parnteses mais um). Exemplo:A(0) = 256 A(1) = 324 A(2) = 100 ... A(10) = 55

Tambm possvel criar um array utilizando o mtodo Array(arglist) do VBScript. Este comando retorna uma varivel do tipo Variant que contm um array. Os valores devero ser separados por vrgula. Exemplo:A = Array(10, 20, 30) MsgBox A(0) MsgBox A(1) MsgBox A(2)

7.1 ExercciosProgramaremos a opo de copiar as configuraes de uma bomba e passar para as demais usando o boto direito do mouse. 1. Crie um Tag no Viewer chamado CopiarBomba. 2. No XControl Bomba, acesse o grupo com a imagem da bomba e insira o seguinte script no evento MouseDown:

Array s

37

If Button=2 Then 'Clique com o boto 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 informaes no Tag do Viewer Dim arr(2) arr(1) = Bomba.DadosBomba.Ligado arr(2) = Bomba.DadosBomba.Velocidade Application.Item("CopiarBomba").Value = arr ElseIf opcao = 2 Then 'Colar 'Passa as informaes do tag do Viewer para DadosBomba arr = Application.Item("CopiarBomba").Value Bomba.DadosBomba.Ligado = arr(1) Bomba.DadosBomba.Velocidade = arr(2) End If End If

3. Salve as modificaes e registre a biblioteca. 4. Execute a aplicao e teste sua nova funcionalidade.

38

Array s

7.2 Anotaes

Array s

39

CAPTULO

Simulador ModbusO programa ModSim32 um simulador do protocolo Modbus e pode ser encontrado para download em diversos sites da internet.

8

8.1 Simulador1. Execute o programa ModSim32.exe. 2. Crie um mapa de memria escolhendo o menu File - New.

Menu File - New 3. Na parte superior da janela, podem ser configurados: Address: Endereo inicial do mapa de memria. Length: Quantidade de endereos do mapa de memria. Device Id: Identificao do equipamento na rede (Address). MODBUS Point Type: Tipo do mapa da memria a ser simulado.

40

Simulador Modbus

Configuraes 4. Para escrever um valor em registro, d um duplo clique no endereo e escreva o novo valor no campo Value.

Escrita de valor 5. Os registros podem simular valores automaticamente. Aps o duplo clique no endereo, aperte o boto Auto Simulation. Marque a opo Enabled e configure: Tipo de variao (Simulation Type): Random, Increment ou Decrement Intervalo de variao (Change Interval) Passo de variao do valor (Step Value) Limite Mnimo (Low Limit) Limite Mximo (High Limit)

Simulador Modbus

41

Configurao de Auto Simulation 6. Conecte o simulador utilizando o menu Connection - Connect - Modbus/TCP Svr.

Conectar ao Simulador

8.2 ExercciosSimularemos o nvel de trs tanques que sero utilizados em nossa aplicao.

42

Simulador Modbus

8.2.1 Simulador1. No programa ModSim32, crie um mapa de memria do tipo 03 - Holding Register. 2. Configure o endereo 101 para variar randomicamente de 0 a 100. Esse ser o valor do nvel de um tanque. 3. Crie mais dois mapas de memria (Device Id 2 e 3) e configure o endereo 101 como no item anterior. 4. Salve as configuraes.

Simulador Modbus

43

8.3 Anotaes

44

Simulador Modbus

CAPTULO

IOKit

9

O IOKit um componente compartilhado utilizado pelos Drivers de I/O da Elipse, implementando o acesso padro do nvel fsico e proporcionando interfaces para Serial, Modem, Ethernet e RAS. Atualmente o IOKit permite que apenas uma conexo seja aberta para cada Driver. Isto significa que, se for necessrio o acesso a duas portas seriais, devero ser adicionados dois Drivers na aplicao e cada um deles configurado para cada uma das portas seriais.

9.1 Trabalhando OfflineO modo Offline foi planejado para sistemas onde o Driver necessita ser configurado em tempo de execuo. Este o caso quando simplesmente no se sabe o tipo de conexo ou os parmetros at que a aplicao esteja em execuo. Em modo Offline, todos os tags de I/O do Driver iro falhar (todas as escritas e leituras). Os nicos tags permitidos so os tags gerais do IOKit (N1/B1 = -1 e N2/B2 = 0). Embora seja possvel chavear o Driver entre os modos Online e Offline em tempo de execuo, geralmente os seguintes passos so necessrios: 1. Configurar a opo Start driver Offline na caixa de dilogo Extras do Driver. Esta opo far com que o Driver inicie no estado Offline. 2. Configurar os parmetros do Driver em um script da aplicao. O script pode ser executado automaticamente ou de acordo com uma solicitao do usurio. 3. Configurar o Driver para o modo Online.

9.2 ExercciosO Driver de Comunicao ser inserido dentro de um XObject e receber as informaes de IP, Porta e Address (ID) do equipamento ao iniciar a aplicao.

IOKit

45

9.2.1 DadosTanque1. Insira um novo XObject na biblioteca, nomeando-o como DadosTanque. Insira as propriedades conforme a figura a seguir.

XObject DadosTanque 2. Insira um objeto Driver de Comunicao no XObject DadosTanque. 3. Configure o Driver para comunicar com o simulador. Physical Layer: Ethernet IP: 127.0.0.1 Porta: 502 Use Default Slave Address: True 4. Insira um Tag de Comunicao e configure-o para ler o endereo 101: N1 = 0, N2 = 1, N3 = 0, N4 = 101. 5. Teste a conexo. 6. Para passar as configuraes do equipamento para o Driver, no evento AfterStart do Driver insira o seguinte script.'Parametros de configurao Dim arr(3) arr(1) = Array("IO.Ethernet.MainIP", Parent.IP) arr(2) = Array("IO.Ethernet.MainPort", Parent.Porta) arr(3) = Array("ModiconModbus.DefaultSlaveAddress", Parent.Address) Write -1, 0, 0, 3, arr 'Online Write -1, 0, 0, 4, 1

7. Na aba Setup, marque a opo Start driver OFFLINE. 8. Deseja-se acessar todas as propriedades do tag Nivel na aplicao. Para que isso seja possvel deve-se associar o Tag de Comunicao propriedade do XObject do tipo IOTag. Arraste o Tag de Comunicao at o campo Valor inicial da propriedade

46

IOKit

Nivel do objeto DadosTanque.

Valor inicial da propriedade Nivel 9. Salve a biblioteca e registre.

9.2.2 Tanque1. Insira um XControl na biblioteca com o nome de Tanque. 2. Configure o objeto Tanque conforme o modelo da figura a seguir, com uma Escala, um Retngulo e um Display.

XControl Tanque 3. Na aba de Propriedades, crie a propriedade a seguir.

Propriedade DadosTanque 4. O Retngulo deve simular o lquido do tanque. Na propriedade VerticalPercentFill do Retngulo, crie uma associao simples com a propriedade Nivel.Value de DadosTanque.

Propriedade VerticalPercentFill

NOTA: Como a propriedade Nivel do tipo IOTag, deve-se fazer a associao com a propriedade Value da propriedade Nivel.

5. Para visualizar o valor do nvel numericamente, ser feita a mesma associao do

IOKit

47

item anterior na propriedade Value do display, Tanque.DadosTanque.Nivel.Value.

NOTA: Caso a formatao do Display seja Porcentagem, a associao dever ser analgica, pois a formatao Porcentagem espera valores entre 0 e 1, e a varivel Nivel varia de 0 a 100.

6. O Display deve deslizar acompanhando o nvel do preenchimento do Retngulo. Insira uma Associao por Translao no Display. Associe a animao com o valor do nvel, Tanque.DadosTanque.Nivel.Value.

Associao por Translao 7. Salve as modificaes e registre a biblioteca.

48

IOKit

9.2.3 Tela1. Sobre cada imagem de tanque na tela, insira um XControl Tanque.

Tela

9.2.4 Dados1. Na pasta Dados, insira uma Pasta de Dados chamada Tanques. 2. Para cada Tanque na tela, insira na pasta Tanques um XObject DadosTanque. Configure o IP, Porta e Address. 3. Associe o XControl Tanque da Tela com o XObject criado.

XObject DadosTanque 4. Execute a aplicao e teste as novas funcionalidades.

IOKit

49

9.3 Anotaes

50

IOKit

10

CAPTULO

Consulta

Vamos abordar o objeto Consulta do E3 (Query), enfocando a utilizao da edio direta do cdigo SQL, isto , sem a utilizao somente do Assistente de Configurao de Consultas.

10.1 Criando e Acessando VariveisNa janela de configurao da consulta, na aba Campos, pode-se adicionar filtros diretamente nos campos. Estes filtros podem ser constitudos de variveis que sero definidas por script utilizando o mtodo SetVariableValue da Consulta. A forma de declarar as variveis depende do tipo de dado que elas representam: Nmero: String: '' Data e hora: ##

Consulta

51

10.2 Edio Direta do Cdigo SQLO objeto Consulta do E3, alm de criar o cdigo SQL automaticamente atravs de parametrizaes, tambm permite que o usurio defina diretamente a consulta desejada. Para tanto, utilizada a opo de Edio Direta do SQL. Com isto o editor de Consultas ser habilitado.

Edio direta do cdigo SQL

10.3 UpdateUtilizando o comando Update para editar campos da tabela respeitando condies.UPDATE Tabela1 SET Tabela1.Campo = '' WHERE Tabela1.Campo = '

10.4 DeleteUtilizao do comando Delete na sintaxe SQL.DELETE FROM Tabela1 WHERE Tabela1.Campo = ''

NOTA: Deve-se utilizar o mtodo Execute da Consulta quando se utiliza um comando SQL que no tenha retorno, como Delete ou Update. O parmetro ImediateExecute indica se a operao passar pelas filas de operaes do Banco de Dados (configurada como False) ou se ser enviada diretamente para o banco de dados (configurada como True).

52

Consulta

10.5 ExercciosIremos implementar uma Tela para o cadastro de equipamentos da aplicao, sendo necessrio informar o nome, IP, porta e endereo do equipamento.

10.5.1 Aplicao1. Insira no projeto um novo Servidor de Dados chamado DadosHistorico. 2. Em DadosHistorico, insira quatro tags internos, IP, Porta, Address e Nome.

Objeto DadosHistorico 3. Insira um objeto histrico (HistEquipamento) e configure-o como a figura a seguir.

Objeto HistEquipamento 4. No permitido existir mais de um registro com o mesmo nome de equipamento ento marque o campo Nome como chave primria. 5. Acesse as propriedades do Histrico e configure-o para gravar os dados na tabela ConfigEquipamento no Banco de Dados, gravando um registro novo a cada 0 ms.

Consulta

53

Propriedades do Histrico 6. Gere a estrutura da tabela.

10.5.2 Tela

Tela de configurao dos equipamentos 1. Insira uma nova Tela no projeto chamada TelaConfigEquipamento com o tamanho de 500 x 500 pixels. 2. Insira na Tela um objeto E3Browser. 3. Configure o E3Browser para exibir a tabela ConfigEquipamento para retornar os campos Nome, IP, Porta e Address e atualizar-se a cada 4ms. 4. Abaixo do E3Browser insira quatro Setpoints para poder editar o Nome, IP, Porta e

54

Consulta

Address do equipamento. Identifique cada Setpoint com um texto. 5. Para facilitar os scripts seguintes, renomeie os Setpoints para spNome, spIP, spPorta e spAddress. 6. Crie uma associao bidirecional dos Setpoints com seus respectivos tags em DadosHistorico. 7. Abaixo dos textos, insira trs Botes de Comando, Inserir, Atualizar e Remover. 8. Na TelaInicial, insira um boto para chamar a TelaConfigEquipamento .

10.5.3 InserirPara inserir um registro no Histrico sem habilitar a gravao por scan, deve-se utilizar o mtodo WriteRecord do prprio Histrico. 1. Ao clicar no boto Inserir, o objeto Histrico deve inserir uma linha na tabela. No evento Click do boto Inserir crie o seguinte script:Application.GetObject("HistEquipamento").WriteRecord()

2. Execute a aplicao e cadastre os trs tanques existentes na aplicao. Use o nome do XObject criado anteriormente.

10.5.4 AtualizarPara 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, usa-se o mtodo GetColummValue. 1. Insira na tela um objeto consulta e nomeie-o para ConsultaUpdate. 2. Na aba SQL, habilite a edio direta e altere o comando existente.UPDATE ConfigEquipamento SET IP = '', Porta = , Address = WHERE (Nome = '')

3. Deseja-se atualizar a linha selecionada no E3Browser. Para retornar o valor de uma linha do E3Browser, crie o seguinte script no evento DblClick.Screen.Item("spNome").Value = GetColumnValue(0) Screen.Item("spIP").Value = GetColumnValue(1) Screen.Item("spPorta").Value = GetColumnValue(2) Screen.Item("spAddress").Value = GetColumnValue(3)

Consulta

55

4. No boto Atualizar, adicione o script a seguir.'UPDATE Screen.Item("ConsultaUPDATE").SetVariableValue Value Screen.Item("ConsultaUPDATE").SetVariableValue Screen.Item("ConsultaUPDATE").SetVariableValue ("spPorta").Value Screen.Item("ConsultaUPDATE").SetVariableValue ("spAddress").Value Screen.Item("ConsultaUPDATE").Execute(True) "Nome", Screen.Item("spNome"). "IP", Screen.Item("spIP").Value "Porta", Screen.Item "Address", Screen.Item

5. Execute a aplicao e teste as funcionalidades.

10.5.5 ApagarIremos apagar o registro selecionado no E3Browser. Para remover um registro da tabela usa-se o comando Delete. 1. Insira na tela um objeto Consulta e nomeie-o para ConsultaDelete. 2. Na aba SQL, edite o comando para o cdigo a seguir.DELETE FROM ConfigEquipamento WHERE (Nome = '')

3. No boto Remover, insira o seguinte script.'Nome do equipamento Nome = Screen.Item("E3Browser1").GetColumnValue(0) 'Confirmao do usuario If MsgBox("Tem certeza que deseja apagar o equipamento " & Nome & "?", vbYesNo) = vbYes Then Screen.Item("ConsultaDELETE").SetVariableValue "Nome", Nome Screen.Item("ConsultaDELETE").Execute(True) End If

4. Execute a aplicao e teste suas funcionalidades.

56

Consulta

10.6 Anotaes

Consulta

57

11PROPRIEDADE BOF EOF RecordCount

CAPTULO

GetADORecordSet

O mtodo GetADORecordSet da Consulta retorna um Recordset do tipo ADO (ActiveX Data Object), resultante da execuo da Consulta configurada. O objeto ADORecordset usado para acessar os registros de uma tabela do banco de dados. Possui as seguintes propriedades e mtodos:

DESCRIO Retorna verdadeiro se a posio do ponteiro anterior ao primeiro registro. Retorna verdadeiro se a posio do ponteiro posterior ao ltimo registro. Retorna o nmero de registros na tabela.

MTODO MoveFirst MoveLast MoveNext MovePrevious

DESCRIO Move o ponteiro para o primeiro registro. Move o ponteiro para o ltimo registro. Move o ponteiro para o prximo registro. Move o ponteiro para o registro anterior.

Para acessar os registros individualmente, utiliza-se o comando Fields ("NomeCampo"). Exemplo:

58

GetADORec ordSet

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

11.1 ExercciosAo iniciar a aplicao, cada Tanque deve ler do banco de dados suas configuraes de IP, porta e address.

11.1.1 GetADORecordSet1. No XObject DadosTanque insira um Servidor de Dados e altere o nome para Consultas. 2. Em Consultas, insira um objeto Consulta (Query) com o nome de ConsultaEquipamento.

Objeto ConsultaEquipamento 3. Configure a Consulta para acessar a tabela ConfigEquipamentos e retornar os campos Nome, IP, Porta e Address. 4. No campo Nome, crie o seguinte filtro.

Filtro para o campo Nome 5. No evento OnStartRunning da Consulta, insira o seguinte script.

GetADORec ordSet

59

'Nome do equipamento SetVariableValue "Nome", DadosTanque.Name 'Resultado da consulta Set RS = GetADORecordset() DadosTanque.IP = RS.Fields("IP").Value DadosTanque.Porta = RS.Fields("Porta").Value DadosTanque.Address = RS.Fields("Address").Value

6. Execute a aplicao e teste suas funcionalidades.

DICA: possvel acompanhar o valor de informaes do Servidor atravs da janela WatchWindow.

60

GetADORec ordSet

11.2 Anotaes

GetADORec ordSet

61

12

CAPTULO

Alarmes

O E3 dispe de um conjunto de objetos que permite ao usurio monitorar alarmes em sua aplicao. Com eles, possvel especificar e gerenciar alarmes e eventos de variveis de um processo.

12.1 Eventos Versus AlarmesUm evento, ao ser ativado, reconhecido automaticamente pelo usurio System e no incrementa o nmero de alarmes ativos nem o nmero de alarmes noreconhecidos.

12.2 Campos do Usurio possvel especificar as configuraes de Banco de Dados e determinar campos para a gerao da tabela de alarmes. Cada campo possui uma propriedade correspondente. Caso o usurio queira inserir mais informaes nessa tabela, na aba Campos do Usurio podem-se adicionar valores arbitrrios aos eventos de alarmes.

Aba Campos do usurio As opes disponveis so descritas na tabela a seguir. Opes disponveis na aba Campos do usurio OPO Campo Nome DESCRIO Identificador do campo. Determina o nome do campo.

62

Alarmes

Tipo

Determina o tipo do campo (Text, Integer, DateTime ou Double ). Determina o tamanho do campo. Determina a fonte de dados do alarme.

Tamanho Fonte

12.2.1 Assinatura EletrnicaPara fazer a assinatura eletrnica no E3, utiliza-se o mtodo ESign do Viewer. Quando este mtodo utilizado, a seguinte caixa de dilogo mostrada.

Assinatura eletrnica ESign(ObjName, Description, Action, [From], [To], [User], [Comment]) ObjName:Texto que contm o nome de um tag ou outro objeto da aplicao. Description: Texto que contm a descrio de ObjName. Este parmetro opcional e, se for omitido, a caixa de dilogo tentar buscar os dados da propriedade DocString de ObjName.

Alarmes

63

Action:Texto que contm a ao a ser executada (por exemplo, uma alterao do valor). Este parmetro opcional e o seu valor padro uma String vazia. From: Variant que contm o valor original, ou o estado que vai ser alterado. To: Variant que contm o novo valor do tag, ou o valor a ser aplicado em Action. User: Texto de retorno. Recebe o nome de login digitado na caixa de dilogo. Comment: Texto de retorno. Recebe o comentrio digitado na caixa de dilogo. Este mtodo retorna True se o usurio pressionar OK e se os campos Usurio e Senha forem vlidos. Se a caixa de dilogo for cancelada ou se o login ou a senha estiverem errados aps trs tentativas, o mtodo retorna False. Em caso de falha, User e Comment so configurados para uma String vazia. Os comentrios pr-definidos so guardados no Registro do Windows. Apenas os ltimos 26 comentrios so salvos. Cada vez que a janela criada, os ltimos comentrios so buscados no Registro e usados para preencher a lista de seleo. Se um novo comentrio for informado pelo usurio, ele ser salvo e o mais antigo ser descartado, caso no haja posio livre. Se for utilizado um comentrio pr-definido, este passa a ser o primeiro da lista de comentrios mais recentes.

12.3 ExercciosMonitoraremos o nvel dos tanques e caso esteja fora do valor esperado, ser gerado um alarme. Desejamos salvar na tabela de alarmes a descrio do tanque e tambm o motivo de reconhecimento do alarme.

12.3.1 Servidor de AlarmesConfiguraremos o servidor de alarmes para salvar o horrio de entrada, sada e reconhecimento do alarme, a mensagem, o valor, se o alarme est ativo ou j retornou ao estado normal e dois campos de usurios que configuraremos mais adiante. 1. Acesse as propriedades do Servidor de Alarmes e configure-o para salvar as informaes no BancoDados. Mantenha o nome da tabela como Alarms. 2. Escolha os campos a seguir e mais os que desejar.

64

Alarmes

Seleo de campos

12.3.2 Configurao de AlarmesTodo tanque deve ter um alarme monitorando a informao do nvel. 1. Insira no XObject DadosTanque um objeto Configurao de Alarmes. 2. No ConfigAlarmes, insira uma nova rea com o nome de Tanque. 3. Na rea Tanque, insira um Alarme Analgico para a propriedade Nivel.Value do DadosTanque.

Propriedade Nivel.Value 4. Configure os nveis e mensagens do alarme conforme desejar.

12.3.3 Campos de UsuriosPode-se incluir na tabela de alarmes at quatro campos de usurios. Usaremos o campo de usurio 1 para salvar a descrio do tanque e o campo de usurio 2 para inserir o motivo do reconhecimento do alarme. 1. Acesse as propriedades da rea Tanques do XObject DadosTanque e configure o Campo1 (campos de usurio) para salvar a descrio (DocString) do objeto Tanque.

Alarmes

65

Propriedade DocString 2. Verifique se a propriedade DocString dos Tanques est configurada. 3. Para justificarmos o motivo de reconhecimento de um alarme, insira na pasta Dados um Tag Interno chamado MotivoReconhecimento.

Tag Interno MotivoReconhecimento 4. Acesse as propriedades do Servidor de Alarmes e configure o Campo2 (campos de usurio) para salvar o motivo de reconhecimento do alarme.

Associao Campo de Usurio

12.3.4 E3AlarmPara visualizar os alarmes em tempo real, usamos o objeto E3Alarms. 1. Na parte inferior da Telainicial, insira um objeto E3Alarms. 2. Configure o campo Nome do Servidor de Alarmes. 3. Escolha as colunas e cores de sua preferncia. No se esquea de escolher os campos de usurio 1 e 2.

66

Alarmes

12.3.5 Assinatura EletrnicaPara reconhecer um alarme ser necessrio informar um usurio vlido e o motivo do reconhecimento. 1. Insira um boto prximo ao E3Alarms para reconhecer o alarme selecionado. 2. No boto, insira o script a seguir.Set alarme = Screen.Item("E3Alarm1").GetFocusedEvent() ObjName = alarme.AlarmSourceName Description = alarme.Message Action = "Reconhecimento de alarme" If Application.ESign(ObjName, Description, Action, "", "", Usuario, Comentario) Then 'Motivo do reconhecimento Application.GetObject("Dados.MotivoReconhecimento").Value = Comentario 'Reconhece o alarme Screen.Item("E3Alarm1").AckSelected(Usuario) 'Limpa o motivo Application.GetObject("Dados.MotivoReconhecimento").Value = "" End If

3. Execute a aplicao e teste suas funcionalidades.

12.3.6 E3BrowserOs alarmes gravados na tabela de alarmes sero visualizados em um E3Browser. Para separar os tipos de informaes (entrada, reconhecimento e sada do alarme) mudaremos a cor do texto da linha. 1. Insira uma nova tela chamada TelaAlarmes com o tamanho de 500 x 500 pixels. 2. Insira um E3Browser na Tela. 3. Configure o E3Browser para exibir a tabela Alarms. Escolha os campos ConditionActive, InTime, OutTime e AckTime e mais os campos de sua preferncia. 4. Para colorir o E3Browser simulando o E3Alarms, no evento OnDrawRow insira o seguinte script.

Alarmes

67

ConditionAcive = GetColumnValue(0) InTime = GetColumnValue(1) OutTime = GetColumnValue(2) AckTime = GetColumnValue(3) 'Alarme ativo If ConditionAcive = 1 Then 'Entrada de alarme ou reconhecimento If AckTime = "00:00:00" Then 'Entrada RowTextColor = vbRed Else 'Reconhecimento RowTextColor = vbBlue End If Else 'Saida de alarme ou reconhecimento If AckTime = "00:00:00" Then 'Saida RowTextColor = vbBlack Else 'Reconhecimento RowTextColor = vbBlack End If End If

5. Insira na TelaInicial um boto para chamar a TelaAlarmes.

68

Alarmes

12.4 Anotaes

Alarmes

69

13

CAPTULO

Associaes

Associaes (ou Conexes) so ligaes feitas entre propriedades e objetos ou outras propriedades. As associaes trazem grande facilidade ao criar animaes e outros tipos de lgicas comuns, minimizando a utilizao de scripts.

13.1 CreateLinkCreateLink(Property, Source [,Type]) Este mtodo permite criar uma conexo com uma propriedade do objeto. Em caso de sucesso, o mtodo retorna o objeto criado. Caso contrrio, ocorrer um erro de script e o mtodo retornar Nothing. O mtodo possui os seguintes parmetros: Property: especifica o nome da propriedade para qual ser criada a conexo. Source: especifica o nome do objeto de origem da conexo. Type (opcional): especifica o tipo de conexo a ser criada. Quando este parmetro for omitido, ser criada uma Conexo Simples. Opes disponveis para o parmetro Type: 0: Conexo Simples 1: Conexo Bidirecional 2: Conexo Analgica 3: Conexo Digital 4: Conexo por Tabela 5: Conexo Reversa 6: Conexo Mltipla

70

Assoc ia es

NOTA: Nem todas as propriedades existentes em um objeto permitem a criao de conexes. Para verificar quais as propriedades que permitem este recurso, acesse a aba Associaes. Se a propriedade for invlida para a conexo, no existir ou j possuir uma conexo, ocorrer um erro de script.

13.2 ExercciosIremos desenvolver um XControl onde podemos escolher para qual equipamento desejamos ver o valor atual.

13.2.1 Info1. Insira um XControl chamado Info. 2. Configure-o conforme a figura a seguir. So utilizados dois Option Buttons (Bombas e Tanques), um Combo Box e um Display.

XControl Info 3. Crie a propriedade a seguir.

Propriedade PastaDados 4. Para selecionar uma Pasta de Dados ao clicar em um dos botes, no Option Button Bombas insira o seguinte script no evento Change.If Value Then Info.PastaDados = "Dados.Bombas" End If

5. No Option Button Tanques insira o seguinte script no evento Change.If Value Then Info.PastaDados = "Dados.Tanques" End If

Assoc ia es

71

6. Para que os Option Buttons no permitam mais de uma escolha simultnea, selecione ambos e configure a propriedade GroupName para GrupoA. 7. Ao alterar a Pasta de Dados, o Combo Box deve listar todos os objetos existentes na Pasta. Crie o script a seguir no evento OnPropertyChanged da propriedade PastaDados.'Preenche o Combo Box com os objetos existentes na pasta 'Limpa a ComboBox Info.Item("ComboBox1").Clear() 'Adiciona todos os objetos For Each obj In PastaDados Info.Item("ComboBox1").AddItem obj.Name Next

8. Caso o objeto selecionado no Combo Box seja uma bomba, o valor exibido no Display ser a velocidade formatada com uma casa decimal. Se for um tanque, o valor deve ser o nvel formatado como porcentagem. Para isso, no evento Click do Combo Box insira o script a seguir.'Cria associao Select Case Info.PastaDados.Name Case "Bombas" Source = "Dados.Bombas." & Value & ".Rotacao" 'Fonte Info.Item("Texto1").Links.CreateLink "Value", Source, 0 'Conexao Simples Info.Item("Texto1").Format = "0.0" 'Formatao Case "Tanques" Source = "Dados.Tanques." & Value & ".Nivel.Value" 'Fonte Set Link = Info.Item("Texto1").Links.CreateLink("Value", Source, 2) 'Conexao Analogica Link.DstHiValue = 1 'Maximo na propriedade Link.DstLoValue = 0 'Minimo na propriedade Link.SrcHiValue = 100 'Maximo na fonte Link.SrcLoValue = 0 'Minimo na fonte Info.Item("Texto1").Format = "0.0%" 'Formatao End Select

NOTA: A formatao de porcentagem espera valores de 0 a 1, por isso a necessidade de utilizarmos uma escala (Associao Analgica).

72

Assoc ia es

13.3 Anotaes

Assoc ia es

73

Matriz Rua 24 de Outubro, 353 - 10 andar 90510-002 Porto Alegre RS Fone: (51) 3346-4699 Fax: (51) 3222-6226 E-mail: [email protected]

Filial MG Av. do Contorno, 6594- 17 andar Sala 01 30110-044 Belo Horizonte - MG Fone: (31) 3555-3366 Fax: (31) 3555-3399 E-mail: [email protected]

Filial SP Rua dos Pinheiros, 870 - Conj. 141/142 05422-001 So Paulo - SP Fone: (11) 3061-2828 Fax: (11) 3061-2828 E-mail: [email protected]

Filial PR Av. Sete de Setembro, 4698/1705 80240-000 Curitiba - PR Fone: (41) 3342-0120 Fax: (41) 3342-0120 E-mail: [email protected]

USA 40190 Jarvis Gray Lane Avon - NC - USA 27915 Fone: (252) 995-6885 Fax: (252) 995-5686 E-mail: [email protected]

Taiwan 26F.-10, No.3, Zihciang 3rd Rd., Lingya District 802 Kaohsiung City Taiwan Fone: +886-7-5666587 Fax: +886-7-5666582 E-mail: [email protected]

Alemanha D-67714 Waldfischbach Deutschland Fone: +49 (0) 6333 4439 Fax: +49 (0) 6333 2790045 E-mail: [email protected]

Consulte nosso website para informaes sobre o representante do seu estado.

w w w .elipse.c om.br [email protected] om.br