ГОСУДАРСТВЕННЫЙ КОМИТЕТ РОССИЙСКОЙ ФЕДЕРАЦИИ
ПО ВЫСШЕМУ ОБРАЗОВАНИЮ

ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра "Автоматизация производственных процессов"
Методические указания к лабораторной работе №4
"Передача данных с использованием параллельного
коммуникационного порта SENTRONICS"

по курсу
"Передача данных в информационно управляющих системах"
для студентов специальности 2101
Ростов-на-Дону
1999
Составители: к.т.н. Кочетов А.Н., к.т.н. Назаренко Д.В.

Передача данных с использованием параллельного
коммуникационного порта SENTRONICS.

Введение. Данная работа предлагается в рамках программы второй части курса "Передача данных в информационно-управляющих системах". Выполнение данной работы подразумевает создание программных средств для передачи данных и интерфейса с пользователем. В последующих работах полученное программное обеспечение будут модифицироваться, поэтому для удобного подключения процедур и внесения изменений при выполнении последующих лабораторных работ рекомендуется модульное оформление текстов программ.

Цель работы: Создание ПО для передачи данных с использованием параллельного порта. ПО должно обеспечивать передачу массива данных. Предполагается создание двух программ – программа передачи данных и программа приема данных.

Оборудование: Два компьютера типа IBM PC AT соединенных кабелем, схема которого приводится на рис.1.

Рис.1. Кабель LPT порта.

Внимание! Во избежании повреждения портов, подключение коммуникационных кабелей выполняется при отключенном питании компьютеров. Оба компьютера должны быть заземлены!!!

Ограничения: Программные средства должны быть ориентированы на использование в среде DOS на компьютерах с микропроцессором i80286 (не выше) и соответственно использовать стандартные аппаратные средства параллельного интерфейса. Программные средства должны иметь интерфейс, использующий текстовый режим видеомонитора (допускается интерфейс типа "командная строка"). Использование готовых процедур и библиотек, предназначенных для работы с параллельным портом, для выполнения данного задания не допускается.

Краткая теория: Для использования порта связи необходимо выполнить его инициализацию и написать процедуру обмена данными и портом. Ниже приводится краткая информация, необходимая для выполнения задания. Более полное описание портов приводится в литературе [1,2], примеры использования портов можно найти в [3,4].

Параллельный порт.

Порт параллельного обмена занимает в адресном пространстве ПЭВМ три физических адреса, которые позволяют адресовать три однобайтовых регистра. Базовый адрес последовательного порта LPT1 - 378h, LPT2 - 278h. Далее используется следующее обозначение: B - базовый адрес (для LPT1 он равен 378h) для остальных адресов данного параллельного порта введены обозначения B+1 (379h) и B+2 (37Ah). Базовый адрес рекомендуется хранить в отдельной ячейке, а реальные адреса регистров порта вычислять в процессе выполнения программы. Такой подход позволит легко изменить базовый адрес при изменении конфигурации ПЭВМ.

В таблице 1 приводятся назначение битов параллельного порта, сигналы интерфейса, а также соответствующие им линии связи предлагаемого интерфейсного кабеля, используемого в данной работе.

Таблица 1.

Адрес

Направление

Название

Бит

*)

Сигнал (Вывод)

Линия кабеля

LPT1

LPT2

 

378h

278h

B

Вывод

Data

D0

 

DATA0 (2)

d0

D1

 

DATA1 (3)

d1

D2

 

DATA2 (4)

d2

D3

 

DATA3 (5)

d3

D4

 

DATA4 (6)

d4

D5

 

DATA5 (7)

X

D6

 

DATA6 (8)

X

D7

 

DATA7 (9)

X

379h

279h

B+1

Ввод

Printer status

D0

X

D1

X

D2

X

D3

 

/ERROR (15)

d0

D4

 

SELECT (13)

d1

D5

 

PEND (12)

d2

D6

 

/ACK (10)

d3

D7

NOT

BUSY (11)

d4

37Ah

27Ah

B+2

Вывод

Printer control

D0

NOT

/STROBE (1)

X

D1

NOT

/AUTOFD (14)

X

D2

 

/INIT (16)

X

D3

NOT

SEL IN (17)

X

D4

IRQ

X

X

D5

PS/2

X

X

D6

X

D7

X

*)

NOT

Сигнал инвертирован

X

Сигнал на разъем не выведен либо не используется

IRQ

Активизация прерывания по сигналу /ACK (1-активно, 0-отключено)

PS/2

Использование двунаправленной шины данных (0-передача, 1-прием). Только для высокоскоростных двунаправленных портов.

Ниже, в таблице 2 приводится структуру линий связи между ЭВМ.

Таблица 2.

     

Удаленный компьютер

Port B

     

Port B+1

 

D0

----

d0

--->

D3

D0/D4

D1

----

d1

--->

D4

D1/D5

D2

----

d2

--->

D5

D2/D6

D3

----

d3

--->

D6

D3/D7

D4

----

d4

-o->

D7

Strobe

           

Port B+1

     

Port B

 

D3

<---

d0

----

D0

---

D4

<---

d1

----

D1

---

D5

<---

d2

----

D2

---

D6

<---

d3

----

D3

---

D7

<-o-

d4

----

D4

Ack

Перед использованием параллельного порта необходимо выполнить его инициализацию. Для обеспечения обмена информацией порт B+2 непосредственно не используется, однако в нем необходимо определить состояние битов D4 и D5. При использовании аппаратного прерывания по сигналу /ACK (ножка 10 разъема порта) бит D4 порта B+2 необходимо установить (D4=1). При использовании иных алгоритмов бит D4 порта B+2 следует сбросить (D4=0). Также следует отметить, что при использовании прерывания, необходимо инициализировать контроллер прерываний [1,2]. Написание программы с использованием прерывания является достаточно трудоемким и в данной работе не является обязательным. Бит D5 порта B+2 в старых моделях компьютеров не используется, но для совместимости с последними ЭВМ его необходимо сбросить (D5=0), либо вовсе не изменять. Состояние остальных битов порта B+2 могут быть произвольными, так как в данной конфигурации они остаются неподключенными. Кроме того, необходимо определить состояние порта B, в частности сигнала, который будет в дальнейшем использоваться для стробирования информации, в противном случае возможно нарушение синхронной работы портов.

При обеспечении связи через параллельный порт необходимо разработать протокол обмена данными, либо использовать один из предлагаемых. Могут быть использованы алгоритмы с использованием стробирующего импульса, либо самосинхронизирующиеся протоколы, подобные тем, которые используются для записи на магнитный носитель.

При использовании алгоритмов со стробирующим импульсом из всех информационных линий необходимо выбрать одну для стробирования выводимой информации, а остальные задействовать для передачи информации. В данном случае используются пять информационных линий, одну из которых можно выбрать для стробирования информации, а по оставшимся четырем передавать байт в виде двух полубайтов. При использовании сигнала прерывания (IRQ7 для LPT1 либо IRQ5 для LPT2) в качестве строба предпочтительнее выбрать линию d3 (рис.2), положительный перепад на которой вызовет прерывание. При использовании алгоритмов проверки бита путем опроса его состояния выбор номера информационной линии для строба произволен. Ниже (рис.3 и рис.4) приводятся два способа обеспечения связи.

Рис. 3. Передача данных по параллельному порту.

На рис.3 приведен пример обеспечения передачи информации с использование стробирующего импульса, подобный тому, который используется для обмена данными между ЭВМ и принтером. Данные являются достоверными и могут быть прочитаны в течении промежутка времени, пока сигнал Strobe активен (в данном случае равен логической единице). Достоинством данного метода является возможность использования аппаратного прерывания и тем самым более рационального использования ресурсов ЭВМ. Однако в данном случае есть некоторые недостатки, так, например, при передаче информации полубайтами невозможно отличить первую и вторую часть полубайта, что несколько снижает помехозащищенность канала. Кроме того, скорость передачи в ряде случаев может несколько снижаться из за того, что каждое информационное слово сопровождается двумя перепадами стробирующего импульса. Устранить данные недостатки позволяет способ передачи информации осциллограммы которого представлены на рис.4.

