1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Масштабирование аналоговых сигналов

Модератор: специалисты по PLC

Ответить

Автор темы
leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Масштабирование аналоговых сигналов

Сообщение leon78 »

На форуме часто задают вопросы такого содержания:
Не могу масштабировать сигнал 4-20 мА с датчика давления, шкала которого -1 +10 Бар.
Надо при 4 мА получить -1 бар, а при 20 мА 10 бар.
Для ответа надо вспомнить школьную алгебру и решить пропорцию:

Код: Выделить всё

XMIN (4 мА) соответствует YMIN (-1 бар)
XMAX (20 мА) соответствует YMAX (10 бар)
X мА соответствует Y бар
https://owen.ru/forum/showthread.php?t= ... post230713

Код: Выделить всё

FUNCTION FC1: VOID //Масштабирование XMIN…XMAX -> YMIN…YMAX
TITLE = ' Масштабирование.'

VAR_INPUT //Входные переменные.
X:REAL; //Вход.
XMIN:REAL; //Минимум входного диапазона.
XMAX:REAL; //Максимум входного диапазона.
YMIN:REAL; //Минимум выходного диапазона.
YMAX:REAL; //Максимум выходного диапазона.
END_VAR

VAR_OUTPUT //Выходные переменные.
Y:REAL; //Выход.
END_VAR

//Алгоритм.
IF (XMAX<>XMIN) //Деление на 0 может остановить процессор.
THEN
Y:=(YMAX-YMIN)*((X-XMIN)/(XMAX-XMIN))+YMIN; //Масштабирование.
ELSE
Y:=0.0;
END_IF;
END_FUNCTION
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Ответить

Вернуться в «F.A.Q. по структуре программ»