Ola estou com dificuldade em fazer um script para um cliente, nele eu preciso fazer um botão de esterilização aonde eu subo a temperatura em um valor determindado e depois conta um tempo e depois esfria.
Bom dia,
O que você está querendo fazer é setar um data point, aguardar um tempo e em seguida setar novamente o data point com outro valor, certo? Para fazer isso você pode criar um script com temporização, utilizando a página de Scripting do ScadaBR.
Vou deixar um pequeno passo a passo de como criar um script básico usando temporização (veja a imagem abaixo).
Primeiramente, você deve acessar a página de Scripting (1) e clicar para adicionar um novo script (2). Para que você possa escrever valores em data points, é necessário habilitar uma variável de comandos para data points (3.1), e opcionalmente você pode alterar o nome que será dado a essa variável (3.2) (no nosso caso, alteramos o nome para dp).
Em seguida, você deve criar o script desejado (4). E é aqui que entra a mágica: o modo mais comum para criar uma temporização no ScadaBR é chamar a função Date().getTime()
para pegar a hora do sistema e utilizar um loop while()
para ficar aguardando até que se passe um determinado tempo em milissegundos. Essa estratégia irá fazer o script “pausar” enquanto o tempo não é atingido, permitindo que você faça um set point antes e depois dessa pausa (para setar valores você deve invocar o .writeDataPoint()
da sua variável de comandos, passando o XID do data point e o valor a ser escrito).
Pronto seu script, salve-o (5) e clique no botão de executar para testá-lo (6). (Importante: para testar alterações no script você deve sempre salvá-lo antes)
Confira abaixo um exemplo de código que seta o valor do data point DP_204323 para 123, aguarda 5 segundos e em seguida seta o data point para 456.
// Escreve valor 123 no datapoint com XID "DP_204323"
dp.writeDataPoint("DP_204323", 123);
// Aguarda 5000 milissegundos (5 segundos)
var milissegundos = 5000;
var anterior = new Date().getTime();
var atual = new Date().getTime();
while ( (atual - anterior) < milissegundos) {
// Atualiza o tempo atual
atual = new Date().getTime();
}
// Escreve valor 456 no datapoint com XID "DP_204323"
dp.writeDataPoint("DP_204323", 456);
Depois, para chamar esse script numa Representação Gráfica você pode adicionar um componente do tipo: Botão (script)
Muito Obrigado Novamente
O que eu preciso é setar esperar um tempo e depois resetar
Seria um botão de esterilização onde eu preciso tirar micro organimos de um tanque então eu subo a temperatura e depois eu esfrio para começar um processo
Para isso provavelmente o script que eu passei irá servir.
Está dando erro na execução do script
Pode ser alguma coisa escrita errado. Se possível, poste um print da sua tela mostrando o script completo, para ficar mais fácil de perceber possíveis erros.
O print não está me permitindo ver o código completo, você está fechando a chave {
aberta após o if
?
A=p7.value;
if (A==1)
{
val_2.writeDataPoint(‘DP_763213’,1);
var inicio = new Date().getTime();
var atual = new Date().getTime();
while((atual - inicio) < 5000)
{
atual = new Date().getTime();
}
val_2.writeDataPoint(‘DP_170540’,0);
////////////////////////////////////////////////
while((atual - inicio) < 60000)
{
atual = new Date().getTime();
}
//////////////////////////////////////////////////
val_2.writeDataPoint(‘DP_951363’,1);
var inicio = new Date().getTime();
var atual = new Date().getTime();
while((atual - inicio) < 5000)
{
atual = new Date().getTime();
}
val_2.writeDataPoint(‘DP_170540’,0);
}
else
{
void dp.writeDataPoint(‘DP_170540’,0);
Na parte depois do else
: você deve tirar o void
e substituir o dp
por val_2.
(e fechar a chave {
do else se não foi fechada)