Как стать автором
Обновить

«Роскосмос» опубликовал предварительные результаты работы по выяснению причин нештатной ситуации на станции «Луна-25»

Время на прочтение4 мин
Количество просмотров12K
Всего голосов 17: ↑16 и ↓1+21
Комментарии130

Комментарии 130

Эх... все таки программная ошибка.

связанное с невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей)

Если это такой важный компонет, почему нельзя сначала убедиться что он работает, и только потом подавать корректирующий импульс?

Точно! Нужно же сразу было делать хорошо!

Кое-что о важности обработки ошибок...

почему нельзя сначала убедиться что он работает

Потому что мы в невесомости, и акселерометр показывает ноль. А покажет ли он значение ускорения - мы можем узнать только после того, как дадим ускорение.

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

Не работать и показывать ноль – разные вещи при разумном подходе к делу. Если невесомость неотличима от выключенного акселерометра, это показывает, что кто-то криво что-то спроектировал.

Я так понял, что чтобы акселерометр начал что-то показывать, его нужно включить (т.е. отправить на него какую-то команду). Так что мешает вычитывать из него информацию о статусе работы (в том числе - флаг вкл/выкл)?
Более того, в процессе работы акселерометр может самопроизвольно выключится (из за бага в прошивке, космического излучения). Так что вполне логично было бы делать периодический опрос состояния акселерометра все время, пока работает двигатель, и при любом сбое акселерометра двигатель отключать.

Помимо этого, совершенно ничего не мешало выставить таймер меньше. Ну не вышли на заданную орбиту(а был манёвр перехода с более высокой орбиты, на более низкую), ничего страшного, будет ещё одна попытка. Вот этого я совершенно не понимаю. Зачем было ставить таймер с учётом минимальной мощности двигателя. То что на полной мощности, Луна-25 размажется тонким слоем об поверхность, таймером никак не учитывалось.

Я работал с MEMS акселерометрами, в которых вообще нет движущихся частей. И у них всё равно была команда самотестирования. Как я понимаю, специальная схема создаёт сильное электромагнитное поле притягивающее микрогрузик внутри микросхемы, который в норме реагирует только на ускорение. И это отклонение грузика можно считать и сравнить с ожидаемым. Если слишком отличается, акселерометру плохо.

Там скорее всего не MEMS аксерерометр, но это только увеличивает количество параметров для тестирования. Например, у механического гироскопа можно измерять скорость вращения двигателей и/или их ток потребления.

Так что физически сделать так, чтобы код проверял что акселерометр включился и в первом приближении функционирует корректно - точно можно.

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

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

И да, если я правильно понял, они всунули 2 таких на аппарат, чтоб можно было один использовать как резервный.

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

Нам это сказали, что он не включился. Только я думаю, что это просто удобная отмазка для разработчиков БИУС-Л.

Юнит тесты, системные тесты, они разве не покрывали такие сценарии?

их оптимизировали эффективные менеджеры

Тестовая Луна не загрузилась.

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

Такие системы с самого начала разработки прогоняются на макетах (этакий физический mock). Причём по уму все стадии полёта в реальном времени (т.е. один полный прогон - неделю или сколько она там летит).
Т.е. юнит - не юнит, но тестирование там приличное. Но что так не оттестируешь - это, например, если какой-то блок устраивает шитшторм при каких-то особых условиях, парализуя всю систему (т.к. блоки в макете не натуральные, а тестовые).
Т.е. это ошибка не на уровне программы, а на уровне интеграции блоков. И до реальной корневой причины - ещё не докопались. Кто и зачем там кучу сообщений шлёт.

Наиболее вероятной причиной аварии «Луны-25» стало нештатное функционирование бортового комплекса управления, связанное с невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей) из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором. При этом распределение команд в массивах данных имеет случайный (вероятностный) характер.

как им это удалось?!

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

https://dreamjob.ru/employers/117068?tab=salary

инженер-программист: 50к. мне кажется, что это снимает вопросы о том, как им это удалось в том смысле, в котором их задавали Вы, и ставит эти же вопросы в том смысле, что как им за такие деньги вообще удалось хоть что-то?

инженер-программист: 50к

Летела ракета, упала в болото.
Какая зарплата — такая работа.
/s

"- Какие трудовые обязанности советского инженера за зарплату в 120 рублей?

-Никаких, и еще немножко вредить"

