مقاله در مورد طراحی و پیاده سازی نرم افزار شبیه ساز عملکرد تراکتور با ویژوال بیسیک

word قابل ویرایش
143 صفحه
18700 تومان
187,000 ریال – خرید و دانلود

طراحی و پیاده سازی نرم افزار شبیه ساز
عملکرد تراکتور با ویژوال بیسیک

خلاصه :
این تز یک قسمت از پروژه HSV در مرکز استرالیایی برای زمینه رباتیک در دانشگاه سیدنی است . هدف توسعه Package ارتباطی بی سیم برای ارتباط بین کامپیوتر آن بورد ute و کامپیوتر اپراتور است . اول از همه حسگرها و محرک ها مطالعه و بحث شدند و همه داده های مهم که اپراتور ممکن است به آن علاقه داشته باشد تحلیل و معین شده اند . سیستم ارتباطی بی سیم سپس انتخاب و گسترش یافت . بانداستفاده شده ۲٫۴ GHz بود و سیستم IEEE802.llb بوسیله ارتباطپیک توپیک کامپیوترها استفاده می شود . Package سخت افزاری بی سیم به دفت انتخاب شده مانند : آنتن ute ، آنتن اپراتور کارت اینترنتی ارتباطی بی سیم و مبدل اینترنتی . کتابخانه ارتباطی استفاده شده کتابخانه msg-Bus بود . جایی که ارتباط به آسانی فعال می شود تا پیام‌ها در یک زمان فرستاده شوند .دو نرم افزار اصلی توسعه یافت . اولین نرم افزار توسعه یافته برای ute تمام دیتای حسگرها را ز حافظه تقسیم شده هسته اصلی می خواند و آن را به کامپیوتر اپراتوری می فرستد . نرم افزار دوم ، نرم افزار اپراتور با ute ارتباط می یابد و دیتای مخصوصی رامی خواهد و آن را در فایلهای متنی ذخیره می کند . سرانجام ، روالهای مطمئن برای هر کس طرح ریزی شده که ute برای مردم توسعه یافته استفاده کند و هر بخش از آزمایش انجام شده در هر زمان را دنبال کند .
فهرست مطالب

فصل اول
مقدمه

Chapter 4 :
4.1 Background : (پیش زمینه)
massage-Bus رابط برنامه نویسی کاربردی msg-Bus یک کتابخانه برای پشتیبانی پردازش داخلی و ارتباط سیستم داخلی است که واسط سوکت را استفاده می کند . کتابخانه پروتکل پیام دیاگرام را استفاده می کند (UDP) که بوسیله IP فراهم می شود. این انتخاب که نسبت به استفاده TCP برتری دارد ساخته شده است . برای اجرای دلایل و بدلیل اینکه واسط اساسی (اترنت سریع کلیدداری در صفحه بندی hupspoke) خودش به تنهایی مجزا است : ارتباط دو طرفه نقطه به نقطه پس گره ها و تصادم یابی با دوباره ارسال کردن بسته ها گم شده . کتابخانه برای کد کردن ساختار دستوری C++ است .
توابع گذرگاه پیام : ۴٫۲

یک سیستم توزیعی شامل تعدادی از سیستم هاست (که گره ها نامیده می شوند) جایی که روی هر نود یک شماره از فرایندها (که وظایف خوانده می شوند) می توانند اجرا شوند . هدف از یک message Bus یک گذرگاه پیام فعال سازی این وظایف است برای انتقال دادن اطلاعات تبادلی و همزمان سازی اهداف دلیل استفاده از message Bus برای این تبادلات اجتناب از ارتباطات نقطه به نقطه یک شبکه وسیع و بدست آوردن معماری سیستم پیمانه ای است . هدف توانایی ارتباط (گذراندن پیام) پس وظیفه ها در نودهای مختلف پاپس وئظایفی در نود مشابه بدون ایجاد هیچ تغییر برای وظایف دیگر در سیستم می باشد . کتابخانه msg-bus شامل تعدادی از توابع

است که بوسیله سرویس گیرنده ، سرور و برنامه های نظیر به نظیر فراخوانی می شووند . بوسیله استفاده از این فراخوانی ها یک سیستم تمام توزیع شده عبور دهنده پیام می‌تواند در هر سیستم عامل پشتیبانی شده فهمیده شود . چهار تابع اصلی شامل :
msg – attach message Bus نصب ارتباط
msg – detach message Bus آزادسازی ارتباط با
msg – send فرستادن یک پیغام به برنامه یا نود دیگر
msg – receive انتظار رسیدن یک پیغام و خواندن آن
۴٫۲٫۱ : ضمیمه یا پیوست
تابع کتابخانه ای msg-bus یعنی msg-attach اولین تابعی است که بوسیله هر فرایندی که بخواهد msg-Bus را استفاده کند فراخوانی می شود . آن نود و برنامه را برای ایجاد سوکت و تنظیم یک ساختار عمومی با دیتای معمولی استفاده می کند . تابع مقدار Msg-ok(0) را هنگامی که الحاق موفقیت آمیز است یا یکی از کدهای خطا در جایی که سوکت باز است ، بسته است یا خطاها قرار داده شده اند برمی گرداند .
Long msg – attach (char*node,char*task)
(گره) : nede
نود نامی از خود سیستم است (در واقع آدرس IP) که بوسیله

یک رشته درفرمت
“XXX.XXX.XXX.XXX” معرفی می شود . (برای مثال “۱۵۵٫۶۹٫۳۱٫۹۰” ) .
(وظیفه) : task
task(وظیفه) اسمی از خود سیستم است :‌این باید یک رشته

باشد که یک عدد صحیح است . ( در واقع یک شماره درگاه) در رنج ۶۵۵۳۵+۱۰۲۴ را معرفی می کند . (برای مثال “۵۰۱۶” )
(انفعال ) Detach 4.2.2
تابع کتابخانه msg-bus یعنی msg-attach باید قبل از خارج شدن برنامه کاربردی فراخوانی شود که msg-bus استفاده شود . آن نزدیک socket خواهد بود . هیچ پارامتری هم نیاز نیست .
Long msg-detach( );
4.2.3
msg-send از تابع کتابخانه ای msg-bus برای فرستادن پیغام به برنامه (وظیفه) دیگر بکار می رود . تابع یک بسته با اطلاعات فرستنده و گیرنده اضافه خواهد کرد . برای توانایی فرستادن ، سوکت بایداول بوسیله msg-attach ( ) اضافه شود . ID پیغام و طول (اگر لازم باشد) به دستور بایتی شبکه تبدیل خواهند شد. برای محتویات میدان داده ای ، آن مسئولیت برنامه کاربردی است که این را انجام دهد . برای اطمینان از اینکه آن دریافت شده باشد ، پارامتر قبلی باید به شکل صحیح تنظیم شود . سپس msg – send ( 0 قبل از اینکه برگردد منتظر یک تعویق (البته استفاده از یک timeout) می ماند . تابع هنگامی که فرستادن موفقیت آمیز باشد msg-ok(0) را بر می گرداند یا هنگامی که فرستادن خطا داشته باشد یکی از کدهای خطا را بر می گرداند . timeout یا تصدیق .
Long msg – send (char*nede , char * tssk , Long id , Long len , char * data , boolck);
Node
نود یا گره نام سیستم است (آدرس IP) جایی که برنامه قرار می گیرد . نام نود در رشته ای در فرمت “XXX.XXX.XXX.XXX” معرفی می شود (برای مثال “۱۵۵٫۶۹٫۳۱٫۹۰”
task
وظیفه یا برنامه نام فرایند مقصد است : این باید یگ رشته بارها که یک عدد صحیح (در واقع یک شماره گذرگاهی) در رنج ۱۰۲۴ به ۶۵۵۳۵ را معرفی کند (برای مثال “۵۰۱۶”)
id
شناسه ای از پیام برای فرستادن است . (ID ساختار پیام ، احتیاج به دریافت وظیفه برای جذب داده دارد)
Len
طول ، در مقیاس بایت : دنباله بلاک داده است .
data
بلاک دیتا ، یک رشته است .
ack

اگر فرستنده بخواهد برای تصدیق دریافت منتظر بماند بولین True را set می کند .
: دریافت ۴٫۲۵
msg-receive تابع کتابخانه ای msg-bus یک پیام را از یک سوکت دریافت می کند و با ID پیام و دیتا جواب می دهد . مقدار time out می تواند برای ثانیه های زیاد انتظار کشیدن داده شود . زمانی که یک time out اتفاق بیافتد ، تابع بوسیله کد خطای Msg-ERR-timeout(-30) برگردانده می شود .

اگر timeout به ۱- تنظیم شود تابع برای همیشه برای یک پیام ورودی منتظر خواهد ماند .
(این در یک setup استفاده خواهد شد جایی که برنامه دریافتی به یک event ورودی لینک شده است برای اینکه تابع بازخورد فراهم شود) . تابع هنگامیکه پیام دریافتی موفقیت آمیز باشد msg-ok(0) را بر می گرداند یا یکی از کدهای خطا را هنگامی که خطا دریافت می شود . time out یا تصدیق . زمانی که یک ساختمان داده دریافت می‌شود ، این ساختار فقط بعد از اینکه ID پیغام شناخته شده یکی می شود .
ما یک اشاره گر برای یک ساختار درست فرمت شده ایجاد خواهیم کرد و آن را به یک میدان داده ای ساختار نیافته برای دستیابی به داده نسبت می دهیم .
Long msg – receive(char*nede,char*task,Long* id , Long* len , char* data , Long timeout) ;
Node
نود نام سیستم است (آدرس IP) جایی که فرایند فرستاده شده ناشی می شود . اسم نود بوسیله یک رشته در فرمت “XXX.XXX.XXX.XXX” معرفی می شود . (برای مثال “۱۳۵٫۶۹٫۳۱٫۹۰” )
task
برنامه (وظیفه) نام فرایند فرستاده شده است . این شاید یک رشته باشد که یک عدد صحیح (در واقع یک شماره گذرگاه) در رنج ۱۰۲۴ تا ۶۵۵۳۵ را معرفی کند (برای مثال “۵۰۱۶”)
id
شناسه ای از پیام دریافتی است . ID بوسیله برنامه فرستاده شده با موافقت با وظیفه دریافتی استفاده می شود تا ساختار پیام تعریف شود . برنامه دریافتی برای جذب داده مورد نیاز است .
Len
طول ، در مقیاس بایت : دنباله بلاک داده است .
data
بلاک دیتا ، یک رشته است .
timeout :
انتظار کشیدن به مدت چند میلی ثانیه برای یک پیام ورودی . هنگامی که timeout صفر است تابع فقط با دیتایی که در صف موجود است بر می گردد . وقتی

مثبت است، این تابع بلوکه می شود و تا وقتی که پیام برسد منتظر می ماند .
پیغامهای فوری ۴٫۳
کتابخانه می تواند بین پیامهای معمولی و پیامهای فوری فرق قائل شود . برای هر برنامه ای که کانال ارتباطی استفاده می کند همچنین یک کانال فوری می تواند باز شود. اگر کانال ارتباطی معمولی بسته باشد کانال اضطراری می تواند استفاده شود . تابع msg-attach-urgent از کتابخانه msg-bus خیلی به msg-attach شبیه است . هر چند سوکت های مختلف برای تهیه کانال جدا برای پیام های اضطراری باز است . این کانال اضطراری مورد نیاز است زیرا برای پیام های اضطراری به صف شدن و گم شدن غیرقابل قبول است زیرا با

فر سرریز می کند . تابع می تواند بوسیله هر فرایندی که می خواهد تسهیلات کانال اضطراری از msg-bus را استفاده کند فراخوانی شود . آن می تواند با msg-attach( ) در زمان نصب فراخوانی شود . تابع هنگامی که الحاق موفقیت آمیز باشد msg-ok(0) را بر می گرداند یا یکی از کدهای خطا را هنگامیکه سوکت باز باشد یا بسته یا خطاها set شوند نشان می دهد .
Long msg – attach – urgent(Char*nede,char*task) ;
چیز مشابهی که به فرستادن پیغام ها ، دریافت پیغامها و جدا کردن پارامترها جواب می‌دهد مانند زیر است:
Long msg – send – urgent(char*node,char*task , Long id, Long len , char* data , bool ack) ;
Long msg – receive – urgent (char*node , char * task , Long * id , Long * len , char * data , Long timeout) ;
Msg-detach 0 urgent ( ) ;
در پروژه ها پیامهای فوری استفاده نمی شود زیرا اساساً پیامهای ارتباطی کاملاً ساده و به موقع هستند . هچ کدام از آنها اضطراری نیستند .

chapter 5
5-توسعه نرم افزار
.۵٫۱ در این مرحله از پایان نامه راه اندازی سخت افزار قطعیت داده شد و کتابخانه ارتباطی شبکه فهمیده شد . بنابراین مرحله بعد توسعه نرم افزار خواهد بود . توسعه نرم افزار یک معمای عمومی دارد که به پنج مرحله اصلی تقسیم می شود : احتیاجات ،
طراحی ، کد کردن ، آزمایش و تعمیر و نگهداری .
گراف زیر روالی را که در توسعه نرم افزار بکار می

رود نشان می دهد . بعد از شکل دادن بعضی قسمتهای مخصوص ، هر چند گاهی اوقات احتیاج دوباره به توجه کردن به آن دارد زیرا معماری سیستم با قسمتهای انفرادی پیوند قوی دارد .
شکل .۵٫۱ مراحل توسعه نرم افزار

 

.۵٫۲ احتیاجات
هدف پایان نامه طراحی و ساخت یک بسته ارتباطی بی سیم است که برای شبکه بندی کامپیوتر آنبورد ute با کامپیوتر بی سیم اپراتور ، جایی که دستورات، پیغامها و دیتای حسگر می تواند از یک کامپیوتر به دیگری انتقال یابد می باشد . تشخیص نهایی این است که نرم افزارباید یک ارتباط شبکه ای بین دو کامپیوتر برقرار کند . جایی که اپراتور بعضی دستورات را به کامپیوتر ute می فرستد تا بخواهد بعضی از دیتای حسگرها یا همه دیتای حسگر را به او بفرستد و ثوابت کنترلی را برای مدلهایی مانند نقاط شروع و و .. داده باید روی کامپیوتر اپراتور ، هر حسگر یا هر تقسیم در فایل txt خودش ذخیره شود .
هر فایل باید با عضی خصوصیات درباره آنچه دیتاست ، داده و زمان برای مجموعه داده شروع می شود و با داده و زمان پایان مجموعه داده تمام می شود . هر حسگر زمان خودش را برای تخصیص دارد ، همه آن بستگی به زمانی که هر حسگر به‌روز‌رسانی می شود دارد . جدول زیر زمان بروز رسانی دیتای هر حسگر را نشان می‌دهد .
جدول۵٫۱ : زمان بندی حسگرها
Timing Sensor
200 ms GPS1
200 ms GPS2
200 ms Laser 1
200 ms Laser 2
100 ms Compass
25 ms Uteactuators
25 ms Generalute
10 ms INS

همچنین مجموعه ای از ترکیب ۲ ، ۳ یا بیشتر حسگر پیشنهاد می شود . زیرا گاهی اوقات ما فقط احتیاج به ترکیب ۲ یا ۳ تا حسگر برای جستجو یا کنترل داریم . بقیه برای ما بی استفاده است که چرا ممکن است حسگرهای خاصی ضبط شود که فقط از بعضی واسطه های Dos استفاده می کند .

.۵٫۳ طراحی
همانطور که قبلاً بحث شد ما مجبوریم دو نرم افزار انفرادی طراحی کنیم : یکی برای ute و دیگری برای اپراتور . برنامه ute کاملاً ساده و درست برای اشاره کردن است در صورتیکه برنامه اپراتور کمی بیشتر پیچیده باشد . معماری نرم افزار اصلی بوسیله گراف زیر خلاصه شده است .اولین چیزی که انجام می شود بوجود آوردن ارتباط بی

 

ن دو کامپیوتر بوسیله الحاق آدرسهای IP به یکدیگر است . پس اپراتور یک پیغام به ute می فرستدجایی که آن برای بعضی دیتاهای خاص (معمولاً دیتای حسگرها) درخواست می کند . نرم افزار ute داده را از حافظه اشتراکی می خواند (حافظه اشتراکی فوق هسته ای ) و آن را به کامپیوتر اپراتور می فرستد . سرانجام نرم افزار اپراتور دیتا را در فایل متنی می نویسد . نرم افزار زمانی که اپراتور آن را می خواهد پایان می یابد و پس در برنامه ارتباط بین آنها را می شکند . در قسمت بعدی ، طراحی
برای هر نرم افزار انفرادی در جزئیات کامل بحث می شود .
شکل ۵-۲ : معماری نرم افزار اصلی
-۵٫۳٫۱ نرم افزار ute
نرم افزار ute خیلی ساده(درست) است . هدف گرفتن پیام جستجو برای داده و فرستادن آن برای گرفتن پل جدید است . این روال دوباره و دوباره تکرار می شود .
اگر یک پیغام دریافت نکند برای همیشه منتظر می ماند . اولین چیز اتصال به حافظه اشتراکی فوق هسته ای است جایی که آن به همه حسگرها دسترسی دارد . آن تمام ساختار حسگرها را در زمان واقعی می خواند . بنابراین ، همه داده های حسگرها هر دفعه بروزرسانی می شوند و هسته حسگرها را بروز رسانی می کند . همه ساختار حسگرها درخواست نمی شوند هر چند تمام ساختارها فرستاده خواهد شد و آنچه نیاز باشد ذخیره خواهد شد . قدم بعدی شناسایی آدرس IP است سپس به نرم افزار دیگر الحاق می شود . یک ارتباط شبکه ای به وجود خواهد آمد . پس آن تا زمانی که پیام دریافت کند همیشه منتظر می ماند . هر پیام دریافتی اساساً هیچ داده ای در آن نخواهد داشت (هر چند ما می توانیم هر داده یا ساختاری را که می خو.اهیم بفرستیم) آن فقط یک message ID خواهد داشت . هر شماره Message ID یک درخواست برای بعضی داده های خاص است . در این مرحله ما یک تابع انتخابی خواهیم داشت که شامل نه حالت مختلف است . اولین حالت فقط یک سیگنال ضربان قلب است . به عبارت دیگر فقط یک چکاپ است اگر ارتباط زنده باشد . ۸ حالت دیگر برای هشت مجموعه مختلف از ساختار حسگرهاست . هر کدام برای حسگرهای انفرادی مانند GPS ، لیزر ، INS و قطب نما می باشد . هر چند encoder و مقادیر کنترلی محرک فقط در دو ساختار مختلف فرستاده می شوند :

یکی شامل تمام موقعیت محرک های encoder چرخه ای و دیگری شامل تمام تنظیمات کنترل گرمایی می باشد .هر معماری حسگر یکبار به خودش فرستاده می شود . سرعت فرستادن داده خیلی سریع و کوچکتر از زمانی است که هر حسگر بروزرسانی م

ی شود . بنابراین ، نرم افزار می‌تواند تمام مقادیر حسگرها را قبل از اینکه بوسیله هر کدام از آنها به تاخیر بیافتد بفرستد . بعد از فرستادن تمام داده های لازم ، آن جدا می شود هر زمان که نرم افزار بوسیله دریافت message ID صفر برای اتصال پایان یابد . شکل زیر معماری را قدم
به قدم برای نرم افزار ute در تمام جزئیات نشان می دهد .
شکل .۵-۳معماری نرم افزار ute

-۵٫۳٫۲ نرم افزار اپراتور
برنامه اپراتور جایی است که تصمیمی باید بوسیله اپراتور گفته شود برای اینکه چه نوع داده خواسته شده در این قسمت اپراتور کنترل کامل روی اعمال ارتباطی شبکه دارد . اولین قسمت الحاق به کامپیوتر ute است که در طرف دیگر باید اجرا شود و برای اتصال منتظر می ماند .برای الحاق ، نرم افزار آدرس IP کامپیوتر را جستجو می‌کند و پس با استفاده از تابع msg-attach اتصال برقرار می کند . قسمت بعد دیتا را شناسایی می کند و زمانی که ارتباطات ساخته شدند . سپس آن ۸ فایل متنی مختلف ایجاد خواهد کرد یکی برای هر حسگر بعد از ایجاد فایلها آن نوع دیتای ذخیره شدند در فایل را با داده و زمان در خط اول می نویسد . خط بعد تعریف هر ستون از داده می باشد . همه آنها با timestamp شروع می شود و سپس دیتای حسگر مانند ارتفاع ، طول ، حالت ، ماهواره و غیره .
(که برخی از مقادیر GPS بود) قسمت بعد یک بخش درون حلقه است که تا وقتی اپراتور بخواهد از برنامه خارج شود همیشه true می ماند . در هنگام شروع اپراتور انتخاب خواهدکرد که آنها چه نوع داده ای را می خواهند از ute تقاضا کنند . آنجا چهار دلیل اصلی وجود دارد :
۱-چک کردن اینکه آیا ارتباط زنده است .
۲-خروج از برنامه و جدا شدن از شبکه
۳-دریافت تمام داده های حسگر و ذخیره آنها در فایل متنی
۴-انتخاب فقط حسگرهای مخصوص – یکی ، دوتا یا بیشتر . در این مرحله ، اپراتور باید حسگرها را یکی یکی تخصیص دهد .
اگر انتخاب نادرست باشد ،اپراتور می تواند هر چیزی را در حال اجرا است متوقف کند و به انتخاب برگردد . بعد از اجرای یک آزمایش و ذخیره بعضی داده ها در همان زمان انتخاب دیگری از حسگرها می تواند ایجاد شود و داده جدید ذخیره خواهد شد. او می تواند در فرایند بوسیله انتخاب خروج وقفه ایجاد کند و نرم افزار از شبکه جدا خواهد شد .
چارت زیر معماری نرم افزار از نرم افزار اپراتور را در تمام جزئیات عملکرد نشان خواهد داد . هر قسمت ممکن است قسمت های کوچک دیگری که ممکن است در آن شامل باشد بسازد .

شکل .۵-۴ معماری نرم افزار اپراتور

-۵٫۴ کدنویسی :
کد نویسی و اشکال گیری در واسط Win32,Dos در visual C

++ انجام شده است . دو کد اصلی نوشته شده است . یک کد برای ute وکد دیگر برای اپراتور نوشته شده است . هر کدام از آنها در بخش بعد بحث خواهد شد .

-۵٫۴٫۱ کد ute
قسمت اول اتصال یا الحاق به فایلهای سربرنامه بود . لیست ز

یر بعضی از فایلهای سربرنامه غیرمعمولی اصلی را نشان خواهد داد :
• #include” msg-bus.h” برای در برگرفتن کتابخانه ارتباطی بی سیم
• #include”Hypshare.h” برای فوق هسته
• #include “hk common.h” برای فوق هسته
• #include “shared Mem Protocol” برای حافظه اشتراکی جایی که حسگرها و داده های محرک ها خوانده می شود .
پس تعیین ساختارهای حافظه اشتراکی حسگرها:
Static void*hksur=NULL;
Static struct aietc_packet*pEtc;
Static struct sic_packet *pll.*pl2;
Static struct pos_packet *pGPSI , *pGPS2;
Static struct ins_packet*plns;
Static struct general UTE Info *pGui;
Static unsigned long Last CmpTime = 1L;
Static struct Compass *pCmp=NULL;
پس تمام ساختارهای حسگرها از حافظه اشتراکی فوق هسته از کامپیوتر ute خوانده می شود .
Hksur=hkusersharedRam(&SZsm);
If (hksur!=Null)
خواندن ساختار برای اولین حسگر لیزری از حافظه اشتراکی :
Pl1=(struct
Sic_packet*)(((char*)hksur)+Laser -offset-in-usershared memory);
خواندن ساختار برای دومین حسگر لیزری ازحافظه اشتراکی :
Pl2=Pl1+1;
خواندن ساختار برای اولین حسگر GPS از حافظه اشتراکی :
PGPS1=(struct

Pos_packet*)(((char*hksur)+GPS1-offset-in-usershared memory);
خواندن ساختار برای دومین حسگر GPS از حافظه اشتراکی :
PGPS2=PGPS1+1
خواندن ساختار برای حسگر عمومی ute مثل encoder از حافظه اشتراکی :
Petc=(struct
Aiet-packet*)(((char*)hksur)+ETC1-offset-in-usershared memory);

خواندن ساختار برای حسگر INS ازحافظه اشتراکی :
PLns=(struct ins-packet*)
(((char*)hksur)+INS-offset-in-usershared memory);

خواندن ساختار برای حسگر قطب نما از حافظه اشتراکی :
Pcmp=(Stuct Compass*)
(((char*)hksur+compass-offset-in-usershared memory);
خواندن ساختار برای ute info عمومی مانند نقاط تنظیمی برای کنترل گرها از حافظه اشتراکی :
Pgui=(struct general ute info*)((char*)hksur
+Etc2-offset-inusershared memory );
قسمت بعدی شناسایی آدرس IP از کامپیوتر ute برای ارتباط آینده باشبکه می باشد :
//cheking the Ip Addresses
Word wversion Requested ;
WSADATA wsa Data ;
Char name [255]

PHOSTENT hodtinfo ;
WVersionRequested=MAKEWORD(2.0);
If(WSAStartup(wVersionRequested , & wsaData )==0)
{
if(gethostname(name , size of (name ))==0)

{
if((hostinfo=gethosbyname(name))!=NULL)
{
own_nade=inet_ntoa(*(struct in_addr*)*hostinfoo->h_addr_list);
Printf (“\n the IP is %s \n \n “.own_node);
}
WSACleanup( ) ;
}
بعد از شناسایی آدرس IP ، ارتباط شبکه ای بی سیم ساخته خواهد شد و تابع
msg-attach از کتابخانه “msg-bus” استفاده می شود . “own-node” آدرس IP است و “۵۲۲۰” شماره پورت انتخابی تصادفی است .
/*connect to the message bus*/
if ((rc=msg-attach(own-node,”5220″))!=MSG-ok
msg-error(rc);
مرحله بعد تا وقتی حلقه همیشه درست می باشد است . بعد از اینکه برنامه تابع
msg-receive را استقاده خواهد کرد ، جایی که آن برای پیاماز کامپیوتر اپراتور و خواندن msg-id منتظر است و پس تصمیم می گیرد کدام مرحله تابع انتخابی را استفاده کند .
Whicle (1) {
Rc = msg_receive (snd_node , snd_task , & msg_id & msg_len , msg_data-1);
If (rc!=MSG_OK)
Msg_error(rc);
Print f(“id is %d\n” . msg_id);
Switch(msg_id)
Case one زمانی است که اپراتور چک می کند آیا ارتباط eth برقرار است . بنابراین پیام دریافتی شامل هیچ چیز به جز ۱ به عنوان ID نیست . case دوباره یک پیغام خالی با ID مساوی ۱ بر می گرداند .
Case 1 ;
{
if((rc=msg_send(“snd-node” , “5110” , 1 , 0 , Null , false))! =(MSG_ok)
msg_error(rc);
break ;
}
باقیمانده case ها داده حسگرها را هر وقت آنها درخوا

ست شوند می فرستد . فقط اولین GPS طرح و توضیح داده شده است .ID برای GPS ، ۲ است . وظیفه اصلی برای این مورد فرستادن ساختار داده GPS2 است .
Case2 ://send GPS1
{
rc=msg-send(own-node, “5110” , msg-id , size of (struct pos – packet) , (char*) PGPS1 , -1
if (rc!=MSG_ok)
Case zero جایی است که کاربر برای پایان دادن برنامه و شکستن ارتباط شبکه بی‌سیم سوال می کند .

Case 0;
{
if((rc=msg-detach( ))!=MSF-ok)
msg-error(rc);

-۵٫۴٫۲ نرم افزار اپراتور
اولین قسمت الحاق فایلهای سربرنامه بود . لیست زیر بعضی از فایلهای سربرنامه نامعمول اصلی را نشان میدهد .
#include<time-h>0 برای شناسایی داده و زمان
#include “msg-bus.h” که کتابخانه ارتباطی بی سیم را در بر می گیرد .
#include “shared mem protocol .h” برای حافظه اشتراکی جایی که حسگرها و داده های محرک خوانده می شوند :
قسمت بعد شناسایی آدرس IP ازکامپیوتر اپراتور برای ارتباط آینده به شبکه است .
Checking the IP Addresses
WORD wVersionRequested;
WSADATA wsa Data ;
Char name [255];
PHOSTENT hostinfo ;
WVersionRequested=MAKEWORD(2.0);
If(WSAStartup (wVersion Requested . &wsaData)= = 0)
{
if(gethostname(name , size of(name)) = = 0)
{
if((hostinfo=gethostbyname(name))!=NULL)
{
ip=inet_ntoa(*(

struct in_addr*)*hostinfo->h_addr_list);
printf(“\n the IP is %s \n \n”,ip);
}
}
WSACleanup( ) ;
}
بعد از شناسایی آدرس IP ، ارتباط شبکه ای بی سیم که تابع msg-attach از کتابخانه “msg-bus” را استفاده می کند ، ساخته خواهد شد ، “own-node” آدرس IP است و “۵۱۱۰” شماره پورت انتخابی تصادفی است .
/* Connect to the message bus*/
if((rc=msg-attach (ip,”5110″)) ! =MSG-ok)
ms_error(rc) ;
قدم بعد خواندن داده و eth time از کامپیوتر است . داده و زمان از سیستم عملکرد windows خوانده می شود .
//time
time(&bintime);
curtime=Localtime(&bintime);
قدم بعد باز کردن ۸ فایل مختلف است که هر یک برای یک حسگر مخصوص است . فایلها در فرمت ASCII هستند . خط اول تعیین اینکه فایل شامل چه چیزی است می‌باشد و پس اینکه چه داده و زمانی ایجاد می شوند . بعد از آن ، مقدار هر ستون تعیین خواهد شد . آن باستون مرتب نمی شود اما برای تعریف داده به اندازه کافی واضح است . مثال زیرفقط برای داده GPS1 است . باقیمانده فایلهای حسگرهای eth ایجاد شده ، روالهای مشابهی را استفاده می کنند .
//Oppening GPSI
if(FGPSI = fopen(“FGPSI.txt”,”W”))= = NULL)
printf(“The file was not opened\n”);
fprintf(FGPSI) “The File Contains the First GPS Data in:%s” ,
ctime(&bintime));
fprintf(FGPSI,”timestamo , latitude , longitude, altude , altitude , ttcorse , speedog ,
vspeed , sigmaLati , sigmaLongi , sigmaAlti , mode , satellites”);
در این مرحله ،‌اپراتور می تواند روی یکی از چهار option اصلی تصمیم بگیرد :
۱-حرف “e” برای خروج
۲-حرف “a” برای همه حسگرهایی که دریافت و ذخیره شده اند .
۳-حرف “p” برای چک کردن اینکه آیا ارتباط برقرار است .
۴-حرف “s” برای انتخاب بعضی حسگرهای خاص و / یا داده های محرک
While(msg_id!=0)
{
if(id_imput!=”0″|id_imput)=”1″|id_imput!=”2″|id_imput!=3)
{
printf(“\n Please ch

oose one of the following options ; \n”);
printf”\n->the letter “0” to exit ……..n”);
printf(“\n->the letter “2” for all the sensors to be retrieved and saved……..n”);
printf(“\n->the letter “1” to check if the connection is alive……..n”);
printf(“\n->the letter “3” to select some spe

cific sensors and / or actuators data\n”);
gets(id)input);
}
اگر عدد “۰” انتخاب شود ، اپراتور می خواهد خارج شود بنابراین پیام به ute که ID صفر را برای درخواست قطع ارتباط شبکه خواهد داشت فرستاده می شود . پس دو کامپیوتر از شبکه جدا خواهد شدو پیوند ارتباطی خواهد شکست .
IF(id_imput= = 0)
{
msg_id=0 ;
if((rc=msg_send(ip,”5220″ , msg_id, 0 , NULL, FALSE))! = MSG_OK)
printf(“NO CONNECTION %d” , rc);
if((rc=msg_detach())!=MSG_OK)
msg_error(rc);
}
اگر عدد “۱” انتخاب شود‌، اپراتور چک می کند آیا ارتباط برقرار است . بنابراین یک پیام با ID مساوی یک فرستاده می شود و یک پیغام با اپراتور که هر یک ثانیه می‌گوید من موجودم چاپ می شود . اپراتور می تواند این فرایند را با فشار دادن هر کلید قطع کند .

If(id_imput= = “1”)

 

{
while(!_kbhit())
{
msg_id=1;
if((rc=msg_send(ip,”5220″ , msg_id, 0 , NULL , FALSE))! = MSG_OK)
printf(“NO CONNECTION%d”,rc);
msg_receive(snd)nodel , snd_task1,&msg)id,&msg_len,msg_data,-1);
sleep(1000);
printf(“i”am alive\n”);
}
id_input=1;}

اگر عدد “۲” انتخاب شود یعنی اپراتور بعد از همه دیتاهای حسگرها ذخیره می شود . کد ریز نشان خواهد داد که چگونه هر قسمت یک حسگر را فراخوانی می کند و بعد از دریافت داده برای حسگر بعدی فراخوانی می کند . زمان برای بروزرسانی هر حسگر متفاوت است زیرا گاهی اوقات یک حسگر راقبل از اینکه بقیه را فراخوانی کنم بیشتر از یک بار فراخوانی می کنیم . ساختار فراخوانی و زمان بندی ، استفاده برای حساب کردن هر عبارت را کنترل می کند و تابع steep برای زمان بندی .

If((id)imput = = 2)
{msg_id=2;
if((rc=msg_send(ip,”5220″ , msg_id , 0 , NULL , False))! = MSG_OK)
printf(“NO CONNECTION?d” , rc) ;
while (!_kbhit())
{for)int d=0 ; d<1 ; d++)
{
//GPS1
msg_receive (snd_node1,snd_task1, &msg_id , msg_len,msg_data,-1);
GPS1=*pos_packet*)msg_data;
fprintf(FGPS1,”%d %d %d %d %d %d %d %d %d %d %d \n” , GPS1 , timestamp , GPSI . latitude , GPSI . longitude , GPSI . altitude , GPSI . ttcourse , GPSI . speedog , GPSI , vspeed , GPSI . sigm aLati , GPSI . sigmaLogi , GPSI . sigmaAlti, GPSI . mode , GPSI . satellites) ;
msg_send(ip, “5220” , 3 , 0 , NULL , FALSE) ;

//GPS 2
msg_receive (snd_node1 , snd_task1 , &msg_id , & msg_len , msg_data , -1);
GPS2 = *(pos_packet *)msg_data ;
Fprintf(FGPS2 . “%d %d %d %d %d %d %d %d %d %d %d \n” , GPS2 , latitude , GPS2 , longitude , GPS2 , altitude , GPS2 , ttcourse , GPS2 , speedog , GPS2 . vspeed , GPS2 , sigm aLati , GPS2 . sigmaLongi , GPS2 . sigmaAlti ,GPS2 , mode , GPS2 . satellites , GPS2 . timestamp);
Msg_send(ip,”5220″ , 4 , 0 , NULL , FALSE) ;

//Laser1
msg_receive (snd_node1 , snd_task , &msg_id & msg_len , data , -1);
l1=*(stc_packet *)msg_data;

for(j=0;j<361;j++)
{l1 . range [j];
fprintf(Flaser1,”%d” , l1.range [1]);}
fprintf(Flaser1,”\n” );
msg_send(ip,”5220″ , 5 , 0 , NULL , FALSE);

//Laser 2
msg_receive(snd_node1, snd_task1 , &msg_id , &msg_len , msg_data, 1);
l2=*(sic_packet*)msg_data;
for (j=0 ; j<361 ; j++)
{l2 . range [j] ;
fprintf(Flaser2 , “%d” , l2 , range[j];}
fprintf(Flaser2 , “\n” );
msg_send (ip, “5220” , 6 , 0 , NULL , FALSE);
for(intc=0 ; c<2 ; c++)
{
// Compass
msg_receive (snd_node1 , snd_task1 , &msg)id , &msg_len , msg)data , -1);
Cmp = *(Compass*)msg_data;
Fprintf(Fcompass , “%d %d %d\n” , Cmp . Heading , Cmp.Pitch , Cmp . Roll);
Msg_send (ip, “5220” , 8 , 0 , NULL , FALSE) ;
For(int b=0 ; b<5 ; b++)
{
//Actuators
msg_receive (snd_node1, snd_task1 , &msg_id , &msg_len , msg_data , -1);
lns=*(ins_packet*)msg_data;
fprintf(Factuators , “%d %d %d %d %d\n” , Etc.Counts , Etc . Accelerator , Etc.Streering , Etc . Brake , Etc.timestamp);
msg_send (ip , “5220” , 9 , 0 , NULL , FALSE);

//send Ute Info
msg_receive (snd_nodel , snd_task1

, &msg_id &msg_len , msg_data , -1);
Gui=*(general UTE Info*)msg_data ;
Fprintf(Factuators , “%d %d %d %d %d %d %d %d %d %d\n” Gui.PID_A.Kp, Gui.PID_Aki,Gui.PID_A.Kd , Gui , PID_A.SeMa

x , Gui.PID_A.yMin , Gui.PID_A.y.Max, Gui.PID_A.spoint , Gui . Steering Control Mode , Gui , manual_steering);
Msg_send (ip , “5220” , 7 , 0 , NULL , FALSE) ;
For(int a=0 ; a<2 ; a++)
{
//INSmsg_receive(snd_nodel , snd_task1 , &msg_id , &msg_len , msg_data, -1);
Ins = *(ins_packet*)msg_data;
Fprintf(FINS,”%d %d %d %d %d %d %d %d\n” , Ins.bank,Ins.elev , Ins.ax , Ins.ay , Ins.az . Ins.gx , Ins.gy , Ins.gz);
Msg_send (ip , “5220” , 2 , 0 , NULL , FALSE );
Printf(“Count%d\n”,a);
Sleep(10) ;
} } } } }
printf(“\n Please Enter the ID Number \n” );
gets(id_input);,}
اگر اپراتور عدد “۳” را انتخاب کند او مجبور است یک سری از انتخابها را طی کند . برنامه از او هر مجموعه ساده از داده های حسگر را می خواهد اگر احتیاج به خواندن و ذخیره شدن باشد . پس هر وقت حسگر انتخاب نشد ذخیره آن در txt ممنوع می‌شود . ساختار آن قسمت دقیقاً شبیه قسمت قبل است . اگر عبارت برای انتخاب باشد .

-۵٫۵ آزمایش و تعمیر و نگهداری
بعد از اشکال گیری کدها و رهایی از خطاهای اشکال گیری اصلی و اخطارها ، بعضی کدهای ضعیف کشف می شود . من در تعمیر بعضی از آنها موفق بودم اما بقیه مشکل بودند و احتیاج به مقدار زیادی زمان داشتند . قسمت بعد درباره بعضی از ضعف های کدها بحث خواهد کرد : بدلیل اینکه نرم افزارها در زمان واقعی اجرا می شوند وبرنامه ute حافظه اشتراکی فوق هسته ای را استفاده می کند . ما مجبوریم نرم افزار فوق هسته را برای خواندن حسگرها در زمان واقعی اجرا کنیم و آنها را در حافظه اشتراکی ذخیره کنیم . بنابراین ، نرم افزار ute به دیتای تازه حسگر دستی خواهد داشت و آن را به اپراتور از طریق شبکه ارتباطی بی سیم خواهد فرستاد .
هر چند این ممکن است کوشش ناخواسته زیاد

ی بخواهد . همانطور که قبلاً بحث شد، ما قادریم پس واژه های حسگر برای ذخیره در فایلهای متنی انتخاب کنیم . هر چند اگر ما اول GPS1 را برای ذخیره انتخاب کنیم ، بوسیله لیزر دنبال می شود و به دوباره به داده GPS1 بر می گردد . هر وقت ذخیره کردن از قسمت قبل GPS1 با یک مجموعه جدید از time stamp ها تمام شد ادامه

می یابد . هر چند اگر ما نرم افزار را خارج کنیم و آن را دوباره با انتخاب GPS1 اجرا کنیم ، آن در داده GPS1 موجود رونویسی خواهد شد . پیشنهاد می شود فایلها هر بار که آزمایش تمام می شود در دایرکتوری های مختلف ذخیره شود . یک راه حل این است که به برنامه اجازه دهیم هر بار که آن را اجرا کنیم یک دایرکتوری جدید ایجاد کند ، جایی که نامش

به داده و زمان مرتبط باشد و دیتا را در آن ذخیره کند . ضعف دیگر که کشف شد این است که اگر ما باعث شویم که برنامه اپراتور داده مورد نیاز را روی صفحه چاپ کند آن پردازنده را کند خواهد کرد و خواندن پردازش داده را کندتر می کند که منجر به تاخیر ر بروزرسانی حسگر می شود . بنابراین چاپ داده روی صفحه بخاطر جلوگیری از هر تاخیری کنسل شد . همه داده ها فقط در فایلهای متنی ذخیره می شوند . خروجی داده متنی اول به عنوان فایلهای ASCII ایجاد شد . پیشنهاد شد فایل های داده ای بزرگتر را به عنوان دررویی ذخیره شود .
هر چند هنگام استفاده از کامپیوتر اپراتور فضا مساله مهمی نیست . داشتن یک هارددیسک حداقل ۱۰ گیگابایتی برای یک ساعت آزمایش داده های حسگر کافی می‌باشد . هر چند اگر فایلهای نوعی دودویی احتیاج باشد آن برای پیاده سازی ذخیره آپشن یک آپشن ساده می باشد قبل از اینکه فایل ایجاد می شود . من ترجیح می دهم ASCII را استفاده کنم زیرا برای فهمیدن آسان تر است و برای استفاده برای نمودار کشیدن یا فیلتر کردن بدون احتیاج هر کد یا کتابخانه برای ترجمه آسان تر است . بات نرم افزار اپراتور ، کاربر یک انتخاب از مجموعه داده های مخصوص انتقال می دهد و در ابتدای برنامه ذخیره می کند . در این مرحله یک ورودی اشتباه منجربه پیاده سازی یک تصمیم اشتباه می شود . بنابراین ، یک روال کشف خطا برای جلوگیری از دستورات ورودی اشتباه طراحی شد که منجر به پردازش و پیاده سازی کد اشتباه می‌شود .

*In the name of the uniqe and peerless *
*creator *
The God
1ـ مقدمه:
۱،۱ـ سابقه پروژه (HSV) وسیله نقلیه با سرعت بالا یک پروژه موفقیت آمیز انجام شده توسط مرکز ربوتیک فیلد استرالیا(ACFR) به سال ۱۹۹۷ بر می گردد. هدف ا

ولیه دانشجویان و محققان در این پروژه عبارت اند از توسعه الگوریتم های ناوبری و کنترل بر منظور عملیات مستقل وسیله نقلیه زمینی در حال کار در محیط های نامعلوم بوده است. اولین نسخه آزمایشی از یک اتومبیل مجهز به تجهیزات کمودور سری S هولدن، با یک سری از حسگرهای فعال سازها، جمع آوری کننده اطلاعات و سیستم کنترل ساخته شد.
هدف از پروژه HSV عبارت اند از توسعه فن آوری ها برای اتوما

سیون(خودکار سازی) یک وسیله نقلیه می باشد که در سرعت بالا ( بیش از ۹۰km/h ) در یک سری از محیط های « حقیقی» کار می کند. پروژه توسط ACFR وcanTE بودجه گذاری می‌شود.
عنصر « سرعت بالا» پیچیدگی سیستم را افزایش می دهد که این امر مستلزم نگاه و بررسی بعدی است. این موضوع اهمیت ملاحظه میزان وسعت پی آمدهای حرکت در آینده را یادآور می شودـ یعنی تمام آنچه که لازم است در زمینه لایه های چندگانه پردازش شکل ها و حالت های خرابی، بی خطر، و زائد صورت گیرد.
برای محقق نمودن چنین سیستمهایی، پروژهHSV تمام جنبه های ناوبری وسیله نقلیه خودکار شده را تحقیق می کند. این فرایند می تواند به چهار مرحله تقسیم شود:
۱) آگاهی و مدل سازی محیط
۲) قرار دادن وسیله نقلیه در داخل محیط (اش)
۳) طرح ریزی و تصمیم گیری درمورد حرکت مطلوب وسیله نقلیه
۴) اجرای حرکت مطلوب وسیله نقلیه
توسعه سیستم های کنترل نیرومند و مطمئن که توسط یک وسیله نقلیه مستقل برای کار در سرعت بالا لازم می باشد( و اغلب در محیط های جهان حقیقی و ساختار بندی نشده بکار می رود) یک کار پر زحمت است. روش ها و الگوریتم های اجرا شده و اعمال گردیده بر روی روبوت های متحرک( محیط داخلی) که در حال کار در محیط های ساختار بندی شده و بی حرکت ( ایستا) هستند اغلب برای یک وسیله مستقل و با سرعت بالا، نامناسب می باشند. هدف غایی و نهایی این پروژه عبارت اند از طراحی نمودن سیستمی است که بتواند موقعیت مکانی وسیله نقلیه را در محیط های ساختار بندی نشده و نامعلوم تعیین کند و آن را برای اجرای کار در یک مسیر مورد نظر با دقت در حد سانتیمتر، کنترل و اداره نماید.

۱٫۲ ـ حسگرها و فعال کننده های HSV
کار تحقیق و توسعه بر روی یک وسیله نقلیه آزمایشی پروژه HSV آزمایشی، رفع عیب و ارزیابی واجرا می شود. این وسیله نقلیه موسوم “vte’’ توننده برای اتوماسیون کامل، مورد بررسی قرار می گیرد. یک کامپیوتر شخصی پنتیوم II با قدرت ۴۰۰MHZ و ۶۴MB RAM که با نرم افزار ویندوزNT و سیستم عامل پیوسته(بلادرنگ) QNX کار می کند در سینی Ute قرار داده می شود و از تجهیزات تحصیل و جمع آوری دیتا ( اطلاعات خام)( از قبیل یک مبّدل A/D ) برای ارتباط بین حسگرها و فعال سازها استفاده می گردد. در داخل کابین، در سمت مسافر( غیر راننده) یک مونیتور نمایش نصب شده است تا نظارت بر عملکرد سیستم در طی آزمایش ( تست) امکان پذیر باشد.
یک سری از حس گرها برای استفاده بر روی “ute” موجود می باشد که ترکیب بندی‌ها و حق انتخاب های حس کردن محیطی و تعیین موقعیت بالقوه متعددی را
فراهم نماید.

حسگرهای بکار رفته به شرح زیر می باشند:
واحد GPS دیفرانسیل (جزئی)، سیستم ناوبری اینرسی INS ، لیزر یاتاقان sick ،LVDT ، کد کننده چرخ، رادارـMM ، دید پانورامیک، پتانسیومتر دریچه گاز سه سیستم فعال سازی( برای هم زدن، دریچه گاز و ترمز) نیز در محل وجود دارند که به ute اجازه می دهند که تحت کنترل مستقل کامل کار کند. شرح مختصری از ترکیب بندی این سیستم ها ارائه می شود:
• فعال کننده هم زدن ( گردش) و کنترل: یک موتور DC که در محل راننده نصب شده است و میله فرمان را از طریق گیربکس کاهش سرعت دنده مارپیچ و یک کلاچ الکترومغناطیسی می چرخاند.
• فعال کننده و کنترل دریچه گاز: یک فعال کننده خطی که جابجایی سوپاپ پروانه کاربراتور را کنترل می کند( که توان خروجی موتور را از طریق یک کابل راهنما تعیین می کند.
• فعال کننده و کنترل ترمز: یک فعال کننده خطی ثانوی( که زیر صندلی راننده نصب شده است) و وضعیت پدال ترمز را مستقیماً کنترل می کند. اتصال فیزیکی بین پدال و فعال کننده از طریق دو کابل صورت می گیرد، که در قسمت جلوی پای راننده وصل می گردد.

۳،۱۰ـ حسگرهای HSV :

 

یک مجموعه از حسگرها برای استفاه بر روی “Ute” وجود دارد که ترکیب بندی ها و راههای انتخاب محیطی و محل بالقوه آنها را فراهم کرده اند. در بخش بعدی این فصل حسگرهای بکار رفته در Ute فهرست وشرح داده می شود.
ساختارهای اطلاعات منتقل شده بصورت بی سیم که توسط هر حسگر تولید می شود نیز با شرح مختصری ارائه می شوند.۱٫۳٫۱ـ واحدGps دیفرانسیل ـ سیستم موقعیت جهانی یا Gps واحدی است که می تواند اطلاعات سرعت و موقعیت را فراهم کند. با استفاده از یک سری ماهواره در حال گردش دور زمینی، در مدارهای معلوم، واحد می تواند تعیین کند که درکجا و با چه جهتی واحد در حال حرکت است. سیستم روی HSV موسوم به یک Gps دیفرانسیل است که دقت بالاتر را به اطلاعات دریافت شده تبدیل می نماید. یک ایستگاه پایه در یک محل جغرافیایی معلوم بر پا می شود و اطلاعات دریافتیGps در این محل را جمع می کند و یک برآورد خطای Gps می تواند صورت گیرد. این خطا سپس، از طریق ویدئو به کامپیوتر ( رایانه) HSV فرستاده می شود که بعداً خطای برآورد شده از اطلاعات Gps جمع آوری شده از واحدGps واقع بر روی آن، حذف می نماید. اطلاعات جمع آوری شده از چنین سیستمی یک موقعیت جهانی در شمال، شرق، و پایین ( ارتفاع عمودی) و سرعت های واحد در این فریم ها را فراهم می کند. شش مقدار اصلی اطلاعات بکار رفته وجود دارند، ولی اطلاعات موجود بر روی سیستمGps نیز فراهم می شود، مثلاً تعداد ماهواره های اطلاع رسانی به واحد و انواع سیگنال های مجزا را می توان نام برد.
شکل ۱ـ۱ : Gps دیفرانسیل
اطلاعات ارسال شده بطور بی سیم عبارت اند از:
ارتفاع=altitude زمان=time stamp

؟=tt course عرض جغرافیایی = latitude
سرعت افقی زمینی= speedog طول جغرافیایی= longitude
سرعت عمودی= Vspeed عرض سیگما= Sigmalati
مودGps = mode طول سیگما= Sigmalong
تعداد ماهواره= Sattelites ارتفاع سیگما= Sigma Alti

۱٫۳٫۲ـ سیستم ناوبری اینرسی:
INS سیستم ناوبری اینرسی است و یک جعبه سیاه است که دارای یک سری حسگر می باشد و شامل ژیروسکپ ها، شتاب سنج هایی است که در جهت سه محور عمود برهم آرایش یافته اند.
• ژیروسکپ ها سرعت زاویه ای را اندازه می گیرند. و سرعت ماشین در هنگام افزایش و یا کاهش شتاب آن در هر جهت تعیین می شود.
• شتاب سنج ها شتاب را اندازه می گیرند و افزایش و کاهش سرعت درهر جهت تعیین می گردد.
• شیب سنج ها، شیب را می سنجند.
این امر اطلاعات را در تمام شش درجه آزادی فراهم می نماید: یعنی شتاب وسرعت زاویه ای در هر سه محور، با زاویه های نسبت ژیروسکپ های آویزان تعیین می شود. و به کمک آن برآورد موقعیت HSV از طریق انتگرال گیری شتاب و سرعت زاویه ای برای تعیین موقعیت مکان و جهت انجام می گردد. اطلاعات انتقال یافته بطور بی سیم:
timestamp: // timestamp(inmilliseconds)
bank: // bank
elev: // elevation
ax: // acceleration along x-axis
ay: // accelertion along y- axis
az: // acceleration along z-axis
gx: // angular acc. About x-axis

gy: // angular acc.about y-axis
gz: // angular acc. About z- axis
1.3ـ سیستم ناوبری لیزری
لیزر Sick
برای بدست آوردن تصویری از محیط اطراف HSV ، یک لیزر در جلوی HSV قرار دارد. لیزر یک پالس لیزر مادون قرمز را منتشر می کند که پس از برخورد به هر شی درمجاورت آن، منعکس می شود. زمان بازگشت اشعه در (پالس مادون قرمز) به واحد اندازه گیری می ود و سپس با استفاده از سرعت نور، فاصله شیء از دستگاه لیزر می تواند اندازه گیری شود. تصویری از محیط توسط دوران و چرخش لیزر ایجاد می شود و نمونه هایی تحت فاصله های زاویه های معلوم تهیه می شود.
شکل ۲ـ۱ : لیزرSick

نمونه ها تحت هرْ۰٫۵ تهیه می شوند وبرای محدوده تا ْ۱۸۰ و به فاصله حداکثر تا ۸۰ متر این نمونه برداری این کار صورت می گیرد. اطلاعات ارائه شده برای هر حسگر به صورت یک سری عدد برای هر نمونه می باشد و بطور کلی ۳۶۱ عدد قرائت می شود. این مدل، شدت، سیگنال برگشت را می فراهم می کند که در همان فرمت ارائه می شود.

اطلاعات انتقال بی سیمی
timestamp: // timestamp ( in milliseconds)
range : // Laser Range 180o for 360 section

۱٫۳٫۴ـLVDT
یکLVDT یک دستگاه اندازه گیری است که از نیروی الکترومغناطیسی استفاده می کند که در حرکت یک هسته آهنی توسط دو سیم پیچ الکترومغناطیسی القا می شود. LVDT این قانون را برای اندازه گیری حرکت خطی بکار می برد و دو سر ( انتها) را به فاصله خطی لازم برای اندازه گیری وصل می کند. برایHSVD ، این دستگاه به سیستم فرمان Ute وصل شده است و یک مقدار جابجایی حرکت فرمان ماشین( بصورت زاویه ای) را در

نظر می گیرد. برای پرهیز از خسارت به سخت افزار فرمان(steering) ، یک سری زاویه های چرخش فرمان معینی از قبل فرض شده اند طوری که فعال کننده ها مجبور به عمل درخارج از محدوده فیزیکی معینی نباشند.
اطلاعات منتقل شده بی سیم
مقدار LVDT حسگر فرمانی// ( فرمان): steering
( محاسبه شده) توان خروجی فرمان واقعی// ( توان خروج

ی فرمان – حقیقی )real-steerin-output
1.3.5ـ کد کننده فرمان ـ کد کننده چرخ ROD-430 از کد کننده های سرعت دوران جزئی از شرکت Heidenhain می باشد. کد کننده ها بر اساس قانون روش الکتریکی شبکه خطوط به تعداد بین ۵۰ تا ۵۰۰۰ تبعیت می کند. اتصال محور به کدکننده های چرخ می تواند تا ۱۲۰۰۰rpm نوسان کند. سیگنال های خروجی برای این مدل خاص سیگنال های موج مربع HTL هستند و یک مدار را شامل می شوند که سیگنال های اسکن کردن سینوسوئیدی را دیجیتال( رقومی) می نماید و ردیف پالس با جابجائی فاز ۹۰ درجه و یک پالس مرجع را فراهم می نماید./ کد کننده توسط ۱۲V برق مستقیم از جعبه فیوز، قدرت می گیرد.
شکل ۳ـ۱ encoder چرخنده
اطلاعات
مقدار شمارش پتانسیومتر:Counts
1.3.6ـ قطب نما: یک منبع دیگر از اطلاعات وسیل

