Scripting

Bom dia,

 

Estou criando um script para povoar um meta data point com a soma semanal dos m3 movimentados por uma bomba nas ultimas 10 semanas:

for (var i=1; i<10; i++)
  {
x=(p1.prev(WEEK,i).count)
y=p1.prev(WEEK,i).sum
z=y/x*24*7

new Date((p1.prev(WEEK,i).end))
dp.writeDataPoint('DP_598852',z)
  }
 

Os cálculos ainda não estão como eu gostaria, mas é apenas uma questão de pensar mais um pouco.

O meu problema é que quando escrevo no datapoint através do writeDataPoint, fico sempre com o timestamp do momento da escrita e não o referente ao final da semana em que foi calculado o valor.

Tem alguma forma de alterar o timestamp de um datapoint através de script?

Tem mais alguns comandos para comunicar com o datapoint? Só conheço:

writeDataPoint

enableDataPoint

disableDataPoint

No script do meta data point posso alterar o timestamp, mas não posso utilizar laços (for), No script posso utilizar laços mas não consigo alterar o timestamp.

A ideia, é ir buscar os dados antigos para calcular os volumes movimentados por semana e não apenas calcular sempre que a semana acaba, o que é facil no script do meta data point:

TIMESTAMP = (p1.prev(WEEK,1).end)-0.001

x=p1.prev(WEEK,1).count
y=p1.prev(WEEK,1).sum
return y/x*24*7
 

Agradeço a ateção,

Narra Pisa

 

 

Vai uma ajudinha?

=> Uma curiosidade, essa sua variável p1 é de que tipo? (binario, numerica)

Olá Narra,

O Meta Data Point não pode conter loops... isso pode prejudicar o funcionamento RT do ScadaBR e até travar a aplicação.

Sim, existe uma maneira. Mas ela envolve fazer algumas melhorias em código no ScadaBR. Aqui vai o passo a passo

  1. Baixar o brach rbautomacao-fsgv no SVN do projeto;
  2. Alterar a classe DPCommandsScriptContextObject que está em src\br\org\scadabr\rt\scripting\context e adicionar uma função nova - ex: writeDataPoint(String xid, String stringValue, long timestamp); Esta função deve utilizar a função do RuntimeManager do ScadaBR já com a atribuição do Timestamp.
  3. Recompilar o .war;
  4. Substituir na pasta webapps do tomcat;
  5. Utilizar a nova função para alterar valores com o parâmetro de timestamp na ferramenta de Scripting;

Dê uma olhada nas classes RuntimeManager e DPCommandsScriptContextObject para referência.

Nosso SVN:

http://sourceforge.net/scm/?type=svn&group_id=268123&source=navbar

Caso tenha dificuldades ou não seja nativa no Java para desenvolvimento, podemos colocar na nossa lista de futuras melhorias. Se precisar deste desenvolvimento sob demanda, mande um email para contato@scadabr.org.br e enviaremos uma cotação para atualização para suas necessidades.

Abraços e Boa Sorte =]