APOSTILA DE ELIPSE SCADA

69  13 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto

(1)

APOSTILA DE

ELIPSE SCADA

(2)

SUMÁRIO

1º PRÁTICA – PÁG.1

 Como criar um Tag Ram – pág. 1.

 Configuração de um Objeto Slider – pág. 2.

 Como adicionar um Tag ao Objeto – pág.2

 Configuração de um Objeto Gauge – pág. 4.

 Como inserir imagens usando o Objeto Bitmap – pág. 5.

 Como Utilizar o App Browser – pág. 5.

 Script WhileRunning – pág.6

 Significado do .fileName – pág.7

 Configurando um Objeto Texto – pág. 9

 Script OnStartRunning – pág.9

 Opção para um Objeto Bitmap aparecer através de um evento – pág. 10

 Significado .visible – pág.10

2º PRÁTICA – PÁG.11

 Como criar um Tag Demo – pág.11

 Configuração de um Objeto Trend Graph– pág.11

 Configuração de um Objeto Botão– pág.13

 Script OnPress– pág.13

 Script OnRelease– pág.13

 Opção para verificar os detalhes de um momento no gráfico– pág.14

 Opção para aumentar o tamanho do Objeto Trend Graph e observar melhor os detalhes– pág.14

 Significado Tendência1.height – pág.14

 Significado Tendência1.width – pág.14

3º PRÁTICA – PÁG.16

 Configurando um Objeto Display – pág.16

 Funcionalidades do Objeto Botão – pág.16

 Configurando uma Tela– pág.17

 Opção1 de criar um Botão com um Bitmap – pág.18

 Significado Aplicação.Login( ) – pág.20

 Significado .Activate( )– pág.20

 Significado MessageBox– pág.20

 Como criar um usuário com login e senha – pág.20

 Opção para fazer um Botão mais sofisticado que, quando pressionado, desabilite um Tag Demo – pág.20

 Significado.enabled – pág.21

 SignificadoIsMouseInside() – pág.21

 Opção para verificar os tipos de Botões – pág.21

(3)

 Significado Aplicação.Logout() – pág.24

 Acionando um Botão pelas teclas F1,F2,...F12 – pág.24

4º PRÁTICA – PÁG.25

 Opção para criar 2 textos com letras de cores diferentes, já que no Script do Objeto Texto não se tem acesso a cor da letra – pág.25

 Script OnValueChanged– pág.25

 Opção para que o Objeto Texto apareça após um tempo quando o Tag Demo estiver acima do limite máximo ou abaixo do limite mínimo.– pág.25

 Tag Crono– pág.25

 Siginificado .acum– pág.25

 Siginificado .Reset ()– pág.27

 Script OnRButtonUp– pág.28

 Opção para destacar um texto.– pág.28

 Opção para destacar um texto quando o mouse estiver sobre ele.– pág.29

 Opção para que o Bitmap apareça quando o Tag Crono for maior que um tempo– pág.30

 Fluxo repet – until– pág.30

 (Nome do Tag Ram) += 1– pág.30

 Opção para fazer um objeto ficar visível por um determinado tempo– pág.30

5º PRÁTICA – PÁG.32

 Configuração do Objeto Bar Graph – pág.32

 Opção de usar o Bar Graph como indicação de nível– pág.32

 Opção para colocar a mesma cor de fundo da Tela em um Objeto, pois ele não tem a opção transparente– pág.33

 Tag Expressão– pág.34

 Opção para mostrar valores da escala de nível visualmente, pelo menos o máximo e o mínimo permitido– pág.34

 Como mostrar um alarme para quando o nível estiver maior que o máximo definido ou menor que o mínimo definido– pág.35

 Opção para farer o texto piscar– pág.35

 Opção para que a luz esteja sempre apagada e o texto esteja sempre invisível quando a aplicação iniciar– pág.36

 Como usar o comando While– pág.37

 Opção para gerar um tempo– pág.37

6º PRÁTICA – PÁG.39

 Script OnKeyPress – pág.39

 Opção para o Objeto Texto se mover na Tela– pág.40

 Significado .x – pág.40

(4)

 Podemos observar com outro tipo de Tag Demo o efeito causado no movimento o Objeto Texto– pág.40

 Opção para que esse texto fique se movimentando horizontalmente no meio da tela– pág.41

 Opção para colocar o texto se movimentando na vertical– pág.41

 Significado .y – pág.41

 Opção para colocar numa das telas, o usuário que está logado no sistema– pág.41

 Opção para visualizar a hora atual– pág.41

 Nível de acesso– pág.42

 Como realizar um evento de acordo com a hora– pág.42

 Objeto Animação– pág.44

 Opção para que a animação fique acionada por um evento e fique em movimento– pág.44

 Opção para que o Tag Animar comece desabilitado– pág.44

 Opção para mudar o sentido de rotação das pás – pág.44

 Animação para controlar se um reservatório está sendo preenchido ou secado– pág.44

 Significado .highLimit – pág.45

 Significado .lowLimit – pág.45

7º PRÁTICA – PÁG.46

 Configuração de um Objeto Set point – pág.46

 Opção para um evento desabilitar visualmente um Set Point ou uma Figura– pág.48

 Opção para criar uma tela com possibilidades para configurar parâmetros para determinada aplicação– pág.48

 Significado.Show ( )– pág.49

 Significado .Hide ( )– pág.50

 Opção para criar uma mensagem de aviso– pág.50

 Opção para mostrar mais uma mensagem para o administrador quando ele clica em Cancel– pág.51

 Outras opções para usar o MessageBox– pág.52

 Script OnLButtonDown– pág.52

(5)

8º PRÁTICA – PÁG.46

 Configuração do Objeto alarme – pág.56

 Opção para criar uma tela de histórico de alarmes– pág.58

 Os valores do Tag para outros eventos– pág.59

 Tag Matriz– pág.60

 Significado .SetCell– pág.60

 Opção para ressetar as células no início da aplicação– pág.62

(6)

INTRODUÇÃO

O tutorial a seguir ensina a usar ferramentas básicas do supervisório Scada do Elipse,

Todas as aplicações devem ser salvas em pasta no C.

Crie uma pasta com nome SCADA.

Coloque na pasta SCADA as pastas Figuras, Driver, Material auxiliar, Exercício, Biblioteca e Projetos finais.

1ª PRÁTICA

1.0 RESUMO

 Como criar um Tag Ram – pág. 1.

 Configuração de um Objeto Slider – pág. 2.

 Como adicionar um Tag ao Objeto – pág.2

 Configuração de um Objeto Gauge – pág. 4.

 Como inserir imagens usando o Objeto Bitmap – pág. 5.

 Como Utilizar o App Browser – pág. 5.

 Script WhileRunning – pág.6

 Significado do .fileName – pág.7

 Configurando um Objeto Texto – pág. 9

 Script OnStartRunning – pág.9

 Opção para um Objeto Bitmap aparecer através de um evento – pág. 10

 Significado .visible – pág.10

1.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica1) e salve o aplicativo na pasta SCADA.

1.2 TAG RAM

Definição:

Tag Ram é uma variável auxiliar no sistema, usada internamente para armazenar valores em memória. Este tipo de tag é volátil, portanto mantém seus valores somente enquanto a aplicação está sendo executada.

A supervisão de um processo com o Elipse SCADA ocorre através da leitura de variáveis de processos no campo. Os valores dessas variáveis são associados a objetos do sistema chamados tags.Os tags são todas as variáveis (numéricas ou alfanuméricas) envolvidas numa aplicação.

(7)

Organizer Aplicação TagsNovo Grupo (Nome: Tag_1)Novo Tag Tag Ram (Nome: tag001)

1.3 OBJETO SLIDER

Definição:

O Objeto Slider é usado para ler ou escrever valores no tag a ele associado.Você pode atribuir valores ao tag selecionado deslizando o potenciômetro (botão deslizante) ou usando as setas de direção nas extremidades do Slider. O valor vai variar conforme uma escala definida no objeto. Você pode editar as propriedades do Slider dando um duplo clique sobre o mesmo.

Cria um objeto Slider e ajuste as seguintes configurações:

Geral Tamanho e Pos Moldura Tags

Mínimo: 0 X: 100 Efeito 3D: Fora

Espessura: 5

Associar ao Tag Ram

Máximo: 100 Y: 100

Sequência: TagsAplicação TagsTag_1tag001

Adicionar Passo: 2

Largura: 250

Altura: 70 Texto: Teste Título Marcar: Limites do

(8)
(9)

1.4 OBJETO GAUGE

Para verificar as propriedades do Objeto Slider cria-se um Objeto Gauge,que tem a função de mostrar o valor de variáveis analógicas, associadas a ele, de forma contínua.

(10)

Geral Avançado Tamanho e Pos Moldura Tags

Mínimo: 0 Marcar:

Grossas Marcar: Mostrar moldura X: 450 Título: Teste

Associar ao Tag Ram

Máximo: 100 Y: 100 Sequência:

TagsAplicação TagsTag_1tag001

