Телефонные линии предназначались изначально для передачи голосовых сигналов. В наш век они также активно используются пользователями компьютеров для передачи цифровых данных при помощи модемов. Во время передачи сигнала по телефонной линии он поступает из телефонного аппарата на пару проводов как непрерывная функция u(t) - напряжения от времени. Если бы телефонная связь была идеальной (к этому очень близок короткий отрезок провода, но увы, не телефонные линии), то с принимающей стороны считывался бы в точности такой же сигнал u(t). Однако, в телефонной линии имеются паразитные емкость и индуктивность, и конечное сопротивление проводов. Это приводит к затуханию сигнала, причем на разных частотах по-разному. Плюс к этому, для связи между АТС используется аппаратура уплотнения, вносящая дополнительные искажения: шумы квантования, сдвиги частот. На ухо это все воспринимается как шум и искажение тембра голоса говорящего. Наверное, многие замечали, что с разных телефонных номеров голоса ваших знакомых звучат по-разному.
Большинство пользователей соглашаются, что телефонные линии в бывшем СССР хуже, чем западные, и что это ухудшает работу модемов. Итак, в чем же именно проигрывают наши телефонные линии:
К сожалению, реально с этими проблемами бороться нельзя, но на них можно правильно реагировать. Примером неправильной реакции служат частые перетренировки линии и обрывы связи у неадаптированных под наши линии модемов. Такие модемы обычно демонстрируют следующие проблемы:
Почему же эти проблемы проявляются у разных модемов по-разному, хотя они все используют одинаковые протоколы? Дело в том, что в модеме существует такая вещь, как микропрограмма (прошивка). Это код, который исполняется процессором модема, и, кроме стандартных подпрограмм, поставляемых фирмами-производителями СБИС (chipset), такими как Lucent, Motorola, Rockwell, содержит часть, которую обычно пишет разработчик конкретной модели модема. Именно эта часть определяет, локализован ли модем под данные условия. Разработчики обычно добавляют S-регистры и некоторые алгоритмы. Подробнее обо всем этом на примере факс-модема IDC рассказано далее, используя аналогию между передачей данных с максимальной эффективностью по телефонному каналу и ездой на автомобиле с максимальной скоростью:
Как известно, современные протоколы передачи данных (V.32bis, V.32terbo, V.34) позволяют выбирать скорость передачи в широких пределах (например, V.32terbo имеет 7-ступенчатую "коробку передач", позволяющую варьировать скорость в диапазоне от 4800 до 19200 бит/с с шагом 2400 бит/с; V.34bis - 14-ступенчатую от 2400 до 33600). Поскольку характеристики телефонного канала имеют тенденцию изменяться с течением времени, очень важно КАК модем переключает свои "передачи" при езде по таким неровным дорогам. Ведь каждое лишнее переключение - это потерянные 2 секунды, а от езды на неправильной скорости мотор глохнет, и приходится ждать 15 секунд, пока снова заведется (пока пройдет retain) Если скорость обмена выбирается слишком низкой, производительность работы будет ниже оптимальной. При выборе чересчур высокой скорости высоким будет и процент искажения данных, и производительность опять таки упадет из-за необходимости повторения ошибочно принятых порций данных.
Проблема (1) Симптомы: модемы начинают связываться, долго воюют, после этого разрывают связь без установления соединения или соединяются без коррекции, и опять же быстро разрывают соединение.
Пользователь может заранее попросить модем IDC устанавливать начальное соединение на меньшей скорости, обеспечивая надежное установление связи на зашумленных линиях. Через 10-15 секунд после установления связи, модем IDC запросит увеличение скорости до максимально возможной для данной линии связи. Для этого необходимо записать в регистре S90 число 3 или 4: ATS90=4 <Enter> - команда OK - ответ модема Теперь модем при установлении соединения будет ограничивать свои аппетиты скоростью 4800 бит/с. Подобные решения применялись другими компаниями и раньше (например, ASL в модемах US Robotics Courier), но работали только между двумя модемами этого типа (кстати, самыми дорогими в линейке продуктов фирмы). Преимущество IDC состоит в том, что примененные в этом модеме "хитрости" работают независимо от типа модема на другой стороне. Плюс такого подхода состоит еще в том, что для оценки оптимальной скорости данного канала необходимо проанализировать статистику протокола коррекции - оценить фактический уровень ошибок. Если в процессе начального согласования модемы решат выбрать слишком высокую скорость, они просто не смогут установить соединение с коррекцией. Здесь можно провести аналогию с автомобилем: стартуя, Вы всегда начинаете с первой скорости, последовательно переключаясь выше, если позволяет качество дороги и мощность мотора. Заметим, что иногда плохое установление соединения связано не с задиранием скорости, а с тем, что V.34 модем предлагает удаленному V.32 модему работать на V.34 если Вы точно уверены в том, что удаленный модем не имеет V.34 и что это дает дополнительную задержку при handshake, можете запретить протокол V.34, записав в бит 7 регистра 17 единицу: ATS17.7=1 <Enter> - команда OK - ответ модема Также многие пользователи пытаются ограничить скорость соединения, задавая в конфигурации коммуникационных программ скорость в COM-порту 2400 или 4800. Это не совсем верно, потому что это отнюдь не дает модему прямой инструкции на ограничение скорости соединения между модемами (это верно, только если в регистре S37 стоит 0)
Проблемы (2) и (3) Симптомы: Ваш модем быстро связывается, но в процессе работы часто без каких либо объяснений прерывает поток данных секунд на 20, покачает немного, и снова <затыкается>, достаточно часто вообще обрывая соединение.
Большинство модемов выбирают скорость в зависимости от соотношения Сигнал/Шум (SNR, Signal to Noise Ratio) на линии. К сожалению, такой подход не всегда срабатывает, поскольку линии могут вносить помехи, слабо отражающиеся на SNR, но сильно сказывающиеся на количестве ошибок при приеме данных. Поэтому в модемах IDC, помимо постоянного измерения и анализа SNR, также анализируется процент ошибочно принятых блоков данных. Если выясняется, что производительность работы на текущей скорости (например, 14400 бит/с) с учетом количества ошибок меньше, чем можно было бы получить при меньшей на шаг скорости (т.е. 12000 бит/с), но без ошибок, модем переключит скорость вниз. Что касается традиционного анализа SNR, модемы IDC делают это с учетом быстрой динамики SNR. За основу берется не текущий замеренный SNR, а усредненный за некоторое время. При изменении SNR модем не сразу инициирует reneg, а после того, как такой уровень продержится 3 секунды при падении, или 15 секунд при поднятии. Это позволяет избежать двух reneg'ов, если SNR вдруг быстро вернется обратно. Здесь можно провести аналогию с подрессориванием автомобиля на ухабистой дороге, чтобы мощность двигателя шла не только на встряхивание пассажиров.
Проблема (4) Симптомы: Ваш модем ни с того ни с сего, вдруг бросает трубку.
Часто на наших линиях возникают всплески шумов. Неадаптированные модемы тут же инициируют retrain. Модемы IDC ждут 3 секунды, и часто качество линии снова возвращается к прежнему уровню, и можно обойтись без retrain. Автомобильная аналогия здесь сложная: представьте, что дорога перед вами вдруг вздыбилась, образовался крутой подъем, и двигатель начинает захлебываться. Тогда retrain подобен выключению зажигания, потом запуск двигателя и попытка ехать по этому крутому подъему. Поведение IDC аналогично отключению сцепления и нажатию на тормоз в ожидании, когда гора исчезнет, как и появилась.
Проблема (5) Симптомы: При дозвоне после набора номера из динамика модема слышны короткие гудки сигнала <Занято>, а модем не кладет трубку и не возвращает строку BUSY.
Устойчивое распознание сигнала <Занято> - очень важное достоинство модема. Без него Ваша телефонная линия надолго занимается модемом при попытке куда-либо дозвониться, так как любой программный продукт, не получив строку BUSY, не переходит к набору следующего номера, а тщетно ожидает несколько десятков секунд, пока установится соединение. Обычно на наших линиях модемы <не ловят BUSY> из-за того, что частота гудка сильно отклоняется от стандарта в 425 Гц. В модеме IDC используется метод распознания, учитывающий сильный разброс частот, поэтому они достаточно надежно это делают. Однако, сигнал может быть слишком слабым. Поэтому, если модем не распознает <Занято> (или гудок <Набирайте> в междугородке), возникает необходимость увеличить чувствительность модема к сигналам АТС. В неголосовых модемах IDC за это отвечает регистр S91 - его значение задается в диапазоне от 0 до 45 децибел. Но изменять этот регистр следует осторожно, т.к. он влияет на модем и во время режима обмена данными. Хотя сигнал и нормируется при демодуляции, сильное изменение регистра S91 приводит к искажениям сигнала. Если вы отклонитесь от значения по умолчанию в 20 децибел на 10 единиц, то скорость почти наверняка уменьшится.
Высокая степень адаптации модема IDC к нашей телефонии проявляется в таких его дополнителных возможностях, как КВАНТ-доработка и АОН. Остановимся подробнее: На крупных предприятиях, институтах и т.д. встречаются ведомственные квазиэлектронные АТС типа КВАНТ. Они, как правило, имеют 3-х или 4-х значные внутренние номера, но также обеспечивают связь по городским номерам за счет достаточного количества городских линий. Пользователей модемов эти АТС достают тем, что модем не может самостоятельно <снять трубку> для набора номера. Это объясняется тем, что сопротивление модема в состоянии <трубка снята> гораздо выше (а импульс тока - меньше), чем нужно АТС КВАНТ, чтобы понять, что трубку сняли. Выходят из данной ситуации пользователи следующим образом: параллельно модему ставят телефонный аппарат и <помогают> модему снять трубку. Дело в том, что когда модему нужно набрать номер, он переходит в состояние <трубка снята>, дожидается гудка <Набирайте>, и начинает импульсный набор номера - короткие замыкания-размыкания линии (слышны щелчки). Так вот, если снять трубку аппарата перед модемом, то КВАНТ распознает снятие трубки, дает гудок <Набирайте>, модем слышит его, после этого нужно успеть положить трубку на рычаг (иначе вы помешаете модему набирать номер), и модем благополучно набирает номер. Для того, чтобы модем мог дозваниваться самостоятельно, разработчиком модема IDC была предусмотрена возможность КВАНТ-доработки: за небольшую дополнительную плату в сервис-центре в модем ставят дополнительное реле и силовой резистор в 500 Ом. После этого в регистре S24 можно задать время, на которое линия замыкается (обычно 1 секунда) на это сопротивление, и модем начинает с большим успехом работать на АТС КВАНТ.
Большинство телефонных станций на территории бывшего СССР позволяют делать автоматическое определение номера (АОН) вызывающего абонента. Порядок действий следующий: в течении 1 сек после снятия трубки в ответ на входящий звонок, вы должны успеть послать запрос на посылку АОН - короткий гудок частотой 500 Гц. Услышав его, АТС присылает закодированный комбинациями по две частоты из 6 возможных последовательность цифр номера звонящего Вам абонента. Вы должны эту посылку АОН принять и расшифровать номер. Часто можно слышать посылку АОН и без запроса - это похоже на <улюлюканье> из трубки сразу после снятия. Модемы IDC умеют выполнять АОН, когда отвечают на входящий звонок. Если записать в регистр S95 для неголосовых, и S125 для голосовых моделей число 2, то при автоответе или выполнении команды ATA модем сделает АОН и выдаст номер звонящего среди других сообщений о соединении. Если у Вас работает какая-то программа в режиме автоответа (например, BitWare) и ведет журнал событий (Log file) со служебными ответами модема (типа BUSY, NO DIALTONE, CONNECT 19200 и т.д.), то в нем же Вы сможете найти строки типа CALLER'S NUMBER: 222-22-22 с номером звонившего. Если номер не определился, или определился неточно, то будет значение <UNKNOWN> или типа (222-??-?2). Эта способность модема может быть использована для CALL BACK (перевызов звонившего). Модем делает автоответ, определяет номер звонивешго, кладет трубку, сам набирает этот номер и связывается. Это может пригодиться для абонентов провайдеров, у которых поминутная оплата времени разговора, или как элемент системы безопасности, например, в банковской сети - кроме пароля, абонент идентифицируется по своему номеру телефона, определяемому АТС.