WB-M1W2 - опрос с помощью контроллера стороннего производителя

Здравствуйте.

Впервые приобрели модули WB-M1W2. Предполагается опрашивать их по ModBus с помощью контроллера стороннего производителя. В карте регистров модуля обозначен формат значений температур с первого и второго датчиков “°C × 16 (signed)”. Можно узнать подробнее, что это значит? При конфигурировании нашего контроллера на опрос по ModBus есть возможность выбора формата опрашиваетмого регистра “Булевский”, “Целочисленный” и “С плавающей точкой”. Так же есть возможность выбора каким байтом или регистром вперёд опрашивать. Какой выбор будет работать? Модули ещё в пути, нет возможности их подключить и попробовать, начинаю готовить программу заранее, поэтому возник такой вопрос.

Это значит, что в регистре лежит 16-битное число со знаком (по IEEE). Порядок байт по стандарту, т.е. big endian.

Единичка в регистре соответствует 0.0625 градуса, т.е. результат чтения надо умножить на 16.

То есть, если я прочитал в регистре число 421 (DEC) и умножу его на 0.0625 то получу 26.3125 градуса, что похоже на правду. При чём тут умножение на 16? Что и как надо умножить на 16 чтобы получить значение в градусах?

Вы правы, я ерунду написал. Имел в виду поделить на 16.

0.0625 = 1 / 16

Неплохо было бы внести изменения в документацию на модуль, получается, что без обращения в техподдержку им воспользоваться не получится. Либо крайне долго разбираться самостоятельно придётся.

Добрый день!

А как бы вы предложили изменить документацию?
Сейчас там вот так:

В столбце “Формат”, в строках, где значение температур, знак “х” заменить на “/”, и в столбце “Назначение”, написать “температура с датчика Х поделённая на 16”. Кстати, получили модули сегодня, всё прекрасно работает. В документации ещё написано, что значение адреса модуля по умолчанию 1, а по факту адрес написан на самом модуле. Про это тоже не ниписано.

Но это же как раз не так. Именно в регистре хранится температура, умноженная на 16 - поэтому вам потом значение оттуда приходится умножать на 0,0625 (равносильно делению на шестнадцать). Про “умноженная на 16”, наверно, действительно можно написать.

Спасибо, исправил.

Приношу всем извинения за предложение править знак умножения на деление, подумал немного и сам догадался, что был не прав. Действительно, в регистре хранится температура, умноженная на 16. То есть, чтобы получить нормальные градусы, нужно число, хранящееся в регистре, поделить на 16. Но, раз у меня возникла такая проблема, наверняка другие люди тоже могут с этим столкнуться. Можно где-нибудь в примечании разъяснение подробное написать.
Удивил ещё размер модуля - на сайте он выглядит внушительно, я подумал что он на дин-рейку ставится, а на деле он выглядит чуть более шоколадной конфеты). Прекрасно работает со сторонним контроллером (ПР200 фирмы Овен), кроме того, опрашивается любым OPC-сервером через 485 интерфейс с помощью компьютера.

1 лайк

Спасибо за отзыв!
В документации в таблице регистров поправил описание, постарался понятнее написать.

1 лайк