Adicionar Total Ticks: 5

Largura: 250

Altura: 180

 Rode a aplicação em Roda aplicação (F10) e altere os valores do slider, verificando os resultados.

1.5 OBJETO BITMAP

Definição:

Objeto Bitmap permite inserir imagens, figuras ou desenhos nas telas de sua aplicação, desde que estejam nos formatos BMP, GIF ou JPEG.Este objeto pode ser redimensionado para ter o mesmo tamanho da figura e possui suporte a transparência, bastando habilitar e selecionar uma cor.

Grande aliados na criação e edição das figuras de animação ou de estado simples são o Paint e o Photoshop.

Crie um objeto bitmap e ajuste as seguintes configurações:

Geral Tamanho e Pos Moldura

Sequência: Localizar Figuras 

BotStop.bmp X: 250 Desmarque: Visível Click: Tamanho original Y: 200

1.5.1 APPBROWSER

(11)

Definição:

Clicando em qualquer objeto, podem-se visualizar as funções e atributos relacionados a este objeto. Quando estamos escrevendo um script, um botão Copia no Script fica disponível nesta janela, permitindo a cópia do atributo ou função em questão para as linhas de programação, facilitando essa tarefa.

Entre no Organizer e na aba Scripts da Aplicação clique em novo e, em seguida, WhileRunning e coloque a lógica abaixo:

IF “nome da tag ram” >= 50

“nome do objeto bitmap”.fileName = “caminho para a figura start”

ENDIF

Sequência:

OrganizerAplicaçãoAba ScriptNovoWhileRunning

Vamos usar o App Browser para encontrar o nome da Tag Ram e do Objeto Bitmap.

Sequência:

Na tela acima abra o App Browser  Aplicação TagsTag_1tag001Click

(12)

Para o nome do Bitmap é similar, siga a sequência abaixo:

Appbrowser  Aplicação TelasTela1Bitmap1Marque: AtributosfileNameClick

Logo, no Script deve está escrito assim:

IF tag001 >=50

Bitmap1.fileName = "C:\Treinamento\Figuras\BotStart.bmp"

(13)

Ou seja, se o valor da variável for maior ou igual a 50, o Bitmap receberá a Figura Start.

 Rode a aplicação em Monitorar Tela (F8).

Vejam que existe um erro. O bitmap não recebe a figura, porque esse modo de rodar o aplicativo não aciona o Script WhileRunning.

 Rode a aplicaçãoagora em Roda Aplicação (F10)

Percebe-se que o Bitmap continua sempre na Figura Start. Podemos inserir outra lógica para, quando o Tag Ram for menor que 50, o Bitmap receber a Figura Stop.

No mesmo Script WhileRunning anterior, adicione:

IF tag001 < 50

Bitmap1.fileName = “C:\Treinamento\Figuras\BotStop.bmp”

ENDIF

OU

Modifique o Script para:

IF tag001 >=50

Bitmap1.fileName = "C:\Treinamento\Figuras\BotStart.bmp"

ELSE

Bitmap1.fileName = "C:\Treinamento\Figuras\BotStop.bmp"

ENDIF

 Rode a aplicaçãoe verifique o Bitmap, alterando a faixa de valores no Slider.

(14)

1.6 OBJETO TEXTO

Definição:

O Objeto Texto permite atribuir mensagens a intervalos de valores dos tags, denominados Zonas. Podem ser definidas diversas zonas cada uma delas contendo sua própria mensagem.

Crie um Objeto Texto abaixo ou ao lado do Bitmap e configure:

Zonas Moldura Tags

Adicione: Zona 1 Adicione: Zona 2 Desmarque: Título

Adicione Tag Ram

Mínimo: 0 Mínimo: 51

Efeito 3D: Marque Fora Espessura: 5

Máximo: 50 Máximo: 100

Mensagem: Parar Mensagem: Seguir

Fonte: 18 Fonte: 18

 Rode a aplicação.

Obs1.Opção para iniciar a aplicação com o Bitmap Start

Sequência:

OrganizerAplicaçãoAba ScriptNovoOnStartRunning

Escreva no Script OnStartRunning

(15)

Obs2. Opção para fazer um Bitmap aparecer através de um evento. Crie um Bitmapcom as seguintes configurações:

Geral

Localizar  figuras aerador10.bmp Click: Tamanho original

Nome: Siga

Em seguida, adicione ao Script WhileRunning:

IF tag001 >= 50

Siga.visible = 1

ELSE

Siga.visible = 0

ENDIF

Usando o App Browser:

Sequência:

Appbrowser  Aplicação TelasTela1SigaMarque: AtributosvisibleClick

(16)

Este tempo que o bitmap leva para aparecer é devido ao tempo de execução do script, que pode ser configurado no próprio script.

2ª PRÁTICA

2.0 RESUMO

Como criar um Tag Demo – pág.11

Configuração de um Objeto Trend Graph– pág.11

Configuração de um Objeto Botão– pág.13

Script OnPress– pág.13

Script OnRelease– pág.13

Opção para verificar os detalhes de um momento no gráfico– pág.14

Opção para aumentar o tamanho do Objeto Trend Graph e observar melhor os detalhes– pág.14

Significado Tendência1.height – pág.14

Significado Tendência1.width – pág.14

2.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica2) e salve o aplicativo na pasta SCADA.

2.2 TAG DEMO

Definição:

O Tag Demo é um tag utilizado para simulação de valores, permitindo gerar curvas definidas como seno, clock, utilizadas pra testar a aplicação ou para realizar uma animação.

Crie 1 Tag Demo e configure-o para seno, limite inferior 0 e limite superior 100.

Sequência:

OrganizerAplicaçãoNovo Tagtag001

Crie mais 2 Tags Ram.

2.3 TREND GRAPH

Definição:

Trend Graph é o objeto usado para visualizar um gráfico de tendência com até 16 tags. O gráfico é constantemente atualizado à medida que o processo evolui e os valores dos tags mudam. Usando tendências, você pode fazer gráficos como Valor x Tempo e Valor x Valor.

(17)

Eixo Y (vertical): Lim. Super: 100

Lim. Inferior: 0

Largura: 300 Altura: 200

Crie 3 penas de desenho  Label: Renomeie para Tag1,Tag2,Tag3 Em Y axis: adicione para Tag1, o Tag Demo tag001(AplicaçãoTagstag001)

e assim por diante com os outros Tags Ram

Explicar a diferença entre pena de desenho e marca de tendência.

(18)

Rode a aplicação e verifique a diferença entre os gráficos.

2.3 OBJETO BOTÃO

Definição:

Este objeto é utilizado para acionamentos ou execuções de tarefas especificadas pelo usuário através do mouse ou teclado e seu funcionamento é igual aos dos botões padrão do Windows.

Crie um objeto botão com título Valores.

CrieumScript OnPress no botão e coloque a seguinte lógica:

tag001 = 71

Crie outro Script OnReleaseno botão e escreva:

tag001 = 27

Sequência para OnPress ou OnRelease:

(19)

No Script OnStartRunning da Aplicação coloque a seguinte lógica:

tag001 = 27

No Script WhileRunning da Aplicação:

IF tag001 > 35

tag002 = 52

ELSE

tag002 = 11

ENDIF

Rode a aplicação e pressione o botão, segurando e verificando os resultados.

Obs1. Opção para verificar os detalhes de um momento no gráfico.

Crie outro botão (Nome: Botão2) com título Aumentar e na aba Geral do mesmo, coloque a funcionalidade no modo Liga/Desliga.

No Script OnPressdeste botão,coloque a seguinte lógica:

Tendência1.enableDataRec = 0

No Script OnRelease do botão,coloque a seguinte lógica:

Tendência1.enableDataRec = 1

Relembrando o uso do App Browser:

(20)

ScriptsNovoOnPressApp Browser TelasTela1Tendência1Marque:

AtributosenableDataRec

Nessa lógica, quando o botão é pressionado o gráfico deixa de receber novos valores e quando o botão é solto, passa a receber novos valores.

Obs2. Opção para aumentar o tamanho do Trend Graph e observar melhor os detalhes.

Complemente o Script do segundo botão (Nome: Botão2):

Script OnPress:

Tendência1.height = 400

Tendência1.width = 600

Script OnRelease:

Tendência1.height = 200

Tendência1.width = 300

Rode a aplicação e verifique os resultados, clicando no botão.

Obs3: Opção para plotar um gráfico do tempo em função do fator de potência.

Crie outra Tag Demo, configure-o para seno e coloque no limite inferior -1 e no limite superior 1.

(21)

Uma das boas funções do Trend Graph é a demonstração gráfica dos tipos de Tag Demo.

Crie mais 5 Tags Demo e configure-os para cada tipo diferente do seno com limite inferior: 0 e limite superior: 100.

Crie mais 5 Trend Graph com limite inferior: 0 e limite superior: 100, cada um com uma pena relacionada a um dos Tags Demo criado, com cores diferentes.

Rode a aplicação e verifique o comportamento dos tipos de Tags Demo. Geralmente é através dessa visualização que decidimos qual tipo de Tag Demo utilizar.

3ª PRÁTICA

3.0 RESUMO

 Configurando um Objeto Display – pág.16

 Funcionalidades do Objeto Botão – pág.16

 Configurando uma Tela– pág.17

 Opção1 de criar um Botão com um Bitmap – pág.18

 Significado Aplicação.Login( ) – pág.20

 Significado .Activate( )– pág.20

 Significado MessageBox– pág.20

 Como criar um usuário com login e senha – pág.20

 Opção para fazer um Botão mais sofisticado que, quando pressionado, desabilite um Tag Demo – pág.20

 Significado.enabled – pág.21

 SignificadoIsMouseInside() – pág.21

 Opção para verificar os tipos de Botões – pág.21

 Opção 2 de criar um Botão com um Bitmap – pág.22

 Opção para criar um Menu Principal, que guie o usuário para as outras telas do sistema – pág.23

 Significado Aplicação.Logout() – pág.24

 Acionando um Botão pelas teclas F1,F2,...F12 – pág.24

3.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica3) e salve o aplicativo na pasta SCADA.

3.2 OBJETO DISPLAY

Crie1 Tag Demo e 1 Tag Ram, nesta coloque na aba Geral, Valor Inicial: 10.

Crie um botão(Nome: Botão1) e configure na aba Geral, Funcionalidade: Momentâneo e na aba Tags: associe ao Tag Ram.

(22)

Crie um display e associe o Tag Ram.

 Rode a aplicação.

Note que esse tipo de botão apenas resseta o Tag.

Mude a Funcionalidade do botão para Liga/Desliga.

 Rode a aplicação.

Perceba que o Tag fica em 1 quando está ligado e 0 quando desligado.

Agora, mude a Funcionalidade do botão para Jog.

Crie outro botão (Name = Botão2) com Funcionalidade: Momentâneo, desta vez com a função de controlar um evento.

Coloque no Script OnPress do Botão2:

(Nome da Tag Ram) = 1

 Rode a aplicação.

Note que quando o Botão1 é pressionado, o Tag vai pra 1 e quando é solto o Tag vai pra 0.

Quando o Botão2 é pressionado, o Tag vai pra 1 e oBotão1 aparece pressionado.

Isso acontece porque o Botão1está associado diretamente com o Tag e seria diferente se estivesse associado por Scripts.

3.3 TELA

Geralmente, nas aplicações, cria-se uma tela de apresentação, que pode ser um grande botão.

Na tela atual mude o Nome e o Título: Tela1

Sequência:

(23)

Crie outra tela com Nome: e Título: Apresentação.

Crie um terceiro botão (Nome: Botão3) com Funcionalidade: Momentâneo, do tipo BITMAP

, na aba Tamanho e Pos configure, Largura: 1020, Altura: 770, x = 0, y=0, na aba Mensagens: NormalLocalizar o bitmap fundotela.jpg e click em .

Na Tela1, crie um texto sem título, sem moldura, posição X= 150 e Y= 80 e coloque na aba Zonas, a mensagem “Click para iniciar”, marque Zona Padrão, fonte tamanho 14, cor vermelha.

Recorte o Objeto Texto e cole na Tela: Apresentação.

Perceba que o Objeto Texto fica atrás do Botão3, logo no menu principal, click em ArranjarTrazer para frente.

Note, também, que a mensagem aparece com fundo branco, objetivando melhorar a estética de apresentação, siga a sequência abaixo para colocar o fundo do Objeto Texto para o mesmo fundo do Objeto Botão3

(24)

Abra a figura fundotela.jpg no PaintUtilize a ferramenta Selecionador de Cores no fundo de tela Editar coresAnote os parâmetro Matiz, Sat., Lum, Vermelho, Verde, AzulClick no Objeto TextoZonasFundoOutrosColoque os parâmetros anotados nos respectivos locais.

Configure a Tela: Apresentação para Tela Inicial.

Sequência:

(25)

Script OnPress:

IF Aplicação.Login( )

Tela1.Activate( )

ELSE

MessageBox(“O login não foi executado com sucesso”, “Atenção”)

ENDIF

Crie um usuário com login: a e senha: a.

Sequência:

OrganizerUsuáriosNovoPropriedadesLogin: ou Senha:

Rode a aplicação.

Obs1. Opção para fazer um botão mais sofisticado que, quando pressionado, desabilite um Tag Demo.

Na Tela1, crie um botão ( Nome: B1) de Funcionalidade: Liga/Desliga do tipo Bitmap.

Coloque na aba MensagensNormalLocalizar a figura Bdesliga1.bmp e na mesma

(26)

Crie um Objeto Texto (Nome: Texto1), na aba Zona marque:Transparente e Zona Padrão e Alinhamento: Direita, insira a Mensagem: Parar. Coloque o Objeto Texto atrás do botão acima de acordo com a figura abaixo:

Crie um display,associando ao Tag Demo (Nome: tag001).

No Script OnPress do botão B1coloque:

(Nome do Tag Demo).enabled = 0

No Script OnRelease do botão B1coloque:

(Nome do Tag Demo).enabled = 1

 Rode a aplicação e clique no botão.

Obs2.Opção para destacar algum objeto quando o mouse ficar em cima dele.

Crie um Script WhileRunning na Aplicação:

IF Tela1.Texto1.IsMouseInside() == 1

B1.bitmap0 = "C:\Treinamento\Figuras\Bdesliga1.bmp"

ELSE

B1.bitmap0 = "C:\Treinamento\Figuras\Bdesliga.bmp"

ENDIF

 Rode a aplicação e verifique os resultados.

Obs3. Opção para verificar os tipos de botões.

(27)

 Rode a aplicação e perceba os estados dos botões.

Obs4. Outra opção de criar um Botão com um Bitmap.

Crie um Bitmap, localize a figura computer.bmp e click em .

Crie um Botão com dimensões um pouco maiores que o bitmap e configure sua aparência para o um retângulo pontilhado transparente, Funcionalidade: Liga/Desliga emude o nome do Botão para Comp.

Coloque o Botão (Nome: Comp) em cima do Bitmap1 no ArranjarTrazer para frente

Crie uma Tag Demo (Nome = tag003) e um display, associando a Tag Demo (Nome = tag003).

No Botão (Nome: Comp), coloque no Script OnPress:

tag003.enabled=0

Script OnRelease:

tag003.enabled=1

 Rode a aplicação.

Dessa forma o Botão tem a aparência de um Bitmap.

(28)

Script OnPress:

Comp.enabled = 0

Script OnRelease:

Comp.enabled = 1

 Rode a aplicação.

Verifique que quando o botão (Nome: Botão3 ou/a Botão8) é pressionado o botão (Nome: Comp) fica desabilitado.

Obs5. Opção para criar umMenu Principal, que guie o usuário para as outras telas do sistema.

Crie uma tela com Nome: e Título: Menu Principal.

Na aba Geral, Propriedades da Tela, marque em Fundo: Bitmap e localize um fundo de tela que você preferir dentro da pasta Projeto Fundo Tela.

Crie um Objeto Textocom Mensagem: Sistema de Controle por Telemetria, Fonte: Arial, Tamanho: 20 e da cor que você preferir.

Crie 6 botões do tipo bitmap, posicionando em 3 linhas e 2 colunas, adicione a cada botão a figuras de Nome:Befluentes.bmp, BENERGIA.BMP, Blayout.bmp, BLOGIN.BMP, Bquarent.bmp,

bred.bmp e click em .

No Script do botão (Name: Botão3) localizado na Tela: Apresentação escreva:

Script OnPress:

Mude Tela1.Activate( ) para a Menu_Principal.Activate( ) .

O botão com o Bitmap: Logout da Tela: Menu Principal deve fazer o logout do usuário e ir paraTela: Apresentação.

(29)

OnPress:

Aplicação.Logout()

Apresentação.Activate()

O primeiro comando faz o logout do usuário e o segundo comando chama a Tela: Apresentação.

 Rode a aplicação e tecle em logout.

Obs6.Um botão também pode ser configurado para ser acionado pelas teclas de funções F1, F2, etc.

Configure obotão com o Bitmap: Logout na aba GeralTecla de Função: F1.

 Rode a aplicação e tecle F1.

4ª PRÁTICA

4.0 RESUMO

 Opção para criar 2 textos com letras de cores diferentes, já que no Script do Objeto Texto não se tem acesso a cor da letra – pág.25

 Script OnValueChanged– pág.25

 Opção para que o Objeto Texto apareça após um tempo quando o Tag Demo estiver acima do limite máximo ou abaixo do limite mínimo.– pág.25

 Tag Crono– pág.25

 Siginificado .acum– pág.25

 Siginificado .Reset ()– pág.27

 Script OnRButtonUp– pág.28

 Opção para destacar um texto.– pág.28

 Opção para destacar um texto quando o mouse estiver sobre ele.– pág.29

 Opção para que o Bitmap apareça quando o Tag Crono for maior que um tempo– pág.30

 Fluxo repet – until– pág.30

 (Nome do Tag Ram) += 1– pág.30

 Opção para fazer um objeto ficar visível por um determinado tempo– pág.30

