Modbus проблемы с отрицательными значениями

Добрый день!

Есть контроллер Wire Board 6

К контактам RS 485 /1 A B подключена метеостанция протокол Modbus получаем данные температуры влажность давление,

Все показатели выводятся правильно но стоит температуре уйти в отрицательное значение контроллер даёт температуру 6552.1 °C ~ + -10 °C по графику видно что перепады температуры в течении дня похожи на правду но 6552.1 °C

Вот здесь http://arduino.ru/forum/programmirovanie/modbus-rtu-i-otritsatelnye-chisla

Нашёл похожую проблему

Пишут что:

65535 это и есть “-1”

Цитирую

<

Скажи мне в чем разница этих записей?

#FFFF

1111 1111 1111 1111 1111

-1

65535

Ни в чем!!! В шестнадцати-битной ячейке это одно и тоже значение. Разница только в интерпретации.

Modbus не является объектно-ориентированным протоколом. Он имеет дело только с регистрами, а что в этих регистрах находится ему без разницы. Все зависит он интерпретации. В двух регистрах может быть короткий Float, а может быть вообще 8 char.

Поэтому возьми модбас-тестер (модбас-мастер), который может отображать значения полученных регистров в нужное представление (тебе нужен signed int).

Подскажите что можно сделать, я не очень понимаю что какие настройки и с какой стороны проверять со стороны контроллера или со стороны метеостанции.

Спасибо,

^^^^^

Добавьте в шаблон устройства поле описания формата “format”: “s16”, как в примере ниже:

           {
       		"name": "Temperature",
          	"reg_type": "input",
          	"address": 31,
          	"type": "value",
          	"format": "s16",
          	"scale": 0.1
        },
1 Like

Добавили,

Всё заработало как нужно.

DmitriyBobylev большое спасибо вам за быструю и грамотную помощь!

1 Like