В сфере грузоподъемной техники система противораскачивания довольно популярная и полезная штука. Эта система полезна тем, что, к примеру, оператор крана не обязан корректировать движение крана самостоятельно, чтобы не происходило раскачивание груза и не было рисков возникновения аварийных ситуаций. Многие производители предлагают свои системы на базе ПЛК (программируемых промышленных контроллеров) либо на базе ПЧ (преобразователей частоты). Мы в нашем инженерном центре тоже решили не стоять в стороне и делать свою систему. Погружение в теорию привело нас к пространству состояний. Таким образом целью статьи является рассказать, как возможно решить задачу противораскачивания груза в пространстве состояний.
Постановка задачи: прийти в заданную позицию за наименьшее количество времени, не превышая доступную скорость и без раскачивания груза. Все ограничения взяты из характеристик стенда, для которого производятся расчеты.
![Схема тележки с грузом Схема тележки с грузом](https://habrastorage.org/getpro/habr/upload_files/5c9/21f/287/5c921f2870fc7deabbf4dbdbbbcd03d5.png)
Обозначения
M = 30 кг – масса тележки
m = 10 кг – масса груза
f – сила, прикладываемая к тележке
x(t) – значение горизонтального перемещения тележки
α – угол поворота маятника, учитывается в положительном направлении от строго вертикального положения вниз
l = 1.2 м – расстояние от точки крепления до
центра масс маятника
Дифференциальные уравнения
Первым шагом нужно представить модель в математическом виде. Для того, чтобы перейти в пространство состояний, нужно записать модель в виде дифференциальных уравнений первого порядка. Но обо всем по порядку.
Начнем с дифференциальных уравнений. Чтобы представить модель в таком виде мы воспользуемся методом Лагранжа.
Метод Лагранжа
Данный метод позволяет написать дифференциальные уравнения движения второго порядка. Суть метода заключается в том, что динамика механической системы рассматривается в целом и внутренние силы реакции связей исключаются из уравнений модели. Чтобы записать модель, нужно выбрать обобщенные координаты и обобщенные скорости. Что это такое? Обобщенные координаты – это независимые друг от друга параметры, которые определяют положение системы в пространстве, а обобщенные скорости это их производные. В нашей модели это позиция тележки и угол поворота маятника
и, соответственно, их производные это скорости.
После того, как мы определились с нужными параметрами, можем перейти к уравнениям.
Уравнение Лагранжа имеет вид:
![](https://habrastorage.org/getpro/habr/upload_files/988/ef0/7a0/988ef07a090e2e36b3b64fff520fb1f6.png)
Обозначения
![](https://habrastorage.org/getpro/habr/upload_files/9da/fce/cb1/9dafcecb1b784b29256a07a728c0a4fe.png)
Функция Лагранжа или Лагранжиан вычисляется как:
Обозначения
Т - кинетическая энергия
U - потенциальная энергия
Разобрались с теорией, перейдем к нашей системе. Начнем с функции Лагранжа, для этого необходимо найти потенциальную и кинетическую энергии всей системы.
Потенциальная энергия этой системы определяется только потенциальной энергией отклонённого на угол маятника. Тележка находится на поверхности, которая является нулевым уровнем относительно нее, поэтому высота равняется нулю и, соответственно, потенциальная энергия тоже равна нулю.
Вывод уравнения кинетической энергии системы
Полная кинетическая энергия состоит из кинетических энергий поступательного движения тележки и движения центра масс маятника.
Необходимо выразить координаты центра масс маятникачерез координаты тележки:
Нужны скорости, поэтому продифференцируем эти два уравнения:
Подставляем в формулу кинетической энергии:
Полная кинетическая энергия системы:
Все найденное подставляем в формулу Лагранжиана и получаем:
Теперь можно составить систему уравнений Лагранжа нашей системы. Первое уравнение будет описывать движение тележки. Так как это движение линейное, воздействием является сила. Второе уравнение – движение маятника, воздействием является момент. Маятник совершает свободные колебания и не управляется никаким приводом, поэтому момент равен нулю:
![](https://habrastorage.org/getpro/habr/upload_files/18a/5d4/b70/18a5d4b70979bb6039c8ef909402a37f.png)
Подставив все, продифференцируем и получим систему уравнений:
![](https://habrastorage.org/getpro/habr/upload_files/d04/9e5/3a6/d049e53a6dfabdd487176ec815cfa449.png)
Линеаризация
Система нелинейная и надо это исправить, потому что иначе не выйдет далее перейти к нормальной форме Коши. При достаточно малых значениях можно заменить нелинейные функции, как первые члены ряда Тейлора:
.
Тогда упрощённая система будет выглядеть так:
![](https://habrastorage.org/getpro/habr/upload_files/01f/cc9/d91/01fcc9d9184c2e924229b7f6b6d4efe9.png)
Итоговые уравнения
Дальше мы приведем эти уравнения к нормальной форме Коши. Это система дифференциальных уравнений первого порядка, в которой производная в левой части, а все остальное в правой части уравнения. После некоторых преобразований получим два уравнения.
![](https://habrastorage.org/getpro/habr/upload_files/42d/769/fdf/42d769fdf7213263117d0d01d366c0df.png)
Последним шагом является ввод вектора состояния:
![](https://habrastorage.org/getpro/habr/upload_files/f63/010/8f4/f630108f475dce62f1719277edbf9105.png)
где - позиция тележки,
- угол поворота маятника,
- скорость тележки,
- скорость угла поворота маятника. Такой вектор выбран относительно составляющих уравнений и будущих желаемых результатов.
![](https://habrastorage.org/getpro/habr/upload_files/8e9/9af/011/8e99af01178e354c7f5a0a7c00ae462b.png)
Теперь можно перевести систему в пространство состояний. В пространстве состояний удобнее работать со всеми состояниями, в отличии от остальных видов представления математических моделей.
Пространство состояний
Пространство состояний – n-мерное пространство, которое состоит из элементов, каждый из которых полностью определяет состояние рассматриваемой системы.
Описывается система двумя векторно-матричными уравнениями.
1. Дифференциальное уравнение состояния:
Обозначения
![](https://habrastorage.org/getpro/habr/upload_files/c19/ad6/8f8/c19ad68f8efd67a00a95d80b0e963a41.png)
Это уравнение линейного объекта отражает его динамические свойства и записывается в виде векторного дифференциального уравнения в форме Коши.
2. Дифференциальное уравнение выходов:
Обозначения
![](https://habrastorage.org/getpro/habr/upload_files/6af/bb1/d2d/6afbb1d2de8fd4caf12cc80bf91f2180.png)
Это уравнение связывает переменные состояния и управляющие воздействия с выходными измеряемыми переменными.
Модель в пространстве состояний будет выглядеть так:
В полученном виде можно подавать любое усилие на систему и наблюдать за поведением тележки. Однако, в реальной жизни, тележка управляется заданием скорости и так как нас интересует не усилие, которое необходимо, чтобы сдвинуть тележку с заданной скоростью на заданное расстояние, а то как будет раскачиваться груз при заданном движении, модель необходимо перевести к такому виду, чтобы входными воздействием у нас являлась скорость.
Модель тележки с грузом с управлением по скорости
Так как нет конкретного способа преобразовать силу в скорость, были выполнены преобразования.
Преобразования силы в скорость
Если представить модель упрощённо, то система выглядит таким образом:
![](https://habrastorage.org/getpro/habr/upload_files/86a/b4f/183/86ab4f1836eeaef97b7f7fc4434750e5.png)
F – заданная сила (входное воздействие)
G – объект моделирования
V – скорость тележки (выходное состояние)
Обратившись ко второму закону Ньютона и представив формулу в виде структурной схемы, в которой выход будет скорость.
![](https://habrastorage.org/getpro/habr/upload_files/8d4/dd7/df0/8d4dd7df0035d7347116d8dab11da4a0.png)
Для того, чтобы на вход подавалась скорость, необходимо добавить обратную связь и регулятор (коэффициент усиления), который будет преобразовывать заданную скорость в силу.
![](https://habrastorage.org/getpro/habr/upload_files/909/404/c7f/909404c7f3cb8618c9a2509b43d8b726.png)
Записав передаточную функцию системы получим:
Получилось апериодическое звено. Его переходная характеристика является плавно возрастающей или убывающей и достигается заданное значение. Это означает, что такой прием можно использовать в нашем случае для выражения скорости.
![](https://habrastorage.org/getpro/habr/upload_files/5eb/220/3ee/5eb2203eede54632ec0f83aa97ebb0a4.png)
V*– заданная скорость (входное воздействие)
K1 – коэффициент усиления
G – объект моделирования
V- фактическая скорость (выходное состояние)
Коэффициент K1 отображает скорость отработки тележкой заданной скорости. Для будущих расчетов примем примерно K1 =500.
Из полученной модели выразим силу, для того, чтобы заменить ее в дифференциальных уравнениях.
Так у нас получилось вывести нужные дифференциальные уравнения и матрицы пространства состояний.
Дифференциальные уравнения
![](https://habrastorage.org/getpro/habr/upload_files/236/3b5/6af/2363b56afd7a4a730856850599745a05.png)
Матрицы пространства состояния
Выбор регулятора
Теперь перейдем к главному вопросу – как задать нужное управление. Для этого нам понадобится регулятор. Определить вид регулятора нужно исходя из требований и формы представления математической модели. Наша модель представлена в виде пространства состояний, поэтому, чтобы влиять на все состояния по отдельности, необходимо найти матрицу, с помощью которой будет обеспечиваться устойчивый процесс управления. Таким образом формируется многомерная система управления, реализующая принцип обратной связи. У нас частный случай и управляющее воздействие одно.
Выбор пал на модальный регулятор, т.к. с его помощью есть возможность обеспечивать для замкнутой системы требуемое расположение полюсов. Корни (полюса) - это корни характеристического полинома матрицы состояния А. Корни характеризуют поведение системы, какими качествами она будет обладать (перерегулирование, время регулирования и т.д.).
![](https://habrastorage.org/getpro/habr/upload_files/8d4/5f7/101/8d45f7101f1af6f3ab34ba103118ada3.png)
Ввод регулятора K в систему преобразует управляющее воздействие к виду: . Подставив управляющее воздействие в уравнение состояния получим:
. Таким образом регулятор K будет напрямую влиять на расположение полюсов матрицы состояния и тем самым влиять на поведение системы.
Синтез регулятора
Синтез модального регулятора состоит в выборе параметров регулятора. Для синтеза регулятора необходимо определить, является ли система полностью управляемой.
Если система управляема, то значит можно найти такое управление, чтобы перевести систему из начального в конечное состояние.
Для нашего случая ручные вычисления очень трудоёмкие, поэтому расчет проведен в среде Matlab при помощи команды ctrb(A,B), которая рассчитывает матрицу управляемости. Система полностью управляема. Значит можно начать синтез регулятора.
Алгоритм расчета параметров модального регулятора
Существует алгоритм расчета коэффициентов для модального регулятора. Он был взят из источника.
Проводить каждый раз расчет параметров вручную нецелесообразно, воспользуемся функцией acker в Matlab. В основе работы функции лежит данный метод расчета.
Команда K = acker (A, B, P) вычисляет такую матрицу K, что полюса системы A-BK равны значениям, заданным вектором желаемых полюсов P.
Теперь стоит вопрос в том, какие задавать желаемые полюса (корни).
Выбор корней
Напомним, что корни (полюса) - это корни характеристического полинома матрицы состояния А. Корни характеризуют поведение системы, какими качествами она будет обладать (перерегулирование, время регулирования и т.д.). Желаемые корни это те, которые мы хотим получить в результате работы регулятора. Основной критерий для устойчивости системы: корни характеристического полинома должны лежать в левой комплексной полуплоскости.
Подбор корней для решения задачи движения по положению
Для начала попробуем выбрать корни, которые будут обеспечивать движение по заданному положению. Схема собрана в Simulink:
![](https://habrastorage.org/getpro/habr/upload_files/430/b60/0bc/430b600bc973cc8324e90cf3d77a4bbc.png)
В данной схеме входными воздействиями являются заданные состояния системы в таком порядке: позиция тележки, угол маятника, скорость тележки, скорость угла поворота маятника. В примере на первый вход (позиция тележки) задается 2 м, а на остальные входы подаются 0.
Расчет коэффициентов регулятора, как и было сказано, будет в Matlab.
Для примера выберем вектор полюсов [-1 -1 -1 -1].
![Коэффициенты регулятора: K=[0.0073 0.3616 -0.9706 -0.2528] Коэффициенты регулятора: K=[0.0073 0.3616 -0.9706 -0.2528]](https://habrastorage.org/getpro/habr/upload_files/d68/d0d/683/d68d0d68389df25b7ed40b329dc8cbe1.png)
Система отработала относительно хорошо. Нет перерегулирования по положению и система без ошибки пришла в заданную позицию, также она устойчива, благодаря отрицательным корням. При увеличении значений корней тележка приходит в заданную позицию быстрее, но график скорости может ухудшаться, ее поведение не может быть удовлетворительным в реальных условиях.
Пример с корнями [-3 -3 -3 -3]
![Коэффициенты регулятора: К = [0.5945 -2.3898 -0.2073 0.0872] Коэффициенты регулятора: К = [0.5945 -2.3898 -0.2073 0.0872]](https://habrastorage.org/getpro/habr/upload_files/497/aa0/001/497aa000161b8cc9a57a64eab30fb5b4.png)
При векторе желаемых корней [-3 -3 -3 -3] переходная характеристика скорости тележки имеет сильные колебания, что неудовлетворительно для работы в реальной жизни.
Но у нас стоит задача задавать скорость и позицию тележки.
Выбор корней для решения задачи движения с заданной скоростью и в заданную позицию
Для решения поставленной задачи необходимо на вход задавать и желаемое положение, и желаемый закон скорости. Для этого был создан блок Speed generator. Этот блок генерирует кривую разгона, которая позволяет двигаться с желаемыми временем ускорения и замедления, скоростью и расстоянием.
![](https://habrastorage.org/getpro/habr/upload_files/802/edb/612/802edb61230c4da58dcf2f97946740c4.png)
Внутри устанавливается позиция, скорость и время разгона.
Добавим новый блок Speed generator в нашу схему.
![](https://habrastorage.org/getpro/habr/upload_files/25b/e6b/ea7/25be6bea7e365be700b2123877e928ab.png)
Необходимо выбрать требования, которые могут показать наиболее приближенный результат к реальным условиям. Мы будем проверять результаты при входных значениях: позиция 1 м и скорость тележки 0,28 м/с (номинальная скорость для стенда).
Стоит следующая задача: тележка должна прийти в заданную позицию за наименьшее время, график скорости должен быть как можно ближе к заданному закону, система устойчива. Но подбирать корни снова вручную плохой вариант, потому что неизвестно, какой набор корней из множества вариантов будет лучший. Поэтому нужно найти алгоритм, в котором можно было бы учитывать качества системы.
При поиске методов мы столкнулись с тем, что источников информации очень мало, многие методы подбора корней основываются на ручном подборе. Нам необходимо, чтобы можно было учитывать будущее поведение переходных характеристик. Был найден один приблизительный алгоритм в источнике.
Алгоритм расчета корней
1. Определить порядок системы, следовательно степень характеристического полинома.
2. Выбрать стандартный полином для последующих расчетов: полином Ньютона или полином Баттерворта. Выбор исходит от требований к показателям качества будущей переходной характеристики. Если требуется, чтобы не было перерегулирования, то выбирается полином Ньютона, т.к. корни его полиномов вещественные и не имеют мнимой части, которая влияет на перерегулирование. Если перерегулирование больше 1%, то выбирается полином Баттерворта, т.к. корни его полинома имеют мнимые части. Значения перерегулирования и времени регулирования можно посмотреть в таблице 1 и 2.
3. Выбрав из таблицы 1 или 2 значение времени регулирования по номеру порядка системы и желаемое время регулирования, данные подставляются в формулу для вычисления ω0 – радиуса окружности, на котором лежат полюса.
t1п - время регулирования стандартного полинома
tп - желаемое время регулирования
ω0 - радиус окружности
4. Далее полученное значение подставляется в выбранный полином и рассчитываются коэффициенты этого полинома, потом надо найти его корни. Это и будут желаемые корни, которые далее используются для нахождения параметров модального регулятора.
Таблица 1 - Показатели качества полинома Ньютона
Порядок полинома | 1 | 2 | 3 | 4 | 5 | 6 |
Время регулирования t1п, с | 3,0 | 4,8 | 6,3 | 7,8 | 9,2 | 10,5 |
Перерегулирование σ, % | 0 | 0 | 0 | 0 | 0 | 0 |
Таблица 2 -Показатели качества полинома Баттерворта
Порядок полинома | 1 | 2 | 3 | 4 | 5 | 6 |
Время регулирования t1п, с | 3,0 | 2,9 | 6,0 | 6,8 | 7,7 | 10,8 |
Перерегулирование σ, % | 0 | 4,5 | 8,0 | 11,0 | 13,5 | 14,3 |
Зададим динамические показатели качества: перерегулирование σ = 0% и время переходного процесса будем подбирать вручную, подставляя в формулу. Для дальнейшего расчета выберем характеристический полином Ньютона, т.к. он соответствует перерегулированию равному 0 %. Объект управления обладает четвертым порядком. Выберем полином 4 порядка.
Как сказано в алгоритме, для расчета корней необходимо задаться временем переходного процесса, который значительно влияет на поведение системы. Методом подбора выбрали время равное 2 с. Если брать значение больше или меньше, характеристики переходных процессов не удовлетворяют поставленным требованиям. Для разных параметров системы это время будет свое.
Получаем значение радиуса окружности, на которой будут располагаться корни, и подставляем в полином. Находим корни полинома, они и будут нашими желаемыми корнями. На основе этих корней рассчитываем параметры регулятора. С полученными параметрами переходные характеристики системы выглядят следующим образом:
![Коэффициенты регулятора: K=[1.6979 -3.7484 0.7415 0.9666] Коэффициенты регулятора: K=[1.6979 -3.7484 0.7415 0.9666]](https://habrastorage.org/getpro/habr/upload_files/0dd/c36/2d8/0ddc362d845b08bc88670b6331370c30.png)
Если опираться на переходную характеристику скорости тележки, этот вариант наиболее приемлемый, т.к. есть относительно продолжительный участок, где тележка едет с постоянной заданной скоростью. Также важно, что значение не превышает доступную скорость. Остальные характеристики тоже удовлетворяют всем требованиям, маятник не раскачивается, тележка едет плавно к заданной позиции.
В результате удалось сформировать управление перемещением крана без раскачивания груза, удовлетворяющее условиям (прийти в заданную позицию за наименьшее количество времени, не превышая доступную скорость и мощность).
![](https://habrastorage.org/getpro/habr/upload_files/56f/b10/e00/56fb10e009fd6ff1f36d03783ba16535.png)
Светлана Верятинская
Инженер-разработчик ООО "Троицкий крановый завод"
Статья написана в соавторстве с @ivpo6 (инженер-программист Иван Попков)