چگونه می توان تعداد بیش از 127 میکرو را از طریق پروتکل RS-485 به هم اتصال داد؟
اطلاعیه
Collapse
No announcement yet.
(RS-485 (2
Collapse
X
-
پاسخ : (RS-485 (2
ببخشید میشه بفرمائیداین اعداد 127 و254 چطور محاسبه شده اونم در حالی که نه پروتوکل خط رو میدونیم ونه فاصله پایانه هارو ازهم :sad: ممنونم اگه یه کم صحبت بشه.
اگه شما مشگل جریان رو حل کنید در حالتها و پروتوکل های خاص من میتونم بینهایت گیرنده یا فرستنده روی خط قرار بدم
البته در پروتکلهای یکطرفه :byeبعدا یه جمله قشنگ مینویسم
دیدگاه
-
پاسخ : (RS-485 (2
نوشته اصلی توسط سعادت فرمنم از آقای shockley درخواست می کنم اگر می توانند اطلاعات بیشتری در این مینه در اختیار من وسایر دوستان قرار دهند.
با یک کردن بیت MPCM از رجیستر UCSRA میکروکنترلر وارد Mode چند پردازنده ای خواهد شد. برای مبادله ی اطلاعات بین Master و Slave، باید Slave توسط Master آدرس دهی شود که بدین منظور از بین نهم داده (TXB8) استفاده می شود. آدرس Slave ها قبلا توسط برنامه نویس تعیین شده و تمام آن ها باید با یک شدن بیت MPCM در Mode چند پردازنده ای قرار بگیرند و منتظر دریافت آدرس از Master بمانند. برای شروع ارتباط، Master یک فریم اطلاعاتی 9 بیتی که هشت بیت آن شامل آدرس و بیت نهم آن یک است به میکروکنترلرها ارسال می کند. یک بودن بیت نهم باعث می شود که رفتار Slave ها با داده ی دریافتی همانند یک آدرس بوده و آن را با آدرس خود مقایسه کنند. Slave انتخاب شده بیت MPCM خود را پاک کرده و منتظر دریافت داده می ماند و بقیه Slave ها که بیت MPCM آن ها یک است همچنان منتظر دریافت آدرس مانده و داده ی ارسال شده را نادیده می گیرند، این مسئله باعث عدم ایجاد وقفه های متوالی بر اثر ارسال داده به Slave های دیگر می شود. پس از اتمام ارسال داده Master مجددا به نشانه ی آدرس دهی بیت نهم خود را یک کرده و آدرس دیگری را ارسال می کند. Slave قبل که بیت MPCM آن صفر شده بود مجددا این بیت را یک کرده و آماده ی دریافت آدرس می شود.
بنابراین اگر بخواهید آدرس رو از 8 بیت بیشتر کنید، بیت MPCM قابل استفاده نبوده و در زمان ارسال داده به یک Slave آدرس دهی شده، به Slave های دیگر دائما وقفه خورده و ممکن است عملکرد عادی آن ها را مختل کند.
There is nothing so practical as a good theory. — Kurt Lewin, 1951
دیدگاه
-
پاسخ : (RS-485 (2
سلام
بله بنده هم اشاره کردم در حالتی که تمام چیپ ها فرستنده و گیرنده TIA-EIA-485 با این استاندارد باشند ولی اگر ما اطلاعات را مثلا بیشتر از یک چیپ ارسال کنیم چطور ؟ یا اگر طبق استانداردی که خودمان تعریف میکنیم مثلا MPI یا PPI یا یک استاندارد تعریف شده دیگر توسط کاربر.
مثلا در زمانهای مختلف و با ارسال یک داده مشخص روی خط چیپ یا چیپ های مورد نظر را صدا بزنیم.
یا با ارسال یک کد بخصوص عده ای از چیپ ها را صدا کنیم وبا ارسال کد بعدی مجددا ازبین آنها گروه دیگری و نهایتا به چیپ موردنظر برسیم .
شاید سرعت کم شود ولی تعداد چطور. :byeبعدا یه جمله قشنگ مینویسم
دیدگاه
-
پاسخ : (RS-485 (2
نوشته اصلی توسط شهرام کشت پورسلام
بله بنده هم اشاره کردم در حالتی که تمام چیپ ها فرستنده و گیرنده TIA-EIA-485 با این استاندارد باشند ولی اگر ما اطلاعات را مثلا بیشتر از یک چیپ ارسال کنیم چطور ؟ یا اگر طبق استانداردی که خودمان تعریف میکنیم مثلا MPI یا PPI یا یک استاندارد تعریف شده دیگر توسط کاربر.
مثلا در زمانهای مختلف و با ارسال یک داده مشخص روی خط چیپ یا چیپ های مورد نظر را صدا بزنیم.
یا با ارسال یک کد بخصوص عده ای از چیپ ها را صدا کنیم وبا ارسال کد بعدی مجددا ازبین آنها گروه دیگری و نهایتا به چیپ موردنظر برسیم .
شاید سرعت کم شود ولی تعداد چطور. :bye
گذشته از این صحبت ها، RS-485 یک پروتکل نیست و تنها یک اینترفیسه، اون هم برای شبکه های کوچک و ساده. الان هم تقریبا استفاده از این واسط به کاربردهایی محدود میشه که محدودیت هزینه وجود داشته باشه، در غیر اینصورت باس های مناسب تری مثل SNAP ،CAN Bus ، Field Bus و Ethernet وجود دارند که هم از لحاظ فیزیکی محدودیت کمتری دارند و هم اینکه پروتکل نرفزاری قدرتمندی دارند.There is nothing so practical as a good theory. — Kurt Lewin, 1951
دیدگاه
-
پاسخ : (RS-485 (2
در مورد اول درسته ونباید وسیله بیشازحد اشغال بمونه وما هم چنین کاری نمیکنیم
کاری که میکنیم اینه که تمام MAX 485 ها درحالت گیرنده قرار دارن و تنها در لحظه ای که یکی از چیپ ها میخاد اطلاعات بفرسته MAX 485 اون چیپ میشه فرستنده و با رویت اولین بیت همه یک وقفه ایجاد میکنن و با اطلاعات بعدی به ترتیب از اون وقفه خارج میشن تا به چیپ مورد نظر برسیم وممکنه این زمان برای 1000 چیپ در عرض چند میلی ثانیه باشه.البته چون ما هنوز نمیدونیم کاربر ما چه سرعتی نیاز داره مساله ای که در ابتدا عنوان کردم.
و صد البته که در سرعت های بالا نیاز به پروتوکل های پیچیده تره هست مثل همونا که اشاره کردید.
اما آیا شما میتونید به راحتی با پورت USB کار کنید یا از طریق شبکه .
بد نیست بدانید هسته انتقال در تمام پروتوکل های اشاره شده توسط شما همان دوسیمه در ضمن MAX485 اینترفیس است اما RS485 یک پروتوکل
چنانکه برای اون دامنه ولتاز تعریف شده و الگوی اطلاعات اگه غیر این باشه باید بگیم RS232 وRS422 هم اینتر فیس هستندو هیچ پروتوکلی ندارند
در غیر اینصورت باس های مناسب تری مثل SNAP ،CAN Bus ، Field Bus و Ethernet وجود دارند که هم از لحاظ فیزیکی محدودیت کمتری دارند و هم اینکه پروتکل نرفزاری قدرتمندی دارند
گذشته از این صحبت ها، RS-485 یک پروتکل نیست و تنها یک اینترفیسه،
بعدا یه جمله قشنگ مینویسم
دیدگاه
-
پاسخ : (RS-485 (2
دوستان سلام.
من یه ایده ای دارم اینجا مطرح میکنم دوستانی که کار کردن راهنمایی کنن.
یه درسی داشتیم به اسم شبکه های کامپیوتری که نحوه شبکه کردن کامپیوتر ها اونجا بررسی میشد. کاری ندارم یکی از روش ها مال IBM بود که کامپیوتر ها به صورت حلقه وار به هم متصل بودن و یه جواز بینشون میچرخید، هر کامپیوتری که جواز عبور داشت میتونست اطلاعات ارسال و دریافت کنه.
----
من اون موقع هم اینو به استادمون گفتم ولی جوابی نداد.
زمانی که ما سیستم ها رو به صورت حلقه وار به هم متصل میکنیم و پایه های ارسال و دریافت اونها مجزا هست، چه نیازی به جواز یا حالت master slave هست؟ فرض کنید 10 تا میکرو داریم، پایه ارسال میکرو اول به پایه دریافت میکرو دوم متصل میشه، پایه ارسال میکرو دوم به پایه دریافت میکرو سوم و ... پایه ارسال میکرو 10 ام به پایه دریافت میکرو اول.
حالا هر داده ای که قراره در این شبکه رد و بدل بشه یه کد دریافت کننده خواهد داشت (سربار) تمام میکرو ها هر لحظه هم دارن دریافت می کنن و هم ارسال، اگه کد داده مربوط به خودشون بود که داره رو برمیدارن و دیگه ارسالش نمی کنن داده دیگه در حلقه نمیچرخه و اگه مال خودشون نبود هم درجا ارسالش می کنن به میکرو بعدی و ... . اینطوری نه مشکل master slave هست و نه مشکل جواز .
فقط میشه برای هر تعداد داده ای که قراره از یک میکرو به میکرو دیگه متنقل بشه یک یا دو بایت سر بار در نظر گرفت، مثلا فرض کنیم که 200 تا میکرو داریم، بایت اول همواره نشون دهنده شماره میکرو ای هست که قراره داده به دستش برسه، بایت دوم تعداد بایت هایی که قراره ارسال بشه داخلش هست، و بایت های بعدی هم داده خواهند بود.
به نظرتون این کار عملیه؟
یه بحث هایی هم اینجا مطرح شده
http://www.eca.ir/forum2/index.php/topic,12148.new.html#new
موفق باشید.شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآی جهاد فیآسبیلآالله.
هجرت، هجرت از سنگینیآهاست و جاذبهآهایی که تو را به خاک میآچسباند.
چکمهآهایت را بپوش، رهآتوشهآات را بردار و هجرت کن.
دیدگاه
-
پاسخ : (RS-485 (2
چنانکه دوستان اشاره کردند مشگلی در تعداد و ..... نیست اما تا کنون بحث ها بیمورد ویاد آوری بوده برای شروع چند چیز باید مشخص باشه:
1- حساسیت کار در قبال امنیت شبکه
2- فاصله تقریبی.
3- سرعت انتقال داده ها.
4- ظرفیت تقریبی اطلاعات.
5- محیط ( از نظر نویز)
6- محدودیت ها ( از نظر تعداد سیم و....)
7- هر چیز دیگری که به نظر مورد نیاز باشد.
مثلا در مورد انتقال از تلفن محدودیت دوسیم را داریم ولی در مورد یک شبکه داخلی با فاصله کم اینطور نیست یا شاید نباشد.
یا ممکنه به سرعت بالا نیاز باشه وقتی که حجم داده ها زیاده و داعما در حال پدیت
در محیط خاص ممکنه به علت نویز شدید های ولتاج نتونیم به راحتی با RS485 برد زیادی داشته باشیم
یا به علت امنیت زیاد نتونیم داده ها رو براحتی روی خط قرار بدیم و.......بعدا یه جمله قشنگ مینویسم
دیدگاه
-
پاسخ : (RS-485 (2
نوشته اصلی توسط رضا سپاس یار
سلام، RS485 اونقدرها هم نرم افزاری نیست که هر کاری بشه باهاش انجام داد. علت اش اینه که اکثر میکروکنترها (و حتی PC در قالب Mark/Space Parity) از Mode چند پردازنده ای به منظور RS485 یا RS422 پشتیبانی می کنند. به عنوان مثال بیت SM2 در 8051 و MPCM در AVR نقش مهمی در این مورد دارند. در اینجا به تشریح مختصر عملکرد بیت MPCM می پردازم:
با یک کردن بیت MPCM از رجیستر UCSRA میکروکنترلر وارد Mode چند پردازنده ای خواهد شد. برای مبادله ی اطلاعات بین Master و Slave، باید Slave توسط Master آدرس دهی شود که بدین منظور از بین نهم داده (TXB8) استفاده می شود. آدرس Slave ها قبلا توسط برنامه نویس تعیین شده و تمام آن ها باید با یک شدن بیت MPCM در Mode چند پردازنده ای قرار بگیرند و منتظر دریافت آدرس از Master بمانند. برای شروع ارتباط، Master یک فریم اطلاعاتی 9 بیتی که هشت بیت آن شامل آدرس و بیت نهم آن یک است به میکروکنترلرها ارسال می کند. یک بودن بیت نهم باعث می شود که رفتار Slave ها با داده ی دریافتی همانند یک آدرس بوده و آن را با آدرس خود مقایسه کنند. Slave انتخاب شده بیت MPCM خود را پاک کرده و منتظر دریافت داده می ماند و بقیه Slave ها که بیت MPCM آن ها یک است همچنان منتظر دریافت آدرس مانده و داده ی ارسال شده را نادیده می گیرند، این مسئله باعث عدم ایجاد وقفه های متوالی بر اثر ارسال داده به Slave های دیگر می شود. پس از اتمام ارسال داده Master مجددا به نشانه ی آدرس دهی بیت نهم خود را یک کرده و آدرس دیگری را ارسال می کند. Slave قبل که بیت MPCM آن صفر شده بود مجددا این بیت را یک کرده و آماده ی دریافت آدرس می شود.
بنابراین اگر بخواهید آدرس رو از 8 بیت بیشتر کنید، بیت MPCM قابل استفاده نبوده و در زمان ارسال داده به یک Slave آدرس دهی شده، به Slave های دیگر دائما وقفه خورده و ممکن است عملکرد عادی آن ها را مختل کند.
میدونم برای مدت ها قبله اما یک سوال
حالا فرض کنید به همون روشی که آقای سپاس یار فرمودند برای هر Slave یک کد 8 بیتی در نظر بگیریم
1) آیا slave ها باید در یک حلقه بینهایت دائما منتظر دریافت کد باشند؟؟؟
2) اگر بله؛ حالا فرض کنید کدی را ارسال کردیم و Slave مربوطه پس از دریافت کد و ارسال acknowledge (تصدیق) شروع به دریافت اطلاعات از Master نمود
در این صورت اگر بقیه Slave ها در حلقه باشند و اگر به صورت تصادفی یکی از اطلاعات ارسالی از Master با کد یکی از Slave های بیکار برابر باشد آنگاه آن slave نیز شروع به دریافت اطلاعات و آن هم به صورت ناقص میکند
برای حل این مشکل چه کاری باید کرد؟
شما چه راه حلی پیشنهاد میکنید؟؟؟
دیدگاه
دیدگاه