2022-02-22 20:53:35
سامانه موشکی پاتریوت، یک سامانه دفاع هوایی موشکی است که توانایی مقابله با موشکهای بالستیک تاکتیکی، موشکهای کروز، و هواگردهای دشمن را در همه شرایط آب و هوایی و در هر ارتفاعی دارا است.
تا قبل از جنگ اول خلیج فارس، مفهوم دفاع موشکی بالستیک یک مفهوم اثبات نشده بود. طی عملیات طوفان صحرا، سامانه پاتریوت علاوه بر مأموریت ضدهوایی، مأموریت پیدا کرد که موشکهای بالستیک کوتاه برد اسکاد یا الحسین عراق را که به سمت اسرائیل و عربستان شلیک میشد را ردیابی و ساقط کند.
در ۲۵ فوریه ۱۹۹۱ یک فروند موشک اسکاد عراقی بعد از گذر از سامانه دفاعی پاتریوت به پادگان آمریکایی ظهران، در عربستان سعودی برخورد کرد در اثر این برخورد ۲۸ سرباز آمریکایی کشته شدند و ۱۰۰ نفر نیز زخمی شدند.
طبق گزارش GAO (General Accounting office) که بعدها منتشر شد، دلیل عمل نکردن و عدم رهگیری صحیح موشک اسکاد توسط پاتریوت، مشکل نرمافزاری اعلام شد .
مطابق گزارش منتشر شده، مشکل به شکل مشخصتر از محاسبه نادرست زمان بوت شدن سیستم بوده است! به طور خاص، در سیستم پاتریوت زمان بر حسب دهم ثانیه ساخته میشود (ده هرتز) و برای محاسبه زمان بر حسب ثانیه آن را در 1/10 ضرب میکنند تا ثانیه سپری شده را محاسبه کنند.
این محاسبه (همین تقسیم) با استفاده از یک رجیستر ۲۴ بیتی ممیز ثابت (fixed point) انجام میشده است! تا اینجا به نظر مشکلی نیست ولی دقیقاً مشکل همینجا بوده! چرا که مقدار 1/10 عملاً دارای بسط باینری نامتناهی است و با توجه به محدودیت ۲۴ بیتی رجیستر محاسباتی، در نهایت مجبوریم که آن را گرد کنیم.
هرچند خطا کم به نظر میرسد، اما وقتی در یک عدد بزرگ ضرب بشود در نهایت خطای قابل توجهی را ایجاد میکند! دقت داشته باشید که ما زمان را به شکل دهم ثانیه داریم و زمان این اتفاق حدود ۱۰۰ ساعت از روشن بودن سیستم میگذشته است
با یه حساب ساده سرانگشتی میتوانیم بفهمیم که این خطای کوچک گرد کردن بعد از ۱۰۰ ساعت کارکرد خطای زمانی حدود ۰٫۳۴ ثانیه ایجاد میکند، به این شکل که اگر بخواهیم مقدار 1/10 را به شکل باینری ذخیره کنیم سری زیر را خواهیم داشت:
1/(2^4)+1/(2^5)+1/(2^8)+1/(2^9)+1/(2^12)+1/(2^13)+...
به عبارت دیگر بسط دودویی آن به شکل زیر خواهد بود
0.0001100110011001100110011001100...
که با توجه به حدودیت ۲۴ بیت ریجستر مورد استفاده پاتریوت مجبوریم به شکل زیر آن را گرد کنیم
0.00011001100110011001100
که در عمل با عدد واقعی خطایی معادل 0.000000095 خواهیم داشت. بله به نظر خیلی کم میرسه اما اجازه بدید محاسبه رو کامل کنیم وقتی این عدد کوچک را در صد ساعت کارکرد دستگاه ضرب کنیم خطایی معادل ۰٫۳۴ ثانیه خواهیم داشت
0.000000095×100×60×60×10 = 0.34
حالا بریم سر وقت موشک اسکاد، موشک اسکاد با سرعتی حدود ۱۶۷۶ متر بر ثانیه حرکت میکند، پس در واقع در بازه زمانی ۰٫۳۴ ثانیه مسافتی حدود ۰٫۵ کیلومتر را طی میکند و این عدد برای خروج اسکاد از range gate پاتریوت کافی است!
#zeus
منبع : https://8bi.ir/patriot
1.2K viewsedited 17:53