Computing in the Soviet Space Program












The BURAN control panel

Computers for Spacecraft

by Natalia Dubova

from Essays on the History of Soviet Computer Technology and Programming

Translated from the Russian by Slava Gerovitch

On May 15, 1987, the first trial launch of the heavy-lift carrier rocket Energia took place. The Energia was carrying the satellite Polius, but it did not reach the orbit. A year and a half later, however, the second launch proved successful and made history: the Energia put into orbit the space shuttle Buran. The Buran made two turn circuits around the Earth and completed its three-hour flight by landing on a special runway near the cosmodrome Baikonur. There were no people on board: over fifty systems that controlled the Buran were themselves controlled by programs stored on an onboard computer.

The design of guidance systems for the carrier rocket Energia and for the space shuttle Buran in the 1980s was probably the pinnacle of creative efforts of the Soviet school of onboard computer design.

The guidance system for the rocket complex Energia was designed at the scientific research corporation Khartron in Khar'kov, which also designed many other guidance computers for spacecraft and strategic missiles. The transition from analog devices to computerized rocket guidance systems occurred in the mid-1960s. At that time the task of guiding intercontinental ballistic missiles required a sharp increase in the amount of information processed on board a rocket in real time. This could only be done by powerful onboard computers. The first rocket with a guidance system that included an on-board computer was launched in 1971. In the mid-1980s Khartron worked in parallel on two equally complex projects: one guidance system for the Energia and the other for the super-powerful missile complex SS-18 known in the West under the horrific name "the Satan."

At the same time designers in Moscow and in the Ukraine worked on the onboard computer complex Saliut-5 for the station Mir, the rendezvous apparatus Kurs, which has since worked successfully on the complex Mir-Soyuz-Progress, and other control systems for spacecraft. The first Sputnik, launched in 1957, had only the most primitive onboard equipment that made it possible to monitor its condition from earth. By contrast, onboard spacecraft control systems in the 1980s were to perform such tasks as orientation and stabilization in space, navigation, scheduling, monitoring, diagnostics, and many others. The system Saliut-5 developed for the last Soviet station Mir so far remains the most powerful and reliable of all serially produced onboard computers.

Yet the most impressive in terms of complexity and the achieved results was the work on the space shuttle Buran. Unlike the American space shuttle, which had been developed from the very beginning as a manned spacecraft, the Soviet Buran was to be capable of flying unmanned missions. This made the guidance system designers' task much more complex. They had to anticipate all potential regimes of diagnostics, all possible emergencies, and ways out of complex situations.

Several original solutions were implemented in the design of an onboard computer for the Buran. One of the specifications for the guidance system was as follows: even after the failures of any two  critical components, the system was to operate correctly and to support the spacecraft's return from the orbit. The guidance system of the Buran was based on four computers, which executed the same program simultaneously. If one machine failed, it would be shut down automatically, while the three others would continue to function. If another failure occurred, the remaining two computers would guide the flight. Designers also introduced another reliability feature: if one of the two remaining machines failed [i.e., the two computers produced different results], one of them was randomly chosen for shutdown [and the other one remained in service], and the system still had a 50% chance of working correctly.

Hardware back-ups for the computer complex (four machines instead of one) solved the reliability problem, but at the same time posed a new problem of efficient synchronization. Unlike the Americans, our designers did not pursue software-controlled synchronization, but found a hardware solution. The four computers in the guidance system of the Buran had no autonomous frequency generators. Instead, a separate generator produced impulses for all the computers. To meet the requirement of correct operation after two failures, the generator had its own back-ups: the total of five channels. In fact, there were five different generators comprising a unified system with its own synchronization, which, it turn, operated correctly after any two failures.

The hardware solution of the synchronization problem for the guidance computers made it possible to simplify the immensely complex task of designing software for them. One of the most important questions here was that of language: which programming language, which tools to use? Although some tools for designing software for onboard rocket complexes already existed, the Buran project had a much greater scale and complexity. In a short time frame, it was necessary to write programs of much greater size than traditional guidance software. It was imperative to increase the efficiency of programmers' work; therefore, programming in the assembler language was ruled out.

Besides, the very scale of the project required participation of a great number of different organizations. The whole country built the Buran. Numerous programmers had to interact with one another and with onboard systems specialists. All this made the choice of programming language particularly complicated. The Keldysh Institute of Applied Mathematics took an active part in solving this problem. This project was supervised by Mikhail Romanovich Shura-Bura. In the end, two new programming languages were developed: Prol-2 (for the development of on-board systems) and Dipol (for the development of ground control software), and also the special object description language Floks, which made these two languages compatible. In addition, the modeling language Laks and other language tools were developed. All this comprised an environment that included languages for writing source code and tools for the transition from the original code to the well-tested, corrected, properly simulated object codes stored on onboard and ground computers. This environment provided a basis for efficient collaboration among all the developers of software for the Buran guidance system.

site last updated 16 December 2002 by Slava Gerovitch