Какой нафиг макрос? Сдвиг делается прибавляя или убавляя константу (+- дельта). Сдвигом выставляете 0.
Наклон меняется умножением на коэффициент (* к). Снимаете расхождение при 0 (не должно быть, убирается сдвигом) и 100 (300) градусах и считаете.
Вид для печати
Например при 0 - показывает +1 градус, при 100 показывает 105. Дельта сдвига -1 градус. Температура Т = (Т изм.-1). При 0 будет 0, при 100 показывает 104.
Теперь считаем коэффициент к=100/104=0,96154. На самом деле после запятой 12 знаков, округляем до нужной точности.
Теперь формула будет Т = (Т изм.-1)*0,96154.
Проверяем при нуле Т=(1-1)*0,96154=0*0,96154=0, при 100 - Т=(105-1)*0,96154=104*0,96154= 100,00016
Хотел добавить, что сдвиг, вместе с наклоном можно сделать без дополнительных элементов, просто настройками входа!
Вам дал пример по 2 точкам. Если хотите, сделайте хоть по 10. И при -5 в том числе. Но график при 0, должен показывать 0. Вот скрин с графиками для наглядностиВложение 63410
Ну а как вам то что у меня получилось?
Смотря что хотели получить.
Если как стандартная коррекция например в ТРМ-ах, то можно сделать один блок на ST:
Код:function out: real;
var_input
in : real;
offset : real; // сдвиг
slope : real; // наклон
end_var
// ограничение сдвиг
if offset > 50 then offset := 50;
elsif offset < -50 then offset := -50;
end_if;
// ограничение наклон
if slope > 1.1 then slope := 1.1;
elsif slope < 0.9 then slope := 0.9;
end_if;
// расчёт
out := (in + offset) * slope;
end_function