Окончательно разбираемся с градусами: причина аварии «Фрегата»

    Во вторник были озвучены результаты работы комиссии, расследовавшей причины аварии разгонного блока «Фрегат» со спутником «Метеор-М №2-1». Гадая о том, что случилось, мы пошли по верному следу, но все-таки не совсем правильно представили себе картину аварии. И Анатолий Зак, явно получивший инсайд, тоже не совсем точно пересказал сценарий произошедшего. А снабдив иллюстрациями выводы комиссии, мы, наконец, получим полное представление о ходе событий.


    Фото: Дмитрий Ловецкий/Associated Press

    По шагам


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

    Поясняющая картинка еще раз
    image

    Угол между севером и плоскостью стабилизации называется азимутом старта, и на «Восточном» он составляет 168,8°. Перед запуском ракеты на ней включились две системы управления — ракеты-носителя «Союз-2.1б» (далее СУ РН) и разгонного блока «Фрегат» (далее СУ РБ). Ракета должна была лететь курсом 354°, а разгонный блок, после отделения от третьей ступени, — 344°. Обе системы управления в нормальном полете должны обнулить азимут. Ракета выполняет этот маневр с 5 по 22 секунду полета, а разгонный блок — после отделения. У РБ на построение ориентации было меньше минуты, потому что его решили вывести на незамкнутую траекторию, и, если не включить быстро двигатель, то на орбиту бы выйти не получилось. Однако, еще перед стартом системы управления решили поворачивать в разные стороны, чтобы двигаться по кратчайшему пути. СУ РН решила поворачивать против часовой стрелки, потому что в этом случае на азимут 354° ей бы пришлось повернуть на 174°. А разгонному блоку на азимут 344° было выгоднее поворачивать по часовой стрелке на угол 175°.


    Углы показаны примерные для наглядности

    К сожалению, разгонный блок только один раз, еще перед стартом, решил, в какую сторону ему поворачивать, и не обновлял алгоритм своих действий. В результате, когда ракета повернулась на 174 градуса, они добавились к углу, на который собирался повернуть разгонный блок. В момент отделения ошибка составила 363° (174°+175°=349°, очевидно, прибавились не упомянутые маневры ракеты), однако, вместо того, чтобы пересчитать направление движения, разгонный блок пошел по длинному пути. «Фрегат» может вращаться со скоростью до одного градуса в секунду, и за минуту до включения двигателя он успел повернуться на 55 градусов по часовой стрелке. Набранная же скорость вращения привела к тому, что в течение минуты первого включения двигателя блок фактически тормозил, поэтому и упал раньше третьей ступени.


    Углы показаны примерные для наглядности

    Защита от Мерфи


    В случившейся аварии и техника была исправна, и полетное задание было верным. Надеюсь, вам уже стало понятно, что и версия перепутанных космодромов является совершенно несостоятельной. Предположение, что виноват большой азимут старта космодрома «Восточный», тоже неверно. Фактически, это проявление закона Мерфи, как он есть — если у вас есть сектор в 10° (3% полного круга!), в котором системы управления решат разворачиваться в разные стороны, то вы построите космодром с таким азимутом старта, чтобы попасть в эти самые 3%. Отдельно стоит отметить, что, если бы «Фрегат» вывели на низкую орбиту, он бы успел развернуться и на неадекватный угол.

    Так в чем же причина аварии? На этот вопрос отвечают два слова — «интеграционное тестирование». После создания отдельных модулей или систем необходимо обязательно проверить, что они будут нормально работать вместе. Утверждение, что виноваты программисты, разрабатывавшие программное обеспечение «Фрегата» 20 лет назад, тоже неверное — программа прекрасно работала для первоначальных условий, и надеяться, что ее сразу сделали под все возможные космодромы, не стоит.

    Заключение


    В аварии нет ничего хорошего, но все-таки иррационально приятно, что она относится к сложному и распространенному в космической технике типу. Это не залитые лишние тонны топлива из-за бардака в документации и не перепутанные на складе материалы. По такой же причине плохого интеграционного тестирования в атмосфере Марса сгорел аппарат NASA Mars Climate Orbiter, и разрушилась, потеряв управление, европейская Ariane 5 в своем первом полете. Если в нашей космонавтике сложность аварий будет расти и дальше, то это, по крайней мере, будет говорить о том, что с очевидными и простыми проблемами она уже справилась.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 350
    • –15
      «интеграционное тестирование» — может доказать наличие ошибок, но не их отсутствие.
      Когда дело касается таких денег, нужно не лепить программы по кривым алгоритмам. Мы не сверхбогатые США, нет в наших карманах столько денег, чтобы такое оплачивать!
      • +15
        Из того, что в новых условиях алгоритм может работать неадекватно, не следует, что он «кривой». Новые условия могут быть несовместимы с исходными требованиями. При пусках с «Байконура» или «Куру» после отделения азимут был близок к нулю, необходимость пересчитывать его не было, и код работал полностью адекватно.
        • –6
          Ясно. «Никто ни в чем не виноват». Разгонный блок не может понять, в какую сторону довернуть надо, а включив двигатель и увидев по акселерометрам, что вместо разгона пошло торможение, не выключает двигатель для спасения миссии. Отличные алгоритмы (для сжигания денег)!
          Я за такую работу из фирмы ссаными тряпками гоню, причём не за саму ошибку, а именно за баранье «никто не виноват». Может, поэтому у нас крупных провалов не бывает?
          • +4
            А Ваша фирма, простите, что делает? :)

            а включив двигатель и увидев по акселерометрам, что вместо разгона пошло торможение, не выключает двигатель для спасения миссии


            Тут где-то уже обсуждалось, что если поворот в течение минуты не завершён, то выключай-не выключай двигатель — миссию всё равно не спасти.
            • 0
              Ну, справедливости ради, даже если бы направление поворота считалось перед включением двигателей РБ, всё равно возможна ситуация с максимальным углом поворота 180*. Да, в данном случае пару градусов. А если опять космодром где-нить построят… Т.е. получилось, что посчитали 60* (55*) достаточным для любого возможного поворота, а потом врубаем двигатели РБ. Ненадёжно как-то… Ну после драки, конечно, мне легко махать кулаками, но всё же…
              И как они собирались довернуть на 175* при старте, если было меньше минуты на разворот. Всё равно неясно.
              • +1
                Возможно, из каких-то общих соображений 180 градусов быть не может — ведь это по сути означает, что РБ нужно развернуться в противоположную сторону относительно того, куда последнее время перед отделением двигалась ракета. Вроде бы это не очень целесообразная траектория. Но в целом я конечно согласен с тем, что при повторном использовании кода нужно быть очень осторожным с такими штуками. Кстати, это очень похоже на памятную историю с Арианом-5, когда код, идеально работавший на Ариане-5, сломался опять же на других условиях работы (там оказалась скорость, какой на Ариане-4 принципиально не могло быть, что вызвало переполнение переменной).
                • 0
                  Ну по окончании вывода он как раз на 180 и должен повернуть, чтобы сойти с орбиты
                  • –1
                    Почему на 180? Вроде бы он должен немного по тангажу наклониться, чтобы с орбиты «вниз» улететь. Но даже если на 180, по окончании вывода у него уже нет такого жёсткого ограничения по времени (в виде минуты на разворот).
                    • +1
                      Нет, чтобы вниз полететь надо затормозиться.
                      Ограничение по времени было программное, «минуты хватит на всё». Реально до необратимого входа в атмосферу порядка десятка минут было, успел бы и на 357 повернутся.
                  • +5
                    Кстати, это очень похоже на памятную историю с Арианом-5

                    По-моему, это больше похоже на такой случай:

                    11 февраля 2007 года 12 истребителей F-22 не смогли перелететь из США в Японию из-за возникших проблем с навигационным программным обеспечением (предположительно из-за пересечения линии смены дат посреди Тихого океана)
                    • 0

                      А ещё с нулевым меридианом (деление на ноль, все числа nan, полный отказ навигационной системы) и с нулевой широтой (экватором, кто бы мог подумать что синус знак меняет при пересечении оси y, как следствие самолеты попереворачивались и полетели кверху ногами)

                      • +2
                        Нулевая высота ещё была.
                        При полёте над Мёртвым морем.
                        • 0
                          Это да, примерно помню все эти эксцессы… занятное дело, быть разрабом боевой авиации (я не про себя).
                          • 0
                            Там, насколько я помню, она была даже отрицательная. То есть, с точки зрения ПО, самолет бурил тоннель.
                            • 0
                              Насколько я помню — проблема была не в отрицательной, а именно в нулевой. Писали, что деление на ноль случилось.
                              • 0
                                Т.е. летать в Астрахань, Баку, Турменбашы и т.п. заведомо не предполагалось (в Т.З. такие варианты отсутствовали). Хорошо.
                                • +1
                                  может, это была палубная океаническая авиация.
                                  Над Астраханью они бы летали на высоте 10км и было бы все ОК. А то, что им было бы сложно делать там посадку — так может это дополнительный бонус.
                                  • +1
                                    Может. Но более логичное предположение — что никому в командах заказчика и разработчиков не хватило эрудиции вспомнить, что бывают места на планете с открытой поверхностью ниже уровня океана. (Кстати вполне допускаю что и радиовысотомер в таких местах — даже при нормальной, «плюсовой» высоте полёта — может систему загнать в ступор)
                • +6
                  Вот когда какой-то из проектов вашей фирмы возьмут через 20 лет после сдачи, и запустят в условиях, про которые вы и догадываться не могли на момент проектирования, об этом можно будет говорить.
                  А кто виноват тоже обозначено — не была проведена проверка имевшегося алгоритма с новыми условиями запуска. Но это уже вопрос интеграции, а не изначального проектирования\исполнения работы на местах, зоны ответственности разные.
                  • +4
                    Я не говорил, что «никто ни в чем не виноват». Есть очевидная недоработка, которую можно было бы устранить. В то же время, мне не нравится идея ловить кого-нибудь и пускать ему кровь на потеху публике. Потому что ситуации бывают разные. Схватишь за жабры потенциального виновника, а он документами докажет, что годами просил построить стенд для тестирования, а ему на это ресурсов не дали. И так далее.
                    • +3
                      Я за такую работу из фирмы ссаными тряпками гоню, причём не за саму ошибку, а именно за баранье «никто не виноват».

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

                      • +1
                        … увидев по акселерометрам, что вместо разгона пошло торможение ...
                        А как это «увидеть» по одним только акселерометрам? Есть нехорошее подозрение, что для аппарата движение по траектории есть то же самое, что свободное падение, соответственно акселерометры изначально (после выключения ДУ блока И) показывают ноль (с точностью до шума). Тогда с точки зрения акселерометров после включения двигателя «Фрегата» в любом случае идёт разгон. Что-то подсказывает, что «увидеть» можно, только принимая во внимание пространственное положение вектора тяги, а с этим-то как раз и напортачили.

                        Может, поэтому у нас крупных провалов не бывает?
                        Искренне рад за вашу фирму.
                        • +1
                          Тогда с точки зрения акселерометров после включения двигателя «Фрегата» в любом случае идёт разгон.

                          на самом деле нет, акселерометры же не жёстко привинчены к корпусу «Фрегата», а установлены на гиростабилизированной платформе, т. е. измеряют не продольное ускорение, а ускорение в инерциальной системе отсчёта.
                          • +1
                            А, да! И то верно, про платформу-то я и забыл… :-(
                          • 0
                            К акселерометрам просто табличное ускорение свободного падения плюсуют АФАИР, так что реальное ускорение и скорость легко вычисляются. И растёт скорость или нет, легко видно.
                        • +3

                          Мне тоже совершенно не нравится примирительный тон этой статьи. Предположим, никто из подрядчиков не виноват. Типа, как в ТЗ написано, так и бахнули. К пуговицам претензии есть?
                          Но в любом проекте всегда есть генподрядчик — тот кто пилит основные деньги, но и отвечает за результат. Кто отвечает за пуск? Роскосмос и лично мсье Комарофф? Жирный вице-премьер? Где коммюнике ТАСС и розданных люлях?
                          Я вот тоже делаю проекты, и не надо спрашивать о масштабах, это не имеет никакого значения. Я — интегратор и отвечаю за результат. Я подбираю компоненты (хотя частенько мне их предлагают как состоявшийся факт) и я увязываю их в единый комплекс, выполняющий задачу. Самый частый вопрос к поставщикам компонентов: "Ребята, а вы вообще тестируете вашу продукцию?", настолько часто косяки лезут сразу после включения и видны невооружённым осциллографом взглядом. Но ничего, разбираемся, меняем оборудование, заставляем допилить прошивки, корректируем проект. Факапов, подобных этому не было никогда, хотя всяко бывало.
                          По данному инциденту можно сказать что прошли те времена когда для понимания причины глюка надо отстрелять десяток ракет. Для проверки интеграции компнентов в данном случае не надо даже строить дорогостоящий стенд, достаточно обычного настольного компьютера чтобы прогнать циклограмму полёта даже с реальными боркомпьютерами. И этот косяк вылез бы сразу. Да, пришлось бы отложить пуск, может быть и на месяцы, да пришлось бы вложиться в исправление "прошивок", но… дальше сами дополните…
                          По-моему, вместо попыток сгладить ситуацию надо признать уже очевидное: под управлением финансиста и патронажем журналиста Роскосмос скатывается в говно. И с этим надо что-то делать если, конечно, кто-то из начальства заинтересован в развитии русского космоса.

                        • –1
                          Тогда надо оплачивать возможности оттестировать всё от и до на земле. Напомнить вам сколько суперкомпьютеров стоит в США и сколько у нас? Очевидно же что проблема в том что «Фрегат» с «Восточного» никогда до этого не запускали и полностью исключить подобную аварию можно было разве что предварительным прогоном ПО в симуляторе которого нет.
                          • +1
                            Вот, и я об этом хотел написать. Где симулятор полета?
                            В результате, когда ракета повернулась на 174 градуса, они добавились к углу, на который собирался повернуть разгонный блок.
                            Если мы ищем крайнего, то очевидно, что линчевать нужно человека, который рассчитывал полную траекторию полета ракетоносителя и фрегата. Именно он ошибся не учтя, что фрегат начнет работу с уже выполненным поворотом на 174 градуса. А учесть он это мог, если бы знал откуда запускается ракета и как работает ее ПО. Почему на оборудование с огромной стоимость не делается симуляторов — тоже загадка, либо симулятор есть и ошибка как раз-таки и была в этом симуляторе рассчитывающем траекторию. Тогда виновен создатель симулятора.

                            Фраза в статье не верна:
                            Так в чем же причина аварии? На этот вопрос отвечают два слова — «интеграционное тестирование».
                            На самом деле — была ошибка в расчете траектории полета, и Мерфи здесь не причем :) А вот причина ошибки траектории имеет как минимум 2 возможные причины описанные выше.
                            • +2
                              ракетоносителя

                              ракеты-носителя.
                              • +2
                                Именно он ошибся не учтя, что фрегат начнет работу с уже выполненным поворотом на 174 градуса

                                Это-то как раз учтено. Не учтено, что РН и Фрегат захотят поворачиваться в разные стороны.
                                • 0
                                  Дык,
                                  Если мы ищем крайнего, то очевидно, что линчевать нужно человека, который рассчитывал полную траекторию полета ракетоносителя и фрегата. Именно он ошибся не учтя, что фрегат начнет работу с уже выполненным поворотом на 174 градуса. А учесть он это мог, если бы знал откуда запускается ракета и как работает ее ПО.
                                  Не противоречит утверждению «Не учтено, что РН и Фрегат захотят поворачиваться в разные стороны». Так как если бы тот, кто рассчитывал траекторию, знал как работает Фрегат и как работает РН, то очевидно, он бы увидел, что при повороте РН на 174 градуса, Фригату придется выполнить заведомо обреченный поворот в 363 градуса.

                                  По факту, реальная проблема при расчете траектории — в незнании как работает ПО + в отсутствии или не корректной работе симулятора. Иначе можно было бы задать курсы РН и РБ при которых бы они поворачивались в одну сторону и успешно вышли на орбиту (без какого-либо вмешательства в работу ПО РН и РБ).
                                  • 0
                                    Не противоречит утверждению «Не учтено, что РН и Фрегат захотят поворачиваться в разные стороны». Так как если бы тот, кто рассчитывал траекторию, знал как работает Фрегат и как работает РН, то очевидно, он бы увидел, что при повороте РН на 174 градуса, Фригату придется выполнить заведомо обреченный поворот в 363 градуса.


                                    Всё же не совсем так. Сами траектории баллистиками просчитаны хорошо, и эти расчёты учитывают всё, что нужно, в том числе и поворот на 174 градуса — ведь по факту оказалось, что Фрегату после отделения нужно двоернуть всего на 3 градуса. Но в силу того, что бортовой алгоритм не учёл врашение РН и РБ в разные стороны, 3 градуса превратились в 363.
                                    • +1
                                      Сами траектории баллистиками просчитаны хорошо
                                      :) Ну как же они могут быть рассчитаны хорошо, если не учитывают реальный алгоритм поворота Фрегата?
                                      Ошибка именно в расчете траектории, если бы тот, кто рассчитывал, знал как работает Фрегат, он бы не выбрал курсы РН и РБ при которых они начнут поворачиваться в разные стороны и завалят миссию. Повторюсь: он бы задап курсы РН и РБ при которых бы они поворачивались в одну сторону и успешно вышли на орбиту (без какого-либо вмешательства в работу ПО РН и РБ).

                                      ведь по факту оказалось, что Фрегату после отделения нужно двоернуть всего на 3 градуса
                                      Не согласен.

                                      Курсы РН и Фрегата при старте определяет тот, кто рассчитывает траекторию. Именно он и ошибся. Согласитесь, для того чтобы построить правильную траекторию нужно знать как работают устройства, которые выполняют маневры, если вы не знаете как устройство выполняет заданный маневр, вы не сможете построить правильную траекторию. Получается он не знал, как работает Фрегат, и что при выходе на курс, выбранный РН маневр поворота на 174 градуса окажется фатальным для маневра выбранного Фрегатом.

                                      Тут проблема в том, что для такого дорогостоящего оборудование не проводится симуляция. Была бы симуляция, увидели бы этот косяк и подправили траекторию. Ведь проблема не в алгоритме, у РН и РБ автономный алгоритм работы (это разные устройства, РБ не может знать, что делается в РН), то что маневр Фрегата рассчитывается на земле, а не динамически в полете наверно не прихоть разработчика, а какое-то аппаратное или другое ограничение (не думаю, что в ракетостроении работают глупые люди).
                                      Хотя есть вариант, что команды на маневр рассчитываются заранее в общей программе и потом просто копируются на отработку в РН и РБ, тогда да — ошибка действительно в алгоритме этой общей программы расчета, которая задала этим устройствам разные направления вращения.

                                      Итого:

                                      Если РН и РБ это автономные устройства, каждое из которых работает по своей программе, которой задается курс назначения для которого она рассчитывает маневр — то виноват тот, кто рассчитывал траектории.

                                      Если маневры для РН и РБ рассчитываются за ранее в общей программе, и в устройства копируются не заданные курсы, а уже необходимые маневры — то виноват программист делавший программу. Но тут может быть проблема с тем, что программа была предназначена для запуска с другого космодрома и там всегда работала корректно… тогда получается виновен во всем человек, принявший решение использовать программу с другого космодрома без симуляции ее работы для условий нового космодрома.

                                      • +3
                                        виноват, виновен, виновен, виноват

                                        Может эти все люди, которые принимали решения. уже давно на пенсии. А остались только люди, которые принимают НЕрешения — продлить, оставить в силе эти решения?

                                        Вот я вам еще вариант подкину — все было проверено и промоделировано, только симулятор несовсем точный — не предусматривал, что кто-то повернет ракету на 360.

                                        все совпадения - случайны, все ситуации выдуманы
                                        Т.е. проектировал разработчик РБФ, и там сделал, что все работает идеально для углов от -180 до 180. «В самом деле», думает разработчик, «зачем накручивать круги по орбите? Куда бы не был твой следующий курс, его угол всегда будет по кратчайшей дуге от текущего», — провозглашает он (картина «Папа Карло держит в руках Буратино»). И загодя в документации прописывает в ограничения угловой скорости 1 градус в секунду (ибо плеск топлива в баках, уход гироплатвормы, да мало ли что). А ориентацию она экономно считает после окончания маневра (или до старта ракеты), когда времени вагон, а потом только отслеживает положение по своей гироплатформе (добавляет-вычитает углы из рассчитанного, если что-то ее немного крутит. Будь-то ракета по своей траектории в полете, или диспенсер спутника на орбите).
                                        Проходят года, РБФ отлично летает, спасает огрехи ракет-носителей, и он торжественно уходит на пенсию.

                                        И вот, новый запуск с нового космодрома. Все внимательно читают документацию и жмут кнопки калькуляторов.
                                        «Ага! 1 секунда — 1 градус», торжественно говорят ракетчики.
                                        «А когда он отделится от ракеты — у него всего 60 секунд до атмосферы» — рассчитывают баллистики.
                                        «Хорошо», — говорят ракетчики: «мы выведем его не более чем на 10 градусов отклонения по курсу. Ну на 20 градусов вбок, в худшем случае».
                                        «Ладно», соглашается программист РБФ, бережно выставляя руками уставку на первое срабатывание маршевого двигателя в 55 секунд. «Даже если эти артиллеристы на 40 градусов промахнутся, наш надежный РБФ будет иметь запас в 15 секунд и всех спасет», — втайне думает он.
                                        Все документы подписаны, ключ на старт.

                                        Разгонный блок ждет свою гироплатформу, после чего обсчитывает надобный курс на -175 (условно) градусов и готовится не пропустить свой выход.
                                        Ракета стартует, делает поворот на свои 175 (условно) градусов, и прилетает в точку прощания с РБФ, с идеальным с их точки зрения курсом — даже меньше чем 10!

                                        И только пассажиры самолетов над северной атлантикой полюбовались приветом всем от прерванной «бочки» РБФ…
                                        • +4
                                          А, кажется, я понял Вашу мысль. Тут вопрос, что первично: траектория или алгоритмы. Полагаю, что первична траектория: баллистики говорят, «куда» (в каком направлении, с какой скоростью и ускорением) надо лететь, а алгоритмисты должны реализовать соответствующее управление ракетой и РБ. Следующий пуск, допустим, осуществляется немного в других условиях: скажем, спутники теперь надо вывести на другую орбиту. Значит, опять первое слово за баллистиками, а алгоритмисты теперь должны подправить свой алгоритм, чтобы он решал и эту задачу. Теперь третий пуск: на этот раз с другого космодрома. И опять: баллистики задают требуемую траекторию, алгоритмисты допиливают бортовые программы.

                                          Разумеется, баллистикам не всё позволено: траектория, которую они определяют, должна быть «проходимой» — т. е. тяги двигателей, запасов топлива, прочности конструкции и пр. должно хватить на все линейные и угловые ускорения. Но если траектория в принципе «проходима» — дальше это уже дело алгоритмистов правильно реализовать управление. Я считаю, что в этом вопросе баллистики не должны подстраиваться под особенности работы алгоритма без крайней необходимости. Тем более, что алгоритм может быть довольно сложным и запутанным, с большим числом ветвей. Я видел эти алгоритмы, там сам чёрт ногу сломит :) Совершенно не дело баллистиков в них разбираться.
                                          • +3
                                            Я считаю, что в этом вопросе баллистики не должны подстраиваться под особенности работы алгоритма без крайней необходимости.

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

                                            Допустим, вы ответственны за развитие космической отрасли, что можно сделать, чтоб это было именно развитие?
                                            — Отменить формулу Циолковского? Увы, не получится.
                                            — Изобрести новое топливо и двигатель к нему? Это, конечно, нужно делать, но до серийного производства пройдут годы, если не десятилетия, и стоить будет миллиарды.
                                            — IT? А вот в IT у нас с 70-х (полёты на Луну) прогресс просто колоссальный!

                                            Вертикально посадить на баржу отработавшую ступень? Для человека ужас-ужас, а бортовой компьютер щёлкает такие задачи как семечки, даже с учётом ветра и дрейфа плавучей платформы.

                                            Электронщики не могут надёжно защитить старый процессор от космических лучей? Так благодаря успехам микроэлектроники мы в тот же объём и энергопотребление уместим куб 3х3х3 из 27 микрокомпьютеров, которые сообща выдадут правильную команду при полном отказе половины из них. За последнее десятилетие человечество сделало огромный скачок в алгоритмах распределённых вычислений и установлении консенсуса при постоянно сбоящем железе.

                                            Мегабайты и мегагерцы на ракете растут медленнее чем в потребительском секторе? Да, это так, но для наземеных испытаний можно купить кластер серверов с толстыми графическими карточками и за смешные по космическим меркам деньги получить терафлопсы для обработки данных испытаний и для численного моделирования.

                                            Программисты живут в идеальном мире без физических ограничений, где, в отличии от производства двигателей, половину материала для работы можно за десять минут склонировать с GitHub. В случае неудачи программист просто откатывается к предыдущему коммиту, в то время как другим нужно заново строить разрушенный взрывом стенд. Было бы крайне глупо не использовать это преимущество и заставлять баллистиков подстраиваться под софт.
                                            • 0
                                              Да! Всё верно :)
                                              • 0
                                                Такая ода вычислительным машинам, я аж прослезился :)
                                                Так всё верно, но посмотреть прогресс методов управления ракет — такое чувство, что он нулевой со времён Спейс Шаттла.
                                                Для Шаттлов разработали алгоритм, который решал задачу выхода на заданную орбиту с квазиоптимальным управлением, и всё это делалось полуаналитически, но при этом довольно точно. Подробнее алгоритм написан в книге «Баллистика и наведение летательных аппаратов» Сихарулидзе (доступна с сайта РФФИ) в районе 300 страницы. Но ограничение — профиль тяги со временем должен быть известен, т.е. времена включения-выключения двигателей жёстко зафиксированы.
                                                Современные работы смотрю — предлагают делать на борту прямое численное решение задачи оптимизации по 32+ переменным. Получается правильно, но сложно, в десятки раз дольше шаттловской схемы управления и без такой физико-математической красоты.
                                                С атмосферным участком ещё понятно, но вот оптимизировать промежуток времени между, скажем, отделением разгонного блока и его первым импульсом неужели нельзя как-то попроще на лету?
                                                • 0
                                                  А можете подсказать оные работы?

                                                  С атмосферным участком ещё понятно, но вот оптимизировать промежуток времени между, скажем, отделением разгонного блока и его первым импульсом неужели нельзя как-то попроще на лету?


                                                  Представьте себе картину: Вы разгонник, вы только что отделились от РН и понятие не имеете где вы находитесь.

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

                                                  Сколько ждем? Для точного определения желательно виток, ну ладно, хотя бы треть.
                                                  Что, 12 секунд? А почему? Как незамкнутая орбита? А, чтобы тонну топлива с собой не нести для лишней борьбы с атмосферой.

                                                  Так, постойте, если мы на незамкнутой орбите мне надо срочно поднимать перигей. Где это делать всего лучше — в апогее. Так, где у нас апогей, да он уже здесь, все включаемся!

                                                  Вух, подняли перигей. Так народ, а мы сейчас вообще где, нам надо определяться. Так, стойте, почему у нас аргумент перигея далек от целевого?! А, вектора были с большой ошибкой, понятно.

                                                  Ну ничего, сейчас все исправим. Так, где надо включаться — А вот тут, на 150 секунд раньше чем предполагали эти тупые человеки. Все народ, включаемся, полетели.

                                                  А в это время на земле тупые человеки изо всех сил пытаются обнаружить и войти в контакт с внеземным разумом, который они сами и запустили.
                                          • +3
                                            то что маневр Фрегата рассчитывается на земле

                                            Всё-таки нет: манёвр (конкретный угол поворота) рассчитывается уже после разделения с учётом фактически имевших место манёвров ракеты. На земле лишь принимается условное направление вращения: по сути мы лишь решаем, направление в каком вращении считать положительным (если бы РБ насчитал, что нужно повернуться на минус 5 градусов по часовой стрелке, то он был повернулся на 5 градусов против часовой).

                                            То есть ошибка вот в чём: по умолчанию полагалось, что РН и РБ сделают эти большие развороты (примерно на 180 градусов) в одну и тут же сторону. Тогда из исходных 174 вычтут угол поворота ракеты (примерно 180), получат небольшой угол в несколько градусов, а его знак покажет, куда надо крутиться. Но РН неожиданно для РБ развернулась (в его обозначениях) на -180 градусов! И РБ рассчитал, что ему надо повернуться на 180-(-180)=360 (примерно; на самом деле вышло 363).

                                            Кто же тут виноват? Сложный вопрос, и ответ на него, как я вижу, зависит от согласований между НПЦАП и НПОА. Допустим, если между двумя фирмами когда-то давно раз и навсегда было согласовано, что все повороты всегда делаются по часовой стрелке и на Байконуре так всегда и было, а на Восточном алгоритм НПОА развернул «Союз» против часовой, то это вина НПОА. Тогда моделирование, которое делалось в НПЦАП, не помогло бы вскрыть проблему, так как моделирование, исходя из этих договорённостей, повернуло бы РН по часовой, а в настоящем полёте она пошла разворачиваться против часовой.

                                            Или другой вариант: никакого согласования направлений вращения нет, согласуется лишь конечная ориентация, в которой РН и РБ будут перед отделением РБ. Тогда это вина алгоритмистов НПЦАП, которые полагали направления вращения совпадающими: для Байконура это всегда было так, и можно было исходить из этого предположения, а вот на Восточном уже нельзя. Это как раз то, о чём Вы пишете:
                                            Но тут может быть проблема с тем, что программа была предназначена для запуска с другого космодрома и там всегда работала корректно… тогда получается виновен во всем человек, принявший решение использовать программу с другого космодрома без симуляции ее работы для условий нового космодрома.

                                            Какое-то моделирование полёта, безусловно, в НПЦАП делалось. Но в если оно недостаточно корректно и реалистично отображает манёвры носителя, то эту проблему на моделировании могли и не увидеть.
                                            • 0
                                              1) Я не уверен что вообще рассчитывается угол поворота, а не поворот прекращается по достижении нужной ориентации.
                                              Т.е. определили в какую сторону поворачиваться меньше и запомнили результат.
                                              2) На Байконуре и в Плесецке ракета вообще не поворачивается, она сразу в нужной ориентации.
                                              • 0
                                                1) Это хороший вопрос, он тут уже всплывал. В посте сказано, что РБ стал врашаться в нужную сторону, только вместо 3 градусов пошёл на 363. Если бы он отслеживал ориентацию, а не угол поворота, то остановился бы после поворота на 3 градуса, и всё было бы ок. Из этого я делаю вывод, что в данном случае ориентация определялась датчиками угловой скорости, а не угла. Давайте попробуем уточнить у автора поста. lozga, Вы не могли бы нас проконсультировать: верно ли, что в данном случае ориентация РБ определялась ДУС и если да, то чем это предпочтительнее датчиков углов платформы?

                                                2) Ок, спасибо за уточнение. Это все ракеты так, или только «Союз»?
                                                • 0
                                                  1) Насчёт на 363 или 357 — показания разнятся… телеметрии тут никто не видел, а судить по словам начальников в новостях — дело дохлое.
                                                  2) Все ракеты в 50х так делали… Протон уже не крутят, он сам умеет.
                                                  • 0
                                                    Мне кажется, что поворот вызван сочетанием используемой инерциальной системы координат и того, что блок только перед стартом определял, в какую сторону вращаться. Из-за этого поворот по строительной оси крена воспринялся как поворот по азимуту, и СУ РБ, который запрограммирован обнулять азимут, «взвелся» как пружина в часах. Возможно, еще упущение в системе подсчета, когда не вычли 360 градусов из поворота на 363 (потому что в нормальных условиях это не нужно).
                                                    • 0
                                                      Возможно, еще упущение в системе подсчета, когда не вычли 360 градусов из поворота на 363

                                                      Ниже ведь было уже упомянуто:

                                                      А в случае 357 что было бы? Поворот на 357…
                                                • +1
                                                  Собственно, о чем и речь. Нам недостаточно входной информации о том как и в каких модулях работают алгоритмы и кто и как рассчитывает траекторию, поэтому я и привел 3 варианта…

                                                  То есть ошибка вот в чём: по умолчанию полагалось, что РН и РБ сделают эти большие развороты (примерно на 180 градусов) в одну и тут же сторону.
                                                  Верно, вопрос только кем и почему так предполагалось по умолчанию? Ведь именно это предположение и не соответствовало реальности.

                                                  Какое-то моделирование полёта, безусловно, в НПЦАП делалось. Но в если оно недостаточно корректно и реалистично отображает манёвры носителя, то эту проблему на моделировании могли и не увидеть.
                                                  1. Я все-таки отмету вариант «некомпетентности» наших ракетчиков и тоже 100% буду считать, что у них обязательно должна быть программа для моделирования и визуализации общей траектории движения всех модулей от старта до выхода на арбиту.
                                                  2. Второе утверждение тоже возьмем за 100% — это то, что «абстрактные» траектории сначала рассчитываются балистиками, а затем проверяются моделированием «конкретных траекторий» с отработкой уже конкретных маневров модулями.

                                                  А если так, то получается, что именно эта программа и сделала то самое ошибочное предположение дав зеленый свет аварийному пуску. Почему? Потому что в ней был забит алгоритм отличный от того алгоритма который реально прописан в модулях. Тогда тот, кто это допустил и есть виновник.

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

                                                  Собственно об этом и был мой самый первый комментарий:
                                                  Где симулятор полета? :)
                                                  • 0
                                                    Верно, вопрос только кем и почему так предполагалось по умолчанию? Ведь именно это предположение и не соответствовало реальности.

                                                    Очевидно, ноги растут со старых стартовых столов, где ракету вращали на земле и ей не нужно было совершать разворот в воздухе.
                                                    • 0
                                                      Как понимаю, изначально так как компы были весьма тормозные — запрограммировали делать расчёт очередного манёвра не перед его началом, а по завершении предыдущего (а первый соответственно сразу по включении на стартовом столе)
                                                      Ну а дальше «работает — не трогай»
                                                  • +2
                                                    :) Ну как же они могут быть рассчитаны хорошо, если не учитывают реальный алгоритм поворота Фрегата?
                                                    Ошибка именно в расчете траектории, если бы тот, кто рассчитывал, знал как работает Фрегат, он бы не выбрал курсы РН и РБ при которых они начнут поворачиваться в разные стороны и завалят миссию. Повторюсь: он бы задап курсы РН и РБ при которых бы они поворачивались в одну сторону и успешно вышли на орбиту (без какого-либо вмешательства в работу ПО РН и РБ).

                                                    Знаете, меня это всегда умиляет. Всегда к нам, к баллистикам приходят со словами:
                                                    «Мы тут нахреначили железку, а ты пойди учти все наши косяки и баги». Начинаешь разбираться: время включения двигателя +- лапать, длительность +- лапать, сила тяги +- пол-лапатя.

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

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

                                                    Занавес.

                                                    • 0
                                                      О, у меня вот в связи с методами терминального управления вопрос к человеку, работающему в этой области.

                                                      Из-за всех этих ± пол-лаптя имеет наведение с закрытым контуром реальные преимущества перед наведением с открытым контуром на атмосферном участке?
                                                      Конкретнее: терминальное наведение может так заоптимизировать атмосферный участок под номинальные тягу и УИ верхней ступени, что при небольшом отклонении их от номинала потеря массы будет такая же, как и потеря массы от использования открытого контура управления?
                                                      • +1
                                                        Увы, но для меня полет РН — это не моя специфика. Моя партия начинается с момента отделения РБ и самого спутника.

                                                        Могу сказать, что полетное задание РН разное в зависимости от месяца, т.к. в верхней атмосфере есть течения, зависящие от времени года. Знаю, что Союз имеет замкнутый контур управления.

                                                        Тут еще такой момент: РН должна вывести спутник в заданную точку в предсказанный момент времени, иначе мы можем не войти в связь. Так что, я думаю, замкнутый контур больше для точности вывкдения, чем для оптимизации по топливу.
                                            • +1
                                              Приходит к человеку начальник и говорит: надо рассчитать траекторию. А у сотрудника только блокнот с ручкой и математический справочник. Компьютера нет и не будет, софта нет и не будет. Ну рассчитал как смог.
                                              Кто виноват?
                                              • 0
                                                Кто виноват?

                                                В таких условиях вообще никто — то, что хоть так летает, уже чудо.
                                                • +1
                                                  блокнот
                                                  • +1
                                                    Начальник, как раз потому что
                                                    Компьютера нет и не будет, софта нет и не будет.
                                                  • –1
                                                    Симуляторов орбитальных космических полётов нет? Opensource симуляторов не помню (поправьте если не прав), но есть вполне серьёзный Orbiter, в последней версии разделенный на сервер симулятора и графический клиент. Так что прогнать на сервере моделирование запуска Союза и Фрегата с Восточного было вполне возможно.
                                                    • 0
                                                      Более того, суперкомеьютеров он не требует, рабочей станции вполне хватает.

                                                      С Orbiter я не работал, но VirSat гонял довольно активно на ноутбуке пару лет назад. Так что проблема скорее организационная, на мой взгляд. Если энтузиасты и студенты, полгода слушавшие спецкурс про спутники, могут промоделить полёт — уверен, в «Энергии» такие люди тоже есть.
                                                      • +6
                                                        Суперкомпьютер конечно не требуется, но одним Orbiter'ом дело не ограничивается. Orbiter это только внешнее окружение, дающее влияние атмосферы, гравитации и прочих сил.
                                                        Чтоб провести полноценную симуляцию тех алгоритмов, что написаны для Союза и Фрегата, нужно написать модели обеих систем со всеми датчиками, двигателями и прочим. В идеале они должны уметь загружать и исполнять непосредственно прошивки этих блоков. Эта задача несколько более масштабная чем просто ракету в Orbeter'е запустить. Но в целом подъемная и нужна, особенно с учетом стоимости ошибок.
                                                        • 0

                                                          При стоимости проектов и самих блоков в "охрениард денег", стоимость работ по созданию симулятора ничтожно мала и окупилась бы при первом же старте. Хотя, сомневаюсь, что у обеих систем (РБ И РН) отсутствуют свои симуляторы — никто не будет сразу на чистый лист прошивку писать. Просто надо было эти симуляторы "подружить" между собой и сделать пробный запуск на объединенном симуляторе.

                                                  • +1

                                                    И что вы собрались просчитывать на суперкомпьютер? Это не сворачиваемость белков считать. Симулятор вполне могли бы осилить, но никому там это не надо — даже камеры на ракету Союз не смогли установить, европейцы подсобили.

                                                  • 0
                                                    Мы не сверхбогатые США, нет в наших карманах столько денег, чтобы такое оплачивать!

                                                    Вообще-то есть, только не в наших с вами карманах, а из наших карманов.
                                                    • +1
                                                      Когда дело касается таких денег, нужно не лепить программы по кривым алгоритмам. Мы не сверхбогатые США, нет в наших карманах столько денег, чтобы такое оплачивать!

                                                      Вы сейчас сказали классическим анекдотом про армию: «не высыпаетесь? Это не проблема. Спите быстрее».
                                                      Когда я был маленьким, а Windows — глючным, у меня было впечатление, что я самый сильный на планете программист. И когда глюки винды (а по факту — мои мега кривые руки), совсем доставали, одолевала жуткая злость на Билли Гейтса: «Да я, да я щас все перепишу! Да где только таких тупых программистов берут?».
                                                      Каково же было мое удивление, когда я вырос и сам стал писать программы. Как оказалось, мне до уровня «кривоглючной» винды как до Китая на четвереньках.

                                                      Это я все к чему? Сказать «не ошибайся» — мало. Это не поможет. А вот что поможет — уже написали. Интеграционное тестирование.
                                                    • +5
                                                      А можете не вдаваясь в подробности рассказать зачем вообще ракете вращаться? Она не симметричная, в том смысле что какая разница каким боком лететь вверх, даже если не совсем вверх?
                                                      • +6
                                                        Теоретически, по крену ракета может лететь в любом положении, и твердотельная гиростабилизированная платформа (в которой уже не осталось гироскопов в рамках) сможет это отрабатывать. По тангажу и рысканию так не получится, конечно, потому что улетим не туда. В то же время в реальности углом крена управляют — может быть по традиции, когда был диапазон допустимых углов поворота рамок гироскопов, а может быть потому, что у полностью детерминированного полета будет меньше неожиданностей, чем если лететь со случайным углом крена.
                                                        • 0
                                                          может быть по традиции, когда был диапазон допустимых углов поворота рамок гироскопов


                                                          А сейчас его разве нет? ИНС-то до сих пор платформенные.
                                                          • 0
                                                            На Союзах вроде как уже используют Неортогональные блоки ВОГ, но я не знаю в качестве основного измерителя угловой скорости или где-то в резервном канале. В Прогрессе не знаю как дела обстоят.
                                                            Ну и непонятно почему алгоритмы не на кватернионах (параметрах Родрига-Гамильтона)?
                                                            А может и на кватернионах, но РБ не запрограммирован был перед отделением пересчитать свою ориентацию и кратчайшую дугу.
                                                            • +1
                                                              Вроде на кватернионах, но это дело не спасает. Проблема-то не в математическом вырождении углов, а в том, как Вы справедливо пишете, что РБ не запрограммирован был перед отделением пересчитать кратчайшую дугу (ориентацию-то он знал).
                                                            • +1
                                                              Я в общем случае отвечал, и для других ракет.
                                                              • 0
                                                                А какие ракеты сейчас на БИНС летают?
                                                                • +1
                                                                  Ну, например, на Falcon 9 стоит LN-200 с лазерными гироскопами и MEMS-акселерометрами.
                                                          • 0
                                                            Не думаю, что совсем в любом. Двигатели всё-таки расположены весьма характерным образом и диапазон отклонения сопел скорее всего не равный в разные стороны. Но с дискретностью в 90 гр., скорее всего, вполне можно.
                                                          • +5
                                                            Просто ракета, разработанная в 50х годах прошлого века, умеет летать только в таком положении. А если переделывать — то проще новую сделать, столько там всякого ещё что надо.
                                                            На Байконуре и Плесецке её просто крутят вместе со стартовым столом, а тут научили поворачиваться после старта самостоятельно.
                                                            • 0
                                                              Союз-2 наверное и на Байконуре и Плесецке не поворачивают со столом, нет?
                                                              • +2
                                                                Смотрю на фото запусков — поворачивают.
                                                              • +2
                                                                Эээм, я немножко был на Байконуре, не заметил там «вращающихся» столов.
                                                                А ракеты любые всегда так летают, потому что (если сильно упрощать) выход на орбиту — это просто поворот по тангажу. Всегда. Чтобы изменять наклонение орбиты к этому повороту по тангажу добавляют еще один простой маневр — вращение на нужное кол-во градусов. И все. Два простейших маневра. А не «умеют летать только так». Шаттлы так летали, сатурны так летали, все так летают, потому что так проще и надежнее.
                                                                • +5
                                                                  Есть. И именно у семерки. При ее разработке в середине 50х, чтобы облегчить систему управления решили поворачивать всю ракету со столом по направлению азимута стрельбы. Тогда СУ нужно было удерживать заданное направления, отрабатывая тангаж.

                                                                  Причем хоть решение отчасти и красивое, но вскоре и получили недостатки метода. Пилюгин, при массе 8К71 в 270 тонн рассчитал СК на стартовую массу в 330 тонн. Но модификации «Семерки» быстро этот запас выработали.
                                                                  • +1
                                                                    Кольцо имеет 18 метров в диаметре, а не видно оно потому-что им со времён снятия с дежурства Р-7 не пользуются, и по-моему уже и не проверяют (где-то видел фотографию где оно почти заросло, но найти не могу). А ненужным оно стало потому-что с переходом на цифровую систему управления ракета-носители выполняют разворот самостоятельно, так что пишут что на «Восточном» от поворотного кольца отказались.
                                                                    • +5
                                                                      Смотрим внимательно этот ролик на 20х секундах :)

                                                                      youtu.be/6oadjbVV0uM?t=17s

                                                                      А в Куру и Восточном действительно отказались :)
                                                                      • 0
                                                                        окей, как-то пропустил этот момент вообще. Спасибо.
                                                                • +5
                                                                  Просто не осталось программистов, полностью разбирающихся в старом коде и знающих, что, зачем и в каком месте сделано. Подозреваю, что он уже поддерживается, как шайтан машина-сюда кидаешь барана, отсюда выходят 4 палки колбасы. Что внутри-хз. Распространённая проблема с легаси кодом. Это в порядке предположения.
                                                                  • +1
                                                                    Распространённая проблема с легаси кодом.

                                                                    Опыт Вояджера, Кассини, марсианских роверов, продление эксплуатаци Хаббла, показывают, что умение успешно работать со старым софтом на древнем «железе» может в разы повысить длительность и научную ценность космических проектов. В этом контексте вывод спутника на орбиту это еще идеальный случай в тепличных условиях — межпланетные исследования по определению длятся годами, если не десятилетиями.

                                                                    Если Роскосмос не развивает культуру программирования, тестирования и поддержки «легаси» систем, и не считает её критически важной для работы, то это огромный организационный косяк.

                                                                  • +1
                                                                    Все ракеты так летают. У каждой ракеты есть базовая плоскость, плоскость тангажа. Как правило это связано с расположением двигателей, либо с симметрией ракеты, и с моментами, чтобы ею проще было управлять. Если это односопловая и одноблочная ракета, то такая плоскость выбирается либо через опорные места(4 опоры), либо между ними. Так удобнее. Честно говоря не знаю ракет, у которых эта плоскость меняется от старта к старту в зависимости от азимута пуска.
                                                                    Если это многоблочная и многосопловая компоновка, то выбирается плоскость между блоками или так, чтобы проще было создавать момент для тангажа при отклонении сопел ДУ(Зенит, Ангара).
                                                                    Если посмотреть на Фалкон-9 который был самый первый, еще с квадратным расположением движков, так он вообще чуть оторвавшись начинает вращение — www.youtube.com/watch?v=NREJEZ5eluk

                                                                    • 0
                                                                      угу — но тут поворот по ощущениям не превышает 45 градусов.
                                                                      • 0
                                                                        Это другой вопрос) Новые флаконы вообще особо не вращаются. Но, вы вспомните эпический Roll-maneuver Спейс Шаттла. Можно было ведь тупо платформу другой стороной ставить, однако в итоге конструкторские решения имели приоритет, а плоскость поворачивали таким вот красивым креном.
                                                                    • +1
                                                                      На «Союзе-2.1б» уже цифровая система управления, ее крутить не надо. В то же время, там, где есть поворотные устройства, их используют, почему бы не упростить задачу СУ?
                                                                  • +7
                                                                    Добрый день. Я в космонтавтике «профан», но интересуюсь, ибо интересно… Вот поясните — разве перед запусками не проводят эмуляцию старта на компьютере (или что-то подобное) чтобы проверить как будет проходить старт в каждую секунду времени?
                                                                    • +6
                                                                      Если бы была такая полная эмуляция в данном случае, проблему бы там и обнаружили. На устройства и компоненты есть программы тестирования, и для разных ракет и блоков они бывают разные. Там есть отдельные интересные ситуации, например, когда в блоке два трубопровода, тестовый и реальный. В тестовом трубопроводе все ОК, а реальный не работает нормально. Из-за этого была авария «Зенита», когда бортовой источник мощности отказал. А реальные трубопроводы в монтажно-испытательном комплексе не проверишь, потому что нужен будет фактически стенд для запуска двигателей.
                                                                      • 0
                                                                        разве есть гарантии, что эмулятор отработает аналогично аппаратному решению? или там используется та же программа?
                                                                        • 0
                                                                          Идея эмулятора вроде бы в этом и заключается, что софт один и тот же, разве нет?
                                                                          • +2
                                                                            Да, наверное правильнее сказать «симулятор», а не «эмулятор». Имелся в виду стенд с реальными СУ, на которые подавались бы виртуальные параметры полета.
                                                                        • +1
                                                                          Возможно, при наличном тестировании такое совпадение ускользнуло. ИМХО, не истина.
                                                                        • +1
                                                                          Из этого описания следует, что предыдущие старты — счастливая случайность.
                                                                          • +5
                                                                            Некорректное утверждение:
                                                                            программа прекрасно работала для первоначальных условий, и надеяться, что ее сразу сделали под все возможные космодромы, не стоит

                                                                            Аналогия примерно следующая, несколько грубая. Есть программа написанная 10 лет назад под WindowsXP, которая отлично работала. Но в Windows 10 нормально работать она перестала, так как, допустим, уже нет каких-то совсем уж древних библиотек от Windows 98, порезана политика прав доступа и всё такое. Это не означает, что разработчики криворукие кодеры, программа плохая и вся её предыдущая работа — случайность. Программа отлично работает в том окружении, для которого создавалась, тестировалась и отлаживалась, но изменились внешние условия, которые в изначальном ТЗ на программу были несколько другие.
                                                                            • +3
                                                                              Если система управления что-то решила час назад, а потом вдруг начала действовать никак не обращая внимание на возможные изменения условий — то что-то глубоко не так в консерватории. Ну а аналогия СУ сложным технологическим объектом с хомячковой ОС сама по себе опускает первую ниже плинтуса ;)
                                                                              • +2
                                                                                На хомячковой ОС с некоторыми подпилками вполне успешно работает софт АСУТП. Не стоит совсем уж принижать ей)

                                                                                Возможно условия работы разгонно блока должна была обеспечить работа предыдущей системы до него. И именно этим руководствовались разработчики блока. Это знаете, сейчас всем всё просто и понятно и возникает резонный вопрос типа «Да как такое можно не предусмотреть, ведь это даже мне очевидно, а там сидят спецы космической сферы». Когда пилишь сложную систему порой некоторые простые вещи, действительно могут упуститься. Потом сидишь и думашь: «Как я мог этого не учёсть?» Для этого и нужно моделирование и стыковочные испытания. Проблема в том, что не всегда удаётся построить полную модель или провести полноценные проверки и вот такие вот косяки вылазят уже в эксплуатации. Хотя, лично мне, удивительно, что в 2017 году нет общей модели поведения системы.
                                                                                • +6
                                                                                  Какие все умные у себя дома на диване-то.
                                                                                  А у разгонного блока, между прочим, после отделения всего минута на всё определение ориентации, расчёт поворота и сам поворот. Оглядеться, чтобы понять, где он, он тоже не может, из органов чувств датчик угловой скорости, три акселерометра, часы и модель гравитационного поля Земли. И процессор с частотой 100 МГц.
                                                                                  Конечно, лучше всё решить час назад, когда времени навалом, а после отделения действовать быстро и решительно, на раздумья там просто нет времени.
                                                                                  • 0
                                                                                    РБ вполне мог получить от ракеты-носителя в момент отделения точные текущие параметры ориентации и пересчитать необходимые углы.
                                                                                    • +1
                                                                                      На самом деле нет, РН ничего не передаёт РБ, если не ошибаюсь. Но свою ориентацию РБ и сам знает.
                                                                                    • +4
                                                                                      Ну, ориентацию, скорость и местоположение к моменту отделения РБ уже знает, так как непрерывно интегрирует уравнения навигации с самого старта. А расчёт поворота — вроде там не настолько трудоёмкие вычисления, чтобы занимать много времени. У Бисера-6 среднее быстродействие 600 тысяч операций в секунду :)
                                                                                      • +1
                                                                                        Вы немного лукавите. Определить на какой именно угол осталось «довернуть» он как-то умудряется прямо на ходу. А вот выбрать направление нужно обязательно заранее на земле?
                                                                                        Я могу предположить, что выбор направления поворота «на старте» является конструктивной особенностью, а не частью алгоритма. Т.е. он должен повернуть на +175, до этого «кто-то» его повернул на -174, он компенсирует и в итоге и выходит 175-(-174)=349. Для механических гироскопов очень гладенькая картина получается ;)
                                                                                        • –1
                                                                                          Разве что самую малость.
                                                                                          Я ж не знаю, как там разработка кода велась. Может, это было так:
                                                                                          — А у вас вот тут стоит проверка, не нужно ли вдруг повернуться больше, чем на 180°. В каком случае вообще может понадобиться такой поворот?
                                                                                          — Ну… Например, если с Байконура ракета уходит с курса более чем на 20°.
                                                                                          — И что, разгонный блок может такое выправить?
                                                                                          — Нет, при таком уходе в любом случае упадёт.
                                                                                          — Тогда убрать проверку, нет у нас после отделения на неё лишних 20 тактов.

                                                                                          Вполне же логичная история.
                                                                                          • +1
                                                                                            Так как предыдущая версия ракеты после старта не поворачивалась — то было всё равно когда определять, в момент старта или в момент отделения.
                                                                                            • 0
                                                                                              Для того, чтобы говорить, что и как надо было сделать — надо обладать полным пониманием того, что делает система во время полёта. А заодно, неплохо бы знать историю разработки, потому что технические решения это всегда продукт условий и ограничений, в которых их создают.
                                                                                              А рассуждать «как надо» обладая полной информацией об ошибке, это откровенный моветон. У любого человека в жизни можно найти ситуации, когда обладая послезнанием/всей полнотой информации становится ну совершенно очевидно, что так делать не надо.
                                                                                          • +2

                                                                                            ОС, даже хомячковая, по количеству взаимодействующих объектов наверняка будет даже сложнее, чем система управления ракетой. Все эти драйвера, сервисы, системные библиотеки…
                                                                                            Несравнимы только последствия отказа.

                                                                                            • 0
                                                                                              Только она летает на миллионах комьютеров каждый день. И тем не менее не далее как месяц назад наблюдал бсод в десятке.
                                                                                              • 0
                                                                                                Аптайм 54 дня, перезагрузка только для установки критических обновление, что я делаю не так?
                                                                                                • 0
                                                                                                  Железо у вас современное или производители такового переписали драйвера под новые реалии (Windows 10). У меня вот тоже раз в несколько месяц на ноутбуке 10-ка БСОДит из-за кривого драйвера реалтековского вайфай адаптера. Драйвера для него под 10-ку никто даже не писал, работаем с тем что есть.
                                                                                                  • +1
                                                                                                    Ну так в чем претензии то? Для свежего софта — свежее и топовое железо. Нет? Ну тогда более старые ОС. Логично же.

                                                                                                    И так, по идее со всем надо. Но ракету с нуля не стали же разрабатывать — вот и полезли наружу потенциально проблемные места. Так и не удивительно.

                                                                                                    Даже в глубине души радуюсь — ни в чем реально обидном не произошло ошибок или работы спустя рукава. Автор поста прав — это сложно-комплексная ошибка. И вполне простительна при таком стечении обстоятельств (новый космодром, старая ракета, ТЗ исходно N-летней давности).

                                                                                                    P.S. Я разрабатываю аппаратно-программный комплекс для диагностики и проверки качества веб-ПО (можно с натяжкой назвать «тестировщиком»).

                                                                                                    Так у меня стабильно горит от того, какой степени кривожопсти делают драйвера в гугле. Порой просто лютый треш. Дерьмокодом только и называть тянет. А вы о ракетах и гораздо более сложный вещах.

                                                                                                    И это при том, что в гугле явно платят по более, чем нашим в Роскосмосе на позициях «программист».
                                                                                                • +1

                                                                                                  Именно из-за сложности вот эти бсоды до сих пор и возникают. Хотя сейчас уже гораздо реже, чем, скажем, во времена 98 или миллениума.

                                                                                              • +2
                                                                                                Ну а аналогия СУ сложным технологическим объектом с хомячковой ОС сама по себе опускает первую ниже плинтуса ;)

                                                                                                Вы удивитесь, но сложность создания СУ космическим аппаратом несравнимо ниже сложности написания современных ОС. Количество строк кода в современных ОС на пару порядков больше, чем в системах управления космеческими аппаратами.


                                                                                                Разница же в цене ошибки, а не сложности разработки.

                                                                                                • 0
                                                                                                  Я не удивлюсь, я это отлично знаю. Равно как понимаю, что если из современной ОС выкинуть свистелки, перделки, набор иконок и графический интерфейс, то ОС *сильно* похудеет. Но вопрос, как вы совершенно верно заметили, в цели, которую перед собой ставят при создании продукта.
                                                                                                  • +1
                                                                                                    Похудеет, но все равно останется сложнее самой сложной специализированной программы в силу своего общего, универсального назначения.

                                                                                                    Есть много вещей, о которых разработчику СУ КК думать не нужно совершенно (типа многопользовательского режима, конкуренции за ресурсы и изоляции производительности, информационной безопасности, зоопарка поддерживаемого железа и т.д.), т.к. он решает четкую частную задачу.
                                                                                              • +1

                                                                                                Скорее корректнее будет пример с использованием циклов в качестве задержек в дос, которые потом "внезапно" перестали работать.

                                                                                                • –1
                                                                                                  Ну типа того. «По хорошему тут нужно дожидаться ответа и анализировать коды ответов, но пока для простоты давайте поставим задержку на 1 мс… Что, 1 мс мало? Ну поставь 100, все равно никто не заметит. Потом сделаем нормально»
                                                                                                  • +8
                                                                                                    Да, очень просто рассуждать о поведении системы спустя пару десятилетий после ее разработки) Почему вы не рассуждаете так: «В целях упрощения системы управления считать, что стартовые корректные условия работы системы обеспечивает работа предыдущей системы». Причем для своего времени, когда не было современных микроконтррллеров или ПЛИСов, а код для БК на каком-нибудь ассемблере писался такое допущение сильно упрощало разработку и построение всей системы в целом. И это было объективно оправдано. Тем более раньше старались делать борт как можно более проще (как следствие — надежнее), а все сложное запихивалось в наземку.

                                                                                                    Я просто не знаю условий и причин принятия решений. Поэтому голословно обвинять разработчиков не берусь. Допускаю, что было так как выше написал. Но вполне допускаю и то, что для запуска процедуры коррекции параметров впооне достаточно было перезапустить алгоритм по внешнему сигналу от РН, который не был предусмотрен, а когда об этом подумали, то уже все было сделано и КД выпущена, для сигнала не нашлось свободного пина в применяемом разъеме и пришлось бы сделать перекомпоновку ряда элементов и… на это просто забили, т.к. все нормально и так работало и никому в ум не пришло, что Россия откажется от космодрома, который, по сути, сама и построила.

                                                                                                    Не знаю… мне кажется неправильно обвинять инженеров отрасли в 90-ые и 00-ые годы, которые работали там чуть ли не за хлеб.
                                                                                                    • –2
                                                                                                      Скорее следует разобраться с теми, кто взял старые наработки, не проверив их на применимость в новых условиях, и понадеялся на авось.
                                                                                                      Дороговатое «интеграционное тестирование» получается.
                                                                                                      Хотя бы виртуальную эмуляцию бы запустили…
                                                                                                      • +6

                                                                                                        Вот мне интересно, те, кто говорят про ВИРТУАЛЬНУЮ ЭМУЛЯЦИЮ(вопрос о то, почему жирным шрифтом и тонкости отличия эмуляции от симуляции пока опустим) пробовали сами построить модель какого-нибудь физического процесса так, чтобы она адекватно отражала реальность? Правильно ли понимают сложность такой модели и то, что она все равно не выловит часть ситуаций?

                                                                                                        • –1
                                                                                                          Опечатался. Конечно «симуляция».
                                                                                                          • –1
                                                                                                            В данном случае было бы достаточно простейшей модели. Цель — проверить что заданная траектория в принципе «проходима» для ракеты.

                                                                                                            • +2
                                                                                                              Простейшей. Гм. Ну, видимо, вам виднее.
                                                                                                              • +3
                                                                                                                А что не так? Есть множество возможных моделей, среди них есть простейшая — которая не учитывает ни возможных отказов оборудования, ни внешних условий, ни погрешностей датчиков.

                                                                                                                И ее в данном случае было бы достаточно.
                                                                                                          • +1
                                                                                                            Лично вы откуда знаете, что никто не проверял их на применимость и наделся на авось? Да, наверняка, бывает и такое, но такое впечатление, что часть аудитории GT считают, что в космической сфере работают исключительно студенты-стажёры по типу эникейщиков в офисах.

                                                                                                            Вы в матлабе когда-нибудь строили какую-нибудь модель физического процесса? Построишь, например, модель передатчика, а потом по факту оказывается что из-за нелинейности передающего тракта на определённых частотах конечный результат получается несколько не тот, который ожидаем. И SNR в приёмнике не тот и работает он со срывами… и приходится вводить всякие поправки. А потом, через 20 лет тебе говорят: «Мы тут PLL модулятора заменили, так как таких же больше нигде нет». Для модели не изменилось ничего. Этот PLL как генерил ХХХ МГц, так и генерит, а какие вводить новые поправки ты сам не знаешь — непонятно что будет с сигналом на новом железе. Datasheet это конечно сила, но там не всегда всё написано в части всяких тонких моментов. Для этого надо делать и сделать.

                                                                                                            Отмоделировать и симулировать хорошо чистую цифру и простые алгоритмы. Реальность обычно сложнее и модель стараются строить наиболее приближенную к ней. Если система разрастается экспоненциально, то неудивительно, что в модели что-то упускается даже алгоритмически. Я не говорю, что это хорошо. Это плохо. Надо стараться делать хорошо)
                                                                                                            • +1
                                                                                                              То есть к автору статьи по поводу пункта «Защита от Мерфи» у Вас, коллега, нет вопросов?
                                                                                                              • +1
                                                                                                                Нет, естетственно) Я уже писал о том, что некорректно всё сваливать на обычных инженеров. Ошибка не технического уровня, а системного:
                                                                                                                Этому блоку уже 100500 лет, кто его делал давно уже не работают. Нынешний персонал разобрался что и где поправить надо. Поправил. Что-то недосмотрели — неудивительно, когда это софт/код/железка не твои, да ещё к ним и с ТО наверняка напряг, как это у нас традиционно бывает.

                                                                                                                Другое дело, что сделать-то было сделано, но проверка в модели или на какой-то КПА не была проведена. Это вопрос не к штатному персоналу (горе-программисты), а к тем, кто планировал конкретно эту разработку, к системщикам.

                                                                                                                Если вы это же имели ввиду, то извините — значит неправильно понял)
                                                                                                                Но я не думаю, что вообще ничего не проверяли, совсем уж авось и так далее.
                                                                                                              • +4
                                                                                                                Ну железную и алгоритмические просчеты стоит все-таки различать.
                                                                                                                К тому же в данном случае ошибка была не с областью немоделируемой динамики связана, а с вполне себе обычными диапазонами входных и выходных величин. Т.е. грубо говоря тестить надо не только с околонулевыми начальными условиями, но и несколькими начальными условиями распределенными по заявленной области определения (и тем более в критических точках, таких как pi, pi/2, где еще и деление на ноль может внезапно вылететь со всеми вытекающими).
                                                                                                                • +5
                                                                                                                  >> Да, наверняка, бывает и такое, но такое впечатление, что часть аудитории GT считают, что в космической сфере работают исключительно студенты-стажёры по типу эникейщиков в офисах.

                                                                                                                  Угадайте с трех раз, кто составляет наиболее активное множество посетителей хабра, которое радостно перекрикивает количеством всех хоть сколько-то соображающих специалистов. А дальше простое проецирование.
                                                                                                        • +3
                                                                                                          Есть программа написанная 10 лет назад под WindowsXP, которая отлично работала. Но в Windows 10 нормально работать она перестала… Это не означает, что разработчики криворукие кодеры

                                                                                                          Именно это (криворукие кодеры) это и означает. В Windows 10 работает даже Norton Commander 3.0. Учитывая сколько усилий прикладывает Микрософт для обеспечения совместимости работы с различным древним софтом написать программу для Windows XP чтобы она фатально перестала работать на Windows 10 нужно очень постараться.
                                                                                                          • –1
                                                                                                            В плане Windows соглашусь) Давайте поправлю аналогию, чтобы пояснить что я имел ввиду. Замените Windows XР на Debian 6, а Windows 10 на Debian 9. То, что какая-то программа работавшая на 6-ке не заработает на 9-ке, так как зависимости пакетов «поехали» не означает криворукость её создателя.
                                                                                                        • +7
                                                                                                          Нет, изначальным требованиям же софт соответствует. С Байконура, Плесецка или Куру это же «Фрегат» улетел бы успешно. С Восточного не на полярную орбиту тоже бы улетел кстати — углы были бы другие.
                                                                                                          • –3
                                                                                                            Я могу лишь повторить, подобная реализация — это огромная идейная дыра в системе управления. То, что она «выстрелила» именно сейчас — случайность. Может в 57 году на Байконуре первый взявший в руки палку инженер и осознанно использовал подобное решение (отдавая себе отчет в том, что делает здесь и сейчас). Но то что спустя 50+ лет ракета улетала с Плесецка и Куру (а улетала? я не в курсе), и не улетела с Восточного — это уже «повезло».

                                                                                                            PS Давайте в моем тексте не будем цепляться за даты, названия и обобщающее слово «ракета» — все все поняли ведь?