Salvar dados quando um bit se tornar verdadeiro

Boa tarde, tenho esse script:
'script do BD

data = now
balanca = XC_Balanca.FonteDadosValvula.ID		
peso = XC_Balanca.FonteDadosValvula.Proporcional
XC_Balanca.Item("INSERT").SetVariableValue "E3TimeStamp", data
XC_Balanca.Item("INSERT").SetVariableValue "Balanca", balanca
XC_Balanca.Item("INSERT").SetVariableValue "Peso", peso 
XC_Balanca.Item("INSERT").SetVariableValue "Login", Application.GetObject("Dados.UsuarioLogado")
XC_Balanca.Item("INSERT").Execute(True)	

que estava sendo executado no comando do click de um botão(dentro de um XControl), mas preciso retirar ele do botão, e deixar ele ainda no mesmo XControl mas que só sejam salvos os dados quando o supervisório receber um bit vindo do CLP(no caso o bit fica verdadeiro), esse mesmo bit atua na visibilidade de uma mensagem para o operador, tentei criar um evento de usuário onde a mensagem fica visível e aí salvasse os dados, mas não funcionou. Alguma sugestão ou orientação?

Boa tarde,
Atualizando o post também aqui no fórum. A situação foi resolvida assim:

Usar o método WriteRecord() do histórico no evento OnRead da tag do driver. Dessa forma, sempre que receber um valor do equipamento nessa tag, irá ser feito a gravação no banco.

Segue um app exemplo com essa funcionalidade. O principal está no evento OnRead da tag, deixar a propriedade UseBitsFields da tag em true, e o “intervalo entre registros” das propriedades do histórico em “0” para que ele grave pelo disparo do evento OnRead:

Obs.:Usado o Elipse Modbus Simulator como fonte de dados para a tag.