اطلاعیه

Collapse
No announcement yet.

جلوگیری از ارسال دو slave در شبکه rs485

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

    جلوگیری از ارسال دو slave در شبکه rs485

    سلام بچها
    فرض کنین این شبکه rs485 من هس :

    اگه دو یا حتی بیشتر از دوتا slave بخوان همزمان اطلاعات ارسال کنن ، چطور باید هماهنگی بینشون ایجاد کنم ؟!
    1-امکانش هست پایه rx میکرو توی حالت usart به صورت ورودی چک کنم ؟
    2-در حالیتی که اطلاعاتی دریافت نمیشه pull down هست ؟خوب ممکنه در حین دریافت داده هم 0 بشه،فک کنم چک کردنش تاثیری نداشته باشه...
    3-به نظر شما روش بهتر چیه ؟
    4-من حودم هرجور فک میکنم ممکن یک حالتی پیش بیاد دو اسلو با هم tx رو چک کنن و ببینن خط خالیه و داده هارو ارسال کنن...امکانش نیست ؟تداخل پیش نمیاد؟

    #2
    پاسخ : جلوگیری از ارسال دو slave در شبکه rs485

    با سلام
    اگر به بحث های مختلف در این باره تو سایت نگاه بفرمایید کلا موضوع دستتون میاد توضیحات مفصلی در اینباره داه شده
    ما در شبکه 485 slave ها رو آزاد نمیگداریم تا هر وقت هر کدوم که دیتایی داشتند اون رو ارسال کنند بلکه همونطور که از اسمشون معلومه اونها باید توسط master فرماندهی بشند . برای این کار master باید مرتبا از هر نود بپرسه که آیا دیتایی دارند یا نه و اونها در مدت زمان خاصی جواب بدند . یکی از پروتکل های مشهور در این زمینه modbus هست که دو نوع ascii و RTU داره .
    اگر این کار رو انجام ندیم ، حتی اگر مطمئن هم باشیم دو تا نود باهم ارسال اطلاعات ندارند باز هم به مشکل می خوریم
    Don't hesitate to ask any question ..

    دیدگاه


      #3
      پاسخ : جلوگیری از ارسال دو slave در شبکه rs485

      نوشته اصلی توسط syavash_kasraeee
      با سلام
      اگر به بحث های مختلف در این باره تو سایت نگاه بفرمایید کلا موضوع دستتون میاد توضیحات مفصلی در اینباره داه شده
      ما در شبکه 485 slave ها رو آزاد نمیگداریم تا هر وقت هر کدوم که دیتایی داشتند اون رو ارسال کنند بلکه همونطور که از اسمشون معلومه اونها باید توسط master فرماندهی بشند . برای این کار master باید مرتبا از هر نود بپرسه که آیا دیتایی دارند یا نه و اونها در مدت زمان خاصی جواب بدند . یکی از پروتکل های مشهور در این زمینه modbus هست که دو نوع ascii و RTU داره .
      اگر این کار رو انجام ندیم ، حتی اگر مطمئن هم باشیم دو تا نود باهم ارسال اطلاعات ندارند باز هم به مشکل می خوریم
      سلام دوست عزیز
      از پاسخ شما ممنون :job:
      راجب rs485 سرچ کرده بودم ولی مدباس به چشمم نخورده بود ، از راهنماییت ممنون. ولی من نمونه کد c پیدا نکردم .... شما نمونه کد دارین؟
      من میخوام وقتی slave جدید وارد مدار شد master خودش اونو بشناسه ... مثل شبکه های کامپیوتری که وقتی یک سیستم وارد شبکه میشه یک ip بهش اختصاص داده شه...به صورت اتوماتیک ...
      واسه همین وقتی کل سیستم روشن میشه slave ها آدرس ندارن و master به اونا باید آدرسی اختصاص بده...
      وقتی سیستم روشن شد باید مستر به همه یک پیام به معنی اینکه slave ها خودتون رو معرفی کنین به همه بفرسته ، تا slave ها با دریافت این دستور چک کنن آیا قبل خودشون slave دیگه ای هس؟ ip ایش چیه ؟ اگه هست یک ip جدید به خودت اختصاص بده و به مستر معرفی کن....
      اینجوری دونه دونه slave ها نامگذاری میشن.
      حالا اگه بعدا هم یک nod جدید وارد بشه بایدخودشو به مستر اعلام کنه...

      حالا مد باس به من کمک میکنه ؟ من خودم میخواستم اینکارو انجام بدم. به هر نود یک شناسه اختصاص بدم . اول هر دستور اون شناسه رو برای slave ها بفرستم اگه شناسه مطابقت داشت اون slave پاسخ رو به مستر میده... فک کنم همون modbus بشه ... درسته ؟
      حالا اگه شما کدی دارین واسم بزارین شاید به کارم اومد

      چطور میتونم این کارای که میخوامو عملی کنم...؟ :question: :read:

      دیدگاه


        #4
        پاسخ : جلوگیری از ارسال دو slave در شبکه rs485

        اگر بگردید تو همین سایت قبلا من در موردش توضیح دادم و هیلی افراد دیگه هم تو همون بحث ها کلی ایده جدید مطرح کردند که خوندنش خالی از لطف نیست .
        اما شما نیاز ندارید که همه پروتکل مدباس رو پیاده کنید بلکه صرفا کافیه یک packet بسازید که شامل قسمتهای :
        1- علامت شروع packet مثل 0x02 یاشه
        2- شماره نود مورد نظر
        3- دیتای ارسالی
        4- کد تشخیص خطا مانند CRC و ...
        5- علامت انتهای packet مانند 0x03
        برای اینکه شما بتونید مثل DHCP به هر نود که اضافه میشه یه آدرس جدید اختصاص بدید بهتره که خود DHCP رو بخونید اما راههای ساده تری هم هست مثلا غیر از آدرسی که هر نود داره یک آدرس 255 هم براش تعریف کنید که در هر حلقه master یک درخواست هم برای 255 بفرسته اما فقط نودی جواب بده که آدرس جدید نداره و ...
        Don't hesitate to ask any question ..

        دیدگاه


          #5
          پاسخ : جلوگیری از ارسال دو slave در شبکه rs485

          نوشته اصلی توسط syavash_kasraeee
          اگر بگردید تو همین سایت قبلا من در موردش توضیح دادم و هیلی افراد دیگه هم تو همون بحث ها کلی ایده جدید مطرح کردند که خوندنش خالی از لطف نیست .
          اما شما نیاز ندارید که همه پروتکل مدباس رو پیاده کنید بلکه صرفا کافیه یک packet بسازید که شامل قسمتهای :
          1- علامت شروع packet مثل 0x02 یاشه
          2- شماره نود مورد نظر
          3- دیتای ارسالی
          4- کد تشخیص خطا مانند CRC و ...
          5- علامت انتهای packet مانند 0x03
          برای اینکه شما بتونید مثل DHCP به هر نود که اضافه میشه یه آدرس جدید اختصاص بدید بهتره که خود DHCP رو بخونید اما راههای ساده تری هم هست مثلا غیر از آدرسی که هر نود داره یک آدرس 255 هم براش تعریف کنید که در هر حلقه master یک درخواست هم برای 255 بفرسته اما فقط نودی جواب بده که آدرس جدید نداره و ...
          سلام
          خیلی ممنون
          امکانش هست لینک اون مبحثی که میگین رو واسم بزارین؟
          خوب مشکل منم همینه که ابتدای کار که هیچ دیوایسی ایپی نداره وقتی مستر یک درخواست مثلا به 255 بده ، همه میخوان پاسخ بدن ...
          میخواستم مستر تعداد slave هایی که درحال حاظر باهاشون در ارتباط هستن رو ذخیره کنه ، و هر دیوایس جدید که وارد شد به اون تعداد یکی اضافه کنه و به slave بگه آیپی شما مثلا x+1 هست ... و به این ترتیب برای بقیه...
          ولی همون ابتدای امر که هیچکی آیپی نداره باید چیکار کرد ؟
          قبل از اینکه با modbus بخوام آشنا بشم داده هارو با شروع کاراکتر < ارسال میکردم و با ; به اتمام میرسوندم.که یک چیزی شبیه مدباس هس...ولی دیگه کنترل خطا نداره...

          با تشکر

          دیدگاه


            #6
            پاسخ : جلوگیری از ارسال دو slave در شبکه rs485

            باسلام
            منم دارم رو پروتکل مدباس کار میکنم این pdf خیلی کمکم کرد میذارم شما هم مطالعه کنید البته پروتکل من هنوز اماده شده منم توش مشکل زیاد دارم .
            http://ehsedaghat.persiangig.com/PI_MBUS_300.pdf/download
            داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
            پیامبر اکرم (ص)
            علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
            اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

            دیدگاه

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