Tipo de dados OPAQUE

Estou trabalhando com uma CLP que disponibiliza informações através do protocolo SNMP. Estou conseguindo ler estes dados com o SCADABR,

A MIB do equipamento informa que o tipo de dado é “OPAQUE”, nela é apresentado o valor correto, o valor da temperatura ambiente, entretanto o sistema SCADABR ao ler o valor via SNMP não apresenta o valor da temperatura como a MIB apresenta e sim um endereço tipo: 9f:78:04:41:88:fb:e7, acredito que por causa deste tipo OPAQUE.

Alguém teria uma ideia como resolver para o Sistema SCADABR apresentar o valor correto?

1 curtida

Wagner, muito obrigado pela ajuda, agora uma pergunta, tenho que incluir este código via script no SCADABR?

Sera necessário um datasource meta e via js voce converter o valor.

1 curtida

Ok, vou tentar aqui e retorno o resultado. Muito grato.

9f:78 denota o tipo float ieee 754
04 4 bytes de dados
41:88:fb:e7 ieee 754 que da o valor 17,12

https://www.h-schmidt.net/FloatConverter/IEEE754.html

1 curtida

Wagner, você teria o site que tem o código fonte em JS que realiza esta conversão, para incluir no SCADABR?

O link eu passei, embora seja online, um programador javascript poderia extrair a parte importante e converter para o ScadaBR

1 curtida

Ok Wagner, muito obrigado pela ajuda.

[Resolvido]

Wagner, resolvi com o seguinte código no SCADABR dentro de um datasource meta:

const ToFloat32 = num => { if (num > 0 || num < 0) { var sign = (num >>> 31) ? -1 : 1; var exp = (num >>> 23 & 0xff) - 127; var mantissa = ((num & 0x7fffff) + 0x800000).toString(2); var float32 = 0; for (i = 0; i < mantissa.length; i += 1) { float32 += parseInt(mantissa[i]) ? Math.pow(2, exp) : 0; exp-- } return float32 * sign; } else return 0 }

const HexToFloat32 = str => ToFloat32(parseInt(str, 16));

s = temp.value+"";
s = s.replace(/:/g,"");
var a = HexToFloat32(s);

return a;

Sem a dica do IEEE754 não teria resolvido, muito grato novamente.

Voce poderia criar um tutorial no forum para ajudar outros usuarios com o mesmo problema no futuro, ja que o ScadaBR nao reconhece o campo OPAQUE no snmp. Fora outros datapoints que precisem do Ieee754