RS485: теорія і практика

9

RS485 — самий, мабуть, популярний інтерфейс у відносно великих охоронно-пожежних системах. Він дуже широко розповсюджений, але мало хто знає його особливості і тонкі місця. До речі, хоча RS485 нині офіційно (по імені самого авторитетного стандартизировавшего його згодом органу) треба було б називати IS0/ІЕС 8482, але, оскільки насправді багато реалізації досить вільно ставляться до вимог стандарту, не дивно, що набагато більш поширено кілька неформальну назву RS485.
Для початку трохи історії. RS485 — це скорочення від Recommended Standard номер 485. Була така організація в Сполучених Штатах — асоціація виробників електроніки (Electronic Industry Association). Вона свого часу випустила ряд рекомендацій для того, щоб обладнання різних виробників могло спільно працювати. Найвідоміші з тих рекомендацій — стандарти номер 232 і 485. Треба відзначити, що згодом EIA об’єдналася з TIA і перейменувалася в знову ж EIA (але на цей раз Electronic Industries Alliance). Оскільки охочих писати стандарти у світі багато, то, щоб не переплутати, стандарти цієї організації тепер офіційно називаються Е1А-232иЕ1А-485.
Перший з них — RS232 — згодом став нормою для модемного обладнання і тому досить жорстко і багаторазово стандартизований (пережив близько 10 різних уточнюючих і поліпшують редакцій від імені семи чи навіть восьми організацій, включаючи такі, як ITU, CCITT, ANSI, ISO). І понині він присутній на багатьох настільних комп’ютерах, хоча вже давно не рекомендований для застосування.
Молодшому ж брата — RS485 — пощастило менше. По-перше, початковий текст RS485 включав в себе лише опис рівнів напруги на проводах. Згодом найбільше застосування RS485 знайшов на закритих мережах промислової автоматизації, і зокрема в системах охорони. Виробники такого обладнання, а також і виробники мікросхем, що реалізують RS485, не дуже сильно дбали про сумісність. Так, існує ряд більш точно описаних стандартів, заснованих на RS485, наприклад, Modbus, Profibus і Bacnet, але вони також не дуже жорсткі. Додатково масла у вогонь додав CAN, який, по суті, заснований на RS485, і тому згодом багато виробників застосовували у своїх системах, званих RS485, ряд ідей, запозичених з CAN.
Наведу в таблиці 1 вихідні рекомендації RS48S і в яких межах вони варіюються в житті.
Розберемо докладніше кожен з пунктів. По-перше, поясню, що таке диференціальний сигнал. Це означає, що вимірюється напруга між двома проводами. Має значення тільки напруга між проводами, а який потенціал цих проводів відносно землі — не дуже важливо.

RS485: теорія і практика
На практиці це означає, що передавач подає на один провід В, а на інший 5 В, то навпаки. А приймач аналізує, на якому дроті напруга вище і розуміє, «О» або «1» йому передали.
А тепер тонкість номер 1. Спочатку стандарт вимагав, щоб приймач свідомо сприймав різницю напруг, що перевищує 200 мВ. Якщо один провід на 200 мВ вище іншого — це «1». Якщо нижче — значить «Про». А що буде, якщо різниці напруг взагалі немає? Наприклад, якщо передавач відключений? Приймач має право сприймати найменші шуми то як «1», то як «0». Звичайно, шум — це просто безглуздий шум, але, кажуть, навіть мавпа за друкарською машинкою за мільйон років може випадково написати «Війну і мир». А вам треба випадково отримати команду включення пожежогасіння? Що ж робити? Є кілька рішень проблеми, застосовуваних різними виробниками мікросхем. Перше — якщо напруга між проводами помітне час знаходиться між -200 і +200 мВ, то мікросхема приймача видає окремий сигнал «лінія вільна». Деякі системи використовують цей сигнал для того, щоб пристрої розуміли, коли вони можуть почати передавати. Друге рішення — мікросхема приймача сприймає все, що вище -200 мВ як свідому «1». Тому між пакетами, коли ніхто на лінії нічого не передає, наш прилад буде свідомо бачити «1»і не отримає ніяких небажаних команд від перешкод. Якщо не застосовувати спеціальні мікросхеми, то аналогічний ефект досягається, якщо підключити (див. пункт 2 таблиці) пару резисторів до харчування, щоб в разі відключених передавачів на лінії свідомо було +250 мВ. До речі на картинці вище саме такий варіант — у паузах між пакетами явно присутня невелика напруга. Ось як це зазвичай реалізують:
RS485: теорія і практика
Але найпоширеніший варіант боротьби з шумами — додати гістерезис на 100-150 мг. Тоді виходить, що, якщо останній раз напруга була вище +200 і після цього бовтається між -200 і +200, мікросхема вважає, що на лінії все ще передається «Ь. А якщо напруга вилізло нижче -200, то тепер мікросхема буде видавати «1», поки напруга не перейде вгору верхню межу і не стане вище +200. Картинка нижче ілюструє роботу приймача з гістерезисом. Графік U — це вхідна напруга, графік А — це що б видав на вихід приймач без гістерезису, графік — з гістерезисом (шуми зникли, а перемикання при прийомі сигналу трохи зрушилися).
RS485: теорія і практика
Всі описані рішення гарні, але жодне з них не ідеально. Особливо небезпечно, якщо в одній системі зустрінуться пристрої, які очікують реального нуля (між — і + 200 мВ), щоб почати передачу, і пристрої, які в паузах легенько розтягують напругу до -200 мВ. У такому випадку перший пристрій ніколи не дочекається можливості щось передати.
Перейдемо до другого пункту. Узгодження кабелю. В теорії на кінцях довгої лінії передачі повинні бути підключені резистори, рівні її так званому хвильовому опору. Тоді розповсюджується по лінії сигнал сприймає цей резистор як нескінченне продовження лінії зв’язку і йде в нього без відбиттів. В іншому ж випадку виходить те, що зображено на малюнку нижче.
RS485: теорія і практика
Вгорі — вихідний сигнал, наступні дві пари осцилограм — напруги на передавачі і приймачі, останній (нижній) промінь — відновлений приймачем інформаційний сигнал. Правда, досить кострубата форма сигналу? Приймач, звичайно, відновив досить точно, але ми розуміємо, що завадостійкість під час цих перехідних процесів, відбиття сигналу від кінців напевно не так висока, як нам би хотілося.
Звичайно, за стандартом належить узгодити. Звичайно, на практиці ми прокладаємо лінії зв’язку кабелем, про який ніхто не скаже, яке у нього хвильовий опір. І наскільки воно однорідне по довжині кабелю (а на скачках параметрів кабелю, або на скрутки, теж будуть відображення, як би ви не погодили кінці). Так от, в реальності відсутність узгодження майже ніколи нікому не заважає. Зверніть увагу на шкалу часу на картинці. Відображення (в даному разі на 50-метровому ділянці кабелю) займають менше 200 наносекунд. Кілька відбиттів від обох кінців кабелю — максимум одна мікросекунда — і сигнал вже заспокоївся. Якщо довгий кабель (наприклад, 1 кілометр), відображення поширюються довше — скажімо, 5 мікросекунд, але зате відображення буде тільки одне — відбитий сигнал настільки затухає на довгому кабелі, що другого і третього відображення вже точно не буде. Отже, всі відображення і спотворення тривають всього кілька мікросекунд. Згідно того ж вихідного тексту стандарту RS485 (та й згідно з вимогами мікросхем послідовних передавачів) встановлення сигналу повинно займати не більше 1/10 тривалості біта даних. Множимо 5 мікросекунд на 10 — отримуємо, що при тривалості біта 50 мікросекунд (тобто при швидкості передачі 19 200 біт/с) всі ці відображення на кілометровій лінії можна ігнорувати. Ось так! Звичайно, краще не ігнорувати, краще, щоб відбиттів не було, але на типової швидкості передачі 9600 на довжині кабелю менше кілометра проблеми, викликані поганим узгодженням, м’яко кажучи, малоймовірні. Якщо у вас не працює канал зв’язку RS485 — швидше за все це викликано зовсім іншими причинами.
Більше того. Вихідний опір передавача згідно стандарту має бути 54 Ом. Погоджувальні резистори (по 120 Ом з кожного боку) є навантаженням 60 Ом. Таким чином, сигнал спочатку ділиться навпіл. Передавач могбы передати різницева напруга 5 В, а на лінії виходить всього лише 2-2,5 Ст. Сигнал менше, завадостійкість гірше. І запас на загасання менше. Наприклад, досить товстий кабель перетином 0,75 ммг має опір проводу близько 3 Ом на 100 м. Два дроти на довжині 1 км додадуть ще 60 Ом. Тобто сигнал на кінці лінії виявиться ще в 2 рази менше. А якщо ви взяли чудову виту пару 6-ї категорії (перетином 0,2 кв. мм, тобто в 4 рази тонше розглянутого раніше кабелю), сигнал буде в 4 рази менше. Це скільки? 2 вольта, так навпіл, та ще на 4, разом — 250 мілівольт. Практично на межі чутливості приймача. Працювати точно не буде вже на 1 км, хоча стандарт нам начебто обіцяє 1200 м. Так що не женіться за категорією витої пари, візьміть краще кабель товстіший. До речі, якщо проблема з великим загасанням в тонкому кабелі — зніміть погоджувальні резистори. Все одно ніякі відображення нікуди не дійдуть — згаснуть, та й, як ми вже показали, на швидкості 9600 відображення нікого не хвилюють. Зате сигнал зросте в кілька разів.
Ось тепер ви знаєте, звідки беруться деякі обмеження, описані в стандарті. Так, стандарт описував максимальну швидкість 10 Мбод, однак це було пов’язано з тим, що окремо вимагалося від передавачів не спотворювати фронти імпульсів більше ніж на 20. Сучасні передавачі можуть укластися в 2, тому і швидкість декларується до 50-70 Мбод. Однак така швидкість можлива тільки на коротких лініях. Відоме мнемонічне правило рекомендує, щоб твір швидкості передавання в бітах в секунду на довжину кабелю в метрах не перевищував величини 108. Це і дає приблизно 1 км на швидкості 100 кбіт/секі 10 м на швидкості 10 Мбіт/сек. Це з-за можливих відображень (ідеального узгодження не буває) і часу на встановлення сигналу. Звичайно, при ретельному погодження зазначене твір можна трохи підвищити, але не набагато. З цього правила випливає, що на швидкості 9600 (приблизно 10 кбіт/сек) начебто можна передати аж на 10 км. Але тільки якщо у вас буде досить товстий кабель. Стандарт передбачав використання типового многопарного кабелю 22-26 AWG і тому для будь-яких швидкостей обмежував довжину лінії величиною 4000 футів (1200 м). Але ми-то знаємо, що насправді, якщо взяти кабель товстіший, можна і перекинути сигнал подалі. Хоча у виробників устаткування зазвичай написано просто 1200 м без варіантів. У більшості тому, що вони самі не знають, звідки береться число 1200. У деяких просто тому, що краще перепильнувати (вказується довжина самого тонкого доступного на практиці кабелю). Крім того, виробники воліють великі системі! продати додатково підсилювачі-розгалужувачі або ще які-небудь подовжувачі лінії зв’язку.