ه نقلیه است که نسبت به شمال مغناطیسی اندازه گیری انجام میدهد. قطب نما از نوع TCMZ می باشد. تمام قطب نما ها باید دقیق باشند بنابراین TCMZ از یک شیب سنج دقیق استفاده می کند تا پردازشگر بتواند میزان انحراف را تصحیح نماید. تمام اندازه گیری های زوایای دوران و انحراف و اندازه گیری های میدان مغناطیسی و توان خروج

ی توسط قطب نما انجام می شود. این اطلاعات اضافی به TCMZ اجازه می دهد تا دقت بیشتری توسط کالیبره کردن در تمام موقعیت ها فراهم گردد و یک آلارم فراهم شود هنگامی که اختلالات مغناطیسی محلی موجود باشند و هشدارهایی ارائه شود هنگامی که دستگاه خیلی منحرف شده باشد.
اطلاعات منتقل شده بطور بی سیم:
timestamp B: // timestamp ( inmilliseconds)
Heading: // latitude ( in degrees)
Pitch: // longitude 9in degrees)
Roll: // altitude (in metres)
1.3.7ـ پتانسیومتر دریچه گازـ برای کنترل دریچه گاز، بازخورد موقعیت دریچه گاز از یک پتانسیومتر بدست می آید که درداخل فعال کننده خطی نصب شد. پتانسیومتر شامل یک تقسیم کننده حجم است که در آن میله خروجی پتانسیومتر با میله فعال کننده حرکت می کند. پتانسیومتر اعداد از ۱۰۰۰ تا ۱۰۰۰۰ اهم را می خواند و دامنه ولتاژ خروجی آن توسط دو ولتاژ Vpot- و Vpot+ بکار رفته در کرانه های مقاومت پتانسیومتر، داده می شود. ولتاژ بکار رفته در دو کرانه عبارت اند از-۸٫۶V و +۸٫۶V می باشد و دامنه ولتاژ پتانسیومترV-8.6 و+۸٫۶V است. دریچه گاز با میله فعال کننده حرکت می کند تا اینکه دریچه گاز به موقعیت حداکثر یا حداقل می رسد. لذا، درناحیه فعال، یعنی ناحیه ای که دریچه گاز با میله فعال کننده حرکت می کند، فاصله طی شده توسط میله فعال کننده نیز فاصله طی شده توسط دریچه گاز است و بنابراین قرائت ولتاژ از پتانسیومتر نیز متناسب با وضعیت در دریچه گاز است.
اطلاعات منتقل شده بی سیم:
مقدار حسگر شتاب // : شتاب دهنده

