Στις 4 Ιουνίου 1996 ο Ariane 5, ο νέος ευρωπαϊκός φορέας εκτόξευσης, ξεκίνησε από το Κουρού της Γαλλικής Γουιάνας για την παρθενική του πτήση. Λίγο περισσότερο από μισό λεπτό αργότερα βγήκε εκτός πορείας και διαλύθηκε. Ο πύραυλος ήταν μη επανδρωμένος. Η έρευνα που ακολούθησε κατέληξε σε κάτι που ακούγεται σχεδόν αστείο: ένας αριθμός ήταν πολύ μεγάλος για να χωρέσει στο κουτί που του είχε δοθεί.
Τι έδειξε η έρευνα
Η εκτόξευση έγινε στις 12:33:59 ώρα UT (09:33:59 τοπική). Σύμφωνα με την επιτροπή έρευνας, που είχε πρόεδρο τον καθηγητή Ζ. Λ. Λιόν, τα δύο συστήματα αδρανειακής αναφοράς του πυραύλου σταμάτησαν σχεδόν ταυτόχρονα περίπου 36,7 δευτερόλεπτα μετά τη χρονική στιγμή H0, δηλαδή περίπου 30 δευτερόλεπτα μετά την απογείωση. Τα συστήματα αυτά είναι οι «αισθητήρες προσανατολισμού» του φορέα: του λένε πού βρίσκεται και προς τα πού κινείται.
Το πρόβλημα βρέθηκε σε μια εσωτερική τιμή με το όνομα BH (Horizontal Bias), που σχετίζεται με την οριζόντια ταχύτητα όπως την καταγράφει η πλατφόρμα. Το λογισμικό έπρεπε να μετατρέψει την τιμή από αριθμό κινητής υποδιαστολής 64 bit σε ακέραιο 16 bit με πρόσημο. Ο μεγαλύτερος αριθμός που χωράει σε τέτοιον ακέραιο είναι το 32.767. Η τιμή BH ήταν μεγαλύτερη, η μετατροπή απέτυχε και προέκυψε εξαίρεση τύπου Operand Error που κανείς δεν είχε προβλέψει να χειριστεί.
Γιατί ήταν τόσο μεγάλη
Το λογισμικό προερχόταν σε μεγάλο βαθμό από τον Ariane 4, όπου τέτοιες τιμές δεν ξεπερνούσαν τα όρια. Ο Ariane 5 όμως έχει διαφορετική τροχιά στα πρώτα δευτερόλεπτα. Η επιτροπή αναφέρει ότι η οριζόντια ταχύτητά του αυξάνεται περίπου πέντε φορές πιο γρήγορα απ’ ό,τι στον προκάτοχό του.
Υπήρχε και ένα ακόμη παράδοξο. Η συνάρτηση που παρήγαγε την τιμή BH ήταν συνάρτηση ευθυγράμμισης, χρήσιμη πριν από την εκτόξευση. Στον Ariane 4 είχε μείνει ενεργή για λίγο μετά την εκκίνηση, ώστε να μπορεί να επαναληφθεί η αντίστροφη μέτρηση μετά από παύση χωρίς νέα ευθυγράμμιση σαράντα πέντε λεπτών ή και περισσότερο. Η επιτροπή σημειώνει ότι η δυνατότητα αυτή χρησιμοποιήθηκε μία φορά, το 1989, και ότι στον Ariane 5 δεν εξυπηρετούσε κανένα σκοπό. Παρέμεινε «για λόγους κοινότητας» με το παλιό λογισμικό και έτσι έτρεχε περίπου 40 δευτερόλεπτα μέσα στην πτήση.
Μια απόφαση που είχε ληφθεί συνειδητά
Η μετατροπή που απέτυχε δεν ήταν η μοναδική επικίνδυνη. Σύμφωνα με την έκθεση, επτά μεταβλητές κινδύνευαν να προκαλέσουν σφάλμα τέτοιου τύπου. Οι τέσσερις προστατεύθηκαν, οι τρεις όχι, και ανάμεσά τους η BH. Ο λόγος που δίνεται είναι ότι είχε τεθεί στόχος μέγιστου φόρτου 80% για τον υπολογιστή του συστήματος. Για τις τρεις μεταβλητές είχε κριθεί ότι είτε περιορίζονταν φυσικά είτε υπήρχε μεγάλο περιθώριο ασφαλείας. Για την BH, γράφει η έκθεση, η εκτίμηση αυτή αποδείχθηκε λανθασμένη. Η επιτροπή δεν βρήκε στην τεκμηρίωση αιτιολόγηση για την απόφαση, ενώ τα δεδομένα της τροχιάς του Ariane 5 δεν είχαν συμπεριληφθεί στις προδιαγραφές του συστήματος.
Πώς έγινε αλυσίδα βλαβών
Ο Ariane 5 είχε δύο πανομοιότυπες μονάδες αδρανειακής αναφοράς, μία ενεργή και μία εφεδρική. Επειδή ήταν ίδιες, έπαθαν το ίδιο πρόβλημα με διαφορά περίπου 0,05 δευτερολέπτου: πρώτα έπεσε η εφεδρική, λίγο μετά η ενεργή. Το σχέδιο διαχείρισης εξαιρέσεων όριζε το σύστημα να καταγράψει το σφάλμα και να κλείσει τον επεξεργαστή. Όπως γράφει η έκθεση, αυτό «αποδείχθηκε μοιραίο». Η ενεργή μονάδα έστειλε στον κεντρικό υπολογιστή του πυραύλου διαγνωστικά δεδομένα, που ερμηνεύθηκαν ως δεδομένα πτήσης. Ο υπολογιστής διέταξε μεγάλες εκτροπές των ακροφυσίων για μια απόκλιση που δεν υπήρχε. Ο φορέας εκτράπηκε, διαλύθηκε περίπου 39 δευτερόλεπτα μετά το H0 και ενεργοποιήθηκε η αυτοκαταστροφή.
Τι άλλαξε
Η έκθεση περιέχει 14 συστάσεις. Ανάμεσά τους: η συνάρτηση ευθυγράμμισης να απενεργοποιείται αμέσως μετά την απογείωση, κανένας αισθητήρας να μη σταματά να στέλνει τα καλύτερα δυνατά δεδομένα, τα δεδομένα τροχιάς να μπαίνουν στις προδιαγραφές και τις δοκιμές, και οι δοκιμές να περιλαμβάνουν πραγματικό εξοπλισμό σε προσομοιώσεις κλειστού βρόχου. Η επιτροπή επισήμανε ότι το σύστημα δεν είχε δοκιμαστεί με την τροχιά του Ariane 5.
Η ιστορία δεν δείχνει ότι οι μηχανικοί δεν ήξεραν από αριθμούς. Δείχνει ότι κάτι που ήταν σωστό σε ένα περιβάλλον γίνεται επικίνδυνο όταν μεταφέρεται σε άλλο χωρίς να ελεγχθούν ξανά οι παραδοχές του. Εδώ η παραδοχή ήταν μία μόνο γραμμή κώδικα.
