Vitalij Antipov
Разработка программы многоплоскостной балансировки
Здравствуйте, друзья! Пришла пора заняться чем-то полезным, а конкретно - разработать ПО для балансировки на ПК и смартфон. К сожалению, хороших бесплатных программ я не нашел, а ПО в приборах имеют свои недостатки. Поэтому, предлагаю восполнить этот пробел.
Цель - возможность многоплоскостной балансировки по месту эксплуатации с хорошим качеством и визуализацией (контролем). Поскольку это дело сложное, то разработку планирую разбить на три основных этапа:
1. Отработка основных алгоритмов в консольном приложении (Qt/C++);
2. Написание ПО на десктоп (QML/JS);
3. Портирование ПО на Android.
В данной теме Вы сможете наблюдать весь процесс разработки (если интересно), а при желании и помогать. Любая Ваша помощь, критика и советы будут очень востребованы. Исходный код и само ПО будут открыты и бесплатны. Сроки обозначить не могу - свободного времени не так уж и много. Поэтому как только, так сразу.
How to become an author?
Learn how to become an author and contribute to the techdiagnost.com community
Для балансировочных расчетов воспользуемся алгоритмом из данного учебного пособия, немного модернизировав его. В общем виде он будет следующим:
1. Расчет уравновешивающих масс и остаточных вибраций.
2. Выравнивание остаточных вибраций (опционально) и перерасчет уравновешивающих масс.
3. Установка нерасчетных масс и вычисление ожидаемых остаточных вибраций.
4. Расчет уравновешивающих масс и остаточных вибраций в случае несоответствия реальных остатков вибраций ожидаемым с использованием матрицы невязок.
5. Повторение п.2 и п.3.
На данный момент выкладываю исходный код консольной программы по пунктам 1-3.
Исходный код
Протестировал по DOS-овской программе Гольдина для 2 точки х 1 плоскость и 4 точки х 3 плоскости - результаты схожи.
Полный черновой (можно сократить добавлением переиспользуемых функций) исходный код по пунктам 1-5:
Исходный код
Консольное приложение можно скачать по ссылке . Буду рад, если кто-то протестирует на своих балансировочных программах. На этом первый этап по отработке основных алгоритмов в консольном приложении можно считать оконченным.
Пример работы программы:
Этап 2. Разработка ПО на ПК. Достаточно творческая и интересная задача. Хочется сделать интерфейс простым и интуитивно понятным. В качестве основы интерфейс на разбит на 4 блока:
1. Панель ввода данных. В этой панели пользователь вводит данные количества опор, направлений измерений, количества балансировочных плоскостей, исходных и балансировочных пусков, ввод массы и положений пробных и скорректированных грузов, управляет процессом балансировки.
2. Область визуализации исходных и расчетных данных. Исходные и расчетные данные в векторном виде упрощают понимание влияния балансировочных грузов на вибрацию опор. Планируется 2D визуализация вибраций по каждой опоре и 3D визуализация всех вибраций на всех опорах.
3. Панель выбора опор для визуализации. Для выбора желаемого графика.
4. Панель вывода. Сюда будут выводиться расчетные данные.
Это предварительное мое личное видение оптимального интерфейса ПО. Конечно, все может поменяться.
В черновом варианте на данный момент интерфейс выглядит вот так:
Программа обрела некоторый интерфейс и функциональность:
Буду рад любым замечаниям/предложениям.
программу можно скачать и протестировать?
Да, в ближайшее время выложу ссылку.
Для тестирования нужно скачать по ссылке BalanceProgram(v.0.0_test)(23,4 МБ) .
Это пока черновой вариант, не добавлен расчет с использованием матрицы невязок (когда реальные результаты балансировки существенно отличаются от расчетных), пока отсутствует регуляризация матрицы (см. методические указания ВТИ, как мне правильно подсказали Вконтакте ), процесс балансировки представляет собой поочередную установку/снятие пробных масс по плоскостям для получения чувствительностей в каждой из них.
Но для простых балансировок боле-менее линейных систем очень даже пойдет уже сейчас. Осталось только потестировать.
Спасибо!
у меня есть другая балансировачная программа, для начала с ней сравню результаты, а потом и на практике.
Найдена и устранена ошибка в методике, связанная с отсутствием регуляризации матриц. Доработан интерфейс.
Новая версия доступна по ссылке .
Наконец-то появилось немного времени и накидал программку на Android. Интерфейс и функционал пока такой-же как и для версии на ПК. Теперь можно прикинуть балансировку в полевых условиях. Ссылка для скачивания -> BPmobile.apk .
Здравствуйте, программа BPmobile.apk не устанавливается на смартфон.
Добрый день. Виталий, вы в какой программе писали BPmobile.apk? Хочу помочь доработать ваш проект? Идея интересная, нехватает только визуализации значений ДКВ что бы внести их в базу данных или элементарно записать на бумагу и метода балансировки по готовым ДКВ.
Приветствую всех. Автору огромное спасибо, давно мечтал об многоплоскосном калькуляторе в телефоне.
Тестировал на разных случаях результаты, не сходятся с практичеки получеными решениями. Но когда подставиш готовое решение в "установка нестандартных грузов" результаты расчета вибрация почти 0.
Я правильно понимаю, что здесь не класичекая балансировка по коэффицентам влияния, а чтото среднее между минимизацией устансвливаемых масс и минимизацией вибрации, типа решения задачи оптимизации?
Здравствуйте. Здесь балансировка по коэффициентам влияния, но проблема не в этом. Цель алгоритма - найти решение для системы из n уравнений c m неизвестными, где m>n. В общем случае система не имеет решения. Советский математик Тихонов предложил решать некорректные задачи методом регуляризации, то есть добавить некоторый коэффициент регуляризации, который поможет найти максимально близкое решение. В алгоритме мы тысячи раз решаем нашу систему подставляя разные коэффициенты регуляризации. Получаем некоторую параметрическую L-функцию из набора точек, где каждому коэффициенту регуляризации будет соответствовать решение и невязка (остаточная вибрация). Искомый коэффициент регуляризации будет лежать в точке перегиба этой L-функции, то есть берем ее вторую производную и определяем максимум. Это математическая магия. Но есть один момент - если n = m (система имеет простое решение), то L-функция будет прямой без точки перегиба и необходимо брать краевую точку со сверхмалым коэффициентом регуляризации, чтобы вносимая им ошибка была минимальной. Далее методом наименьших квадратов подравниваем остатки вибрации.
По поводу несходимости результатов. Во-первых алгоритм призван решать задачи из условия линейного отклика системы, но мы живем не в идеальном мире. Во-вторых я выбрал не оптимальный способ подбора коэффициентов для получения L-функции. Грубо говоря я первым подсунул в систему коэф. = 0,000001, а далее каждый последующей увеличивал в 1,2 раза от предыдущего и так 1 млн. раз. Вот если выбрать более оптимальный метод, то можно существенно увеличить точность расчета и время. Но для задач многоплоскостной балансировки промышленного оборудования данное решение видится мне более чем достаточным, не вижу смысла ловить сотые доли виброскорости или десятые доли виброперемещения. С мобильной версией сам балансировал вентиляторы, насосы, электродвигатели - все хорошо. С десктопной версией балансировал турбогенераторы 1200 МВт и по опорам и по ротору - работает чудесно, возможность покрутить вектора через "Установку нерасчетных грузов" помогает найти оптимальный вариант и для ротора и для опор.
"Тестировал на разных случаях результаты, не сходятся с практичеки получеными решениями. Но когда подставиш готовое решение в "установка нестандартных грузов" результаты расчета вибрация почти 0." - я правильно понимаю что несходимость минимальна? Можно данные для воспроизведения проблемы? Если проблема так критична - поправим.
Виталий, спасибо за программу. Пользуюсь ей уже два года. В основном когда в приборе ставлю 2-х плоскостную балансировку, но при первом пробном пуске вижу, что и одной плоскости коррекции достаточно. Тогда рассчитываю груз по Вашей программе, что значительно экономит рабочее время.
Добрый вечер. Подскажите есть ли обновление .ask? Спасибо.