۱٫۳٫۸ـ پتانسیومتر ترمز:
برای کنترل دریچه گاز، بازخورد وضعیت د

ریچه گاز از یک پتانسیومتر بدست می آید که در داخل فعال کننده خطی نصب است. پتانسیومتر شامل یک تقسیم کننده ولتاژ است در جایی که میله خروجی پتانسیومتر با میله فعال کننده حرکت می کند. پتانسیومتر از ۰ تا ۱۰۰۰ اهم را می خواند و ولتاژ خروجی آن توسط دو ولتاژ Vpot- و Vpot+ داده می شود که درکرانه های مقاومت پتانسیومتر بکارمی رود. ولتاژهای بکاررفته در دو کرانه –۸٫۶V و Vpot+ است و بنابراین

ولتاژ پتانسیومتر بین V-8.6 و+۸٫۶V تغییر می کند. پدال ترمز با میله فعال کننده حرکت می کند تا اینکه پدال ترمز به وضعیت های حداکثر یا حداقل خودش می رسد.
اطلاعات منتقل شده بطور بی سیم
مقدار حسگر ترمز // : ترمز

۱٫۴ـ فعال کننده و کنترل کننده
۱٫۴٫۱ـ کنترل کننده ها و فعال کننده فرمان
قسمت گردان در HSV می تواند به دو شیوه فعال شود: دستی یا خودکار. یک موتور DC برای حرکت از طریق یک جعبه دنده کاهش سرعت مارپیچ بر روی مکانیزم گردش استفاده می شود تا بتواند با یک سرعت متغیر به چپ یا راست حرکت نماید.
شکل ۴ـ۱: فعال کننده گردش

