اطلاعیه

Collapse
No announcement yet.

مشکل با خط انتقال و RS-485

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

    مشکل با خط انتقال و RS-485

    سلام
    من برای ارسال و دریافت اطلاعات از یک کابل دارای 4 رشته و پروتکل rs-485 استفاده میکنم. از دوتا سیم برای انتقال ولتاژ تغذیه و زمین و از دوتای دیگه برای سیگنال استفاده میکنم. طول کابل 400 متر بوده و مقاومت dc آن 37 اهم میباشد. امپدانس مشخصه اش 50 اهم ذکر شده (البته معتبر نیست) ولی من با دو روش اندازه گیری مقدار 78 اهم بدست آورده ام.
    وقتی فقط از دو سیم کابل (برای انتقال اطلاعات) استفاده میکنم، یعنی vcc و زمین را مستقیم از منبع تغذیه به دوتا آی سی adm485 متصل میکنم، اطلاعات کاملا درست ارسال میشوند. (با سرعت 38400bps و بدون Termination)
    ولی وقتی از سیم سوم کابل برای انتقال زمین استفاده میکنم، یعنی یک کابل 400 متری را بین زمین دوتا آی سی adm485 وصل میکنم، اطلاعات معمولا اشتباه دریافت میشوند. مثلا بیشتر اوقات بایت دوم (برای ارسال متغیر int) دریافت نمیشود. و یک مورد جالبی که وجود داره اینه که بین زمین انتها و ابتدای کابل اختلاف ولتاژ 0.6 ولت وجود دارد. (ولتاژ انتهای کابل افزایش پیدا میکند. فکر کنم تو درس بررسی سیستم ها همچین چیزی داشتیم ولی یادم رفته! )
    برای حل مشکل من یک مقاومت 10 اهم را با کابل موازی کردم که مشکل حل شد. ولی در عمل به علت اینکه فقط 4 رشته سیم موجود هست، امکان این کار وجود ندارد.
    با تشکر

    #2
    پاسخ : مشکل با خط انتقال و RS-485

    سلام
    برای ارتباط 485 منظور برای ارسال و دریافت بر اساس دو سیم هست و سیم زمین همیشه باعث اختلال در عملکرد می شه و دلیل آن به وجود آمدن اختلاف پتانسیل و صرف جریان بیشتری در طول کابل هست.اگر تست کنین می بینین اگر دو آی سی از دو منبع تغذیه مجزا تغذیه بشن و داده ها از طریق تنها دو سیم A, B ارسال و دریافت بشن نه خطایی دارن نه افزایش جریان.
    پس به جای ارسال ولتاژ و مشترک کردن زمین ، هر یک از max485 رو با یک منبع مجزا راه اندازی کنین
    به شخصه تجربه داشتم مشترک شدن سیم زمین باعث افزایش خطا و جریان و همچنین پایین آمدن نرخ ارسال می شود
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

    دیدگاه


      #3
      پاسخ : مشکل با خط انتقال و RS-485

      کاملا درست می فرمایید. ولی من مجبورم زمین و vcc را انتقال بدم. چون قسمت های الکترونیکی باید در داخل یک لوله قرار گرفته و وارد چاهی داخل زمین شوند. باید ولتاژی در حد 30 ولت را انتقال بدم و بعد با رگولاتور ولتاژ های 24 و 12 و 5 تولید کنم.
      برای این مشکل اصلا راه حلی نیست؟

      دیدگاه


        #4
        پاسخ : مشکل با خط انتقال و RS-485

        ببینید شما میتونید از همین روش استفاده کنی منتها خطاها رو هم در نظر بگیر یعنی توی کدها Check sum رو هم بفرست و در صورت مشاهده خطا اطلاعات خطا دار رو دوباره بفرست
        [br /][hr]http://pcenter.ir[hr][br /]

        دیدگاه


          #5
          پاسخ : مشکل با خط انتقال و RS-485

          برای همچین مسافتی (400 متر ) حتما باید از کابل زوج به هم تابیده استفاده کنید

          دیدگاه


            #6
            پاسخ : مشکل با خط انتقال و RS-485

            نوشته اصلی توسط adelavr110
            ببینید شما میتونید از همین روش استفاده کنی منتها خطاها رو هم در نظر بگیر یعنی توی کدها Check sum رو هم بفرست و در صورت مشاهده خطا اطلاعات خطا دار رو دوباره بفرست
            از این روش تا به حال استفاده نکردم. ولی به نظرم جواب نده، چون برخی اوقات خطا به قدری زیاد میشه که همون بایت اولی (متغیر int) هم بعد از چندین بار درخواست از میکرو بازهم اشتباه دریافت میشه. ولی این روش هم امتحان میکنم.

            نوشته اصلی توسط mahdi421
            برای همچین مسافتی (400 متر ) حتما باید از کابل زوج به هم تابیده استفاده کنید
            این 4 تا سیم داخل چند لایه عایق هستند و دور کل این چند لایه عایق هم سیم بکسل خیلی محکم وجود داره. با وجود اینکه امکان تابیدن اینها وجود نداره ولی به نظرم نیاز نیست چون فقط از طریق دوتا سیم خیلی خوب جواب میده (البته فعلا !) ولی وقتی بین زمین ها فاصله میندازم کلا خراب میشه.

            دیدگاه


              #7
              پاسخ : مشکل با خط انتقال و RS-485

              نوشته اصلی توسط ashaebani2002
              از این روش تا به حال استفاده نکردم. ولی به نظرم جواب نده، چون برخی اوقات خطا به قدری زیاد میشه که همون بایت اولی (متغیر int) هم بعد از چندین بار درخواست از میکرو بازهم اشتباه دریافت میشه. ولی این روش هم امتحان میکنم.
              تو این روش مهم نیست کدوم بایت خطا میگیره شما برای یه دسته مشخص از اطلاعات Check sum رو میفرستید اگه خطا داد اون دسته رو دوباره بفرست
              [br /][hr]http://pcenter.ir[hr][br /]

              دیدگاه


                #8
                پاسخ : مشکل با خط انتقال و RS-485

                الان متوجه شدم، وقتی که زمین و vcc انتقال میدم، فقط اولین بایت درست دریافت میشود. مثلا اگر 10 تا بایت هم از میکرو بفرستم فقط فقط اولین بایت در کامپیوتر نشون داده میشه. همیشه همین اتفاق میوفته. ممکنه به خاطر نذاشتن مقاومت termination باشه؟ ولی در حالت دوسیم کاملا درست جواب میده. دیگه نمیدونم. :angry:
                مثلا در برنامه زیر فقط کاراکتر مربوط به متغییر a در pc دریافت میشود. من زمان ها را هم تغییر دادم، حتی بین ارسال کاراکترها هم تاخیر گذاشتم ولی در حالتی که زمین رو انتقال بدم به هیچ وجه درست نمیشه و فقط کاراکتر اول دریافت میشه.
                کد:
                if(send==1)
                   { 
                   delay_us(60);
                   putchar(a);
                   putchar(b);
                   putchar(c);
                   delay_us(800);
                   PORTB.1=0;
                   send=0;
                   }

                دیدگاه


                  #9
                  پاسخ : مشکل با خط انتقال و RS-485

                  سلام

                  1-برنامتون فکر کنم مشکل داره(میکروتون مشخص نیست این وضعیت هم حتما چک کنین) چون باید بین هر ارسال، بیت مربوط به اتمام کارکتر رو چک کنین یا تاخیری به اندازه زمان ارسال یک بایت رو بین ارسالهاتون لحاظ کنین
                  2-برای ارسال ولتاژ بین دو مدار ولتاژ ارسالی رو به صورت AC ارسال کنین و با عمل ایزولاسیون و یکسوسازی سپس ولتاژ برد بعدی رو تامین کنین تا زمین ها به این صورت یکی نباشند
                  3-بعد از ارسال هر رشته در انتهای رشتتون هم یک checksum ساده که می تونه جمع تمامی اعداد باشه رو قرار بدین تا گیرنده با مقایسه داده دریافتی و همچین مقایسه اون با checksum نسبت به درخواست مجدد بسته یا اطمینان کاربر از صحت داده دریافتی اقدام کند
                  4-حتما در سمت گیرنده مطابق توضیحات انجمن برق ، حتما مقاومت termination که مقدار 120 اهم متداول هست قرار بدین
                  هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                  دیدگاه


                    #10
                    پاسخ : مشکل با خط انتقال و RS-485

                    نوشته اصلی توسط baby_1
                    سلام

                    1-برنامتون فکر کنم مشکل داره(میکروتون مشخص نیست این وضعیت هم حتما چک کنین) چون باید بین هر ارسال، بیت مربوط به اتمام کارکتر رو چک کنین یا تاخیری به اندازه زمان ارسال یک بایت رو بین ارسالهاتون لحاظ کنین
                    2-برای ارسال ولتاژ بین دو مدار ولتاژ ارسالی رو به صورت AC ارسال کنین و با عمل ایزولاسیون و یکسوسازی سپس ولتاژ برد بعدی رو تامین کنین تا زمین ها به این صورت یکی نباشند
                    3-بعد از ارسال هر رشته در انتهای رشتتون هم یک checksum ساده که می تونه جمع تمامی اعداد باشه رو قرار بدین تا گیرنده با مقایسه داده دریافتی و همچین مقایسه اون با checksum نسبت به درخواست مجدد بسته یا اطمینان کاربر از صحت داده دریافتی اقدام کند
                    4-حتما در سمت گیرنده مطابق توضیحات انجمن برق ، حتما مقاومت termination که مقدار 120 اهم متداول هست قرار بدین
                    با تشکر بسیار از جواب شما
                    1- معمولا گفته میشه برای rs485 بعد از ارسال آخرین بایت باید از بیت اتمام کاراکتر یا تاخیر استفاده کرد و بعد پایه کنترلی rs485 را تغییر وضعیت داد. البته من تاخیری هم بین ارسال ها گذاشتم ولی درست نشد. ولی بازهم امتحان میکنم.
                    4- من یک مقدار با این مقاومت termination مشکل دارم. مگه نباید این مقاومت با امپدانس مشخصه کابل برابر باشه؟ ولی بیشتر بدون توجه به امپدانس میگند از 120 اهم استفاده کنید.

                    دیدگاه


                      #11
                      پاسخ : مشکل با خط انتقال و RS-485

                      سلام
                      سوال خوبی مطرح کردین
                      در استاندراد rs485 یا به اصطلاح TIA/EIA-485-A از نحوه سیم بندی ، سیم کشی و مشخصات کلی ارتباطی بین دو transceiver توضیحی ارائه نداده اند و مطابق توضیحات شرکت texas instrument ، این استاندارد برای ارتباط مطمئن کابلهایی رو معرفی کردن که مقدار Z0 یا همون امپدانس مشخصه برای این منظور 120 اهم بوده است بابت همین هم این مقاومت متداول شده است (به طوری که ماکزیمم مقاومت روی اکثر خطوط انتقالی هست) ، شما هم برای کاربرد خودتون می تونین مقاومت خاتمه دهنده رو دقیقا یکسان با امپدانس مشخصه کابل انتخاب و به کار ببرین
                      هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                      دیدگاه


                        #12
                        پاسخ : مشکل با خط انتقال و RS-485

                        با تشکر از دوستان مشکل من با استفاده از مقاومت termination و مدار بایاس حل شد.
                        اما نمیدونم چرا وقتی شکل موج ها رو بدون مقاومت terminate روی اسکوپ میبینم، خیلی خوب به نظر میرسند و با وجود اینکه کمی اعوجاج داشتند، خروجی مبدل کاملا درست بود. ولی وقتی از terminate استفاده کردم، درسته که اعواج پالس ها از بین میرفت ولی دامنه زیاد افت میکرد. ولی با این وجود در این حالت فقط جواب میداد. که نمیدونم چرا؟
                        یک مشکلی که الان دارم اینه که وقتی از این مقاومت استفاده میکنم یک سری کاراکترهای null هم دریافت میشه!

                        دیدگاه

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