Passar o valor de um Tag interno para uma variável CLP via scripts

Estou com um problema na passagem de um tag interno para um tag CLP via scripts.
Quando executo o script, a variável CLP zera.
Já verifiquei no CLP e não há nada que justifique isso.
O script é bem simples:
Application.GetObject(“DEBULHACAO.OnLine.N30.N30_33”).Value = Application.GetObject(“Dados_Debulha.TagInterno1”).Value

Existe algum impedimento no sistema quanto a isso?

Olá @Fernando_Weiss
Não existe impedimento algum.
Se a ideia é escrever o valor do tag interno no tag de comunicação, está faltando o comando de escrita. Da forma que você está fazendo, você está apenas atribuindo os valores, sem enviar o comando de escrita ao equipamento.
Teste utilizar o comando Write após o seu script ou utilize o comando WriteEx como o exemplo abaixo.
Application.GetObject(“DEBULHACAO.OnLine.N30.N30_33”).WriteEx Application.GetObject(“Dados_Debulha.TagInterno1”).Value

1 Like

Olá Daniel.
Quando testo o commando Write após meu script, o valor do tag de comunicação zera e retorna ao valor antigo.

Ao utilizar o comando WriteEx, o valor do tag apenas zera.

Caro @Fernando_Weiss,

O valor do tag zera e em quanto tempo retorna para o valor antigo?
Poderia me enviar o log do driver e, se possível, a aplicação?
Assim poderei testar o que está ocorrendo.

Meu email é link@elipse.com.br

1 Like

Obrigado pela ajuda via email Daniel.

O que solucionou foi converter o tag interno para inteiro, conforme você me passou:

Application.GetObject(“DEBULHACAO.OnLine.N30.N30_33”).WriteEx CInt(Application.GetObject(“Dados_Debulha.TagInterno1”).Value) ‘Converter para inteiro
Application.GetObject(“DEBULHACAO.OnLine.N30.N30_33”).WriteEx CDbl(Application.GetObject(“Dados_Debulha.TagInterno1”).Value) ‘Converter para Double

Agradeço a atenção e o auxílio.

Bom dia.
Estou tendo o mesmo problema.

Caro @Bruno_Ferreira,

O problema esta que você inseriu uma propriedade (.value) e um metodo (.WriteEx) no mesmo caminho.
Tente da seguinte forma:
Se for um tag de comunicação: Parent.Item(impInt6).WriteEx Value
Se for um tag interno: Parent.Item(impInt6).Value = Value

Att.
Link


Consegui efetuar com o comando da imagem. Para teste, copiei uma tag interna para outra e deu certo! Porem coloquei um botão para transferir o dado de uma tag para outra. Gostaria que isso fosse feito automaticamente. EX: quando mudar o valor da tag 1 seja mudado a tag 2 junto, pois copio o valor da tag 1 para tag 2!

Ola @Bruno_Ferreira,

Você já tentou associar o tag 1 e o tag 2? Desta forma, quando um alterar o valor, o mesmo e enviado para o segundo. Não precisando de script.

Att.
Link

Ainda não, vou tentar!
Teria uma opção de fazer da maneira que fiz, mas os dados mudarem automaticamente quando alterados? sem precisar eu dar um comando? EX: quando mudar o valor no banco de dados, coloco em um tag interno esse dado e automaticamente transfere para uma tag de comunicação, sem q seja necessário um comando?

Caro @Bruno_Ferreira,
Por associação vai funcionar desta maneira. O valor vai chegar ao tag interno e, por associação, o valor vai ser enviado para o tag de comunicação.
Outra opção seria no script que faz a leitura do banco, enviar para o tag de comunicação.

Att.
Link

Boa noite. Funcionou perfeitamente.
Agora aproveitando da sua bondade, estou usando o comando GetADORecordset para consultar um dado do banco, porem dou um comando (botão) para realizar a escrita do banco na minha tag interna. Tem um modo que eu faça que quando o dado do banco mudar, automaticamente mude minha tag, sem necessitar de um comando manual?
Muito obrigado por sua ajuda ate aqui, tem sido de grande valia.

Ola @Bruno_Ferreira,

Maravilha.
Troque a localização do script de um botao para um tag contador.
Assim de tempos em tempos, o script é executado atualizando os valores.

Att.
Link

Legal, vou fazer. Obrigado mesmo!!!

1 Like