Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АФЭ_уч_пособие_3Б.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
20.94 Mб
Скачать

Распределенные системы промышленной автоматизации с интерфейсом rs-232.

Основное назначение интерфейса RS232C - сопряжение компьютера с аппаратурой передачи данных (модемами) с целью организации передачи данных между двумя удаленными компьютерами или между компьютером и оконечным оборудованием данных.

Другое назначение интерфейса - сопряжение компьютера с радиально подключаемыми системными ПУ: ГМ "Мышь", принтером, дисплеем, графопостроителем в случае, если они находятся на относительно большом удалении от компьютера и/или требуемая скорость обмена данными невысока (максимально возможная скорость обмена для RS232C - 112,5 Кбит/сек).

Третье назначение интерфейса RS232C - сопряжение двух компьютеров, находящихся на небольшом удалении (до 17м) для обмена данными. Эта связь имеет название Commander Link.

Технические характеристики интерфейса RS232C:

  1. Вместимость - 1.

  2. Пропускная способность - от 50 до 112,5 Кбит/сек.

  3. Единица обмена - от 5 до 8 бит.

  4. Максимальная протяженность линий интерфейса - 17м.

  5. Количество линий интерфейса минимальное - 2.

  6. Способ передачи данных - последовательный, по битам.

О бмен данными организуется с помощью двух контроллеров RS232C

(рис. 67).

Микроконтроллер

Рис. 67

Основная функция контроллера - преобразование данных из параллельной формы в последовательную в определенном формате, формирование вспомогательных сигналов ошибки, контроля четности/нечетности. Формат данных в кодовой посылке приведен на рис. 68. для кода 01010011(2) = 53h. Особенностью интерфейса является повышенные в сравнении с ТТЛ уровни сигнала логической 1 и 0. Нижнему уровню сигнала в RS232C соответствует напряжение от минус 5 до -15В или ток 0мА, верхнему - напряжение от + 5 до +15В или ток 20мА.

МЗР - младший знаковый разряд;

СЗР - старший знаковый разряд

Рис. 68

Этим обеспечивается высокая помехоустойчивость при передаче данных на большое расстояние. Длительность тактового интервала сотавляет от 1/50 до 1/112,5 сек. Длительность фронта сигнала - не более 1 мкс. Длительность стартового бита - 1 тактовый интервал, стопового - от 1,5 до 2 тактовых интервалов.

Контроллер RS232C выполняется на микросхеме UART (Universal Asynchronous Receiver/Transmitter) типа Intel 8250 или 16550. Отечественная микросхема - БИС КР580ИК51.

БИС последовательного интерфейса КР580ИК51 называется также универсальным синхронно-асинхронным приемопередатчиком (УСАПП). Назначение управляющих и информационных входов и выходов УСАПП:

D0…D7 - линии ввода/вывода данных;

RD - вход разрешения чтения данных или слова состояния из УСАПП (в компьютер или микропроцессор);

WR - вход разрешения записи данных, слова состояния или директивной команды в УСАПП (из компьютера или микропроцессора);

C/D - выбор регистров УСАПП. При C/D=0 происходит обращение к регистру данных, при C/D=1 - к регистру состояния.

CS - выбор кристалла. Подключение УСАПП к шине данных;

DSR - готовность передатчика терминала;

CTS - готовность приемника терминала;

TxD - передаваемые данные;

RxD - принимаемые данные;

CLK - вход синхроимпульсов.

Все сигналы соответствуют стандартным уровням ТТЛ.

Для подключения ПУ пользователя к компьютеру с использованием интерфейса RS232C могут быть использованы порты СОМ1 и СОМ2, имеющиеся в IBM PC.

Управление контроллерами интерфейса RS232C в IBM PC производится через выделенные порты ввода/вывода (ПВВ) на шине ISA. Каждому контроллеру выделено 8 ПВВ. Контроллеру с логическим именем СОМ1 выделены ПВВ 3F8h - 3FFh, контроллеру с логическим именем СОМ2 выделены ПВВ 2F8h - 2FFh, линии запроса на прерывание IRQ4 и IRQ3, линии командного прерывания INT0Ch и INT0Bh соответственно.

Назначение битов в регистрах приведено ниже .

Порт 3F8h (Base+0). Соответствует регистру передаваемых данных.

