شاید بیشترخوانندگان این مطلب با RS232 آشنا باشند. در این استاندارد داده سریال UART از سطوح منطقی صفر و یک به ترتیب به سطوح ولتاژ +۳~ +۱۲ ولت و -۳~ -۱۲ ولت تبدیل می شوند.

پس از بیت آغاز( Start bit )، هشت بیت داده به همراه بیت های اختیاری [۸] و بیت توازن [P] ارسال می شوند وب ه این صورت یک فریم داده کامل می شود.

عمل تبدیل صفر و یک (مثلا ۰V و ۵V ) به ولتاژهای +۱۲V و -۱۲V تا حدود زیادی اثر نویزهای محیطی را کاهش می دهد. اما برای مسافتهای طولانی، Baud Rate بالا و محیط های با اثر القاء نویز بالا، زیاد قابل اطمینان نیست. چراکه:

-۱-در مسافتهای طولانی اثر نویزهای محیطی بیشتر می شود.

-۲-در فرکانسهای بالا، تشعشع خط فرستنده، روی گیرنده اثر می گذارد.

برای حل مشکلات فوق،استاندارد RS422 پیشنهاد می شود. برای خروجی TXD دستگاه، یک فرستنده تفاضلی و برای ورودی RXD دستگاه، یک گیرنده تفاضلی قرار داده می شود.

برای ارتباط ازنوع RS422 به ۵ خط نیازاست. فرستنده تفاضلی روی خط A ، سیگنال TXD وروی خط B ، معکوس سیگنال فوق را تولید می کند. گیرنده نیز تفاضل این دو سیگنال را به RXD دستگاه تحویل می دهد. به این صورت نویزهای محیط که به صورت مشترک روی دو سیم A و B قرار می گیرند، در ورودی گیرنده تفاضلی حذف می شوند. اما سیگنال اصلی که با دامنه معکوس روی دو سیم ارسال می شود، با صحت کامل در گیرنده دریافت می شود. همچنین به این شکل اثر تشعشع خط فرستنده روی گیرنده از بین می رود.

ارتباط RS422 مانند RS232) ازنوع کاملا دو طرفه(Full duplex) است.به این معنی که خط ارسال و دریافت برای دستگاه جدا ازهم بوده،بنابراین درآن واحد دستگاه می تواند هم فرستنده باشد وهم گیرنده. اما در RS485 این ارتباط نیمه دوطرفه( Half duplex ) می باشد. به این معنی که دستگاه درآن واحد یا فرستنده است یا گیرنده. چرا که خط ارسال ودریافت یکی است.بنابراین در این سیستم،ارتباط بایدبه صورت Master و Slave انجام شود.

ارتباط به گونه ایست که Slave ها نمی توانند سرخودداده ای را ارسال کنند.بلکه Master درزمانبندی های خاصی آدرس Slave ها را پشت سر هم می فرستد و با آنها ارتباط برقرار می کند. البته نرم افزار این سیستم ها بسته به نیاز پروژه و سلیقه طراح قابل طراحی است.

نکته قابل تامل دراستاندارد RS485 این است که درحالت عادی خروجی Slave ها باید tri-state باشد تا روی خط و در نتیجه روی عملکرد Master اثر نگذارند و فقط وقتی که قرار است داده ای ارسال کنند، به خط متصل شوند.

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