Просмотр полной версии : Преобразование данных в среде OWEN Logic по Modbus RTU из ТРМ 202 в формате int16
Здравствуйте. Хочу обратиться к вам за помощью по такому вопросу. В среде OWEN Logic ПР200 по протоколу Modbus RTU вычитывает данные с температурного датчика из ТРМ 202 в формате int16. На ТРМ показания корректные. По Modbus какие-то непонятные значения приходят, если значение температуры 23 градуса, приходит значение 4800, если температура постепенно увеличивается до 30 градусов, приходит значение 15000. Если бы значение пропорционально увеличивалось или уменьшалось, можно было бы поставить коэффициент пропорциональности, но так не совсем получается. Пробовал использовать макрос, который скачал с форума Овена (на скриншоте), данные на выходе тоже не совсем корректные. Подскажите, пожалуйста, как правильно преобразовать значение в формате int16. Заранее благодарен.
Alex87
А читаете данные в каком формате? Из какого регистра (в ТРМ есть варианты)?
А если читать в float из регистра h0x1009 ТРМ?
Проблема в том, что внутренние целочисленные переменные в ПР являются int32, и это отлито в граните. Т. е. никак не изменить.
kondor3000
26.08.2025, 08:54
Здравствуйте. Хочу обратиться к вам за помощью по такому вопросу. В среде OWEN Logic ПР200 по протоколу Modbus RTU вычитывает данные с температурного датчика из ТРМ 202 в формате int16. На ТРМ показания корректные. По Modbus какие-то непонятные значения приходят, если значение температуры 23 градуса, приходит значение 4800, если температура постепенно увеличивается до 30 градусов, приходит значение 15000. Если бы значение пропорционально увеличивалось или уменьшалось, можно было бы поставить коэффициент пропорциональности, но так не совсем получается. Пробовал использовать макрос, который скачал с форума Овена (на скриншоте), данные на выходе тоже не совсем корректные. Подскажите, пожалуйста, как правильно преобразовать значение в формате int16. Заранее благодарен.
Поставьте (снимите) галку в настройках, переставить байты
Спасибо. Читаю из регистра 0x0001 первого канала в формате Signed Int16. В float из регистра h0x1009 пробовал, вычитывается очень большое число, "1+E485" (что-то такое), как его преобразовывать, можно попробовать коэффициентами, надо делить на большое число
вычитывается очень большое число, "1+E485" (что-то такое), как его преобразовывать, можно попробовать коэффициентами, надо делить на большое число
вот как раз здесь нужно поиграться с перестановкой байт и слов. А в целом, сетевые настройки покажите, они точно соответствуют документации на трм
как его преобразовывать
Например умножить на 10 и преобразовать в int. Получите целочисленное значение с разрешением 0.1 градус.
из регистра 0x0001 первого канала в формате Signed Int16.
При чтении во внутреннюю переменную оно преобразуется в int32. Далее происходят чудеса с преобразованием, особенно в области отрицательных значений. Не так давно здесь на форуме эта тема поднималась.
>>>Тут (https://owen.ru/forum/showthread.php?t=41708)<<<
Там про ПЧ, но роли не играет, проблема аналогичная.
Поставьте (снимите) галку в настройках, переставить байты
А зачем в int16 переставлять байты? Ни разу не сталкивался с устройствами, где это было бы необходимо. Да и в опрашивающем софте нигде подобных настроек не встречал.
kondor3000
26.08.2025, 09:29
А зачем в int16 переставлять байты? Ни разу не сталкивался с устройствами, где это было бы необходимо. Да и в опрашивающем софте нигде подобных настроек не встречал.
Новички постоянно тычут куда не надо, понаставят галок в перестановке регистров и байт и получают вместо 23 (INT16) например 5888. 85405
недавно один измерял 380,6 В ( 3806 INT16), а получал что-то типа 56846. 85406
В ПР200 и других реле, есть галки перестановки регистров и байт.
Всё что писали выше, макросы доп кода, относится к отрицательным числам (INT16), когда вместо -1, получают 65535 (это не то, что происходит у ТС)
kondor3000
26.08.2025, 10:05
Спасибо. Настройки
Так вы получили правильное значение или нет?
Галки пробовали ставить (удалять) ?
Спасибо. Настройки
сетевые настройки, это настройки порта RS-485-1 и они должны соответствовать https://docs.owen.ru/product/trm202/doc/rukovodstvo-po-ekspluatacii-trm202/nastrojka/nastrojka-obmena-dannymi-cerez-interfejs
и почему Вы написали что ПР200 если больше похоже на ПР103, может еще какую информацию скрываете
Попробовал галочки ставить, удалять, получил правильное значение. Всем спасибо большое за помощь
kondor3000
26.08.2025, 19:19
Попробовал галочки ставить, удалять, получил правильное значение. Всем спасибо большое за помощь
Ну и славно, хотелось бы только скрин, с правильными галками. Или рабочий проект - тестовый.
Спасибо. Вот так галочки поставил. ПР103
kondor3000
29.08.2025, 09:52
Спасибо. Вот так галочки поставил. ПР103
Это расстановка галок по умолчанию, при создании проекта.
Как и говорил, новички тычут куда не надо.
Вычитывал сначала из шаблона ТРМ202, там была такая расстановка
Умурзаков Денис
03.09.2025, 13:46
Вычитывал сначала из шаблона ТРМ202, там была такая расстановка
Хм, проверили, действительно, в шаблоне ТРМ202 неправильная расстановка. Спасибо, поправим!
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot