اطلاعیه

Collapse
No announcement yet.

مشکل با rs485

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

    #61
    پاسخ : مشکل با rs485

    [quote author=اقای دکتر link=topic=77696.msg512876#msg512876 date=1380048379]
    سلام .
    Switch_sts کارش چیه ؟؟عبارتی که توضیح دادید متوجه نشدم .

    Udr_start این کارش چیه ؟
    [/ Switch_sts شماره اسلیو و مشخص میکنه یعنی میگه با کدوم اسلیو ارتباط برقرار بشه Udr_start هم یک مقدار ثابت هست که برای شروع ابتدا فرستاده میشه تا نظم برقرار باشه]

    دیدگاه


      #62
      پاسخ : مشکل با rs485

      نوشته اصلی توسط Majid-BN
      سلام خدمت دوستان به خصوص مهندس بهاری عزیز،من تو این متن سعی میکنم راحت ترین روش و در عین حال روش تست شده رو توضیح بدم تا عزیزانی که مثل من در حقشون کم لطفی شده و برنامه نویسیو با بسکام شروع کردن کمکی کرده باشم؛

      در ادامه در مورد نرم افزار توضیح میدم

      کد:
      $regfile = "m16def.dat"
      $crystal = 11059200
      $baud = 19200
      $hwstack = 128
      $swstack = 128
      $framesize = 128
      
      Declare Sub Data_SEND    
      
      
      Config Portd.6 = Output : 485_en Alias Portd.6 : 485_en = 1    'MAX485  ENABLE PIN        
      Dim Ip_add As Byte
      Dim Uart As Byte
      Dim Flag As Bit
      Dim Serial_data(2) As Byte
      Dim Udr_count As Byte
      Dim Ip_add As Byte
      
      
       
      Const Udr_start = 170
      
      
       
      
      
      
      Enable Interrupts
      
      Enable Urxc
      
      On Urxc Serial_receive
      
      
      DO
      
      YOUR PROGRAM HERE*****
      
      
      
      CALL Sub Data_SEND  ' SEND DATA TO SLAVE DEVICES
      
      LOOP
      
      END
      
      
      
      
      Sub Data_SEND    
      
       '******************* SEND  DATA REQUEST
      
            485_en = 1
      
            Waitms 25
      
            Printbin Udr_start ; Ip_add ; Switch_sts
      
            Waitms 25
      
            485_en = 0
       
      END Sub Data_SEND
      
       
       
      '*******************************************************************************
      '******************************* serial_receive ********************************
      '*******************************************************************************
      
      
      Serial_receive:
      
      
      
      
      Uart = Udr                         'reading uart data register (udr)
      
      If Flag = 0 Then
      
        If Uart = Udr_start Then                'finding the first byte of frame
      
         Flag = 1
      
         Count = 1
      
        End If
      
      Else
      
        Serial_data(count) = Uart
      
        If Count = 2 Then                    'counting 3 byte after detecting first byte
      
         Device_ip = Serial_data(1)
      
         Device_key = Serial_data(2)
      
         Flag = 0
      
         Count = 0
      
         '*************************************************************************
      
      
             If Device_ip = Ip_add And Then
      
      YOUR PROGRAM HERE *****
       
             End If
      
      
        End If
      
      Incr Count
      
      End If
      
      Return
      برای ارسال دیتا به دستگاه اسلیو ابتدا به Ip_add مقدار دلخواه میدیم،دقت کنید که این مقدار دلخواه باید در اسلیو هدف هم مقدار دهی شده باشه تا با ارسال این مقدار توسط مستر ،اسلیو بتونه پاسخ بده سپس به Switch_sts یا هر متغیر دلخواهی مقدار میدیم تا به اسلیوی که هدف هست فرستاده بشه و روی اون مقدار توسط اسلیو پردازش بشه,با دقت در برنامه متوجه میشیم که برای ارسال همواره پایه 485_en باید یک بشه و پس از ازسال باید 485_en صفر بشه تا میکرو آماده دریافت دیتا در حالت وقفه سریال باشه،اسلیو هم با دریافت کد ها مقدار مورد نظرو ارسال میکنه که مستر هم که با صفر کردن 485_en در حالت ذریافت بوده در مود وقفه دریافت سریال اطلاعات ارسالی توسط اسلیو رو دریافت میکنه،از قسمتهای قرار داده شده هم برای اسلیو ها و هم برای مستر میشه استفاده کرد مجدد توجه شما رو به چند نکته جلب میکنم،برای دریافت صحیح اطلاعات از کریستال خارجی با فرکانس 11.0598 استفاده کنید و پایه 485_en که به RE و DE از MAX485 وصل شده رو با یه مقاومت 10کیلو PULL-UP کنید نکته آخرم اینکه Udr_start مقدار ثابتیه و میتونید عوضش کنید،اگه سوالی بود در خدمتم
      سلام وقت بخیر
      دوست عزیز جناب Majid-BN از بابت اطاعات مفیدتون ممنونم .من هنوز با شبکه " RS485" کار نکردم ولی با توضیحات مفید جنابعالی و تاپیک های دیگر دوستان یه چیز های رو متوجه شدم .من برای مدارم نیاز به 2 (اسلیو) و 1 مستر دارم .ممنون میشم اگر برنامه فوق الذکر خودتون رو در این زمینه تغییر بدید که بشه 2 اسیلو و یک مستر ./پیشاپیش از همکاری شما دوست عزیز سپاسگذارم
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #63
        پاسخ : مشکل با rs485

        سلام
        دوستان یه فایل در مورد ارتباط 3 اسلیو با مستر که دما رو انتقال میده رو از سایت گرفتم که بسیار عالی هست .دوستانی که با C کار میکنند واقعا مفید و بدون نقض هست .ضمن اینکه یه فایل شبیه سازی داره که در پرتئوس میتونید تمام مسائلی رو مشاهده کنید

        http://www.uplooder.net/cgi-bin/dl.cgi?key=6e64ed1e032a33db08c1ebf7c065bf3b

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

        دیدگاه


          #64
          پاسخ : مشکل با rs485

          سلام
          دوستان فرق بین ADM485 با RS485 علاوه بر قیمت که ADM گرونتره، در عمل دیگه چه فرقی میکنند ؟
          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

          دیدگاه


            #65
            پاسخ : مشکل با rs485

            با سلام
            اینم واسه اسمبلی نویسهای مظلوم و مظلومه
            بزای شبکه کردن چندتا اسلاو ومستر میشه خروجی سریال رو بصورت 9 بیتی در نظر گرفت و مد چند پردازنده رو (mpcm)رو فعال کنیم با اینکار که هم در مستر و هم در اسلاو انجام میشه اسلاوها دادهای هشت بیت رو رد میکنند وفقط دادهای نه بیت رو میخونندبنابراین میشه با فرستادن ادرس در مد 9بیتی میکرویی رو که به این ادرس هست رو بعد از تطابق ادرس در مد 8 بیت یا یه مد هر بیتی قراردادی بین مستر واسلاو قرار داد و داده رو با مد هشت بیتی فرستاد تا اسلاو مورد نظر ان را دریافت کند البته با تطابق ادرس در اسلاو باید مد چند بیتی (غیر از 9 بیتی) فعال و(mpcm)غیر فعال بشه که پس از انجام عمل محوله دوباره باید به حالت قبل برگرده.

            دیدگاه


              #66
              پاسخ : مشکل با rs485

              سلام
              من دوتا مشکل دارم

              1- اول اینکه دوستان که راه اندازی کردن همه با تاخیرای زیاد اینکارو کردند ! من تا 300 میلی ثانیه جواب میگیرم اما کمتر جواب نمیده. یعنی وقتی اسلیو اطلاعاتو میگیره پایه send را فعال میکنه و 300 میلی بعد باید جواب بده. چطور این زمانو کم کنیم ؟

              2- مشکل بزرگی که دارم اینه که وقتی شبکه کار میکنه بعد از چند وقت مثلا چند روز شبکه از کا میفته یعنی همه مدارا درست کار میکنند ولی اطلاعات ردوبدل نمیشه و باید برق همه رو یبار قطع و وصل کنم. منبع تغذیه مدارها رو هم عوض کردم فرقی نکرد.
              زبان برنامه نویسی c
              تعداد دستگاه حدودا 20
              فاصله حدودا 100 متر
              ایسی adm485

              ممنون از توجهتون
              مشاوره و طراحی و پیاده سازی انواع مدارهای الکترونیکی و مبتنی بر میکروکنترلر
              طراحی و شبیه سازی انواع مدارهای مجتمع انالوگ و دیجیتال

              دیدگاه


                #67
                پاسخ : مشکل با rs485

                [quote author=BHP link=topic=77696.msg528093#msg528093 date=1384683116]
                سلام
                من دوتا مشکل دارم

                1- اول اینکه دوستان که راه اندازی کردن همه با تاخیرای زیاد اینکارو کردند ! من تا 300 میلی ثانیه جواب میگیرم اما کمتر جواب نمیده. یعنی وقتی اسلیو اطلاعاتو میگیره پایه send را فعال میکنه و 300 میلی بعد باید جواب بده. چطور این زمانو کم کنیم ؟

                2- مشکل بزرگی که دارم اینه که وقتی شبکه کار میکنه بعد از چند وقت مثلا چند روز شبکه از کا میفته یعنی همه مدارا درست کار میکنند ولی اطلاعات ردوبدل نمیشه و باید برق همه رو یبار قطع و وصل کنم. منبع تغذیه مدارها رو هم عوض کردم فرقی نکرد.
                زبان برنامه نویسی c
                تعداد دستگاه حدودا 20
                فاصله حدودا 100 متر
                ایسی adm485

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


                با سلام لطفا کد مستر واسلیو و قرار بدید تا ببینیم مشکل از کجاست اگه میتونید یک شماتیک از پروژه هم قرار بدید

                دیدگاه


                  #68
                  پاسخ : مشکل با rs485

                  [quote=saeid bahari]


                  کد مستر :
                  #asm("cli&quot
                  PORTB.3=1; // Recieving off - Sending on
                  buff[0]='O';
                  buff[1]='D';
                  buff[2]='M';
                  buff[3]=1;
                  buff[4]=1;
                  buff[5]=3;
                  buff[6]=1;
                  buff[7]=3;
                  buff[8]=22;
                  crc2=0;
                  for(j=0;j<9;++j) crc2=crc2+buff[j];
                  buff[9]=crc2/256;
                  buff[10]=crc2-(buff[9]*256); // putting LSB (8-bits) to buff[15]
                  buff[11]='#';
                  PORTB.3=1;
                  PORTB.7=1;
                  delay_ms(300);
                  for(i=0;i<12;i++) putchar(buff[i]);
                  delay_ms(30);
                  for(i=0;i<12;i++) putchar(buff[i]);
                  delay_ms(20);
                  #asm("sei&quot
                  PORTB.3=0; // Recieving on - Sending off

                  کد اسلیو :
                  #asm("cli&quot
                  PORT_RS485=1;//// START SEND RS485
                  tx_buffer[0]='O';
                  tx_buffer[1]='D';
                  tx_buffer[2]='M';
                  tx_buffer[3]=rx_buffer[3];
                  tx_buffer[4]=rx_buffer[4];
                  tx_buffer[5]=rx_buffer[5];
                  tx_buffer[6]=rx_buffer[6];
                  tx_buffer[7]=4;
                  tx_buffer[8]=WIN_POT;
                  tx_buffer[9]=0;
                  tx_buffer[10]=0;
                  tx_buffer[11]=0;
                  tx_buffer[12]=0;
                  tx_buffer[13]=0;
                  CRC=0;
                  for(tx_n=0;tx_n<14;tx_n++)
                  CRC=CRC+tx_buffer[tx_n];
                  tx_buffer[14]=CRC/256;
                  tx_buffer[15]=CRC;
                  tx_buffer[16]='#';
                  delay_ms(300);
                  for(tx_n=0;tx_n<17;tx_n++)
                  putchar(tx_buffer[tx_n]);
                  delay_ms(30);
                  for(tx_n=0;tx_n<17;tx_n++)
                  putchar(tx_buffer[tx_n]);
                  delay_ms(20);
                  #asm("sei&quot
                  PORT_RS485=0;// END SEND RS485

                  اول ببخشید که نتونستم از این کامل تر بذازم

                  توی مستر PORTB.3 به پایه کنترل ایسی متصل است.

                  اسلیو با وقفه usart اطلاعاتو دریافت میکنه و بعد از چک کردن درستی اطلاعات، همونجا توی وقفه اطلاعات را همینجور که میبینید میفرسته و مستر دوباره اطلاعات را به همین صورت (وقفه) میگیره. اون تاخیر که میبینید اگر کمتر از 300 میلی ثانیه بشه اسلیو کامل میگیره اطلاعاتو ولی جوابی که میده درست نیس
                  یه مشکل دیگه اینکه اگه اطلاعاتو فقط یبار بفرستم کار نمیکنه و باید دوبار پشت سرهم بفرستم(همینجور که میبینید با دو حلقه for )
                  با adm485 و max485 کار کردم و پایه 6 را pul down و پایه 7 را pul up کردم. بین خط هم مقاومت بزارم یا نه فرقی نداره و روی خط هم (سری) مقاومت بزارم جواب نمیده.

                  ممنون میشم کمکم کنید و از تجربیاتتون استفاده کنم
                  مشاوره و طراحی و پیاده سازی انواع مدارهای الکترونیکی و مبتنی بر میکروکنترلر
                  طراحی و شبیه سازی انواع مدارهای مجتمع انالوگ و دیجیتال

                  دیدگاه


                    #69
                    پاسخ : مشکل با rs485

                    نوشته اصلی توسط بسطام بیرامی
                    خب ببین دوست عزیز مشکل شما شماتیک برنامه نیست
                    اگه برنامه ایراد داشت زیر 5 متر هم جواب نمیداد
                    شماتیکو اینطوری اصلاح کن درست میشه

                    خبرشم بده ببینم چیکار کردی
                    مهندس عذرخواهی میکنم،این شماتیک برای آخر خطه یا برای همه نودهاست؟
                    اون مقاومتای 56 اهم مال خود سیم هاست یا باید قرار بدم؟
                    ممنونم
                    انحصار طلبی علمی در دنیای امروز جایگاهی ندارد،بیایید تا دانسته های خود را هرچند اندک؛با دیگران به اشتراک بگذاریم...
                    فرهنگ و تمدن بی همتای ایرانیان به سبب حمله ی وحشیانه مغولان نابود شد،امروز نوبت من و توست که با انتشار دانسته های خود ایران را به جایگاه بی همتای گذشته باز گردانیم.

                    پیامبر اکرم(ص)فرمودند بهترین مردم کسانی هستند که خیرشان به دیگران برسد.

                    دیدگاه


                      #70
                      پاسخ : مشکل با rs485

                      نوشته اصلی توسط شریف شریف زاده
                      مهندس عذرخواهی میکنم،این شماتیک برای آخر خطه یا برای همه نودهاست؟
                      اون مقاومتای 56 اهم مال خود سیم هاست یا باید قرار بدم؟
                      ممنونم
                      سلام
                      نه این شماتیک برای هر طرف هست
                      و شما باید هر دو طرف این مقاومتا رو قرار بدی
                      والا مقاومت 56 هم بذاری بهتره چون به ندرت پیش میاد مقاومت سیمت 2*56 بشه
                      من همیشه گذاشتم مشکلی نداشته
                      مهما مقاومتای پول پ پول دان هستن و 120 اهم که بتید دو طرف خط باشن
                      درایور شبکه و nRF24L01
                      کاتالوگ محصولات
                      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                      فروش اسیلوسکوپ GWinstek GOS-630FC

                      دیدگاه


                        #71
                        پاسخ : مشکل با rs485

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

                        پیامبر اکرم(ص)فرمودند بهترین مردم کسانی هستند که خیرشان به دیگران برسد.

                        دیدگاه


                          #72
                          پاسخ : مشکل با rs485

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

                          نوشته اصلی توسط بسطام بیرامی
                          سلام
                          نه این شماتیک برای هر طرف هست
                          و شما باید هر دو طرف این مقاومتا رو قرار بدی
                          والا مقاومت 56 هم بذاری بهتره چون به ندرت پیش میاد مقاومت سیمت 2*56 بشه
                          من همیشه گذاشتم مشکلی نداشته
                          مهما مقاومتای پول پ پول دان هستن و 120 اهم که بتید دو طرف خط باشن
                          این عکس همه چیزو میگه

                          درایور شبکه و nRF24L01
                          کاتالوگ محصولات
                          کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                          شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                          فروش اسیلوسکوپ GWinstek GOS-630FC

                          دیدگاه


                            #73
                            پاسخ : مشکل با rs485

                            نوشته اصلی توسط بسطام بیرامی
                            خب ببین دوست عزیز مشکل شما شماتیک برنامه نیست
                            اگه برنامه ایراد داشت زیر 5 متر هم جواب نمیداد
                            شماتیکو اینطوری اصلاح کن درست میشه

                            خبرشم بده ببینم چیکار کردی
                            استاد بیرامی عزیز
                            این مقاومت های 4.7 کیلو که پول پ و پول دان کردید برای هر نود بزاریم ؟؟؟ مثلا اگه من 10 تا نود داشته باشم همین رو بزارم و اگر هم بیست تا نود شد همین 4.7 کیلو رو بزارم ؟

                            معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                            دیدگاه


                              #74
                              پاسخ : مشکل با rs485

                              شما از Max485 استفاده کن؛ یک مقاومت ابتدا و یکی انتهای خط قرار بده (RT)
                              نیازی به قطعه اضافی نیست
                              مقدار مقاومت بسته به شبکه شما تنظیم میشه ، به دیتاشیت رجوع کنید (معمولاً 120 اهم)
                              امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                              دیدگاه


                                #75
                                پاسخ : مشکل با rs485

                                نوشته اصلی توسط (به یاد استاد آقازاده)john lock
                                استاد بیرامی عزیز
                                این مقاومت های 4.7 کیلو که پول پ و پول دان کردید برای هر نود بزاریم ؟؟؟ مثلا اگه من 10 تا نود داشته باشم همین رو بزارم و اگر هم بیست تا نود شد همین 4.7 کیلو رو بزارم ؟
                                سلام
                                بله مقاومت های پول پ و پول دان برای جلوگیری از فلوت شدن هست
                                بهتره قرار بدید
                                اما زیاد نیازی به مقاومت های 56 اهم نیست
                                درایور شبکه و nRF24L01
                                کاتالوگ محصولات
                                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                                فروش اسیلوسکوپ GWinstek GOS-630FC

                                دیدگاه

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