Execução WriteRecord()

Boa tarde!

Tenho uma aplicação que monitora 15 equipamentos e realiza o gerenciamento de OEE dos sistemas, a cada tempo determinador pelo operador o sistema efetua os cálculos de OEE e armazena os resultados no BD (SQL), para isso criei um novo evento de script para que toda vez que o valor do gatilho de cálculo do dado for igual a 1 ele execute o script (Move as variáveis para os dados do histórico e executa um WriteRecord()), porém quando ocorre o evento de gravação com mais de um evento ao mesmo tempo (Caso dois ou mais equipamentos executem o calculo ao mesmo tempo), o sistema só guarda o último valor e acaba perdendo dados do sistema, tem como verificar se o comando foi executado e deixar executar o próximo script antes dele ser finalizado? Todos os script estão rodando no Drive de comunicação, dentro da variável de trigger do evento de script, segue abaixo o script:

'Armazena dados no Banco de Dados

Application.GetObject(“Dados.GerenciamentoProducao.Disponibilidade”).Value = Parent.Item(“Disponibilidade”).Value100
Application.GetObject(“Dados.GerenciamentoProducao.MTBF”).Value = Parent.Item(“MTBF”).Value
Application.GetObject(“Dados.GerenciamentoProducao.MTTR”).Value = Parent.Item(“MTTR”).Value
Application.GetObject(“Dados.GerenciamentoProducao.OEE”).Value = Parent.Item(“OEE”).Value
Application.GetObject(“Dados.GerenciamentoProducao.Performance”).Value = Parent.Item(“Performance”).Value
100
Application.GetObject(“Dados.GerenciamentoProducao.Qualidade”).Value = Parent.Item(“Qualidade”).Value*100
Application.GetObject(“Dados.GerenciamentoProducao.TagEquipamento”).Value = “Strech”

Application.GetObject(“OEE”).WriteRecord()

Todo o sistema possui um bloco no CLP e um XControl no Elipse, alguns dados são armazenados, outros não.

Desde já agradeço.

Carlos,

Não sei se entendi bem, mas sugiro criar uma estrutura de dados separada para cada equipamento. O melhor seria colocar tudo dentro de um XObject.

Existem erros no script, Value100 deveria ser .Value * 100, nas seguintes linhas.

Application.GetObject("Dados.GerenciamentoProducao.Disponibilidade").Value = _ 
        Parent.Item("Disponibilidade").Value100
'..............................................................................'
Application.GetObject("Dados.GerenciamentoProducao.Performance").Value = _ 
        Parent.Item("Performance").Value100

Pessoal, boa noite!

Meu problema estava no meu banco de dados, o Elipse criava os arquivos .e3i e .e3o pois a comunicação com o banco Acess estava muito lenta para o volume de informações que precisava gerar.

Substitui o Banco para SQL Express e parou os problemas do comando WriteRecords().

Obrigado pela ajuda.

1 Like