: اجزاء
: موتور
۵A : جریان ولت۲۴ : ولتاژ ۱۲۰W : قدرت
۲۰۰۰rpm (20q rad/s) : سرعت
ْ۹۰ : دوران کاهش سرعت مارپیچ :گیر بکس ۱: ۴۰ : نسبت
( دقیق نیست) %۹۰ : راندمان
گشتاور: گشتاور مورد نیاز: ۸NM
گشتاور موتور P/w = 120/20qs 05742NM = سرعت/ توان
گشتاور ایجاد شده توسط گیربکس = راندمان گشتاور موتور نسبت = ۰٫۹
۰٫۵۷۴۲ ۴۰ = NM20.6aa
بنابراین گیربکس/ موتور گشتاور کافی برای گردش ایجاد می کند.
کلاچ:کلاچی که استفاده می شود یک کلاچ الکترومغناطیسیLenze 10NM می باشد. یک کلاچ الکترومغناطیسی استفاده شد تا بتواند ماشین را با استفاده از یک کلید واحد از مود مستقل به مود دستی، سوئیچ نماید.

درگیر شدن: کلاچ های الکترومکانیکی از طریق یک فعال سازی الکتریکی عمل می کند، اما گشتاور را بطور مکانیکی منتقل می نماید. وقتی کلاچ لازم باشد تا فعال گردد، جریان / ولتاژ برای کوئل کلاچ استفاده می شود. کوئل الکترومغناطیسی می شود و خطوط فلو ( شار) مغناطیسی تولید می گردد. این فلو از طریق فاصله هوایی

