Elaboração de Script

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)

1 curtida

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)