Вход

Просмотр полной версии : Преобразование данных ( Линеаризация или вычитание)



pgboroda@yandex.ru
03.11.2024, 13:56
Добрый день.
Столкнулся с проблемой, пока не получается решить. Есть прибор , к которому подключены датчики температуры. Данный прибор по модбас отправляет значения этих датчиков в формате int16 в следующем виде.
Значение 0 - соотвествует температуре -30 градусов, 1 - соответствует -29 градусов , 30 - соответствует 0 градусов , 50 соответствует +20 градусов и тд. . . . Передаваемый диапазон от 0 до 255.
Соответственно нужно линеаризацию применить или постоянное вычитание из полученного числа, но я их не нашёл в ОК . . .

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

З.Ы. У прибора изменить отображение невозможно (так зашито в карту переменных)

Pavel5698
07.11.2024, 10:33
В Облаке нет настройки сдвига значения

Сергей0308
07.11.2024, 11:56
Добрый день.
Столкнулся с проблемой, пока не получается решить. Есть прибор , к которому подключены датчики температуры. Данный прибор по модбас отправляет значения этих датчиков в формате int16 в следующем виде.
Значение 0 - соотвествует температуре -30 градусов, 1 - соответствует -29 градусов , 30 - соответствует 0 градусов , 50 соответствует +20 градусов и тд. . . . Передаваемый диапазон от 0 до 255.
Соответственно нужно линеаризацию применить или постоянное вычитание из полученного числа, но я их не нашёл в ОК . . .

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

З.Ы. У прибора изменить отображение невозможно (так зашито в карту переменных)

Это же легко можно сделать, например с помощью ПР200 с двумя сетевыми интерфейсами, в ОЛ, в менеджере компонентов специальный макрос есть для преобразования диапазонов, но мне кажется проще и дешевле 2ТРМ0:

79899

https://owen.ru/product/2trm0

поставить с сетевым интерфейсом, в смысле этот прибор будет передавать температуру в реальных физических величинах, а не в "попугаях".

melky
07.11.2024, 12:01
ага, проще. Шлюз(Облако) - Устройство(Modbus)
А тут еще предлагают вкорячить....

Банально после получения данных нужна математика Канал*Множитель в облаке есть. Почему нет Канал - константа, Канал + константа ну и другие примитивные вещи?

Кстати в отчетности по документации к Облаку есть функции, которыми можно сделать + и -

capzap
07.11.2024, 12:18
ибо объяснить заказчику

возможно стоит объяснить читающим эту тему, зачем Ваш прибор настроен таким образом что приращивает 30 градусов, чтоб где то в облаке требовалось обратно изменять на эти 30 градусов

melky
07.11.2024, 12:22
Видимо прибор отдает значение одним байтом всего, при этом с отрицательным диапазоном. И если использовать как знаковый, то +127 градусов не хватает. 255-30 как бы 225 с плюсом.

Сергей0308
08.11.2024, 06:10
Видимо прибор отдает значение одним байтом всего, при этом с отрицательным диапазоном. И если использовать как знаковый, то +127 градусов не хватает. 255-30 как бы 225 с плюсом.

Товарищ же ясно написал, что передаёт в INT16!
В смысле, зачем же искажать исходные данные, так мы ни к чему хорошему не прийдём!