Космические ЭВМ
В отличие от американского челнока, который с самого начала разрабатывался как пилотируемый корабль, советский «Буран» должен был уметь летать в беспилотном режиме. Это усложняло задачу разработчиков системы управления
15 мая 1987 года был совершен первый испытательный пуск сверхтяжелой ракеты-носителя «Энергия» со спутником «Полюс», который, правда, на орбиту выйти не смог. Но ровно через полтора года состоялся второй, успешный запуск, на этот раз вошедший в историю, — «Энергия» вывела на орбиту космический корабль многоразового использования «Буран». «Буран» совершил два витка вокруг Земли и завершил трехчасовой полет посадкой на специальную полосу в районе космодрома «Байконур». На борту корабля не было людей — более полусотни систем управления «Бураном» в свою очередь управлялись автоматически по программам, заложенным в бортовую ЭВМ.
Создание в 80-х систем управления ракетой-носителем «Энергия» и космическим челноком «Буран» можно, наверно, считать творческой вершиной советской школы бортовых ЭВМ.
Система управления для ракетного комплекса «Энергия» создавалась в харьковском НПО «Хартрон», где разрабатывались многие управляющие ЭВМ для боевых ракет стратегического назначения и космических аппаратов. Переход от аналоговых устройств к управлению ракетами с помощью цифровой вычислительной техники произошел в середине 60-х. К тому времени задачи управления межконтинентальными баллистическими ракетами потребовали резкого увеличения объемов информации, которые обрабатывались на борту ракеты в реальном времени. Это оказалось под силу только мощным бортовым ЭВМ. Первая ракета с системой управления, включающей бортовую вычислительную машину, была запущена в 1971 году. А в середине 80-х на «Хартроне» велась работа над двумя равными по сложности проектами — системами управления для «Энергии» и для супермощного ракетного комплекса СС-18, известного на Западе под грозным названием «Сатана».
В это же время в Москве и на Украине создавались бортовой вычислительный комплекс «Салют-5» для станции «Мир», аппаратура стыковки «Курс», которая с успехом работала и продолжает работать в комплексе «Мир-Союз-Прогресс», и другие управляющие системы для космических аппаратов. На запущенном в 1957 году первом спутнике стояла простейшая бортовая аппаратура, позволявшая на Земле диагностировать внутреннее состояние спутника. А на бортовые системы управления космических аппаратов 80-х возлагались задачи ориентации и стабилизации в пространстве, навигация, планирование работ, контроль, диагностика и многое другое. Разработанная для последней советской космической станции «Мир» система «Салют-5» до сих пор остается наиболее мощной и надежной из серийных бортовых ЭВМ.
И все же самой впечатляющей по уровню сложности и по достигнутому результату была работа над космическим кораблем многоразового использования «Буран». В отличие от американского челнока, который с самого начала разрабатывался как пилотируемый корабль, советский «Буран» должен был уметь летать в беспилотном режиме. Это усложняло задачу разработчиков системы управления. Надо было заранее предусмотреть все режимы диагностики, все случаи ликвидации неисправностей и выхода из сложных положений.
В ходе разработки бортовой машины для «Бурана» было найдено несколько оригинальных решений. Так, к системе управления предъявлялось обязательное требование: при любых двух отказах на критических участках она должна была продолжать работать и обеспечить возвращение корабля с орбиты. Система управления «Бурана» базировалась на четырех ЭВМ, работающих синхронно по одинаковым программам. В случае сбоя одной машины происходило ее автоматическое отключение, а три оставшихся продолжали работать. Если происходил еще один отказ, управление полетом возлагалось на оставшуюся пару машин. Но разработчики предусмотрели еще одну «меру» для повышения надежности системы: в случае отказа одной из двух оставшихся машин наудачу отключалась одна ЭВМ в паре, и с вероятностью 50% система продолжала работать.
Аппаратная избыточность вычислительной системы — четыре машины вместо одной — решала проблему надежности, но одновременно ставила задачу эффективной синхронизации. В отличие от американцев наши разработчики не пошли по пути программной синхронизации, а нашли решение на аппаратном уровне. Вычислительные машины в системе управления «Бураном» не имели автономных генераторов тактовой частоты. Вместо этого был сделан отдельный генератор, выдающий тактовые импульсы на все четыре ЭВМ. Чтобы увязать это с требованием работоспособности системы при любых двух отказах, генератор был построен с пятью каналами резервирования. То есть по сути работало пять вынесенных генераторов, объединенных в единую конструкцию и со своей системой синхронизации, которая обеспечивала функционирование при любых двух отказах.
Аппаратное решение проблемы синхронизации управляющих ЭВМ позволило упростить сложнейшие задачи разработки их программного обеспечения. Одним из наиболее важных вопросов, которые надо было решить, был вопрос языка — на каком языке программирования вести разработку, какие инструментальные средства использовать. Хотя к этому времени существовал инструментарий для разработки бортового ПО ракетных комплексов, при создании «Бурана» резко возрос масштаб и сложность работ. Надо было в сжатые сроки написать программы, объем которых значительно превышал объем традиционных управляющих программ. Значит, необходимо было повышать производительность труда программиста, то есть о программированиии на ассемблере не могло быть и речи.
Кроме того, масштаб проекта требовал подключения в нему множества разных организаций. «Буран» делала вся страна. Множество программистов должны были взаимодействовать между собой и со специалистами по бортовым системам. Все это ставило проблему языков программирования особенно остро. В ее решении активное участие принял Институт прикладной математики им. М. В. Келдыша, где работами руководил Михаил Романович Шура-Бура. В результате было создано два языка программирования — ПРОЛ-2 для разработки бортовых систем и «Диполь» для разработки наземного проверочного ПО, а также специальный язык описания объектов «Флокс», который обеспечивал объединение их между собой. Был также разработан язык моделирования «Лакс» и другие языковые средства. Все это вместе составило комплекс, который включал в себя языки для написания исходных кодов программ и инструментарий, позволявший перейти от исходных текстов к отработанным, проверенным, должным образом смоделированным объектным кодам, хранящимся в бортовой и наземной аппаратуре. Этот комплекс обеспечил эффективное сотрудничество всех разработчиков программной части системы управления «Бураном».