Executar script sempre

Boa tarde, tenho uma aplicação onde preciso criar um script que rode o tempo todo enquanto o programa está em execução. Este script precisa conferir se as tags de reset dos motores estão True e após contar um tempo(10 segundos), alterar essa mesma tag para False, é possível fazer isso dentro do Elipse E3? Se sim, tem alguma orientação ou documentação para auxílio?
Obrigado.

Olá Patricia!

É possível, mas não é recomendado fazer isso. Scripts repetitivos do tipo “WhileRunning” são potencialmente prejudiciais para a performance da aplicação.

O mais indicado nesse caso é criar um evento que seja executado somente se o valor do Tag for igual a true.

Sim, não tinha pensado nisso. Nesse caso como posso fazer essa verificação, preciso que seja independente das telas.

E só criar um novo evento no Tag, associado a propriedade Value dele, com a condição de ocorrência sempre que a expressão for verdadeira.

Anota%C3%A7%C3%A3o%202020-08-14%20151750

Para contar os 10 segundos, você pode usar um Tag Contador. Veja mais detalhes no link abaixo.

Muito obrigado, bem mais simples assim. Vou fazer aqui e ver se consigo resolver o meu problema desse jeito.

1 Like

Bom dia, não consegui resolver o problema dessa maneira. Eu estou usando 1 bit da Word de comunicação, talvez isso também esteja atrapalhando. Segue uma imagem do script que eu preciso, a maior problema hoje é que se cair a comunicação com o CLP e o bit de reset está

em 1(é um botão de pulso), quando a comunicação volta ele não está alterando para 0 este mesmo bit, ele trava em 1. Tem como fazer algo semelhante ao que eu fiz na tag de comunicação?

Patricia, a linha 3 não vai funcionar da forma esperada. Os operadores lógicos e aritméticos só podem ser usados em condições ou expressões. A sintaxe correta do script seria assim:

if Bit06 = true then
    Application.GetObject("Dados.Espelhamento.count2").Value = 10
    Bit06 = false
end if

Alterei para a sintaxe correta, mas também não está funcionando.

O que exatamente não está funcionando?

Ele não está alterando o valor do bit para 0 após o tempo estimado do contador, continua em 1.

Nesse caso, o script tem que estar no evento OnPreset do Tag Contador e não no OnStartRunning do Tag de Comunicação.


Também alterei o True/False para 0 e 1 e coloquei o script na tag do contador. Mas também não funciona.

Você está habilitando o Tag Contador no script do Tag de Comunicação?

Não, como que eu faz isso, poderia explicar por favor?

Está naquele artigo do KB que eu passei anteriormente. Tem que ligar a propriedade Enabled do Tag Contador.


É possível colocar a propriedade Enabled dentro do if do tag contador, como eu fiz ali na imagem?

Não precisa. É só configurar a propriedade AutoRestart = False.

Fiz a alteração ali, e testei mas infelizmente não consigo fazer ir para 0 aquele bit na hora que reestabelece a comunicação com o CLP. Não sei mais onde estou errando.

Se quiser enviar a aplicação para o meu e-mail, posso dar uma olhada.

Patricia,

Você tem que ligar o Tag Contador (Enabled=True) no momento em que o Bit do Tag de Comunicação é ligado (aquele evento OnValueChanged que sugeri fazer inicialmente), e não no OnPreset do Tag Contador.