Como usar o valor de um registro do histórico e gravá-lo numa tag do PLC?

Como usar o valor de um registro do histórico e gravá-lo numa tag do PLC?

Eduardo,

Você pode utilizar o método GetADORecordset da Consulta. Veja mais detalhes no artigo do KB abaixo.

Ok Gustavo, essas informações me ajudaram bastante.
Porem não sei como proceder para gravar no PLC, sempre que o registro do histórico mudar o seu valor.

Acho que não entendi o que você quer fazer. Poderia explicar melhor?

Entendi.
Mas como automatizar essa ação, para que sempre que o registro “Campo1” altere seu valor, tambem altere o valor do tag “Driver1.Tag1”.
Pensei em evento do usuário, como na foto em anexo.

Evento .

No exemplo do artigo, o Campo1 seria o Tag, que recebe o valor da Consulta.

Não faz muito sentido alterar o valor do Tag sempre que o registro do Histórico alterar. O contrário sim.

Bom dia Gustavo!
É pq nesse caso estarei recebendo a informação de um outro banco de dados(Coorporativo) com o valor do teor de carbono do minério(um valor em porcentagem), lançado pelo funcionário do laboratório de análises.

Então isso quer dizer que o banco de dados coorporativo estara escrevendo no banco de dados do supervisório.

Toda vez que o laboratório realiza uma nova análise o teor de carbono(%) muda o seu valor, e então o operador do supervisório tem que alterar o campo de input no superviório, para que o PLC altere a receita.

Para que não haja erro humano de digitação a intenção é que esse campo de input seja atualizado automaticamente.

Você terá que ficar executando a consulta periodicamente e comparando o valor retornado com o valor anterior. Para isso, você pode guardar o valor em um Tag Interno. Se for diferente, escreve no Tag de Comunicação.

Gustavo, vc poderia me passar um exemplo de código para ficar executando uma consulta periodicamente?

Eduardo,

Primeiro você tem que criar um evento de usuário onde a condição da ocorrência seja “Sempre que a expressão for verdadeira” e marcar a opção “Repetir o evento” com o período desejado. Nesse evento você deve executar o GetADORecordset e comparar o valor retornado com o valor anterior guardado no Tag Interno.

Vale ressaltar que esse tipo de rotina pode onerar a performance do aplicativo, portanto sugiro que o período não seja muito pequeno e que ele seja executado no Servidor (ao contrário do exemplo do artigo que passei anteriormente que era executado no Viewer).

O script ficaria mais ou menos assim:

Sub Dados_ConsultaRegistro()
	set rs = Item("Consulta1").GetADORecordset()
	val_novo = rs.Fields("Campo1").Value
	val_anterior = Item("TagInterno1").Value
	if val_anterior <> val_novo then
		Application.GetObject("Driver1.Tag1").Value = val_novo
		Item("TagInterno1").Value = val_novo
	end if
End Sub

Tinha um erro no script. Atualizei o post anterior com a correção.

Ok Gustavo!
Muito obrigado pela grande ajuda!

1 Like