Вот работа проекта в эмуляции, зачем тут кубические сплайны, только автору понятно))) 1 Работа проекта.jpg
Тут двух точек за глаза)
Вот работа проекта в эмуляции, зачем тут кубические сплайны, только автору понятно))) 1 Работа проекта.jpg
Тут двух точек за глаза)
Последний раз редактировалось kondor3000; 11.04.2025 в 21:14.
Я, бывало, для более плавного изменения применял нахождение среднего арифметического скользящим окном, в смысле, можно применить и другие способы обработки сигнала.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Да, так и есть - при вычислениях требуется по номеру диапазона найти коэффициенты, а по ним значение полинома - почти то же, что и при кусочно линейной интерполяции. Поэтому тогда и отказался.
А исходная идея была - сразу после ввода таблицы исходных данных получить функцию и сразу ею пользоваться без дополнительных вычислений.
Но в моём случае - проявились ограничения интерполяционной функции (полинома).
Идея у SlavikP интересная, универсальный инструмент сделать.
Когда у меня непонятки, открываю Эксель, набиваю табличку, прошу его сделать график, потом прошу "Добавить линию тренда", потом в её свойствах выбираю формулу, смотрю что получилось, не зашло, методом тыка подбираю подходящий к задаче вариант.
Полином похоже к любой дырке затычка.
На последней картинке повод перепроверить данные.
Последний раз редактировалось BETEP; 11.04.2025 в 23:48.
К РНИ (наладке в ходе эксплуатации) допускаются люди разной квалификации по математике и умения пользоваться Exel. С учётом этого вводимые данные должны иметь те же параметры, что и режимные карты (технологический регламент).
Т.е. вычисления параметров интерполирующей функции должны выполняться в ПЛК. Именно это (совершенно правильно) и сделал автор ФБ сплайнов.
Автор не рассказал о многих интересных вещах:
- что будет с Y при выходе X за пределы диапазона
- какие ограничения по входным данным (сортировка, что делать при меньшем 11 числе пар точек)
- какой диапазон применимости функции (какие кривые обрабатываются адекватно)
- как вычисляются полиномы - хотя бы для ознакомления с математикой - ведь есть несколько подходов ко второй производной на краях диапазона X
https://habr.com/ru/articles/323442/
И о применении ФБ - тоже хорошо бы рассказать - для выполнения пересчёта нужно сделать ..., в нормальной работе нужно ..., при нештатной работе (выходе X за пределы или др.) формируется ... и на выходе Y будет ..., и т.д.
Т.е. говорю об документировании библиотечного ФБ. Ведь автор предоставил ФБ не в ответ на просьбу страждущего, который разберётся в силу заинтересованности.
Всё это автор может сделать в первом сообщении темы - она позволяет редактирование - а здесь просто уведомить, что дополнил.
Моё личное мнение, что применение сплайнов - скорее прихоть, т.к. в эксплуатации потребует формирование сигнала пересчёта, и так же, как при кусочно-линейной интерполяции (КЛИ), потребует поиск диапазона. Т.е. при сравнении с КЛИ произойдёт усложнение HMI (команда пересчёт) и но преимуществ не будет.
Не посчитайте это придиркой - для ознакомления мне придётся ставить ненужный Codesys 3.5, а ведь в случае интересной реализации я бы "подрезал" алгоритм в другую среду разработки.
Есть ещё сплайн Акимы, дающий на выходе плавную кривую без резких выбросов на перегибах.
https://www.source-code.biz/snippets/typescript/akima/
Последний раз редактировалось 1exan; 12.04.2025 в 19:39.
Вообще то глючит не по детски этот метод.
1.JPG
Здорово, что здесь так много людей со знаниями!
В первом сообщении темы перевыложил проект.
По справедливой критике трудящихся метод EvaluateSpline сделан публичным, и теперь его можно вызывать из программы пользователя для получения значений сплайн-функции.
Пример использования показан в тестовом примере.
Работа не волк, а work.