реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Перемещение по декартовой СК
Guest_TSerg_*
сообщение Nov 27 2007, 06:33
Сообщение #16





Guests






Цитата(_lukash_ @ Nov 26 2007, 21:01) *
А можно немного объяснить по пункту 4 - про интерполяцию и приращение по координатам? Т.е. с самой интерполяцией я разобрался, а как ее здесь применить не оч понял.

ЗЫ Нагуглил по ЧПУ инфы, разбираюсь...


Я бы попробовал смоделировать другой вариант, он несколько более "свободный", но и более робастный.
Предварительно вычисляется направление движения и и на рекомендуемой линии движения определяются точки переключения разгон-стационар и стационар-торможение.
В каждый момент времени определяются текущие координаты X,Y и рассчитываются:
- направление на конечную точку
- отклонение по траверзу от рекомендованной линии движения;
Для следующего шага вырабатывается новый вектор скорости, а имеющееся отклонение устраняется регулятором типа ПИ или ПИД.
В случае достижения по одной из координат максимальной скорости или ускорения разгон прекращается.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 27 2007, 07:02
Сообщение #17


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(urasinov @ Nov 26 2007, 18:51) *
Что нам даст знание косинусов? По-моему гораздо удобнее знать перемещение отдельно по каждой из координат Х и У.

Когда известна контурная (общая) скорость. Умножив ее на на косинус получаем приращение по координате.

Цитата(TSerg @ Nov 27 2007, 09:33) *
Для следующего шага вырабатывается новый вектор скорости, а имеющееся отклонение устраняется регулятором типа ПИ или ПИД.

Для программного управления используется П-регулятор, иногда вводится скоростная компенсация с некоторой недокомпенсацией. Это необходимо для отсутствия перерегулирований.
ПИ и ПИД используются в копировально-фрезерных станках. Там это необходимо, но требования к люфтам и т.д. здесь намного жестче.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 27 2007, 07:50
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(TSerg @ Nov 27 2007, 09:33) *
Я бы попробовал смоделировать другой вариант, он несколько более "свободный", но и более робастный.
Предварительно вычисляется направление движения и и на рекомендуемой линии движения определяются точки переключения разгон-стационар и стационар-торможение.
В каждый момент времени определяются текущие координаты X,Y и рассчитываются:
- направление на конечную точку
- отклонение по траверзу от рекомендованной линии движения;
Для следующего шага вырабатывается новый вектор скорости, а имеющееся отклонение устраняется регулятором типа ПИ или ПИД.
В случае достижения по одной из координат максимальной скорости или ускорения разгон прекращается.

Такой подход, в принципе, правильный. Для системы с ограниченной информацией. Но возможны улучшенные варианты. Автору нужно разобраться с двигателем.
Может ли (и хочет ли) он напрямую управлять (измерять по электрическим сигналам, а не с датчика положения) ускорением, скоростью и с какой точностью...
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 27 2007, 09:54
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Когда известна контурная (общая) скорость. Умножив ее на на косинус получаем приращение по координате.
Т.е. вы предлагаете расчитать гипотенузу треугольники, затем найти синусы и косинусы углов, затем умножив гипотенузу на косинус и синус получить приращение по х и по у? Зачем столько бессмысленных операций если нам известны координаты начальной точки (х0, у0) и конечной (х1, у1). Чем вам не нравится найти приращение как разность координта х1-х0 и у1-у0?
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 27 2007, 10:04
Сообщение #20


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(urasinov @ Nov 27 2007, 12:54) *
Т.е. вы предлагаете расчитать гипотенузу треугольники, затем найти синусы и косинусы углов, затем умножив гипотенузу на косинус и синус получить приращение по х и по у? Зачем столько бессмысленных операций если нам известны координаты начальной точки (х0, у0) и конечной (х1, у1). Чем вам не нравится найти приращение как разность координта х1-х0 и у1-у0?

Речь идет о линейной интерполяции, т.е. надо выдерживать контурную скорость в каждый момент времени, причем надо находиться на траектории в каждый момент времени.
Если речь идет о позиционировании (это еще один вид интерполяции) - то так и делается.
PS. Я это знаю, потому что писал ПО для УЧПУ 2C42 (Контур Томск). biggrin.gif
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 27 2007, 16:10
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Значит делаю как TSerg написал:
Сначала рассчитываю коэффициент для меньшей координаты.
Если случай первый, рассчитываю длины отрезков ускорение/стационар/торможение.
Далее перевожу эти длины в количество импульсов от датчика Холла(будет около 30 импульсов на 1 миллиметр)
Потом возьму какую-то переменную в качестве счетчика (по переменной на каждую ось, ее перед каждым проездом обнулять буду) и в обработчике прерывания компаратора (по импульсу от датчиков Холла) буду каждый раз ее увеличивать на 1. Там же (в обработчике прерывания) и проверять ее на равность со значениями ускорение/стационар/торможение. Так я узнаю, что пора прекратить разгон, к примеру. И так же для 2-го случая, но там просто ускорение/торможение.

