Стабилизация Активная - часть II

 
1 82 83 84 85 86 87 88
UA Non-conformist #18.05.2012 15:09  @Ckona#18.05.2012 14:49
+
-
edit
 

Non-conformist

аксакал

Ckona> А что он должен успевать ?
Гировертикаль выдерживать, желательно спрямлённую, а не пространственными зигзагами. При большом значении стартового ускорения ракета успевает пройти большее расстояние за время работы клапана, при меньшем ускорении - меньшее... Мне кажется, что угловая скорость ракеты во время работы клапана должна превосходить поступательную скорость. А у тебя сейчас сильно наоборот.
Skype: a_schabanow  

LEVSHA

опытный

Ckona> Буду делать четкий план. Вдруг объявятся местные энтузиасты и удастся распределить работы !

Я энтузиаст и местный. Но на сегодня не готов, возможно к середине лета.
 7.07.0
UA Non-conformist #18.05.2012 15:42  @Ckona#18.05.2012 14:49
+
-
edit
 

Non-conformist

аксакал

Ckona> Система стабилизации должна парировать возмущающие моменты, приводящие к невертикальности оси ракеты. При этом вертикальное ускорение/скорость не имеет значения.
Для мысленной "прокачки" подобных ситуаций я беру предельные случаи: мысленно разгоняю ракету очень резко, а сопло клапана зажимаю совсем в тоненькую дырочку. И что получается? Управленческая недостаточность. Теперь наоборот: ракета еле вверх ползёт, а у клапана очко, как у бутылки (и давление в его баке, и расход - мысленно максимально умощняем это дело). Что теперь получается? Ракета ползёт вверх, дёргаясь туда сюда с частотой чуть не 50 Гц. Явная управленческая избыточность. Ну вот - а нам что-то посерёдке надо бы. А у тебя нифига не посерёдке, как на мой взгляд... Может и ошибаюсь, не знаю...
Skype: a_schabanow  
UA Ckona #18.05.2012 18:20  @Non-conformist#18.05.2012 15:42
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Управленческая недостаточность.
Следуя этой логике, самый мощный двигатель у "взрослого" космического корабля должен быть для стыковки на орбите при скорости 8 км/с.
Второй "взрослый" пример: соотношение тяги(=критики) маршевых и корректирующих двигателей с поворотными соплами.
Детский пример: сидим в самолете, он разгоняется по ВПП. Неужели отклониться вбок так же тяжело, как вперед ?
Наконец, формальная физика: угловой момент инерции не зависит от линейного ускорения - только квадраты радиусов до "элементарных грузиков".
Очень доходчиво "эта механика" расписана в детской энциклопедии 1966 года, в главе про гироскопы !
 

Ckona

опытный
★☆
LEVSHA> Я энтузиаст и местный.
Попробуем встретиться в начале июня.
 
UA Non-conformist #18.05.2012 18:42  @Ckona#18.05.2012 18:20
+
-
edit
 

Non-conformist

аксакал

Ckona> Следуя этой логике, самый мощный двигатель у "взрослого" космического корабля должен быть для стыковки на орбите при скорости 8 км/с.
Что-то ты всё не о том. Примеры какие-то не такие.

Ну, в общем, тебе на месте виднее, и мне остаётся пожелать тебе удачи.
Skype: a_schabanow  
UA Ckona #18.05.2012 19:14  @Non-conformist#18.05.2012 18:42
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Примеры какие-то не такие.

Это значит, что я разобрался недостаточно, т.к. не могу убедительно изложить.
Подумаю...
 
UA Non-conformist #18.05.2012 19:28  @Ckona#18.05.2012 19:14
+
-
edit
 

Non-conformist

аксакал

Я хотел сказать, что возмущающий момент, создаваемый большой тягой маршевого мотора, требует большого корректирующего момента. И наоборот.

Ветер голову в сторону увёл, а мотор работает - вот тебе возмущающий момент. Вектор тяги проходит не точно через ЦТ - вот тебе возмущающий момент. И чем больше тяга, тем больше эти возмущающие моменты. Тем больше управления требуется. И наоборот.
Skype: a_schabanow  
UA Ckona #18.05.2012 20:27  @Non-conformist#18.05.2012 19:28
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Я хотел сказать, что возмущающий момент, создаваемый большой тягой маршевого мотора, требует большого корректирующего момента. И наоборот.
А ! Ты абсолютно прав.
Если возмущение происходит от непрохождения вектора маршевой тяги через центр тяжести, то чем больше тяга, тем сильнее возмущение.
Естественно, минимальное возмущение - когда "оно" висит и не разгоняется.

300 Ньютон маршевой тяги, будучи перекошенными на 1 градус, дадут момент 2 Н*м, которому мы противопоставляем 4 Ньютона тяги от сопла с плечом 0,5...0,8 метра (ЦТ поднимается).
 
UA Ckona #18.05.2012 20:30  @Non-conformist#18.05.2012 19:28
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Ветер голову в сторону увёл, а мотор работает - вот тебе возмущающий момент.
Это возмущение определяется не тягой двигателя, а расстоянием между ЦТ и ЦБС, а также силой ветра. Полезно будет оценить.
 
UA Non-conformist #18.05.2012 21:23  @Ckona#18.05.2012 20:30
+
-
edit
 

Non-conformist

аксакал

Ckona> Это возмущение определяется не тягой двигателя ...
Первая ракета нанизана на направляющей, направляющая отклоняется порывом ветра, и в этот момент ракета энергично взлетает. Вторая ракета висит в воздухе неподвижно-вертикально, и отклоняется от вертикали точно таким же порывом ветра. Какую из этих двух ракет будет легче вернуть "на путь истинный"?
Skype: a_schabanow  
RU shadowjack #19.05.2012 18:12
+
-
edit
 

shadowjack

втянувшийся
Поздравляю с успешным испытанием!
Запись угловых скоростей проводилась, или это была отдельная программа?
Если отдельная, то выкладывай - я её интегрирую в "писалку".
 11.011.0
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Запись угловых скоростей проводилась, или это была отдельная программа?
Совершенно "кривая" программа, которая не всегда правильно срабатывает - я окончательно в этом убедился, и даже подозреваю, где ошибка.
Плюс жена устроила бунт - надо усмирять.

Я бы хотел наладить режим "постановка задачи" - "реализация", с четким описанием операций, которые выполняются в программе. На оформление постановки уйдет некоторое время.
Кроме чисто функциональных операций, работа должна сопровождаться звуковой сигнализацией.
Прошу неделю подождать.
 

Ckona

опытный
★☆
Ckona> жена устроила бунт - надо усмирять.
Усмирил комплексным воздействием.
Прикреплённые файлы:
P133.jpg (скачать) [269 кБ]
 
P134.jpg (скачать) [180 кБ]
 
 
 

Ckona

опытный
★☆
Ckona> На оформление постановки уйдет некоторое время.

ShadowJack !
В прилагаемом файле - попытка описать "понятным мне языком" алгоритм работы программы.
Подозреваю, что у программистов существуют свои специфические способы формулирования задачи,
но я тут совсем "плаваю".
Отсчеты снимаются с датчиков 32 раза в секунду, быстрее не надо (надо доказывать, что надо).
32 раза в секунду - это чтобы было легче делить (на 32 - сдвиг на 5 разрядов).

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

Non-Conformist !
Прошу при возможности поучаствовать в определении единиц измерения угловых скоростей и ускорений.
Грамотный выбор, возможно, позволит избежать переполнений и других подводных камней.

Я же в настоящее время изготавливаю токарные детали для пневмоаккумулятора, их много.
Не исключаю совместный (Киев-Чернигов)тестовый запуск носителя в течение ближайшего месяца.
Прикреплённые файлы:
 
 
UA Non-conformist #08.06.2012 14:45  @Ckona#08.06.2012 14:22
+
-
edit
 

Non-conformist

аксакал

Ckona> Non-Conformist ! Прошу при возможности поучаствовать в определении единиц измерения угловых скоростей и ускорений. Грамотный выбор, возможно, позволит избежать переполнений и других подводных камней.
Что значит "определение единиц измерения"? Давай так - ты напиши в чём конкретно проблема, и обозначь несколько (по возможности) альтернативных её решений, как ты их видишь. Тогда у меня (да и не только у меня, а скорее даже не столько у меня) появятся конкретные соображения, приняв которые во внимание, ты сможешь сделать более взвешенный окончательный выбор.

Ckona> Не исключаю совместный (Киев-Чернигов)тестовый запуск носителя в течение ближайшего месяца.
По возможности буду рад поучаствовать. Через неделю иду в отпуск на две недели, но там получается имхо слишком много планов. Так что гарантию дать, к сожалению, не могу.
Skype: a_schabanow  
UA Ckona #08.06.2012 15:05  @Non-conformist#08.06.2012 14:45
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Что значит "определение единиц измерения"?
В этом месте больше всего "спотыкачек", люди меряют в градусах в секунду и метрах в секунду за секунду, датчики выдают двоичные отсчеты относительно максимального диапазона измерений, разрядные сетки разные, а контроллер при переполнении заворачивает значение по кругу, и "как будто так и надо".
Конечно, я "обозначу проблемы и альтернативные решения".

Non-conformist> По возможности буду рад поучаствовать.
Минимум три недели уйдет на подготовки.
Планирую две проверки: направляющая для старта под углом, и взлет с пневмоаккумулятором и клапанами (как груз - расчеты расчетами, а вдруг не взлетит...)
 

Xan

координатор

Народ вот такую штуку нашёл:


Но я не вникал, ничего не скажу.
 9.09.0

Xan

координатор

Ещё:

yEd - Graph Editor

yEd Graph Editor
yEd is a powerful desktop application that can be used to quickly and effectively
generate high-quality diagrams.
Create diagrams manually, or import your external data for analysis.
Our automatic layout algorithms arrange even large data sets with just the press
of a button.


// Дальше — www.yworks.com
 

 9.09.0
+
-
edit
 

shadowjack

втянувшийся
Ckona> Отсчеты снимаются с датчиков 32 раза в секунду, быстрее не надо (надо доказывать, что надо).
Нет, не так. В общем случае, чем меньше задержка, тем стабильнее система. Лучше сделать максимальную скорость, которую позволяет железо и софт. И вообще, это не критичный для постановки задачи параметр, можно просто обозначить его F.
Ckona> 32 раза в секунду - это чтобы было легче делить (на 32 - сдвиг на 5 разрядов).
Это то, что называется "преждевременная оптимизация". Не нужно на этапе постановки задачи отвлекаться на такие мелочи.
Далее по алгоритму.
> Звуковые сигнал «тире», «точка»
В приложении 1 в будущем нужно указать длительность данных сигналов и пауз. Ckona, если есть программы, которые генерируют данные сигналы - выложи пожадуйста.
> ALx=ALx+Ox/32
> ALy=ALy+Oy/32 (поправил опечатку)
Тут есть 2 замечания. Во-первых, деля на 32, мы имеем потерю точности (фактечески, мы отбрасываем 5 младших бит измерений). Логичнее было бы просто накапливать отклонения (ALx=ALx+Ox). Что касается разрядности и возможного переполнения: даже если предположить, что гироскоп будет выдавать максимальные значения, при использовании 32-х битного ALx переполнение наступит не раньше, чем через 5 минут (при частоте 100 Гц), а при реалистичных значениях угловых скоростей - намного больше. Для спокойствия можно использовать 64-разрядные переменные.
Второе. Данные уровнения имеют смысл, если нет вращения вокруг локальной оси Z. Если оно есть, то нужно уже множить матрицы.
> Модуль «принятия решения о коррекции»
Поправь пожалуйста названия счетчиков в ЕСЛИ - там везде TA6.
Алгоритм управления в целом здравый. Есть предложения по улучшению
1) Введение гистерезиса. В данном алгоритме возможны колебания, если, например, значение ALx около ALM. Чуть привысили - скорректировали - закрыли клапан - опять превысили - открыли - закрыли и т.д. Путем введения разных порогов для открытия и закрытия клапана можно избежать высокочастотных колебаний.
2) Можно упростить условия, например из двух условий:
ЕСЛИ (ALx>ALM) И (TA6<TA)
ЕСЛИ (Ox>OM) И (ALx<=ALM) И (TA6<TA)
получается
ЕСЛИ (ALx>ALM ИЛИ Ox>OM)) и (TA6<TA)
3) В данном алгоритме возможно одновременное включение 2-х противоположных корректирующих клапанов на одной оси. Например, когда ALx = 2*ALM, Ox = -2*OM включатся D6 и D11

