Масштабирование сигнала для WB-MAI2-mini

Коллеги прошу поделиться соображением или формулой кто раньше с подобным сталкивался.

Исходные данные:

-Имеется датчик давления с токовым выходом 4-20 mA, диапазон измерения 0-10 Bar

-Далее этот датчик подключен к модулю аналоговых сигналов WB-MAI2-mini/CC у которого вход измерения 0-20 mA.

Нужно правильно рассчитать масштабирование для этого сигнала для вывода на верхний уровень.

Добрый день.

Обычно такие сигналы линейны и прямо пропорциональны величине.
Т.е.: 4 мА — это 0 Bar, 20 мА — это 10 Bar.
Получается 12 мА — это 50 % величины датчика, т.е. 5 Bar.
Пересчитать можно средствами wb-rules.

В общем пока у меня получается так, двойное преобразование. Сначала выход датчика 4-20 mA преобразуем в диапазон 0-20 mA, и далее это значение масштабируем в давление.

Для образца:

Допустим давление датчика 10 Bar значит аналоговый выход датчика 20 mA получается так(аналоговый выход датчика-4)*(20-0)/(20-4)=20 mA. То есть при давлении 10 Bar на вход модуля WB приходит токовый сигнал 20 mA

Далее масштабируем это значение в давление для вывода на верхний уровень. Имеем аналоговое значение на входе WB 20 mA

(аналоговое значение на на входе WB 20 mA-0)*(10-0)/(20-0)=10 давление в барах.

А вот как сделать это одной формулой пока еще не сообразил.

function map(x, in_min, in_max, out_min, out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

log(map(4, 4, 20, 0, 10)); // 0
log(map(8, 4, 20, 0, 10)); // 2.5
log(map(12, 4, 20, 0, 10)); // 5
log(map(16, 4, 20, 0, 10)); // 7.5
log(map(20, 4, 20, 0, 10)); // 10
2 Likes