4.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica4) e salve o aplicativo na pasta SCADA.

4.2 OBJETO GAUGE, OBJETO TEXTO E TAG CRONO

Vamos criar uma animação que pode ser utilizada para indicar visualmente um alarme, através da mudança da cor de um texto, por exemplo.

(30)

Crie um Objeto Gauge, na aba Geral, coloque Valor Mínimo:0 eValor Máximo: 100, na aba

Avançado em cores, coloque Limite baixo: 25 e Limite alto: 75 ambos de cor vermelho e no Limite normal, escolha outra cor, sem título e associe ao Tag Demo criado.

Obs1: Opção para criar 2 textos com letras de cores diferentes, já que no Script do Objeto Texto não se tem acesso a cor da letra.

Crie 2 Objetos Textos,sem título, na aba Zona, coloque fundo azul claro, Mensagem: Alarme, com Fonte: 18. Em um dosObjetos Textos, coloque letra do Texto: Preta e na aba Geral: Nome:

TextoPreto e no outro Objeto Texto, coloque letra do Texto: Vermelha e na aba Geral: Nome: TextoVermelho.

No Script OnValueChanged do Tag Demo:

IF (Nome do Tag Demo) >= 75 OR (Nome do Tag Demo) <= 25

TextoVermelho.visible = 1

TextoPreto.visible = 0

ELSE

TextoVermelho.visible = 0

TextoPreto.visible = 1

ENDIF

 Rode a aplicação

Obs2: Opção para que o Objeto Texto Alarme apareça após 10s que a Tag Demo esteja acima do limite máximo ou abaixo do limite mínimo.

Crie um Tag Crono(Nome: tag002) e um Objeto Display, associando o Display ao acumulador do Tag Crono.

Sequência:

(31)

Para que esse Tag inicie a contagem é necessário habilitar seu enable.

A lógica a ser seguida: Se o acumulador for maior ou igual a 10, deixaremos o TextoVermelho visível e o TextoPreto invisível. Se o valor do Tag Demo estiver dentro da faixa do alarme. O Tag Crono deve ser habilitado, caso contrário, deve ser desabilitado e ressetado.

Sendo assim, no Script OnValueChanged do Tag Demo acrescente:

IF (Nome do Tag Demo) >= 75OR (Nome do Tag Demo) <= 25

(Nome do Tag Crono).enable = 1

IF (Nome do Tag Crono).acum >= 10

TextoVermelho.visible = 1

TextoPreto.visible = 0

ELSE

TextoVermelho.visible = 0

TextoPreto.visible = 1

ENDIF

(32)

TextoVermelho.visible = 0

TextoPreto.visible = 1

(Nome do Tag Crono).enable = 0

(Nome do Tag Crono).Reset ()

ENDIF

 Rode a aplicação.

Observe que a variação da Tag Demo é mais rápida que a variação do Tag Crono, logo este não chega aos 10s para poder mudar os Objetos Texto.

Para reparar, faça cada uma das opções abaixo:

 Diminuir o tempo da Tag Crono – Coloque no Script OnValueChanged do Tag Demo tag002.acum >= 1.

 Aumentar a faixa do alarme.

 Aumentar o período do Tag Demo – Coloque na aba Geral: Período: 1000

A 3ª opção é a mais indicada, pois geralmente o Objeto Gauge é associado a um Tag PLC que recebe valores de sensores, que diferente dos Tags Demo, não mudambruscamente de valores.

É necessário, também, reset o Tag Crono, faça uma das opções abaixo:

 Reset no início da aplicação – Organizer Aplicação Script OnStartRunningtag002.Reset()

(33)

Quando o alarme é ativado, é preciso que o operador reconheça que o alarme foi ativado, por isso, crie um botão com mensagem Reconhecimento de alarme e no Script OnPress do mesmo, coloque:

tag002.Reset()

 Rode a aplicação e tecle nesse botão, quando o alarme for acionado.

O problema é que muitas vezes o Tag associado a esse Gauge é responsável por comandar outros processos. Então é necessário parar o envio do sinal desse Tag.O alarme e o Tag Crono devem ser resetados quando o botão for pressionado, reiniciando após o operador ter resolvido o problema e clicado com o botão direito no mesmo botão.

No Script do botão (Nome: Botão1) com mensagemReconhecimento do alarme:

Script OnPress:

(Nome do Tag Crono).enable = 0

(Nome do Tag Demo).enabled = 0

TextoPreto.visible = 1

Script OnRButtonUp:

(Nome do Tag Demo).enabled = 1

 Rode a aplicação fazendo esse procedimento.

Perceba que os valores do Tag Demo e Crono são paralisados e retornam quando o botão direito é pressionado.

Obs3. Opção para destacar um texto.

Crie outro Objeto Texto, sem título, com 2 zonas e Mensagem:Teste, uma das zona com cor do Texto: preta, Máximo: e Mínimo:0, a outra com a cor do Texto: vermelha, Máximo: e Mínimo:1 Crie um Tag Ram e associe esse texto a ele.

Para fazer com que o texto fique de cor vermelha, atribua ao Tag Ram o valor 1 quando o Tag Crono for maior que 10s e, caso contrário, deixe o texto de cor preta. Complemente no Script do Tag Demo OnValueChanged:

IF (Nome do Tag Crono). acum>= 10

..

..

(Nome do Tag Ram) = 1

(34)

..

..

(Nome do Tag Ram)= 0

ENDIF

Quando o alarme for reconhecido o texto deve estar preto também, portanto:

No script do botão Reconhecimento de alarme:

Script OnPress:

Adicione (Nome do Tag Ram) = 0

 Rode a aplicação e reconheça o alarme quando ele for ativado, verificando os resultados.

Essa maneira de mudar o texto é bem mais fácil, porém a primeira maneira foi mostrada para que possamos destacar um texto com outra cor em algum evento.

Obs4: Opção para destacar um texto quando o mouse estiver sobre ele.

Crie novamente um Objeto Texto com Nome: TextoPreto2, sem título, adicione uma zona com Cor do Texto: preta, Cor do Fundo: cinza e Mensagem: Aprender e Marque: Zona Padrão

Copie esse objeto e cole. O objeto foi criado atrás do original, por esse motivo click em “Trazer para frente” .

No Objeto Texto copiado coloque o nome TextoVerde, na aba zona mude a Cor do Texto: verde e Marque: Zona Padrão.

Agora click em “Levar para o fundo” , ou seja, o TextoPreto2 fica na frente do TextoVerde.

Faremos uma lógica que estabelece que, se o mouse estiver sobre o objeto, o TextoVerde torna-se visível e o preto invisível.Caso contrário volta-se a situação inicial.

(35)

TextoVerde.visible = 1

TextoPreto2.visible = 0

ELSE

TextoVerde.visible = 0

TextoPreto2.visible = 1

ENDIF

 Rode a aplicação e aproxime o mouse do texto.

No Script While Running do Organizer  Aplicação mude o tempo de Rodar a cada: 100msec

 Rode a aplicação e aproxime o mouse do texto.

4.3 FLUXO REPET – UNTIL

Esse comando executa uma instrução até que uma condição seja verdadeira, por esse motivo ele não é utilizado pelos programadores.

Crie um Bitmap com Nome: Alarme e Localize:Bot alarme.bmp.

Para que o Bitmap apareça quando o Tag Crono for maior que 30 programe:

No Script OnValueChangeddo Tag Demo: tag001 adicione:

REPEAT

Alarme.visible = 1

UNTIL tag002.acum >= 30

 Salve o programa e Rode a aplicação.

Verifique que a aplicação nem aparece, porque ele está executando sempre o comando, por isso devemos ter o cuidado em usar os comandos de fluxo. Para verificar-mos uma das utilidades desse comando, faça o pedido abaixo.

Apague o comando de Repeat – Until do Script OnValueChanged do Tag Demo e crie um Botão com Nome: Botão2.

(36)

REPEAT

(Nome do Tag Ram) += 1

UNTIL(Nome do Tag Ram) == 50000

Esse comando (Nome do Tag Ram) += 1 significa (Nome do Tag Ram) = (Nome do Tag Ram) + 1.

 Salve, Rode a aplicação e verifique que dessa forma o comando tem utilidade.

Esse script pode ser utilizado para um evento acontecer durante um determinado tempo (50000 equivale a 4s). Cuidado é preciso saber utilizá-lo, pois durante esse tempo só será executado os comandos que estão dentro do fluxo.

Escreva no Script OnPess do Botão1: REPEAT

tag003 += 1

Gauge1.visible =1

UNTIL tag003 == 50000

Gauge1.visible =0

 Salve e Rode a aplicação.

Perceba que o Gauge1 fica visível por um determinado tempo, 4s no caso.

Obs5: Opção para fazer o Gauge1 ficar visível por 10s.

Mude no Script OnPess do Botão1:

tag003 == 50000 para tag003 == 125000

