Scripts ScadaBR


#1

Boa tarde,

Estou inaugurando este tópico para falarmos sobre Scripts, troca de experiências entre os Scadistas.

Estou com uma dúvida e pode ser na sintaxe. Quero pelo acionamento de um botão ativar múltiplos datapoints:

if (bt1.value==true)
{
lamp1.value = true;
lamp2.value = true;
}

else
{
lamp1.value = false;
lamp2.value = false;
}


#2

Grande Jonathan,

Deixa eu ver se entendi. Se quer acionar diversas saídas com um script único a saída é usar um “Scripting”, porém, ele não roda em tempo real, apenas com algum gatilho em determinados momentos. Se precisar rodar em tempo real este script, considere fazer 2 scripts dentro de um “Data Source Meta” lembrando que cada meta tem uma única saída.
Mas usando a primeira ideia, vamos ao scripting.

Primeiro adicione ao contexto o “bt1”, em “Comandos para Datapoints” na caixa “Var” escreva “dp” para ficar igual o exemplo abaixo ou outro apelido, mas vai ter editar o exemplo abaixo e depois marque a caixa “Add” correspondente a esta linha que está editando.

if (bt1.value==true)
{
   dp.writeDataPoint('DP_392414',1);
   dp.writeDataPoint('DP_392415',1);
}
else
{
   dp.writeDataPoint('DP_392414',0);
   dp.writeDataPoint('DP_392415',0);
}

Repare que a lâmpada 1 e 2 não participa de nenhuma lógica no scripting (por isso não precisa ser adicionado ao contexto), apenas é uma saída, neste caso seriam os datapoints com XID de DP_392414 e DP_392415 respectivamente, lembrando que este número é encontrado em detalhes do datapoint.

Usei no exemplo escrita com 1 e 0 mas poderia ser true e false também.

Acho que é isso, ah vale a pena ler este post para entender mais sobre scripting’s.


#4

Grande @fabiodurao! Obrigado! Já estou testando aqui.


#6

Com o Meta a ideia seria essa

if (bt1.value==true)
{
return true;
}
else
{
return false;
}

lembrando que o datapoint que for criado dentro do meta, tem que ter o bt1 adicionado ao contexto e o resultado do script, no caso o “return algo” é o valor do próprio datapoint, então, isso por si só ainda não vai ligar a lâmpada. Obs.: Não se esqueça de escolher o datapoint como “binário” neste caso.

1 - Primeiramente você terá que fazer um script desse para cada lâmpada, ou se ambas ligarem ao mesmo tempo, pode fazer um só.

2 - Depois de criado o script e conseguir o valor de interesse, agora precisa fazer ele alterar o valor do datapoint de interesse, para isto, usará um “pointlink”, agora necessariamente precisará de um pointlink por lâmpada, lembrando que os pointlinks tem apenas um dado de origem e um de destino. Então poderá usar um script como origem de 2 pointlinks, porém, com 2 destinos diferentes, um em cada pointlink
Neste caso, escreva dentro scritp do pointlink:

return source.value;

isto se o destino for receber o dado já no formato binário “true” e “false”, senão faça um conversão no script do pointlink ex: true=1 ou true=on e por aí vai… ou também pode fazer esta conversão direto no script do meta, acho que não será necessário pra vc!

Enfim, é isto!


#7

Meu problema é exatamente no Script para acionar n lâmpadas (datapoints) ao mesmo tempo

O script para esses datapoints seria assim?

if (led1.value&& led2.value && led3.value==true)
{
return true;
}
else
{
Return false;
}

#8

Creio que não,

Repare em suas condições… Pelo que entendi vc quer testar se um botão está ativo e com isto ligar mais de 1 lâmpada ou led ao mesmo tempo certo? Então não tem porque testar o status dos leds, só o status do botão que é importante. O Scritpt seria exatamente igual eu postei no último comentário.


#9

Tudo bem, Obrigado pela ajuda Mestre @fabiodurao ! Tem dias que estou nisso.


#10

Bom dia, preciso colocar este comandos dentro de uma script para vincular com um alarme:

url = “https://www.teste.com.br/sendMessage?chat_id=-241159982&text=Scada_Chamando”;
http.open(“POST”, url, true);

Como posso fazer?


#11

Bom dia, estou desenvolvendo um projeto Arduino Uno (ModBus IP) e ScadaBR para fazer o acionamento de um Religador Cooper F5 qual necessito somente de um pulso para o mesmo armar o mecanismo, tenho programado via código duas portas digitas, uma para Fechamento e outra para Abertura, alguém poderia me dar um luz como posso resolver este problema, abraço a todos.

var s = “”;
if (value)
s += “”;
else
s += “”;
return s;
Tentei este mas ele só faz a opção de Ligar e Desligar quando acionado.