Vous êtes sur la page 1sur 43

1ª Prática : Objeto Slider

Todas as aplicações são salvas em pastas no C.


Crie uma pasta com nome SCADA.
Salve na pasta SCADA as pastas Figuras, Driver, Material auxiliar, Exercício,
Biblioteca e Projetos finais.
Após abrir o programa e criar um projeto novo, salve o aplicativo nessa pasta.
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.
Para uma melhor organização da criação dessas variáveis foi criado o grupo de
tags.
Explicar os tipos de tags.

Começando: Cria-se um Tag Ram


Explicação do tag Ram
Pesca (“que é 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á executando.”)

Explicar função do objeto Slider.


Pesca (é 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-se um objeto Slider e ajustam-se as seguintes configurações:


Geral Tamanho Moldura Tags
Mínimo: 0 X: 100 Efeito 3D Associar ao Tag Ram
Máximo: 100 Y: 100  Fora – 5
Passo: 2 Largura: 250 Título: Teste
x Limites do slider Altura: 70
x Mostrar valor

Para verificar as propriedades do objeto Slider crie um objeto gauge, que tem a
função de mostrar o valor de variáveis analógicas, associadas a ele, de forma contínua.
Cria-se um objeto Gauge e ajusta-se as seguintes configurações:
Geral Avançado Tamanho Moldura Tags
Mínimo: 0 x Marcas grossas X: 450 Título: Teste Tag Ram
Máximo: 100 x Mostrar moldura Y: 100
Total tickts - 5 Largura: 250
Altura: 180

Rode a aplicação em ‘Roda aplicação’ e altere os valores do slider, verificando os


resultados.

Explicar função do objeto Bitmap


Pesca (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.
Geral Tamanho Moldura
Add figura BotStop X: 450 Sem moldura
Tamanho original Y: 100

O AppBrowser é uma importante ferramenta do Organizer. Ele é composto de uma


janela que apresenta a árvore da aplicação com seus objetos.
Explicar função do APP Brownser.
Pesca (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 seguinte lógica:
IF tag001 >= 50
Bitmap.fileName = (“caminho para a figura start”)
ENDIF
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’.
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ção agora em ‘Roda aplicação’

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 script ‘WhileRunning’, adiciona-se:
IF Tag001 < 50
Bitmap.fileName = (“caminho para a figura stop”)
ENDIF
Rode a aplicação e verifique o bitmap, alterando a faixa de valores no slider.

OU
Pode-se colocar o ELSE em vez do segundo IF com a condição, tirar o 1º ENDIF e
Rodar a aplicação.
O ‘ELSE’ significa todos os outros caso diferentes da condição estabelecida.
Digamos agora que operador é daltônico e não sabe inglês, ou seja, é necessário
um texto em português.

Explicar a função do Objeto Texto.


Pesca (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 acima do Bitmap
Zonas Moldura Tags
Add zona Add zona Sem título Tag Ram
Mínimo: 0 Mínimo: 51 Efeito 3D 5

Máximo: 50 Máximo: 100


Mensagem: Parar Mensagem: Seguir
Letra: 18 Letra: 18
Rode a aplicação e faça o operador feliz.
Pergunta: O que se deve fazer para iniciar a aplicação com o bitmap start?
Resposta: Crie, na aplicação, um script ‘On Start Running’ e escreva nesse script
‘tag001 = 51’.

Para fazer um bitmap aparecer através de um evento.


Crie um bitmap com as seguintes configurações:
Geral
Add figura Aerador
Tamanho original
Nome: Siga

Em seguida, escreva no script ‘WhileRunning’:


IF tag001 >= 50
Siga.visible = 1
ELSE
Siga.visible = 0
ENDIF
Rode a aplicação e verifique os resultados
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 : Objeto Trend Graph

Explicar função do objeto Trend Graph.


Pesca (Este 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.)

Começando: Crie uma nova aplicação e salve no mesmo local.


Cria-se 3 Tags, sendo 2 Tag Ram e 1 Tag Demo.
Explicar a função do Tag Demo.
Pesca (é 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.)

Configure o Tag Demo p/ seno, com faixa de 0 a 100.


Crie um objeto Trend graph c/ largura 300 e altura 200.
Na aba ‘Gráfico’, configure os limites para 0 a 100.

Na aba ‘Penas’, na escala normal crie 3 penas de desenho no ícone , chamando


de Tag 1, 2 e 3 e adicione no eixo Y os Tags 1, 2 e 3, respectivamente.

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


Crie 2 sliders c/ faixa de 0 a 100, associados aos tags Ram.
Crie outro objeto Trend Graph c/ as mesmas características do primeiro, porém
mude o tipo do gráfico p/ ‘XY’ e adicione uma marca de tendência, em que o eixo X é
o Tag Demo e o eixo Y é um dos tags Ram.
Rode a aplicação e verifique a diferença entre os gráficos.

Vamos colocar uma lógica p/ alterar os valores dos tags de acordo com um evento.
Apague o gráfico da marca de tendência.
No script da aplicação ‘On Start Running’ coloque a seguinte lógica:
tag001 = 27
No script da aplicação ‘While Running’:
IF tag001 > 35
tag002 = 52
ELSE
tag002 = 11
ENDIF

Ao lado esquerdo cria-se um objeto botão com título ‘Valores’.

Explicar a função do objeto botão.


Pesca (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 script no botão do tipo ‘On Press’ com a seguinte lógica:


tag001 = 71
Crie um script no botão do tipo ‘On Release’
tag001 = 27
Rode a aplicação e pressione o botão, segurando e verificando os resultados

Para verificar os detalhes de um momento no gráfico, crie outro botão com título
“aumentar” e colocá-lo no modo Liga/Desliga.

No script do botão On Press crie a seguinte lógica:


Tendência1.enableDataRec = 0
No script do botão On Release crie a seguinte lógica:
Tendência1.enableDataRec = 1

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.
Para aumentar o tamanho do Trend Graph e observar melhor os detalhes,
complemente no script do último objeto criado:
On Press OnRelease
Tendência1.height = 400 Tendência1.height = 200
Tendência1.width = 600 Tendência1.width = 300
Rode a aplicação e verifique os resultados, clicando no botão.

Pode-se também plotar um gráfico do tempo em função do fator de potência.


Na aba ‘Gráfico’ Troque, no eixo Y, a escala normal pela de fator de potência com
limites 0 e 0.
Retire as penas dos tags 1 e 2.
Coloque o Tag Demo no limite inferior ‘-1’ e limite superior ‘1’.
Rode a aplicação e verifique os resultados.

Uma das boas funções do Trend Graph é a demonstração gráfica dos tipos de Tag
Demo.
Retorne o 1º Trend Graph para a escala normal, limite superior ‘100’ e limite inferior
‘0’.
Retorne o Tag Demo para limite inferior ‘0’ e superior ‘100’
Cria-se mais 5 tags demo de tipos diferentes, com limites de 0 a 100.
Cria-se mais 5 Trend Graph com limites de 0 a 100, cada um com uma pena
relacionada a um dos Tags criados, com cores visíveis.
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 : Objeto Botão

Como já vimos o objeto botão é utilizado em acionamentos e execução de tarefas,


assim como, o pressionamento de botões também gera eventos que podem ser tratados
por scripts.

Crie uma nova aplicação com 1 Tags Ram e 1 Tag Demo.


Crie um botão momentâneo e associe ao tag Ram.
Atribua o valor 10 ao Tag Ram no início da aplicação.

Explicar a função do objeto display.

Crie um display e associe ao mesmo tag anterior.


Rode a aplicação.
Note que esse tipo de botão apenas resseta o tag.

Mude o botão para Liga/Desliga e Rode a aplicação.


Percebendo que o tag fica em 1 quando está ligado e 0 quando desligado

Mude o botão para Jog e crie outro, desta vez com a função de controlar um
evento.
No script ‘On Press’ desse botão coloque:
Tag001 = 1
Rode a aplicação.
Note que quando o botão é pressionado, o Tag vai pra 1 e quando é solto o Tag vai
pra 0.
Quando o outro botão é pressionado, o Tag vai pra 1 e o botão 1 aparece
pressionado.
Isso acontece porque o 1º botão está associado diretamente com o Tag e seria
diferente se estivesse associado por scripts.
Geralmente, nas aplicações, cria-se uma tela de apresentação, que pode ser um
grande botão.

Crie outra tela com nome apresentação.


Crie um botão momentâneo com bitmap, largura ‘1020’, altura ‘770’, x = 0, y=0.
Adicione no corpo ‘Mensagem’ o bitmap ‘fundo Tela’ e clique em ‘Tamanho
original’.
Na 1ª tela, crie um texto sem título com mensagem “Clique para iniciar”.
Esta mensagem deve ser configurada como zona padrão, com X= 150 e Y= 80, sem
moldura, letra tamanho 14 e vermelha.
Copie o objeto texto e cole na tela principal.
Perceba que o texto fica com fundo branco.
Abra a figura ‘Fundo Tela’ no Paint e pegue os parâmetros RGB do fundo da
tela.
Coloque os mesmos parâmetros para o fundo do texto.

Configure a tela do bitmap para ‘tela inicial’.


Crie um script no botão desta tela.
On Press
IF (Aplicação.Login( ) )
Tela1.Activate( )
ELSE
MessageBox(“O login não foi executado com sucesso”, “Atenção”)
ENDIF
Crie um novo usuário com login ‘a’ e senha ‘a’.
Rode a aplicação.

Para fazer um botão mais sofisticado que, quando pressionado, desabilite um tag
demo.
Na primeira tela criada, crie um botão do tipo Liga/Desliga no estilo Bitmap, com
nome B1.
No campo mensagens, adicione a figura ‘bdesliga’ em normal e a figura ‘bliga’
em pressionado.
OBS: A extensão do arquivo da figura é essencial.
Clique em ‘tamanho original’
Crie um texto com o nome ‘Parar’, transparente e localizado atrás do botão,
cobrindo-o.
Crie um display, associando ao Tag Demo.
No script do botão ‘B1’.
OnPress On Release
tag demo.enable = 0 tag demo.enable = 1
Rode a aplicação e clique no botão.

Para destacar algum objeto quando o mouse ficar acima dele:


Crie um script ‘While Running’ na aplicação.
IF Texto2.IsMouseInside() == 1
Tela2.Botão1.bitmap0 = (“botão azul desligado”)
ELSE
Tela2.Botão1.bitmap0 = (“botão vermelho desligado”)
ENDIF
Rode a aplicação.

Vamos conhecer todos os tipos de aparência dos botões.


Apague todos os objetos da 1ª tela criada.
Crie 6 botões com aparências que ainda não foram vistas, menos um quadro
pontilhado transparente.
Rode a aplicação e perceba os estados dos botões.

Uma outra maneira de criar um botão com um bitmap é:

Crie um bitmap, adicione a figura ‘computer’ e clique em tamanho original.


Crie um botão com dimensões um pouco maiores que o bitmap, configure sua
aparência para o quadro pontilhado transparente e coloque seu nome de Comp.
Coloque o botão acima do bitmap.
Rode a aplicação.
Pronto. Dessa forma o botão tem a aparência de um bitmap.

Passe um dos outros botões criados para Liga/Desliga e coloque um script


nesse botão:
On Press: On Release:
Comp.enabled = 0 Comp.enabled = 1

Rode a aplicação.
Verifique que quando o botão é pressionado o outro fica desabilitado.

Em todas as aplicações que eu conheço existe um Menu Principal, que guia o


usuário para as outras telas do sistema.
Crie outra tela com nome Menu Principal.
Adicione a essa tela uma figura de fundo de tela que você preferir.
Crie um Texto dizendo ‘Sistema de Controle por Telemetria’, com fonte Arial, com
tamanho 20 e da cor que vc preferir.
Crie 6 botões do tipo bitmap, com tamanhos iguais em 2 colunas de 3 botões.
Adicione a esses botões as figuras de botões do menu principal, com texto preto,
que encontram-se na pasta ‘Figuras’.
No script do grande botão da tela de apresentação:
On Press:
Mude a ativação da tela 1 para a tela de menu principal.

O botão Logout da tela ‘Menu Principal’ deve fazer o logout do usuário e ir pra tela
de apresentação.
Pode-se habilitar q ele vá pra tela de apresentação e no script mandar fazer logout
ou colocar o seguinte script:
On Press:
Aplicação.Logout()
Apresentação.Activate()
O primeiro comando faz o logout do usuário e o segundo comando chama a tela de
apresentação.
Rode a aplicação e tecle em logout.
Um botão também pode ser configurado para ser acionado pelas teclas de funções
F1, F2, etc.

Configure o botão logout na aba ‘Geral’ para ser acionado pela tecla de função
F1.
Rode a aplicação e tecle F1.
4ª Prática : 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.
Crie 1 Demo, do tipo seno, de 0 a 100.
Crie um objeto Gauge de limite 0 a 100, sem título, associado ao Tag demo e, em
‘avançado’, coloque um limite baixo de 25 e limite alto de 75 de vermelho e outra cor no
limite normal.

OBS.: No script do objeto texto não se tem acesso a cor da letra, portanto é
necessário criar 2 textos com letras diferentes.

Crie 2 objetos textos s/ título, com fundo verde ou azul claro. Um deles com letra
preta e nome (Texto preto) e mensagem ‘Alarme’, e outro com letra vermelha e nome
(Texto vermelho) e mensagem ‘Alarme’. Os 2 com letras grandes.

No script do Tag Demo:


On valueChanged
IF tag demo >= 75 OR tag demo <= 25
Texto_vermelho.visible = 1
Texto_preto.visible = 0
ELSE
Texto_vermelho.visible = 0
Texto_preto.visible = 1
ENDIF
Rode a aplicação

Para que esse alarme seja disparado após 30s que a variável esteja acima do limite
máximo ou abaixo do limite mínimo, deve-se:
Crie um Tag crono e um display na tela, associado ao acumulador do tag.
OBS.: Para que esse Tag inicie a contagem é necessário habilitar seu enable.

A lógica é a seguinte: Se o acumulador for maior ou igual a 30, deixaremos o texto


vermelho visível e o preto invisível.
Se o valor do Tag demo estiver dentro da faixa de alarme. O tag crono deve ser
habilitado, caso contrário, deve ser desabilitado e ressetado.
Sendo assim, no script do Tag demo.
On Value Changed
IF tag demo >= 75 OR tag demo <= 25
Tag crono.enable = 1
IF tag crono.acum >= 30
Texto_vermelho.visible = 1
Texto_preto.visible = 0
ELSE
Texto_vermelho.visible = 0
Texto_preto.visible = 1
ENDIF
ELSE
Tag crono.enable = 0
Tag crono.Reset ()
ENDIF

Rode a aplicação.

OBS.: Lembrando que em um projeto mesmo a variação de valores não seria tão
rápida, pois percebam que não dar tempo de chegar aos 30s.
Para continuar-mos testando, existem algumas opções:
 Diminuir o tempo
 Aumentar a faixa de alarme
 Aumentar o período do Tag
A 3ª opção é a mais indicada, pois geralmente esse gauge é associado a um Tag
PLC que recebe valores de sensores, que, diferente dos tags demo, não ficam mudando
bruscamente de valores. Coloque o período do tag para 5000.
OBS.: Lembrando também de ressetar o tag crono no início da aplicação, ou
habilitar a opção ‘Zerar acumulador ao ligar cronômetro’

Quando o alarme é ativado, é preciso que o operador reconheça esse alarme, por
isso, crie um botão, com mensagem ‘Reconhecimento de alarme’ e no script “On Press”,
resset o tag crono.
Rode a aplicação e tecle nesse botão, quando o alarme for acionado.

Problema: 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 deve ser ressetado e o tag crono também, quando o botão for
pressionado, reiniciando após o operador ter resolvido o problema e clicar com o botão
direito no mesmo botão.
No script do botão ‘Reconhecimento do alarme’:
On Press
Tag crono.enable = 0
Tag demo.enabled = 0
Texto_preto.visible = 1

On RButton UP
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.

Pode-se criar outro método para destacar um texto.


Crie outro objeto texto com texto ‘Teste’, com fonte grande, s/ título e com 2 zonas.
Uma com a cor do texto preta e máximo e mínimo 0, a outra com a cor do texto vermelha,
sem título e máximo e mínimo 1.
Crie um Tag Ram e associe esse texto a ele.
Para fazer com que o texto fique destacado (vermelho), atribua ao tag Ram o valor
1 quando o tag crono for maior que 30s e, caso contrário, deixe ele normal.
Pergunta: Como fazer isso?
Resposta: Complemente no script do Tag Demo “On Value Changed”:
IF ta004. acum >= 30
..
..
Tag Ram = 1
ELSE
..
..
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’:
On Press
Adicione tag Ram = 0

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


resultados.

OBS: 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.

Por exemplo, quando o mouse estiver sobre o texto ele deve ficar destacado, por
razões estéticas. Veremos um exemplo.
Crie um objeto texto com letra preta, com nome “Texto preto2”, com mensagem
“aprender”, sem título, com fundo cinza.
Copie esse objeto e cole. O objeto foi criado atrás do original, por esse motivo

tecle “avançar para frente” .


Coloque a letra verde e o nome “Texto verde”. Coloque o preto na frente do
verde.
Faremos uma lógica que estabelece que, se o mouse estiver sobre o objeto, o texto
verde torna-se visível e o preto invisível. Caso contrário volta-se a situação inicial.
No script da aplicação “While Running”:
IF texto verde.Is Mouse Inside == 1
Texto_verde.visible = 1
Texto_preto2.visible = 0
ELSE
Texto_verde.visible = 0
Texto_preto2.visible = 1
ENDIF

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


Mude o tempo de execução do script ‘While Running’ para 100ms.
Rode a aplicação e aproxime o mouse do texto.

Podemos conhecer o comando de fluxo Repeat – Until.


Esse comando executa uma instrução até que uma condição seja verdadeira, por
esse motivo ele não é utilizado pelos programadores.
Façamos um teste:
Crie um bitmap com nome “alarme” e adicione a figura ‘Bot alarme’.
Para que o bitmap apareça quando o tag crono for maior que 30.

No script do Tag Demo ‘On Value Changed’ adicione:


REPEAT
alarme.visible = 1
UNTIL tag crono.acum >= 30

Salve o programa e Rode a aplicação.


Verifique que a aplicação nem aparece, porque ele está executando sempre o
comando.
Explicar o cuidado que devemos ter com os comandos de fluxo.

Para verificar-mos uma das utilidades desse comando.

Retire esses comandos do Repeat.


Crie um botão e coloque no seu script ‘On Press’:
REPEAT
tag Ram += 1
UNTIL tag Ram == 50000

Esse comando (tag Ram += 1) significa (tag Ram = tag Ram + 1).
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.Exemplo:

Escreva no script:
REPEAT
tag Ram += 1
Gauge1.visible = 1
UNTIL tag Ram == 50000
Gauge1.visible = 0

Rode a aplicação.
Perceba que o gauge fica visível até determinado tempo, 4s no caso.

Pergunta: Como fazer para manter visível durante 10s?


Resposta: Mude a igualdade para 125000.
5ª Prática : Objeto Bar Graph

Explicar a função do Bar Graph.


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

Crie 2 tags Ram e um Tag Demo com faixa de 0 a 100 e tipo seno.
Crie um Bar Graph com faixa de 0 a 100, espaçamento de 10, sem 3D e coloque o
título do Bar Graph “Gráfico das Variáveis”.
Associe os 3 Tags ao Bar Graph e, na aba ‘cores das barras’, marque a opção
‘Mostrar Labels’ e coloque 3 cores diferentes.
Crie 2 sliders de 0 a 100, associando 1 deles a um Tag Ram e o segundo a outro
Tag Ram.
Rode a aplicação e mova os botões do slider, verificando a coluna do Tag Demo.

Na aba “Geral” verifique os tipos de orientação.


Rode a aplicação diversas vezes com todos os tipos de orientação.

OBS.: Mais alguns detalhes do Bar Graph serão mostrados em outras práticas.

Outra função bem útil do Bar Graph é a indicação de nível.


Crie outra tela e marque na aba ‘Configurações’ da tela a opção Bitmap,
adicionando o bitmap ‘C1’.
Crie um Bar Graph com:
Largura – 300 X - 124
Altura – 200 Y - 344
Mínimo – 0 Espaçamento - 0
Máximo – 100 Sem 3D nas duas abas

Associe o Bar Graph a um Tag Ram e retire a moldura.


Na aba “Cores das Barras”, coloque a cor azul na barra do Tag Ram e desabilite
a régua na aba “Régua”.
Copie da outra tela o slider que está associado ao respectivo Tag Ram e cole
na tela 2.
Clique 2 vezes na 2ª tela criada e marque a opção “Tela inicial”.

Rode a aplicação.
Observe que o fundo do Bar Graph está numa cor diferente do fundo da tela.

Pergunta: Como colocar a mesma cor de fundo no Bar Graph, considerando que ele
não tem a opção ‘transparente’?
Resposta: Abra a figura no Paint e observe as configurações desse verde de fundo.
Matiz: 65 Vermelho: 240
Sat: 202 Verde: 253
Lum: 228 Azul: 232

Na aba “Geral do Bar Graph”, configure a cor do fundo com as mesmas


configurações.
Crie outro Bar graph para o nível do lado direito da figura, com as mesmas
características e ajuste a altura, a largura e a posição.
Rode a aplicação.

Podemos conhecer a função do Tag expressão.


Pesca: É criar uma expressão entre tags que será utilizada associada a outro
objeto.

Em seguida, Crie um tag expressão.


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 “seca”.
Ou seja, a expressão pode ser:
Tag exp = tag Ram * (2/3) + 5
Associe o Bar graph ao Tag expressão, colocando a mesma cor da barra.
Crie 2 displays, um associado ao Tag Ram e o outro associado ao Tag expressão.
Rode a aplicação e observe os valores.

Muitas vezes existe uma necessidade de mostrar valores da escala de nível


visualmente, pelo menos o máximo e o mínimo permitido.
Crie outro Bar Graph, com fundo vermelho, largura de, no máximo, 10 e
desmarque a opção ‘3D’.
Desabilite a régua e a moldura.
Escolha o valor máximo e mínimo que você deseja e observe a posição do nível
nos valores que você quer.
Em seguida, crie 2 objetos textos e coloque o valor máximo e mínimo.
Coloque os textos sem título, e marque a opção transparente e zona padrão.
A fonte deve ser vermelha.
Alinhe verticalmente os 2 textos.
Rode a aplicação.

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 bitmap e adicione a figura ‘BT_Iluminação_apagado.
Pergunta: Como deve ser o script que, quando o nível estiver na faixa de alarme
acenda essa lâmpada e mostra um texto dizendo ‘Perigo’ piscando até que o nível seja
normalizado?
Resposta: Crie um texto com mensagem ‘Perigo’ e nome perigo também.
Crie um script no ‘While Running’:
IF tag Ram >= nível máximo OR tag Ram <= nível mínimo
Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao.bmp')
(1)
ELSE
(2)
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.
Adicione ao script ‘While Running’ em (1), os comandos:
IF Perigo.visible == 1
Perigo.visible = 0
ELSE
Perigo.visible = 1
ENDIF

Em (2) os comandos:
Perigo.visible = 0

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

Faça com que a luz esteja sempre apagada e o texto esteja sempre invisível
quando a aplicação iniciar.
OBS: Para fazer isso utilize o ‘Start Running’:
Bitmap1.fileName = ('C:\Treinamento\Figuras\BT_Iluminacao_apagado.bmp')
Perigo.visible = 0
Tag Ram = um valor na faixa normal

Podemos ver o comando de fluxo WHILE.


Na maioria das aplicações este comando está associado com alguma variável.
Crie outro Tag Ram e coloque seu valor, quando a aplicação rodar, igual a
50000.
Crie um botão e no script ‘On Press’:
WHILE tag Ram >= 100
tag Ram += 1
WEND

Esse script (tag Ram += 1) significa (tag Ram = tag Ram + 1)


Esse script cria um ‘tempo’ de 4s. Esse tempo é importantíssimo para algumas
animações.
6ª Prática : Objeto Display e Objeto Animação

Existe outra maneira de se fazer uma apresentação.

Marque a opção bitmap na tela e adicione a figura ‘foto_dispa’, clicando em


‘Tamanho Original’ e colocando o X = 0 e o Y = 0.
Crie outra tela com título ‘Tela2’ e crie, nessa tela, um display.
Na 1ª Tela crie um objeto texto com fonte Arial, tamanho 16, colocando a frase
“Tecle Enter para entrar”, com uma cor de destaque, sem moldura, e marque as opções
‘transparente’ e ‘zona padrão’ e X = 380 e Y = 230.
O script de login fica no script da aplicação ‘On Key Press’. Clique no botão
“combinação das teclas” e tecle “Enter”, em seguida OK.

Abra a 3ª Prática e copie o script do botão localizado na apresentação para o


“On Key Press Return” dessa aplicação.
Crie um usuário com login ‘a’ e senha ‘a’.

Rode a aplicação e tecle ‘Enter’.

Vamos começar a animar, fazendo com que o objeto se mova na tela.


Explicar a importância da nomenclatura dos Tags em um projeto.

Crie um Tag Demo do ‘tipo dente de serra crescente’ com limite inferior 200,
superior 500 e nome “Passo”.
No script “On Value Changed” do tag demo:
Texto1.x = Passo
Rode a aplicação.

Observe que está muito lento então altere o período para 10.
Rode a aplicação.

Ainda está lento, agora altere o incremento para 2.


Rode a aplicação.
Altere também os limites, inferior e superior.
Rode a aplicação.

Pergunta: Como fazer para que o texto caminhe a tela toda, desapareça no final
gradualmente e apareça no início gradualmente? Tentem fazer.
Resposta: Quando o limite inferior for – 220 e o superior 1020 esta condição é
satisfeita.

Podemos observar com outro tipo de tag demo.

Crie outro Tag Demo com nome “Visual” do tipo seno, limite inferior 0 e superior
800.
Recorte o script do tag passo e copie para o ‘On Value Changed’ do Tag Visual,
trocando o nome passo pelo nome visual no APP Browser.
Rode a aplicação.

Pergunta: Para que esse texto fique se movimentando horizontalmente no meio da


tela, o que se deve fazer? Tentem fazer.
Resposta: Coloca-se o limite inferior 200 e o superior 600.

Pergunta: Como colocar o texto se movimentando na vertical? Tentem fazer.


Resposta: Trocando o atributo X pelo Y no script.

Na maioria dos projetos é colocado numa das telas o usuário que está logado no
sistema.
Para fazer isso associe ao display criado na Tela 2 o atributo
‘Aplicação.UserLogin’, colocando o display no formato texto, com fonte 14 e crie um
objeto Texto com nome “Usuário:”, s/ moldura e com fundo branco.
Deixe os objetos um ao lado do outro.

Na maioria das vezes é necessário visualizar a hora atual.


Crie outro display e associe ao atributo ‘GerenciadorGlobal.currentTime’ e
coloque o formato data/hora com formato hh:mm, com fundo branco, sem moldura,
com fonte 14.
Crie outro objeto Texto com nome “Hora atual:”, com fonte 14.

Rode a aplicação.
Experimente também deletar o objeto texto e no prefixo do display escrever
“Usuário:”.

O nível de acesso define o grau de acessibilidade p/ os usuários.


Crie um usuário com o login igual a senha e nível de acesso 1.
Na tela 2, crie 2 objetos botões e 2 sliders.

100

O 100

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

Em seguida, mude o nível de acesso dos botões para:

50

90

1 20

Crie mais 2 usuários. Um com nível de acesso 18 e outro com nível de acesso 61.
Rode a aplicação e entre com os 4 usuários, observando os resultados.

Pergunta: Como funciona o nível de acesso entre usuários e objetos?


Resposta: O usuário acessa apenas o objeto que tem nível de acesso maior ou
igual ao seu.
Um sistema bem automatizado realiza seus eventos de acordo com a hora.
Pergunta: Como atribuir o valor 35 a um tag interno e fazer aparecer um botão
associado a esse Tag, quando estiver numa determinada hora do dia?
Resposta: Crie um Tag Ram com nome ECA
Associe um dos botões ao tag ECA, assim como um dos sliders.
Na aplicação crie um script ‘While Running’:
IF hour == 23 AND minute == 52 (Coloque 1 min a frente da hora atual)
tag ECA = 35
Botão associado.visible = 1
ENDIF

No script ‘On Start Running’, coloque esse botão criado como invisível.
Botão associado.visible = 0

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


Para ser mais específico, adicione um AND no script ‘While Running’ e coloque os
segundos.

Vamos utilizar o objeto animação.


Explicar a função do objeto animação
Pesca: adicionar zonas de bitmaps, que seqüenciados, dêem idéia de movimento.

Crie outro botão na tela 2 com mensagem ‘Próxima’ no canto superior direito.
Crie uma nova tela com título Tela 3.
Volte à Tela 2 e configure o botão criado para ir para a tela 3.
Volte à Tela 3 e crie um objeto de animação, adicionando 4 zonas com os nomes
agita 0 até agita 3, configurando o mínimo e o máximo do agita 0 como 0, do agita 1 como
1, do agita 2 como 2 e do agita 3 como 3.

Clique em ajustar imagem na aba ‘Geral’. Associe a animação ao Tag ECA.


Crie um slider associado ao Tag ECA, de 0 a 3.
Rode a aplicação e troque os valores do Tag ECA no slider.
Para que uma animação seja acionada por um evento e fique “rodando”.
Crie um tag demo do tipo ‘dente de serra crescente’, com nome ‘animar’ e limite
superior 40.
Retire a associação do tag ECA à animação, associe a esse tag demo e
configure zona 1 0 a 10, zona 2 11 a 20, zona 3 21 a 30 e zona 4 31 a
40.
Crie um botão do tipo Liga/Desliga e no script ‘On Press’, habilite o tag animar.
No script ‘On Release’, desabilite o tag animar.
Rode a aplicação.

Pergunta: Para que o tag animar comece desabilitado o que se deve fazer?
Resposta: No script ‘On Start Running’ coloque o seu enable = 0.
Rode a aplicação.

Pergunta: Observe que as pás estão girando da direita para a esquerda. Como as
fazer girar da esquerda para direita?
Resposta: A maneira mais simples é trocar o tipo do tag animar para dente de serra
decrescente.
Outro tipo de animação é, a partir de um evento, controlar se um reservatório está
enchendo ou secando, c/ animação, através da mudança do limites, alto e baixo do Tag
demo.
Por exemplo pode-se fazer o cano alterar suas cores quando for encher ou secar.

Crie um objeto animação com 3 zonas, adicionando as figuras a_quent, a_quent1


e a_quent2 com limites respectivamente de 1, 0 e 2.
Crie outro tag demo do tipo dente de serra crescente, com limite de 0 a 1, com
nome ‘animar1’, com um período de 1000 e associe à animação esse tag.
Crie 2 botões do tipo Liga/Desliga, um com mensagem ‘Encher o tanque’ e outro
com mensagem ‘Secar o tanque’.
No script do botão ‘Secar o tanque’:
On Press On Release
Animar1.highLimit = 1 Animar1.highLimit = 1
Animar1.lowLimit = 0 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 do botão ‘Encher o tanque’:


On Press On Release
Animar1.highLimit = 2 Animar1.highLimit = 1
Animar1.lowLimit = 1 Animar1.lowLimit = 1

Para que o tanque comece no estado normal, copie o que está escrito no script
‘OnRelease’ e cole no script ‘On Start Running’.
Rode a aplicação e tecle nos botões.
7ª Prática : Objeto Set Point e Message Box

Explicar a função do objeto Set Point.


Pesca: serve como um display e ainda pode editar o valor visualizado. Se este set
point estiver associado a algum Tag, quando edita-se o valor mostrado, é como se
houvesse uma atribuição a esse Tag.
Ex:
1
Tag001 = 1

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


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.

Crie 2 tags Ram com nomes ‘RAM1’ e ‘RAM2’, 1 tag Demo de 0 a 100 com nome
Dem, período 1000 e do tipo seno.
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 da aplicação ‘Start Running’:


RAM1 = 3
DEM.enabled = 1
Crono1.enable = 1
Crono2.enable = 1

No script ‘While Running’:


IF RAM1 == 4
RAM2 = 17
DEM.enabled = 0
Crono1.Reset ( )
ENDIF

Rode a aplicação e verifique qual dos tags efetivamente são modificados, em


seguida atribua 4 ao Tag RAM1.

Em muitas aplicações, um evento deve desabilitar ‘visualmente’ um set point, ou


figura, para evitar que o operador cometa erros graves. Por exemplo:

Crie um botão do tipo Liga/deslig, com mensagem “Parâmetros do inversor”.


No script “On Press” 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)

Esses são os tons de cores que vimos no paint.


O 1º comando atribui uma cor para o texto com ton bem próximo da cor de fundo do
set point e o 2º comando atribui a mesma cor à cor da moldura.

No script ‘On Release’:


Setpoint1.textColor = 0
Setpoint1.Moldura.titleColor = 0
Setpoint2.textColor = 0
Setpoint2.Moldura.titleColor = 0

Nesse script a cor volta 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.

Pergunta: Como fazer para que isso não aconteça?


Resposta: Copie o que está escrito no script ‘On release’ e cole no ‘Start Running’.
Existem aplicações onde são configurados parâmetros, e é mais estético aparecer
uma outra tela com possibilidades de parametrização.

Então, coloque o título dos 3 set points associados aos Tags RAM1, RAM2 e
DEM, respectivamente, ‘Tensão’, ‘Corrente’ e ‘Velocidade’.
Nos 2 outros set points, coloque o título de ‘Tempo’.
Crie outra tela com título ‘Parâmetros do Inversor’, com fundo cinza, e na aba
‘Estilo’, marque a opção ‘janelada’ e a opção ‘botão fechar’.
Coloque a tela na posição X = 500, Y = 100, com tamanho suficiente para criar 5
set points. Crie 5 set pints.
Coloque no set point os títulos: Frequência mínima, Frequência máxima, Tempo
de acel/desacel, Nova tensão e Nova Corrente N.
Nos set points ‘Nova tensão’ e ‘Nova corrente N.’, associe aos tags RAM1 e RAM2.
Crie mais 3 tags Ram, com nomes RAM3, RAM4 e RAM5, e associe aos 3 set
points restantes.
No centro da tela 1, crie um Bitmap, add a figura ‘Motores’ e clique em ‘tamanho
original’.
No script ‘On Press’ do botão ‘Parâmetros do Inversor’:
Tela 2. Show ( )
Rode a aplicação e clique 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.

No script “On Press” do botão:


Vá no APP Browser, em Gerenciador Global e escolha o message Box,
escrevendo:
MessageBox (“Deseja realmente parametrizar o inversor?”,”Cuidado”, 001h),
no início do script.

Rode a aplicação.
Verifique que, para qualquer atitude sua, a continuação do script ‘On Press’ será
executada. Isto é um problema.

Pergunta: Como fazer para que isso não aconteça?


Resposta: 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 proteger-mos os comandos
seguintes do script, é necessário comparar se o Message Box retornou 1.
Então, coloca-se um IF antes do script do MessageBox. Se esse MessageBox == 1,
o script dentro do IF é executado.
Rode a aplicação e verifique os resultados, apertando nos botões OK, Cancel e
Fechar ‘X’.

Vamos 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”.

Pergunta: Como fazer isso?


Resposta: Existe mais de uma maneira de fazer essa lógica. A 1ª é usar o ELSEIF.
ELSEIF MessageBox("Os parâmetros não foram modificados.","Aviso",0h) == 2,
porém, utilizando o estilo 0h, que representa a caixa de mensagem com o botão OK.
Outra forma seria trocar o ELSEIF pelo ELSE e colocar a função MessageBox na
linha seguinte sem igualdade.

Veremos as outras formas do MessageBox.


Podemos fazer uma lógica para quando o operador clicar no set point de freqüência
Max. Apareça uma mensagem e se a freqüência não mudar apareça outra mensagem
dizendo que não mudou.

No script do Set point da freqüência máxima “On LButton Down”:


IF MessageBox("Tem certeza que deseja mudar a frequência máx?","Cuidado",4h) == 6
Setpoint ‘frequência máx’.enabled = 1
ELSEIF MessageBox (“A frequência ainda é a mesma.”,”Aviso”, 0h) == 1
Setpoint ‘frequência máx’.enable = 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 ‘Frequência máxima’.

Verifique que, se você disser sim, o valor da variável pode ser alterado, mas se
disser não, aparecerá outra mensagem. Clicando ‘OK’ nessa mensagem e parando a
aplicação, na próxima vez o 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, habilite em algum lugar 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 ‘Start Running’.
Então, coloque no botão ‘Parâmetros do Inversor’. No script ‘On Press’, o Set
point (Frequência máxima). Enable = 1
Rode a aplicação e perceba a diferença.

Veremos outro estilo de message Box, onde aparece os botões ‘Sim’, ‘Não’ e
‘Cancel’.

No script do set point “Tempo de acel/desacel”, em “ON LButton Down”, coloque a


cópia do script do set point ‘Frequência máxima’, mudando o setpoint para ‘Tempo de
acel/desacel’, nas mensagens que tem escrito “freqüência Max” coloque “Tempo de
acel/desacel” e mude o estilo pra 3h.
IF MessageBox("Tem certeza que deseja mudar o tempo?","Cuidado",0003h) == 6
Tela2.Setpoint3.enabled = 1
ELSEIF MessageBox("Tem certeza que deseja mudar o tempo?","Cuidado",0003h) == 7
MessageBox("O tempo ainda é a mesma.","Cuidado",0000h)
Tela2.Setpoint3.enabled = 0
ENDIF
Rode a aplicação.
Pode-se perceber um erro no Scada. Quando clica-se no set point “Tempo acel...” e
seleciona ‘NO’ aparece a mesma caixa de mensagem.
O Scada mostra uma caixa de mensagem toda vez que aparece o comando
Message Box.
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 “No”,quanto para o botão
“Cancel”,quanto para o fechar.
Faça essa alteração e rode a aplicação

No mesmo script 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.
WHILE MessageBox(“Esse .... ) == 4
SetPoint (Tempo de acel/desacel).enable = 0
WEND

O repetir retorna 4.
Esse script significa que enquanto a mensagem retornar 4 (REPETIR), o setpoint
estará desabilitado, e quando outro botão for pressionado ele permanecerá desabillitado.
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 Message
Box’.
8ª Prática : Objeto alarme, Objeto Bitmap e Tag Matriz

Geralmente, em todas as telas, cria-se um objeto alarme para mostrar as falhas


ativas no sistema.
Crie 2 Tags Ram e 2 Tags Demo.
Crie um objeto alarme com c/ título ‘Falhas ativas’.
Crie grupo de alarmes.
Configurar as faixas do alarme em um dos tags Ram.
Faça o mesmo para os tags Demo.
Crie 2 sliders com mostrador associados aos tags Ram.
Rode a aplicação e mova os sliders.

Clique em um dos alarmes ativos e reconheça o alarme.


Explicar o porquê do reconhecimento e a função dos outros 3 botões.

Crie um bar graph do tipo ‘bar gauge’, de 0 a 100, c/ orientação da esquerda p/


direita.
Associe ao bar graph os 4 tags e habilite Mostrar labels.
Configure os mesmos limites de alarme de cada tag na aba ‘Cores do Bar
Gauge’.
Rode a aplicação, movendo os sliders e verificando os limites de alarme.

Praticamente todas as aplicações possuem uma tela de histórico de alarmes.


Crie uma tela com nome Alarmes e cor de fundo clara.
Crie um objeto texto que seja o título da tela de cor de fundo escura.
Projeto Inicial Alarmes

Crie um alarme c/ título ‘Falhas ocorridas no sistema’ e efeito 3D pra dentro 2.


Esse alarme deve ser do tipo histórico (registra de tempos em tempos todos os
alarmes do grupo de alarmes criado).
Faça as mesmas configurações do outro alarme nesse.
Crie um botão na tela 1 que vai pra tela alarmes.
Copie os 2 sliders da tela 1 e cole na tela alarmes.
Rode a aplicação e verifique os registros do histórico.

OBS: Na aba ‘Cores’ configure as cores quando reconhecido, ativo e as zonas.

Existe uma falha no Scada q ele só configura uma zona.


Na aba ‘Formato da mensagem’ pode-se configurar as colunas do alarme.
Explicar cada uma delas.
Coloque mensagens de alarme e retorno nos tags.
Rode a aplicação.

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 add a figura ‘bmbd.bmp’
Crie um botão c/ mensagem ‘liga motor’.
Crie um script no botão ‘On Press’:
Bitmap1.fileName = (“figuras\bmb.bmp”)
Quando clica-se, o bitmap recebe a figura do motor ligado.

No script do Tag Ram ‘On Alarm’:


Tela1.Bitmap1.fileName = ("figuras\bmbe.jpg")
Quando o alarme está ativo, a figura do motor será vermelha.

No script ‘On Alarm Return’:


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.

Pergunta: Como implementar essa lógica e onde ela deve ficar?


Resposta: Deve ficar no script do botão.
On Press:
IF Bitmap.fileName == (“figura cinza”)
Bitmap.fileName = (“figura verde”)
ENDIF

Mostrar o Tag matriz.


A função do Tag matriz é facilitar o trabalho com vetores e com operações com
muitos tags.

OBS: 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.

Eu vi apenas uma aplicação c/ o tag matriz e resumidamente era assim:


Crie outra tela chamada ‘Incêndio’.
Crie um tag Matriz com 5 colunas e 1 linha.
Crie as 5 células.

A idéia é a seguinte: Estamos recebendo 5 sinais de sensores digitais de incêndio, c/


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.
Coloque o nome dos 5 tags Ram de Andar1, Andar2... até Andar5, dentro de um
grupo chamado Incêndio.
Crie um Tag Ram com nome ‘setor’
Coloque no ‘while Running’:
IF Andar1 == 1
Setor = 1
ELSEIF Andar2 == 1
Setor = 2
ELSEIF Andar3 == 1
Setor = 3
ELSEIF Andar4 == 1
Setor = 4
ELSEIF Andar5 == 1
Setor = 5
ENDIF

Em seguida a estas linhas de comando, de acordo com o valor do setor, uma das
células receberá o valor desejado.
TagMatriz.SetCell (1, setor, 3)

Crie 5 botões do tipo Liga/desliga, cada um associado a um do 5 tags Ram.


Crie 5 displays, cada um associado com uma célula do Tag Matriz.
Crie um botão com título ‘Incêndio Controlado’, para ressetar os alarmes.
No script ‘On Press’ desse botão pode-se utilizar os comandos de fluxo p/ zerar as
células da Matriz, utilizando também uma variável declarada.
Dim i
FOR i = 1 to 5
Tagmatriz.SetCell (1, i, 0)
Setor = 0
NEXT

Crie um botão na 1ª tela com mensagem ‘Incêndio’, configurado p/ ir pra tela


Incêndio.
Rode a aplicação e verifique os resultados.

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.

Pergunta: Como ressetar as células no início da aplicação?


Resposta: Colocar o mesmo script do botão ‘Incêndio Controlado’ no ‘Start
Running’.

Utilizando o Tag Crono também podemos mostrar uma visualização de alarme.


Crie um tag crono.
Cada botão que simula o valor do alarme deve, quando pressionado, acionar o tag
crono.
Crie um Bitmap e add a figura ‘Alarme’.
Após 10s de ligado o tag crono, a figura do alarme deve aparecer, e sumir quando o
botão ‘Incêndio Controlado’ for pressionado.
Para isso, no script ‘While Running’:
IF tag crono.acum >= 10
Tag crono.enable = 0
Tag crono.Reset ( )
Figura do alarme = 1
ENDIF

Coloque a figura como invisível no início da aplicação e quando o botão for


pressionado.
Acione o tag crono quando um dos 5 botões for pressionado.

Rode a aplicação e verifique os resultados.


9ª Prática : Driver de comunicação, Tag PLC e Tag bit

Para fazer-mos a comunicação entre o CLP e o SCADA, precisamos de um driver


de comunicação.
Utilizaremos o driver “Mprot”.
Mostrar o manual do driver e suas configurações.
Mostrar o Tag PLC e suas configurações.
Mostrar o Tag Bloco, o Tag Bit e suas configurações.
Resolução dos exercícios do SCADA

Prática 5
Coloca-se o seguinte script no ‘While Running’:
IF tag001(nível) >= 90
Bitmap1.visible = 1
WHILE tag001 >= 60
tag001 -= 1
tag005 = 12500
WHILE tag005 >= 100
tag005 -= 1
WEND
WEND
Bitmap ‘lig motor’.visible = 0
ENDIF

Adiciona-se ao script ‘Start Running:


Bitmap1.visible = 0
tag005 = 12500

Prática 6
Fase 2:
Devem ser associados 2 tags para os botões tag3 e tag4 (B1 e B2).
No script do botão B1 ‘On Press’:
IF tag004 == 1 Se o botão B2 estiver acionado
tag002 = 2 Aciona-se as 2 bombas.
ELSE Caso contrário
tag002 = 0 Aciona-se somente a bomba B1.
ENDIF
‘On Release’:
IF tag004 == 1 Se o botão B2 estiver acionado
tag002 = 1 Deixa somente a bomba 2 acionada
ELSE Caso contrário
tag002 = 3 Desaciona as 2 bombas
ENDIF

No script do botão B2 ‘On Press’:


IF tag003 == 1 Se o botão B1 estiver acionado
tag002 = 2 Aciona-se as 2 bombas.
ELSE Caso contrário
tag002 = 1 Aciona-se somente a bomba B2.
ENDIF

‘On Release’:
IF tag003 == 1 Se o botão B1 estiver acionado
tag002 = 0 Deixa somente a bomba 1 acionada
ELSE Caso contrário
tag002 = 3 Desaciona as 2 bombas
ENDIF
Resolução dos exercícios do Ladder

3)

4) a)

b)

Vous aimerez peut-être aussi