Script para controle

Bom dia Pessoal,

Criei um script básico para tomar uma ação conforme uma tag com valor de nível, ele basicamente testa se a tag de controle UG estiver habilitada e o nível for igual a x ele da um pulso de comando do tipo true (Faz a partida) para iniciar a rotina e caso a tag nível seja um valor y ele da outro comando true em outra tag (Faz a parada). Eu usei tags internas para poder testar e validar, porém não está tendo ação alguma nas tags, alguém poderia me ajudar por favor o porque ele não está respondendo

. Em anexo está o código.

Coloca MsgBox em pontos para saber se está chegando nele, talvez seja pelo evento atual. Crie um evento monitorando o Nivel_Reservatorio, toda vez que ele mudar o valor, ele vai verificar esse código.

1 Like

Boa noite @Milsonrss agradeço desde já pela sua ajuda, mas poderia por favor me dar um exemplo de como seria esse evento na tag para monitorar o Nivel_Reservatorio para a atualização do script.

Aproveitando teria alguma maneira que eu possa criar um delay para escrita de valor via vbscript.

Desde já agradeço.

O script como foi desenvolvido, irá executar apenas quando o servidor iniciar OnStartRunning(), caso as variáveis não atendam o valores das cláusulas If exatamente no momento da inicialização, nada irá ocorrer.

Além disso,

WScript.Sleep irá falhar neste contexto, para delay, utilize um TagContador;
MsgBox irá falhar em um evento do servidor, você deve usar Aplication.Trace;

Tente, criar um novo evento sempre que a condição for verdadeira.

# Expressão
DTG.ENE.U1.ENE.U1.Teste.Nivel_Reservatorio.Value >= 1.3 Or DTG.ENE.U1.ENE.U1.Teste.Nivel_Reservatorio.Value <= 1.2
Sub UG_Geral_OnTrue()
	Dim objLevel
	
	Set objLevel = Parent.Item("Nivel_Reservatorio")
	
	If ( Parent.Item("UG_Ligar_Nivel").Value = True ) Then
		If ( objLevel.Value >= 1.3 ) Then
			' Do stuffs...
			Application.Trace "Maior igual 1.3"
		ElseIf ( objLevel.Value <= 1.2 ) Then
			' Do other stuffs...
			Application.Trace "Menor igual 1.2"
		End If
	End If
End Sub

1 Like

Acabou que o @leandrobpedro já fez para você e comentou sobre o delay, usa o Tagcontador, toda vez que for ativo ele conta até o limite estipulado e executa uma ação.

1 Like

Boa noite @leandrobpedro desde já agradeço sua ajuda, eu implementei o algoritmo conforme você exemplificou, eu adicionei apenas os comandos das etapas da partida que estão dentro do laço e o valor que ele respectivamente escreve na tag de “potência alta, baixa”, porém, ele só sobe para True o valor do comando e a escrita do valor de potência quando eu executo a aplicação, não varrendo o script conforme a condição de verdadeira para o nível, em anexo está o código, se puder por favor ajudar com o que pode estar errado, ou não atualizando o script conforme o nível. Estou validando as tag internas pela WatchWindow.

Sub Script_Teste_OnTrue()
Dim objLevel
Set objLevel = Parent.Item(“Nivel_Reservatorio”)
If ( Parent.Item(“UG_Ligar_Nivel”).Value = True ) Then
If ( objLevel.Value >= 1.3 ) Then

		Parent.Item("UG_Recebe_Comando1").WriteEx(True) 'Aguarda um tempo de ciclo...
		Parent.Item("UG_Recebe_Comando2").WriteEx(True) 'Aguarda um tempo de ciclo...
		Parent.Item("UG_Recebe_Comando3").WriteEx(True) 'Aguarda um tempo de ciclo...
		Parent.Item("UG_Potencia_Alta").WriteEx(200)
		
		Application.Trace "Maior igual 1.3"	
	ElseIf ( objLevel.Value <= 1.2 ) Then
		Parent.Item("UG_Recebe_Parada").WriteEx(True) 'Aguarda um tempo de ciclo...
		Parent.Item("UG_Potencia_Baixa").WriteEx(50)
		
		Application.Trace "Menor igual 1.2"
	End If
End If

End Sub

Boa noite @Milsonrss infelizmente ele não atualiza o script conforme a condição da expressão, apenas quando executo a aplicação que ele faz o debug do script. Desde já agradeço a ajuda.
Para o tagContador é possível usar mais de uma tag no mesmo conatdor com delays diferentes?

Bom dia @Jean, vou te mostrar onde fiz, foi um script na tela, e aqui funcionou.

Segue a imagem abaixo.

Caso precise, envio o backup do que eu fiz. Usei o case para comparar o valor do contador, deixei ele até 20 e fiz essa logica.

1 Like

Aqui a condição não é atendida.

1 Like

Olá @Milsonrss , obrigado pela força, poderia me enviar seu backup por favor no email jean@eletrify.io.

Enviei para o email acima.
Caso o email esteja incorreto segue o link.

Baixar aqui

1 Like

Obrigado @Milsonrss!