Для оценки пороговых значений по углу и скорости хорошо бы записать реакцию системы на открытие клапана (время открытия = 0.1, 0.2, 0.3 и т.д. сек).
 11.011.0
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Лучше сделать максимальную скорость, которую позволяет железо и софт.
Тут разное воспитание сказывается.
"Лишнего не надо, обойдусь малым".
"Нам много не мало, дают - бери".
Конечно, по 100 отсчетам в секунду нет никаких возражений, если сохранится реальный масштаб времени.

shadowjack> указать длительность данных сигналов и пауз.
Точка 300 мС, пауза 400 мС, тире 1000 мС.

>> ALx=ALx+Ox/32
>> ALy=ALy+Oy/32 (поправил опечатку)

shadowjack> Логичнее было бы просто накапливать отклонения (ALx=ALx+Ox).
Вот тут я "плаваю" (т.е. плохо разбираюсь).
Угол в градусах "в реале" равен предыдущему значению угла, плюс угловая скорость, умноженная на время "от предыдущего значения угла".
Если угловую скорость не умножать на время, то угол получается бОльше истинного во столько же раз, сколько отсчетов угловой скорости в секунду.
Ну и хрен с этим.
Тогда надо НАЧАЛЬНЫЙ стартовый угол тоже как-то по-другому считать, не в радианах.
В общем, надо грамотно указывать единицы измерения величин.

shadowjack> Второе. Данные уровнения имеют смысл, если нет вращения вокруг локальной оси Z. Если оно есть, то нужно уже множить матрицы.
До старта вращения нет. После старта корректирующие двигатели вращаются вместе с гироскопом.
Вроде как не надо множить матрицы. К тому же скорость вращения вряд ли будет более 1 оборота за 3-4 секунды, нет смысла их множить даже если и надо множить.

shadowjack> Поправь пожалуйста названия счетчиков в ЕСЛИ - там везде TA6.
Поправлю.
shadowjack> Есть предложения по улучшению
shadowjack> 1) ... Путем введения разных порогов для открытия и закрытия клапана можно избежать высокочастотных колебаний.
Увы, ток через клапан надо выключать через 0,3...0,4 секунды - иначе сгорит обмотка. 35 ампер на квадратный миллиметр - это 1...1,3 секунды до сгорания изоляции. Конечно, есть резервы (не фиг пускать такой ток после полного открытия клапана), но это "не для сейчас".

shadowjack> 2) Можно упростить условия
Подумаю "на свежую голову".
"на человеческом языке" получается так:
Угол вышел за порог - пшикать.
Если угол не вышел за порог - смотри угловую скорость, когда она превысила порог.
Если угловая скорость крутит "в нужную сторону" - не надо ничего делать.
Если угловая скорость (превысившая порог) крутит в сторону увеличения угла - пшикать.

