Введення
Останнім часом модеми стають невід'ємною частиною комп'ютера. Встановивши модем на свій комп'ютер, ви фактично відкриваєте для себе новий світ. Ваш комп'ютер перетворюється з відособленого комп'ютера в ланку глобальної мережі.
Модем дозволить вам, не виходячи з дому, отримати доступ до баз даних, які можуть бути вилучені від вас на багато тисяч кілометрів, розмістити повідомлення на BBS (електронній дошці оголошень), доступною іншим користувачам, скопіювати з тієї ж BBS цікавлять вас файли, інтегрувати домашній комп'ютер у мережу вашого офісу, при цьому створюється повне відчуття роботи в мережі офісу. Крім того, скориставшись глобальними мережами (RelCom, FidoNet, Internet) можна приймати і посилати електронні листи не тільки усередині міста, але фактично в будь-який кінець земної кулі. Глобальні мережі дають можливість не тільки обмінюватися поштою, але і брати участь у всіляких конференціях, одержувати новини практично по будь-який цікавить вас тематиці.
Існує три основних способи з'єднання комп'ютерів для обміну інформацією:
безпосередній зв'язок, через асинхронний порт;
зв'язок з використанням модему;
зв'язок через локальні мережі.
1. Типи модемів
Боди і біти в секунду. Коли говорять про модеми, то дуже часто плутають боди і біти в секунду (біт / с). Швидкість передачі виражена в бодах, вказує, скільки разів в секунду змінюється стан сигналу, що передається з одного пристрою в інший. Якщо, наприклад, частота або фаза сигналу змінюється 300 разів на секунду, то говорять, - швидкість передачі сигналу дорівнює 300 бодам. Якщо при цьому кожне стан (зміна) переданого сигналу використовується для передачі одного біта, то 300 бод в даному випадку еквівалентні 300 біт / с. Якщо ж у кожному стані сигналу передається два біта інформації, то швидкість передачі в бітах в секунду будетв 2 рази більше, тобто 600 біт / с. У більшості модемів кожному станом відповідає кілька бітів, тому фактична швидкість передачі в бодах менше швидкості в бітах у секунду.
В даний час випускається величезна кількість всіляких модемів, починаючи від найпростіших, що забезпечують швидкість передачі близько 300 біт / сек, до складних факс-модемних плат, що дозволяють вам надіслати з вашого комп'ютера факс або звуковий лист в будь-яку точку світу.
Апаратно модеми виконані або як окрема плата, що вставляється в слот на материнській платі комп'ютера, або у вигляді окремого корпусу з блоком живлення, що підключається до послідовного асинхронного порту комп'ютера. Перший з низ називається внутрішнім модемом, а другий - зовнішнім.
Типовий модем містить наступні компоненти: спеціалізований мікропроцесор, керуючий роботою модему, оперативну пам'ять, що зберігає значення регістрів модему і буферизує вхідні / вихідну інформацію, постійну пам'ять, динамік, що дозволяє виконувати звуковий контроль зв'язку, а також інші допоміжні елементи (трансформатор, резистори, конденсатори, роз'єми). Якщо у вас досить сучасний модем, то він швидше за все додатково містить електрично Перепрограмміруємая постійну пам'ять (EEPROM), в якій може бути збережена конфігурація модема навіть при вимиканні харчування.
Щоб модеми могли обмінюватися один з одним інформацією, треба, щоб вони використовували однакові способи передачі даних по телефонних лініях. Для розробки стандартів передачі даних був створений спеціальний міжнародний консультативний комітет з телеграфії і телефонії (CCITT) та прийняті наступні рекомендації:
Bell 103
Стандарт зі швидкістю передачі 300 біт / с прийнятий в США і Канаді. Тип використовуваної модуляції - частотна, кожному стану сигналу відповідає один біт. У більшості швидкодіючих сучасних комп'ютерів цей стандарт передбачено, хоча він вже застарів.
Bell 212A
Стандарт зі швидкістю передачі 1200 біт / с прийнятий в США і Канаді. У ньому використовується диференційна фазова модуляція DPSK (Differential Phase-Shift Keying), швидкість передачі-600 бод, кожному стану відповідає 2 біт даних.
V.21
Цей міжнародний стандарт передачі даних зі швидкістю 300 біт / с подібний до стандарту Bell 103, проте через відмінності у використовуваних діапазонах частот модеми V.21 не сумісні з модемами Bell 103. В основному V.21 використовується за межами США.
V.22
Даний міжнародний стандарт передачі даних зі швидкістю 1200 біт / с подібний Bell 212A, однак не сумісний з ним за деякими характеристиками, зокрема за способом відповіді на виклик. Цей стандарт використовується, в основному, за межами США.
V.22bis
Це міжнародний стандарт передачі даних зі швидкістю 2400 біт / с. Слово bis означає другий, тобто покращений варіант стандарту V.22. Застосовується V.22bis як у США, так і в інших країнах. Використовується амплітудно-фазова модуляція (QAM), швидкість передачі даних-600 бод, у кожному стані сигналу кодується 4 біт.
V.23
Даним стандартом передбачається передача даних зі швидкістю 1200 біт / с в одному напрямку і 75 біт/с- у зворотному. Модем, що відповідає цьому стандарту, виявляється псевдодуплексним, тобто він може обмінюватися даними в обох напрямках, але з різними швидкостями. V.23 був розроблений для того, щоб знизити вартість модемів зі швидкістю передачі 1200 біт / с, які були досить дорогими на початку 80-х років. Використовується, в основному, в Європі.
V.29
Цей стандарт визначає напівдуплексний (односпрямований) спосіб передачі даних зі швидкістю 9600 біт / с. Зазвичай він використовується для факсимільних апаратів (факсів), і дуже рідко для модемів. Оскільки зазначений стандарт є напівдуплексним, відповідні пристрої виявляються набагато простіше тих, які працюють у високошвидкісних дуплексних режимах. V.29 в якості стандарту для модемів не є функціонально повним, так як він не визначає повного набору вимог до стандартів. Саме тому пристрої різних серій рідко виявляються сумісними. Ці недоліки стандарту не стосуються факсимільних апаратів, параметри яких визначено в V.29 повністю.
V.32
Це стандарт дуплексної передачі даних зі швидкістю 9600 біт / с. У ньому визначені методи корекції помилок і способи зв'язку. Використовується амплітудно-фазова модуляція з так званим кодуванням TCQAM, при якому кожному станом сигналу відповідає 4 біт. При такому кодуванні разом з кожною групою з 4 біт передається додатковий контрольний біт. Це дозволяє виконувати корекцію помилок в приймальному пристрої, що, у свою чергу, підвищує стійкість модемів, що працюють у стандарті V.32, до впливу шумів в лінії передачі. Оскільки навіть при односпрямованої передачі даних із швидкістю 9600 біт / с використовується практично вся смуга пропущення телефонної лінії, в модемах V.32 реалізується складна процедура прослуховування відповідного сигналу, яка полягає в періодичному відключенні власних переданих сигналів і прийомі відповідних сигналів. До останнього часу поширення модемів, що працюють у стандарті V.32, стримувалося їх складністю і високою вартістю. Однак поява на ринку дешевих комплектів мікросхем, розроблених спеціально для цих цілей, змінило ситуацію, і V.32 поступово перетворився на загальноприйнятий стандарт передачі даних зі швидкістю 9600 біт / с.
V.32bis
Стандарт V.32bis - це розширення V.32 зі швидкістю передачі 14400 бит / с. У ньому застосовується та ж модуляція, що і в V.32 (TCQAM), швидкість передачі - 2400 бод, у кожному стані кодується 6 біт. Завдяки такому кодуванню зв'язок виходить доволі надійною. Протокол V.32bis забезпечує дуплексний зв'язок. Якщо якість телефонної лінії невисока, то модеми перемикаються у звичайний режим V.32. Цей стандарт, завдяки своїй продуктивності й завадостійкості, став загальноприйнятим при роботі в сучасних телефонних лініях.
V.32fast
Стандарт V.32fast, також званий V. FC (Fast Class), - це новий запропонований ССIТТ стандарт, який є розширенням V.32 і V.32bis. У ньому передбачена швидкість передачі дана 28800 біт / с, однак згодом він замінився стандартом V.34.
V.34
Стандарт V.34 - стандарт передачі даних зі швидкістю 31,2 і 33,6 Кбіт / с. Багато існуючих модеми V.34, оснащені складними цифровими процесорами Digital Signal Processors (DSPs).
V.90
Стандарт V.90 - стандарт передачі даних, який дозволяє модему передавати зі швидкістю 57600 біт / с, і приймати дані зі скокостью 33600 біт / с.
Ще до представлених вище стандартам я хочу додати наочну таблицю стандартизації швидкості модемів в залежності від їх застосування.
Швидкість модему | З якою метою він може використовуватися |
300 bps | Для роботи з місцевою BBS. (Хоча не всі діалогові сервісні служби зараз дозволяють користуватися ними так як вони дуже довго займають телефонну лінію, і взагалі це дуже застаріла швидкість передачі інформації) |
1200 bps | Для місцевої BBS. |
2400 bps | Це найнижча швидкість продаються сьогодні модемів може задовольняти, якщо не здійснюється передача великих обсягів інформації (особливо на далекі відстані) |
9600 bps | Модеми з такою швидкістю (і вище) виконують корекцію помилок і стиснення даних. Деякі діалогові сервісні служби наближаються до такого значенням швидкості, за винятком Internet. Багато BBS працюють саме з цими параметрами швидкості. |
16 800 bps | Така швидкість досягається тільки при встановленні зв'язку з модемом такої самої моделі. |
19 200 bps | Те ж, що і 16.8Kbps-модеми |
28 800 bps | Популярний раніше стандарт. Використовується протокол v.34 bis |
36 600 bps | |
56 000 bps | Швидкість сучасного модему. Використовуються протоколи: V90 і K56Flex |
2. Програмування модемів
Після випуску американською фірмою Hayes модемів серії Smartmodem, система команд, використана в ній, стала якимсь стандартом, якого дотримуються інші фірми - розробники модемів. Система команд, вживана в цих модемах, носить назву hayes-команд, або AT-команд.
З часу випуску перших AT-сумісних модемів набір їх команд дещо розширився, але всі основні команди залишилися без зміни.
Всі команди, що передаються комп'ютером модему, треба починати префіксом AT (ATtention - увага) і закінчувати символом повернення каретки (). Тільки команда А / і Escape-послідовність "+++" не вимагають для себе префікса AT.
Після префікса AT можуть йти один або відразу декілька команд. Для ясності ці команди можуть бути відокремлені один від одного символами пробіл, тире, дужками. У більшості випадків команди можуть бути написані як великими, так і малими літерами.
При передачі модему команд вони спочатку заносяться у внутрішній буфер, який, як правило, має розмір 40 символів. Команди, записані в буфер модему, виконуються після надходження символу повернення каретки. Внаслідок обмеженості розміру буфера не слід передавати модему занадто довгі команди (більше розміру буфера). Довгі команди можна розбивати на частини і передавати в декілька заходів. При цьому кожна частина повинна починатися префіксом АТ і закінчуватися символом повернення каретки.
Якщо ви допустили помилку при наборі команди, то її можна виправити, використовуючи клавішу BackSpace.
Після виконання кожної команди модем посилає назад комп'ютера відповідь у вигляді числа чи слова. Ця відповідь означає, чи виконана команда або відбулася помилка. Якщо у вас зовнішній модем, то на його лицьовій панелі перебуває вісім світлових індикаторів. Хоча їх розташування на різних моделях може змінюватися, їх позначення є стандартними:
MR Modem Ready - Модем готовий до обміну даними. Якщо етотіндікатор не горить, то треба перевірити лінію живлення модему.
TR Terminal Ready - Комп'ютер готовий до обміну даними з модемом. Цей індикатор горить, коли модем отримав від компьютерасігнал DTR.
CD Carrier Detect - Індикатор запалюється, коли модем виявив несе частоту на лінії. Індикатор повинен горіти протягом усього сеансу зв'язку й гаснути, коли один з модемів звільнить линию.
SD Send Data - Індикатор блимає, коли модем отримує дані від комп'ютера.
RD Receive Data - Індикатор блимає, коли модем передає дані до комп'ютера
HS High Speed - Модем працює на максимально можливій для нього швидкості.
AA Auto Answer - Модем перебуває у режимі автовідповідача. Тобто модем автоматично відповідатиме на які надходять дзвінки. Коли модем знайде дзвінок на телефонній лінії, цей індикатор блимає.
OH Off-Hook - Цей індикатор горить, коли модем зняв трубку (займає лінію).
Стандартний набір відповідей модему
OK-Модем виконав команду без помилок
CONNECT-Модем встановив зв'язок із швидкістю 300 bps
RING-Модем виявив сигнал дзвінка
NO CARRIER-Модем втратив несучу частоту
ERROR-Помилка в командному рядку
CONNECT X-Модем встановив зв'язок із швидкістю X
NO DIALTONE-Відсутність сигналу станції під час зняття трубки
BUSY-Модем виявив сигнал "зайнято"
NO ANSWER-Немає відповіді після очікування сигналу
Основні принципи програмування модемів
Доступ до модему відбувається через послідовний асинхронний порт. При цьому для передачі модему команд їх необхідно просто записати в регістр даних COM-порту, на якому знаходиться модем. Відповідь від модему також поступає через послідовний порт. Передаючи модему команди, його можна проініціалізувати, перевести в режим автовідповіді або змусити набрати номер.
Коли модем набере номер віддаленого абонента або коли модему в режимі автовідповідача прийде виклик, він спробує встановити зв'язок з віддаленим модемом. Після встановлення зв'язку модем передає комп'ютера через COM-порт спеціальне повідомлення і переключиться з командного режиму в режим передачі даних. Після цього дані, що передаються модему, перестають сприйматися ним як команди і відразу передаються по телефонній лінії на віддалений модем.
Отже, після встановлення зв'язку з віддаленим модемом, комунікаційна програма може починати обмін даними. Обмін даними так само, як і передача команд, здійснюється через COM-порт. Потім за допомогою спеціальної Escape-послідовності можна перемкнути модем з режиму передачі даних назад в командний режим і покласти трубку, розірвавши зв'язок з віддаленим модемом.
3. Послідовність дій для встановлення зв'язку
Ініціалізація COM-порту.
Проводимо ініціалізацію COM-порту, до якого підключений модем. Для цього програмуємо регістри мікросхеми UART, задаючи формат даних і швидкість обміну. Зауважимо, що модем буде проводити з'єднання з віддаленим модемом якраз на цій швидкості. Чим швидкість вище, тим швидше буде відбуватися обмін даними з видаленим модемом. Однак при збільшенні швидкості на поганих телефонних лініях сильно зростає кількість помилок.
Ініціалізація модему.
Передаючи модему AT-команди через СОМ-порт, виробляємо його ініціалізацію. За допомогою АТ-команд можна встановити різні режими роботи модему - вибрати протокол обміну, встановити набір діагностичних повідомлень модему і т.д.
З'єднання з віддаленим модемом.
Передаємо модему команду набору номера (ATD). У цьому випадку модем набирає номер і намагається встановити зв'язок з віддаленим модемом. Або передаємо модему команду AT S0 = 1 для переведення його в режим автовідповідача. Після цього модем очікує дзвінка від віддаленого модему, а коли він приходить, намагається встановити з ним зв'язок.
Чекаємо відповідь від модему.
Залежно від режиму, в якому знаходиться модем, він може передавати комп'ютера різні повідомлення. Наприклад, якщо модем виконує виклик віддаленого модему (АТ-команда ATD), то модем може видати наступні повідомлення:
CONNECT-Успішне з'єднання
BUSY-Номер зайнятий
NO DIALTONE-На лінії відсутній сигнал комутатора
NO ANSWER-Абонент не відповідає
NO CARRIER-Невдала спроба встановити зв'язок
Коли приходить дзвінок, модем передає комп'ютера повідомлення RING, якщо регістр модему S0 дорівнює нулю. У цьому випадку для відповіді на дзвінок треба послати модему команду АТА. Якщо модем знаходиться в режимі автовідповідача і регістр модему S0 не дорівнює нулю, то модем автоматично намагається відповісти на дзвінок і може видати наступні повідомлення:
CONNECT-Успішне з'єднання
NO DIALTONE-Ні несучої частоти віддаленого модему
NO CARRIER-Невдала спроба встановити зв'язок
Якщо модем передав комп'ютера повідомлення CONNECT, значить, він успішно справив з'єднання і тепер працює в режимі передачі даних. Тепер усі дані, які ви передасте модему через СОМ-порт, будуть перетворені модемом у форму, придатну для передачі по телефонних лініях, і передані віддаленого модему. І навпаки, дані, прийняті модемом по телефонній лінії, перетворюються на цифрову форму і можуть бути прочитані через СОМ-порт, до якого підключений модем.
Якщо модем передав комп'ютера повідомлення BUSY, NO DIALTONE, NO ANSWER, NO CARRIER значить, зробити з'єднання з віддаленим модемом не вдалося і треба спробувати повторити з'єднання.
Підключення модему в командний режим.
Після закінчення роботи комунікаційна програма повинна перевести модем в командний режим і передати йому команду покласти трубку (ATH0). Для перекладу модему в командний режим можна скористатися Escape-послідовністю "+++". Після того як модем перейшов в командний режим, можна знову передавати йому АТ-команди.
Скидаємо сигнали налініях DTR і RTS.
Низький рівень сигналів DTR і RTS повідомляє модему, що комп'ютер не готовий до прийому даних через COM-порт. При роботі з асинхронним послідовним адаптером ви можете використовувати механізм переривань. Так як передача і прийом даних модемом є тривалий процес, то застосування переривань від порту дозволяє використовувати процесорний час для інших потреб.
Список літератури
Налаштовуємо модем / / Hard & Soft, 1998р., № 8
http://www.hardware.ru
Комп'ютер зсередини / / Komputerra, 2000р., № 3
Для підготовки даної роботи були використані матеріали з сайту http://referat2000.bizforum.ru/