ТЕХНИЧЕСКОЕ ОПИСАНИЕ МОДУЛЯ WAD-DAC16-4 (WAD-DAC16-4F) (4-х КАНАЛЬНОГО 16-РАЗРЯДНОГО ЦИФРО - АНАЛОГОВОГО ПРЕОБРАЗОВАТЕЛЯ С ГАЛЬВАНИЧЕСКОЙ ИЗОЛЯЦИЕЙ КАНАЛОВ ОТ ШИНЫ ПИТАНИЯ КОМПЬЮТЕРА, ОБЕСПЕЧИВАЮЩИЙ ЦИФРОВОЙ ВВОД-ВЫВОД ПО 24-м ЛИНИЯМ, ПРЕДНАЗНАЧЕНОГО ДЛЯ РАБОТЫ В ПЭВМ ТИПА IBM PC/AT на шине ISA, либо как выносная конфигурация с интерфейсом USB, либо RS-232, либо RS-485, либо LAN 10Мб.) В этом документе содержится описание и порядок программирования модуля цифро-аналогового преобразователя (в дальнейшем ЦАП). А также, приводится документ по использованию выносной модификации модуля. !!!!!!!!!ВНИМАНИЕ!!! ПРОЧТИТЕ ОБЯЗАТЕЛЬНО!!!!!!!!!!!! Данный файл документации и комплект демонстрационного программного обеспечения поставляются в ПОЛНОМ объеме НЕЗАВИСИМО от заказанной конфигурации платы. Конкретная конфигурация по прайсу зависит от букв, стоящих после полного названия модуля (см. перечисление функций конкретной конфигурации в прайс -листе). В случае обнаружения на приобретенном модуле нехватки какой-либо нужной Вам функции, упоминание о которой есть в этом документе и демо-программах (а при заказе Вы остановились на конфигурации, не поддерживающую эту функцию), обращайтесь к нам за доработкой. Модуль поддерживает работу ТОЛЬКО С ОДНИМ выбранным при заказе видом интерфейса, и если не оговаривается иное, то по умолчанию это шина ISA (встраиваемая в компьютер плата). Перед покупкой не выносной версии устройства - убедитесь, что в Вашем компьютере есть ISA-слот. Демо-программы, поставляемые бесплатно в комплекте служат для ДЕМОнстрации работоспособности модуля и демонстрации порядка программирования. Они НЕ предназначены для решения конкретной задачи заказчика. СОДЕРЖАНИЕ. 1. Технические характеристики цифроаналогового преобразователя. 1.1. Комплект поставки. 2. Конструктивные характеристики модуля. 3. Функциональная схема ЦАП 4. Принцип работы модуля. 5. Работа интерфейса. 5.1. Таблица соответствия адресов, используемых при обращении к плате и функций, выполняемых устройством. 5.2. Программирование таймера. 5.3. Предустановка каналов передачи. 5.4. Порядок программирования платы. 5.5. Примеры программирования ЦАП на TurboPascal. ПРИЛОЖЕНИЕ: РАСПРЕДЕЛЁННАЯ ШИНА ISA. Концепция построения и руководство по программированию 1. Технические характеристики ЦАП. Число выходных каналов ...................... 4 Число разрядов входного кода ................ 16 двоичных разрядов Вид входного кода ........................... дополняющий двоичный код Время установления выходного напряжения при изменении кода на 1МР до точности 0.0015 ... 1 мкс Cкорость изменения выходного напряжения ..... 9 В/мкс Дифференциальная нелинейность ............... 0.001 Интегральная нелинейность .................. 0.003 Погрешность усиления ........................ +/- 0.005 Погрешность установки нуля .................. +/- 0.004 Минимальный интервал изменения выходного напряжения при использовании : не более 2-х каналов ..................... 2 мкс 3-х и 4-х каналов ........................ 4 мкс Диапазоны выходного напряжения ............. +/-10.24 В, +/-5.12 В Величина единицы младшего разряда при работе в диапазонe -10.24В - +10.24В ............... 312.5 мкВ в диапазоне - 5.12В - + 5.12В ............... 156.2 мкВ Максимальный выходной ток каналов ........... 40 мА Максимально допустимый кратковременный выходной ток каналов (не более одной минуты). 70 мА Емкость буферного ОЗУ ....................... 32 К слов Выходное сопротивление,не более.............. 0.15 Ом Допустимая емкость нагрузки,не менее......... 1 нФ Пробивное напряжение изоляции ............... 4 кВ Температурный дрейф выходного напряжения : с установленной схемой термокомпенсации...... 0.00007/С без схемы термокомпенсации .................. 0.0004/С Порты ввода-вывода .......................... 3 х 8 bit Максимально допустимый нагрузочный ток портов цифрового ввода-вывода ............. 1.5 мА Ток,потребляемый от источника +5В ........... 300 мА Ток,потребляемый от источника +12В в режиме холостого хода.................... 200 мА в режиме максимально нагруженных выходов .. 600 мА Максимальная тактовая частота шины ISA ...... 13 МГц Максимальная частота переменного напряжения, формируемого платой (форма прямоугольная) ... 250 кГц Линии прерывания ............................ IRQ05,IRQ10,IRQ11,IRQ12 Базовый адрес платы ......................... 3х0,где х0,1,2,...,f. Габариты модуля ............................. 270 х 115 х 20 мм Используемая шина ……………………………………………………………….. ISA Используемый интерфейс в выносной конфигурации “BOX”………………………….. USB, либо RS-232, либо RS-485,LAN10Mb Габариты выносной модификации “BOX” …………………. 440x220x60 мм Питание выносной модификации “BOX” ………………... +5В, +12В (от компьютера) 1.1. Комплект поставки. В базовый (по умолчанию) комплект поставки входит: 1) Модуль WAD-DAC16-4 (WAD-DAC16-4F) .................... 1 шт. 2) Ответная часть разьема 37-pin ........................ 1 шт. 3) Диск с техническим о писанием и ПО ................. 1 шт. ДОПОЛНЯЮЩИЙ КОД 7fff . . 0000 ffff . . 8000 -+10.24B (+5.12В) . . . . - 0 B - -0.3125mB (-0.1562мВ) . . . . - -10.24B (-5.12В) 2. Конструктивные характеристики модуля. 2.1. Расположение разьемов и переключателей, установленных на плате. X1 1 X2 J1 1 РАЗЪЕМ Х1 Предназначен для снятия сигналов с выходов ЦАПа. Ниже показан вид на соединитель (снаружи), установленный на плате. Если на плате установлен разъем 'папа', маркировка на разъеме совпадает с рисунком, если 'мама' - доверять рисунку. 1 5 +-----------+ ¦ . . . . . ¦ ¦ . . . . ¦ ======================\---------/===== 6 9 +--------------+-------------------------+ ¦номер контакта¦ назначение ¦ +--------------+-------------------------+ ¦ 1 ¦ выход канала 0 адреса 0 ¦ 1 ¦ 2 ¦ выход канала 0 адреса 1 ¦ ¦ 3 ¦ выход канала 1 адреса 0 ¦ ¦ 4 ¦ выход канала 1 адреса 1 ¦ ¦ 5 ¦ незадействован ¦ ¦ 6 ¦ общий провод ¦ ¦ 7 ¦ общий провод ¦ ¦ 8 ¦ общий провод ¦ ¦ 9 ¦ общий провод ¦ +--------------+-------------------------+ +-----------+ незадействован ¦ 5 . ¦ ¦ .9 ¦ канал 1 адрес 1 ¦ 4 . ¦ ¦ .8 ¦ канал 1 адрес 0 ¦ 3 . ¦ ¦ .7 ¦ канал 0 адрес 1 ¦ 2 . ¦ ¦ .6 ¦ канал 0 адрес 0 ¦ 1 . ¦ +-----------+ общий общий общий общий Разъем Х2 На разъем выведены линии цифрового ввода-вывода. Ниже показан вид на соединитель (снаружи), установленный на плате. Если на плате установлен разъем 'папа', маркировка на разъеме совпадает с рисунком, если 'мама' - доверять рисунку. 1 13 +---------------------------+ ¦ . . . . . . . . . . . . . ¦ ¦ . . . . . . . . . . . . ¦ ===\-------------------------/====================== 14 25 +------------------+-----------------------+ ¦ номер контакта ¦ назначение ¦ +------------------+-----------------------+ ¦ 1 ¦ порт А линия 0 ¦ ¦ 2 ¦ порт А линия 1 ¦ ¦ 3 ¦ порт А линия 2 ¦ ¦ 4 ¦ порт А линия 3 ¦ ¦ 5 ¦ порт А линия 4 ¦ ¦ 6 ¦ порт А линия 5 ¦ ¦ 7 ¦ порт А линия 6 ¦ ¦ 8 ¦ порт А линия 7 ¦ ¦ 9 ¦ порт В линия 0 ¦ ¦ 10 ¦ порт В линия 1 ¦ ¦ 11 ¦ порт В линия 2 ¦ ¦ 12 ¦ порт В линия 3 ¦ ¦ 13 ¦ порт В линия 4 ¦ ¦ 14 ¦ порт В линия 5 ¦ ¦ 15 ¦ порт В линия 6 ¦ ¦ 16 ¦ порт В линия 7 ¦ ¦ 17 ¦ порт С линия 0 ¦ ¦ 18 ¦ порт С линия 1 ¦ ¦ 19 ¦ порт С линия 2 ¦ ¦ 20 ¦ порт С линия 3 ¦ ¦ 21 ¦ порт С линия 4 ¦ ¦ 22 ¦ порт С линия 5 ¦ ¦ 23 ¦ порт С линия 6 ¦ ¦ 24 ¦ порт С линия 7 ¦ ¦ 25 ¦общий провод компьютера¦ +------------------+-----------------------+ +-----------+ ¦13 . ¦ ¦12 . .25 ¦ ¦11 . .24 ¦ ¦10 . .23 ¦ ¦ 9 . .22 ¦ ¦ 8 . .21 ¦ ¦ 7 . .20 ¦ ¦ 6 . .19 ¦ ¦ 5 . .18 ¦ ¦ 4 . .17 ¦ ¦ 3 . .16 ¦ ¦ 2 . .15 ¦ ¦ .14 ¦ порт А линия 0 ¦ 1 . ¦ +-----------+ порт порт порт порт порт порт порт порт порт порт порт порт В В В В В А А А А А А А линия линия линия линия линия линия линия линия линия линия линия линия 4 3 2 1 0 7 6 5 4 3 2 1 общий провод порт С линия порт С линия порт С линия порт С линия порт С линия порт С линия порт С линия порт С линия порт В линия порт В линия порт В линия компьютера 7 6 5 4 3 2 1 0 7 6 5 ДЖАМПЕРЫ (ПЕРЕКЛЮЧАТЕЛИ) J1 Джамперы (переключатели) предназначены для установки: а) базового адреса устройства; б) номеров линий прерываний, используемых устройством. Данные установки определяются следующим положением джамперов: 8 7 6 5 4 3 2 1 +-+-+-+-+ +-+-+-+-++-----------------------------+------------------+ ¦0¦0¦0¦0¦ ¦0¦0¦0¦0¦¦ ¦Положение джампера¦ ¦0¦0¦0¦0¦ ¦0¦0¦0¦0¦¦ Наименование ключей +--------+---------+ +-+-+-+-+ +-+-+-+-+¦ ¦Замкнут ¦ Разомкн.¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------------------+--------+---------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-+Сравнение с линией адреса A04¦ лог.0 ¦ лог.1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-+-+Сравнение с линией адреса A05¦ лог.0 ¦ лог.1 ¦ ¦ ¦ ¦ ¦ ¦ +-+-+-+Сравнение с линией адреса A06¦ лог.0 ¦ лог.1 ¦ ¦ ¦ ¦ ¦ +-+-+-+-+Сравнение с линией адреса A07¦ лог.0 ¦ лог.1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------------------+--------+---------+ ¦ ¦ ¦ ¦ ++-+-+-+-+-------------------+ ¦ ¦ ¦ ¦ ¦З З З З ¦ включен адрес 300 ¦ ¦ ¦ ¦ ¦ ¦З З З Р ¦ включен адрес 310 ¦ ¦ ¦ ¦ ¦ ¦З Р Р З ¦ включен адрес 360 ¦ ¦ ¦ ¦ ¦ ¦З Р Р Р ¦ включен адрес 370 ¦ ¦ ¦ ¦ ¦ ¦Р Р З З ¦ включен адрес 3c0 ¦ ¦ ¦ ¦ ¦ +--------+-------------------+ ¦ ¦ ¦ ¦+--------------------------+------------------+ ¦ ¦ ¦ ¦¦ ¦Положение джампера¦ ¦ ¦ ¦ ¦¦ Наименование ключей +--------+---------+ ¦ ¦ ¦ ¦¦ ¦Замкнут ¦ Разомкн.¦ ¦ ¦ ¦ ¦+--------------------------+--------+---------+ ¦ ¦ ¦ ++Включение прерывания IRQ05¦ вкл ¦ выкл ¦ ¦ ¦ +-++Включение прерывания IRQ10¦ вкл ¦ выкл ¦ ¦ +-+-++Включение прерывания IRQ11¦ вкл ¦ выкл ¦ +-+-+-++Включение прерывания IRQ12¦ вкл ¦ выкл ¦ ¦ ¦ ¦ ¦+--------------------------+--------+---------+ ++-+-+-++---------------------------+ |Р Р Р Р¦ прерывние не используется ¦ |Р Р Р З¦ включено прерывание IRQ05 ¦ |Р Р З Р¦ включено прерывание IRQ10 ¦ |Р З Р Р¦ включено прерывание IRQ11 ¦ |З Р Р Р¦ включено прерывание IRQ12 ¦ +-------+---------------------------+ В случае модификации платы с переключателями: Цветовая метка 8 7 6 5 4 3 2 1 +--+--+--+--+--+--+--+--+ ¦ Верхнее положение (В) ¦ +--------------------------+-------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Номер и наименование ¦ Положение¦ ¦ Нижнее положение (Н) ¦ ¦ ключей ¦переключателя¦ +-+--+--+--+--+--+--+--++ ¦ переключателя JP1 ¦Верхнее|нижнее ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------------------------+-------+-----+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--+1.Линия прерывания IRQ12 | выкл.¦вкл. ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--+--+2.Линия прерывания IRQ11 | выкл.¦вкл. ¦ ¦ ¦ ¦ ¦ ¦ +--+--+--+3.Линия прерывания IRQ10 ¦ выкл.¦вкл. ¦ ¦ ¦ ¦ ¦ +--+--+--+--+4.Линия прерывания IRQ5 ¦ выкл.¦вкл. ¦ ¦ ¦ ¦ +--+--+--+--+--+5.Линия адреса A07 ¦ лог.1 ¦лог.0¦ ¦ ¦ +--+--+--+--+--+--+6.Линия адреса A06 ¦ лог.1 ¦лог.0¦ ¦ +--+--+--+--+--+--+--+7.Линия адреса A05 ¦ лог.1 ¦лог.0¦ +--+--+--+--+--+--+--+--+8.Линия адреса A04 ¦ лог.1 ¦лог.0¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------------------------+-------+-----+ +-+--+--+--+--+--+--+--+--+--------------------------+ ¦ Н Н Н Н Х Х Х Х ¦ включен адрес 300 ¦ ¦ Н Н Н В Х Х Х Х ¦ включен адрес 310 ¦ ¦ Н В В Н Х Х Х Х ¦ включен адрес 360 ¦ ¦ Н В В В Х Х Х Х ¦ включен адрес 370 ¦ ¦ В В В Н Х Х Х Х ¦ включен адрес 3c0 ¦ ¦ Х Х Х Х Н В В В ¦ включено прерывание IRQ05¦ ¦ Х Х Х Х В Н В В ¦ включено прерывание IRQ10¦ ¦ Х Х Х Х В В Н В ¦ включено прерывание IRQ11¦ ¦ Х Х Х Х В В В Н ¦ включено прерывание IRQ12¦ +-------------------------+--------------------------+ 3. Функциональная схема ЦАП. DATA BUS ----- --- DATA BUFF DATA ----- ---- ----- DATA TIM IBM ----- PC ----ADR ----- PLD DATA ----- ---- DATA RAM ---- DAC1 ---- RG DATA CH0 ---- -- CH0 ADR0 ---- -- CH0 ADR1 -- DATA CH0 -- DATA CH1 CLK ---- RG -CH1 ADR0 DATA CH1 ---- -CH1 ADR1 ---- -- DAC2 DAC3 CONTROL BUS PS --+13.5V -- GND ---13.5V DAC4 BUFF - буфер шины данных TIM - таймер PLD - программируемая логическая матрица RAM - буферное ОЗУ RG - сдвиговый регистр PS - импульсный преобразователь напряжения DАC1-DАC4 - ЦАПы 1-4 4. Принцип работы модуля. Модуль построен по принципу последовательной передачи данных по двум независимым каналам в гальванически изолированную часть схемы, в которой установлены цифроаналоговые преобразователи с буферными усилителями. Передача информации осуществляется путем загрузки 16-ти разрядов данных в сдвиговые регистры и вывода их в последовательном виде на схему передачи, обеспечивающей гальваническую развязку. В каждом канале передачи возможна адресация поступающих данных двум микросхемам ЦАП. Поэтому физический поток данных называется КАНАЛОМ ПЕРЕДАЧИ, а тот один из двух ЦАПов, которому адресован этот поток, является АДРЕСОМ КАНАЛА. Внутренняя шина данных интерфейса работает с временным разделением каналов, загружая данные в сдвиговые регистры за время 100 нс и оставаясь свободной остальную часть времени, в то время как процесс передачи 16-ти разрядов данных занимает 2 мкс. Такая организация позволяет во время воспроизведения переменного сигнала из ОЗУ установить в определенных каналах постоянное напряжение, не нарушая процесс воспроизведения данных из ОЗУ по другому каналу. Корректность такого вмешательства контролирует интерфейс, задерживая сигнал обращения компьютера в случае, если в данный момент происходит загрузка данных в сдвиговый регистр и внутренняя шина данных занята. Таким образом, параллельно передается информация по двум каналам, не увеличивая общего времени передачи. Установленное на плате ОЗУ емкостью 32К слов разбито на четыре равных подобласти по 8К слов, которые называются БАНКАМИ ДАННЫХ. Каждый из этих банков можно программно подключать к любому из ЦАПов, запрограммировав соответствующим образом РЕГИСТР СТАТУСА. Регистр статуса хранит информацию о том, использовать ли данный банк данных для передачи, по какому адресу и для какого канала. Поскольку банка данных четыре, то в регистр для работы необходимо записать 4 байта. Адрес, по которому записывается состояние этого регистра один (3x1), два младших разряда данных являются адресными для этого регистра, а старшая тетрада байта является информационной. Для записи банка данных ОЗУ включается режим записи, а затем пословным обращением по порту 3х0 записывается 0-й банк, по 3х2- 1-й , по 3х4- 2-й, по 3х6- 3-й. Адрес ОЗУ при этом инкрементируется автоматически. Схема позволяет подключить любое количество банков к любому каналу, и при этом можно все 32К использовать для одного канала, но при этом необходимо учитывать, что чтение ОЗУ происходит в последовательности:значение из 0-го банка,значение из 1-го банка,значение из 2-го банка и т.д.,поэтому перед записью необходимо разбить массив данных на: 1-е значение для первого банка, второе для второго и т.д., а затем записать отдельно 0-й банк, затем 1-й, 2-й и 3-й. После включения режима воспроизведения схема переходит в режим автоматической передачи данных в аналоговую часть схемы. Передача осуществляется в последовательном виде по двум каналам данных (если включена передача по двум каналам) через оптронную развязку со сдвигом во времени, равном полови- не интервала между соседними значениями воспроизводимого сигнала(установленном в таймере).Данные от каждого канала передачи подключены к двум микросхемам ЦАП. По сигналу тактовой частоты (общего для всех 4-х каналов) происходит прием данных во внутренний сдвиговый регистр микросхем ЦАПов.Исполнение этих данных наступает по приходу отрицательного фронта сигнала загрузки,раздельного для всех четырех каналов и приходящему также через гальваническую развязку. В случае передачи значений из компьютера в канал (без ОЗУ) слово данных загружается прямо в сдвиговый регистр и после окончания цикла передачи (2мкс) выход нужного ЦАПа начнет устанавливать новое значение. Функции управления, дешифрации, формирования сигналов чтения и записи в ОЗУ и открывания буфера шины данных, обеспечение циклов передачи и формирование сигнала загрузки в сдвиговые регистры,а так-же сигналов загрузки в ЦАПы, обслуживание сигналов от таймера(интервал запуска и количество точек в периоде), включение аналогового питания, формирование сигналов компьютеру I/O CS16 и I/O CH RDY обеспечивается применением специально запрограммированного чипа типа 85C090 (PPLD910). 5. Работа интерфейса. При обращении к плате ЦАП происходит дешифрация адреса. Для адресации модуля используются десять младших разрядов шины адреса компьютера. Для работы ЦАП необходимо адресное пространство размером в 16 адресов. ЦАП может работать со следующими диапазонами адресов: 300h...30fh ... ... 3e0h...3efh 3f0h...3ffh Это можно обозначить как 3x0...3xf, где x=0,1,..e,f. Начальный адрес каждого поддиапазона называется базовым адресом. Выбор поддиапазона осуществляется с помощью четырех переключателей (VDM1-8), которыми устанавливаются разряды А4...А7 адресов, используемых при обращении к данному модулю. Так, для установки базового адреса 300h, необходимо установить джампера JP1 N:1-4 в замкнутое состояние ( или ключи 5,6,7,8 переключателя в нижнее положение). Выбор функции ЦАП, выполняемой при данном обращении к плате, осуществляется путем дешифрации младших разрядов адреса A0...A3. 5.1 Таблица соответствия адресов и функций,выполняемых устройством. +-------+-----------------------------------------------------------+ ¦ адрес ¦ Наименование команд и функции устройства ¦ ¦ (h) ¦ ¦ +-------+-----------------------------------------------------------+ ¦ 3x0 ¦ Адрес программирования банка 0 ОЗУ или канала 0 по адресу0¦ ¦ 3x2 ¦ Адрес программирования банка 1 ОЗУ или канала 0 по адресу1¦ ¦ 3x4 ¦ Адрес программирования банка 2 ОЗУ или канала 1 по адресу0¦ ¦ 3x6 ¦ Адрес программирования банка 3 ОЗУ или канала 1 по адресу1¦ +-------+-----------------------------------------------------------+ ¦ 3х1 ¦ Регистр состояния ¦ ¦ ¦ Соответствие записываемых данных в регистр статуса ¦ ¦ ¦ и их функциональным назначением приведено ниже: ¦ ¦ ¦ D7 D6 D5 D4 D3 D2 D1 D0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--+- номер банка ОЗУ ¦ ¦ ¦ ¦ ¦ +------------- номер канала передачи ¦ ¦ ¦ ¦ +---------------- адрес канала ¦ ¦ ¦ +------------------- 1- передача разрешена ¦ ¦ ¦ 0- передача запрещена ¦ +-------+-----------------------------------------------------------+ ¦ 3х3 ¦ Сброс счетчика адреса ОЗУ (при этом D0 должен быть = 1) ¦ +-------+-----------------------------------------------------------+ ¦ 3х5 ¦ Режим воспроизведения/записи, где ¦ ¦ ¦ D0 = 1 - воспроизведениe ¦ ¦ ¦ D0 = 0 - запись в ОЗУ ¦ +-------+-----------------------------------------------------------+ ¦ 3х7 ¦ Аналоговое питание включить/выключить, где ¦ ¦ ¦ D0 = 1 - питание включить ¦ ¦ ¦ D0 = 0 - питание выключить ¦ +-------+-----------------------------------------------------------+ ¦ 3x8 ¦ Счетчик канала 0 таймера ( количество точек в периоде ) ¦ ¦ 3x9 ¦Счетчик канала1 таймера(время формирования одного значения)¦ ¦ 3xa ¦ Счетчик канала 2 таймера ( -//-(каскадирован с каналом 1))¦ ¦ 3xb ¦ Управляющий байт таймера ( см. П.5.2 ) ¦ +-------+-----------------------------------------------------------+ ¦ 3хс ¦ Порт А схемы ввода-вывода ¦ ¦ 3хd ¦ Порт В схемы ввода-вывода ¦ ¦ 3xe ¦ Порт С схемы ввода-вывода ¦ ¦ 3xf ¦ Управляющий байт схемы ввода-вывода(см.описание программи-¦ ¦ ¦ рования микросхемы К580ВВ55 (8255) в литературе) ¦ +-------+-----------------------------------------------------------+ Примечание: Запись в ОЗУ и прямая запись значений в каналы производится пословно, остальные команды байтовые. 5.2 Программирование таймера. Таймер предназначен для формирования заданного числа точек в периоде (канал 0) и формирования длительности одной 'полочки' в сигнале (каналы 1,2 включенные каскадно). Все три счетчика используют режим работы таймера N:4 При этом управляющие слова таймера следующие: Канал 0- $34 Канал 1$74 Канал 2- $b4 Длительность одного значения на выходе ЦАПа расчитывается следующим образом: T = 0,5 (мкс) * N(1) * N(2) при одновременном использовании 4-х выходов и T = 0,25(мкс) * N(1) * N(2) при времени меньше 5мкс и при использовании одного ЦАПа или двух, но работающих по разным каналам. N(1)-число,записанное в счетчик канала 1. N(2)-число,записанное в счетчик канала 2. Последовательность программирования таймера следующая: вначале записывается управляющее слово любого канала, а затем записывается содержимое счетчика этого канала. Запись в счетчик делается побайтно, вначале младший байт, затем старший, независимо от того равен последний нулю или нет. Максимальное число, которое можно занести в каждый из трех счетчиков равно 32768. Пример программирования таймера: port[$30b]:=$34; port[$308]:=$0f; port[$308]:=$00; port[$30с]:=$74; port[$309]:=$02; port[$309]:=$00; port[$30d]:=$b4; port[$30а]:=$08; port[$30а]:=$00; {управляющее слово канала 0} {младший байт канала 0 } {старший байт канала 0 } {управляющее слово канала 1} {младший байт канала 1 } {старший байт канала 1 } {управляющее слово канала 2} {младший байт канала 2 } {старший байт канала 2 } 5.3 Предустановка каналов передачи данных. При использовании в качестве элементов, обеспечивающих передачу управляющих сигналов в гальванически развязанную часть схемы импульсных трансформаторов, необходимо после включения аналогового питания произвести предустановку триггеров, стоящих в изолированной части схемы. Для этого необходимо сформировать все четыре сигнала записи и передать данные, содержащие как нули, так и единицы. При этом схема должна находиться в режиме воспроизведения. Рекомендуемый порядок предустановки следующий: port[$307]:=$01; { Delay(200); port[$305]:=$01; { portw[$300]:=$0f0f; portw[$304]:=$0f0f; portw[$302]:=$0f0f; portw[$306]:=$0f0f; 5.4. питание включить } режим воспроизведения } Порядок программирования платы. 1. Включить аналоговое питание. 2. Произвести предустановку каналов передачи данных (см.П 5.3) 3. Запрограммировать таймер. 4. Включить режим записи. 5. Сбросить счетчик адреса ОЗУ. 6. Произвести запись информации в нужный банк данных путем последовательной записи 16-ти разрядных данных. Адрес банка определяется по таблице. Максимальный обьем банка 2048 16-ти разрядных значений. 7. Если необходимо использовать другие банки данных, повторить П.5 и П.6 8. Сбрoсить счетчик адреса ОЗУ. 9. Запретить/разрешить передачу данных банком, задать канал и адрес передачи этого банка. Данный пункт повторяется для всех четырех банков. 10. Включить режим воспроизведения. 11. Если необходимо установить в нужном канале по определенному адресу постоянное напряжение, то ни одному банку не должно быть дано разрешение на работу по этому каналу с этим адресом. В режиме воспроизведения по этому адресу один раз записывается нужное значение. Точно так-же в режиме воспроизведения из ОЗУ в нужные моменты времени можно вставить свои значения в воспроизводимый сигнал без нарушения данных в ОЗУ и на время, определяемое интервалом, записанном в таймере. 12. После завершения работы выключить аналоговое питание. Во время записи новых данных выходные напряжения каналов сохраняют прежние значения. После выключения аналогового питания данные о формируемых сигналах сохраняются (в режиме чтения из ОЗУ), поэтому достаточно включить питание и через 0.04 секунды ЦАПы начнут формировать прежние формы сигналов. Программировать каналы можно при выключенном говом питании. анало- При формировании только постоянных напряжений (ОЗУ не используется) для полного исключения помех в выходном сигнале рекомендуется остановить работу таймера (если он был предварительно запрограммирован). Для этого достаточно записать управляющее слово канала 1, не программируя счетчик этого канала. 5.5 Примеры программирования ЦАП на TurboPascal. ПРИМЕР ПРОГРАММИРОВАНИЯ МОДУЛЯ БЕЗ ИСПОЛЬЗОВАНИЯ ОЗУ uses Crt; begin port[$307]:=$01; Delay(200); {предустановка} port[$305]:=$01; { питание включить } { режим воспроизведения } portw[$300]:=$0f0f; portw[$304]:=$0f0f; portw[$302]:=$0f0f; portw[$306]:=$0f0f; port[$301]:=$00; port[$301]:=$11; port[$301]:=$22; port[$301]:=$33; { { { { запретить запретить запретить запретить port[$305]:=$01; { режим воспроизведения portw[$300]:=$0000; portw[$302]:=$7fff; portw[$304]:=$8000; portw[$306]:=$c000; { { { { по по по по адресу адресу адресу адресу адресу адресу адресу адресу 0 0 1 1 0 0 1 1 канала канала канала канала канала канала канала канала 0 1 0 1 0 1 0 1 из из из из банка банка банка банка 0 1 2 3 } } } } } установить 0В } установить +10.24В} установить -10.24В} установить -5.12В } end. (программа входит в комплект поставки (DEMO/post.pas)) ПРИМЕР ПРОГРАММИРОВАНИЯ МОДУЛЯ C ИСПОЛЬЗОВАНИЕМ ОЗУ uses Crt; var w:word; i,j,l,m,n,k,kk:integer; a,b:byte; mm:real; nn,ii:word; {300-кан 0 адр 0 } {302-кан 0 адр 1 } {303-сброс счетчика адресов } {304-кан 1 адр 0 } {305-PL/REC } {306-кан 1 адр 1 } begin {307-регистр power ON/OFF } {301-статус каналов,где } port[$307]:=$01;{питание включить}{ D1 D0 - Bank RAM } Delay(200); { D4 - Chanel Transfer } { D5 - Adres Chanel } {D6 - Enable/Disabel transfer} { программирование таймера } port[$30b]:=$34; {управляющее слово канала 0} port[$308]:=$ff; {младший байт канала 0 } port[$308]:=$0f; {старший байт канала 0 } port[$30b]:=$74; {управляющее слово канала 1} port[$309]:=$02; {младший байт канала 1 } port[$309]:=$00; port[$30b]:=$b4; port[$30a]:=$08; port[$30a]:=$00; port[$305]:=0; {старший байт канала 1 } {управляющее слово канала 2} {младший байт канала 2 } {старший байт канала 2 } { запись ОЗУ } port[$303]:=01; { сброс счетчика адреса } for i:=0 to 2047 do portw[$300]:=Round(32767*sin(2*Pi/2047*i)); port[$303]:=01; { сброс счетчика адреса } for i:=0 to 2047 do portw[$302]:=Round(kk+64*i); port[$303]:=01; { сброс счетчика адреса } for i:=0 to 2047 do portw[$304]:=Round(32767*sin(2*Pi/(2047/4)*i)); port[$303]:=01; { сброс счетчика адреса } for i:=0 to 2047 do portw[$306]:=Round(15000*sin(2*Pi/(2047/8)*i)*(sin(2*Pi/2047*i)+1.15) ); port[$303]:=01; { сброс счетчика адреса } port[$305]:=1; port[$301]:=$40; port[$301]:=$51; port[$301]:=$72; port[$301]:=$93; { { { { { воспроизведение } разрешить разрешить разрешить разрешить по по по по адресу адресу адресу адресу 0 0 1 1 канала канала канала канала 0 1 0 1 данные данные данные данные из из из из банка банка банка банка 0 1 2 3 } } } } end. (программа входит в комплект поставки (DEMO/RAM4.pas)) ===================================================================== РАСПРЕДЕЛЁННАЯ ШИНА ISA Концепция построения и руководство по программированию (API Isabox.dll) 2006 СОДЕРЖАНИЕ ВВЕДЕНИЕ ................................................................... 15 1. КОНЦЕПЦИЯ ПОСТРОЕНИЯ ШИНЫ ............................................... 15 2. ФУНКЦИИ ISABOX.DLL ...................................................... 17 2.1. ФУНКЦИИ РЕГИСТРАЦИИ И СБОРКИ ................................................ 18 2.2. СЕРВИСНЫЕ ФУНКЦИИ ......................................................... 19 2.3. ФУНКЦИИ ДОСТУПА К ПОРТАМ ШИНЫ ISA ........................................... 20 3. ПРИМЕР СБОРКИ ШИНЫ И ДОСТУПА К ПОРТАМ ................................... 22 Введение С развитием вычислительной техники и постоянного роста потребностей в высокоскоростных устройствах производители персональных компьютеров отказываются от таких периферийных узлов как шина ISA и последовательных портов RS-232, LPT. По этой причине приходится снимать с производства проверенное временем не дорогое, но надежное оборудование, использующее эти интерфейсы. Стоимость PCI –плат по сравнению с платами на ISA выше в несколько раз, но проблема заключается ещё и в том, что не всегда нужна высокая производительность PCI –плат. Компания «АКОН» предлагает альтернативный вариант шины ISA, построенной на контроллерах ISA-BOX. Это внешняя распределенная шина, которая состоит из одного или нескольких контроллеров в зависимости от задач, которые управляют подключенными к ним платами ISA. Программное обеспечение верхнего уровня представляет набор внешних контроллеров как единое целое, т.е. как одну шину. Собранная таким образом внешняя шина совместима с платами всех производителей. К особенностям такого решения можно отнести отсутствие отработки прерываний и каналов прямого доступа к памяти. К преимуществам то, что шина собрана на внешних модулях (при этом не нужно открывать корпус компьютера) и то, что её можно собирать даже в том случае, если на компьютере есть слоты ISA, но в недостаточном количестве. 1. Концепция построения шины Узловые контроллеры ISA-BOX могут подключаться к таким интерфейсам как RS232, RS-485, USB, Ethernet (витая пара). Рис.1 Пример построения распределенной шины Управление контроллерами берет на себя библиотека Isabox.dll. Порядок настройки шины заключается в том, что в библиотеке регистрируются интерфейсы, к которым подключены контроллеры и сами контроллеры. Если контроллер подключен к интерфейсу RS-232, RS-485 или USB, то его адреса лежат в диапазоне от 1 до 255. Для контроллеров подключенных к LAN назначаются IP-адреса. Если адрес контроллера не известен, то его можно узнать с помощью программы Isabox Administrator, вызвав пункт меню «Поиск». (См. описание на программу IsaboxAdm). При этом к указанному интерфейсу должен быть подключен ТОЛЬКО ОДИН контроллер, потому что в этом режиме посылаются широковещательные запросы. Для RS/USB это адрес 0x00, а для LAN 0xFFFFFFFF. Из прикладной программы перед началом сборки шины нужно вызвать функции ibcClearInterfaceList и ibcClearControllerList для очистки реестра интерфейсов и контроллеров. Для регистрации интерфейсов вызываются функции ibcOpenInterface и ibcOpenLanInterface. Первая функция вызывается при регистрации COM-порта. Контроллеры с USB интерфейсом создают при подключении виртуальный СОМ-порт, поэтому эта функция вызывается по тем же правилам. Вторая функция вызывается в том случае, если есть контролеры, подключенные к LAN. Обе функции при успешном выполнении возвращают идентификатор интерфейса. Этот идентификатор используется при регистрации контроллеров. Для регистрации контроллеров вызывается функция ibcOpenController. При регистрации контроллера нужно указать идентификатор интерфейса, к которому подключен контроллер, адрес контроллера и диапазон адресов шины ISA, которые он будет обслуживать. При регистрации контроллеров адреса шины ISA нужно распределять так чтобы они не перекрывались с адресами, зарегистрированными на других контроллерах, и не выходили за диапазон 0х300..0x3FF. Если у контроллера LAN интерфейс, то в этом случае запрещается использовать на нем диапазон адресов 0x380..0x39F, потому что в этом диапазоне работает микросхема драйвера сети Rtl8019AS. Если есть контроллеры, подключенные к LAN, то нужно вызвать функцию ibcSetLocalPort чтобы указать номер порта на компьютере. После этих манипуляций вызывается функция ibcControl, которая производит подключение к COM-портам и открывает UDP-сокет. Теперь шина ISA собрана и готова к использованию. 2. Функции Isabox.dll Весь набор функций библиотеки Isabox.dll можно разделить на три группы: № Группы 1 2 3 Функции функции регистрации и сборки ibcSetLocalPort ibcGetLocalPort ibcOpenInterface ibcOpenLanInterface ibcOpenController ibcClearControllerList ibcClearInterfaceList ibcControl Сервисные функции ibcGetControllerProfile ibcGetObjectList ibcFirstObject ibcNextObject ibcEofObject ibcGetOncObject ibcSetRsCfg ibcGetRsCfg ibcSetLanCfg ibcGetLanCfg ibcSaveToFlash ibcRestoreFromFlash Функции доступа к портам шины ISA ibcReadPort ibcWritePort ibcReadPortW ibcWritePortW ibcExReadPort ibcExWritePort ibcExReadPortW ibcExWritePortW 2.1. Функции регистрации и сборки ibcClearInterfaceList ibcClearControllerList Очистка реестра интерфейсов и контроллеров void ibcClearControllerList(void); void ibcClearInterfaceList(void); Параметры: отсутствуют; ibcOpenInterface Регистрация COM-порта unsigned long ibcOpenInterface(unsigned char ComPort, unsigned long Baudrate, HANDLE OpenPortHandle); Параметры: 1. ComPort – номер COM-порта; (0 - COM1, 1 - COM2 и т.д.); 2. Baudrate – скорость обмена; (1200 – 115200); 3. OpenPortHandle – если есть необходимость подключить к одному порту различные устройства (на RS-485), то этот порт нужно открыть до его регистрации в библиотеке и хендл открытого порта передать третьим параметром. Если такой надобности нет, то прировнять его к NULL. Возвращаемый параметр: идентификатор регистрации контроллеров. (См. ниже) ibcOpenLanInterface интерфейса. Используется при Используется при Регистрация LAN интерфейса unsigned long ibcOpenLanInterface(void); Параметры: отсутствуют Возвращаемый параметр: идентификатор регистрации контроллеров. (См. ниже) интерфейса. ibcOpenController Регистрация контроллера unsigned long ibcOpenController(unsigned unsigned unsigned unsigned long long short short InterfaceHandle, Address, StartAddress, StopAddress); Параметры: 1. InterfaceHandle – идентификатор интерфейса возвращаемый функциями регистрации интерфейсов; 2. Address – адрес контроллера; ( 1 – 255 для RS, 0 – широковещательный) пример для LAN = 0xC0A80102 = 192.168.1.2; 3. StartAddress, StopAddress – диапазон адресов шины ISA которые будет обслуживать контроллер. Возвращаемый параметр: идентификатор контроллера. Используется при вызове сервисных функций для получения дополнительной информации о контроллере. (См. ниже) ibControl Включение/выключение шины bool ibcControl(bool status); Параметры: 1. status – (true/false); Возвращаемый параметр: в случае успешного подключения к зарегистрированным COM-портам и создания сокетов функция возвращает true. В противном случае – false. 2.2. Сервисные функции Сервисные функции не нужны для использования в прикладной программе для работы с шиной ISA. Если все же они требуются, то их детальное описание предоставляется компанией «АКОН» в отдельном документе. 2.3. Функции доступа к портам шины ISA При вызове функций доступа к портам шины ISA библиотека сама выбирает, какой контроллер будет обрабатывать запрос. Это возможно благодаря тому что на этапе регистрации контроллеров были указаны диапазоны адресов шины ISA для каждого узлового контроллера. ibcReadPort ibcWritePort ibcReadPortW ibcWritePortW bool bool bool bool Побайтный и пословный доступ к одному порту ibcReadPort(unsigned short address, unsigned char *value); ibcWritePort(unsigned short address, unsigned char value); ibcReadPortW(unsigned short address, unsigned short *value); ibcWritePortW(unsigned short address, unsigned short value); Параметры: 1. address – адрес порта шины ISA; 2. value – значение, записываемое в порт или считываемое с порта. Возвращаемый параметр: в случае успешного выполнения функция возвращает true. В противном случае – false. Причиной не успешного вызова может стать либо не правильно зарегистрированный интерфейс и/или контроллер либо плохая линия связи с контроллером. ibcExReadPort ibcExWritePort ibcExReadPortW ibcExWritePortW Побайтный и пословный доступ к одному порту в режиме записи/чтения массива данных. bool ibcExReadPort(unsigned short address, unsigned char *data, unsigned short size); bool ibcExWritePort(unsigned short address, unsigned char *data, unsigned short size); bool ibcExReadPortW(unsigned short address, unsigned short *data, unsigned short size); bool ibcExWritePortW(unsigned short address, unsigned short *data, unsigned short size); Параметры: 1. address – адрес порта шины ISA; 2. data – указатель на массив, записываемых в порт или считываемых с порта значений. 3. size – количество элементов массива Возвращаемый параметр: в случае успешного выполнения функция возвращает true. В противном случае – false. Причиной не успешного вызова может стать либо не правильно зарегистрированный интерфейс и/или контроллер либо плохая линия связи с контроллером. 3. Пример сборки шины и доступа к портам В данном примере подключим два устройства: первое на COM2 и второе к LAN. Скорость обмена по COM-порту 115200 кбит/с, адрес контроллера 0x05. IP контроллера подключенного к LAN равен 192.168.1.6. Диапазон адресов ввода/вывода обслуживаемый первым контроллером равен: 0x300..0x309 включительно. Диапазон адресов ввода/вывода обслуживаемый вторым контроллером: 0x310..0x319 включительно. Номер порта для UDP-сокета назначим, к примеру, равным 5100. После сборки шины произведем чтение с порта 0x300 и запись в порт 0x310. #define COM2 1 #define LOCAL_PORT 5100 void main(void) { unsigned long ComInterface, ComController; unsigned long LanInterface, LanController; unsigned short PortValue; // 1. Очистка реестров интерфейсов и контроллеров ibcClearControllerList(); ibcClearInterfaceList(); // 2. Регистрация интерфейсов ComInterface = ibcOpenInterface(COM2, 115200, NULL); LanInterface = ibcOpenLanInterface(); // 3. Регистрация контроллеров ComController = ibcOpenController(ComInterface, 0x05, 0x300, 0x309); LanController = ibcOpenController(LanInterface, 0xC0A80106, 0x310, 0x319); // 4. Номер UDP-порта ibcSetLocalPort(LOCAL_PORT); // 5. Сборка шины ibcControl(true); // 6. Доступ к портам ibcReadPortW(0x300, &PortValue); // Чтение с порта ibcWritePortW(0x310, PortValue); // Запись в порт // 7. Демонтаж шины ISA ibcControl(false); } Модуль разработан и изготовлен Компанией АКОН. Предлагаем к поставке модули АЦП, модули ЦАП, устройства ввода-вывода цифровой информации, модули нормирующих преобразователей с гальванической развязкой, модули для распределённых систем и другое оборудование. =====================================================================