Como obter/definir a qualidade de uma propriedade

Olá,
Eu estou com uma dúvida referente a como obter a qualidade de uma propriedade do XObject.
Explicando melhor:

Eu tenho um tabela(DB.Hist) que tem uma série de campos;
Cada campo está associado(fonte) a uma propriedade(Panel.XMethod) do XObject;
Quando é gravado um novo registo os campos de quality está sempre em 192;
Porque, salvo engano, a tabela salva o quality dos campos de acordo com o quality da fonte;

Seguindo essa lógica, o que eu preciso é uma forma de definir o quality da minha propriedade, pois assim eu teria no banco de dados a real qualidade da minha propriedade e não sempre 192.

A parte de definir o quality da minha propriedade eu pensei em usar o quality da minha TAG do driver.
Ou seja, hoje eu tenho uma TAG que envia(associação reversa) o seu valor para uma propriedade e teria também uma associação no Quality da TAG que enviaria para o quality da propriedade.

Existe alguma maneira de fazer isso?

@Ranniere, bom dia.

Pelo que entendi, o que está tentando fazer é propagar a propriedade Quality da Tag associada à propriedade do XObject em um Hist fora do XObject, certo?

O que acontece é que o valor da propriedade Quality gravado no Hist é o da propriedade do XObject e não o da Tag associada a ela.

Sendo assim, uma forma seria criar uma propriedade para receber o valor e outra para receber a qualidade:

No Hist seria necessário também criar dois campos para receber esses valores e ignorar os campos (colunas) com “_Quality”.

Outra possibilidade, mas esta é mais remota, seria fazer um IIF na fonte da coluna tendo como parâmetro o valor Quality da tag. Exemplo:

Aqui informo que se a qualidade não for 192 ou superior, insere o ‘código’ 99999, mas poderia criar qualquer outro código próprio para informar que aquele valor é inválido.

Por último, caso esteja utilizando a versão 4.8, há a possibilidade de habilitar a propriedade EnableTagBehavior e utilizar a propriedade Value. Está irá propagar os campos Valor, Qualidade e TimeStamp para uma Tag associada a ela. Para mais informações, verificar o manual de Referências e Scripts.

Sds.

Não. Na verdade está tudo dentro de do mesmo XOBJECT.
Eu tenho um XOBJECT que tem Propriedades, Um Hist e um Driver.
Eu jogo o valor das tags do driver para a propriedade;
No hist eu associo o campo a propriedade que recebeu o valor do driver;
E tudo isso dentro do mesmo XOBJECT…

O que eu queria saber é se a PROPRIEDADE que eu criei eu poderia definir o Quality dele sem precisar criar uma outra propriedade só para isso…

Seria a mesma coisa que o seu desenho, mas no caso ao invés de ser no XOBJECT ser em uma propriedade.

Onde eu Habilito essa propriedade?

@Ranniere,

Considerando que os objetos Driver e Hist estão dentro do XObject, então:

  • associa os IOTags aos campos (colunas) do Hist ao invés das propriedades do XObject que estão recebendo os dados das IOTags. Vai ser “direto”.

Imagem 1: Associando a coluna do Hist do XObject a um IOTag.

  • ou através dos XMethods (propriedades do XObject), caso coloque o tipo como IOTag, também irá propagar o Valor, a Qualidade e o TimeStamp:

Imagem 2: Associando um XMethod a um IOTag.

Imagem 3: Associando a coluna do Hist do XObject a um XMethod do tipo IOTag.

Caso o tipo não seja IOTag, então não irá propagar.

  • A propriedade EnableTagBehavior pertence à classe XObject:

Imagem 4: Propriedade EnableTagBehavior.

Ao habilitá-la, criam-se 3 propriedades no XObject:

Imagem 5: Propriedade criadas pelo EnableTagBehavior.

  • Caso queira usar a propriedade Value criada pelo EnableTagBehavior, bastaria associá-la no Hist e posteriormente associar a tag à propriedade da instância:

Imagem 6: Associando a coluna do Hist do XObject a um XMethod do tipo Variant criado pelo EnableTagBehavior.

Imagem 7: Associando o valor à instância.

Sds.