Пытаюсь прочитать текущее значение температуры наружного воздуха из ТРМ1032, используя драйвер “Универсальное устройство Modbus”. Ничего не получается, помогите!
Попробуйте считать данное значение любым приложением, которое читает данные по протоколу Modbus, например Modbus Poll.
Я считываю данное значение приложением ЛЭРС УЧЕТ, драйвером для ТРМ1032. Получается 11,9 градусов Цельсия. Но мне нужно считать то же значение драйвером “Универсальное устройство Modbus”, как это сделать?
Судя по всему требуется доработка драйвера “Универсальное modbus устройство” для возможности задавать порядок чтения чисел с плавающей точкой. Поскольку такие параметры занимают два регистра modbus, требуется указание не только “Старшим байтом вперед/Младшим байтом вперед”, но и “Младшим регистром вперед/Старшим регистром вперед”.
Для примера вот скриншот заводского ПО Owen OPC Server:
Может формулу какую можно придумать для “Универсальное устройство Modbus”, не пробовали?
При вот таких настройках привязки чтение работает некорректно:
Если изменить порядок на “Младшим байтом вперёд” - так же некорректно считывается значение
Я думаю, можно считать как UInt64, а затем формулой преобразовать в значение с плавающей запятой, но это пока только идея.
Достаточно будет UInt32
Или, проще, написать ещё одно Предложение по улучшению для ЛЭРС УЧЕТ
В Modbus Poll значение считывается корректно, если задать отображение как “32-Bit Float big endian byte swap”:
Что подтверждает моё предположение о том, что требуется возможность “byte swap” в драйвере “Универсальное modbus устройство”
@7in, пользователь @Sly уже создал предложение по улучшению по вопросу доработки “Универсальное modbus устройство”. Обсуждения по деталям предлагаю перенести в это предложению, чтобы не возникло параллельного обсуждения.
Как вариант на данный момент вы можете создать отчетную форму, в которой преобразовать считанные значения к нужному типу в вычисляемом поле. Либо реализовать такие преобразования в расчетной точке.