python minimalmdobus, как правильно интерпретировать регистр?

Я использую Python в моей системе тестирования Rasbian. Для связи с 10-канальными устройствами (Temco P3-PT10), подключенными к датчикам температуры PT100, я использую минимальную шину.

Для этого я хочу прочитать регистр 100~101 для температуры канала 1:В описании сказано: "Когда установлено значение INT, 100 покажет 0, а 101 покажет температуру для канала 1, 250= 25,0 ° С, когда установлен режим работы, 100 и 101 покажут 25.0000C"

Я начал читать с:

temperaturef = instrument.read_float(r, 3, 2)
temperature = instrument.read_register(r, 0)

Я получил вывод:

Адрес 100 R: 62915 F: -4.95029165077e+32 // Адрес 101 R: 16684 F: 10.7924995422

В первом столбце отображаются значения регистров, во втором столбце возвращаются значения с плавающей запятой.

Мой вопрос: - что хранится в качестве значений регистра? Могу ли я конвертировать их в плавающие? - а почему первое значение с плавающей запятой отрицательное?

Я делаю что-то не так?

Спасибо за помощь!

1 ответ

Для чтения регистра шины Mod вы можете перейти по этой ссылке

Да, вы можете скрыть шестнадцатеричное значение, чтобы плавать или то есть. После прочтения регистра, используя вышеуказанный метод, вы получите значение регистра.

Для преобразования шестнадцатеричного числа в знаковое с плавающей точкой вы можете использовать

import struct
var='0xbf99999a'
var = var.replace('x',' ')
var1 = var[2:len(var)]
print var1
a= struct.unpack('!f', var1.decode('hex'))[0]
print "%.3f"%round(a,3)
Другие вопросы по тегам