Аппаратно-программные средства ввода/вывода аналоговой информации в системах реального времени

Московский институт

         инженеров железнодорожного транспорта

--------------------------------------------------------------

         Кафедра: Автоматизированные системы управления













     АППАРАТНО-ПРОГРАММНЫЕ СРЕДСТВА ВВОДА-ВЫВОДА

     АНАЛОГОВОЙ ИНФОРМАЦИИ В СИСТЕМАХ РЕАЛЬНОГО

                  РЕАЛЬНОГО ВРЕМЕНИ



     Методические указания "Аппаратно-программные средства 

          систем сбора данных и управления"























                    М О С К В А  1 9 9 2 г.



.





                       СОДЕРЖАНИЕ



   1. ВВЕДЕНИЕ...........................................

   2. ХАРАКТЕРИСТИКА КОНТРОЛЛЕРА ВВОДА-ВЫВОДА АНАЛОГОВОЙ

      ИНФОРМАЦИИ.........................................

      2.1. Назначение и устройство контроллера...........

      2.2. Организация управления работой АЦП и ЦАП......

   3. СРЕДСТВА ПРОГРАММИРОВАНИЯ ВВОДА-ВЫВОДА АНАЛОГОВОЙ

      ИНФОРМАЦИИ.........................................

   4. СРЕДСТВА ИЗМЕРЕНИЯ ВРЕМЕНИ В ПЭВМ..................

      4.1. Назначение и функции таймера ПЭВМ.............

      4.2. Программные средства для измерения времени....

   5. Контрольные вопросы...........................

   6. СПИСОК ЛИТЕРАТУРЫ..................................

.





   1.ВВЕДЕНИЕ



   При решении задач автоматизации контроля и  управления  техни-

ческими системами как правило возникает необходимость сбора и об-

работки информации,представленной в виде аналоговых электрических

сигналов.Источником информации при этом служат первичные преобра-

зователи (датчики) ,преобразующие физические параметры системы  в

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

воздействие было представленно в аналоговой форме.

   Решение такого  рода  задач основано на использовании аналого-

цифровых (АЦП) и цифро-аналоговых (ЦАП) преобразователей.  Требо-

вания,предъявленные   к  выбору  средств  аналогового ввода-выво-

да,обусловлены,с одной стороны,характеристиками  объекта  контро-

ля(количество  и частотный спектр измеряемых параметров),а с дру-

гой стороны - необходимостью обеспечить совместимость (информаци-

онную,электрическую,конструктивную), с управляющей ЭВМ.

   В настоящее время применяют два варианта подключения  аналого-

вых устройств к ЭВМ.

    -непосредственно к системной магистрали ЭВМ;

    -с использованием  промежуточного  контроллера с  выходом на

     стандартный интерфейс (типа КАМАК,МЭК и т.п.)

   В данной работе используются встроенный контроллер ввода-выво-

да аналоговой информации pro411B в составе  IBM-совместимой  ПЭВМ

"МАЗОВИЯ".



   2. ХАРАКТЕРИСТИКА КОНТРОЛЛЕРА ВВОДА-ВЫВОДА АНАЛОГОВОЙ

      ИНФОРМАЦИИ pro411B.



   2.1.Назначение и устройство контроллера.



   Контроллер pro411B реализован в  виде  платы  для  компьютеров

класса  IBM  PC  XT/AT и предназначен для ввода-вывода аналоговых

сигналов с использованием АЦП и ЦАП.Плата контроллера размещается

внутри системного блока ПЭВМ,  занимая один из свободных разьёмов

расширения, предназначенных специально для установки дополнитель-

ного оборудования ПЭВМ. При этом обеспечиваются основные требова-

ния по конструктивной,  электрической и информационной  совмести-

мости контроллера с системной магистралью компьютера.Для подключе-

ния приёмников и  источников  аналоговых  электрических  сигналов

контроллер имеет специальный стандартизированный разъём, вынесен-