5ª PRÁTICA

5.0 RESUMO

 Configuração do Objeto Bar Graph – pág.32

 Opção de usar o Bar Graph como indicação de nível– pág.32

 Opção para colocar a mesma cor de fundo da Tela em um Objeto, pois ele não tem a opção transparente– pág.33

 Tag Expressão– pág.34

 Opção para mostrar valores da escala de nível visualmente, pelo menos o máximo e o mínimo permitido– pág.34

(37)

 Opção para que a luz esteja sempre apagada e o texto esteja sempre invisível quando a aplicação iniciar– pág.36

 Como usar o comando While– pág.37

 Opção para gerar um tempo– pág.37

5.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica5) e salve o aplicativo na pasta SCADA.

5.2 OBJETO BAR GRAPH

É usado para visualização de dados na forma de volume.

Crie 2 Tag Ram e um Tag Demo do tipo seno com Limite Inferior: 0 e Limite Superior: 100.

Crie um Bar Graph e na aba Geral, coloque Limite Mínimo: 0 e Limite Máximo: 100,

Espaçamento: 10, Desmarque: 3D, na aba Moldura, coloque Título: Gráfico das Variáveis. Na aba Tags, adicioneos 3 Tags (tag001, tag002 e tag003) e na aba Cores das Barras, Marque: Mostrar labels e coloque 3 cores diferentes pra cada Tag..

Crie 2 Sliders (Slider1 e Slider2), na aba Geral de ambos, coloque Valor Mínimo: 0 e Valor

Máximo: 100, na aba Tags, adicione ao Slider1 o Tag Ram:tag001 e ao Slider2 o Tag Ram: tag002.

 Rode a aplicação e mova os botões do Slider, verificando a coluna do Tag Demo.

Na aba Geraldo Bar Graph, existe outros tipos de orientação, rode a aplicação verificando cada um deles.

Obs1.Opção de usar o Bar Graph como indicação de nível.

(38)

Nesta Tela, crie um Bar Graph com as configurações abaixo:

Aba Geral Aba Tamanho e Pos

Aba Moldura Aba Tags Aba Cores das Barras Aba régua Mínimo: 0 Máximo: 100 Largura: 300 Altura: 200

Efeito 3D : Nada

Adicione: tag001

Cor: azul Desmarque: Habilita Espaçamento: 0 X: 124

Y:344

Desmarque: Visível Desmarque: 3D

Copie da Tela1 o Slider1 que está associado ao respectivo Tag Ram: tag001 e cole na Tela2.

Na Tela2 em Propriedades da Tela, aba Estilo, Marque: Tela inicial.

 Rode a aplicação.

Observe que o fundo do Bar Graph está numa cor diferente do fundo da Tela2.

Obs2.Opção para colocar a mesma cor de fundo da Tela2 no Bar Graph, pois ele não tem a opção transparente.

Abra a figura c1.bmp.no paint e observe as configurações do fundo.

Matiz: 65 Vermelho: 240

(39)

Na aba Geral do Bar Graph, configure a cor do fundo com as mesmas configurações.

Crie outro Bar graph (Barra2), com as mesmas características do Barra1, colocando a Cor do Fundo: azul , mudando o X: 449 e o Y:344 na aba Tamanho e Pos e retirando a associação com o Tag Ram

 Rode a aplicação.

5.3 TAG EXPRESSÃO

O objetivo dessa Tag é criar uma expressão entre Tags que será associado a um objeto.

Crie um Tag Expressão (tag004), agora vamos criar uma expressão para ser associada ao nível do segundo Bar Graph, lembrando que esse reservatório da direita é controlado pela abertura da comporta, e, geralmente, o da esquerda está mais cheio que o da direita, e esse não pode estar vazio porque existe uma bomba que fica 24h bombeando água, e não pode ficar em vazio.

Coloque a expressão (Nome da Tag Expressão) = (Nome da Tag Ram que está associado ao Bar Graph: Barra2)*(2/3) + 5 em OrganizerTagstag004Expressão e adicione o Tag Expressão ao Bar Graph: Barra1. No Barra1, mude o fundo para branco na aba Geral e coloque uma cor

relacionada ao tag004 na aba Cores das Barras.

Crie 2 displays, um associado ao Tag Ram e o outro associado ao Tag Expressão.

 Rode a aplicação e observe os valores.

Obs3. Opção para mostrar valores da escala de nível visualmente, pelo menos o máximo e o mínimo permitido.

(40)

Em seguida, crie 2 Objetos Textos e escreva em um a Mensagem: 50 e em outro a Mensagem:25, Marque: Transparente e Zona Padrão, coloque Cor da Fonte: vermelho na aba Zonas, Desmarque: visível na aba Moldura em ambos os Objetos Texto.

 Rode a aplicação.

Obs4. Agora mostremos um alarme para quando o nível estiver maior que o máximo definido ou menor que o mínimo definido.

Crie um Objeto Bitmap e Localize: BT_ILUMINACAO_apagado.bmp.

Criaremos um Script para quando o nível estiver na faixa de alarme, acenda essa lâmpada e mostre um texto escrito Perigo piscandoaté que o nível seja normalizado.

Crie um Objeto Textocom Mensagem: Perigo e Nome: Perigo.

Crie um Script WhileRunning no OrganizerAplicação:

IF tag001>= 50 OR tag001 <= 25

Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao.bmp')

ELSE

Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao_apagado.bmp')

ENDIF

 Rode a aplicação.

Veja que esse script acende e apaga a lâmpada conforme o valor do nível.

Agora faremos o texto piscar.

(41)

IF tag001>= 50 OR tag001 <= 25

Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao.bmp')

IF Perigo.visible == 1

Perigo.visible = 0

ELSE

Perigo.visible = 1

ENDIF

ELSE

Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao_apagado.bmp')

Perigo.visible = 0

ENDIF

Para o Objeto Texto: Perigo piscar com maior frequência, diminua o tempo de Rodar a cada para 100 msec em OrganizerAplicaçãoAba ScriptWhileRunningRodar a cada.

 Rode a aplicação e coloque o Slider1 na faixa de alarme.

Obs5. Opção para que a luz esteja sempre apagada e o texto esteja sempre invisível quando a aplicação iniciar.

No Script OnStarRunning em OrganizerAplicaçãoAba Script:

Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao_apagado.bmp')

Perigo.visible = 0

(42)

5.4 COMANDO WHILE

Na maioria das aplicações este comando está associado com alguma variável.

Crie outro Tag Ram (tag005) e em Valor Inicial coloque 50000.

Crie um Objeto Botão (Botão1) e no Script OnPress do mesmo, escreva:

WHILEtag005>= 100

tag005 += 1

END

Essa expressão tag005 += 1 significa que tag005= tag005+ 1

Esse Script gera um loop infinito.

 Salve e rode a aplicação.

Obs6. Opção paragerar um tempo. Esse tempo é importantíssimo para algumas animações.

Coloque no Valor Inicial do tag005: 0 e no Script OnPress do Botão (Botão1), apague a programação existente e escreva:

WHILEtag005<= 50000

tag005 += 1

WEND

Crie um Objeto Display e associe a tag005 para visualizar o tempo.

 Salve e rode a aplicação.

6ª PRÁTICA

(43)

 Opção para o Objeto Texto se mover na Tela– pág.40

 Significado .x – pág.40

 Opção para que o texto caminhe na tela toda, desapareça no final gradualmente e apareça no início gradualmente– pág.40

 Podemos observar com outro tipo de Tag Demo o efeito causado no movimento o Objeto Texto– pág.40

 Opção para que esse texto fique se movimentando horizontalmente no meio da tela– pág.41

 Opção para colocar o texto se movimentando na vertical– pág.41

 Significado .y – pág.41

 Opção para colocar numa das telas, o usuário que está logado no sistema– pág.41

 Opção para visualizar a hora atual– pág.41

 Nível de acesso– pág.42

 Como realizar um evento de acordo com a hora– pág.42

 Objeto Animação– pág.44

 Opção para que a animação fique acionada por um evento e fique em movimento– pág.44

 Opção para que o Tag Animar comece desabilitado– pág.44

 Opção para mudar o sentido de rotação das pás – pág.44

 Animação para controlar se um reservatório está sendo preenchido ou secado– pág.44

 Significado .highLimit – pág.45

 Significado .lowLimit – pág.45

6.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica5) e salve o aplicativo na pasta SCADA.

6.2 OBJETO DISPLAY E OBJETO ANIMAÇÃO

(44)

Crie outra Tela (Tela2) com Título: Tela2 e crie na Tela2, um Display.

Na Tela1,crie um Objeto Texto com as configurações mostradas na tabela abaixo.

Aba Zonas Aba Tamanho e Pos Aba Moldura

Mensagem: Tecle Enter para Entrar

X: 380 Desmarque: Visível

Fonte: Arial Tamanho: 16 Y: 230

Marque: Transparente e Zona Padrão Cor do Texto: Amarelo

Em OrganizerAplicaçãoScriptsNovoSelecione OnKeyPressCombinação de teclasAperte EnterOk

