Особенности тарировки типа "Полином"

Тарировка полином отличается от обычных линейных тарировок тем, что значения привязаны не к узловым точкам, а к диапазонам между ними. В большинстве случаев это положительно сказывается на графиках и расчётах, они сглаживаются и становятся ровнее. Но иногда незнание этого может привести к очень интересным эффектам.ПОСТРОЕНИЕ СПЛАЙНОВ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ OPENGL

Примеры работы сплайна

Первый пример.

Ситуация одна из типичных, длинный плоский бак вездехода Газ-71, датчик подрезан чуть короче нужной длины, первая залитая порция в 10л до датчика не достала, на уровне 20л уже есть показания. Заполнили таблицу:

Что видит полином: началом графика будет точка 0=0л, следующая точка 1=10л. Этот диапазон задаёт динамику, и при её сохранении при значении 5 на выходе будет уже 50л, при значении 200 будет 2000л и т.д. Но у нас есть точка 297=20, значит нужно будет аккуратно подвести график поближе к этому узлу с наименьшим изменением динамики. В итоге получаем такой вот график и таблицу со значениями:


При возникновении таких всплесков на графиках можно действовать двумя способами:

1) Изменить тип тарировки. Кусочно-линейная тарировка строится конкретно между точками, ей не важны соседние отрезки и их динамика. График будет таким:


2) Убрать лишние точки, порождающие такую динамику на отрезках. В большинстве случаев это точки, которые выставляются по привычке или шаблону, в данном случае это будет точка 0=0, убираем её и тот же полином будет уже таким:


Второй пример.

Та же ситуация может вас ожидать, если вы добавите в конце точку "потому что надо", это окончание тарировки точками 4095 или 1023 для ДУТ с интерфейсом RS-485. Как пример:


На диапазоне 898-946 видим прирост в 30л, но на следующем диапазоне 946-1023 прирост всего 1л. Но предыдущий диапазон задавал нам уверенный рост, который нужно сохранить на точке 946 и плавно подвести к окончанию. В итоге смотрим график:


Таким образом, если водитель заправится по самую горловину, то по мере движения мы увидим небольшой рост уровня, что не совсем логично. Если просто убрать крайнюю точку из таблицы, то с сохранившейся динамикой уровень 1023 будет воспринят системой как 650л, а бак у нас всего 600л, отчёт по заправкам не сойдётся, вдобавок может появиться слив в 50л в начале движения.


В этом случае лучшим решением будет оставить точку, но тип поставить как кусочно-линейный, тогда колебания в верхней точке бака заменятся на стабильный уровень.