Управление потоком передачи

в начало

Для управления потоком данных (Flow Control) могут использоваться два варианта протокола – аппаратный и программный. Иногда управление потоком путают с квитированием, но это разные методы достижения одной цели – со­гласования темпа передачи и приема. Квитирование (Handshaking) подразуме­вает посылку уведомления о получении (квитанции) элемента, в то время как управление потоком предполагает посылку уведомления о невозможности по­следующего приема данных.

Стандарт RS-232С (таблица 3.6) регламентирует типы применяемых разъемов, что обеспечивает высокий уровень совместимости аппаратуры различных производителей. На аппаратуре DTE (в том числе, и на COM-портах РС) принято устанавливать вилки (male – “папа”) DB25-P или более компактный вариант – DB9-P. Девятиштырьковые разъемы не имеют контактов для дополнительных сигналов, необходимых для синхронного режима). На аппаратуре DСЕ (модемах) устанавливают розетки (female – “мама”) DB25-S или DB-9S.

 

Таблица 3.6. Назначение сигналов интерфейса RS-232С

Сигнал Назначение
PG Защитная земля, соединяется с корпусом устройства и экраном кабеля
SG Сигнальная (схемная) земля, относительно которой действуют уровни сигналов
TD Последовательные данные – выход передатчика
RD Последовательные данные – вход приемника
RTS Выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением – состояние «включено» является сигналом модему на переключение в режим передачи
CTS Вход разрешения терминалу передавать данные. Состояние “выключено” аппаратно запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных
DTR Выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения
DSR Вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)
DCD Вход сигнала обнаружения несущей удаленного модема
RI Вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова

 

Аппаратный протокол управления потоком RTS/CTS (HardWare Flow Control) использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему. Передатчик “выпускает” очередной байт только при включенном состоянии линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Обычно микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части – сдвигающий для приема очередной посылки и хранящий, из которого принятый байт считывается. Это позволяет реализовать обмен с аппаратным протоколом без потери данных, не прибегая к программной буферизации.

Аппаратный протокол управления потоком RTS/CTS (Hardware Flow Control) использует сигнал СТ8, который позволяет остановить передачу данных, если приемник не готов к их приему. Работу этого протокола иллюстрирует рисунок 3.8. Передатчик “выпускает” очередной байт только при включенном состоянии линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки).

Рис.3.8

Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Обычно микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части – сдвигающий для приема очередной посылки и хранящий, из которого принятый байт считывается. Это позволяет реализовать обмен с аппаратным протоколом без потери данных, не прибегая к программной буферизации.

Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они поддерживают этот режим. При непосредственном (без модемов) соединении двух компьютеров аппаратный протокол требует перекрестного соединения линий RTS – CTS.

Программный протокол управления потоком XON/ХOFF предполагает наличие двунаправленного канала передачи данных. Работает он следующим образом:

Если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Далее, когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11h), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается по крайней мере на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рисунок 3.9). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).

Рис.3.9.

Преимущество программного протокола при непосредственном соединении устройств заключается в отсутствии необходимости передачи управляющих сигналов интерфейса – минимальный кабель для двустороннего обмена может иметь только 3 провода. Недостатком, кроме требования наличия буфера и большего времени реакции (снижающего и общую производительность канала из-за ожидания прохождения сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока прини­маемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.