No Script OnKeyPressReturn criado acima, escreva:

IF Aplicação.Login( )

Tela2.Activate( )

(45)

ENDIF

Em OrganizerUsuáriosNovoPropriedadesLogin: a e Senha: a

 Rode a aplicação e tecle Enter.

Obs1. Opção para o Objeto Texto se mover na Tela.

Crie um Tag Demo do Tipo: Dente de serra crescente,Limite Inferior: 200 e Limite Superior: 500 e Nome: Passo.

No Script OnValueChanged do Tag Demo (Passo):

Texto1.x = Passo

 Rode a aplicação.

Observe que o Objeto Texto está muito lento então altere o Período do Tag Demo (Passo) para 10.

 Rode a aplicação.

Agora altere o Incremento do Tag Demo (Passo) para 2 e observe que o Objeto texto ficará mais rápido.

 Rode a aplicação.

Altere os Limites Inferior e Superior do Tag Demo (Passo) e observe.

 Rode a aplicação.

Obs2. Opção paraque o texto caminhe na tela toda, desapareça no final gradualmente e apareça no início gradualmente.

Coloque o Limite Inferior: – 220 e o Superior: 1020 do Tag Demo (Passo) e esta condição serásatisfeita.

(46)

Crie outro Tag Demo com Nome: Visual, Tipo: Seno, Limite Inferior:0 e Limite Superior: 800.

Recorte o Script do Tag Demo (Passo) e cole para o OnValueChanged do Tag Demo (Visual), trocando o nome Passo pelo nome Visual no Script.

 Rode a aplicação.

Obs4. Opção para que esse texto fique se movimentando horizontalmente no meio da tela.

Coloca-seo Limite Inferior: 200 e o Superior: 600 no Tag Demo (Visual).

Obs5. Opção para colocar o texto se movimentando na vertical.

Troque o atributo X pelo Y no Script do Tag Demo (Visual).

Obs6. Opção para colocar numa das telas, o usuário que está logado no sistema.

Para fazer isso, na aba Tags do Display (Display1) criado na Tela 2, adicione AplicaçãouserLogin em AplicaçãouserLogin; na aba Formato, Marque: Texto e na aba Geral, Fonte: 14.

Crie um Objeto Texto (Texto1) na Tela2, Mensagem: Usuário: , S/Moldura e com Fundo: branco.

Deixe os Objetos Display1 e Texto1 um ao lado do outro.

Obs7. Opção para visualizar a hora atual.

