A partir da versão 6.0 do Elipse E3/Power, é possível utilizar o componente TrendAnalysis. Os objetivos deste artigo são primeiramente apresentar a ferramenta, e depois demonstrar sua utilização com uma aplicação exemplo.
O TrendAnalysis é uma ferramenta para exibição de dados históricos e que usa os Tags providos pelo serviço de histórico automático do E3 (o tag utilizado precisa estar sendo armazenado em um Histórico). Sendo assim, os principais recursos do TrendAnalysis são os seguintes:
- Capacidade para grande volume de dados
- Visualização clara da escala de tempo para qualquer nível de zoom
- Rolagem e zoom por escala ou por área
- Pesquisa por valor anterior, mais próximo ou interpolado
- Displays atualizados automaticamente
- Visualização da qualidade de um ponto e indicação de pontos com valores nulos
- Enquadramento permanente de Penas por eixo
Esta ferramenta está acessível não só através do método GetTrendAnalysis, para criação e configuração, mas também do ShowTrendAnalysis, do E3 Viewer, para visualização. Desse modo, a janela resultante pode ser vista na figura a seguir.
Assim, as opções de configuração das abas presentes na janela do TrendAnalysis estão descritas nos tópicos a seguir.
Aba Exibições
Esta aba mostra as Penas correspondentes aos dados disponíveis na aba Conexões. Desse modo, as opções disponíveis ao clicar com o botão direito do mouse na Exibição estão descritas na tabela a seguir.
Opção |
Descrição |
Selecionar Colunas |
Permite selecionar quais as colunas são mostradas para as Penas |
Atualização Automática | Habilita ou desabilita o modo de atualização automática |
Mostrar Linhas da Grade | Mostra ou esconde as linhas de grade na área das Penas |
Mostrar Pontos Mín./Máx. | Mostra ou esconde os pontos mínimos e máximos das Penas |
Mostrar Legenda Local | Mostra uma legenda com o nome da Pena e a respectiva cor |
Interpolar | Utiliza interpolação para desenhar a Exibição |
Aba Marcadores
A aba Marcadores permite adicionar um marcador, ou bookmark, a um determinado período de tempo de uma Pena. Para isto, clique com o botão direito do mouse na área da aba e então selecione a opção Novo Marcador para abrir a janela da figura a seguir.
Aba Conexões
A aba Conexões mostra a conexão com o E3 e os Tags disponíveis para uso nas Exibições. Para adicionar uma Pena, arraste um Tag para a área da Exibição ou então clique com o botão direito do mouse em um Tag e selecione a opção Inserir.
Área de Exibições
A barra de título de uma Exibição mostra um ícone que representa o modo de reprodução daquela Exibição, que pode ser reproduzindo ou pausada .
No modo de reprodução, a Escala de Tempo se desloca em direção ao futuro, permitindo assim que se acompanhem valores em tempo real. Portanto, mover a Escala de Tempo para o passado ou aplicar um zoom não altera o sentido de deslocamento da Escala.
Assim, para maiores detalhes sobre as opções de configuração do objeto, consulte o item TrendAnalysis do Manual do Usuário do E3 e Manual de Referência e Scripts do E3.
Aplicação Exemplo
A fim de mostrar uma janela do TrendAnalysis carregando uma configuração previamente salva, definindo seu tamanho e posição, foi utilizado o seguinte script:
Sub CommandButton2_Click() Application.ShowTrendAnalysis "TrendAnalysis Window", , _ , Application.GetObject("Dados.TagTrendSave").Value Set TA = Application.GetTrendAnalysis("TrendAnalysis Window") TA.SetWindowPlacement 400, 150, 800, 500 End Sub
Caso objetivo seja exibir uma janela sem configuração pré-definida e tamanho, utilize então o seguinte script:
Application.ShowTrendAnalysis "TrendAnalysis Window", 200, 200, ""
Para persistir o conteúdo do objeto, dentro da tela inicial há um CommandButton cuja função é exibir uma janela do TrendAnalysis e então carregar (método Load) a configuração do objeto TrendAnalysis:
Sub CommandButton1_Click() Set TA = Application.GetTrendAnalysis("TrendAnalysis") if (not Application.GetObject("Dados.TagLoaded").Value) then TA.Load Application.GetObject("Dados.TagTrendSave").Value, ConfigStatus If ConfigStatus <> 0 Then MsgBox "Error " & CStr(ConfigStatus) & " when loading configuration!" End If Application.GetObject("Dados.TagLoaded").Value = true end if Application.GetObject("Dados.Open").Value = true TA.Show End Sub
Ao mesmo tempo, ainda na tela inicial há dois scripts nos eventos OnStartRunning() e OnStopRunning(), cujas funções são respectivamente criar ou recuperar a janela TrendAnalysis com identificador/título “TrendAnalysis”, e salvar (método Save) a sua configuração:
Sub TelaInicial_OnStartRunning() Set TA = Application.GetTrendAnalysis("TrendAnalysis") Application.Item("TagTrendObj").Value = TA Application.GetObject("Dados.TagLoaded").Value = false End Sub
Sub TelaInicial_OnStopRunning() if Application.GetObject("Dados.Open").Value then Set TA = Application.GetTrendAnalysis("TrendAnalysis") Application.GetObject("Dados.TagTrendSave").Value = TA.Save Application.GetObject("Dados.Open").Value = false Application.GetObject("Dados").Save end if End Sub
Posteriormente, para fechar a janela do TrendAnalysis:
Sub CommandButton3_Click() Set TE = Application.GetTrendAnalysis("TrendAnalysis") TE.Close End Sub
Por fim, para verificar se existe uma janela do TrendAnalysis aberta ou não.
Sub CommandButton4_Click() Set TE = Application.GetTrendAnalysis("TrendAnalysis") MsgBox "TrendAnalysis IsOpened= " & TE.IsOpened End Sub
Em anexo encontra-se a aplicação exemplo, que foi desenvolvida no Elipse E3 v6.0.199.
Anexos:
Notei que quando crio um trend dentro do viewer, ele pega os dados históricos do meu banco de dados (registro de 5 em 5 minutos) e depois as penas começam a desenhar em tempo real (2 em 2 segundo).
Mesmo após eu fechar o viewer e fazer logoff no servidor onde minha aplicação roda, quando entro novamente noto que ao abrir o gráfico ele faz três coisas:
1 – Pega os valores antigos (de 5 em 5 minutos)
2 – Busca os valores que tinha desenhado em tempo real (2 em 2 segundos) na ultima vez que abri o gráfico.
3 – A pena continuou desenhando em tempo real (2 em 2 segundos) no gráfico mesmo eu não estando com ele aberto.
Obs.: No meu banco de dados continuou o registro de 5 em 5 minutos durante esse tempo mas o gráfico conseguiu puxar as informações (2 em 2 segundos) de algum lugar.
Gostaria de saber onde fica armazenado esses valores em Tempo real (2 em 2 segundos) que o gráfico consegue buscar.
Receio de isso acabar gerando muito dados armazenados no servidor e prejudicar o desempenho da aplicação.