بین میدان و روتور انتقال داده می شود. بخش روتور ازکلاچ مغناطیسی می شود و یک حلقه مغناطیسی ایجاد می نماید که آرماتور را جذب می کند. آرماتور در مقابل روتور کشیده می شود و یک نیروی اصطکاک درتماس بکار برده می شود. ظرف مدت نسبتاً کوتاهی، بار شتاب داده می شود تا با سرعت روتور مناسب شود و بدان وسیله آرماتور و توپی خروجی کلاچ درگیر می شوند. در اکثر موارد، روتور بطور ثابت با ورودی در تمام اوقات می چرخد.
رها شدن: وقتی ولتاژ جاری از کلاچ قطع می شود، آرماتور آزاد می گردد تا با محور شفت بچرخد. در اکثر طراحی ها، فنرها آرماتور را از سطح روتور دور نگه می دارند هنگامی که برق قطع می شود، و یک فضای کوچک ایجاد می ود ک دو قطعه را قادر می سازد تا بچرخند.
کنترل سیستم:LVDT وضعیت ترک چرخان را می خواند و یک سیگنال ولتاژ به صورت مقدار‌بازخورد‌اتخاذ‌می‌شود. خطای بین این مقدار و نقطه تنظیم ارزیابی می‌شود
و الگوریتم کنترل، یک خروجی جدید را برای فعال کننده گردش، تعیین می کند.
شکل ۵ـ۱
تقویت کننده: کنترل کننده موتور DC بکار رفته، یک تقویت کننده سرو و برس DC کنترل حرکت پیشرفته سری A25 است. این کنترل کننده موتور قادر به بیرون دادن DCV24+/- در جریان های تا A30 با استفاده از استانداردهای صنع

تی سیگنال های کنترل +/-۵V می باشد. این کنترل کننده در موارد کنترل مدار بسته برای کنترل سرعت و موقعیت مکانی استفاده می شود.
فعال سازی: با تغییر دادن ورودی ولتاژ برای

موتور از –۲۴ تا +۲۴V ، می توانیم سرعت و موقعیت موتور را کنترل کنیم. ولتاژ متغیر توسط ضرب کردن خطا در kp از کنترل کننده PID ( تناسبی مشتقی انتگرالی) محاسبه خواهد شد.

۱٫۴٫۲ـ کنترل و فعال کننده دریچه گاز
فعال کننده: فعال کننده دریچه گاز انتخاب شده یک فعال کننده خطی است که توسط یک موتور ۲۴V 1.25ADC ( جریان حداکثر) راه اندازی می شود که از “یاتاقان های خطی ” در NSW خریداری می شود. مدل فعال کننده خطی بصورت LAR.3 درخواست می گردد، و دارای یک بار حداکثر ۲۰۰N است و سرعت حداکثر ۴۸mm/3 و طول ضربه ۱۰۰mm می باشد.
این فعال کننده انتخاب گردید زیرا سریعترین فعال کننده یافت شده است که نیاز های زیر را تامین کرد.
• ۴۵mm > طول ضربه( حداکثر جابجایی دردریچه گاز اندازه گیری شده)
• با قدرت ۲۴VDC
• ( حداکثر نیروی اندازه گیری شده درحالیکه دریچه گازجابجا می شود)>100N حداکثر بار
سیستم مکانیکی کنترل: برای  همان کابل های بکار رفته برای اتصال پدال گاز و دریچه گاز). وقتی که میله فعال کننده واکنش می کند، کابل را همراه با آن می کشد. این امر موجب افزایش میزان باز شدن سوپاپ دریچه گاز می شود و بنابراین شتاب وسیله نقلیه افزایش می یابد. وقتی که میله فعال کننده اضافه طول می یابد، کشش کابل کم می شود و فنر برگشت دهنده( ارتجاع) در دریچه گاز به وضعیت اولیه اش ( جابجا شده) بر می گردد. این امر موجب کاهش بازه( روزنه) سوپاپ دریچه گاز می شود و شتاب

وسیله نقلیه کاهش می یابد.

۱٫۴٫۳ـ فعال کننده ترمز وکنترل
فعال کننده: فعال کننده دریچه گاز انتخاب شده یک فعال کننده خطی است که توسط موتور DC ( جریان حداکثر)۲۴V6A حرکت می کند که از “ یاتاقانهای خطی” در NSW خریداری شده است. مدل فعال کننده خطی بصورت LA303 درخواست می شود، و دارای حداکثر بار ۱۵۰۰N می باشد. و یک سرعت حداکثر و طول ضربه۱۵۰mm است. این فعال کننده انتخاب شد زیرا سریعترین فعال کننده خطی موجود بود که شرایط زیر را تامین میکرد.
• قدرت گرفته توسط۲۴ VDC
• >100mm طول ضربه( جابجایی حداکثر اندازه گیری شده پدال گاز)
• >500N بار حداکثر( حداکثر نیروی اندازه گیری شده هنگام جابجایی پدال ترمز)

سیستم مکانیکی کنترل:
برای کنترل ترمز، سیستم مکانیکی اساساً شامل یک فعال کننده خطی و کابل های هدایت شده است( همان کابل های بکار رفته برای اتصال دریچه گاز و پدال گاز). وقتی میله فعال کننده جمع می شود، کابل را همراه با آن می کشد و بدان وسیله پدال ترمز را بعداً می کشد که باعث یک افزایش در نیروی ترمز کردن بر روی وسیله می شود. وقتی میله فعال کننده پدال گاز، منبسط و طویل می شود فنر ذخیره کننده در پدال ترمز، پدال ترمز را به طرف موقعیت جابجا شدن ذخیره می گردد و بدان وسیله نیروی ترمز بر روی وسیله نقلیه را کاهش می دهد.

۱٫۴٫۴ـ انتقال اطلاعات:
اطلاعات منتقل شده بطور بی سیم برای کنترل PID از سه فعال کننده ( KI, Kd, Kp نقطه آغاز…..) در بخش زیر شرح داده می شود.
PID_A.Kp:
PID_A.Ki:
PID_A.Kd:
PID_A.SeMin:
PID_A.SeMax:
PID_A.yMin:
PID_A.yMax:

PID_A.spiont:
SteeringControlMode:
Manual_steering:
مود کنترل گردشی
گردش دستی

فصل ۲
(۲) ارتباطات بی سیم
مقدمه۲٫۱ـ ارتباطات بی سیم برای مقاومت در مقابل رشد نمایی درتلفن سلولی، شبکه بی سیم و قلمروهای اینترنت می باشد. تعداد موارد بی سیم از ۴۲۵ میلیون در ۱۹۹۳ تا ۹۵۳ میلیون دراواخر ۲۰۰۲ رسیده است. در حال حاضر، دو نوع استاندارد بی سیم در صنعت مورد توجه می باشدکه بخاطر خصوصیات وقابلیت های عملکرد آنها است و سیستمBlue tooth و IEEE802.11 نام دارند. انواع سیستم های بی سیم دیگری وجود دارند از قبیل Hiperlan/21,WDCT و Home RFZ که دارای یک سهم بازار کوچکی می باشند. سیستم IEEE802.11b برای شبکه سازی بی سیم بین اپراتور و رایانهUte( بصورتon beard ) استفاده گردید.

۲٫۱٫۱ ـ Blue tooth
Blue tooth یک استاندارد بی سیم باز است که از باند ISM ( پزشکی صنعتی و علمی) برای انتقال های برد و مسافت کوتاه استفاده می کند. با یک سرعت اطلاعات حداکثر ۱Mbps صدا و اطلاعات بصورت بی سیم در شبکه های ناحیه ای و شخصی بی سیم (WPANS ) با استفاده از طرح گونه مدولاسیون(FHSS) منتقل می شود. Blue tooth توسط گروه SIG پشتیبانی می شود. که از طرف رهبران صنعت پشتیبانی شده است( شامل موتور ولا، IBM ، Intel ، نوکیا، اریکسون، و۳com ).

 

۲٫۱٫۲ ـWDCT
WDCT استاندارد ارتباطات (از راه دور) بی سیم تقویت شده دیجیتال است که ابتدا در اروپا مطرح گردید ولی بعنوان یک استاندارد ارتباطات از راه دور بی سیم در سراسر جهان پذیرفته شد، پس از سالها موفقیت با DECT در اروپا، آفریقا، و آمریکای جنوبی، استان

دارد DCT ( ارتباطات از راه دور بی سیم دیجیتال در سراسر جهان ) بطور ویژه ای برای بازار آمریکای شمالی در ۱۹۹۸ توسعه یافت.
WDCT با باند فرکانس ۲٫۴GHZ طرح گونه مدولاسیون FHSS را با یک برد ارسال فوت ۱۰۰۰ و کیفیت صدای سازگار با شبکه های ثابت شده، پذیرفته شده است.

۲٫۱٫۳ ـHome RF
یک فن آوری بی سیم است که پروتکل صدا را برای DECT با روش انتقال اطلاعات در ۸۰۲٫۱۱b ترکیب می کند و در باند فرکانس۲٫۴GHZ با سرعت اطلاعات اوج ۱۰/Mbps کار می کند و یک دامنه تا ۱۵۰ فوت فراهم می کند درحالیکه از روش مدولاسیون فرکانس بهره می گیرد. شرکت گروه کاری (HRFWG)Home RF برای قابلیت کار دستگاههای بی سیم در توزیع و پخش صدا، اطلاعات و رسانه های جاری در محیط های مصرف کننده تشکیل گردید.
اعضای اصلی شامل موتور ولا،compaq و زیمنس می باشد.

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 18700 تومان در 143 صفحه
187,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد