Показать сообщение отдельно
Старый 23.02.2015, 13:38   #1
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Пересчёт одного диапазона в другой (аппроксимация, 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.
Вложения
Тип файла: msl Approx (int).msl (4.9 Кбайт, 2088 просмотров)
Тип файла: msl Approx (long).msl (5.0 Кбайт, 1654 просмотров)
Тип файла: msl Approx (real).msl (8.5 Кбайт, 2250 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 02.09.2022 в 16:41
Arsie вне форума   Ответить с цитированием
Благодарность от: