اطلاعیه

Collapse
No announcement yet.

مشکل در ارتباط چند میکرو با RS485 ?

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

    مشکل در ارتباط چند میکرو با RS485 ?

    با سلام خدمت دوستان
    در برنامه زیر به مشکل برخوردم: ( برنامه رو با بسکام نوشتم)
    ارتباط چند میکرو به صورت یک master با 8 عدد Slave . به این صورت که به هر کدام از میکروها ( غیر از مستر) یک دکمه متصل است. همچنین یک نمایشگر 7SEG به تمام میکروها اعم از مستر و اسلیوها متصل می باشد.
    میکرو های اسلیو از 1 الی 8 نام گذاری شده اند. در صورتیکه یک دکمه متصل به یکی از میکروهای اسلیو فشرده شد باید عدد خود را به مستر ارسال کند سپس مستر عدد مربوطه را به تمامی اسلیوها ارسال نموده و آنها روی نمایشگرشان نشان دهند...
    مشکل اینجاست که چگونه مستر از حالت مستر بودن خودش خارج شده و به حالت گیرنده در بیاید؟ از کجا باید متوجه شود؟ اصلا اینجا به مستر بودن احتیاج هست؟
    آیا در RS485 همواره باید یک مستر باشد و بقیه اسلیو؟ نمی شه مستر به حالت آماده باشد و هرگاه عددی آمد خوانده و آنرا برای بقیه ارسال نماید؟
    در ابتدا یک برنامه ساده نوشتم که مستر یک عدد را به دو اسلیو ارسال می کند. مشکلی نبود. در عمل هم پروگرام کردم و جواب داد. اما وقتی که می خواستم مثلا اسلیو شماره 1 ، یک عدد را در جواب به مستر ارسال نماید مستر همواره در حالت ارسال می بود و به حالت دریافت نمی رفت.
    توجه شود که در برنامه از اینتراپت USART نیز استفاده کرده ام.
    در صورتیکه سوالم مبهم بود مطرح کنید. برنامه را هم اگر خواستید می گذارم. لطفا کمکم کنید... :bye
    ask One Question

    #2
    پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

    کسی نبود....؟

    حداقل بهم بگید که امکان داره در RS485 مستر وجود نداشته باشه؟ :cry2:

    یا اینکه چطوری مستر یک لحظه به حالت دریافت برود و سپس به حالت ارسال برگردد....؟؟ :cry2:
    ask One Question

    دیدگاه


      #3
      پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

      به نظرتون از این دستور که در HELP بسکام اومده استفاده کنم درست میشه : :sad:

      کد:
      $lib "modbus.lbx"
      
      Config Print1 = Portb.1 , Mode = Set       ' use portb.1 for the direction
      
      Rs485dir Alias Portb.1
      
      Config Rs485dir = Output
      خواهشا یک کمکی کنید....
      من سرچ کردم توی تاپیک های مرتبط با RS485 ، نتونستم جوابمو بگیرم.... :cry2:
      ask One Question

      دیدگاه


        #4
        پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

        سلام به لینک زیر مراجعه کنید
        http://www.eca.ir/forum2/index.php?topic=77696.45

        دیدگاه


          #5
          پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

          با سلام خدمت شما دوست عزیز شما اگه تاپیک و یک نگاه کلی بکنید میبینید که برنامه کم کم به شکل تقریبا کامل در امده و نواقص تقریبا بر طرف شده البته الان دارم روی c کار میکنم و به معض به جواب رسیدن توی همون تاپیک قرار خواهم داد

          دیدگاه


            #6
            پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

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

            دیدگاه


              #7
              پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

              سلام میشه واضححتر توضیح بدین؟
              { خلاف قوانین - پاک شد }

              دیدگاه


                #8
                پاسخ : مشکل در ارتباط چند میکرو با RS485 ?

                نوشته اصلی توسط ask110 نمایش پست ها
                مشکل اینجاست که چگونه مستر از حالت مستر بودن خودش خارج شده و به حالت گیرنده در بیاید؟ از کجا باید متوجه شود؟ اصلا اینجا به مستر بودن احتیاج هست؟
                علت وجود مستر ، هماهنگی بین تبادل اطلاعات روی خط هست.
                شروع ارتباط باید با مستر صورت بگیره یعنی مستر ابتدا در حالت ارسال قرار میگیره و مابقی دستگاه ها در حالت دریافت . باید یک فریم دیتا روی خط ارسال بشه که شماره دستگاه هم مشخص بشه . مثلا اگه قراره عدد 0x25 را به دستگاه شماره 1 بفرستید اینطور دیتا را ارسال کنید:
                0x01 0x25 + CRC
                حالا تمام گیرنده ها این عدد را دریافت میکنند ولی اونی اسخ میده که دیتای اولش 0x01 هست (یعنی دستگاه شماره 1)
                و بهمین صورت برای مابقی دستگاه ها باید اینطور دیتا را تبادل کنید. توی پاسخ دادن هم به دو صورت میتونید عمل کنید ، اول اینکه فقط یه دلیوری به مستر بفرستید و اعلام کنید عدد را درست دریافت کردید ، دوم اینکه اسلیو هم دیتایی مورد نطر را برای مستر ارسال کنه .

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

                دیدگاه

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