اطلاعیه

Collapse
No announcement yet.

شناساندن slave ها به master در یک شبکه

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

    شناساندن slave ها به master در یک شبکه

    با سلام
    من چند تا میکرو را با هم به صورت موازی شبکه کردم و میخوام از مستر به هر اسلیو یک سری اطلاعات بدم . من به جای چیپ سلکت سخت افزاری از چیپ سلکت نرم افزاری استفاده کردم به این صورت که هر سلیو یک کد مخصوص به خودش داره و تا وقتی اون کد نیاد هیچیزی در یافت نمی کنه .
    مشکل من اینه که اگر بخوام این کارو بکنم باید برای هر اسلیو یه برنامه جدا بنویسم که این اصلا جالب نیست
    من باید یه کاری کنم که یه برنامه عمومی برای اسلیو ها داشته باشم و در اول کار این اسلیو هارو به وسیله مستر از هم تفکیک کرده و کد مخصوصشونو بهشون بدم ولی هرچی فکر کردم به جواب نرسیدم . لطفا اگه چیزی به ذهنتون میرسه منو راهنمایی کنید
    آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
    آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
    آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
    آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

    #2
    پاسخ : شناساندن slave ها به master در یک شبکه

    این کار رو بوسیله یک کلید میتونید انجام بدید در اولین اتصال slave به شبکه (یا هر زمانی که بخواید آیدی رو تغییر بدید ) یک کلید رو روی slave فشار میدید که مثلا میتونه یکی از اینتراپت های خارجی میکرو باشه بعد در زیر برنامه اون اینتراپت مینویسید که خط رو چک کنه و ببینه آیا دیتایی روی خط هست یا نه و در صورت نبودن دیتا روی خط ، یک request به master بفرسته .
    master با بررسی آیدی هایی که قبلا استفاده شده ، یک شماره جدید رو به Slave بفرسته و ذخیره کنه
    اما اگه شبکه شما دارای پروتکلی مثل modbus باشه و در اون سرور دائما در حال ارسال request به slave ها باشه ، اونوقت هیچ slave نمیتونه بدون اجازه master خط رو در دست بگیره و کار بالا رو نمی تونید انجام بدید
    برای این کار دو تا راه به نظر من میرسه :
    1- قرار دادن دو کلید ، یکی برای مستر و دیگری برای اسلیو ... هروقتی slave رو مثل بالا متصل کردید به شبکه ، اونوقت کلید master رو هم بزنید تا کار طبیعی خودش یعنی دادن درخواست به slave ها رو رها کنه و یک آیدی جدید برای slave جدید بسازه و بفرسته
    2- شماره های پشت سر هم برای نود هاتون در نظر بگیرید فرض کنید الان 3 تا دستگاه دارید پس شماره های 100 ، 101، و 102 استفاده شده ... اما توی ارسال request که مستر انجام میده همیشه 104 رو هم بفرسته چون به request شماره 104 هیچ نودی جواب نمیده و همچنین آخرین شماره ای هست که ارسال میشه ، میکرو بدون آیدی بفهمه این شماره آزاده و اون رو برای خودش برداره . پس خودش به 104 جواب بده از این به بعد
    مستر هم که میبینه از 104 داره براش جواب میاد ، حالا 105 رو هم دائما بفرسته تا اگه دستگاه جدید اومد ....
    Don't hesitate to ask any question ..

    دیدگاه


      #3
      پاسخ : شناساندن slave ها به master در یک شبکه

      واقعا دستت درد نکنه . تو این پروژه من از یک پروتوکل استاندارد و خاص استفاده نکردم و اومدم یه یک پورت میکرو رو با همه موازی کردم و یک پین هم برای کلاک همه گذاشتم . فکر میکنم از اون روش اول میتونم استفاده کنم ولی باز هم اگر بشه نرم افزاری این کارو کرد بهتره .
      آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
      آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
      آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
      آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

      دیدگاه


        #4
        پاسخ : شناساندن slave ها به master در یک شبکه

        نوشته اصلی توسط king_of_hearts90
        تو این پروژه من از یک پروتوکل استاندارد و خاص استفاده نکردم و اومدم یه یک پورت میکرو رو با همه موازی کردم و یک پین هم برای کلاک همه گذاشتم
        من در مورد پروژه شما اطلاعات ندارم اما چیزی که به نظرم میرسه اینه که شما با این کار فقط زحمت خودتون رو بیشتر کردید . پایه های زیادی از میکرو یعنی 8+1 رو به کار گرفتید و این خیلی جالب به نظر نمیرسه ...
        من پیشنهاد میکنم اگر فاصله میکرو ها از هم کم هست (که به احتمال زیاد همینتوره وگرنه ارتباط موازی هم جواب نمیده ) از پورت سریال میکرو ها استفاده کنید اگر هم فاصله زیاد هست ، از 485 استفاده کنید .
        حالا از این حرفها که بگذریم ، حتما مد نظر قرار بدید که میکرو master مدیریت همه slave ها رو به درستی انجام بده یعنی نگذاره هر میکرو هروفت دلش خواست خط رو در دست بگیره چون باعث تداخل دیتا ها میشه برای این منظور پروتکل مناسبی رو ایجاد کنید
        موفق باشید
        Don't hesitate to ask any question ..

        دیدگاه


          #5
          پاسخ : شناساندن slave ها به master در یک شبکه

          نوشته اصلی توسط syavash_kasraeee
          من در مورد پروژه شما اطلاعات ندارم اما چیزی که به نظرم میرسه اینه که شما با این کار فقط زحمت خودتون رو بیشتر کردید . پایه های زیادی از میکرو یعنی 8+1 رو به کار گرفتید و این خیلی جالب به نظر نمیرسه ...
          من پیشنهاد میکنم اگر فاصله میکرو ها از هم کم هست (که به احتمال زیاد همینتوره وگرنه ارتباط موازی هم جواب نمیده ) از پورت سریال میکرو ها استفاده کنید اگر هم فاصله زیاد هست ، از 485 استفاده کنید .
          حالا از این حرفها که بگذریم ، حتما مد نظر قرار بدید که میکرو master مدیریت همه slave ها رو به درستی انجام بده یعنی نگذاره هر میکرو هروفت دلش خواست خط رو در دست بگیره چون باعث تداخل دیتا ها میشه برای این منظور پروتکل مناسبی رو ایجاد کنید
          موفق باشید
          سلام دوست عزیز از پیشنهادی که دادی ممنونم ولی من نیاز به سرعت دارم وگرنه میخواستم از اس پی آی استفاده کنم ولی مشکل سرعت داشتم و این جوری دستم باز تره برای کارهام .
          آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
          آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
          آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
          آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

          دیدگاه


            #6
            پاسخ : شناساندن slave ها به master در یک شبکه

            سلام
            من مشابه این کار رو کردم
            بهتون پیشنهاد میدم از روش استاندارد مودباس استفاده کنید
            من هم اگه خواستید کمک می کنم
            روش استاندارد خوبیش اینه که همه جای دنیا همه می فهمنش
            و در ضمن شما اینجوری می تونید با همه دستگاههای استاندارد هم ارتباط بگیری
            نیازی به کلید و.... هم نیست
            با RS485 شما می تونید 32 تا دیوایس رو ارتباط بگیری
            ولی من با بیش از اینا ارتباط گرفتم
            255 تا با مودباس میشه
            کم رنگ ترین جوهر ها از قویترین حافظه ها ماندگارترند.

            دیدگاه


              #7
              پاسخ : شناساندن slave ها به master در یک شبکه

              نوشته اصلی توسط jolfaplc
              بهتون پیشنهاد میدم از روش استاندارد مودباس استفاده کنید
              من هم اگه خواستید کمک می کنم
              روش استاندارد خوبیش اینه که همه جای دنیا همه می فهمنش
              سلام. در مورد مدباس متاسفانه روی سایت مطلب جامع و کاملی نداریم. اگه امکانش هست در مورد این پروتکل اطلاعاتتون رو رائه کنید.

              دیدگاه


                #8
                پاسخ : شناساندن slave ها به master در یک شبکه

                ما برای هر کاری نیاز به پیاده سازی کل مودباس نداریم گرچه pdf های انگلیسی خوبی در این زمینه موجوده
                اما اگه بخوایم ساده مودباس رو مطرح کنیم میتونیم اینطور بگیم که :
                فرض کنید توی یک کلاس نشستید و معلم سوالی رو مطرح کرده اگه همه دانش آموزا شروع به صحبت کنند ، هیچ کس نمیفهمه کی داره چی میگه
                پس اینجا معلم وارد عمل میشه و به ترتیب از تک تک دانش آموزا میخواد تا اگه جواب رو می دونن بگن ... مثلا میگه حامد تو بگو .... بعضی ها جواب میدن ... بعضی ها هم میگن که نمیدونیم!
                مدباس یعنی همین ! فقط توی یک فرمت خاص
                1-هیچ نودی بدون اجازه از master نباید روی خط دیتا بفرسته پس این مستر هست که باید اسم slave مورد نظر رو بگه (شماره گیرنده)
                2- master باید سوالش رو مطرح کنه (مشخص کردن نوع اطلاعاتی )
                3- از اونجایی که توی این کلاس فرضی ما ، صدای افراد باهم فرق میکنه ، همه همدیگه رو تشخیص میدن اما توی سیم برق که صدا ها یکیه ! پس باید خودشون رو هم معرفی کنن و بگن کیه که داره حرف میزنه (شماره فرستنده)
                4- بعضی وقتا استاد می پرسه سوالو فهمیدی ؟ این واسه اینه که معلوم بشه سوالش رو دانش آموز کامل شنیده یا نه ... اینجا ما واسه اینکه بفهمیم داده هامون تو مسیر خراب شدن یا نشدن از کدهای تشخیص خطا استفاده میکنیم ساده ترین نوع این کد میتونه تشخیص parity باشه و یا CRC ، VRC و ....
                آخرین نکته هم اینکه اول و آخر دیتاهاتون رو با کاراکترهای قراردادی مشخص کنید همونطور که آقا معلم اول سوالش ممکنه بگه (بچه ها گوش کنید) و آخر سوالشم بگه (هوم؟) اینجا هم شما مثلا اول دیتا کاراکتر 0x02 و آخرش 0x03 رو ارسال کنید
                خب حالا مدباس همین رو توی یک قالب آورده که استاندارده خودشه ولی شما میتونید این مطالب رو تو قالب دلخواه خودتون بیارید



                Don't hesitate to ask any question ..

                دیدگاه


                  #9
                  پاسخ : شناساندن slave ها به master در یک شبکه

                  ممنو از پاسخ و مثالتون. من با اصول کلی مدباس آشنا هستم هر چند که تابخال پیاده سازیش نکردم.
                  منظورم از درخواستم هم این بود که اگه در آینده کسی به این تاپیک مراجعه کرد کارش راه بیفته. بعلاوه مدباس یه پروتکل استاندارده که خیلی از وسایل باهاش کار میکنن و در نتیجه ایجاد ارتباط با این پروتکل بهتر از اینه که خودمون بخوایم یه پروتکل جدید طراحی کنیم (حالا که داریم وقت میذاریم بهتره که یه کار اصولی بکنیم) مگر اینکه در وقت یا هزینه پروژمون صرفه جویی بشه مثلا وقتی قرار یه ارتباط ساده بین دو سیستم در فاصله نزدیک برقرار بشه!

                  دیدگاه


                    #10
                    پاسخ : شناساندن slave ها به master در یک شبکه

                    سلام دوست عزیز

                    من یه پروژه سیستم Client-Server به صورت wireless و هم به صورت wire طراحی کردم که در اون از پروتکل

                    سریال (uzart) استفاده شده سرعت نسبتا خوبی داره مهمترین ویژگی که داره امنیت بالا از لحاظ تبادل اطلاعات و خطای صفر درصد اون هست.

                    این سیستم برای ارتباط با nod های خود دقیقا براساس پروتکل modbus عمل میکنه.

                    در تبادل اطلاعات به صورت وایرلس طریقه ی ارسال اطلاعات باید حتما به صورت سریال باشه.

                    اگه فکر می کنی در رابطه با همین موضوع میتونم کمکت کنم بگو........
                    [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                    [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                    دیدگاه


                      #11
                      پاسخ : شناساندن slave ها به master در یک شبکه

                      نوشته اصلی توسط mojalan
                      ممنو از پاسخ و مثالتون. من با اصول کلی مدباس آشنا هستم هر چند که تابخال پیاده سازیش نکردم.
                      منظورم از درخواستم هم این بود که اگه در آینده کسی به این تاپیک مراجعه کرد کارش راه بیفته. بعلاوه مدباس یه پروتکل استاندارده که خیلی از وسایل باهاش کار میکنن و در نتیجه ایجاد ارتباط با این پروتکل بهتر از اینه که خودمون بخوایم یه پروتکل جدید طراحی کنیم (حالا که داریم وقت میذاریم بهتره که یه کار اصولی بکنیم) مگر اینکه در وقت یا هزینه پروژمون صرفه جویی بشه مثلا وقتی قرار یه ارتباط ساده بین دو سیستم در فاصله نزدیک برقرار بشه!
                      خواهش می کنم . من برای یک پروژه 485 مجبور شدم روی مدباس کار کنم خیلی هم وقت زیاد برد اما دیدم در نهایت سیستم من نیازی به پیاده سازی کامل مدباس نداره واسه همین دو قسمت از مدباس رو حذف کردم و بقیه رو انجام دادم . اما بنا به فرمایش شما خیلی خوبه که این تاپیک کامل بشه . در این زمینه استاد رضاییان هم خیلی کار کردند و فکر میکنم در حال چاپ کتاب در این زمینه باشند (john lock )
                      امیدوارم ایشون هم در این بحث کمک کنند
                      Don't hesitate to ask any question ..

                      دیدگاه


                        #12
                        پاسخ : شناساندن slave ها به master در یک شبکه

                        یه برنامه برای SLAVE می زارم
                        هر جاش ایراد داشتید سوال کنید
                        البته همش نیست
                        چون زیاده نمی خوام سر در گم بشی
                        این برای استارت کاره:
                        با بسکام هست
                        $regfile = "m32def.dat"
                        $crystal = 11059200

                        این تعریف متغیر ها که همش تو این قسمت استفاده نشده
                        Dim S(8) As Byte
                        Dim A As Byte
                        Dim Crc1 As Byte
                        Dim Crc2 As Byte
                        Dim L(7) As Byte
                        Dim Crc As Word
                        Dim N As Byte
                        Dim I As Byte
                        Dim Pul As Word
                        Dim X1 As Byte
                        Dim X2 As Byte
                        Dim M(9) As Byte
                        Dim Ax As Byte
                        Dim Crcx1 As Byte
                        Dim Crcx2 As Byte
                        Dim Crcx As Word
                        Dim Nx As Byte
                        Dim Ix As Byte
                        Dim Ixx As Byte
                        Dim Ixxx As Byte
                        Dim Pulx As Word
                        Dim Slave(15) As Word
                        L1 آدرس اسایو هست
                        L(1) = 5
                        Do
                        S(1) = Waitkey()
                        If S(1) = L(1) Then
                        S(2) = Waitkey()
                        M(2) = S(2)
                        S(3) = Waitkey()
                        S(4) = Waitkey()
                        S(5) = Waitkey()
                        S(6) = Waitkey()
                        S(7) = Waitkey()
                        S(8) = Waitkey()
                        اطلاعات از مستر گرفته شد
                        حالا MASTER رو بی خیال میشیم تو این پستم
                        بایت اول همون آدرس مستر هست
                        پس فقط وقتی به سوال دقت می کنه که طرف سوال اسلیو مورد نظر باشه
                        یعنی مودب هست :mrgreen:
                        Gosub Crccheck
                        تا اطلاعات رو دریافت کرد میره تو زیر برنامه چک کردن CRC
                        CRC پیغام رو کد گذاری می کنه تا اطلاعات اگه دست کاری شدن یا گم شدن بفهمیم
                        زیر برنامه CRC بمونه برای پست یعدی
                        که ببینیم اصلا کسی اینا به دردش می خوره یا نه!!!!
                        برنامه رفت تو CRC وCRCی کد های رسیده رو چک کرد
                        If Crc1 = S(7) And Crc2 = S(8) Then
                        Gosub Send
                        End If


                        CRC1,CRC2 تو برنامه CRCCHECKحساب شد
                        اگه با CRC فرستاده شده یکی بود
                        میره که یه دستور عمل کنه
                        SEND زیر برنامه عمل کردن به دستورات مستر هست
                        که میتونه
                        WRITE_READ
                        یک یا چند مقدار از حافظه هست
                        البته اینجا حافظه رو خودمون تعیین می کنیم
                        فکر کنم خیلی حرف زدم :nerd:

                        اگه CRC1
                        کم رنگ ترین جوهر ها از قویترین حافظه ها ماندگارترند.

                        دیدگاه


                          #13
                          پاسخ : شناساندن slave ها به master در یک شبکه

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

                          دیدگاه


                            #14
                            پاسخ : شناساندن slave ها به master در یک شبکه

                            نوشته اصلی توسط king_of_hearts90
                            سلام دوستان
                            من پروژم تابلو روانه و برا اینکه نرخ فریم بر ثانیم بره بالا مجبورم با بالا ترین سرعت و کمترین هزینه این کارو بکنم . و تمام مشکلات این پروژه جز ا.ن چیزی که موضوع تاپیک هستش رو حل کردم . تو این پروژه فقط مستر به سلیو دیتا میده و ارتباط میتونه یک طرفه باشه . اگه میتونید برا این مشکل راه حل مناسب بدید
                            میتونم بپرسم برای چی به سرعت زیاد نیاز دارید؟
                            نکنه اطلاعات پیکسل یه پیکسل حروف رو دارید آنلاین میفرستید؟ چون فقط در این حالت هست که شما سرعت نیاز دارید وگرنه اگه حروف در خود تابلو تعریف شده باشه و شما بخواید کد اونها رو ارسال کنید حتی با کمترین نره ارسال سریال هم میتونید چون تا وقتی تابلو بخواد قبلی هارو نمایش بده ، حروف جدید اومدن ....
                            Don't hesitate to ask any question ..

                            دیدگاه


                              #15
                              پاسخ : شناساندن slave ها به master در یک شبکه

                              تابلو روان من به این شکل که یک انیمشن رو باید پخش کنه برا همین هر فریک رو باید قبل از اجرا بفزستم برای قسمت مربوطه
                              آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
                              آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
                              آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
                              آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

                              دیدگاه

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