Crie outro Display (Display2) na Tela2 e na aba Tags, Adicione: Gerenciador Global.currentTime ( Selecione Gerenciador GlobalcurrentTime; na aba Formato, Marque: Data/Hora, Formato: hh:mm; Coloque Fundo: branco, S/Moldura, Fonte: 14.

Crie outro Objeto Texto (Texto2) na Tela2 com Mensagem: Hora Atual: , Fonte: 14.

 Rode a aplicação.

Ao invés de criar um Objeto Texto com a Mensagem: Usuário, crie outro Objeto Display ( Display3) com as mesmas configurações do Display1, sendo que na aba Formato, coloque em Prefixo: Usuário: .

(47)

6.3 NÍVEL DE ACESSO

Define o grau de acessibilidade para os usuários.

Crie outro usuário (Usuário2) com o Login e Senha: b e Nível de Acesso:1.

Na Tela2, crie 2 Objetos Botões (Botão1 e Botão2) e 2 Sliders (Slider1 e Slider2).

Configure o nível de acessibilidade de acordo com a tabela abaixo:

Aba Tamanho e

Pos Botão1 Botão2 Slider1 Slider2

Nível de Acesso: 0 100 1 100

 Rode a aplicação e entre com o usuário de nível 100, depois o de nível 1 e observe quais objetos eles terão acesso.

Agora, reconfigure o nível de acessibilidade para:

Aba Tamanho e

Pos Botão1 Botão2 Slider1 Slider2

Nível de Acesso: 1 20 50 90

Crie mais 2 usuários, Usuário3 com Login e Senha: c e com Nível de Acesso: 18; Usuário4 com Login e Senha: d e com Nível de Acesso: 61.

 Rode a aplicaçãoe entre com os 4 usuários, observando os resultados.

Observe que o usuário apenas acessa o objeto que possui o nível de acesso maio ou igual ao seu.

Obs8. Realizar um evento de acordo com a hora.

Para uma hora determinada do dia, essa opção irá atribuir o valor 35 a um Tag interno e aparecerá um botão associado a esse mesmo Tag.

Crie um Tag Ram com Nome: ECA.

Associe o Botão1 ao Tag ECA, assim como o Slider1.

(48)

IF hour==15 AND minute== 3

ECA = 35

Botão1.visible = 1

ENDIF

No Script OnStartRunning do Organizer Aplicação:

Botão1.visible = 0

 Rode a aplicação e entre com o usuário de máximo acesso.

Para a hora ser mais específica, adicione um AND no Script WhileRunning e coloque os second == 30

6.4 OBJETO ANIMAÇÃO

Objeto queadiciona zonas de bitmaps sequenciados, dando ideia de movimento.

Crie outro Objeto Botão na Tela2com Mensagem: Próxima e coloque no canto superior direito.

Crie uma nova Tela com Nome e Título: Tela3.

Na Tela2, configure o Botão3 criado para ir para a Tela3, na aba Geral  Ir para tela: Tela3

Volte à Tela3 e crie um Objeto Animation, na aba Zonas, adicione 4 zonas com os

nomesAGITA0.BMP, AGITA1.BMP, AGITA2.BMP, AGITA3.BMPem Figuras Animação. Configure: AGITA0.BMP, Mínimo e o Máximo: 0; AGITA1.BMP, Mínimo e o Máximo: 1;

AGITA2.BMP, Mínimo e o Máximo: 2; AGITA3.BMP, Mínimo e o Máximo: 3. Na aba Geral click

e na aba Tags, associe ao Tag ECA.

Crie um Objeto Slider (Slider1) e adicione ao Tag ECA, na aba Geral, coloque Valor Mínimo: 0 e Valor Máximo: 3.

(49)

Obs9. Opção para que a animaçãofique acionada por um evento e fique em movimento.

Crie um Tag Demo do tipo Dente de serra crescente, Nome: Animar e Limite Superior:40.Retire a associação do Tag ECA da Animação1 e adicione ao Tag Demo (Animar) e reconfigure na aba Zonas  Zona1, Mínimo: 0 e Máximo: 10; Zona 2, Mínimo: 11 e Máximo: 20; Zona3,Mínimo: 21 e Máximo: 30; Zona 4, Mínimo: 31 e Máximo: 40.

Crie um Objeto Botão ( Botão1) do tipo Liga/Desliga.

No Script OnPress do Botão1:

Animar.enabled = 1

No Script OnRelease do Botão1:

Animar.enabled = 0

 Rode a aplicação.

Obs10: Opção para que o Tag Animar comece desabilitado.

No Script OnStartRunning do OrganizerAplicação:

Animar.enabled = 0

 Rode a aplicação.

Obs11.Opção para mudar o sentido de rotação das pás.

A maneira mais simples é trocar o tipo do Tag Animar para Dente de serra decrescente.

Obs12. Animação para controlar se um reservatório está sendo preenchido ou secado.

(50)

Crie outro Objeto Animação com 3 zonas, adicionando as figuras a_quent.bmp, Limite Mínimo e Máximo: 1;a_quent1.bmp, Limite Mínimo e Máximo: 0 e Limite Mínimo e Máximo: 2, na aba

Geral, click .

Crie outro Tag Demo do tipo Dente de serra crescente com Nome: Animar1, com Limite Inferior:0 e Limite Superior: 1, Período: 1000, adicione este Tag à Animação2.

Crie 2 Botões (Botão2 e Botão3)do tipo Liga/Desliga, Botão3 com Mensagem: ENCHER O TANQUE e Botão2 com Mensagem:SECAR O TANQUE.

No Script OnPress do Botão2:

Animar1.highLimit = 1

Animar1.lowLimit = 0

No Script OnReleasedo Botão2:

Animar1.highLimit = 1

Animar1.lowLimit = 1

Animar1 = 1

Esses Scripts alteram os limites do Tag Demo. Estamos forçando o Tag a alternar entre os valores 0 e 1 quando pressionado e ao valor 1 quando no seu estado normal, forçando ainda o valor 1 ao Tag, por segurança.

No Script OnPress do Botão3:

Animar1.highLimit = 2

Animar1.lowLimit = 1

No Script OnRelease do Botão3:

(51)

Animar1.lowLimit = 1

Para que o tanque comece no estado normal, copie o que está escrito no Script OnRelease do Botão3 e cole no Script OnStartRunning do OrganizerAplicação.

 Rode a aplicação e tecle nos botões.

7º PRÁTICA

7.0 RESUMO

 Configuração de um Objeto Set point – pág.46

 Opção para um evento desabilitar visualmente um Set Point ou uma Figura– pág.48

 Opção para criar uma tela com possibilidades para configurar parâmetros para determinada aplicação– pág.48

 Significado.Show ( )– pág.49

 Significado .Hide ( )– pág.50

 Opção para criar uma mensagem de aviso– pág.50

 Opção para mostrar mais uma mensagem para o administrador quando ele clica em Cancel– pág.51

 Outras opções para usar o MessageBox– pág.52

 Script OnLButtonDown– pág.52

 Outro estilo de MessageBox com os Botões: Sim, Não e Cancel– pág.53

7.1 APLICAÇÃO

Após abrir o programa, crie uma nova aplicação (Nome: Tutorial_Pratica5) e salve o aplicativo na pasta SCADA.

7.2 OBJETO SET POINT E MESSAGE BOX

O Objeto Set Point é semelhante ao display, mas permite editar o valor visualizado. Quando o Set Point estiver associado a algum Tag, quando edita-se o valor mostrado, é como se houvesse uma atribuição a esse Tag.

(52)

Tag001 = 1

Quando um valor de um Tag Ram for atribuído através de um Set Point associado a ele, diversos eventos ocorrem, como a parada do valor do Tag Demo ou um resset do Tag Crono.

Entenderemos melhor a função do Set Point implementando a seguinte lógica:

Crie 2 Tags Ram com Nomes: RAM1 e RAM2, 1 Tag Demo do tipo Seno com Nome: DEM de 0 a 100, Período: 1000, crie 2 Tags Crono com Nomes: Crono1 e Crono2, marcando a Opção: Zerar o acumulador ao ligar o cronômetro.

Crie 5 Set Points,um abaixo do outro, a esquerda e 5 displays, um abaixo do outro, a direita.

Associe os Tags aos Set Points e Displays, respectivamente, de cima pra baixo. No Tag Crono associe o seu acumulador.

No Script OnStartRunning do Organizer Aplicação, escreva:

RAM1 = 3

DEM.enabled = 1

Crono1.enable = 1

Crono2.enable = 1

No Script WhileRunningdo Organizer Aplicação, escreva:

IF RAM1 == 4

RAM2 = 17

DEM.enabled = 0

Crono1.Reset ( )

(53)

 Rode a aplicação e verifique qual dos Tags efetivamente são modificados, em seguida atribua 4 ao Tag RAM1.

Obs1. Opção para um evento desabilitar visualmente um Set Point ou uma Figura, para evitar que o operador cometa erros graves.

Crie um botão do tipo Liga/Desliga,com Mensagem: Parâmetros do inversor.

No Script OnPress do Botão:

Setpoint1.textColor = RGB (148, 148, 148)

Setpoint1.Moldura.titleColor = RGB (148,148,148)

Setpoint2.textColor = RGB (148, 148, 148)

Setpoint2.Moldura.titleColor = RGB (148,148,148)

O 1º comando atribui uma cor para o textoe o 2º comando atribui a mesma cor para a moldura.

No Script OnRelease do Botão:

Setpoint1.textColor = 0

Setpoint1.Moldura.titleColor = 0

Setpoint2.textColor = 0

Setpoint2.Moldura.titleColor = 0

Nesse Script as cores voltam ao normal.

 Rode a aplicação.

Verifique que, se o botão for pressionado e a aplicação for tirada do modo Run, a aplicação e os Set Points estarão desabilitados na próxima vez que rodar a aplicação.

(54)

Obs2. Opção para criar uma tela com possibilidades para configurar parâmetros para determinada aplicação.

Crie mais 5 Set Points com as configurações dada na tabela abaixo:

Set Point: Setpoint6 Setpoint7 Setpoint8 Setpoint9 Setpoint10 Tag para

adicionar: Crono1 Crono2 DEM RAM1 RAM2

Título: Tempo1 Tempo2 Velocidade Tensão Corrente

Crie outra Telacom Título: Parâmetros do Inversor, com Fundo: Cinza e na aba Estilo, em Estilo: Marque Janelada e Marque a opção: Botão de Fechar.

Crie mais 3 Tags Ram com os Nome: RAM1, RAM2 e RAM3.

Crie 5 Set Points na Tela2 e configure como a tabela abaixo:

Set Points: Setpoint1 Setpoint2 Setpoint3 Setpoint4 Setpoint5

Título: Freq.Mín. Freq.Máx. TempoAcel./Desacel. NovaTensão NovaCorrenteN Tags para

Adicionar: RAM3 RAM4 RAM5 RAM1 RAM2

(55)

Tela 2. Show ( )

No Script OnRelease do Botão Parâmetros do inversor, escreva:

Tela 2. Hide( )

 Rode a aplicação e click no botão, verificando os resultados.

Geralmente, quando se entrega um projeto ao cliente, um dos operadores ou o chefe deles, fica com Nível de Acesso:1 (Administrador), exatamente para a necessidade de parametrização, porém é preciso ter cuidado com enganos. Por esse motivo é importante criar uma mensagem de aviso.

Obs3. Opção para criar uma mensagem de aviso

No Script OnPress do Botão, siga o caminho:

APP Browser Gerenciador GlobalMessageBox, escrevano início do Script:

MessageBox(“Deseja realmente parametrizar o inversor?”,”Cuidado”, 01h)

 Rode a aplicação.

Verifique que, para qualquer atitude sua, a continuação do Script OnPress será executada. Isto é um problema.

Obs4.Opção para que isso não ocorra.

Toda vez que clicamos num Botão dentro da Mensagem, um número retorna. O número que o botão Ok retorna é 1. Portanto, para protegermos os comandos seguintes do Script, é necessário comparar se o MessageBox retornou 1.

Então, coloca-se um IFantes do MessageBox. Se esse MessageBox == 1, os comandos dentro do IF será executado.

IF MessageBox("Deseja realmente parametrizar o inversor?","Cuidado", 01h) ==1

Tela1.Setpoint1.textColor = RGB (148, 148, 148)

(56)

Tela1.Setpoint2.textColor = RGB (148, 148, 148)

Tela1.Setpoint2.Moldura.titleColor = RGB (148,148,148)

Tela2.Show()

ENDIF

 Rode a aplicação e verifique os resultados, apertando nos botões Ok, Cancel e Fechar „X‟.

Obs5. Opção para mostrar mais uma mensagem para o administrador quando ele clica em Cancel.

O número que o Botão: Cancel retorna é 2 e a Mensagem será: Os parâmetros não foram modificados. Existe mais de uma maneira de fazer essa lógica.

A 1ª é usar o ELSEIF, acrescente no Script:

IF MessageBox("Deseja realmente parametrizar o inversor?","Cuidado", 01h) ==1

Tela1.Setpoint1.textColor = RGB (148, 148, 148)

Tela1.Setpoint1.Moldura.titleColor = RGB (148,148,148)

Tela1.Setpoint2.textColor = RGB (148, 148, 148)

Tela1.Setpoint2.Moldura.titleColor = RGB (148,148,148)

Tela2.Show()

ELSEIF MessageBox("Os parâmetros não foram modificados.","Aviso",0h) == 2

ENDIF

A 2ª forma seria trocar o ELSEIF pelo ELSE e colocar a função MessageBox na linha seguinte sem igualdade.

(57)

Tela1.Setpoint1.Moldura.titleColor = RGB (148,148,148)

Tela1.Setpoint2.textColor = RGB (148, 148, 148)

Tela1.Setpoint2.Moldura.titleColor = RGB (148,148,148)

Tela2.Show()

ELSE

MessageBox("Os parâmetros não foram modificados.","Aviso",0h)

ENDIF

Obs6. Outras opções para usar oMessageBox.

Podemos fazer uma lógica para quando o operador clicar no Set Point de Freq.Máx.,apareça uma mensagem e se a frequência não mudar apareça outra mensagem dizendo que não mudou.

No Script OnLButtonDown do Set point da Freq.Máx., escreva:

IF MessageBox("Tem certeza que deseja mudar a frequência máx?","Cuidado",4h) == 6

Tela2.Setpoint2.enabled = 1

ELSEIF MessageBox("A frequência ainda é a mesma.","Aviso", 0h) == 1

Tela2.Setpoint2.enabled = 0

ENDIF

Nesse estilo a mensagem aparece com os Botões: Sim e Não. Para o Sim ela retorna 6 e para o Não retorna 7. Por esse motivo faz-se a comparação com o 6. Abaixo habilita-se a entrada de dados no Set Point.

 Rode a aplicação e clique no Set Point Freq.Máx.

Verifique que, se você disser Sim, o valor da variável pode ser alterado, mas se disser Não,

(58)

Set Point estará desabilitado.Isso é um problema e acontece porque o Scada mantém o estado dos objetos da última execução do aplicativo.Para solucionar esse problema, seráhabilitado esse objeto Set point. Podemos lembrar que num projeto a idéia é iniciar a execução da aplicação e não parar mais, portanto não se pode colocar o comando no StartRunning.

Então, coloque no Script OnPress do Botão Parâmetros do inversor:

IF MessageBox("Deseja realmente parametrizar o inversor?","Cuidado", 01h) ==1

Tela2.Setpoint2.enabled = 1

...

ENDIF

 Rode a aplicação e perceba a diferença.

Obs7. Outro estilo de MessageBox com os Botões: Sim, Não e Cancel.

No Script ONLButtonDown do Set Point TempoAcel./Desacel., coloque a cópia do Script do Set Point Freq.Máx.,mudando o Set Point para TempoAcel./Desacel., nas mensagens que tem escrito Freq.Máx. coloque TempoAcel./Desacel. e mude o estilo pra 3h. Acrescente:

IF MessageBox("Tem certeza que deseja mudar a TempoAcel./Desacel. ?","Cuidado",3h) == 6

Tela2.Setpoint3.enabled = 1

ELSEIF MessageBox("Tem certeza que deseja mudar a TempoAcel./Desacel.","Aviso", 3h) == 7

MessageBox("O tempo ainda é a mesma.","Cuidado",0000h)

Tela2.Setpoint3.enabled = 0

ENDIF

(59)

Tela2.Setpoint2.enabled = 1

Tela2.Setpoint3.enabled = 1

...

ENDIF

 Rode a aplicação.

Pode-se perceber um erro no Scada. Quando clica-se no Set Point TempoAcel./Desacele seleciona Não aparece a mesma caixa de mensagem.O Scada mostra uma caixa de mensagem toda vez que aparece o comando MessageBox. Então a maneira mais usada para comparar o retorno da

mensagem é uma comparação e um ELSE, que serve tanto para o Botão Não, quanto para o Botão Cancel, quanto para o Fechar „X‟.

O Script do Set Point TempoAcel./Desacel ficará:

IF MessageBox("Tem certeza que deseja mudar a TempoAcel./Desacel. ?","Cuidado",3h) == 6

Tela2.Setpoint3.enabled = 1

ELSE

MessageBox("O tempo ainda é a mesma.","Cuidado",0000h)

Tela2.Setpoint3.enabled = 0

ENDIF

 Faça essa alteração e rode a aplicação

No mesmo Script acima altere o estilo para 5h e a mensagem para Esse parâmetro não pode ser alterado. E em vez de utilizar um IF utilize um While, logo o Script ficará:

IF MessageBox("Tem certeza que deseja mudar a TempoAcel./Desacel. ?","Cuidado",3h) == 6

(60)

WHILE MessageBox("Esse parâmetro não pode ser alterado.","Cuidado",5h) == 4

Tela2.Setpoint3.enabled = 0

WEND

ELSE

MessageBox("O tempo ainda é a mesma.","Cuidado",0000h)

Tela2.Setpoint3.enabled = 0

ENDIFO Botão Repetir retorna a 4.

Esse Script significa que enquanto a mensagem retornar 4 (REPETIR), o Set Point estará desabilitado, e quando outro Botão for pressionado ele permanecerá desabilitado.

 Rode a aplicação e observe essas propriedades.

Altere o mesmo Script para o estilo 35h e rode a aplicação, verificando que apareceu um ícone de exclamação.

Em seguida altere para 15h, 25h, 45h, rodando a aplicação e verificando a mudança dos ícones.

Abra a pasta material auxiliar no CD, e verifique o arquivo Parâmetros do MessageBox.

8ª PRÁTICA

8.0 RESUMO

 Configuração do Objeto alarme – pág.56

 Opção para criar uma tela de histórico de alarmes– pág.58

 Os valores do Tag para outros eventos– pág.59

 Tag Matriz– pág.60

 Significado .SetCell– pág.60

 Opção para ressetar as células no início da aplicação– pág.62

(61)

8.1 APLICAÇÃO

8.2 OBJETO ALARME

Geralmente, em todas as telas, cria-se um objeto alarme para mostrar as falhas ativas no sistema.

Crie 2 Tags Ram com Nome: RAM1 e RAM2 e 2 Tags Demo com Nome: DEMO1 e DEMO2.

Crie um Objeto Alarme com Título: Falhas Ativas.

Crie um Grupo de Alarmes em OrganizerAlarmesNovo Grupo de Alarmes.

(62)

Crie 2 Objetos Slider associados aos Tags Ram.

 Rode a aplicação e mova os Sliders e click em um dos Alarmes ativos e reconheça o alarme.

(63)

 Rode a aplicação, movendo os Sliders e verificando os limites de alarme.

Obs1. Opção para criar uma tela de histórico de alarmes.

Crie uma Tela com Nome: Alarmes e Cor de fundo: Claro.

Crie um Objeto Texto, Mensagem: Alarmes e Cor de fundo: Escura.

(64)

Na aba Alarmes do Tags, coloque mensagens de alarme e retorno nos Tags. Esse tipo de alarme registra de tempos em tempos todos os alarmes do grupo de alarmes criado.

Crie um Objeto Botão na Tela1 que vai para a Tela2 e copie os 2 Objetos Sliders da Tela1 e cole na Tela2.

 Rode a aplicação e verifique os registros do histórico.

Os valores do Tag são importantes para outros eventos. Pode-se detectar uma situação de emergência através dos alarmes, e desligar um motor, por exemplo.

Crie um Bitmap e Localize: BMBD.BMP

Crie um Botão com a Mensagem:Liga Motor.

No Script OnPress do botão:

Bitmap1.fileName = (“figuras\bmb.bmp”)

No Script OnAlarm do Tag Ram(RAM1):

(65)

No Script OnAlarmReturndo Tag Ram(RAM1)::

Tela1.Bitmap1.fileName = ("figuras\bmbd.bmp")

Quando o valor volta pra faixa normal, o motor aparecerá desligado.

 Rode a aplicação e verifique os resultados.

Outra lógica importante é que o motor só poderá estar ligado quando o Tag estiver em seu estado normal.

No Script OnPress do Botão:

IFBitmap1.fileName == ("figuras\bmbd.bmp")

Bitmap1.fileName = ("figuras\bmb.bmp")

ENDIF

8.3 TAG MATRIZ

A função do Tag Matriz é facilitar o trabalho com vetores e com operações que utilizam muitosTags.

O Scada não realiza operações entre matrizes, por conseqüência esse Tag serve pra alocar Tags ou funciona associado ao valor dos Tags por Scripts.

Crie outra Tela com Título: Incêndio.

(66)

A ideia é que estamos recebendo 5 sinais de sensores digitais de incêndio com saída 0 ou 1, onde representaremos essas variáveis como Tags Ram.

De acordo com o Tag que for acionado, outra variável (Tag Ram), receberá um valor correspondente a esse Tag.

Crie 5 Tags Ram e coloque os Nome: Andar1,...,Andar5, dentro de um Grupo de Tags chamado Incêndio.

Crie um Tag Ram no mesmo Grupo Incêndio com Nome: Setor

Coloque no Script WhileRunning em Organizer Aplicação:

IF Andar1 == 1

Setor = 1

ELSEIF Andar2 == 1

Setor = 2

(67)

ELSEIFAndar4 == 1

Setor = 4

ELSEIFAndar5 == 1

Setor = 5

ENDIF

Matriz.SetCell (1, Setor, 3)

Em seguida a estas linhas de comando, de acordo com o valor do setor, uma das células receberá o valor desejado.

Crie 5 Botões do Tipo: Liga/desliga, em cada um associe as 5 Tags Ram (Andar1,...,Andar5).

Crie 5 Displays,cada um associado com uma célula do Tag Matriz.

Crie um Botão com Mensagem: Incêndio Controlado, para ressetar os alarmes.

No Script OnPress do Botão Incêndio Controlado pode-se utilizar os comandos de fluxo para zerar as células da Matriz, utilizando também uma variável declarada.

Dim i

FOR i = 1 to 5

Matriz.SetCell (1, i, 0)

Setor = 0

NEXT

Crie um botão na Tela1 com Mensagem: Incêndio, configurado para ir pra Tela Incêndio.

(68)

Se os botões são apertados e a aplicação é fechada, quando ela é aberta novamente os valores das células não são ressetados.

Obs2. Opção para ressetar as células no início da aplicação.

Copie o Script do Botão: Incêndio Controlado e cole no Script OnStartRunning em Organizer Aplicação.

Obs3. Opção para Utilizar o Tag Crono para mostrar uma visualização de alarme.

Crie um Tag Crono com Nome: Crono dentro do Grupo Incêndio.

Cada Botão que simula o valor do alarme deve, quando pressionado, acionar o Tag Crono.

Crie um Bitmap e Localize: Alarme.bmp click .

Após 10s de ligado o Tag Crono, a Figura Alarme.bmp deve aparecer, e sumir quando o Botão Incêndio Controlado for pressionado.

Para isso, no Script WhileRunning do Organizer Aplicação:

IF Crono.acum>= 10

Crono.enable = 0

Crono.Reset ( )

Tela3.Bitmap1.visible = 1

ENDIF

No Script OnStartRunningdo Organizer Aplicação:

Tela3.Bitmap1.visible = 0

Crono.resetAcum =0

Imagem

Referências