Descrição:
É possível gravar/visualizar dados de uma batelada específica em um Histórico no E3, semelhantemente ao que acontece no Elipse SCADA?
Solução:
Sim, é possível. Para isto, siga estes procedimentos:
1. Crie dois objetos: um Banco Dados e um Histórico.
2. No Histórico, insira os campos da batelada, além de um campo para o seu nome.
<
3. Na tela, insira dois objetos E3Browser (semelhantemente ao que é feito no Elipse SCADA): um para mostrar as bateladas criadas e o outro para mostrar os valores. Além disto, crie três botões: Iniciar Batelada, Finalizar Batelada e Reiniciar Última Batelada.
4. Configure a consulta Bateladas do E3Browser para mostrar apenas os nomes das bateladas. Insira apenas o campo Batelada, e utilize a função Agrupar por.
Ou se preferir, insira o código SQL na aba SQL da consulta:
SELECT tab_batelada.Batelada FROM tab_batelada GROUP BY tab_batelada.Batelada
Esta função retorna todos os valores do campo sem repeti-los.
Código SQL:
SELECT tab_batelada.E3TimeStamp,tab_batelada.Campo1,tab_batelada.Campo2,tab_batelada.Campo3
FROM tab_batelada
WHERE ( tab_batelada.Batelada = '<%Nome_Batelada%>' )
ORDER BY tab_batelada.E3TimeStamp ASC
6. No evento DblClick do objeto E3Browser Batelada, insira o script abaixo:
batelada = GetColumnValue(0)
set consulta = Screen.Item("E3Browser2").Item("Consulta1")
consulta.SetVariableValue "Nome_Batelada", batelada
Este script busca o nome da batelada selecionada (GetColumnValue), que passa para a variável da consulta do outro objeto E3Browser.
7. Nos botões Iniciar, Finalizar e Reiniciar Batelada, insira os seguintes scripts:
Iniciar Batelada:
set nome_batelada = Application.GetObject("Dados.Batelada")
batelada = InputBox ("Insira o nome da batelada")
if batelada <> "" then
nome_batelada.Value = batelada
Application.GetObject("Hist1").ScanTime = 1000
MsgBox nome_batelada.Value & " Iniciada!"
else
MsgBox "Nome da batelada não informado."
end if
Finalizar Batelada:
nome_batelada = Application.GetObject("Dados.Batelada").Value
Application.GetObject("Hist1").ScanTime = 0
MsgBox nome_batelada & " Finalizada"
Reiniciar Última Batelada:
nome_batelada = Application.GetObject("Dados.Batelada").Value
Application.GetObject("Hist1").ScanTime = 1000
MsgBox nome_batelada & " Reiniciada!"
Obs.: Anexo a este artigo está uma aplicação exemplo, desenvolvida no E3 versão 4.0 Build 214.