SimCom, توصیه شده, مقاله های سیسوگ

مشکل تغییر تاریخ در ماژول‌های GPS

مشکل تغییر تاریخ در ماژول های GPS

شاید شما هم یک پروژه با ماژول‌ GPS انجام دادید که پس از مدتی متوجه مشکل تغییر تاریخ ماژول‌ GPS در پروژه خودتون شدید که باعث به هم ریختن نرم افزارتون میشه، البته این‌جور مشکلات حتی به‌صورت وسیع چندبار پیش اومده و نمونش Y2K bug (که نمونه داخلیش اول امسال برای خودمون هم پیش اومد و بیشتر توی دستگاه‌های پوز بهش برخوردیم) هست. پس خوبه که موقع برخوردن به این مشکلات بادید درستی بهش نگاه بکنیم و حواسمون باشه که این‌جور مشکلات ممکنه برای ما هم پیش بیاد و باعث سردرگمی ما توی دیباگ کردن پروژه هامون بشه و زمان زیادی رو هدر بده، پس با سیسوگ همراه باشید تا به بررسی علت وقوع این مشکل و نحوه برطرف کردنش بپردازیم.

سال ۱۹۷۸ اولین ماهواره GPS در مدار قرار گرفت (۴۴ سال پیش) البته در ابتدا کاربرد نظامی داشته و بعد از چند سال به‌صورت عمومی برای همه قابل‌استفاده شده (توی موضوعات High tech غالباً همین‌طور هست و در ابتدا یه تکنولوژی موردنیاز در بحث نظامی توسعه داده میشه و بعد از مدتی ممکنه به‌صورت عمومی هم در دسترس قرار بگیره) البته شاید اون زمان خود آمریکایی‌ها هم‌فکر نمی‌کردند که سیستم GPS قراره این‌همه سال استفاده بشه و این باعث شده که یکسری مشکلاتی برای استفاده طولانی‌مدت از اون به وجود بیاد.

 

تاریخ مبهم

ماهواره‌های GNSS سیگنال‌های مختلفی رو ارسال می‌کنند تا گیرنده‌های GNSS اونها رو دریافت کرده و پردازش کنند، سیگنال L1 C/A یکی از این سیگنال‌ها هست که دیتای تاریخ اون مبهم هست و هر ۱۹٫۶ سال یکبار صفر میشه و باعث میشه ماژول‌هایی که از این دیتا استفاده می‌کنند تاریخشون ۲۰ یا ۴۰ سال قبل رو نشون بده.

مشکل تغییر تاریخ در ماژول‌های GPS

 

مشکل تغییر تاریخ GPS چگونه بوجود میاد؟

همانطور که گفتیم سیستم GPS تعداد هفته‌های گذشته از تاریخ ۶ ژانویه ۱۹۸۰ رو ارسال میکنه و گیرنده‌های GPS برای محاسبه زمان دقیق از این پارامتر استفاده می‌کنند. تعداد هفته‌های گذشته از ۰ تا ۱۰۲۳ شمرده میشند و بعد از اون شمارش دوباره از ۰ شروع میشه اولین بار که این اتفاق افتاد در آگوست ۱۹۹۹ بوده و جدیداً در آوریل ۲۰۱۹ این اتفاق بار دیگه رخ داده و زمان بعدی در نوامبر ۲۰۳۸ دوباره این مقدار ۰ شروع میشه.

مشکل تغییر تاریخ در ماژول‌های GPS

البته ماژول‌ها اکثراً از سیگنال‌های دیگه‌ای‌ هم استفاده می‌کنند مثل دیتای ماهواره‌های GLONASS, Galileo, GPS L2C, GPS L5 و این خطا رو تصحیح می‌کنند. اما اگر که ماژول‌ GPS شما فقط از دیتای GPS L1 C/A استفاده کنه متوجه نمیشه که تعداد هفته، از سال ۱۹۸۰ هست یا ۱۹۹۹ یا ۲۰۱۹ و تاریخ رو به شما ۴۰ یا ۲۰ سال عقب‌تر نشون می‌ده. البته این مشکل فقط باعث خطا در تاریخی که ماژول‌ GPS به شما میده میشه و باعث اختلال در دیتاهای ناوبری ماژول نمیشه (حداقل در ماژول های شرکت u-blox به گفته این شرکت).

 

چه ماژول هایی این مشکل رو دارند؟

  • ماژول sim908 از شرکت simcom
  • ماژول های  u-blox 5, 6, 7, 8, M8 از شرکت u blox
  • و کلا ماژول هایی که فقط از سیگنال GPS L1 C/A برای دریافت موقعیت استفاده می‌کنند.

اگر شما هم ماژول هایی رو می‌شناسید که این مشکل رو دارند توی کامنت برامون بگید.

 

چطور میشه این مشکل رو برطرف کرد؟

نکته اول اینکه شرکت ublox از آخر سال ۲۰۰۷ هر ماژولی که تولید کرده داخل فریمورش به‌صورت پیش‌فرض اومده و تعداد هفته‌های گذشته از ۶ ژانویه ۱۹۸۰ رو تا روز تولید ماژول رو ذخیره کرده و ماژول با تطبیق این عدد با عددی که ماژول از ماهواره دریافت میکنه دیرتر به این مشکل برمی‌خوره، توی جدول پایین میتونید تاریخ دقیق این موضوع رو ببینید.

مشکل تغییر تاریخ در ماژول‌های GPS

همچنین شرکت ublox برای برطرف کردن این مشکل توی ماژول های خودش سه تا راه حل پیشنهاد داده:

روش اول

در این روش شما باید با اضافه کردن یک تکه کد به برنامتون تشخیص بدید که الان توی کدوم یکی از این بازه‌های ۱۹٫۶ ساله هستید و تاریخ خودتون رو اصلاح کنید. در ادامه میتونید این کد رو بررسی کنید:

 

روش دوم

روش دوم تغییر تعداد هفته‌های گذشته از ۱۹۸۰ هست که ماژول با جمع اون با دیتای دریافتی از ماهواره عدد صحیح رو پیدا کنه، با کمک دستور UBX-CFG-NAVX5 میتونید تعداد هفته‌های گذشته رو به ماژول بدید. ارسال این دیتا باید بعد از هر بار ریست شدن ماژول اتفاق بیوفته چون ماژول چیزی ذخیره نمیکنه.

مشکل تغییر تاریخ در ماژول‌های GPS

مثلاً شما الان میخواید محصولتون رو آماده کنید پس باید ۲۰۴۷ رو برای ماژول ارسال کنید که میشه دو بازه ۱۹٫۶ سالی. تکه کد پایین به شما کمک می‌کنه که دیتا رو برای ارسال توسط دستور UBX-CFG-NAVX5 آماده کنید.

 

روش سوم

روش سوم هم‌تغییر فریمور ماژول به آخرین نسخه هست که باعث میشه تا حدود ۲۰ سال از آخرین نسخه فریمور ماژولتون دیتای درست بده (خیلی باید خفن باشید که محصولتون ۲۰ سال بدون هیچ تغییری کار بده و اصلاً تا ۲۰ سال دیگه کارایی داشته باشه ?)

 

مشکل تغییر تاریخ ماژول GPS رو آقای بابک وارسته بهمون اطلاع داده بودند و قضیه ازاین‌قرار بود که ایشون پروژه‌ای با ماژول sim908 حدود سه سال پیش تحویل داده بودند که در اون زمان به‌درستی کار می‌کرده، اما مدتی پیش که دوباره می‌خواستند از محصولشون استفاده کنند اطلاعات غلط از بردشون دریافت می‌کردند و بعدازاینکه راه‌حل رو پیدا کردند با ما درمیون گذاشتند و بهانه‌ای شد برای نوشتن این مقاله.

برای نوشتن این مقاله از این داکیومنت شرکت ublox کمک گرفته شده.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

3 دیدگاه در “مشکل تغییر تاریخ در ماژول‌های GPS

  1. Avatar for S.AmirAli S.AmirAli گفت:

    بسیار عالی
    ممنون از زحمات شما

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      خواهش میکنم 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *