E3 interpretando mudança de valor ao rodar aplicação

Boa tarde a todos

Eu criei um script em um bit de um tag de driver para escrever um registro no banco de dados sempre que o valor da variável mudar, no entanto quando rodo a aplicação o E3 identifica como se o valor da variável estivesse mudado e escreve o registro no banco.

Existe alguma maneira de fazer com que o E3 não interprete isso como mudança de valor? a opção tratar desconexão como mudança já está desabilitada.

Muito obrigado

Kelvin,

Uma alternativa seria passar por script toda a alteração de valor do Bit para um Tag Interno e inserir o registro no banco somente quando o valor do Tag Interno for alterado.

Para que isso funcione, é preciso usar o método Save da Pasta de Dados do Tag Interno. Isso pode ser feito no evento OnStopRunning da Pasta de Dados. Assim, o Tag Interno manterá o último valor recebido do Bit quando o domínio for parado.

Bom dia Paulo, obrigado. Aparentemente funciona, porém eu notei duas coisas:

  • Somente a pasta Dados possui o método Save(), as subpastas não possuem
  • Começou a dar uma erro quando vou salvar o projeto, relacionado à pasta Dados:
    image

Sabe porquê?
Obrigado!

Kelvin,

Esse erro ocorre sempre que você tenta salvar uma modificação feita em um objeto após ele ter sido salvo em tempo de execução (utilizando o método Save). Clique no link abaixo para saber mais detalhes.

O objeto DataFolder não possui o método Save, só o DataServer.

1 Like