Рис. 4. Передача данных по параллельному порту.

В данном случае младшая часть полубайта может быть передана по фронту стробирующего импульса, а вторая по его спаду, что позволяет на аппаратном уровне отличать части полубайта и сопровождать информационное слово (четыре бита) одним перепадом стробирующего импульса. Для жесткой синхронизации работы портов обеих ЭВМ удаленный компьютер (к которому осуществляется передача), после приема данных должен сформировать сигнал подтверждения (Ack), который, в свою очередь служит сигналом для передающего компьютера о готовности удаленного компьютера принимать данные. Из рис. 4 видно, что сигнал Strob по фронту фиксирует младшие четыре бита (D0..D3), а по спаду – старшие (D4..D7). Аналогично, сигнал Ack своим фронтом подтверждает получение четырех младших битов (D0..D3), а спадом - старших (D4..D7). Следует отметить, что при использовании такого протокола связи использование аппаратных прерываний невозможно.

Следует также отметить, что при передаче информации в одном направлении сигнал подтверждения (Ack) принимающего терминала может выполнять сигнал Strob. Задача переназначения сигналов Strob и Ack при двусторонней связи должна реализовываться программно. Отметим, что в данном случае в качестве линии Strob/Ack удобно использовать линию d4, при этом следует учитывать, что эта линия инвертирована(!) (таблица 2).

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

Выполнение работы: Для выполнения работы необходимо написать две программы, одна реализует алгоритм передачи, другая алгоритм приема данных. При выполнении данной работы возникает ряд задач, решение которых должно быть найдено и реализовано на каком-либо языке программирования (Pascal, C++, Assembler … ). При выполнении задания могут быть использованы общие алгоритмы, структурные схемы которых приведены на рисунках 5 и 6.

Рис 5. Блок схема алгоритма программы передачи данных.

Рис 6. Блок схема алгоритма программы приема данных.

Программа передачи информации.

1. Определить базовый адрес коммуникационного порта (378h).

2. Выполнить инициализацию коммуникационного порта.

3. Подготовить массив данных для передачи.

4. Передать подготовленный массив данных в порт.

Для передачи данных необходимо организовать цикл. В данном цикле необходимо выводить данные в порт, предварительно ожидая (проверяя) готовность удаленного компьютера принять данные. Передаваемые данные должны сопровождаться сигналом Strob. Ожидание готовности реализуется путем организации цикла, выход из которого осуществляется путем анализа сигнала Ack от удаленного компьютера.

Программа приема информации.

1. Определить базовый адрес коммуникационного порта (378h).

2. Выполнить инициализацию коммуникационного порта.

3. Восстановить значения массива данных путем чтения из порта.

Для приема из порта необходимо организовать цикл. В данном цикле необходимо последовательно читать данные из порта и размещать их в массиве данных. Данные следует читать в случае, если сигнал Strob удаленного компьютера активен. По завершении чтения данных необходимо подтвердить прием данных активизацией сигнала Ack. Ожидание сигнала Strob и данных реализуется путем организации цикла, выход из которого осуществляется по результатам анализа сигнала Strob.

4. Вывести полученный массив данных на экран.

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

Программы необходимо отладить на двух компьютерах соединенных кабелем (рис. 1). Для зачета необходимо представить работоспособные программы, пояснить их работу и работу коммуникационного порта.

Литература и электронные пособия

1. Р. Джордейн. Справочник программиста персональных компьютеров типа IBM PC, XT и AT. Москва. "Финансы и статистика" 1992.

2. "Tech Help".

3. Л. Скэлон. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера. Москва. "Радио и связь" 1989.

4. Питер Абель. Программирование на языке ассемблера.



На главную Яндекс.Метрика
Hosted by uCoz