اطلاعیه

Collapse
No announcement yet.

ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

    با سلام وخسته نیاشی خدمت همه دوستان و مهندیس عزیز

    من برای یک پروژه باید بین دو میکرو با هم ارتباط سریال برقرار کنم و اطلاعات 10 متغیراز متغیر هایی که در میکرو اول تعریف شده را به میکرو دوم بفرستم و در میکرو دوم هم حدودا اطلاعات(10 متغیر) دیگه رو باید به میکرو اول بفرستم
    کاری که خودم تا اینجا انجام دادم این بوده که کل اطلاعات متغیر هارو رمز گذاری کردم و به رشته بزرگ تبدیل کردم و اطلاعاتم را با uartارسال کردم و در طرف مقابل در وقفه دریافت سریال تمام رشته را پشت سر هم باuartدریافت کرده و به یک رشته کامل تیدیل کردم و اطلاعات رو رمز نگاری کردم و ازشون استفاده کردم

    حالا مشکل من اینجاست که با همه دردسرایی که کشیدم و ارتباطم رو برقرار کردم

    سرعت خیلی کمی داره چون تقریبا 1 تا دو ثانیه اطلاعات دیرتر جابه جا میشن و مستر من باید به محض تغیرات در سنسور هایی که در اسلو بسته شده شرایط رو تغیر بده تا اتفاق خطرناکی ایجاد نشه
    از دوستای عزیز و مهندیس گرامی خواهش میکنم اگه روش بهتری برای انجام این کار وجود داره راهنماییم کنن :nerd:
    من نه آنم که زبونی کشم از چرخ فلک
    چرخ بر هم زنم ار غیر مرادم باشد

    #2
    پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

    میشه بگی اون رشته بزرگه مگه چند بایت شده؟ ساده ترین راه حل بالا بردن باودریت تا انتهای ظرفیت میکرو هست

    دیدگاه


      #3
      پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

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

      سلیو:(اول وقفه دریافت رو روشن کردم بعد از دریافت کامل شرایط ارسال رو فراهم کردم)
      شرایط ارسال هم اینه که باید کل روتین اصلی خونده بشه تا شرط ارسال برقرار بشه


      اینطوری به راحتی ارسال و دریافت دارم ولی چون منتظر ممیمونه که کل روتین خونده بشه بعد ارسال کنه سرعتم کم شده

      حالا اگه روش بهتری بلدین که بتونم ارتباط فول داشته باشم و برنامم توی وقفه ها گیر نکنن ممنون میشم که راهنمایی کنین :rolleyes:
      من نه آنم که زبونی کشم از چرخ فلک
      چرخ بر هم زنم ار غیر مرادم باشد

      دیدگاه


        #4
        پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

        برای 50 متر لایه فیزیکی ارسالت چی هست . من پیشنهادم RS422 هست که مشکل نداشته باشی!
        آخرین سرعت رو باز هم نگفتی چقدر؟ چون با میکرو تا حد چند مگ میتونی ارسال دریافت داشته باشی (و 50 کاراکتر هم اصلا چیزی به حساب نمیاد)

        دیدگاه


          #5
          پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

          اول باید تشکر کنم که به موضوع اهمیت میدین و جواب میدین
          لایه فیزیکیم rs485 چون آی سی 422 گیرم نیومد از دوعدد max485استفاده کردم که همون کار 422 رو انجام میده که کلا 4 سیم ارتباطی داره
          پروسوس همATMEGA1284P
          مقدار باودریت هم برابر 115200 و فرکانس میکرو 11059200 است که خطای ارتباط صفره
          اطلاعات ارسالی هم به این شکل در میاد
          "{{...................................HZ123,N Z28,AZ213,BZ100"}}
          که در گیرنده عدد روبه روی هر کدام از کلمات درون یک متغیر جاگذاری میشوند
          و از کروشه ها به عنوان خطایابی استفاده میشه

          من یک نمونه برنامه میخوام که بتونه همچین رشته ای رو به صورت کاملا دو طرفه ارسال و دریافت کنه و روتین اصلی برنامه که شامل 2000 خط برنامه میشه رو کامل اجرا کنه با هر زبانی هم باشه مهم نیست
          من نه آنم که زبونی کشم از چرخ فلک
          چرخ بر هم زنم ار غیر مرادم باشد

          دیدگاه


            #6
            پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

            ببین دوست عزیز این باودریت 115200 جزو باودریتهای استاندارد ارتباط با کامپیوتر هست (و بالاترینشون هم هست)
            شما کریستالت رو بذار 16MEG باودریتت رو هم با توجه به دیتاشیت میکرو چند برابر کن (البته باید max485 رو هم در نظر بگیری که تا چه کلاکی رو میتونه ساپورت کنه) مثلا برای atmega8A که من نگاه کردم این باود میتونه حتی بیشتر از
            2Meg افزایش پیدا کنه بدون خطا
            اما نکته بعدی هرچند که کارت تموم شده برای رمز کردن (البته این کاری که شما کردی رمز نیست بلکه یه پروتکل تعریف کردی)
            معمولا یه هدر (شامل چند بایت خاص)و روشهای خطایابی (مثل چک سام)و فوتر رو درون بسته ارسالی قرار میدن . با توجه به اینکه بین دادهای مختلف ویرگول میفرستی فکر کنم که اون کاراکترهای HZ و NZ و ... اضافیه

            دیدگاه


              #7
              پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

              نوشته اصلی توسط mojalan
              ببین دوست عزیز این باودریت 115200 جزو باودریتهای استاندارد ارتباط با کامپیوتر هست (و بالاترینشون هم هست)
              شما کریستالت رو بذار 16MEG باودریتت رو هم با توجه به دیتاشیت میکرو چند برابر کن (البته باید max485 رو هم در نظر بگیری که تا چه کلاکی رو میتونه ساپورت کنه) مثلا برای atmega8A که من نگاه کردم این باود میتونه حتی بیشتر از
              2Meg افزایش پیدا کنه بدون خطا
              اما نکته بعدی هرچند که کارت تموم شده برای رمز کردن (البته این کاری که شما کردی رمز نیست بلکه یه پروتکل تعریف کردی)
              معمولا یه هدر (شامل چند بایت خاص)و روشهای خطایابی (مثل چک سام)و فوتر رو درون بسته ارسالی قرار میدن . با توجه به اینکه بین دادهای مختلف ویرگول میفرستی فکر کنم که اون کاراکترهای HZ و NZ و ... اضافیه
              متشکرم که راهنمایی کردین تو این چند وقتی که با میکرو کار کردم نمیدونستم میشه سرعت ارسال رو از این حد بیشتر هم کرد :redface:امتحان میکنم نتیجشو بهتون میگم :applause: :applause:
              درسته سعی میکنم برای شناسایی اطلاعات از کاراکتر های کمتری استفاده کنم ممنون که ذکر کردین :biggrin:

              ولی باز هم این برام سواله که چطور یک ارتیاط کاملا دو طرفه همزمان داشتته باشم که اطلاعات رو از دست ندم و روتین اصلی برنامم به صورت کامل اجرا بشه

              حتی بعضی جاها لازم میشه که از چند تا پین سریال به صورت همزمان استفاده کرد با این شرایط تکلیف چیه :surprised:
              من نه آنم که زبونی کشم از چرخ فلک
              چرخ بر هم زنم ار غیر مرادم باشد

              دیدگاه


                #8
                پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                یعنی تو این سایت کسی تا حالا یک پروژه ارتباط سریال کاملا دو طرفه انجام نداده :cry:
                من نه آنم که زبونی کشم از چرخ فلک
                چرخ بر هم زنم ار غیر مرادم باشد

                دیدگاه


                  #9
                  پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                  از مهندسین کسی نمیدونه برنامه ارتباط سریاله این برنامه رو چیکار کنم که وقتی سیم های ارتباطیشونو قطع کردم و ودوباره وصل کردم اتوماتیک ارتباط برقرار بشه و میکرو قاطی نکنه

                  :NO:از مدیر سایت خواهشمندم که اگه به این سوال هم کسی جواب نداد کلا این موضوع رو از تاپیک حذف کنه به خدا دیگه خجالت میکشم چیزی بپرسم کارم شده این که یک موضوع جدید بزارم و هفته ها فقط رفرش کنم تا شاید..
                  یعنی تو این همه مهندس کاربلد یکی جوابه سوالای منو نداشت :angry:
                  من نه آنم که زبونی کشم از چرخ فلک
                  چرخ بر هم زنم ار غیر مرادم باشد

                  دیدگاه


                    #10
                    پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                    دوست عزیز من با RS485 کار نکردم ولی RX232 رو کار کردم . در اون حالت برای اینکه برنامه روتین خودش رو ادامه بده و به پروت کاری نداشته باشه از اینتراپت های RX استفاده می کنیم تا زمانی که دیتا به پورت رسید همون لحظه برنامه برو توی یه وقفه و اطلاعات رو بخونه و کار مورد نظر و انجام بده و برگرده سر کار قبلیش . نمی دونم شما از وقفه استفاده کردید یا نه ؟
                    در ضمن اگر بخاهید چندین کار همزمان در میکرو با هم انجام بشه باید یا از وقفه ها استفاده کنید یا با استفاده از تایمر ها زمانبندی کنید و کد ها رو تقسیم کنید و همزمان یه ذره از این یه ذره از اون اجرا کنید تا همه با هم پیش برن . ( یه چیزی شبیه به سیستم عامل ویندوز ) موفق باشید .
                    راستی زود ناراحت نشین . کاهی بچه ها دیر جواب می دن و لی من خودم بارها برام اتفاق افتاده که حتی بعد از تاخیر طولانی بالاخره جوابم رو یا مستقیم و یا با راهنمایی بچه ها و بطور غیر مستقیم گرفتم . :redface:
                    - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

                    دیدگاه


                      #11
                      پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                      از مهندسین کسی نمیدونه برنامه ارتباط سریاله این برنامه رو چیکار کنم که وقتی سیم های ارتباطیشونو قطع کردم و ودوباره وصل کردم اتوماتیک ارتباط برقرار بشه و میکرو قاطی نکنه
                      از همون وقفه RX اگر استفاده کنید این حالت رو خواهید داشت . ولی اگر برنامه مدام در حالت خواندن پورت باشه خوب نه .
                      - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

                      دیدگاه


                        #12
                        پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                        من رو بردی بصورت هالف کارکردم
                        و توی تست های انجام شده به نکات جالبی رسیدم
                        البته کار 100% عملی نشد ولی توی تست ها تقریبا مشکلی ایجاد نشد

                        اول نوع ای سی 485 فرق میکرد(برای من اینطور بود) مثلا ad و max و sn هرکدوم یطوری
                        دقیق یادم نیست یکشون زود گرم میکرد حالا دلیلش چی بود نفهمیدم
                        یا جفتشو باید از یک مدل قرار میدادم البته من هالف کار کردم
                        و نکته دیگه ای که بود میکرو که مگا 64 بود سرعتش به شدت کاهش پیدا میکرد انگار که دائما توی وقفه گیر کرده
                        بعد از چندین تست یک مقاومت با رسیو میکرو در حدود 1 کیلو که تقریبا میشه گفت زیاده موازی کردم مشکل تا حد زیادی حل شد و دیگه وقت نشد بیشتر کار کنم
                        اما شما که فول هست نباید مشکل داشته باشی
                        بودریت هم که مناسب هست و نباید حتی به ثانیه طول بکشه
                        ابتدا با چند متر سیم تست کن نباید مشکلی داشته باشی
                        و کاهش سرعت میکرو هم ببین نداشته باشی
                        در ثانی بعد از قطع ارتباط حتما ببین مشکلی پیش نیاد و طوری بنویس برنامه رو که بعد از تایمی که دوباره کابل هارو وصل میکنن بدون رست کردن مدار دوباره ارتباط وصل بشه
                        هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                        بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                        میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                        تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                        دیدگاه


                          #13
                          پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                          نوشته اصلی توسط Mania59
                          دوست عزیز من با RS485 کار نکردم ولی RX232 رو کار کردم . در اون حالت برای اینکه برنامه روتین خودش رو ادامه بده و به پروت کاری نداشته باشه از اینتراپت های RX استفاده می کنیم تا زمانی که دیتا به پورت رسید همون لحظه برنامه برو توی یه وقفه و اطلاعات رو بخونه و کار مورد نظر و انجام بده و برگرده سر کار قبلیش . نمی دونم شما از وقفه استفاده کردید یا نه ؟
                          در ضمن اگر بخاهید چندین کار همزمان در میکرو با هم انجام بشه باید یا از وقفه ها استفاده کنید یا با استفاده از تایمر ها زمانبندی کنید و کد ها رو تقسیم کنید و همزمان یه ذره از این یه ذره از اون اجرا کنید تا همه با هم پیش برن . ( یه چیزی شبیه به سیستم عامل ویندوز ) موفق باشید .
                          راستی زود ناراحت نشین . کاهی بچه ها دیر جواب می دن و لی من خودم بارها برام اتفاق افتاده که حتی بعد از تاخیر طولانی بالاخره جوابم رو یا مستقیم و یا با راهنمایی بچه ها و بطور غیر مستقیم گرفتم . :redface:
                          باید تشکر کنم که وقت گذاشتین و راهنمایی کردید
                          من هم همین کاری رو که شما گفتین رو کردم یعنی یک شرط گذاشتم که با برقرار بودن اون شرط دیتا ارسال میشه و پس از ارسال دیتا وقفه دریافت روشن و شرط ارسال خاموش میشه
                          اما چون دیتای دریافتیم یک رشته طولانیه داخل وقفه دریافت یک do---loopگذاشتم که بعد از دریافت تک تک کاراکتر های رشته و چیدن اون کنار هم منتظر گرفتن کاراکترenter میشه تا از حلقه بره بیرون حالا به فرض مدار داره کار میکنه ودیتا در حال دریافته سیم ارتباطی قطع میشه pc داخل اون حلقه گرفتار میشه و برنامه هنگ میکنه
                          من نه آنم که زبونی کشم از چرخ فلک
                          چرخ بر هم زنم ار غیر مرادم باشد

                          دیدگاه


                            #14
                            پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                            نوشته اصلی توسط n340
                            من رو بردی بصورت هالف کارکردم
                            و توی تست های انجام شده به نکات جالبی رسیدم
                            البته کار 100% عملی نشد ولی توی تست ها تقریبا مشکلی ایجاد نشد

                            اول نوع ای سی 485 فرق میکرد(برای من اینطور بود) مثلا ad و max و sn هرکدوم یطوری
                            دقیق یادم نیست یکشون زود گرم میکرد حالا دلیلش چی بود نفهمیدم
                            یا جفتشو باید از یک مدل قرار میدادم البته من هالف کار کردم
                            و نکته دیگه ای که بود میکرو که مگا 64 بود سرعتش به شدت کاهش پیدا میکرد انگار که دائما توی وقفه گیر کرده
                            بعد از چندین تست یک مقاومت با رسیو میکرو در حدود 1 کیلو که تقریبا میشه گفت زیاده موازی کردم مشکل تا حد زیادی حل شد و دیگه وقت نشد بیشتر کار کنم
                            اما شما که فول هست نباید مشکل داشته باشی
                            بودریت هم که مناسب هست و نباید حتی به ثانیه طول بکشه
                            ابتدا با چند متر سیم تست کن نباید مشکلی داشته باشی
                            و کاهش سرعت میکرو هم ببین نداشته باشی
                            در ثانی بعد از قطع ارتباط حتما ببین مشکلی پیش نیاد و طوری بنویس برنامه رو که بعد از تایمی که دوباره کابل هارو وصل میکنن بدون رست کردن مدار دوباره ارتباط وصل بشه
                            سلام درسته که سخت افزارم به صورت فوله ولی به خاطر ضعف برنامه نویسی اونو زمانبندی کردم یعنی یکبار از یک خط 485 دریافت میکنه بعد روتین اصلی رو اجرا میکنه و در آخر روتین دیتا رو با یک خط دیگه 485ارسال میکنه که به صورت هالف در اومده
                            یعنی در کل 4 تا 485 استفاده کردم


                            اگه یک واسط سریال برای spi پیدا میکردم که تا 50 متر جواب میداد و تعداد سیم ها زیاد نمیشد مشکلم حل بود
                            خوبی spi اینه که با هر بیت ارسال یک بیت دریافت میکنه
                            من نه آنم که زبونی کشم از چرخ فلک
                            چرخ بر هم زنم ار غیر مرادم باشد

                            دیدگاه


                              #15
                              پاسخ : ارسال و دریافت حجم زیاد اطلاعات از پورت سریال

                              نوشته اصلی توسط AM1212
                              سلام درسته که سخت افزارم به صورت فوله ولی به خاطر ضعف برنامه نویسی اونو زمانبندی کردم یعنی یکبار از یک خط 485 دریافت میکنه بعد روتین اصلی رو اجرا میکنه و در آخر روتین دیتا رو با یک خط دیگه 485ارسال میکنه که به صورت هالف در اومده
                              یعنی در کل 4 تا 485 استفاده کردم


                              اگه یک واسط سریال برای spi پیدا میکردم که تا 50 متر جواب میداد و تعداد سیم ها زیاد نمیشد مشکلم حل بود
                              خوبی spi اینه که با هر بیت ارسال یک بیت دریافت میکنه
                              سلام

                              چون داری از پورت سریال استفاده میکنی دیگه باید این رو هم بپذیری که با قطع ارتباط دیتا از بین میره. ولی راه حل چیه؟ اگر دیده باشی فرستنده گیرنده های وایرلس از Acknowledge استفاده میکنند. یعنی گیرنده به فرستنده میگه من دریافت کردم. این موضوع رو توی اکثر پروتکل ها میتونی ببینی. حالا پس باید دیتا رو بسته بسته بفرستی. برای هر بسته Parity قرار بدی و منتظر جواب گیرنده بمونی. کاملا مشخص هست که سرعت رو داغون میکنه! ولی به نظر من مشکلت فقط اینطوری رفع میشه. کسی راه دیگه ای به ذهنش میرسه؟

                              دیدگاه

                              لطفا صبر کنید...
                              X