Пересчёт одного диапазона в другой (аппроксимация, LIN_TRAFO)
Макросы кусочно-линейной аппроксимации, т.е. пересчёта значения из одного диапазона в другой диапазон.
Аналог в codesys: LIN_TRAFO FB
Например, если у вас есть значение, изменяющееся в диапазоне от 100 до 400, а вам удобно использовать то же самое значение, но в диапазоне от 0 до 100, то настраиваете макрос:
in0 = 100
in1 = 400
out0 = 0
out1 = 100
Значение 4..400 подаёте на вход in макроса, а с выхода out вы получаете то же самое значение, но уже приведённое к диапазону 0..100
Также этот макрос очень удобно использовать в преобразованиях значений, полученных с аналогового входа в удобные вам единицы измерения.
Внимание, применяя макросы с типом данных int и long учитывайте наличие ошибок округления при работе с малыми числами! Например, невозможно корректно преобразовать диапазон 0..100 в диапазон 50..55 с помощью макросов с типами int и long. Используйте для этого тип данных real.
__________________
Программа делает то что написал программист, а не то что он хотел.
Добро всегда побеждает зло. Кто победил - тот и добрый.
Последний раз редактировалось Arsie, 02.09.2022 в 16:41
|