اطلاعیه

Collapse
No announcement yet.

اتصال 20 میکرو به یک میکرو

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

    اتصال 20 میکرو به یک میکرو

    با سلام
    دوستان من میخوام تقریباً 20 میکرو رو در فاصله ی 20 متری از هم به یک میکرو مستر که میشه گفت از همه این میکرو ها به یک فاصله است متصل کنم (بهتره به عکسی که پیوست کردم یک نگاهی بندازید تا متوجه بشید دقیقاً منظورم چیه)



    برای اتصال این ها قراره از UART میکرو استفاده بشه و نوع اتصال هم آسنکرون هست چون فقط قراره اطلاعات برای میکرو مستر ارسال بشه و فقط TXD میکرو های نود استفاده میشه و RXD میکرو مستر.
    خوب برای اتصال اینها اولین چیزی که به فکرم رسید این بود که TXD نود اول به RXD نود دوم و TXD نود دوم به RXD نود سوم و الی آخر متصل بشه تا به میکرو مستر برسیم(البته چون فاصله بین این میکرو ها هرکدوم تقریباً 20 مترهست از max232 برای افزایش برد در هر دو طرف ارتباط استفاده میشه ولی مشکل این کار اینه که اون میکرویی که قراره آخرین میکرو بین میکرو های نود و مستر قرار داده بشه باید بتونه تمام این اطلاعات رو از ورودی بخونه و همینطور اطلاعات خودش رو هم برای میکرو مستر بفرسته خوب یک جورایی این روش برام زیاد جالب نبود حالا میخواستم ببینم میشه این میکرو ها هرکدوم به صورت مستقیم به میکرو مستر از طریق یک RX متصل بشند؟ یعنی همه این 20 میکرو اطلاعات رو به یک RX که اونم برای میکرو مستر هست از طریق 1 سیم ارسال کنند (شکل2)



    به نطر شما بهترین راه برای اتصال این میکرو ها چیه؟

    #2
    پاسخ : اتصال 20 میکرو به یک میکرو

    فکر کنم مشابه همین موضوع رو در یکی از تاپیک های قبلی دیدم. 20 میکرو با 20 متر فاصله عینا.

    اما میتونین از شبکه rs485 استفاده کنین.

    دیدگاه


      #3
      پاسخ : اتصال 20 میکرو به یک میکرو

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

      دیدگاه


        #4
        پاسخ : اتصال 20 میکرو به یک میکرو

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

        دیدگاه


          #5
          پاسخ : اتصال 20 میکرو به یک میکرو

          هر نود تقریباً هر 1 ثانیه یک بار دیتا میفرسته و با این حال فکر کنم بشه زمان ها رو یک جوری تغییر داد که تداخل نشه
          در ضمن باید مواظب تداخل سطح سیگنالهای max232 هم باشید.
          اگه ممکنه در این مورد یکم بیشتر توضح بدید. چجور تداخلی منظورتونه؟

          دیدگاه


            #6
            پاسخ : اتصال 20 میکرو به یک میکرو

            اگر لینک سریال دو طرفه باشه میشه یه جورایی مشکل رو حل کرد. یعنی chain شده باشه. با این فرض هر میکرو هم برای خودش کار میکنه هم میتونه به عنوان تکرار کننده برای میکروی بعدی کار کنه.

            دیدگاه


              #7
              پاسخ : اتصال 20 میکرو به یک میکرو

              سلام
              نقشه دومی که توش همه TX میکروها رو بهم وصل کردی جواب نمیده حتی اگه زمان بندی میکروها هم طوری باشه
              که تداخل اطلاعات پیش نیاد چون خروجی MAX232 تو حالت عادی 1 هستش (نه اتصال باز!)
              با توجه به وجود Master بهترین روش برای پروژت استفاده از پروتکل RS422 هستش
              ولی اگه مدارت رو بر اساس RS232 بستی احتمالا Tx مستر نمیتونه بدون مشکل بقیه میکروها رو درایو کنه
              و باید از Repeater استفاده کنی
              از لحاظ برنامه نویسی هم باید وقفه دریافت سریال رو فعال کنی که هر وقت یه Pack دیتا رو باس اومد میکرو
              کارای فعلی شو بیخیال شه و بره سراغ دیکود کردن دیتایی که از RX دریافت کرده حالا اگه Node دیتای دریافت شده
              با Node خودش یکی نبود دیتا رو همونجور که دریافت کرده برا میکروی بعدی Send کنه :biggrin:

              دیدگاه


                #8
                پاسخ : اتصال 20 میکرو به یک میکرو

                به نظر من باید از پروتکلی استفاده کنی که مستر بیاد و هر کدوم از میکرو ها رو read کنه نه اینکه هر کی هر وقت دلش خواست دیتا بفرسته اینجوری که تداخل پیش میاد

                دیدگاه


                  #9
                  پاسخ : اتصال 20 میکرو به یک میکرو

                  از لحاظ برنامه نویسی هم باید وقفه دریافت سریال رو فعال کنی که هر وقت یه Pack دیتا رو باس اومد میکرو
                  کارای فعلی شو بیخیال شه و بره سراغ دیکود کردن دیتایی که از RX دریافت کرده حالا اگه Node دیتای دریافت شده
                  با Node خودش یکی نبود دیتا رو همونجور که دریافت کرده برا میکروی بعدی Send کنه
                  درسته ولی با این روش نود یکی مونده به آخر قبل از مستر حجم دیتایی که باید کنترل کنه زیاد میشه و به نظر شما توی کار اصلی اون تأخیری ایجاد نمیشه؟ چون هر پکت یک آرایه 32 بایتی هست که الاعات هر نود رو برای مستر میفرسته، حالا اگه تعداد نودها مثلاً به 50 برسه تکلیف چی میشه؟
                  با توجه به وجود Master بهترین روش برای پروژت استفاده از پروتکل RS422 هستش
                  منظورتون همون RS482 هست؟

                  به نظر من باید از پروتکلی استفاده کنی که مستر بیاد و هر کدوم از میکرو ها رو read کنه نه اینکه هر کی هر وقت دلش خواست دیتا بفرسته اینجوری که تداخل پیش میاد
                  بعید میدونم تداخلی پیش بیاد چون هر پکت رو با Checksum و چند بایت flag چک میکنم که یک موقع فرمت به هم نریزه و هر نود هم طبق تایمری که داره اطلاعات رو میفرسته و همینجوری تصادفی چیزی رو ارسال نمیکنه.

                  دیدگاه


                    #10
                    پاسخ : اتصال 20 میکرو به یک میکرو

                    جسارتا من از یک مستر و دو اسلیو استفاده کردم با پروتکلRS-485 ، مشکلی هم ندارم،چرا از RS485 استفاده نمیکنی که هم صنعتی تره هم راحتتر! :smile:

                    دیدگاه


                      #11
                      پاسخ : اتصال 20 میکرو به یک میکرو

                      ممنون از راهنماییهاتون
                      پس با توجه به فرمایش جناب majid sh
                      نقشه دومی که توش همه TX میکروها رو بهم وصل کردی جواب نمیده حتی اگه زمان بندی میکروها هم طوری باشه
                      که تداخل اطلاعات پیش نیاد چون خروجی MAX232 تو حالت عادی 1 هستش (نه اتصال باز!)
                      میتونم از max485 در نقشه دوم استفاده کنم و نتیجه بگیرم؟ یا خروجی این مبدل هم مثل max232 هست؟

                      دیدگاه


                        #12
                        پاسخ : اتصال 20 میکرو به یک میکرو

                        درسته ولی با این روش نود یکی مونده به آخر قبل از مستر حجم دیتایی که باید کنترل کنه زیاد میشه و به نظر شما توی کار اصلی اون تأخیری ایجاد نمیشه؟ چون هر پکت یک آرایه 32 بایتی هست که الاعات هر نود رو برای مستر میفرسته، حالا اگه تعداد نودها مثلاً به 50 برسه تکلیف چی میشه؟
                        ببین اصولا برا اتصال این همه میکرو از RS232 استفاده نمیشه. در مورد مشکل حجم دیتایی که به node یکی مونده به آخر گفتی دقیقا درسته ولی برای استفاده بهینه حتما باید از وقفه دریافت و ارسال استفاده کنی یهنی هر وقت میکرو 1 بایت
                        دریافت کرد بره تو روتین وقفه دریافت و داخل همون روتین دیتای دریافت کرده رو send کنه یعنی همینجور چشم بسته
                        هر بایتی رو که دریافت کرد بدون توجه به بایتهای بعدی send کنه
                        البته اینکه این چقدر ایجاد مشکل برا برنامه اصلیت بکنه بستگی به کاری داره که میکرو تو حالت معمول انجام میده.
                        حالا فرض کنیم نرخ دیتا 4800 بیت بر ثانیه باشه و ما کد روتین وقفه سریال رو 50 بایت در نظر بگیریم هر ثانیه باید
                        240000 کد اجرا بشه.

                        حالا اگر فرکانس کاری ما 11059200 باشه (یعنی تقریبا 11059200 کد در ثانیه) میشه فهمید که بازم بالای 90% میکرو
                        تو حالت IDLE قرار داره

                        شما اکه از RS485 یا RS422 استفاده کنی کارت خیلی راحتتر میشه
                        تو RS485 شما 2 تا خط داری و هر وقت هر کدوم از میکروها دیتایی برا فرستادن داشت. باس رو فعال میکنه و دیتاشو میفرسته
                        تو استاندارد RS422 شما 4 سیم داری که 2 تاش TX میکروی مستر رو به RX بقیه میکروها وصل میکنه و 2 تای بعدی
                        TX میکروهای Slave رو به RX میکروی Master متصل میکنه

                        دیدگاه


                          #13
                          پاسخ : اتصال 20 میکرو به یک میکرو

                          :applause:
                          حالا شدی یه پسر خوب!
                          بله همونطور که نوشتی راهش همینه مدارتو بصورت شکل 2 ببند (البته با MAX485 )
                          در max485 بر خلاف max232 دو پایه برا enable/disable کردن چیپ وجود داره (پایه 2 و 3)
                          در حالت عادی که دیتایی رد و بدل نمیشه چیپ (max485) رو غیر فعال کن (پایه 4 زمین بشه)
                          یعنی تو حالتی که هیچ میکرویی دیتا نمیفرسته باس بازه
                          حالا اگه میکرویی دیتایی برا send کردن داشت max 485 رو فعال کن (پایه 4 به vcc) و دیتا رو بفرست
                          بعد از اینکه کل pack رو فرستادی باید max485 رو disable کنی

                          دیدگاه

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