Немного непонятно как мне посчитать отклонение от рекомендованной линии движения. Опять по времени?
Еще объясните доступно плз, как прикрутить к этому всему П-регулятор - получается он тоже будет корректировать скорость исходя из времени, или он будет корректировать только конечную точку, в которой нужно остановиться?

И еще один момент – сами расчеты ведутся в одном контроллере, потом он (master) контроллер передает рассчитанные данные в 2 slave МК (на каждый двигатель по МК), после чего master одновременно дает команду на пуск 2 –х двигателей. Во время движения каждый из slave контроллеров НЕ будет знать сколько в данный момент прошел второй slave, т.е. связи между ними не будет. Возможно ли обойтись без привязки по времени в данном случае?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 28 2007, 08:52
Сообщение #22





Guests






Цитата(_lukash_ @ Nov 27 2007, 19:10) *
Значит делаю как TSerg написал:

Немного непонятно как мне посчитать отклонение от рекомендованной линии движения. Опять по времени?


Рекомендованная линия пути (ЛРП) известна, т.к. задана начальной и конечно точками. Текущая точка тоже известна по датчикам перемещения. Далее - обычная геометрия (кратчайшее расстояние от точки до прямой)

В качестве примера, реализующего подобный подход, привожу симуляцию.

Имеется двухкоординатная система с двигателями пост.тока и датчиками положения (не снижая общности). рис.1
Прикрепленное изображение


Каждая из подсистем реализована как замкнутая по скорости, т.е. обеспечивается постоянство скорости на рабочем участке.
Для демонстрации возможностей работы такой САР в условиях значительной неопределенности введены следующие усложнения жизни.
Динамические характеристики разомкнутых систем различаются по динамике и передаточному числу. рис.2
Прикрепленное изображение


Динамические хар-ки замкнутых систем отличаются качественно - одна имеет апериодический характер, вторая - колебательный. рис.3
Прикрепленное изображение


В канал скорости по X вводится случайная составляющая, как интеграл от белого шума с катастрофической величиной дисперсии 25% от макс.скорости. рис.4
Прикрепленное изображение


(синий - результирующая скорость задатчика, красный - шумовой сигнал). Т.е. мы в сигнал задания вводим значительное возмущение без объяснения его природы.

На рис.5 приведен график отклонения от ЛРП при работе САР без канала коррекции по отклонению.
Как видно, текущую точку значительно уводит и отклонение достигает 2 мм на 100 мм, т.е. 2%

Прикрепленное изображение


На рис.6 приведен аналогичный график при включенной коррекции. Отклонение не превышает 0.05 мм, т.е. 0.05%
Прикрепленное изображение


Отключим возмущение по скорости рис.7. Дисбаланс в каналах приводит конечно же к процессу установления, но он быстротечен и невелик, те же 0.05%.
Прикрепленное изображение


Безусловно, это всего лишь демонстрация возможностей и отнюдь не идеальная.
Все регуляторы имеют П-характер, возможно введением иных законов и нелинейностей удасться получить апериодический характер пуска и выхода на ЛРП.
Пуск производился на максимальном ускорении, если же делать его плавным, с контролируемым ускорением, то переходной процесс выглядит так - рис.8.
Прикрепленное изображение


Если же каналы максимально идентичны, то - рис.9 и переходной процесс, скорее всего, будет определятся иными факторами.

Прикрепленное изображение



Следующим шагом к улучшению показателей может стать введение режима "погоня за фазовой точкой", когда азимут берется не на конечную, а на искусственную движущуюся точку впереди фазовой точки системы.





На рис.10 приведена траектория выхода на ЛРП при несовпадающих начальных точках ЛРП и каретки.
Т.е. изменили начальные условия X0=0, Y0=-5, XT=0, YT=0
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 28 2007, 21:32
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Это понял, спасибо.

Но еще один момент - у Вас при симуляции для расчета корректирования берутся показатели датчиков обратной связи с 2-х двигателей в данный момент. А у меня так не получится – т.е. каждый контроллер знает данные только своего двигателя. Можно ли брать для каждого контроллера вместо показателей датчиков 2-го двигателя матем. посчитан "идеальный вариант" движения второго двигателя в данный момент?
Т.е. мы будем корректировать ошибку каждого двигателя, принимая, что второй движется "идеально", и также для второго двигателя соответственно?

PS А в чем это симулировалось/можно прикрепить проект симуляции чеб самому попробовать?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 29 2007, 07:33
Сообщение #24





Guests






Цитата(_lukash_ @ Nov 29 2007, 00:32) *
Это понял, спасибо.



>Но еще один момент - у Вас при симуляции для расчета корректирования берутся показатели датчиков >обратной связи с 2-х двигателей в данный момент. А у меня так не получится – т.е. каждый контроллер >знает данные только своего двигателя. Можно ли брать для каждого контроллера вместо показателей >датчиков 2-го двигателя матем. посчитан "идеальный вариант" движения второго двигателя в данный >момент?
>Т.е. мы будем корректировать ошибку каждого двигателя, принимая, что второй движется "идеально", и >также для второго двигателя соответственно?

Пожалуй, что - нет. Это связанная система управления. Стабилизация по скорости у каждого канала своя, но траекторные вычисления необходимо делать на основе координат X,Y каретки.
Иначе ноги врозь пойдутsmile.gif

>PS А в чем это симулировалось/можно прикрепить проект симуляции чеб самому попробовать?

Это VisSim 6.0 ( http://www.vissim.com )
На этом сайте есть также VisSim viewer 4.0 (если нужен проект для просмотра, могу проект выложить)
Есть бесплатная версия VisSim 3.0 (с данным проектом могут быть проблемы по совместимости)
http://model.exponenta.ru/download.html



Вообще-то, на мой взгляд, попытки создания систем управления удовлетворительного качества без начальных системных расчетов и последующей симуляции - пустая трата времени и сил (средств)

Кстати, вышеприведеный проект реализован в аналоговой постановке, но ничто не мешает его выполнить и в цифровой, благо VisSim это позволяет.
Справедливости ради скажу, что есть неплохой отечественный симулятор - МВТУ
http://mbty.com.ru/
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 29 2007, 19:56
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Возможно, удастся сделать так, чтоб при расчетах использовать и текущею Х, и У. Просто эти МК (которые управляют двигателями) связаны между собой через еще один МК, причем все на одной линии УАРТА. Если это все успеет обмениваться данными вовремя, то все будет хорошоsmile.gif
Там еще скорость каждого двигателя будет регулироваться ПИ-регуляторами, поэтому, возможно отклонение и не будет оч большим без коррекции.
Плохо, что еще нет этого собранного станка, и не на чем это испытать.

Скачал VisSim, посмотрел примеры, сам опробовал в нем с ПИД разобраться - понравилосьsmile.gif Если не трудно, выложите плз ваш проект, интересно посмотреть.

Значит буду пробовать делать связь между МК, и собственно коррекцию по Х и У. Интересно будет посмотреть как это заработает на реальном станкеsmile.gif

Пока с основными вопросами разобрался, спасибо!
Go to the top of the page
 
+Quote Post
_artem_
сообщение Nov 29 2007, 23:42
Сообщение #26


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



посмотрите linuxcnc.org там есть сурцы для интерполятора и планировшика перемешений. Вам нужно будет линейное пермешение. Кстати обратная связ от енкодера тоже поддерживается если надо
Правда обьема там много и вопрос о том что быстрее написать самому или выташить код оттуда довольно таки спорный. Придется также разбираться с профайлами мотора ускорения вроде бы есть трапезоидный s curve синус в квадрате ... Если перемешения будут делаться непрерывно и нужна плавность и безостановочное перемешение на концах одних и началах других линий придется также изучать spline интерполяцию. В emc вроде бы кубическая функция используется. Вобшем в математике покопаться придется .

...

Есть вариант попроше ) Японцы и американцы продают чип с паралельным интерфейсом который и линейное и круговое перемешение делает . Правда цена 70 - 80 баксов за асик(японский в японии) ).


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 30 2007, 06:21
Сообщение #27


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



На память ЧПУшные функции:
G0 - позиционирование
G1 - линейная интерполяция
G2, G3 - круговая интерполяция по часовой и против часовой стрелки
G4 - выдержка времени
...
G90 - абсолютное задание координат
G91 - относительное задание координат
...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 30 2007, 06:51
Сообщение #28





Guests






Цитата(_lukash_ @ Nov 29 2007, 22:56) *
Скачал VisSim, посмотрел примеры, сам опробовал в нем с ПИД разобраться - понравилосьsmile.gif Если не трудно, выложите плз ваш проект, интересно посмотреть.

Пока с основными вопросами разобрался, спасибо!


Выкладываю демо-проект на VisSim v.5.11

P.S. Честно говоря, настолько VisSim удобный инструмент, что не представляю уже как без негоsmile.gif)
В Сети стоит поискать фамилию Клиначев - апологет VisSim-а из Южно-Уральского универа.

Кстати, VisSim имеет открытую систему плагинов на основе самописных DLL, а также может работать
с внешними устройствами в качестве собственно системы управления.

Прикрепленный файл  dc.zip ( 2.84 килобайт ) Кол-во скачиваний: 117
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 08:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01613 секунд с 7
ELECTRONIX ©2004-2016