היכונו לבאג ה-GPS

החל מיום שבת, ה-6 באפריל 2019, בעיה קטנה בתכנון של מערכת ה-GPS עלולה להתבטא במגוון תקלות במכשירים שמתבססים על קריאת התאריך ממקלטי GPS. למה זה יקרה ומה עושים?

מודול GPS. מה יהיה התאריך אצלו בעוד חודש וקצת?
מודול GPS. מה יהיה התאריך אצלו בעוד חודש וקצת?

קודם כל, קרדיט: על הבעיה הזו שמעתי לראשונה בתגובה של סמיון ריסטוב לפוסט שלי על Dataloggers. יש מידע על הנושא ברשת, הוא התחיל להופיע כעת גם במקורות טכניים בולטים, ובקרוב בוודאי יגיע גם לתקשורת הכללית (אם עוד לא הגיע ופספסתי).

אז מה הסיפור? ובכן, לווייני ה-GPS לא רק עוזרים לנו למצוא את המיקום המדויק שלנו על פני כדור הארץ. בין הנתונים שהם משדרים יש גם מידע לגבי התאריך והשעה המדויקים לפי שעון UTC. הפורמט שבו מידע זה משודר נקבע בתקן ישן, ושם הוגדר שיש מספר בן 10 ביטים שמציין כמה שבועות חלפו מאז שלווייני ה-GPS הראשונים החלו לפעול – בתאריך 6 בינואר 1980. המספר הזה עומד להגיע לגבול העליון שלו, וכשזה יקרה, הלוויינים פשוט יתחילו לספור שוב מאפס. אם מערכת כלשהי מתבססת על המידע ממקלט GPS כדי לקבוע את התאריך, ומתכנני המקלט ו/או המערכת לא לקחו את הנושא הזה בחשבון, הדבר יכול לגרום לשיבוש רציני (חישבו למשל על מערכת שמתאמת תנועת אוניות, רכבות, מכולות וכדומה).

רגע, זה לא קרה כבר?

הקוראים החשדנים וחובבי המתמטיקה בטח כבר שמו לב למשהו שהסתרתי בפסקה הקודמת. עם 10 ביטים אנחנו יכולים לספור מ-0 עד 1023, ו-1023 שבועות הם כ-19.7 שנים (מה שנקרא בז'רגון ה-GPS בשם Epoch). בין 1980 להיום עברו קצת יותר מ-19.7 שנים. אז מה הקטע?

יש שלושה קטעים, למען האמת. ראשית, ה"גלגול" הראשון של מונה השבועות ב-GPS (בשמו הרשמי Week Number Rollover או WNRO) אירע בשנת 1999, כשמערכות GPS אזרחיות היו פחות נפוצות ופחות בשימוש מחובר לענן כמו היום. שנית, יש יסוד להניח שהמקלטים באותה תקופה יוצרו בסטנדרטים יותר גבוהים מאשר כיום (ראיתם איך לא אמרתי במפורש "סיני זול"? 😉 ) ושלישית, גם אז ידעו מראש, הזהירו, בדקו ומנעו את ההשפעות השליליות מבעוד מועד. למיטב ידיעתי ועל סמך המקורות שראיתי עד כה (למשל זה), ה-WNRO הראשון לא גרם לנזקים כלשהם – לפחות לא שדווחו.

אז מה השתנה?

בניגוד לסיפור של באג אלפיים המפורסם, מתכנני ה-GPS ידעו מה הם עושים ומה ההשלכות של זה. מקלטי GPS שתוכננו כראוי ולפי תקנים מעודכנים יסתדרו בלי בעיה עם גלגול השבועות הקרוב וכנראה גם אלה העתידיים. השאלה היא, כמובן, אם כל המקלטים בשוק תוכננו כראוי, ואם יש כאלה שלא, איפה הם מותקנים ומה הם עושים. סביר להניח שרבים מקוראי הבלוג הזה מחזיקים ברשותם כמה מודולי GPS מתוצרת סינית עלומה, ולכו תמצאו עכשיו את היצרן ותקבלו ממנו תשובות ברורות.

הבדל נוסף בין הבאג הנוכחי לבאג אלפיים הוא שאמנם יש תאריך אחד ספציפי שבו יקרה ה-WNRO העולמי, אבל ההשפעה שלו על המקלטים השונים לא תקרה בהכרח באותו התאריך או אפילו קרוב אליו. לדוגמה, יצרן מסוים ו"חסכן", שיצר את התוכנה למודולי ה-GPS שלו ב-2014, יכול היה להשתמש בתאריך ההשלמה של התוכנה בתוך שבוע ה-0 שלו ולקבוע את התאריך האמתי ביחס אליו. במקרה כזה, השפעת ה-WNRO על המודולים האלה תורגש רק בשנת 2033.

מה אפשר לעשות?

ההמלצות הרשמיות הן לשאול את יצרן מקלט ה-GPS, ואם זה לא מסתדר מסיבה כלשהי (או שחייבים להיות ממש בטוחים), להשתמש בסימולטור GPS שמחקה את שידורי הלוויינים. לרוע המזל, לנו הצרכנים הקטנים של מודולים זולים אין כל כך את מי לשאול, וסימולטור הוא הרבה מעבר לתקציב שלנו. אין ברירה אלא לקוות שיהיה טוב, ולשים עין על המערכות שלנו אם הן משתמשות בתאריך או מעבירות אותו הלאה למערכות אחרות.

להרשמה
הודע לי על
3 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

עד כמה שידוע לי כול לווין משדר רק את "שמו" והתאריך המדוייק שלו באותו רגע
ע"י חישוב אל מול השעון הפנימי והידע של מה המיקום של כול לווין והצלבה מול שלוש לווינים המודל gps יודע למצוא את המיקום

משהו מגניב

תיקון
אפילו יותר פשוט
הם שולחים מיקום שלהם ותאריך מדוייק
ע"י חישוב ניתן להגיע למיקום