توضیحات

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 مقاله در مورد طراحی و پیاده سازی نرم افزار شبیه ساز عملکرد تراکتور با ویژوال بیسیک دارای 153 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

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

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله در مورد طراحی و پیاده سازی نرم افزار شبیه ساز عملکرد تراکتور با ویژوال بیسیک،به هیچ وجه بهم ریختگی وجود ندارد


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

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

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

فصل اول
مقدمه

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

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

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

یك رشته درفرمت
“XXX.XXX.XXX.XXX” معرفی می شود . (برای مثال “155693190” ) .
(وظیفه) : task
task(وظیفه) اسمی از خود سیستم است :‌این باید یك رشته

باشد كه یك عدد صحیح است . ( در واقع یك شماره درگاه) در رنج 65535+1024 را معرفی می كند . (برای مثال “5016” )
(انفعال ) 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” معرفی می شود (برای مثال “155693190”
task
وظیفه یا برنامه نام فرایند مقصد است : این باید یگ رشته بارها كه یك عدد صحیح (در واقع یك شماره گذرگاهی) در رنج 1024 به 65535 را معرفی كند (برای مثال “5016”)
id
شناسه ای از پیام برای فرستادن است . (ID ساختار پیام ، احتیاج به دریافت وظیفه برای جذب داده دارد)
Len
طول ، در مقیاس بایت : دنباله بلاك داده است .
data
بلاك دیتا ، یك رشته است .
ack

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

اگر timeout به 1- تنظیم شود تابع برای همیشه برای یك پیام ورودی منتظر خواهد ماند .
(این در یك 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” معرفی می شود . (برای مثال “135693190” )
task
برنامه (وظیفه) نام فرایند فرستاده شده است . این شاید یك رشته باشد كه یك عدد صحیح (در واقع یك شماره گذرگاه) در رنج 1024 تا 65535 را معرفی كند (برای مثال “5016”)
id
شناسه ای از پیام دریافتی است . ID بوسیله برنامه فرستاده شده با موافقت با وظیفه دریافتی استفاده می شود تا ساختار پیام تعریف شود . برنامه دریافتی برای جذب داده مورد نیاز است .
Len
طول ، در مقیاس بایت : دنباله بلاك داده است .
data
بلاك دیتا ، یك رشته است .
timeout :
انتظار كشیدن به مدت چند میلی ثانیه برای یك پیام ورودی . هنگامی كه timeout صفر است تابع فقط با دیتایی كه در صف موجود است بر می گردد . وقتی

مثبت است، این تابع بلوكه می شود و تا وقتی كه پیام برسد منتظر می ماند .
پیغامهای فوری 43
كتابخانه می تواند بین پیامهای معمولی و پیامهای فوری فرق قائل شود . برای هر برنامه ای كه كانال ارتباطی استفاده می كند همچنین یك كانال فوری می تواند باز شود. اگر كانال ارتباطی معمولی بسته باشد كانال اضطراری می تواند استفاده شود . تابع 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-توسعه نرم افزار
.51 در این مرحله از پایان نامه راه اندازی سخت افزار قطعیت داده شد و كتابخانه ارتباطی شبكه فهمیده شد . بنابراین مرحله بعد توسعه نرم افزار خواهد بود . توسعه نرم افزار یك معمای عمومی دارد كه به پنج مرحله اصلی تقسیم می شود : احتیاجات ،
طراحی ، كد كردن ، آزمایش و تعمیر و نگهداری .
گراف زیر روالی را كه در توسعه نرم افزار بكار می

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

.52 احتیاجات
هدف پایان نامه طراحی و ساخت یك بسته ارتباطی بی سیم است كه برای شبكه بندی كامپیوتر آنبورد ute با كامپیوتر بی سیم اپراتور ، جایی كه دستورات، پیغامها و دیتای حسگر می تواند از یك كامپیوتر به دیگری انتقال یابد می باشد . تشخیص نهایی این است كه نرم افزارباید یك ارتباط شبكه ای بین دو كامپیوتر برقرار كند . جایی كه اپراتور بعضی دستورات را به كامپیوتر ute می فرستد تا بخواهد بعضی از دیتای حسگرها یا همه دیتای حسگر را به او بفرستد و ثوابت كنترلی را برای مدلهایی مانند نقاط شروع و و .. داده باید روی كامپیوتر اپراتور ، هر حسگر یا هر تقسیم در فایل txt خودش ذخیره شود .
هر فایل باید با عضی خصوصیات درباره آنچه دیتاست ، داده و زمان برای مجموعه داده شروع می شود و با داده و زمان پایان مجموعه داده تمام می شود . هر حسگر زمان خودش را برای تخصیص دارد ، همه آن بستگی به زمانی كه هر حسگر به‌روز‌رسانی می شود دارد . جدول زیر زمان بروز رسانی دیتای هر حسگر را نشان می‌دهد .
جدول51 : زمان بندی حسگرها
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

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

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

ن دو كامپیوتر بوسیله الحاق آدرسهای IP به یكدیگر است . پس اپراتور یك پیغام به ute می فرستدجایی كه آن برای بعضی دیتاهای خاص (معمولاً دیتای حسگرها) درخواست می كند . نرم افزار ute داده را از حافظه اشتراكی می خواند (حافظه اشتراكی فوق هسته ای ) و آن را به كامپیوتر اپراتور می فرستد . سرانجام نرم افزار اپراتور دیتا را در فایل متنی می نویسد . نرم افزار زمانی كه اپراتور آن را می خواهد پایان می یابد و پس در برنامه ارتباط بین آنها را می شكند . در قسمت بعدی ، طراحی
برای هر نرم افزار انفرادی در جزئیات كامل بحث می شود .
شكل 5-2 : معماری نرم افزار اصلی
-531 نرم افزار ute
نرم افزار ute خیلی ساده(درست) است . هدف گرفتن پیام جستجو برای داده و فرستادن آن برای گرفتن پل جدید است . این روال دوباره و دوباره تكرار می شود .
اگر یك پیغام دریافت نكند برای همیشه منتظر می ماند . اولین چیز اتصال به حافظه اشتراكی فوق هسته ای است جایی كه آن به همه حسگرها دسترسی دارد . آن تمام ساختار حسگرها را در زمان واقعی می خواند . بنابراین ، همه داده های حسگرها هر دفعه بروزرسانی می شوند و هسته حسگرها را بروز رسانی می كند . همه ساختار حسگرها درخواست نمی شوند هر چند تمام ساختارها فرستاده خواهد شد و آنچه نیاز باشد ذخیره خواهد شد . قدم بعدی شناسایی آدرس IP است سپس به نرم افزار دیگر الحاق می شود . یك ارتباط شبكه ای به وجود خواهد آمد . پس آن تا زمانی كه پیام دریافت كند همیشه منتظر می ماند . هر پیام دریافتی اساساً هیچ داده ای در آن نخواهد داشت (هر چند ما می توانیم هر داده یا ساختاری را كه می خو.اهیم بفرستیم) آن فقط یك message ID خواهد داشت . هر شماره Message ID یك درخواست برای بعضی داده های خاص است . در این مرحله ما یك تابع انتخابی خواهیم داشت كه شامل نه حالت مختلف است . اولین حالت فقط یك سیگنال ضربان قلب است . به عبارت دیگر فقط یك چكاپ است اگر ارتباط زنده باشد . 8 حالت دیگر برای هشت مجموعه مختلف از ساختار حسگرهاست . هر كدام برای حسگرهای انفرادی مانند GPS ، لیزر ، INS و قطب نما می باشد . هر چند encoder و مقادیر كنترلی محرك فقط در دو ساختار مختلف فرستاده می شوند :

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

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

-532 نرم افزار اپراتور
برنامه اپراتور جایی است كه تصمیمی باید بوسیله اپراتور گفته شود برای اینكه چه نوع داده خواسته شده در این قسمت اپراتور كنترل كامل روی اعمال ارتباطی شبكه دارد . اولین قسمت الحاق به كامپیوتر ute است كه در طرف دیگر باید اجرا شود و برای اتصال منتظر می ماند .برای الحاق ، نرم افزار آدرس IP كامپیوتر را جستجو می‌كند و پس با استفاده از تابع msg-attach اتصال برقرار می كند . قسمت بعد دیتا را شناسایی می كند و زمانی كه ارتباطات ساخته شدند . سپس آن 8 فایل متنی مختلف ایجاد خواهد كرد یكی برای هر حسگر بعد از ایجاد فایلها آن نوع دیتای ذخیره شدند در فایل را با داده و زمان در خط اول می نویسد . خط بعد تعریف هر ستون از داده می باشد . همه آنها با timestamp شروع می شود و سپس دیتای حسگر مانند ارتفاع ، طول ، حالت ، ماهواره و غیره .
(كه برخی از مقادیر GPS بود) قسمت بعد یك بخش درون حلقه است كه تا وقتی اپراتور بخواهد از برنامه خارج شود همیشه true می ماند . در هنگام شروع اپراتور انتخاب خواهدكرد كه آنها چه نوع داده ای را می خواهند از ute تقاضا كنند . آنجا چهار دلیل اصلی وجود دارد :
1-چك كردن اینكه آیا ارتباط زنده است .
2-خروج از برنامه و جدا شدن از شبكه
3-دریافت تمام داده های حسگر و ذخیره آنها در فایل متنی
4-انتخاب فقط حسگرهای مخصوص – یكی ، دوتا یا بیشتر . در این مرحله ، اپراتور باید حسگرها را یكی یكی تخصیص دهد .
اگر انتخاب نادرست باشد ،اپراتور می تواند هر چیزی را در حال اجرا است متوقف كند و به انتخاب برگردد . بعد از اجرای یك آزمایش و ذخیره بعضی داده ها در همان زمان انتخاب دیگری از حسگرها می تواند ایجاد شود و داده جدید ذخیره خواهد شد. او می تواند در فرایند بوسیله انتخاب خروج وقفه ایجاد كند و نرم افزار از شبكه جدا خواهد شد .
چارت زیر معماری نرم افزار از نرم افزار اپراتور را در تمام جزئیات عملكرد نشان خواهد داد . هر قسمت ممكن است قسمت های كوچك دیگری كه ممكن است در آن شامل باشد بسازد .

شكل .5-4 معماری نرم افزار اپراتور

-54 كدنویسی :
كد نویسی و اشكال گیری در واسط Win32,Dos در visual C

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

-541 كد 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 است و “5220” شماره پورت انتخابی تصادفی است .
/*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 برقرار است . بنابراین پیام دریافتی شامل هیچ چیز به جز 1 به عنوان ID نیست . case دوباره یك پیغام خالی با ID مساوی 1 بر می گرداند .
Case 1 ;
{
if((rc=msg_send(“snd-node” , “5110” , 1 , 0 , Null , false))! =(MSG_ok)
msg_error(rc);
break ;
}
باقیمانده case ها داده حسگرها را هر وقت آنها درخوا

ست شوند می فرستد . فقط اولین GPS طرح و توضیح داده شده است .ID برای GPS ، 2 است . وظیفه اصلی برای این مورد فرستادن ساختار داده 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);

-542 نرم افزار اپراتور
اولین قسمت الحاق فایلهای سربرنامه بود . لیست زیر بعضی از فایلهای سربرنامه نامعمول اصلی را نشان میدهد .
#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 است و “5110” شماره پورت انتخابی تصادفی است .
/* 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);
قدم بعد باز كردن 8 فایل مختلف است كه هر یك برای یك حسگر مخصوص است . فایلها در فرمت 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 اصلی تصمیم بگیرد :
1-حرف “e” برای خروج
2-حرف “a” برای همه حسگرهایی كه دریافت و ذخیره شده اند .
3-حرف “p” برای چك كردن اینكه آیا ارتباط برقرار است .
4-حرف “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);
}
اگر عدد “0” انتخاب شود ، اپراتور می خواهد خارج شود بنابراین پیام به 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);
}
اگر عدد “1” انتخاب شود‌، اپراتور چك می كند آیا ارتباط برقرار است . بنابراین یك پیام با 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;}

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

If((id)imput = = 2)
{msg_id=2;
if((rc=msg_send(ip,”5220″ , msg_id , 0 , NULL , False))! = MSG_OK)
printf(“NO CONNECTIONd” , 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);,}
اگر اپراتور عدد “3” را انتخاب كند او مجبور است یك سری از انتخابها را طی كند . برنامه از او هر مجموعه ساده از داده های حسگر را می خواهد اگر احتیاج به خواندن و ذخیره شدن باشد . پس هر وقت حسگر انتخاب نشد ذخیره آن در txt ممنوع می‌شود . ساختار آن قسمت دقیقاً شبیه قسمت قبل است . اگر عبارت برای انتخاب باشد .

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

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

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

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

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

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

سیون(خودكار سازی) یك وسیله نقلیه می باشد كه در سرعت بالا ( بیش از 90km/h ) در یك سری از محیط های « حقیقی» كار می كند. پروژه توسط ACFR وcanTE بودجه گذاری می‌شود.
عنصر « سرعت بالا» پیچیدگی سیستم را افزایش می دهد كه این امر مستلزم نگاه و بررسی بعدی است. این موضوع اهمیت ملاحظه میزان وسعت پی آمدهای حركت در آینده را یادآور می شودـ یعنی تمام آنچه كه لازم است در زمینه لایه های چندگانه پردازش شكل ها و حالت های خرابی، بی خطر، و زائد صورت گیرد.
برای محقق نمودن چنین سیستمهایی، پروژهHSV تمام جنبه های ناوبری وسیله نقلیه خودكار شده را تحقیق می كند. این فرایند می تواند به چهار مرحله تقسیم شود:
1) آگاهی و مدل سازی محیط
2) قرار دادن وسیله نقلیه در داخل محیط (اش)
3) طرح ریزی و تصمیم گیری درمورد حركت مطلوب وسیله نقلیه
4) اجرای حركت مطلوب وسیله نقلیه
توسعه سیستم های كنترل نیرومند و مطمئن كه توسط یك وسیله نقلیه مستقل برای كار در سرعت بالا لازم می باشد( و اغلب در محیط های جهان حقیقی و ساختار بندی نشده بكار می رود) یك كار پر زحمت است. روش ها و الگوریتم های اجرا شده و اعمال گردیده بر روی روبوت های متحرك( محیط داخلی) كه در حال كار در محیط های ساختار بندی شده و بی حركت ( ایستا) هستند اغلب برای یك وسیله مستقل و با سرعت بالا، نامناسب می باشند. هدف غایی و نهایی این پروژه عبارت اند از طراحی نمودن سیستمی است كه بتواند موقعیت مكانی وسیله نقلیه را در محیط های ساختار بندی نشده و نامعلوم تعیین كند و آن را برای اجرای كار در یك مسیر مورد نظر با دقت در حد سانتیمتر، كنترل و اداره نماید.

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

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

3،10ـ حسگرهای HSV :

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

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

132ـ سیستم ناوبری اینرسی:
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 قرار دارد. لیزر یك پالس لیزر مادون قرمز را منتشر می كند كه پس از برخورد به هر شی درمجاورت آن، منعكس می شود. زمان بازگشت اشعه در (پالس مادون قرمز) به واحد اندازه گیری می ود و سپس با استفاده از سرعت نور، فاصله شیء از دستگاه لیزر می تواند اندازه گیری شود. تصویری از محیط توسط دوران و چرخش لیزر ایجاد می شود و نمونه هایی تحت فاصله های زاویه های معلوم تهیه می شود.
شكل 2ـ1 : لیزرSick

نمونه ها تحت هرْ05 تهیه می شوند وبرای محدوده تا ْ180 و به فاصله حداكثر تا 80 متر این نمونه برداری این كار صورت می گیرد. اطلاعات ارائه شده برای هر حسگر به صورت یك سری عدد برای هر نمونه می باشد و بطور كلی 361 عدد قرائت می شود. این مدل، شدت، سیگنال برگشت را می فراهم می كند كه در همان فرمت ارائه می شود.

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

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

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

ی فرمان – حقیقی )real-steerin-output
1.3.5ـ كد كننده فرمان ـ كد كننده چرخ ROD-430 از كد كننده های سرعت دوران جزئی از شركت Heidenhain می باشد. كد كننده ها بر اساس قانون روش الكتریكی شبكه خطوط به تعداد بین 50 تا 5000 تبعیت می كند. اتصال محور به كدكننده های چرخ می تواند تا 12000rpm نوسان كند. سیگنال های خروجی برای این مدل خاص سیگنال های موج مربع HTL هستند و یك مدار را شامل می شوند كه سیگنال های اسكن كردن سینوسوئیدی را دیجیتال( رقومی) می نماید و ردیف پالس با جابجائی فاز 90 درجه و یك پالس مرجع را فراهم می نماید./ كد كننده توسط 12V برق مستقیم از جعبه فیوز، قدرت می گیرد.
شكل 3ـ1 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ـ پتانسیومتر دریچه گازـ برای كنترل دریچه گاز، بازخورد موقعیت دریچه گاز از یك پتانسیومتر بدست می آید كه درداخل فعال كننده خطی نصب شد. پتانسیومتر شامل یك تقسیم كننده حجم است كه در آن میله خروجی پتانسیومتر با میله فعال كننده حركت می كند. پتانسیومتر اعداد از 1000 تا 10000 اهم را می خواند و دامنه ولتاژ خروجی آن توسط دو ولتاژ Vpot- و Vpot+ بكار رفته در كرانه های مقاومت پتانسیومتر، داده می شود. ولتاژ بكار رفته در دو كرانه عبارت اند از-86V و +86V می باشد و دامنه ولتاژ پتانسیومترV-8.6 و+86V است. دریچه گاز با میله فعال كننده حركت می كند تا اینكه دریچه گاز به موقعیت حداكثر یا حداقل می رسد. لذا، درناحیه فعال، یعنی ناحیه ای كه دریچه گاز با میله فعال كننده حركت می كند، فاصله طی شده توسط میله فعال كننده نیز فاصله طی شده توسط دریچه گاز است و بنابراین قرائت ولتاژ از پتانسیومتر نیز متناسب با وضعیت در دریچه گاز است.
اطلاعات منتقل شده بی سیم:
مقدار حسگر شتاب // : شتاب دهنده

138ـ پتانسیومتر ترمز:
برای كنترل دریچه گاز، بازخورد وضعیت د

ریچه گاز از یك پتانسیومتر بدست می آید كه در داخل فعال كننده خطی نصب است. پتانسیومتر شامل یك تقسیم كننده ولتاژ است در جایی كه میله خروجی پتانسیومتر با میله فعال كننده حركت می كند. پتانسیومتر از 0 تا 1000 اهم را می خواند و ولتاژ خروجی آن توسط دو ولتاژ Vpot- و Vpot+ داده می شود كه دركرانه های مقاومت پتانسیومتر بكارمی رود. ولتاژهای بكاررفته در دو كرانه –86V و Vpot+ است و بنابراین

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

14ـ فعال كننده و كنترل كننده
141ـ كنترل كننده ها و فعال كننده فرمان
قسمت گردان در HSV می تواند به دو شیوه فعال شود: دستی یا خودكار. یك موتور DC برای حركت از طریق یك جعبه دنده كاهش سرعت مارپیچ بر روی مكانیزم گردش استفاده می شود تا بتواند با یك سرعت متغیر به چپ یا راست حركت نماید.
شكل 4ـ1: فعال كننده گردش

: اجزاء
: موتور
5A : جریان ولت24 : ولتاژ 120W : قدرت
2000rpm (20q rad/s) : سرعت
ْ90 : دوران كاهش سرعت مارپیچ :گیر بكس 1: 40 : نسبت
( دقیق نیست) %90 : راندمان
گشتاور: گشتاور مورد نیاز: 8NM
گشتاور موتور P/w = 120/20qs 05742NM = سرعت/ توان
گشتاور ایجاد شده توسط گیربكس = راندمان گشتاور موتور نسبت = 09
05742 40 = NM20.6aa
بنابراین گیربكس/ موتور گشتاور كافی برای گردش ایجاد می كند.
كلاچ:كلاچی كه استفاده می شود یك كلاچ الكترومغناطیسیLenze 10NM می باشد. یك كلاچ الكترومغناطیسی استفاده شد تا بتواند ماشین را با استفاده از یك كلید واحد از مود مستقل به مود دستی، سوئیچ نماید.

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

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

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

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

142ـ كنترل و فعال كننده دریچه گاز
فعال كننده: فعال كننده دریچه گاز انتخاب شده یك فعال كننده خطی است كه توسط یك موتور 24V 1.25ADC ( جریان حداكثر) راه اندازی می شود كه از “یاتاقان های خطی ” در NSW خریداری می شود. مدل فعال كننده خطی بصورت LAR.3 درخواست می گردد، و دارای یك بار حداكثر 200N است و سرعت حداكثر 48mm/3 و طول ضربه 100mm می باشد.
این فعال كننده انتخاب گردید زیرا سریعترین فعال كننده یافت شده است كه نیاز های زیر را تامین كرد.
• 45mm > طول ضربه( حداكثر جابجایی دردریچه گاز اندازه گیری شده)
• با قدرت 24VDC
• ( حداكثر نیروی اندازه گیری شده درحالیكه دریچه گازجابجا می شود)>100N حداكثر بار
سیستم مكانیكی كنترل: برای  همان كابل های بكار رفته برای اتصال پدال گاز و دریچه گاز). وقتی كه میله فعال كننده واكنش می كند، كابل را همراه با آن می كشد. این امر موجب افزایش میزان باز شدن سوپاپ دریچه گاز می شود و بنابراین شتاب وسیله نقلیه افزایش می یابد. وقتی كه میله فعال كننده اضافه طول می یابد، كشش كابل كم می شود و فنر برگشت دهنده( ارتجاع) در دریچه گاز به وضعیت اولیه اش ( جابجا شده) بر می گردد. این امر موجب كاهش بازه( روزنه) سوپاپ دریچه گاز می شود و شتاب

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

143ـ فعال كننده ترمز وكنترل
فعال كننده: فعال كننده دریچه گاز انتخاب شده یك فعال كننده خطی است كه توسط موتور DC ( جریان حداكثر)24V6A حركت می كند كه از “ یاتاقانهای خطی” در NSW خریداری شده است. مدل فعال كننده خطی بصورت LA303 درخواست می شود، و دارای حداكثر بار 1500N می باشد. و یك سرعت حداكثر و طول ضربه150mm است. این فعال كننده انتخاب شد زیرا سریعترین فعال كننده خطی موجود بود كه شرایط زیر را تامین میكرد.
• قدرت گرفته توسط24 VDC
• >100mm طول ضربه( جابجایی حداكثر اندازه گیری شده پدال گاز)
• >500N بار حداكثر( حداكثر نیروی اندازه گیری شده هنگام جابجایی پدال ترمز)

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

144ـ انتقال اطلاعات:
اطلاعات منتقل شده بطور بی سیم برای كنترل 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:
مود كنترل گردشی
گردش دستی

فصل 2
(2) ارتباطات بی سیم
مقدمه21ـ ارتباطات بی سیم برای مقاومت در مقابل رشد نمایی درتلفن سلولی، شبكه بی سیم و قلمروهای اینترنت می باشد. تعداد موارد بی سیم از 425 میلیون در 1993 تا 953 میلیون دراواخر 2002 رسیده است. در حال حاضر، دو نوع استاندارد بی سیم در صنعت مورد توجه می باشدكه بخاطر خصوصیات وقابلیت های عملكرد آنها است و سیستمBlue tooth و IEEE802.11 نام دارند. انواع سیستم های بی سیم دیگری وجود دارند از قبیل Hiperlan/21,WDCT و Home RFZ كه دارای یك سهم بازار كوچكی می باشند. سیستم IEEE802.11b برای شبكه سازی بی سیم بین اپراتور و رایانهUte( بصورتon beard ) استفاده گردید.

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

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

دارد DCT ( ارتباطات از راه دور بی سیم دیجیتال در سراسر جهان ) بطور ویژه ای برای بازار آمریكای شمالی در 1998 توسعه یافت.
WDCT با باند فركانس 24GHZ طرح گونه مدولاسیون FHSS را با یك برد ارسال فوت 1000 و كیفیت صدای سازگار با شبكه های ثابت شده، پذیرفته شده است.

213 ـHome RF
یك فن آوری بی سیم است كه پروتكل صدا را برای DECT با روش انتقال اطلاعات در 80211b تركیب می كند و در باند فركانس24GHZ با سرعت اطلاعات اوج 10/Mbps كار می كند و یك دامنه تا 150 فوت فراهم می كند درحالیكه از روش مدولاسیون فركانس بهره می گیرد. شركت گروه كاری (HRFWG)Home RF برای قابلیت كار دستگاههای بی سیم در توزیع و پخش صدا، اطلاعات و رسانه های جاری در محیط های مصرف كننده تشكیل گردید.
اعضای اصلی شامل موتور ولا،compaq و زیمنس می باشد.

برای دریافت اینجا کلیک کنید

سوالات و نظرات شما

برچسب ها

سایت پروژه word, دانلود پروژه word, سایت پروژه, پروژه دات کام,
Copyright © 2014 cpro.ir
 
Clicky