В зависимости от состояния старшего бита управляющего слова, заносимого в управляющий регистр 3FBh, назначение порта 3F8h меняется. Если бит равен 1, порт 3F8h используется для вывода значения младшего байта делителя частоты тактового генератора (старший байт выводится через порт 3F9h (Base+1)), если бит равен 0 - порт используется для ввода/вывода данных. Число, которое необходимо занести в делитель, приведено в таблице 27.

Табл. 27

Число в делителе

Скорость передачи, бод

1040

110

768

150

384

300

192

600

96

1200

48

2400

24

4800

12

9600

6

19200

3

38400

2

57600

1

115200

Порт 3F9h (Base+1). Соответствует регистру управления прерыванием.

D0 – разрешение прерывания при готовности принимаемых данных.

D1 – разрешение прерывания после передачи байта данных (когда буфер передачи пуст).

D2 – разрешение прерывания при обнаружении состояния BREAK или при ошибке.

D3 – разрешение прерывания по изменению состояния входных линий CTS, DSR, RI, DCD.

D4-D7 – равны нулю.

Порт 3FBh (Base+3) Соответствует управляющему регистру.

D1, D0 – длина слова в битах. 00 – 5 бит, 01 – 6 бит, 10 – 7 бит, 11 – 8 бит.

D2 – количество стоповых бит. 0 – 1 бит, 1 – 2 бита.

D4,D3 – контроль на четность/нечетность. Х0 – нет контроля, 01 – контроль на нечетность, 11 – контроль на четность.

D5 – фиксация четности. При установке этого бита бит четности всегда принимает значение 0, если биты D3, D4 равны 11, и 1, если они равны 01.

D6 – установка перерыва. Вызывает вывод строки нелей в качестве сигнала BREAK.

D7 – установка режима. 1 – порты 3F8h и 3F9h используются для загрузки делителя частоты тактового генератора, 0 – основной режим (порты 3F8h и 3F9h используются как регистр данных и регистр управления прерыванием соответственно).

Порт 3FDh (Base+5). Соответствует регистру состояния линии.

D0 – данные получены и готовы для чтения. Сбрасывается после чтения данных.

D1 – ошибка переполнения при приеме. Был принят новый байт данных, а предыдущий еще не был прочитан, т.е. предыдущий байт потерян.

D2 – ошибка четности при приеме. Сбрасывается после чтения состояния линии.

D3 – ошибка синхронизации (не принята стоповая посылка).

D4 – обнаружен запрос на прерывание передачи (BRAK – длинная строка нулей).

D5 – буферный регистр передатчика пуст, в него можно заносить очередной байт.

D6 – регистр сдвига передатчика пуст, передача закончена.

D7 – тайм-аут.

Программирование операций управления аппаратурой при использовании интерфейса RS232C.

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

а) инициализации;

б)записи;

в)чтения.

Функция инициализации

Описание: функция обеспечивает задание выбор СОМ порта и задание режима работы: количество битов (от 5 до 8) в передаваемом слове данных, количество стоповых битов (1,5 или 2), наличие или отсутствие бита паритета (контроля на четность/нечетность), тактовая частота передачи битов.

Тело функции:

outportb(Base+3,0x80);/*запись кода установки режима загрузки делителя частоты тактового генератора в управляющий регистр*/

outportb(Base,0xff);/*запись младшего байта кода делителя частоты*/

outportb(Base+1,0xff00>>8);/* запись старшего байта кода делителя частоты */

outportb(Base+3,<слово режима>);/*запись кода формата данных*/

outportb(Base+1,0);/*запрет прерываний*/

Функция записи (вывода одного слова данных)

while((inportb(Base+5) & 0x20) = = 0) /*ожидание готовности*/

{

t++; /*параметр t нужен, если предусматривать выход из функции "по таймауту" при зацикливании*/

if (t>lTimeout) return; /*Это пример выхода из функции при зацикливании*/

}

outportb(Base,data); /*передача*/

Функция чтения (ввода одного слова данных)

while((inportb(Base+5) & 0x01) = = 0) /*ожидание готовности*/

{

t++

}

data = outportb(Base); /*прием*/

В библиотеке базовых функций для работы с аппаратурой при использовании интерфейса RS232 желательно иметь также функции передачи строки символов:

Функция записи строки символов

i=0;t=0;

while cCmd[i] ! = NULL

{

while ((inportb(Base+5) & 0x20) = = 0)

{

t++ /*Цикл предусмотрен для организации выхода по тайм-ауту (при зацикливании)*/

}

outportb(Base,cCmd[i]);/*Вывод строки символов, составляющих команду*/

Функция чтения

i=0; t=0;

for (;;)

{

while ((inportb(Base+5) & 0x01) ! = 0x01)

{

t++ /*Цикл предусмотрен для организации выхода по тайм-ауту (при зацикливании)*/

}

c=inportb(Base) & 0xff;

if (c = = 0x0D) break; /*Прекращение чтения при появлении символа CR - конец строки*/

else cCmd[i] = c;

i++;

}

Программирование операций управления аппаратурой, подключенной к компьютеру с помощью интерфейса RS-232, с использованием стандартных библиотечных функций в программной среде LabWindows/CVI 8.0

Для работы с аппаратурой, подключенной к компьютеру с помощью интерфейса RS-232, в LabWindows/CVI 8.0 предусмотрены 29 функций, в том числе:

OpenComConfig(N, DeviceName, Baudrate, Parity, DataBits, StopBits, InputQueueSize, OutputQueueSize); -открытие и конфигурирование COM-порта.

ComRd(N, Temp, Count) – прием строки символов;

ComWrt(N, Temp, Count) –передача строки символов;

CloseCom (N) – закрытие СОМ – порта.

Параметры:

N – номер СОМ-порта (1…32);

DeviceName – имя СОМ-порта (обычно СОМ1, СОМ2 и т.д.)

Baudrate – скорость передачи, бод;

Parity – наличие (1) или отсутствие (0) контроля на четность;

DataBits – количество бит (5…8) в передаваемом слове;

StopBits – количество стоповых бит;

InputQueueSize – размер очереди приема, бит. Обычно – 512.

OutputQueueSize – размер очереди передачи, бит. Обычно - 512.

Temp – имя буфера для одной посылки;

Count – размер буфера для одной посылки, байт;

Ниже приведен фрагмент программы чтения данных (значений температуры) с инфракрасного термометра АТТ-2508 (см. табл. 28 ), подключенного к компьютеру с помощью интерфейса RS-232. Значения температуры кодируются в 12, 13 и 14 символах в строке символов, принимаемой с инфракрасного термометра.

OpenComConfig (1, "COM1", 9600, 0, 7, 1, 512, 512); //открытие СОМ1

ComRd(1, temp, 16);

Temperature = (float)((((int)temp[12] - 48) * 100 + ((int)temp[13] - 48) * 10 + ((int)temp[14] - 48)) / 10.0); //Преобразование кодов ASCII строки символов в трехразрядное десятичное число.

CloseCom (1); //закрытие СОМ1

Табл. 28

Инфракрасный термометр

АТТ-2508

Данный прибор является бесконтактным измерителем температуры,

что делает его применение удобным особенно в тех случаях, когда

традиционные способы измерения температуры непригодны. Например,

если нужно измерить температуру движущегося предмета, поверхность,

находящуюся под напряжением, грязную поверхность или расположенную

в труднодоступном месте. Возможность подключения к персональному

компьютеру через последовательный интерфейс RS-232 и наличие программного

обеспечения позволяет использовать прибор в автоматизированных системах

измерения температуры

Технические характеристики

 диапазон измерений –10°C...+300°C (–4°F...+572°F)

 разрешение 0,1°C; 0,1°F

 погрешность ±2 % от измеренного значения при внешней температуре 23,5 °С

 коэффициент температуры 10 % существующей погрешности в диапазоне температур 0...18°C и 28...40°C

(32...64°F, 82...104°F)

 скорость измерений одно измерение в секунду

 поле зрения 7:1

 интенсивность излучения 0,1...0,95

 запись максимального/минимального показаний с возможностью повторного вызова

Контрольные вопросы и задачи

1. Напишите фрагмент программы передачи команды @0106 в виде строки символов. При инициализации СОМ-порта задать: количество битов в передаваемом слове данных - 8, количество стоповых битов -1, наличие отсутствие бита паритета (контроля на четность/нечетность), тактовая частота передачи битов – 19200 бод.