Ох уж это "армянское радио" — не в бровь, а в глаз.
Да, это наследство тянется ещё из советских времён.

В подобных конторах оно потому и живо, это наследство, потому что внутри совок то никуда не делся.Точнее, там понемногу рафинируется весь негатив , который условно можно назвать "совковый стиль мышления", а положительные плюшки вымываются в карманчики "эффективных". Условно говоря, почти все КБ уволилось, три дедушки тащат весь проект и получают бешеные 50 тыщ рублей, а на них еще и наседают - чего вы там, там же все просто - дефективные манагеры. Дедушки бывает, ошибаются, все-таки возраст, а бывают и умирают. Какой басфактор? Умер твой коллега - в нагрузку тебе его работу, а новый не придет на эту зарплату, да и тебе не добавят. Чего удивляться такому результату. А вот бесплатные садики, профилактории и медицину много где просто убрали. Я уж молчу про молоко за вредность и служебный транспорт. А уж про служебное жильё (живешь там пока работаешь), настолько молчу, что децибелы моего молчания давно стали комплексными величинами.

А вот бесплатные садики, профилактории и медицину много где просто убрали. Я уж молчу про молоко за вредность и служебный транспорт. А уж про служебное жильё (живешь там пока работаешь), настолько молчу, что децибелы моего молчания давно стали комплексными величинами.

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

Особенно это касается тех вещей, где разным людям нужно разное: Иванов хочет в санаторий на море, Петров в пеший поход по горам Алтая, а Сидоров в тур по Золотому кольцу. А выбор у них между санаторием и ничем. У Кузнецова нет жилья, у Степанова наследная квартира, а Семёнов хочет жить в доме за городом. Выбирай - квартира или ничего.

С медициной в этом плане проще, поэтому она как бонус встречается довольно часто.

В Совке спутники штамповали, как сосиски. В том числе благодаря регулярным запускам доля неудач при посадке была небольшой (точнее, это я думал, что небольшой, а когда запостил этот список, оказалось, что неудачи были только в самом начале, затем посадки удавались). У индусов перед посадкой на Луну тоже было несколько миссий.

Пример советских запусков к Венере за 20 лет из Википедии:

Венера-1 12 февраля 1961 Первый пролёт мимо Венеры. Из-за потери связи научная программа не выполнена.

Зонд-1 2 апреля 1964 Пролёт. Сбор научной информации.

Венера-2 12 ноября 1965 Пролёт. Сбор научной информации.

Венера-3 16 ноября 1965 Сбор научной информации. Жёсткая посадка.

Венера-4 12 июня 1967 Атмосферные исследования и попытка достижения поверхности (аппарат раздавлен давлением, о котором до этих пор ничего не было известно)

Венера-5 5 января 1969 Спуск в атмосфере, определение её химического состава

Венера-6 10 января 1969 Спуск в атмосфере, определение её химического состава

Венера-7 17 августа 1970 Первая мягкая посадка на поверхность планеты. Сбор научной информации

Венера-8 27 марта 1972 Мягкая посадка. Пробы грунта.

Венера-9 8 июня 1975 Мягкая посадка модуля и искусственный спутник Венеры. Первые чёрно-белые фотографии поверхности.

Венера-10 14 июня 1975 Мягкая посадка модуля и искусственный спутник Венеры. Чёрно-белые фотографии поверхности.

Венера-11 9 сентября 1978 Мягкая посадка модуля, пролёт аппарата

Венера-12 14 сентября 1978 Мягкая посадка модуля, пролёт аппарата

Венера-13 30 октября 1981 Мягкая посадка модуля. Первая запись звука на поверхности и первая передача цветного панорамного изображения

Венера-14 4 ноября 1981 Мягкая посадка модуля. Передача цветного панорамного изображения

Там еще 12 (двенадцать) зондов в этой серии было которые разбились из-за отказа ракеты-носителя или остались на земной орбите из-за отказа разгонного блока...

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

Люди, деньги, ресурсы, строгая приёмка комплектующих - всё тогда было в достатке. Просто космос это сложно.

Космос это сложно, что в прочем не мешало США, исследовать космос с куда большей эффективностью. Надёжность, что тогда, что сейчас у них в разы(а то и на порядок) более высокая. Те же Вояджеры можно вспомнить.
Столь строгая приёмка комплектующих, что никак не мешала гнать откровенный брак.


Год запуска Вояджеров, и история неудач СССР:

И о чём должна говорить эта картинка? Тут перечислены успешные запуски. В 1977 году (по той же википедии) у СССР было 4 неудачных запуска, против трёх у США, не очень-то тянет "на порядок".

насколько я понимаю, там дело не только в зарплате, но и во всей прочей атмосфэре

вероятно, это все связано- зарплата форматирует людей, люди форматируют атмосферу, атмосфера форматирует зарплату.

очевидно, что вы не сталкивались с атмосферой в подобных заведениях

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

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

Ну, если действие перенести в Зажопинский механический завод, то примерно в таком духе, да.

Я на зажопинском механическом заводе буквально уже полгода впутан в эти вот разборки. Куча заседаний. Суть в чем: некий поставщик услуг раньше делал определенные работы для завода. Теперь завод (дирекция) говорит - это дорого (я с ними соглашусь, это запредельно безумно дорого но тот поставщик он монополист). Давайте попробуем своими силами. И вроде бы здравая идея, однако никто не хочет за нее браться. Денег-то за эту работу никто не заплатит. А отказываться прямо - смерти подобно (очередь за забором и вот это всё). Люди у каждого отдела все заняты и с работ не сдернешь. Внеурочные часы никто тоже платить не хочет - да вы что, это же дорого! Ну не так и горит, давайте еще полгода посовещаемся. И в итоге можно было бы сделать...если бы скажем по человечески. Но тут жестокий волчий мир. Сегодня ты сказал что сделаешь, и завтра сделал. Теперь ты будешь это делать до скончания веков. Если сказал что сделаешь, а хоп и у тебя не получилось - ты виноват, на те санкции. Или в сроки не уложился. Если скажешь что я не буду это делать и мои люди не будут - вон проходная, трудовую сразу. И кто ж в добром здравии и уме подпишется на некую, вроде бы простую, но бесплатную работу допом к основной? Вот и начинается юление на двух стулах - можно попробовать но тогда надо людей нанять еще. И сразу прилетает ответ - вот скажем работу эти люди сделали, а она нужна раз в год, что потом целый год лишних дармоедов на зарплате держать? Да и была бы та зарплата еще нормальной, знают же, что никто не придет. Но обсудить надо. И еще раз. И еще. Прозаседавшиеся. К слову такое не только в госухах, такое есть и у частников, но если в госухе это нормальное явление, то у частников скорее редкость. А цена этим всем заседаниям - сильно отрицательная. По итогам дураков нет работать бесплатно, и завод опять за овердорогой прайс будет покупать эти услуги у монополиста. Потому что кто-то когда то выбрал этого монополиста, давно уже уволился, а без этих услуг встанут важные производственные цепочки. А у "монополиста" возможно есть и откатики, просто об этом мало кто знает. Ну вот пока так это все работает, никто на себя ответственность брать и не будет.

СССР развалился, а дело его живо до сих пор.

Те, кто проворачивает такое и ныне - и развалили СССР. Ибо они стояли во главе. А про прозаседавшихся еще Маяковский писал. Какие это были года? Уже тогда были функционеры и куча дармоедов. Вот эту часть "совка" они тащат, скованные одной цепью. А детские сады, вредность и жилье от завода почему-то исчезли. Проклятый совок!

Ну про "заседавшихся" и Паркинсон писал. И совсем не про СССР.
А вот хорошее, действительно массовое бесплатное среднее образование - оно уже не так универсально.

Рыба всегда гниёт с головы, может слышали?
Если руководство не способно даже нормальных управленцев набрать, то подобная практика приобретает системный характер.
Многолетний отрицательный отбор сделал своё дело и в РФ он никуда не исчез. Руководство не с низов постепенно поднимается, а назначается чуть ли не случайным образом или вообще по блату, без какого либо опыта. Как может эффективно работать отрасль/завод, если начальство даже примерно не представляет чем оно руководит? А между ним и рабочими, прослойка менеджеров, которым лишь бы зряплату получать, а до завода им дела нет.

о неверном банкомате

Ух ты, с кем же и кому он изменял, шалунишка эдакий?

НЛО прилетело и опубликовало эту надпись здесь

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

Очень зависит от руководителя подразделения. Я работаю в лаборатории крупного ВУЗа, и за счёт различных хоздоговорных работ получается вполне нормальная зарплата. А в соседней лаборатории на похожей позиции - голый оклад.

Плюс подобные места дают опыт, который можно в свободное время (в том числе рабочее, если в данный момент работы нет) конвертировать в деньги фрилансом. И обмениваться опытом по фрилансу с коллегами - задачи бывают разнообразные.

это у вас вольница, у на входе мобильники не отбирают, в соседнюю лабораторию можно попасть и за фриланс за жопу не возьмут.

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

Я на этом моменте тоже споткнулся. Чиво, блть?

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

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

Если честно, это какой-то сюр, но который я всё же видел своими глазами. А команды в пакете должны выполняться последовательно.

Всё куда проще. То, что произошло, далеко не ново, только раньше либо учитывалось при проектировании ПО сразу, либо "отлавливалось" на испытаниях. Я на практике с обеими ситуациями конкретно на КА сталкивался. Если совсем коротко, то подобное "вылазит", когда устройство (удалённый терминал на 1553) имеет ограничение по интерфейсу с точки зрения количества обменов и/или команд за единицу времени (такт). И когда на циклические (псевдо-синхронные в случае 1553) команды накладываются разовые (асинхронные), что-то "уходит в нирвану". Кто виноват - разработчик устройства, не вписавший ограничение в ИКД (это типичное, нередкое ограничение) или пользователь, нам, возможно, сообщат позже. Хотя, не уверен.

Либо что-то высокоприоритетное залезло в очередь исполнения, и потому до задачи вычитывания значений акселерометра очередь не дошла вовремя...

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

Из-за программистов этих ваших все беды на Земле и на Луне!

Всех уволить, вернуть батут!

Чем больше пишет Роскосмос, тем сильнее я убеждён что никакой полезной нагрузки в проекте который успешно распиливали почти несколько десятилетий и не было.
Т.е. "втыкание" в луну - было запланировано.

Я лично знаю человека, который делал спектрометр для Луны-25.

А какая система, в итоге, у них была управляющей? На базе чего?

К сожалению, мы с ним не много общались.
Речь шла про вот это: https://sciencejournals.ru/cgi/getPDF.pl?jid=astvest&year=2021&vol=55&iss=6&file=AstVest2106002Chumikov.pdf

" Авторы выражают глубокую благодарность главе департамента Космических исследований и планетологии Физического института Бернского университета П. Вурцу (Бернский университет, Швейцария) за разработку модуля электроники прибора ЛАЗМА-ЛР и активное участие в проектах, а также Б.Т. Каримову (СКБ КП ИКИ РАН) за конструктивное воплощение прибора в целом.

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

При этом на проект были выделены весьма внушительные средства.
И чем это отличается от "было запланировано"?

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

Хотелось бы примерно понимать, какая зарплата была у программистов...

ping, выше ответили)))

"По мнению экспертов, нештатная ситуация на борту «Луны-25» произошла из-за неправильной работы программы.." и "сам «БИУС-Л» был исправен",

при этом "Программисты эту команду подали (это было видно по циклограмме), то есть, по сути, тоже все сделали правильно.."

Т.е. все и все сделали правильно, а оно само гробанулось. Бывает.

Вместе с тем пассаж про "распределение команд в массивах данных имеет случайный (вероятностный) характер" вызывает прям вот море вопросов.

Давненько не использовал в своих проектах генераторов случайных чисел.. Но где я а где космос. Им там в Роскосмосе видней.

И еще интересный момент: "не проанализировало ответную реакцию «БИУС-Л», по сути, просто не убедилось, что блок измерения угловых скоростей запущен в работу" т.е. ситуация при которой блок получил команду запуститься и не запустился считается штатной?

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

Давненько не использовал в своих проектах генераторов случайных чисел.. Но где я а где космос. Им там в Роскосмосе видней.

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

Если команду подали, а "Сам БИУС-Л был исправен" но не отреагировал, то это взаимопротиворечивые параграфы.

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

А рэндом - нет там никакого рэндома. Просто асинхронно приборы шлют сигналы и забивают очередь (возможно там какая-то RTOS стоит с кооперативной многозадачностью). Просто когда пярщик роскосмосса пытался добраться до сути как же всё таки формируется очередь комманд и как раздаются приоритеты коммандам, инженеры заколебались ему объяснять и когда он спросил "то есть случайным образом?" они сказали "да, случайным, отстань". А "вероятностный" он добавил уже для красивого оборота. Так и отправили в релиз. Но это не точно.

«Распределение команд в таких массивах данных имеет случайный характер. Таким образом, в бортовой комплекс управления поступали нулевые сигналы с акселерометров. Это не позволило точно определить момент набора достаточной скорости и вовремя выключить двигатели» - перевожу на русский: виноваты программисты. Распределённые программные брокеры сообщений не работают в космосе. ЧТД)

какие нахрен брокеры в циклограмме?

Он наверное, подумал что ракеты и прочие леталки тоже на MQTT и Home Assistant управляются. А брокеры в космосах летают, ну бывает, заработался чел в IoT.

только Маску идею не подбрасывайте ;-)

У полена с юмором - проблема (стихи). Обсуждения основанные на предположениях высосанных из пальца людей, которые понятия не имеют как это работало. А если Роскосмос в следующем пресс-релизе напишет, что отказывается от использования Apache Kafka в космических аппаратах, шляпу съедите? Отвечайте: да или нет, я записываю)))

связанное с невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей) из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором.

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

В связи с этим в бортовой комплекс управления приходили нулевые сигналы с блока акселерометров прибора БИУС-Л.

Не понял, там нулевой сигнал одновременно означает два события: что угловая скорость нулевая (или не изменилась) и что блок измерения не включен? По идее должны быть разные сигналы. В общем не понятно, как бортовой компьютер может не различить нулевое числовое значение скорости и неработоспособность (выключенность) блока измерения. Или бортовой компьютер послал команду типа: сообщи мне, когда угловая скорость станет NNN градусов/с, и далее ждал ответа, но не дождался? Но опять таки, должна быть какая то обратная связь. Или обратная связь была, но сработала с чрезмерной задержкой из-за забитой более приоритетными командами очереди команд?

из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором. При этом распределение команд в массивах данных имеет случайный (вероятностный) характер

Это хорошо показывает, что в таких вещах лучше не усложнять, а делать проще, прямолинейнее, а по возможности вообще заменять на физические/аналоговые обратные связи. Помню, читал статью про рентгеновский аппарат-убийцу (вроде и на хабре статья была). Там проблема возникла в новой версии аппарата, когда его перевели полностью на программное управление. А в старых версиях стояли физические ограничители и регуляторы, которые просто физически не могли позволить перевести аппарат в опасный режим.

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

В этой плоскости, кстати, вижу преимущество Эльбрусов, у которых вероятностные оптимизации вынесены из процессора на программный уровень (насколько я понял принципы этой архитектуры).

То есть вместо условного

bool sucess = BIUS.turn_on();
if(!success){
// retry or do something else
}

Отправили условно

BIUS.turn_on();

Верно понимаю? Кто умеет в чиновничий язык переведите плиз

ПС: а вот это вообще не понял

распределение команд в массивах данных имеет случайный (вероятностный) характер

Команды исполняются в рандом порядке чтоль... да не... бред какой-то

да надо на в чиновничий, а что бы кто причастен именно к этому железу дал коммент, а то получится как в этой ветке: https://habr.com/ru/news/764994/#comment_26023256

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

распределение команд в массивах данных имеет случайный (вероятностный) характер

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

Видимо, про идемпотентность речь?

Верно понимаю? Кто умеет в чиновничий язык переведите плиз

Так в статье же перевод на чиновничий. А именно "блаблабла, у нас есть 16 версий, блабла, все было исправлено, блабла, программа которая послала команду которая не выполнилась была написана программистами (их не жалко), блабла"..

Например, интеловские процессоры внутри используют вероятностные оптимизации - блоки предсказания переходов и пр. Но я бы побоялся такое использовать в ответственной технике.

А может, сделали прям, как у вас написано - присвоили значение одной переменной, а потом проверили переменную другую. )

Команды исполняются в рандом порядке чтоль... да не... бред какой-то

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

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

Есть некоторые харды с их демонами-драйверами, которые ждут команды, а затем готовы отчитаться.

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

Пока очередь практически пуста, все идет хорошо. Если сервис отдал команду включить БИУС, он включится практически мгновенно.

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

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

ваш код приведет к зависанию пэо.

То есть они не выделили один uint8_t на приоритизацию в массиве команд? Или разделили установку приоритета и загрузку команд? Какой у них там, блин, алгоритм в итоге?

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

Столько вопросов, столько вопросов...

у програмистов програм и програмистов железа сильно разная специфика

По хорошему, должны быть обновлены регламенты кодирования, с добавлением пункта "любая команда включения датчика должна сопровождаться проверкой его работоспособности", а датчики, в свою очередь, должны иметь функцию самотестирования (если даже у коммерческих MEMS акселерометров, которые ставят в телефоны, есть команда self test, то как её может не быть у space grade продукта). Но странно, если Роскосмос делает эти штуки десятки лет и до сих пор такого пункта в его регламентах нет. Так как ситуация типовая не только для лунной миссии, а примерно для чего угодно. Даже дешевый квадрокоптер с Али при включении чуть чуть шевелит двигателями, чтобы проверить их обмотки, а BIOS персонального компьютера проверяет ОЗУ, чексумму настроек и видеокарту.

Если дешевый квадрокоптер, не разобравшись в обмотках, подаст неподходящий сигнал и что-то там спалит, то Али придется вернуть деньги.

А с Луны никто с претензиями не придет. Так зачем лишний раз проверять?

Где-то в году 2009 к нам в комнату в НИИ Физических Измерений входит бабушка Тоня.

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

В том данном случае ее акселерометры были поставлены где-то на центрифугу на тестирование. В центрифуге были скользящие контакты запитки и съема данных. Эти контакты были неустойчивые... и ее акселерометры эпично сдохли.

... И бабушка пришла трясти нас чтобы мы, посторонние разработчики, начали "чесаться" и искать для нее выход.. А это нам было надо ? - Однозначно - нет.

Основная проблема НИИ ФИ того времени - с одной стороны это какая-то запредельная бутафория из Главного Конструктора, Докторов Наук, Заслуженных Машиностроителей Российской Федерации, кандидатов наук..

С другой стороны там - простонародный быдляк, мерзковатые детки местных чиновников..

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

Если акселерометры для Луны-25 были сделаны в НИИФИ (а они хвалились что много для нее сделали), то результат вполне закономерен.

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

Это тоже очень хороший вопрос. Проясняю..

Бюджет НИИФИ, когда я там работал в 2008-12 был где-то 0.9, 1.3, 2.1 и 2.7 миллиарда в год (это по утечкам информации из бухгалтерии)... При этом зарплаты у меня как у ведущего инженера была 14...16 тыс рублей в месяц.

Однако,... у начальника отделения, где я работал все было иначе. Ему "зарплаты" хватало и на элитные квартиры для каждого члена семьи,... и на машины для каждого члена семьи.. и на ежегодный отдых в Турции (сейчас меня этим отдыхом не удивишь но тогда на свои 16 тысяч я был обязан платить на учебу сына в Москве и дочери на платном образовании в Пензе).

На досуге всю информацию о ситуации в НИИФИ, всяких "проделках" начальства в НИИФИ и чуть выше я опубликовал на военном форуме...

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

А что там в НИИФИ сейчас - по разговорам там сейчас запредельная задница. Три начальника за срыв госзаказа недавно получили условную судимость (но на мой взгляд это к лучшему)

Сформированы рекомендации по проведению дополнительных мероприятий для последующих лунных миссий с целью недопущения повторения вышеуказанных вероятностных событий

Как знакомо, бггг...

Я когда-то в точно таком же стиле вместе с соседним отделом обьяснительную для высокого начальства писал, ИЧСХ, даже примерно с таким же последним абзацем.

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

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

 невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей) из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором. При этом распределение команд в массивах данных имеет случайный (вероятностный) характер

Звучит как у Лема в рассказе "Ананке", где бортовой компьютер корабля обучал специальный человек, и из-за особенностей его характера, сказавшихся на обучении, корабль перед самой посадкой на Марс врубил полную тягу, потому что посадочную процедуру забила ставшая от обучения более приоритетной программа ухода от столкновения с космическим телом; в результате корабль принял планету назначения за огромный астероид, попытался отменить посадку и разбился.

невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей) из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором. При этом распределение команд в массивах данных имеет случайный (вероятностный) характер.

Это надо понимать как: "мы использовали динамическую память, и внезапно стек пересекся с кучей"?

"При этом распределение команд в массивах данных имеет случайный (вероятностный) характер"

Перечитал несколько раз, так и не понял о чем это они.

По описанию напоминает результат работы генетического алгоритма.

Распределение слов в предложения имеет случайный (вероятностный) характер

Это значит, что есть асинхронные команды, помимо синхронных в обмене с данным удалённым терминалом 1553. Другой вопрос, что они назвали "командами", команды прикладного уровня или всё на уровне шины (обмены BC-RT и RT-BC плюс широковещание, если они решили его использовать для синхронизации времени, например)

Ну асинхронные комманды в рамках одного канала доставки и одного пункта назначения тоже должны не рандомом доставляться и выполняться.

CAN шины работают и ничего почему то не разваливается.

Данные теряет не шина (хотя, в случае 1553 это возможно, абонент может повторить, так как потери на уровне шины обнаруживаются), а удалённый терминал. Если в ИКД написано, например, что "минимальный интервал между командами на под-адрес X (или на любой под-адрес удалённого терминала, что типично) YZ миллисекунд", то из пришедших с меньшим интервалом двух команд одна будет потеряна. Это фактически то, что есть у большинства устройств на борту

Спасибо, интересно, покопаю.

Состояние гонки, как я понял.

От прибора A команда пришла раньше, чем от прибора Б — всё отработало штатно.
Пришла раньше от прибора Б — капут.

При тестировании воспроизводился только первый случай. В космосе воспроизвёлся второй.

Установлено, что наиболее вероятной причиной аварии «Луны-25» стало нештатное функционирование бортового комплекса управления, связанное с невключением блока акселерометров в приборе БИУС-Л (блок измерения угловых скоростей) из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором. При этом распределение команд в массивах данных имеет случайный (вероятностный) характер.

Это заявление о сферическом коне в вакууме а не о причине аварии! Не состыковки:

  • из открытых источников(ВЕСТНИК НПО ИМЕНИ С.А.ЛАВОЧКИНА за 2021), известно о установке ДВУХ БИУС-Л на «Луну-25» "С целью повышения надёжности при выполнении критических операций коррекции траектории на КА".

  • в состав каждого БИУС-Л входит три волоконно-оптических гироскопа. При включении гироскопов им нужно время на раскрутку а системе необходимо проверить что они раскрутились и готовы к работе.

  • "Частота обмена данными бортовой цифровой вычислительной машины и БИУС-Л составляет 20 Гц. " При такой частоте обмена даже самый слабый контроллер прошлого века успеет обработать поступающие данные вне зависимости от приоритета и распределения.

известно о установке ДВУХ БИУС-Л на «Луну-25» "С целью повышения надёжности при выполнении критических операций коррекции траектории на КА".

Двойного резервирования - роскосмосу обычно не хватает:

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

Аварии ракет-носителей «Протон»

Я извиняюсь, а что надо раскручивать в волоконно-оптическом гироскопе? Фотоны?

ошибся, подумал о гироскопе с волоконно-оптическими датчиками угла поворота :)

Какой-то двухщелевой эксперимент однако...

в состав каждого БИУС-Л входит три волоконно-оптических гироскопа. При
включении гироскопов им нужно время на раскрутку а системе необходимо
проверить что они раскрутились

А что в волоконно-оптических гироскопах должно "раскрутиться"? Да, им надо время на установления режима работы, но не на "раскрутку"

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

В отрыве от вычислительной сложности алгоритма обработки заявление бессмысленное.

Причем здесь алгоритм обработки - заявлено что приоритет команд в массиве данных из-за случайного порядка послужил причиной сбоя. Но как? Интерфейс обмена скорей всего RS485+SSP, скорость 115200 бод, контроллер посылает команду GET с адресом для чтения от 1 до 3 float-ов 20 раз в секунду и получает в ответ от 1 до 3 float-ов. Там нет приоритетов, всего несколько команд, при этом на этапе работы (а не программирования адресов устройств) имеет смысл использовать только команду GET.

три волоконно-оптических гироскопа. При включении гироскопов им нужно время на раскрутку а системе необходимо проверить что они раскрутились

простите, а что там раскручивается?

фотоны, чтоб спин равнялся единице.

В составе каждого БИУС-л 4 ВОГа. Которые по определению никакой "раскрутки" не требуют. Впрочем, это, как и всё остальное Вами написанное к предмету комментируемого текста отношения не имеют

Что про второй «Биус-Л», который должен был нивелировать отказ первого, к тексту не относится? Про ВОГи ошибся. Но раз у них нет времени на инициализацию, как вы можете объяснить набор слов про приоритет команд в массиве данных и случайном их порядке?

Вы, кстати, правы насчёт количества каналов, на БИУС-Л их по 3, я спутал с БИУС-14, который на картинках общедоступных и там видно 4 ВОГа. На "инициализацию" и ВОГам нужно время, но это единицы секунд, то же относится к акселерометрам. Обмен таких устройств по 1553 состоит из циклических (псевдо-синхронных в случае 1553, так как сама эта шина асинхронна) и разовых (апериодических команд). Когда поступит разовая команда, заранее неизвестно, это и есть "случайность". Так как многие устройства имеют ограничение по количеству команд (или обменов вообще, BC-RT и RT-BC) за заданный интервал времени, BC, управляемый в данном и большинстве случаев бортовым ПО, должен выдерживать это ограничение. Когда не выдерживает - выходит, то, что и вышло.

1553 не является общей шиной и подразумевает только один хост(контроллер), который и запускает любую пересылку по ней. На его запрос, если адрес соответствует устройству, оно должно ответить или принять данные. Тайминг на задержку ответа строгий(устанавливается при программировании/разработке системы), но без ответа не будут переданы данные от устройства и не появятся не корректные данные об угловой скорости. Т.е. никакого приоритета на уровне шины нет, как не могут быть перепутаны данными с командами на уровне шины. На более высоком уровне могут быть команды включения, опроса в любом порядке с приоритетами и без, но не возможна ситуация: "В связи с этим в бортовой комплекс управления приходили нулевые сигналы с блока акселерометров прибора БИУС-Л"! С ограничение количества команд в единицу времени не сталкивался, думаю тут есть путаница со временем выполнения команды для данного устройства - действительно ряд команд(инициализации, записи во flash,eprom) требуют время для исполнения, но это прописано в протоколе работы с эти устройством и не допускается продолжение работы с устройством без его готовности к исполнению следующей команды. В этой же конкретно ситуации, используется команда прочитать из памяти(float - угловую скорость), которая в принципе не может иметь дополнительное время исполнения, ее время исполнения - время ответа по шине!

А вы не путаете БИУС-14 где действительно на фото видно четыре ВОГа c БИУС-Л где заявлено три и поэтому их должны были поставить два?

Как же янки умудрились с допотопными компами т.е. бортовыми вычислителями полвека назад сесть и взлететь 6 раз!? Ахтунг, Буревестник летит!

Там люди сажали аппараты и контролировали работу двигателей.

По преданиям, в те далекие времена на Земле существовала еще одна высокоразвитая цивилизация, заселившая Луну чуть раньше "янки".

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

3 октября 2023 года «Роскосмос» опубликовал предварительные результаты работы по выяснению причин нештатного функционирования станции «Луна-25»
Новое слово в новоязе:
  • Вдребезги разбилась > Нештатное функционирование

/sarcasm

«Быстрая незапланированная разборка», как сказал Илон Маск о своей ракете.

Так сначала действительно "нештатное функционирование", а дальше "вдребезги разбилась".

Что-то я недопонимаю. БИУС - блок измерения угловых скоростей. Т.е. По сути гироскоп (хоть и лазерный}. Т.е. Измеряет он вращение аппарата вокруг своих осей. А ускорение от тормозного двигателя, оно же не вращательное..

В состав БИУС-Л входит 4 ВОГа и 3 маятниковых акселерометра. Иначе то изделие, под которое его и делали (снаряд 9М544  для Торнадо-С) в цель точно не попадёт. ¯\_(ツ)_/¯

Так у донора-то задача просто "попасть в цель" (в пределах допустимого КВО), а не сблизиться с целью и совершить мягкую посадку. Т.е. всё отработало штатно/s

Ошибался, 3 ВОГа на БИУС-Л

А все помнят, что изначально БИУС-Л не должно было быть.

Там должна была быть французская система, но из-за Крыма её пришлось импортазмещать.

изначально БИУС-Л не должно было быть

<humor>

Интересно, можно ли этот факт использовать как доказательство того, что мы находимся в симуляции?))

Т.е. "матрица" зафиксировала, что из некоего летательного аппарата был извлечён французский блок измерения ускорений и на его место был установлено нечто другое, что не воспринималось "симулятором вселенной" как акселерометр. Поэтому по мнению "симулятора" от него и не могло поступать информации о торможении аппарата :)

Согласно https://www.gazeta.ru/science/2021/05/03_a_13581434.shtml статье там должно было быть 2 таких прибора, что, оба сдохли?

цитата: "… для надежности ставятся два прибора, они развернуты относительно друг друга, и работают параллельно."

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории