Преобразователь интерфейса GPIB RS 232
Многие современные измерительные приборы оснащены интерфейсом IEEE488, который на Западе известен как GPIB (General Purpose Interface Bus - интерфейсная шина общего назначения), а в России как КОП (канал общего пользования по ГОСТ 26.003-80). Он позволяет объединять приборы в автоматизированные измерительные комплексы. Но для управления таким комплексом нужен компьютер, оборудованный адаптером этого интерфейса. В типовой комплектации большинства персональных компьютеров он отсутствует, а как самостоятельное изделие стоит недешево. Предлагаемое устройство позволит использовать для управления каналом общего пользования и обменом по нему информацией стандартный СОМ-порт компьютера.
Прежде всего необходимо разобраться с основными принципами работы интерфейса GPIB. Его организацию можно сравнить с деятельностью какой-либо комиссии: председательствующий решает, кто из членов комиссии говорит, а кто слушает. Соответственно к каналу общего пользования к общей шине подключают приборы, работающие в трех режимах: контроллера (controller), говорящего (talker) и слушателя (listener). Слушатель только принимает информацию. Допускается присутствие до 14 слушателей одновременно. Говорящему разрешено передавать информацию. В каждый момент времени допускается присутствие только одного говорящего.
Контроллер (controller) объединяет в себе функции слушателя и говорящего, а помимо этого он способен адресовать все остальные устройства. В состав комплекса приборов, объединенных шиной GPIB, должен входить только один контроллер.
Все устройства соединяются параллельно по 16-ти сигнальным линиям и восьми линиям общего провода. Используется негативная логика: низкий уровень сигнала - лог. 1 (true), высокий уровень - лог. О (false). Сигнальные линии делятся нв три группы: информационные, синхронизации передачи байтов и управления интерфейсом.
Информационные линии DIO1-DIO8 (ЛД0-ЛД7) образуют восьмиразрядную двустороннюю шину данных. Обычно информация передается в текстовом виде с использованием семиразрядного кода ASCII (American Standard Code for Information Interchange) или его отечественного эквивалента КОИ-7. Например, чтобы передать число 123, поочередно передают ASCII-коды цифр 1 (0110001), 2 (0110010) и 3 (0110011). По шине данных передают также интерфейсные команды, адреса и команды управления устройствами.
Линии синхронизации обеспечивают координацию пересылки восьмиразрядных байтов по шине данных. Благодаря взаимодействию по этим линиям говорящего со слушающим или слушающими, если их несколько, скорость передачи подбирается автоматически, исходя из возможностей активных участников обмена. Таким образом обеспечивается возможность соединять каналом общего пользования приборы с разным быстродействием. Приборы, не участвующие в обмене, остаются пассивными.
Всего имеются три линии синхронизации. Низкий уровень на линии DAV (Data Valid) или СД (Синхронизация данных) устанавливается говорящим только в том случае, если информация, выведенная им на шину данных, достоверна, а от слушателя поступил сигнал готовности ее принять - высокий уровень на линии NRFD (Not Ready For Data) или ГП (Готовность Приема). Низкий уровень (лог. 1) на этой линии означает неготовность к приему. Поскольку выходы сигнала NRFD всех устройств выполнены по схеме "с открытым коллектором" и соединены параллельно, высокого уровня здесь не будет, пока не готов к приему хотя бы один слушатель.
Рис. 1
Аналогичным образом высокий уровень на линии NDAC (Not Data Accepted) или ДП (Данные Приняты) свидетельствует, что слушатель успешно принял информацию. Как и на линии NRFD, высокий уровень на линии NDAC невозможен, пока его не установили все слушатели. Временные диаграммы цикла пересылки байта показаны на рис. 1, где отмечены следующие характерные моменты времени:
Т_1 - все слушатели готовы принять байт;
Т0 - говорящий сообщает, что вывел байт на шину данных;
T1 - слушатель приступил к приему и обработке байта и сообщает, что пока не готов принять следующий;
Т2 - слушатель принял байт;
Т3 - говорящий сообщает, что байт на шине данных более недействителен;
Т4 - слушатель снимает сигнал завершения приема, готовясь к следующему циклу;
Т5, Т6 - аналогичны Т-1, и То предыдущего цикла.
Пять линий управления интерфейсом предназначены для сообщения подключенным к каналу общего пользования, какие действия предпринимать, в каком режиме находиться и как реагировать на команды. Подробные сведения о назначении этих линий содержит табл. 1.
Таблица 1
Линия управления Описание
GPIB КОП
ATN (Attention) УП (Управление) Высокий уровень - передается байт информации. Низкий уровень - передвется байт управления
IFC (Interface Clear) СИ (Сброс Интерфейса) Низкий уровень - немедленно прекратить любые операции интерфейса, всем устройствам перейти в исходное состояние
SRQ (Service Request) 30 (Запрос Обслуживания) Высокий уровень обычно сигнвлизирует о наличии информации для передачи или о произошедшей ошибке. По этому сигналу контроллер начинает опрос всех устройств для выяснения причины его появления и выполнения трабу емых действий
REN (Remote Enable) ДУ (Дистанционное Управление) Высокий уровень - автономная работа устройства. Низкий уровень - устройство управляется дистанционно по командам интерфейса
EOI (End Of Identify) КП (Конец Передачи) Низкий уровень - передается последний байт сообщения. Одновременная установка низкого уровня на линиях ATN и EOI инициирует параллельный опрос устройств
Каждому из приборов, объединенных каналом общего пользования, присваивается уникальный адрес. Чтобы обратиться к конкретному прибору, контроллер передает его адрес в командном режиме (при низком уровне на линии ATN). Адрес занимает пять младших разрядов байта и может находиться в интервале 0-30, значение 31 зарезервировано для общих интерфейсных команд. Любой прибор, оснащенный интерфейсом GPIB, имеет средства для установки и изменения своего адреса, например, пять съемных перемычек на задней панели. Разрядами DIO6 и DIO7 адресного байта контроллер задает функциональное назначение прибора. При низком уровне на линии DIO6 это - слушатель, а на линии DIO7 - говорящий.
Рис. 2
Схема разработанного автором преобразователя интерфейса GPIB в RS-232 показана на рис. 2. На разъем Х1 подают переменное или постоянное любой полярности напряжение питания. Диодный мост VD1 выпрямляет его или приводит к нужной полярности, а интегральный стабилизатор доводит до нужного для питания микросхем значения 5 В.
Розетку Х2 подключают к вилке одного из СОМ-портов компьютера. Микросхема DA1 согласует уровни сигналов интерфейса RS-232 с теми, которые принимает и формирует микроконтроллер DD1. Указанное на схеме значение частоты кварцевого резонатора ZQ1 обеспечивает точную установку стандартной скорости обмена информацией с компью-тером.
Высокую нагрузочную способность по шине данных интерфейса GPIB (DIO1 - DIO8) обеспечивает микросхема двунаправленного приемопередатчика DD2. При необходимости подключения к каналу общего поль- j зования более пяти-шести устройств придется, возможно, усилить сигналы и на остальных интерфейсных линиях.
Светодиод HL1 сигнализирует об идущем обмене информацией с подключенными к каналу общего пользования приборами, a HL2 - о наличии напряжения пита- I ния преобразователя.
Вилка ХЗ предназначена для программирования микроконтроллера DD1, уже установленного на плату преобразователя. Если он будет запрограммирован заранее с помощью программатора, этот разъем не нужен. Конфигурация микроконтроллера должна быть установлена следующей: расширенный (extended) байт - OxFF, старший (high) байт - OxDF, младший (low) байт - OxDE.
Розетка Х4 - РПМ7-24Г-ПБ-В, стандартная для интерфейса GPIB (КОП). Расположение и назначение ее контактов показаны на рис. 3. Кнопка SB 1 служит для повторного запуска микроконтроллера после сбоя программы.
Рис. 3
Внешний вид собранного на макетной плате преобразователя показан на рис. 4. После сборки его следует подключить к компьютеру и запустить какую-либо терминальную программу. Я пользовался программой RS232 Pro.
Параметры соединения должны быть следующими: скорость 115200 Бод, проверка четности отсутствует, один столовый разряд. Преобразователь выполняет функции контроллера канала общего доступа, исполняя подаваемые по RS-232 команды, приведенные в табл. 2.
Каждая из них состоит из двух символов - идентификатора и параметра. Символ $, например, идентифицирует группу разовых команд. Следующий за ним символ (цифра) выбирает конкретную команду из этой группы. Идентификатор # означает, что ASCII-код сопровождающего его символа необходимо передать по интерфейсу GPIB.
Команда $6 инициализирует параллельный опрос нескольких приборов. Она обычно подается после получения контроллером запроса на обслуживание (SRQ=1), когда нужно определить, какой из приборов требует внимания. Для сигнализации об этом каждому из них отводят определенный разряд шины данных (DIO). Это делается с помощью съемных перемычек на панели прибора или по интерфейсным командам РРС (Parallel Poll Configure - конфигурация параллельного опроса), подаваемым контроллером. После инициализации параллельного опроса следует лишь с помощью команды $7 прочитать состояние линий DIO1-DIO8 и проанализировать его.
Последовательный опрос происходит медленнее параллельного, но более точно определяет причину запроса. Для его запуска необходима интерфейсная команда SPE (Serial Poll Enable - разрешение последовательного опроса). После нее каждый прибор, адресованный как говорящий, передаст байт своего состояния.
Полный перечень интерфейсных команд имеется в документе "Tutorial Description of the Hewlett-Packard Interface Bus", который можно найти в Интернете по адресу http://vt100.net/manx/details/7,17449 Необходимо отметить, что не все устройства, оборудованные интерфейсом GPIB, обязаны выполнять те или иные общие интерфейсные команды.
Пользуясь имеющимися в табл. 2 командами, можно производить на шине GPIB любые операции, что дает пользователю возможность самостоятельно написать компьютерную программу обслуживания конкретного прибора или их системы. Для иллюстрации этой возможности автором была написана программа GPIB Terminal.
Рис. 5
Запустив эту программу, необходимо, открыв показанную на рис. 5 вкладку "Настройки", указать номер СОМ-порта, к которому подключен преобразователь, и GPIB-адрес прибора, с которым предстоит работать, задать символы, обозначающие конец строки сообщения при передаче и приеме. В завершение настройки нажимают на экранную кнопку "Применить и сохранить".
Об удачном открытии порта сообщит надпись "Порт открыт" на панели "Принятые данные" вкладки "Терминал". На рис. 6 приведен пример ответа прибора на посланную ему затем команду *idn? - запрос названия изготовителя, типа и других сведений о приборе. Нужно отметить, что ответы прибора на посылаемые ему команды предусмотрены далеко не всегда. Зачастую, приняв команду, прибор выполняет ее (например, переходит в требуемый режим работы) "молча", ничего не сообщая об этом контроллеру.
Рис. 6
Для наглядного исследования процесса обмена информацией по каналу общего пользования в программе предусмотрена изображенная на рис. 7 вкладка "Команды". Попробуем передать команду *idn? имеющимися здесь средствами. Прежде всего, следует адресовать прибор как слушатель с адресом 2. Для этого необходимо послать байт адреса с шестнадцатеричным значением 0x22 или десятичным 34.
Рис. 7
Нажатием на экранную кнопку ATN устанавливаем ATN=1 (низкий уровень на одноименной линии). Заметим, что после выполнения каждой операции текущее состояние линий управления автоматически отображается в нижней части вкладки. Адрес в формате, соответствующем отмеченному пункту поля "Формат", набираем в поле ввода рядом с экранной кнопкой "Послать" и нажимаем на эту кнопку. Устанавливаем ATN=0, отжав соответствующую кнопку.
Вводя нужные значения и нажимая на кнопку "Послать", передаем следующую последовательность байтов: 0х2А, 0x69, 0x64, 0хбЕ, 0x3f^ 0x0D, 0х0А. Заметим, что, отметив пункт "ASCII", можно вводить не шестнадцатеричные коды, а сами символы, образующие команду. Однако завершающие ее символы "Возврат каретки" (OxOD) и "Перевод строки" (ОхОА) необходимо все-таки вводить в шестнадцатеричном или десятичном (соответственно 13 и 10) формате.
Далее адресуем прибор как говорящий, для чего нажимаем на кнопку ATN, затем набираем и передаем адрес 0x42 или 66. Сразу после отжатия кнопки ATN принимаем ответ прибора, нажимая для приема каждого символа на экранную кнопку "Читать". Обратите внимание, что при приеме последнего символа ответа будет установлено ЕО1=1.
Научившись работать с интерфейсом GPIB на низком уровне и имея навыки программирования, можно приступать к разработке программ управления измерительными комплексами.
Программу микроконтроллера преобразователя интерфейса и описанную в статье компьютерную программу можно скачать здесь
Автор: М. Терентьев, г. Ульяновск
Похожие материалы из категории "Компьютерная техника":
Комментарии посетителей
Добавление комментария