اطلاعیه

Collapse
No announcement yet.

ارتباط AVR با Modbus RTU

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

    ارتباط AVR با Modbus RTU

    سلام

    من چطور میتونم توسط میکرو AVR بایک دستگاه با پروتوکل Modbus RTU ارتباط داشته باشم؟
    اصلا این پروتوکل چه استانداردی داره؟
    چه آی سی مبدلی باید سر راه پورت سریال میکرو بگذارم؟

    با تشکر

    #2
    پاسخ : ارتباط AVR با Modbus RTU

    بسته به مدیا فرق میکنه. برای تست ممکنه RS232 باشه که با MAX232 ارتباط برقرار میشه ولی برای RS485 از 75176 استفاده کنید. این از لایه سخت افزار؛ ولی این یک پروتکل نرم افزاری است. به این لینک یک سری بزنید:
    http://www.chipkin.com/technical-resources

    این پروتکل نسبتا سبکی برای AVR است و اگر از یک ماشین وضعیت برای پیاده سازی آن استفاده کنید فوق العاده کارا خواهد بود.

    دیدگاه


      #3
      پاسخ : ارتباط AVR با Modbus RTU

      نوشته اصلی توسط reza_agha
      بسته به مدیا فرق میکنه. برای تست ممکنه RS232 باشه که با MAX232 ارتباط برقرار میشه ولی برای RS485 از 75176 استفاده کنید. این از لایه سخت افزار؛ ولی این یک پروتکل نرم افزاری است. به این لینک یک سری بزنید:
      http://www.chipkin.com/technical-resources

      این پروتکل نسبتا سبکی برای AVR است و اگر از یک ماشین وضعیت برای پیاده سازی آن استفاده کنید فوق العاده کارا خواهد بود.
      ممنون از پاسختون
      اماموضوع هنوز برام کمی مبهمه.
      یعنی MODBUS RTU میتونه هم RS232 باشه و هم RS485 باشه؟

      میشه واضحتر توضیح بدید.
      اگر یک مثال یا پروژه با AVR به زبان بیسیک و یا سی هم معرفی کنید که خیلی عالی میشه.

      با تشکر

      دیدگاه


        #4
        پاسخ : ارتباط AVR با Modbus RTU

        ببین عزیزم. MODBUS یک پروتکل نرم افزاری برای رد و بدل کردن اطلاعات بین دو دستگاه است و اساس آن بر این مسئله استوار است که تعدادی ورودی خروجی دیجیتال (معادل بیت) که در این پروتکل به نام کویل (Coil) نامیده میشود داریم و تعدادی ورودی و خروجی غیر دیجیتال (مقدار) که بنام ثبات (Register). تمامی این موارد دارای کدی بین 0 تا 65535 هستند. عملیات تعریف شده عمومی خواندن و نوشتن یک یا چند کویل یا ثبات بطور مستقیم و غیر مستقیم است.

        تمامی این موارد؛ موارد نرم افزاری است ولی اینکه ارتباط سیگنالی بین دو دستگاه برای رد و بدل کردن فریم های MODBUS چگونه برقرار شود توسط مدیای فیزیکی مشخص میشود که ممکن است RS232 یا RS485 یا حتی اترنت باشد.

        ضمنا این پروتکل از حالت Multipoint نیز پشتیبانی میکند یعنی میتوان به چند تجهیز با استفاده از این پروتکل دسترسی پیدا کرد. توصیه میکنم به یادداشتهایی در خصوص شبکه های صنعتی و کلا شبکه ها رو حتی برای آشنائی حدودی با 7 لایه ایزو نگاهی بکنید.

        دیدگاه


          #5
          پاسخ : ارتباط AVR با Modbus RTU

          آخرش متوجه نشدم که باید با چه آی سی این ارتباط رو برقرار کنم؟مستقیم میتونم به RXD و TXD میکرو ببندم یا اینکه مبدل میخواد؟

          دیدگاه


            #6
            پاسخ : ارتباط AVR با Modbus RTU

            نوشته اصلی توسط nanocycle
            آخرش متوجه نشدم که باید با چه آی سی این ارتباط رو برقرار کنم؟مستقیم میتونم به RXD و TXD میکرو ببندم یا اینکه مبدل میخواد؟
            بستگی به دستگاهی داره که میخواهید باهاش ارتباط برقرار کنید.
            Slave شما چه دستگاهیست ؟
            چگونه هوشمندانه بپرسیم

            دیدگاه


              #7
              پاسخ : ارتباط AVR با Modbus RTU

              سلام

              من تا اونجایی که فهمیدم هم میتونه rs-232 باشه و هم rs-485 .
              دوستان تایید میکنند؟

              با تشکر

              دیدگاه


                #8
                پاسخ : ارتباط AVR با Modbus RTU

                نوشته اصلی توسط nanocycle
                سلام

                من تا اونجایی که فهمیدم هم میتونه rs-232 باشه و هم rs-485 .
                دوستان تایید میکنند؟

                با تشکر
                بله لایهٔ فیزیکی میتونه RS-232 ، RS-485 و شبکهآ‌های TCP/IP باشه.
                چگونه هوشمندانه بپرسیم

                دیدگاه


                  #9
                  پاسخ : ارتباط AVR با Modbus RTU

                  ببین آقا جون! لریش اینجوری میشه.
                  جنابعالی میخوای با عموت تبادل آرا کنی. میتونی از تلفن استفاده کنی. میتونی ایمیل بزنی یا اصلا جلوش وایسی ایما و اشاره دربیاری. اینا همه شون میشه روش فیزیکی انتقال اطلاعات. حالا ما اینجا RS232 داریم RS485 داریم و اترنت.
                  اما کسی با تلفن تنها؛ اطلاعات رد و بدل نمیکنه. اطلاعات بایستی در قالب جملات رد و بدل بشن که اونها هم از کلمات و حروف تشکیل شدن. که تمام اینها زبان یا به نوعی پروتکل ارتباطی مثل MODBUS رو تشکیل میده. تازه اینا رو هم داشتی راجع به چی میخوای صحبت کنی؟ خرید ماشین؟ رفتن به تعطیلات یا فقط باهاش اختلاط کنی؟ فقط گفتی چطوری؟ یعنی حالت چطوره؟ چه میدونم! خونه ت چطوره یا هر چیز دیگه.
                  حالا میخوایم از طریق یک زبان مشترک برای تبادل اطلاعات بین دو دستگاه استفاده کنیم. اتصال فیزیکی ممکنه در حد برد باشه ولی مسلما نمیتونه مسافتی بالاتر 10 تا 20 سانت رو پوشش بده. پس میآییم از آی سی های ارتباطی مثل MAX232 یا 75176 استفاده میکنیم که هر کدوم مشخصات خودشون رو دارن. اولی اطلاعات را به صورت +و- 3 الی 15 ولت ارسال و دریافت میکنه. اون یکی یه جور دیگه. اما هر دوی اینها اطلاعات رو بایت به بایت ارسال و دریافت میکنن. اترنت همین کار رو در قالب پاکت هایی به طول 40 تا 1500 بایت یکجا انجام میده.
                  حالا روی اون یکی سیستم چی رو میخواییم بفهمیم یا تغییر بدیم؟ مسلما یک سری ورودی و خروجی دیجیتال و آنالوگ. مسلما روی ورودی که چیزی نمیشه نوشت پس فقط خوندنیه. اما خروجی میتونه هم خوندنی باشه هم نوشتنی. و خوندن یک خروجی آخرین مقداری رو که روی خروجی نوشته شده رو برمیگردونه.
                  حالا یک زبونی داریم که بهش میگیم MODBUS. توی این زبون به هر مقدار دیجیتال میگیم COIL و به هر مقدار آنالوگ میگیم REGISTER. ایضا چون ممکنه بخواییم با چند سیستم همزمان اطلاعات رد و بدل کنیم به هر کدوم یک اسم میدیم مثلا به اولی میگیم "یک" و به دومی میگیم "پنج"! چه میشه کرد؟ توی این سیستم ها اینا اسم هستن!

                  پس طبق پروتکل مودباس به سیستم "یک" میخواییم بگیم:
                  :اوهوی! سیستم "پنج" مقدار ورودی چهار ات را به من بده:

                  050200040001XXXX:

                  (که البته این چهار مقدار X عوضی هستن و باید درست حساب بشن!)

                  جواب میده:

                  05020101YYYY:

                  یعنی من "پنج" هستم مقدار بیت های درخواستی رو که خواسته بودی میفرستم. 01 هست. یعنی بیت درخواستی من 1 بوده.

                  مشخصات کامل این پروتکل رو میتونی از سایت MODBUS.ORG پیدا کنی. اطلاعات روی سایت به اندازه کافی کامل است.

                  دیگه؟
                  :nice:

                  دیدگاه


                    #10
                    پاسخ : ارتباط AVR با Modbus RTU

                    نوشته اصلی توسط reza_agha
                    ایضا چون ممکنه بخواییم با چند سیستم همزمان اطلاعات رد و بدل کنیم به هر کدوم یک اسم میدیم مثلا به اولی میگیم "یک" و به دومی میگیم "پنج"! چه میشه کرد؟ توی این سیستم ها اینا اسم هستن!
                    سلام
                    من کل قضیه رو متوجه شدم فقط مشکلم اینجاست که چطور به یه سیستم میگیم تو "یک" باش و به دومی میگیم "پنج" باش؟؟!!

                    دیدگاه


                      #11
                      پاسخ : ارتباط AVR با Modbus RTU

                      حالا من هول شدم بجای پنج قید کردم "یک"!!! شما که دیگه اصل مطلب رو باید بگیری! (در مثال آخری عرض کردم).
                      ضمنا اگه منظورتون اینه که چرا سیستم اول "یک" هست و دومی "پنج" باید عرض کنم در دنیای عادی ما اگر اسم یک فرزند خانواده محمد بود الزاما اسم فرزند بعدی محمد علی نمیشه! فقط باید جوری باشه که اسم این دو تا متفاوت باشه. (فامیلی رو در نظر نگیرین!!) حالا بین سیستم ها فقط دو تا عدد متفاوت بایستی وجود داشته باشه. اگر قرار باشه دو سیستم که یک "آی دی" یا کد داشته باشن در یک شبکه موجود باشه مثل این میمونه که شما بری توی یک کلاس بگی: "محمد کیه؟" خیلی احتمال داره بیش از یک نفر بیاد جلو.
                      از طرف دیگه چگونگی "گفتن" اینکه "تو یک باش" و "تو پنج باش" به سخت افزار و پروتکل مربوطه بستگی داره. من روی میکروی خودم داخل برنامه قید میکنم "این میکرو اسمش یک هست" و در نسخه دیگه همین میکرو با همین برنامه قید میکنم "این میکرو اسمش پنج هست" یا این "اسم" رو در eeprom میکرو قید میکنم. مسلما من فقط مجازم به درخواستهایی جواب بدم که برای "من" ارسال شده. من یعنی چی؟ یعنی کد قید شده همین کدی باشه که در برنامه یا ایپرام اومده. چون در شبکه های بفرم باس مثل اترنت و rs485 و rs422 همه سیستمها میتونن درخواست ارسال شده رو بگیرن اما فقط اونی جواب میده که "اسمش" همونی باشه که به عنوان گیرنده در درخواست قید شده.

                      دیدگاه


                        #12
                        پاسخ : ارتباط AVR با Modbus RTU

                        نوشته اصلی توسط رضا آقازاده
                        حالا من هول شدم بجای پنج قید کردم "یک"!!! شما که دیگه اصل مطلب رو باید بگیری! (در مثال آخری عرض کردم).
                        ضمنا اگه منظورتون اینه که چرا سیستم اول "یک" هست و دومی "پنج" باید عرض کنم در دنیای عادی ما اگر اسم یک فرزند خانواده محمد بود الزاما اسم فرزند بعدی محمد علی نمیشه! فقط باید جوری باشه که اسم این دو تا متفاوت باشه. (فامیلی رو در نظر نگیرین!!) حالا بین سیستم ها فقط دو تا عدد متفاوت بایستی وجود داشته باشه. اگر قرار باشه دو سیستم که یک "آی دی" یا کد داشته باشن در یک شبکه موجود باشه مثل این میمونه که شما بری توی یک کلاس بگی: "محمد کیه؟" خیلی احتمال داره بیش از یک نفر بیاد جلو.
                        از طرف دیگه چگونگی "گفتن" اینکه "تو یک باش" و "تو پنج باش" به سخت افزار و پروتکل مربوطه بستگی داره. من روی میکروی خودم داخل برنامه قید میکنم "این میکرو اسمش یک هست" و در نسخه دیگه همین میکرو با همین برنامه قید میکنم "این میکرو اسمش پنج هست" یا این "اسم" رو در eeprom میکرو قید میکنم. مسلما من فقط مجازم به درخواستهایی جواب بدم که برای "من" ارسال شده. من یعنی چی؟ یعنی کد قید شده همین کدی باشه که در برنامه یا ایپرام اومده. چون در شبکه های بفرم باس مثل اترنت و rs485 و rs422 همه سیستمها میتونن درخواست ارسال شده رو بگیرن اما فقط اونی جواب میده که "اسمش" همونی باشه که به عنوان گیرنده در درخواست قید شده.
                        خوب این فرم کلی شبکه ی مدباس هست و واقعا متشکرم از توضیحات بجا و خوبتون

                        سوال من اینه که از طرف مستر چه بیت هایی برای صدا زدن Slave مورد نظرش رد و بدل میشه؟
                        و دقیقا اطلاعاتی که برای مراحل " 1-درخواست از مستر 2-تایید هویت از اسلیو 3- ارسال اطلاعات از اسلیو به مستر 4-دریافت و تایید دریافت از مستر " رد و بدل میشه چطوری کدبندی میشه و دقیقا طبق پروتکل بیتهای اعلام وضعیت چی هستند و بیت های دیتا چطوری کدبندی میشن
                        Reveng will surely come... Your hard time are ahead
                        // - - - - - - - - - -
                        برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
                        // - - - - - - - - - -
                        اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
                        // - - - - - - - - - -

                        دیدگاه


                          #13
                          پاسخ : ارتباط AVR با Modbus RTU

                          احتمالا اطلاع ندارید که زنده یاد رضا آقازاده بر اثر حادثه تصادف از بین ما رفته اند و به نقل قول شما نمی توانند پاسخ بدهند. برای اطلاع از جزئیات ارتباط ModBus می توانید به مرجع مشخصات این پروتکل مراجعه کنید:

                          http://modbus.org/docs/Modbus_Applic...col_V1_1b3.pdf
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            #14
                            پاسخ : پاسخ : ارتباط AVR با Modbus RTU

                            نوشته اصلی توسط طراح
                            احتمالا اطلاع ندارید که زنده یاد رضا آقازاده بر اثر حادثه تصادف از بین ما رفته اند و به نقل قول شما نمی توانند پاسخ بدهند. برای اطلاع از جزئیات ارتباط ModBus می توانید به مرجع مشخصات این پروتکل مراجعه کنید:

                            http://modbus.org/docs/Modbus_Applic...col_V1_1b3.pdf
                            خیلی متاسف شدم ....
                            Reveng will surely come... Your hard time are ahead
                            // - - - - - - - - - -
                            برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
                            // - - - - - - - - - -
                            اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
                            // - - - - - - - - - -

                            دیدگاه


                              #15
                              پاسخ : ارتباط AVR با Modbus RTU

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

                              دیدگاه

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