shadowjack> 3) В данном алгоритме возможно одновременное включение 2-х противоположных корректирующих клапанов на одной оси. Например, когда ALx = 2*ALM, Ox = -2*OM включатся D6 и D11
Значит, я плохо описал алгоритм.
Если превышен порог по углу - надо пшикать, и потом до истечения времени "паузы между пшиками" ничего не делать, в том числе "пшикать по угловой скорости".
Буду еще раз переписывать "задачу".

Рад что ты следишь за темой, теперь спокойней будет вытачивать всякую фигню (выточу - сфотаю).
 
UA Non-conformist #11.06.2012 09:13  @Ckona#11.06.2012 00:12
+
-
edit
 

Non-conformist

аксакал

shadowjack>> 1) ... Путем введения разных порогов для открытия и закрытия клапана можно избежать высокочастотных колебаний.
Ckona> Увы, ток через клапан надо выключать через 0,3...0,4 секунды - иначе сгорит обмотка.
Он не электрику имеет в виду, в смысле не электроимпульс + клапан. Насколько я понял, предлагается ввести гистерезис значений, т.е. два порога + область нечувствительности на один достигаемый "угол реагирования". Это нужно затем, чтобы исключить реакцию типа "т-р-р-р-р". Т.е. чтобы клапан срабатывал только тогда, когда "угол реагирования" станет "больше большего" или "меньше меньшего" - чтобы между этими двумя пороговыми значениями была бы некая зона нечувствительности. Предложение правильное имхо.
Skype: a_schabanow  
UA Ckona #11.06.2012 10:17  @Non-conformist#11.06.2012 09:13
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> два порога + область нечувствительности на один достигаемый "угол реагирования".
Ясно. Буду делать рисунки. Пока я их сам себе не нарисовал - не мог все четко представить.
На словах: задаются "ворота" от -ALM до +ALM, а также "ворота" от -ОМ до +ОМ, внутри которых клапаны не включаются.

Возможно, SadowJack имеет в виду необходимость отстроиться от шумов. Думаю, картинки все прояснят.
 

Xan

координатор

Сделано на Абдурине:
.

Это я чтоб усилить энтузиазм!!! :D
 9.09.0
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

shadowjack

втянувшийся
Ckona> На словах: задаются "ворота" от -ALM до +ALM, а также "ворота" от -ОМ до +ОМ, внутри которых клапаны не включаются.
Не, идею-то я понял. Просто тот псевдокод, который приведен, не совсем корректно её реализует.
Вообще, можно несколько обобщить алгоритм. У нас есть для каждой оси коррекции плоскоть угол/угловая скорость. Каждая ось может находиться в 3-х состояниях - оба клапана выключены (OFF), включен 1-й (ON1), включен 2-й (ON2) (четвертое состояние с двумя включенными клапанами является "запрещенным"). Плоскость делится на неперекрывающиеся зоны OFF, ON1, ON2. Т.е. фактически нам нужна функция newCorrectionState(angle, angle_dot) которая будет возвращать, какое корректирующие действие нужно предпринять. В случае с гистерезисом - у нее будет еще один параметр, отвечающий за текущее состояние.
Нормальному программисту задачу можно ставить картинками, словами, формулами - в код он её сам переведет. Главное, чтобы задача была поставлена полно и непротиворечиво.
>Угол вышел за порог - пшикать.
>Если угол не вышел за порог - смотри угловую скорость, когда она превысила порог.
Это эквивалентно тому, что "если угол или скорость превисили порог, то пшикать". Об этом и говорю.
>за 3-4 секунды, нет смысла их множить даже если и надо множить.
Это означает, что за 1 секунду оси поменяются местами. Представь, мы в момент старта резко отклонились на 5 градусов, через секунду - еще на 1 и превысили порог. За это же время повернулись на 90 градусов вдоль локальной продольной оси. корректировать нужно уже не той осью, вдоль которой мы повернулись вначале, а другой!
 13.013.0
Это сообщение редактировалось 11.06.2012 в 17:27
1 82 83 84 85 86 87 88

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru