اطلاعیه

Collapse
No announcement yet.

کتابخانه ای برای modbus

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

    کتابخانه ای برای modbus


    درود بر همه عزیزان

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

    به روشهای مختلفی میشد در این اینورتر فرکانس خروجی را ست کرد

    در نسخه اولیه این دستگاه از چهار عدد رله برای فرمان دادن به اینورتر استفاده شد
    ولی در نسخه جدید چون خواسته شده بود که موتور با هر فرکانسی که کاربر تنظیم کرده کار کند ، نمیشد از روش رله استفاده کرد

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


    متاسفانه چون اون دستگاه باید سری حاضر میشد من نتونستم زیاد روی کتابخونم کار کنم و اونطوری که میخوام درش بیارم
    الان هم slave ی برای تست و گسترش کتابخونم ندارم
    ولی خیلی خوشحال میشم که دوستان اگر اشکالی درش هست بگن یا خودشون برطرف کنن


    خب ، قبل از توضیح دادن خود این لایبرری اجازه بدید مقدمه ای از modbus بگم
    شاید بعضی از دوستان مثل خود من آشنایی زیادی با این پروتکل نداشته باشن
    اگر با modbus آشنایی دارید میتونید این قسمت رو رد کنید

    modbus چیست ؟
    modbus پروتکلی برای ارتباط سریال است که در ابتدا در PLC ها ازش استفاده میشد
    ولی چندی نگذشت که این پروتکل جای خودش رو بیشتر در صنعت باز کرد و امروزه بیشتر ابزارآلات صنعتی از این پروتکل برای ارتباط با دنیای خارج استفاده میکنند ( مثل همون اینورتری که در اول صحبتش بود )

    دلایل اصلی استفاده گسترده از این پروتکل اینها هستند که :
    ۱ - حق تالیف یا اختراع آن بصورت آزاد است
    ۲ - سادگی آن و در نتیجه ساخت شبکه هایی با امکان گسترش آسان
    ۳ - حمل بیتهای خام و در نتیجه تولید سربار کمتر در شبکه

    همچنین modbus این امکان را میدهد که در یک شبکه مشابه دستگاههای مختلفی کار کنند. مثلا یکی برای اندازه گیری دما و رطوبت ، یکی برای کنترل موتور و ارتباط داشتن آنها با یک کامپیوتر

    ورژنهای مختلفی از این پروتکل وجود دارد. برای پورت سریال و اترنت
    البته بیشتر دستگاهها در شبکه های سریالی که لایه فیزیکی آنها EIA-485 هست از این پروتکل بهره میبرند

    برای ارتباطات سریال نیز دو نوع modbus وجود داره. یکی RTU و دیگری ASCII
    در نوع ASCII فرامین/اطلاعات بصورت اسکی هگز رد و بدل میشود و Human Readable تر هست و برای تشخیص خطا هم از longitudinal redundancy check بهره میبرد
    در نوع RUT فرامین/اطلاعات بصورت عدد (باینری) جابجا میشود و برای خطا یابی هم از cyclic redundancy check استفاده شده

    دستگاهی که میگه پروتکل modbus رو ساپورت میکنم ، باید از RTU پشتیبانی کنه ولی ASCII الزامی نیست

    تصویری از یک شبکه modbus نمونه :


    همان طور که در شکل بالا میبینید ، در پروتکل modbus یک Master قرار میگیرد و تعداد زیادی Slave
    کتابخانه ای که من نوشتم برای استفاده از میکروکنترلر بعنوان Master هست

    من چون انشام خوب نیست دیگه ادامه نمیدم
    ولی اگر سوالی بود ، خوشحال میشم راهنمایی کنم اگر بلد باشم

    از زبان ویکی پدیا :
    http://en.wikipedia.org/wiki/Modbus

    جزییات پروتکل modbus ( بطور کلی ) :
    http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf

    جزییات استفاده از modbus در شبکه های سریال :
    http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf

    توضیح کتابخانه
    خب ، بعد از اون مقدمه چینی خسته کننده ، میرسیم به اصل مطلب
    باید عرض کنم که متاسفانه توابع هیچ خروجی ای از موفقیت بودن یا نبودن ارتباط ندارن ( اظافه کردن این امکان مشکل نیست )
    فقط میکرو ارسال داره و چیزی دریافت نمیکنه :-(

    متاسفانه بدلیل کمبود وقت ، خیلی مختصر نوشته شده

    تابعی جهت راه اندازی اولیه

    کد PHP:
    void modbusInit(unsigned int baudrate); 


    تابعی جهت نوشتن در رجیستر دستگاه
    کد PHP:
    int modbus_WriteSingleRegister(unsigned int slaveAddrunsigned int registerAddrunsigned int value); 


    تنظیمات سخت افزاری برای میکروکنترلر هم در فایل هیدر کتابخانه قابل تنظیم هست
    اگر از چیپ MAX485 برای راه اندازی خط RS485 استفاده میکنید ، پایه های ۲ و ۳ را به هم متصل کنید و به پایه ای که در فایل هیدر بنام MODBUS_DIRECTION معرفی کردید متصل کنید ( این برای ارتباطات HalfDuplex هست )
    و چون فعلا فقط ارسال داریم ، نیازی به این پایه و همچنین استفاده از RXD میکرو نیست
    ببخشید دیگه ، وقت کم بود.

    دانلود
    سورس کتابخانه برای کامپایلر avr-gcc
    چگونه هوشمندانه بپرسیم

    #2
    پاسخ : کتابخانه ای برای modbus

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

    دیدگاه


      #3
      پاسخ : کتابخانه ای برای modbus

      نوشته اصلی توسط AFSHARAN
      تابعی برا مودباس هستش اما نمی دونم چه جوری با اون کار کنم از شما می خوام اگه براتون ممکنه یه توضیح در این باره بدین
      اطلاعات زیادی در مورد Basom ندارم
      دوستان اینکاره باید کمک کنن :smile:

      نوشته اصلی توسط AFSHARAN
      من باید برم زبان c یاد بگیرم بیسیک خیلی ضعیفه نظر شما چیه؟
      این موضوع بحث برانگیزه و ممکنه موضوع تاپیک عوض بشه . اینجا در موردش صحبت نکنیم بهتره :smile:
      چگونه هوشمندانه بپرسیم

      دیدگاه


        #4
        پاسخ : کتابخانه ای برای modbus

        سلام
        توی این سایت هیچ کس نبود که با تابعه (modbus) خود bascom کار کرده باشه ما که نامید شدیم

        دیدگاه


          #5
          پاسخ : کتابخانه ای برای modbus

          نوشته اصلی توسط AFSHARAN
          سلام
          توی این سایت هیچ کس نبود که با تابعه (modbus) خود bascom کار کرده باشه ما که نامید شدیم
          توی اینترنت جستجو کنید ، شاید چیزی پیدا کنید :smile:

          مثلا اینجا رو ببینید .
          چگونه هوشمندانه بپرسیم

          دیدگاه


            #6
            پاسخ : کتابخانه ای برای modbus

            سلام من قراره با modbus کار کنم اگه رسیدم ورفتم سراغش حتما با bascom
            میزارم انجا یه هفته منتظر باش. :eek:

            دیدگاه


              #7
              پاسخ : کتابخانه ای برای modbus

              نوشته اصلی توسط avr.mohsen
              سلام من قراره با modbus کار کنم اگه رسیدم ورفتم سراغش حتما با bascom
              میزارم انجا یه هفته منتظر باش. :eek:
              سلام
              تونستی درست کنی خبر بده من منتظرم

              دیدگاه


                #8
                پاسخ : کتابخانه ای برای modbus

                با سلام و تشکر از آقای رستمی من از کتابخانه که برای نوشتن در رجیسترهای modbus گذاشتید استفاده کردم که خیلی هم عالی جواب داد.
                ولی برای خواندن رجیستر مشکل دارم و هر چی برنامه رو برای خواندن رجیسترها تغییر دادم نشد اگه امکان داره کمکم کنید.
                با تشکر
                یا علی گفتیم و عشق آغاز شد.

                دیدگاه


                  #9
                  پاسخ : کتابخانه ای برای modbus

                  نوشته اصلی توسط ahmad2000
                  با سلام و تشکر از آقای رستمی من از کتابخانه که برای نوشتن در رجیسترهای modbus گذاشتید استفاده کردم که خیلی هم عالی جواب داد.
                  ولی برای خواندن رجیستر مشکل دارم و هر چی برنامه رو برای خواندن رجیسترها تغییر دادم نشد اگه امکان داره کمکم کنید.
                  با تشکر
                  درود به شما.
                  راستش خیلی مدته که من با modbus کار نکردم و حقیقا این پروتکل فراموشم شده!
                  برای خواندن از رجیسترها دوباره باید منابع رو مطالعه کنم که متاسفانه فعلا برام مقدور نیست.
                  شما بفرمائید تا کجا پیش رفتید و مشکل کجاست تا اگر کمکی از دستم برمیاد انجام بدم.
                  چگونه هوشمندانه بپرسیم

                  دیدگاه


                    #10
                    پاسخ : کتابخانه ای برای modbus

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

                    دیدگاه


                      #11
                      پاسخ : کتابخانه ای برای modbus

                      با سلام از این کتابخانه میشه درcodevision استفاده کرد؟من درباره avr gccاطلاعات ندارم میشه یه توضیح بدید ممنون

                      دیدگاه


                        #12
                        پاسخ : کتابخانه ای برای modbus

                        سلام وممنون از کتابخانه که گذاشتید
                        منم در حال نوشتن برنامه مدباس با زبان اسمبلی در مد rtu هستم
                        من فایلهایی که گذاشتید را خواندم ولی چند در مورد برام مجهوله ::::
                        تایمرهای 3.5 و1.5 و time out
                        زمانی که پیغامی را برای اسلیو ارسال می کنیم چه زمانی متوجه میشه فریم تموم شده باید ازتایمرها استفاده کنم
                        من گیج شدم چون برنامه شما خیلی ساده بود :angry:
                        لطفا کمکم کنید
                        ممنون

                        دیدگاه


                          #13
                          پاسخ : کتابخانه ای برای modbus

                          کتابخانه و برنامه ای جهت راه اندازی دستگاه پاورمتر (دارای پروتکل مدباس)HPL در محیط CODEVISION AVR

                          http://rapidshare.com/files/416509858/modbus_project1.rar

                          دیدگاه


                            #14
                            پاسخ : کتابخانه ای برای modbus

                            با سلام

                            فایلی که شما قرار دادید خرابه.
                            لطفا دوباره قرار بدهید.


                            ممنون
                            موفق باشید
                            خدایا آنگونه زنده ام بدار تا نشکند دلی از زنده بودنم و آنگونه بمیرانم تا به وجد نیاید کسی از نبودنم (دکتر شریعتی)

                            دیدگاه


                              #15
                              پاسخ : کتابخانه ای برای modbus

                              با سلام
                              دوستان من میخوام با این : http://www.enda.com.tr/ENG/Products/Urunler.aspx?UrunID=140

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

                              کلا باید چه کنم ؟

                              ممنون از توجهتون

                              دیدگاه

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