اشنای با پورت سریال(کام)R232:
اشنای با کلی با نحوه کار با پورت کام و برسی و کار کرد پین های این پورت.
آشنایی با پورت سریا ل
فکر می کنید سابقه ی ارتباطات دیجیتال چند سال باشه؟ شاید تعجب کنید اگه بگم 160 سال! از زمانی که ساموئل مورس و همکارش آلفرد وایل اولین پیام تلگراف رو در در 24 می 1844 از مریلند به واشنگتن فرستادند تقریبا 160 سال میگذره. ممکنه بگید پس انسان های بدوی هم که با آتش با هم ارتباط برقرار می کردن لابد تو تاریخچه ی ارتباطات دیجیتال قرار می گیرند، پاسخ مثبته! اونها با هم ارتباط دیجیتال سریال آسنکرون داشته اند!!! البته پروتکل هم داشته ولی متاسفانه من اسمشو نمی دونم!
خب اونها با عبور دادن پارچه از روی آتش (به عنوان کریر) دود اون رو قطع و وصل میکردن و در واقع با ایجاد پف، دود رو مدوله می کردن و اینطوری صفر و یک منطقی تولید میکردن! و فرد گیرنده این پیام رو بر حسب یک قرارداد از پیش تعریف شده دیکد میکرده و پیام رو استخراج می کرده. حتی دقیقا یک بایت (کلمه) بیت شروع و پایان داشته! البته سرعتش خیلی پایین بود مثلا یک یا نیم بایت (حرف) در دقیقه!
اگه به این چیزایی که گفتم شک دارید، مدخل های Smoke Signal , Optical telegraph و Digital رو از دایره المعارف Wikipedia بخونید تا باورتون بشه! اما منظور من از تاریخچه ی مخابرات دیجیتال، شکل الکترونیکی اون بود که همونطور که گفتم این مسئله به اختراع تلگراف برمیگرده.
مثلا کد زیر به زبان مورس یعنی IBMW:
=.=...===.=.=.=...===.===...=.===.===
به صورتی که "=" معادل یک منطقی و "." معادل صفر منطقی است. مقایسه کنید با کد این کلمه در استاندارد اسکی:
01001001010000100100110101010111
که در اینجا "1" معادل یک منطقی و "0" معادل صفر منطقی است.
تلگراف به مرور زمان پیشرفت کرد و شبکه های تلکس بر مبنای آن به وجود آمدند تا جاییکه امروز ایمیل از نوادگان همان تلگراف است!
ارتباطات سریال
تعریف
مبادله ی بیت به بیت اطلاعات تنها از طریق یک کانال (البته بجز زمین) را ارتباط سریال می گویند.
انواع
سنکرون (همزمان):
یک سیگنال زمانی از طریق یک کانال مجزا همراه با پیام ارسال می شود. (مثل استاندارد I2C و RS232 )
آسنکرون (غیرهمزمان):
در این روش اطلاعات زمان بندی همراه با سیگنال ارسال می شود. (مثلRS232, RS485)
بررسی
از لحاظ تئوری تنها یک سیم برای انتقال اطلاعات سریال به صورت آسنکرون لازم است اما در واقعیت این مسئله عملی نیست. به عنوان مثال اگر یک بیت از اطلاعات بر اثر خطا یا نویز تغییر کند ممکن است کل اطلاعات بعد از آن یک بیت شیفت پیدا کند و پس از تفسیر و تبدیل به دیتای موازی کل اطلاعات مخدوش شود. بنابراین نیاز به استاندارهایی وجود دارد که امکان ارتباط قابل اطمینان را فراهم کند. یکی از این استانداردها RS232-C است که در سال 1969 توسط موسسه EIA تعریف شد. اگرچه نام این استاندارد RS232-C است اما معمولا به نام RS232 شناخته می شود و مخفف Recommended Serial می باشد. این استاندارد معمولا در پورت سریال کامپیوترهای شخصی استفاده می شود.
پروتکل ارتباطی RS232 در لایه ی هفتم مدل OSI قرار می گیرد و موارد زیر در آن تعریف شده است:
- مشخصات الکتریکی سیگنال از قبیل سطح ولتاژ، نرخ سیگنال، زمان بندی وSlew Rate، سطح مقاومت ولتاژ، رفتار اتصال کوتاه، بیشینه ی جریان ظرفیتی و طول کابل
- مشخصات مکانیکی واسط از قبیل سوکت اتصال و تعریف پین ها.
- عملکرد هر مدار در کانکتور واسط
- زیر مجموعه های استاندارد از مدارهای واسط برای آن کاربرد ارتباطی
همانطور که گفته شد این استاندارد در لایه های زیرین مدل OSI کار می کند و مشخصات لایه های بالا از جمله کدگذاری کاراکتر (مثلا ASCII) و همچنینقالب بندی کاراکتر (مثل بیت شروع و پایان یا بیت توازن) در قالب این استاندارد قرار نمی گیرد و معمولا بوسیله ی نرم افزار تعیین و تفسیر می شوند. این استاندارد سقف ماکزیمم نرخ بیت را 20.000 bps تعریف کرده است در حالی که بسیاری از تجهیزات جانبی مثل مودم ها از این اندازه تجاوز کرده و با نرخ هایی بالاتر از این (مثل: 38.400 ، 37.600 و 115.200) با سطح ولتاژ RS232 کار می کنند.
:: سطوح سیگنال RS23:
در این استاندارد سطح ولتاژ 3+ تا 12+ نمایانگر وضعیت Space یا صفر منطقی و بازه ی 3- تا 12- ولت نمایشگر وضعیت Mark یا یک منطقی می باشد. این در حالی است که تجهیزات استاندار TTL (مثل میکروکنترلر 8051) با سطوح بین 0 و 5 ولت کار می کنند. برای تبدیل ولتاژ RS232 و TTL به یکدیگر باید از مبدل های ولتاژ استفاده کرد که یکی از این ها مدار مجتمع و یا HIN232 می باشد. کهMAX232 یک تراشه ی 16 پایه است که شامل 2 فرستنده و 2 گیرنده است. در زیر یک مدار نمونه را برای کار با این IC مشاهده می کنید.
12 ولت، ولتاژ نامی در حالت بی باری است و معمولا در حالت مدار باز دقیقا 12 ولت نیست و کمی کمتر است، مثلا در مورد PC من این اندازه 11.25 ولت بود. اما در مورد جریان نیز، جریان نامی بین 7 تا 10 میلی آمپر در حالت اتصال کوتاه است و این مقدار بستگی که مدار اینترفیس PC (شامل UART و غیره) شما دارد و مثلا در مورد کامپیوتر من این مقدار 8.9 میلی آمپر بود. استاندارد RS232 برای وسایل استاندارد با مقاومت بین 3 تا 7 کیلو اهم طراحی شده است و بنابراین با افزایش جریان، ولتاژ پورت شدیدا افت می کند و معمولا به ازای هر میلی آمپر جریان اضافی، 1 الی 2 ولت فشار کم می شود و در نهایت روی حدود 0.7 ولت متوقف می شود. لازم به ذکر است که این پورت بر خلاف پورت موازی در مقابل اتصال کوتاه محافظت شده است و همان طور که گفته شد در این حالت جریانی بین 7 تا 10 میلی آمپر می دهد یا می کشد.
:: توپولوژی شبکه ای
یکی از معایب استاندارد RS232 بر خلاف RS422 و RS485 این است که تنها برای ارتباط نظیر به نظیر (Peer to Peer) طراحی شده است و امکان شبکه شدن با دیگر ادوات را ندارد. این استاندارد برای فواصل تا حدود 15 متر مناسب می باشد و برای فواصل بیشتر می توان از روش 20mA loop استفاده کرد. (مثل پروگرامر بعضی PLC های زیمنس) اما روش مناسب دیگر در محیط های صنعتی استفاده از RS485 می باشد که در فواصل زیاد تا فرکانس 1MHz نیز کار می کند. بنابراینRS232 برای ارتباطات کم دامنه مثل اتصال دو PC ،PC با یک دستگاه یا دو دستگاه با یکدیگر استفاده می شود.
:: دو مفهومی را که باید در مورد استاندارد RS232 بدانید، اصطلاحات DTE و DCEهستند:
DTE سرنام Data Terminal Equipment است و DCE مخفف Data Communications Equipment. این عبارات برای نشان دادن پین های کانکتور یک دستگاه و جهت ارتباطی سیگنال در پین ها می باشند. معمولا کامپیوتر یک DTEمی باشد و دستگاه های دیگر یک DCE و شما می توانید در ادامه ی توضیحاتDTE را یک کامپیوتر و DCE را یک دستگاه دیگر فرض کنید. در این استاندارد DTEاز یک کانکتور 9 پین Female (یا 25 پین) و DCE از یک کانکتور 9 پین Male (یا 25 پین) استفاده می کند. بنابراین می توان یک DCE را مستقیما به یک DTE کرد اما در حالتهای غیر از این باید از کابل های Null Modem استفاده کرد که در ادامه به آن خواهم پرداخت. اگرچه استاندارد RS232 برای کانکتور 25 پین نیز تعریف شده است اما ما در اینجا بحثمان را بر روی کانکتور 9 پین متمرکز می کنیم چون اغلب PC ها از این کانکتور استفاده می کنند و DB9 نام دارد.
:: قالب اطلاعات ارسالی:
همانطور که در پست قبل اشاره شد مطالب مربوط به قالب بندی کاراکتر و فریم اطلاعاتی در چارچوب این استاندارد قرار نمی گیرد و توسط نرم افزار تعیین می شود. به طوری که در یک قاب اطلاعاتی که توسط بیت شروع و بیت پایان محصور شده است معمولا 7 یا 8 بیت دیتا قرار می گیرد و یک بیت توازن نیز تعریف می شود. بیت شروع متناظر با صفر منطقی است و بیت پایان (که ممکن است 1 یا 2 بیت باشد) توسط یک شناسایی می شود. مثلا در نمودار زمانی زیر قاب اطلاعاتی شامل 10 بیت است که هفت بیت آن شامل دیتا یک بیت آغازین و یک بیت پایانی و یک بیت توازن (زوج) قبل از بیت پایان می باشد.
:: در زیر مشخصات پین های کانکتور 9 پین استاندارد RS232 را از DTE ملاحظه می کنید:
پین1 و 9:
این پین ها به ترتیب Carrier Detect و Ring Indicator یا CD و RI نام دارند و مربوط به مودم می شوند که اولی برای تشخیص حامل بر روی خط و دومی برای اعلان یک تماس تلفنی به مودم شماست و معمولا در طراحی های کنترلری به ندرت مورد استفاده قرار می گیرند.
پین های 2و3:
این پین ها به ترتیب Received Data و Transmitted Data یا RD و TD نام دارند و به ترتیب جهت دریافت داده ها یک از یک DCE و ارسال داده ها از یکDTE به یک DCE به کار می روند. این نامگذاری ها ممکن است فریبنده باشند چون پین TD در یک DCE جهت دریافت داده ها به کار گرفته می شود! خط TD در زمان معطلی توسط DTE در حالت مارک نگه داشته می شود.
پین های 7و8:
ابتدا کمی در مورد مفهوم Flow Control:
فرض کنید که یک DTE را به یک DCE متصل کرده ایم، از آنجایی که معمولا سرعت DTE (کامپیوتر) از سرعت یک DCE (مثلا یک مودم یا یک میکروکنترلر) بیشتر می باشد. اگر مکانیسمی جهت کنترل انتقال اطلاعات وجود نداشته باشد، DCE قادر نخواهد بود همه اطلاعات ارسالی از DTE را دریافت کند. این مکانیسم را Flow Control یعنی کنترل جریان اطلاعات می گویند.
پین های 7 و 8 به ترتیب Request to Send و Clear to Send یا RTS و CTSمی نامند. فرض کنید که DTE می خواهد یک کاراکتر را برای DCE ارسال کند، در این حالت DTE از طریق پین RTS یک منطقی ارسال می کند و در صورتیکه DCEقادر به دریافت اطلاعات باشد یک سیگنال پاسخ از طریق پین CTS ارسال می کند و در غیر اینصورت خط در حالت صفر نگه داشته می
شود و DTE اجازه ندارد اطلاعات را ارسال کند. به این روش Handshaking یا دست دادن نیز می گویند.
پین های 4و6:
واضح است که DCE به علت سرعت کمتر برای ارسال نیاز به کسب مجوز ازDTE ندارد اما در صورت لزوم پین های Data Set Ready و Data TerminalReady به ترتیب نقشی مشابه RTS و CTS را ایفا می کنند. (به ترتب خطوط 4 و 6)
پین 5:
زمین سیگنال می باشد.
:: و نکته ی پایانی ادامه ی توضیحات پین های 7 و 8 می باشد:
فرض کنید دو DTE یا دو DCE بخواهند با هم ارتباط برقرار کنند در اینصورت به علت یکسان بود سرعت دو وسیله نیاز به Flow Control نمی باشد بنابراین پین های 7، 8، 4 و 6 نیاز نمی باشند و گفتیم که خطوط 1 و 9 نیز اغلب در کاربردهای کنترلی استفاده نمی شود پس استاندارد RS232 را در ساده ترین حالت خود به صورت Full Duplex تنها با سه سیم می توان پیاده سازی کرد که به این حالت Null Modem (یعنی بدون مودم) می گویند. برای ساخت یک کابلNull Modem تنها باید خطوط RD و TD را به صورت ضربدری (Cross) به یکدیگر متصل کرد و خط سیگنال (5) را نیز به نظیر خود وصل کرد.