المعلوماتية > برمجيات

الطريق إلى القمر تمر بالهندسة! نظام الملاحة والتوجيه الخاص برحلة Apollo

في حين كانت ناسا تخطط لمشروع أبولو Apollo في بداية ستينيات القرن الماضي، كان الانتقال في مركبة فضائية من الأرض إلى القمر يمثل أحد أكبر التحديات التقنية.

ولكسب هذا التحدي، اختارت Nasa مخبر MIT Instrumentation Lab لتصميم أنظمة التوجيه والملاحة والتحكم على متن المركبة وتطويرها.

كان نظام الحاسوب والبرمجيات المتحكِّم بالمركبة الفضائية والمُسمّى Apollo Guidance Computer (AGC) المطوَّر في MIT من الإنجازات البارزة التي ساعدت على دفع التقنية للأمام بعدّة طرائق.

يزن الجهاز 70 رطلًا، ويستهلك 55 واط؛ أي نصف الاستطاعة الكهربائية اللازمة لتشغيل مصباح كهربائي عادي، ويشغل حجم يبلغ 0.97 قدم مكعب داخل المركبة الفضائية (أقل من قدم مكعب واحد)؛ أي إنه أصغر بكثير من الحواسيب المنتشرة في ذلك الوقت والتي كانت تشغل مساحة غرفة بكاملها، الأمر الذي يعدّ إنجازًا حقيقيًّا.

كان AGC أول استخدام مهم لرقاقات الدارات المتكاملة السيليكونية (silicon integrated circuit chips)، وقد سارع على نحو كبير في تطوير تقنية الرقاقات الدقيقة (Microchip Technology) التي استمرت في تطوير المنتجات الإلكترونية كلها تقريبًا.

أما برمجيًّا، فقد استُخدِمت لغتا برمجة لتحقيق الغاية وهما:

- Basic: لغة تجميع لقرابة أربعين عملية.

- Interpretive: لغة تفسيرية لمعالجة القوائم (مكونة أساسًا من مجموعات من البرامج الفرعية subroutines)، وصُمّمت لتسهيل حسابات التوجيه والملاحة التي تضمنت أشعة ومصفوفات ذات دقة مضاعفة.

خُزِّنت الشيفرة البرمجية على بطاقات IBM المثقبة (IBM punch cards).

وعند طباعة الشيفرة البرمجية المستخدمة لتحقيق هذه الرحلة، وصلت الأوراق المكدّسة الحاوية على الشيفرة البرمجية إلى طول مارغريت هاملتون Margaret Hamilton؛ مهندسة البرمجيات القائدة للمشروع.

بطاقة IBM المثقبة المستخدمة في تخزين الشيفرة البرمجية

تبدو لوحة المفاتيح وشاشة العرض (Display and Keyboard Unit (DSKY أشبه بتلك الموجودة في فرن الميكروويف (microwave) اليوم؛ لوحة مفاتيح رقمية بسيطة وبضعة خطوط من شاشات ذات خمس خانات.

لم يكن للحاسوب المركزي المستخدم لاختبار الشيفرة البرمجية في أثناء تطويرها لوحةُ مفاتيح أو شاشةُ عرض. وقد كتب المبرمجون شيفرتهم البرمجية باليد، ثم لقنوها للحاسوب باستخدام البطاقات المثقبة (بطاقة لكل سطر برمجي) لتُجرَّب. وفي اليوم التالي، تعاد البطاقات مع نسخة مطبوعة من خرج البرنامج (النتيجة).

لوحة المفاتيح وشاشة العرض (Display and Keyboard Unit (DSKY

دورة حياة البرنامج:

حتى في أوائل الستينيات من القرن الماضي، اتّبع مطورو البرمجيات دورة تحديد المتطلبات requirements والتصميم design وكتابة الشيفرة البرمجية coding والاختبار testing والصيانة maintenance.

يمكن أن يكون تقرير Bellcomm المُعدّ لبرنامج Apollo والمؤرَّخ في 30 تشرين الثاني/ نوفمبر 1964م بمثابة مقدّمة ممتازة لهذا المفهوم اليوم. وقد كان الاختلاف المهم عن الممارسة الحالية هو توصية التقرير بأن تقتصر الوحدات البرمجية على 200 إلى 300 سطر برمجي، أما نقطة التقرير الرئيسة فهي أنه يمكن التعامل مع البرامج بطريقة التعامل نفسها مع الأجهزة، ويمكن تطبيق المبادئ الهندسية نفسها.

وعلى الرغم من ذلك؛ بذلت Nasa جهدًا لتطوير الأجهزة أكثر من الجهد المبذول لتطوير البرامج الكبيرة، ولذلك؛ فشلت في البداية في التحكم بتطوير البرمجيات. ولكن؛ بعد إدراك مدى أهمية البرمجيات لهذه المَهمة، اتجهت NASA في النهاية للتعامل مع MIT في إنتاج برمجيات عالية الجودة.

طوّرت NASA مجموعة محددة من نقاط المراجعة على التوازي مع دورة تطوير البرمجيات، وذلك للتأكد من أنّ عمل MIT مناسب لمتطلبات NASA وقبوله:

- مراجعة التصميم النقدي (The Critical Design Review (CDR: نتج عنها قبول المواصفات والمتطلبات لمَهمة معينة ووضعها تحت تحكم التنفيذ. وتبع ذلك إعداد تعريف المتطلبات، وتطوير معادلة التوجيه، والمحاكاة الهندسية للمعادلات. 

- اختبار تكوين المادة الأولى (First Article Configuration Inspection (FACI: بعد كتابة الشيفرة البرمجية للبرامج واختبارها وإنتاج خطة للتحقق من صحتها، كان هذا الاختبار بمثابة علامة على الانتهاء من مرحلة التطوير ووضع الشيفرة البرمجية للبرنامج موضع التنفيذ. 

- مراجعة جاهزية قبول العملاء Customer Acceptance Readiness Review (CARR): بعد اكتمال الاختبار أقرت هذه المراجعة بأنّ نتيجة عملية التحقق من الصحة إيجابية.

- مراجعة الاستعداد للرحلة (Flight Readiness Review (FRR: هي الخطوة الأخيرة في مسح (scan) البرنامج.

كانت عملية القبول إلزامية لكل مَهمة؛ إذ توفر التقييم المتسق للبرنامج وضمان الوثوقية في كل مرحلة من مراحل دورة حياة البرنامج.

متطلبات النظام البرمجي:

قرر المصممون أنّ برنامج حاسوب Apollo سيمتلك قائمة طويلة من الإمكانات؛ مثل التحكم في الهبوط، والاستهداف، ومهمات الملاحة جميعها والتحكم في الطيران، وتحديد المواقف والتحكم فيها، ومهمات الطيار الآلي الرقمي، وفي النهاية المتطلبات جميعها التي تنطوي على تغييرات السرعة.

بنية نظام التشغيل:

كان نظام التشغيل نظامَ مقاطعة أولوية (priority-interrupt system) قادرًا على التعامل مع عديد من الوظائف في وقت واحد. ويختلف هذا النوع عن نظام التنفيذ الدائري (round-robin executive) الذي يقوم على تقسيم دورة ساعة المعالج بين المَهمات الموجودة بالتساوي؛ إذ تُعلَّق المهمة وتُخزَّن الحالة التي وصلت إليها عند انتهاء فترتها الزمنية إلى أن يستكمل تنفيذها في الدورة التالية، ومن ثم تُعطَى كل مهمة القدر نفسه من الاهتمام. 

ودائمًا ما ينفّذ نظام مقاطعة الأولوية الوظيفةَ الواحدة ذات الأولوية العليا، لينتقل بعد ذلك إلى الوظائف الأخرى ذات الأولوية المساوية أو الأدنى والموجودة في رتل الانتظار (queue) الخاص به.

تضمنت برامج التحكم برنامجين مرتبطين بجدولة الوظائف: 

- المدير التنفيذي Executive: يتعامل مع ما يصل إلى سبع وظائف في وقت واحد.

- قائمة الانتظار Waitlist: يتعامل مع تسع مهمات قصيرة.

تمتلك مهمات قائمة الانتظار وقت تنفيذ يبلغ 4 ميلي ثانية أو أقل. وإذا استمرت المهمة فترةً أطول من ذلك، فسترقّيها "قائمة الانتظار" إلى حالة "وظيفة job" وتنقلها إلى رتل وظائف المدير التنفيذي.

أما المدير التنفيذي فيتفقد الوظائف أو المهمات كل 20 ميلي ثانية لإيجاد مهمات ذات أولوية أعلى من المَهمة التي تُنفّذ حاليًّا، كذلك يتحكم المدير التنفيذي بما يُعرَض على شاشة العرض.

وإذا راجع المدير التنفيذي رتل الأولويات ولم يجد أية وظائف أخرى تنتظر، فإنه ينفذ برنامجًا يسمى (DUMMY JOB) باستمرار حتى ورود مهمة أخرى إلى رتل الانتظار.

مثّل AGC النظام الأول الذي يُستخدَم فيه الحاسوب للتحكم بالعمليات الخاصة بآلية تحمل البشر، والتعامل مع معطيات في الزمن الحقيقي لحدوثها، واتخاذ القرار وفقها دون أية سماحية للخطأ.

كان من نتائج نجاح رحلة Apollo استخدام النظام الحاسوبي AGC للعمل مع طائرة مقاتلة F-8 المُعدَّلة التي أنجزت أول رحلة ناجحة لها في مركز أبحاث الطيران التابع لـ NASA عام 1972م باستخدام نظام الطيران الرقمي عبر الأسلاك، وذلك عن طريق التحكم بالطائرة عبر جهاز حاسوب بدلًا من الكابلات والأنظمة الهيدروليكية مباشرة.

المصادر:

1- هنا

2- هنا

3- هنا

4- هنا

5- هنا

6- هنا

7- هنا