بخشی از مقاله
چکیده
در این مقاله روش و چگونگی تدوین شبیه ساز زمان حقیقی وسیله پرنده اي با استفاده از سیستم عامل لینوکس ارائه می شود. هسته اصلی مدل سازي ارائه شده در این مقاله ، کد شبیه سازي شش درجه آزادي در محیط فرترن است. هدف از تولید این شبیهساز، استفاده در تست هاي سخت افزاري سیستم و آموزش پرتاب با نمایش صحنه درگیري به کاربران این پرتابه هاست. در این شبیه ساز تبادل اطلاعات در چند فرکانس کاري از طریق درگاه سریال انجام می شود. در این شبیه ساز قابلیت اجراي هم زمان و غیرهم زمان اجسام پرنده وجود دارد. نتایج بهدست آمده بیانگر حصول موفقیت در پیادهسازي این شبیهساز است.
مقدمه
امروزه شبیهسازي ابزاري کارامد و قوي در طراحی سیستمهاي پیچیده محسوب میشود. شبیهسازي بهطور اطمینانبخشی میتواند در کاهش هزینهها، کاهش زمان و بالا بردن قابلیت اطمینان طراحی در خدمت طراح باشد. یکی از موارد کاربرد شبیهسازي، استفاده از آن در اجراي زمان حقیقی رفتار دینامیکی و سینماتیکی یک وسیله پرندة هوافضایی است.
شبیهسازي زمان حقیقی بهوفور در طراحی یک وسیله پرندة هوافضایی براي انجام برخی تستهاي سختافزار در حلقه، تست تجهیزات زمینی، آموزش کاربران و ... مشاهده میشود. بهجرئت میتوان گفت که بدون حضور یک شبیهساز زمان حقیقی، امکان مشاهدة تمامی اتفاقات ناگواري که امکان دارد در طول مأموریت یک جسم پرنده ایجاد شود، قابل رفع کردن نیست .[1]
در یک بیان ساده، شبیهسازي بدلی از عملکرد یک فرایند در دنیاي واقعی یا یک سیستم در یک بازة زمانی است. براي تدوین یک شبیهساز زمان حقیقی اولین مسئله تهیه یک سیستم عامل زمان حقیقی است. یک سیستم عامل زمان حقیقی، سیستمی تعریف میشود که قادر باشد، توابع، پاسخ به بیرون و رخدادهاي غیرهمزمان خود - از قبیل دادهبرداري و کنترل و ... - را در زمان مشحصی انجام دهد به عبارت دیگر، سیستمی که قادر به گارانتی نیازمنديهاي زمانی پردازشهاي خود باشد.
انتخاب سیستم عامل زمان حقیقی بهطور مستقیم مرتبط با نوع برنامه کاربردي است. معمولاً سیستم عاملهاي زمان حقیقی، با واژههایی چون زمان حقیقی نرم - Soft - و سخت - Hard - مطرح میشوند. سیستمهاي زمان حقیقی نرم آنهایی هستند که نیازمنديهاي تنظیم زمان - timing - بهطور آماري مشخص شده است. مثالی از این سیستم، سیستم ویدئو کنفرانس است. در این سیستم مطلوب این است که فریمها پرش نداشته باشند. اما اگر گاهی یک یا دو فریم از دست برود مشکل خاصی ایجاد نخواهد کرد.
اما در یک سیستم زمان حقیقی سخت، بازة زمانی باید گارانتی شود. در این سیستم هر وظیفهاي - task - باید در بازة زمانی مشخصی انجام شود در غیر این صورت باعث ایجاد مشکل میشود. براي مثال، حتی اگر در طول زمان تست، موتور یک وسیله داراي بالاسري باشد، اما قطع برنامه باید در زمان مشخصی انجام شود .[2] در حال حاضر تعداد بیشماري سیستم عامل زمان حقیقی وجود دارد.
چند پارامتر میتواند در انتخاب یک سیستم عامل براي انجام شبیهسازي زمان حقیقی مؤثر باشد. بهطور خلاصه متن باز - Open source - بودن، استاندارد بودن، دارا بودن قابلیت پشتیبانی، کارامدي، ارزان بودن و چندوظیفهاي با قابلیت زمان حقیقی سخت، انتظاراتی است که از یک سیستم عامل زمان حقیقی میتوان داشت. معمولاً سیستم عاملهاي یونیکسپایه - Unix-base - تعداد زیادي از انتظارهاي فوق را برآورده میکنند.
البته شاید نتوان سیستم عاملی پیدا کرد که همه خواستههاي مذکور را بهطور عالی داشته باشد .[2] در این مقاله براي اجراي شبیهساز بهصورت زمان حقیقی از سیستم عامل زمان حقیقی لینوکس استفاده شده است. از لینوکس زمان حقیقی در کارها متعدد و سطح بالا، نظیر تست و ارزیابی سیستم کنترل وضعیت ماهوارهبرها و خود ماهواره استفاده میشود .[8-7] بهعنوان مثال میتوان به تست سختافزار در حلقه و شبیهسازي فضاپیماي آریان 5 اشاره کرد. در این کار یک محیط آزمایشگاهی براي توسعه و تست سیستم کنترل وضعیت و مؤلفههاي آن بر مبناي لینوکس زمان حقیقی ایجاد شده است .[1]
همچنین بهکارگیري لینوکس زمان حقیقی در شبیهسازهاي توزیعشده - distributed - از دیگر موارد است. در اینگونه محیطها ممکن است که چندین سیستم عامل زمان حقیقی بهطور همزمان در شبیهسازي سیستم موردنظر حضور داشته باشند. نمونههاي کاربردي زیادي که در آن از لینوکس زمان حقیقی و سیستم عامل دیگري چون Vxworks یا QNX در شبیهساز زمان حقیقی استفاده شده باشد یافت .[9] استفاده از لینوکس زمان حقیقی در تست سیستم کنترل وسایل حساسی چون تلسکوپها، شتابدهندة ذرات و ... مشاهده میشود.
در این سیستمها گاهی وسایلی که باید عمل کنترل و نمایش روي آنها انجام شود از 10000 نیز تجاوز میکند .[10] در این مقاله براي شبیهسازي رفتار وسیله پرنده در حین پرواز از یک کد شبیهسازي شش درجه آزادي استفاده میشود. این کد در محیط برنامهنویسی فرترن تدوین شده و تمامی زیرسیستمهاي وسیله پرندة موردنظر در آن مدلسازي شده است.
جا دارد از آقاي مهندس توکلی که زحمت زیادي در توسعه و بهبود این کد متحمل شدهاند تشکر و قدردانی شود. تبادل اطلاعات در این شبیهساز از طریق درگاه سریال انجام میشود که براي ارتباط کد شبیهسازي با این درگاه کدهاي موردنیاز به زبان C تدوین شدهاند. همچنین مدیریت اصلی برنامه نیز در همین محیط انجام میشود و توابع از طریق یک واسط - interface - با هم در ارتباط هستند.
ترتیب قسمتها به این شرح است: در قسمت دوم ساختار و ویژگیهاي کد شبیهسازي شش درجه آزادي ارائه میشود؛ در قسمت سوم شرح مختصري در مورد سیستم عامل زمان حقیقی لینوکس بیان خواهد شد؛ قسمت چهارم به معرفی درگاه سریال میپردازد؛ ساختار و معماري توزیع اطلاعات شبیهساز در قسمت پنجم و ششم ارائه شده و در انتها نیز به جمعبندي و نتایج پرداخته میشود.
ساختار و ویژگیهاي کد شبیهسازي پرواز
کد شبیهسازي شش درجه آزادي که در این کار مورد استفاده قرار گرفته در محیط فرترن توسعه یافته است. این کد سیري تکاملی در کنار صنعت داشته و سالها در طراحی و شبیهسازي پرواز پرتابههاي مختلف بهکار گرفته شده است. بههمین دلیل از نظر قابل اطمینان بودن و تطابق نتایج با تستهاي تجربی، کد شبیهسازي پرواز مناسبی است. یکی از مزایاي خیلی خوب زبان برنامهنویسی فرترن نسبت به سایر زبانهاي برنامهنویسی سریع بودن کامپایلر آن است .[3] در این شبیهسازي، مدلسازي رفتار دینامیکی جسم پرنده براساس بسط قوانین نیوتن براي یک جسم پیوسته انجام شده است - شکل