ный на заднюю панель системного блока.

   Структурная схема  контроллера  pro411B приведена на рис.1.

.



-------¬

¦      +-----T-------------------------------------------- ШУпр

¦ЦП/ОП +-----¦---------------T---------------------------- ШАдр

¦      +-----¦---------------¦-----------------T---------- ШДан

L-------     ¦               ¦                 ¦

     ---------               ¦                 ¦

     ¦                       ¦                 ¦

-----¦-----------------------¦-----------------¦--------------¬

¦----+---¬     --------------+-----------------+------------¬ ¦

¦¦       +-----+                   ДшА                      ¦ ¦

¦¦       +-----+                                            ¦ ¦

¦¦       ¦     L-----T----------T----------T----------T------ ¦

¦¦       ¦           ¦          ¦          ¦          ¦       ¦

¦¦       ¦     ------¦----------¦----------¦----------¦-----¬ ¦

¦¦       +-----+-----+----¬-----+----¬-----+----¬-----+----¬¦ ¦

¦¦       ¦     ¦¦   P0    ¦¦   P1    ¦¦   P2    ¦¦   P3    ¦¦ ¦

¦¦       +-----+L----------L----------L----------L----------¦ ¦

¦¦       ¦     L--------T-T-------------T---------------T---- ¦

¦¦       ¦              ¦ ¦             ¦               ¦     ¦

¦¦       +--------T-----¦-¦------T------¦-------¬       ¦     ¦

¦¦  БУ   +--------+-T---¦-¦------+-T----¦-------+-¬     ¦     ¦

¦¦       ¦        ¦ ¦   ¦ ¦      ¦ ¦    ¦       ¦ ¦     ¦     ¦

¦¦       ¦     ---+-+---+-+--¬---+-+----+---¬---+-+-----+--¬  ¦

¦¦       ¦     ¦             ¦¦             ¦¦             ¦  ¦

¦¦       ¦     ¦     АЦП     ¦¦    ЦАП      ¦¦   Таймер    ¦  ¦

¦¦       ¦     ¦             ¦¦             ¦¦             ¦  ¦

¦¦       ¦     L------T-------L------T-------L--------------  ¦

¦¦       ¦            ¦              ¦                        ¦

¦¦       ¦     -------+------¬       ¦                        ¦

¦¦       +-----+ Коммутатор  ¦       ¦                        ¦

¦¦       +-----+  каналов    ¦       ¦           pro411B      ¦

¦L--------     LT-T-T-------T-       ¦                        ¦

L---------------¦-¦-¦-------¦--------¦-------------------------

                ¦ ¦ ¦       ¦        ¦



                0 1 2      15       Вых





        Рис. 1. Структурная схема контроллера pro411B

.





Блок управления(БУ)  предназначен  для организации взаимодействия

контроллера с системной магисталью ПЭВМ и  обеспечивает  согласо-

ванную работу всех его элементов. Системная магистраль подключена

непосредственно к центральному процессору(ЦП) и оперативной памя-

ти (ОП) компьютера и состоит из трёх групп линий параллельной пе-

редачи:управления,  адреса и данных. Связь с контроллером pro411B

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

ЦП.

   Особую роль для организации обмена данными с процессором игра-

ют специальные регистры контроллера, называемые портами ввода-вы-

вода.  Каждый порт ввода-вывода имеет уникальный адрес. Процессор

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

адресу(ПЭВМ обеспечивает возможность адресовать до 65535 портов),

обращаться к любому порту ввода-вывода для чтения или записи дан-

ных. Контроллер pro411B имеет 4 однобайтных порта P0-P3 с адреса-

ми  300H-303H.  Адреса  соответствующих портов pro411B могут быть

изменены при помощи специальных  переключателей, расположенных на

плате.

   Таким образом,  чтобы передать или получить информацию от уст-

ройства,  прцессор  в соответствующих линиях магистрали формирует

управляющий сигнал(чтение или запись), устанавливает адрес требу-

емоего  порта и(в случае записи) посылает данные.  Дешифратор ад-

реса порта(ДшА) контроллера определяет,  с каким из портов затре-

бована связь,  а блок управления реализует операцию чтения данных

из магистрали в порт или выдаёт данные из порта в магистраль.

   С портами ввода-вывода связаны функциональные блоки контролле-

ра:  АЦП,ЦАП,таймер  и  коммутатор  каналов.  Коммутатор  каналов

обеспечивает  возможность подключения к АЦП нескольких источников

аналоговых сигналов. Таймер предназначен для настройки АЦП на тре-

буемую частоту опроса,  поддерживая режим автоматического запуска

через заданный прмежуток времени( от 18мкс до 65мс).

   Блок АЦП  контроллера pro411B обеспечивает преобразование нап-

ряжение-код методом последовательной аппроксимации и характеризу-

ется следующими параметрами:

    - разрядность кода:12 бит;

    - диапазон входного напряжения: -10..+10 В;

    - время преобразования: 15 мкс;

    - число коммутируемых каналов: 16.

   Блок АЦП реализует режим работы с автоматическим переключением

каналов,  а  также предоставляет возможность призводить как внеш-

ний (программный), так и внутренний (автоматический) запуск через

заданный интервал времени.

   Блок ЦАП контроллера имеет следующие характеристики:

   - разрядность кода: 12 бит;

   - диапазон выходного напряжения: -10..+10 В;

   - время стабилизации выходного напряжения: 500 нс;

   - скорость нарастания выходного напряжения: 0.5 В/мкс;

   - количество выходов: 1.



.





   2.2 Организация управления работой АЦП и ЦАП



   Как отмечалось выше,  связь ЦП ЭВМ с  контроллером  pro411B

организуется путём обмена данными с портами ввода-вывода, име-

ющими адреса  300H-303H.При этом ЦП является активной стороной

и  имеет  возможность в произвольные моменты времени выполнять

операции чтения данных из любого порта  или  записи  данных  в

порт.  Каждый  из  портов  предназначен для обмена информацией

строго определённого назначения и формата.  Более того, один и

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

зависимости от того, какая операция (чтение или запись) выпол-

няется.В  таблице  1 дано описание функций,  реализуемых путём

записи или чтения портов ввода-вывода контроллера pro411B.



                                                     Таблица 1

         Назначение портов ввода-вывода контроллера pro411B

------T--------T-----------------------T-------------------------¬

¦АДРЕС¦ОПЕРАЦИЯ¦        ФОРМАТ         ¦   НАЗНАЧЕНИЕ            ¦

¦ПОРТА¦        +--T--T--T--T--T--T--T--+                         ¦

¦     ¦        ¦ 7¦ 6¦ 5¦ 4¦ 3¦ 2¦ 1¦ 0¦                         ¦

+-----+--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ запись ¦b7¦b6¦b5¦b4¦b3¦b2¦b1¦b0¦Младшие 8 бит кода ЦАП   ¦

¦300H +--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ чтение ¦a7¦a6¦a5¦a4¦a3¦a2¦a1¦a0¦Младшие 8 бит кода АЦП   ¦

+-----+--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ запись ¦c3¦c2¦c1¦c0¦b ¦b ¦b9¦b8¦Старшие 4 бита кода ЦАП  ¦

¦     ¦        ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦и номер  канала АЦП      ¦

¦301H +--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ чтение ¦c3¦c2¦c1¦c0¦a ¦a ¦a9¦a8¦Старшие 4 бита кода АЦП  ¦

¦     ¦        ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦и  номер канала АЦП      ¦

+-----+--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ запись ¦ X¦ X¦ Z¦ D¦t3¦t2¦t1¦t0¦Установка режимов АЦП    ¦

¦302H +--------+--+--+--+--+--+--+--+--+-------------------------+

¦     ¦ чтение ¦ X¦ X¦ X¦ X¦ X¦ E¦ R¦ X¦Признаки  формирования   ¦

¦     ¦        ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦  ¦кода  АЦП                ¦

+-----+--------+--+--+--+--+--+--+--+--+-------------------------+

¦303H ¦ запись ¦произвольное значение  ¦Запуск АЦП на измерения  ¦

L-----+--------+--+--+--+--+--+--+--+--+--------------------------



   В таблице испоьзованы следующие обозначения:

   а11...а0 - биты кода измеренного напряжения на входе АЦП

              (0-4095);

   b11...b0 -  биты кода устанавливаемого напряжения на выходе

               ЦАП (0-4095);

   с3...с0 - номер канала АЦП (0-15);

   t3...t0 - номер эадаваемой временной задержки между  запус-

             ками АЦП в автоматическом режиме(0-15);

   D - бит установки режима автоматического запуска АЦП (D=1);

   Z - бит установки режима автоматического декрементирования

       номера канала АЦП (Z=1);

   R - бит  признака  готовности кода АЦП к считыванию (R=1 -

       преобразование закончено,  данные готовы к считыванию);

   E - бит признака ошибки набегания (E=1 -сформирован новый

        код АЦП при невостребованном старом);

   X - неиспользуемые разряды (устанавливаются в 0).



.





   3. СРЕДСТВА ПРОГРАММИРОВАНИЯ  ВВОДА-ВЫВОДА АНАЛОГОВОЙ

      ИНФОРМАЦИИ



   Программное управление  работой  контроллера  аналогового уст-

ройства осуществляется с  использованием  операций  чтения/записи

применительно к портам ввода-вывода.

   На языке ТурбоПаскаль для обращения к портам применяется  спе-

циальная  языковая конструкция Port[<адрес_порта>:word],обладающая

всеми свойствами массива значений типа byte,индексируемого по ад-

ресу порта в пределах 0..65535 (в десятичной системе) или

O..FFFF (в шестнадцатиричной). Ниже приведён пример использования

конструкции Port:

        var x,y:byte;

        var   a:word;

        begin

          a:=$300;

          x:=Port[a];  {чтение из порта с адресом a}

          y:=1;

          Port[$303]:=y  {запись в порт с адресом 303H}

          Port[$302]:=32+16 {

        end;





   4. СРЕДСТВА ИЗМЕРЕНИЯ ВРЕМЕНИ В ПЭВМ



   4.1.Назначение и функции таймера ПЭВМ



   Для контроля текущего времени и измерения временных интервалов

ПЭВМ имеет специальное устройство, называемое таймером[4]. Таймер

состоит из трёх идентичных независимых блоков, называемых канала-

ми. Канал 0 используется непосредственно для организации подсчёта

текущего времени,  а также для синхронизации  дисковых  операций.

Канал 1 управляет процессом регенерации оперативной памяти. Канал

2 используется для генерации звуковых сигналов.

   Вход каждого  канала таймера связан с генератором тактовых им-

пульсов ПЭВМ, при этом частота импульсов, подаваемых на вход тай-

мера Fвх постоянна и равна 1193180 Гц для всех типов ПЭВМ IBM. На

выходе канала таймера также  формируется  последовательность  им-

пульсов,частота которой Fвых зависит от значения D, записанного в

специальный 16-разрядный регистр "задержки" канала в соответствии

с выражением:

                    Fвых = Fвх/D

   Таким образом  таймер  осуществляет "деление" входной тактовой

частоты, реализуемое при помощи счётчика тактовых импульсов. Пер-

воначально  в регистр счётчика помещается число D,  которое затем

уменьшается на единицу каждый раз, когда импульс от тактового ге-

нератора пропускается через канал. Когда значение счётчика дости-

гает нуля,  канал таймера изменяет уровень выходного  сигнала  на

противоположный  и вновь загружает в счётчик число D,  после чего

процесс повторяется.

   Настройка каналов таймера на требуемую выходную  частоту  осу-

ществляется  программным путём при обращении к специальным портам

таймера(40H-42H).Обычно настройка производится автоматически  при

загрузке операционной системы,  для чего имеются специальные про-

цедуры базовой системы ввода-вывода (BIOS) ПЭВМ.  При этом в  ре-

гистр задвижки канала 0, используемого для подсчёта текущего вре-

мени,  записывается число D=65535(FFFFH), обеспечивающее значение

выходной частоты Fвых = 18.2 Гц.

   Следует отметить, что таймер работает независимо от ЦП, оказы-

вая,  в то же время,  постоянное воздействие на ЦП через  систему

аппаратных прерываний.  Механизм прерываний лежит в основе метода

подсчета текущего времени,  используемого в ПЭВМ. Метод иллюстри-

руется схемой, приведённой на рис.2.

.





                         -------------¬

                         ¦ Генератор  ¦

                         ¦ тактовых   ¦

                         ¦ импульсов  ¦

                         L-----T-------

                               ¦

                               ¦    Fвх=119380 Гц

                               ¦

                         ------+------¬

                         ¦  Таймер    ¦

                         ¦ (канал 0)  ¦

                         L-----T-------

                               ¦

                               ¦    Fвых=18.2 Гц

                               ¦

                         ------+------¬

                         ¦ Контроллер ¦

                         ¦ прерываний ¦

                         L-----T-------

                               ¦

                               ¦    IRQ 0

                               ¦

                         ------+------¬

                         ¦ Центральный¦

                         ¦  процессор ¦

                         L-----T-------

                               ¦

                               ¦    INT 8

                               ¦

                         ------+------¬

                         ¦ Программа  ¦

                         ¦ обработки  ¦

                         ¦ прерывания ¦

                         ¦    INT8    ¦

                         L-----T-------

                               ¦

                               ¦

                               ¦

                         ------+------¬

                         ¦СчТB=СчТB+1 ¦

                         L-------------



      Рис.2. Последовательность операций при подсчете текущего

             времени

.





   Импульсы с выхода канала 0  таймера  поступают  на  контроллер

прерываний ПЭВМ,  который вырабатывает сигналы прерывания с кодом

IRQ0,соответствующим прерыванию от таймера.  Прерывания возникают

18.2 раза в секунду, т.е. приблизительно каждые 55мс. ЦП, получив

прерывание,  приостанавливает работу и передаёт управление специ-

альной  программе  обработки  прерывания  от таймера INT8 в BIOS.

Программа обработки увеличивает на 1 значение 4-байтового счётчи-

ка   текущего  времени(СчТВ),  хранящегося  в  памяти  по  адресу

0040Н:006CН.

   Анализируя содержимое  счётчика  в  различные моменты времени,

можно измерять временные интервалы и определять текущее время су-

ток.Например,  если известны значения СчТВ n1 и n2,  полученные в

моменты t1 и t2, то величину интервала dt=t2-t1 можно вычислить

по формуле:

                dt=(n2 - n1)/18.2          (3.1)

   Обычно при загрузке операционной системы СчТВ обнуляется (ска-

занное  относится  к  ПЭВМ  типа  XT,  не имеющим часов реального

времeни с автономным источником питания), что соответствует уста-

новке текущего времени 0час 0мин 0.0сек или,  как принято обозна-

чать в DOS: 00:00:00.00. Максимальное значение, которое может со-

держать счетчик, соответствует 23:59:59.99 и равно

           ((23*60+59)*60+59)*18.2+99=1573039

   Любое значение СчТВ в интервале 0..1573039  может  интерпретироваться

как  текущее время суток после выполнения соответствующих арифмети-

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

средства  как  в  DOS,  так и в системах программирования (см. п.

4.2).Следует отметить, что программа обработки прерывания от тай-

мера  INT8 обеспечивает автоматический сброс значения СчТВ в ноль

при достижении максимального значения.



    4.2.Программные средства для работы с таймером ПВЭМ



   Программное прерывание   DOS   INT21H  содержит  две  функции,

обеспечивающие чтение и установку текущего времени суток и выпол-

няющие  необходимые  преобразования между значениями СчТВ и часа-

ми-минутами-секундами.  Время выдаётся с точностью до 0.01 секун-

ды,  но  поскольку счётчик времени обновляется с частотой в 5 раз

меньше,  то показание сотых долей секунды весьма приблизительное.

Функция 2CH выдаёт,  а функция 2DH -устанавливает время.  В обоих

случаях используются одни и те же регистры процессора:

               AH - номер функции;

               CH - часы(от 0 до 23);

               CL - минуты(от 0 до 59);

               DH - секунды(от 0 до 59);

               DL - сотые доли секунды(от 0 до 99).

   Функция установки  текущего  времени  производит запись в СчТВ

числа, соответствующего заданным значениям параметров CH...DL.

   Язык командного  процессора MS DOS содержит встроенную команду

time,  обеспечивающую чтение и установку текущего времени суток в

диалоговом режиме с использованием формата DOS.В ПЭВМ, не имеющих

часов с автономным питанием, рекомендуется выполнять команду time

перед началом каждого сеанса работы.

   Системы программирования на  языках  высокого  уровня(Паскаль,

Бейсик, Си) содержат собственные процедуры чтения и установки те-

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

по измерению времени.

   В системе Турбо Паскаль 5.5 для установки  и  чтения  текущего

времени предназначены процедуры SetTime и GetTime модуля DOS:

          SetTime(var Hour,Minute,Second,Sec100:word)

          GetTime(var Hour,Minute,Second,Sec100:word),

где Hour -часы,  Minute -минуты,  Second -секунды, Sec100 -сотые

доли секунды.

   Рассмотренные выше программные средства можно  использовать

для  измерения временных интервалов.  При этом,  однако,  если

нужно оценить интервал в несколько секунд,  потребуется отсле-

живать  изменение  сразу трeх переменных (Hour,Minute,Second).

Поэтому,  в данном случае,  целесообразно было бы располагать

одной  переменной  времени,  а именно значением СчТВ.  В Турбо

Паскале имеется возможность непосредственно прочитать содержи-

мое  СчТВ из памяти с использованием конструкции MemL.  Напри-

мер:

                   var TimeCount: longint;

                       . . .

                   TimeCount:=MemL[$0040 : $006C];



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

расчeту по формуле (3.1).



5. Контрольные вопросы



1.  Назовите основные функциональные блоки контроллера pro411B.

2.  Каковы режимы функционирования АЦП?

3.  Что такое цикл опроса, и от каких факторов зависит его деятельность?

4.  Что такое ошибка набегания?

5.  Каким образом определяется готовность АЦП к считыванию кода преобразованного напряжения?

6.  Объясните используемый принцип управления работ ЦАП.

7.  От каких факторов зависит быстродействие программы вывода данных через ЦАП?

8.  Каков механизм организации контроля текущего времени в ПЭВМ?

9.  Назовите способы определения длительности временных интервалов в ПЭВМ. Каково точность измерения?





6. Список литературы.



1.  Краус М., Кучбах Э., Вошми О. Г. Сбор данных в управляющих вычислительных системах: М.: Мир, 1987.-294 с.

2.  Блок 12-битного АЦП для компьютеров IBM PC XT/AT: -Научно-производственное предприятие proТЕСТ: Варшава, 1990.

3.  Микропроцессоры: в 3 кн. Кн. 25 средства сопряжения. Контролирующие и информационно-управляющие системы:/ В. Д. Вернер, И. В. Воробьёв, А. В. Горячев и др.; под ред Л. Н. Преснухина.-Мн. Выш. шк. ;1987 -303 с.

4.  Джордайн Р. Справочник программиста персональных компьютеров типа IBM PC XT/AT: - М. Финансы и статистика, 1991 - 544 с.





    

	 





_