WAD-DIO128H ПЛАТА ДИСКРЕТНОГО ВВОДА/ВЫВОДА Описание и руководство по программированию 2007 Rev. 1.1 Copyright © 2006 by AKON Company WAD-DIO128H WAD-DIO128H СОДЕРЖАНИЕ ВВЕДЕНИЕ ............................................................................ 3 1. СТРУКТУРНАЯ СХЕМА ................................................................ 3 2. НАЗНАЧЕНИЕ РЕГИСТРОВ ПЛАТЫ ...................................................... 4 3. НАЗНАЧЕНИЕ КОНТАКТОВ РАЗЪЁМОВ ................................................... 5 Приложение: Распределённая шина ISA. Концепция построения и руководство по программированию………………………………………………………………………………… 8 Rev. 1.1 2 WAD-DIO128H Введение Плата WAD-DIO128H представляет собой 128-канальное устройство дискретного ввода/вывода, которое подключается на шину ISA, либо, будучи в выносной модификации “BOX” к последовательному интерфейсу USB, либо RS-232, либо RS-485, либо LAN10Mb. Все 128 каналов разделены на 16 групп по 8 каналов и каждая из этих групп является двунаправленной, т.е., позволяет делать ввод и вывод. В зависимости от того, как сконфигурирован регистр управления группами (регистр режима выхода), вводятся таким образом либо данные которые плата формирует как собственный выход, либо осуществляется ввод внешних сигналов (собственные выходы переводятся при этом в “Z” состояние). 1. Структурная схема Ядро платы составляет регистр управления группами и регистры групп. Рис.1 Структурная схема WAD-DIO128H Перед обращением к регистрам групп нужно настроить регистр управления. Для настройки группы на ввод нужно в соответствующий разряд регистра управления записать логическую единицу, а для вывода логический ноль. 3 Rev. 1.1 WAD-DIO128H 2. Назначение регистров платы Перед доступом к регистрам групп нужно настроить регистр управления. Для настройки группы на ввод нужно в соответствующий разряд записать логическую единицу, а для ввода логический ноль. Назначение разрядов регистра управления: Разряд регистра управления Группа каналов 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 000..007 016..023 032..039 048..055 064..071 080..087 096..103 112..119 008..015 024..031 040..047 056..063 072..079 088..095 104..111 120..127 Если регистр управления группами конфигурирует по 8 каналов одновременно, то доступ к самим каналам осуществляется через двухбайтные регистры, т.е. по 16 каналов: Номер регистра Назначение 0x300 Регистр управления группами Каналы 000..015 Каналы 032..047 Каналы 064..079 Каналы 096..111 Каналы 016..031 Каналы 048..063 Каналы 080..095 Каналы 112..127 0x308 0x30A 0x30C 0x30E 0x318 0x31A 0x31C 0x31E Rev. 1.1 4 WAD-DIO128H 3. Назначение контактов разъёмов и джамперов X2 X1 JP1-JP5 Разъём Х1: 5 Регистр Регистр Канал группы группы 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 IO_000 IO_001 IO_002 IO_003 IO_004 IO_005 IO_006 IO_007 IO_016 IO_017 IO_018 IO_019 IO_020 IO_021 IO_022 IO_023 IO_032 IO_033 IO_034 IO_035 IO_036 IO_037 IO_038 IO_039 IO_048 IO_049 IO_050 IO_051 IO_052 IO_053 IO_054 IO_055 IO_064 IO_065 IO_066 IO_067 IO_068 IO_069 IO_070 IO_071 IO_080 IO_081 IO_082 IO_083 IO_084 IO_085 IO_086 IO_087 IO_096 IO_097 IO_098 IO_099 IO_100 IO_101 IO_102 IO_103 IO_112 IO_113 IO_114 IO_115 IO_116 IO_117 IO_118 IO_119 0x30E 0x31E 0x31C 0x30A 0x31A 0x318 0x30C Канал 0x308 № контакта разъёма Rev. 1.1 № контакта разъёма 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 WAD-DIO128H Разъём Х2: 0x30C 0x31C 0x30E 0x31E 0x308 IO_08 IO_09 IO_010 IO_011 IO_012 IO_013 IO_014 IO_015 IO_024 IO_025 IO_026 IO_027 IO_028 IO_029 IO_030 IO_031 IO_040 IO_041 IO_042 IO_043 IO_044 IO_045 IO_046 IO_047 IO_056 IO_057 IO_058 IO_059 IO_060 IO_061 IO_062 IO_063 0x318 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 Регистр Регистр группы группы 0x30A Канал 0x31A № контакта разъёма Rev. 1.1 Канал № контакта разъёма IO_072 IO_073 IO_074 IO_075 IO_076 IO_077 IO_078 IO_079 IO_088 IO_089 IO_090 IO_091 IO_092 IO_093 IO_094 IO_095 IO_104 IO_105 IO_106 IO_107 IO_108 IO_109 IO_110 IO_111 IO_120 IO_121 IO_122 IO_123 IO_124 IO_125 IO_126 IO_127 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 6 WAD-DIO128H JP1-JP5 1 2 3 4 5 +-+-+-+-+-++-----------------------------+------------------+ ¦0¦0¦0¦0¦0¦¦ ¦Положение джампера¦ ¦0¦0¦0¦0¦0¦¦ Наименование ключей +--------+---------+ +-+-+-+-+-+¦ ¦Замкнут ¦ Разомкн.¦ ¦ ¦ ¦ ¦ ¦ +-----------------------------+--------+---------+ +-+-+-+-+-+Незадействован ¦ х ¦ х ¦ ¦ +-+-+-+-+Сравнение с линией адреса A04¦ лог.1 ¦ лог.0 ¦ ¦ ¦ +-+-+-+Сравнение с линией адреса A05¦ лог.1 ¦ лог.0 ¦ ¦ ¦ ¦ +-+-+Сравнение с линией адреса A07¦ лог.1 ¦ лог.0 ¦ ¦ ¦ ¦ ¦ +-+Сравнение с линией адреса A08¦ лог.1 ¦ лог.0 ¦ ¦ ¦ ¦ ¦ ¦ +-----------------------------+--------+---------+ ++-+-+-+-+-+-------------------+ ¦х Р Р Р З ¦ включен адрес 300 ¦ ¦х З Р Р З ¦ включен адрес 320 ¦ ¦х Р З Р З ¦ включен адрес 340 ¦ ¦х З З Р З ¦ включен адрес 360 ¦ ¦х Р Р Р Р ¦ включен адрес 200 ¦ +----------+-------------------+ Модуль разработан и изготовлен Компанией АКОН. Предлагаем к поставке модули АЦП, модули ЦАП, устройства ввода-вывода цифровой информации, модули нормирующих преобразователей с гальванической развязкой, модули для распределённых систем и другое оборудование. 7 Rev. 1.1 WAD-DIO128H Приложение РАСПРЕДЕЛЁННАЯ ШИНА ISA Концепция построения и руководство по программированию (API Isabox.dll) 2006 Rev. 1.1 8 WAD-DIO128H СОДЕРЖАНИЕ ВВЕДЕНИЕ ................................................................... 10 1. КОНЦЕПЦИЯ ПОСТРОЕНИЯ ШИНЫ ............................................... 10 2. ФУНКЦИИ ISABOX.DLL ...................................................... 12 2.1. ФУНКЦИИ РЕГИСТРАЦИИ И СБОРКИ ............................................... 13 2.2. СЕРВИСНЫЕ ФУНКЦИИ ........................................................ 14 2.3. ФУНКЦИИ ДОСТУПА К ПОРТАМ ШИНЫ ISA ........................................... 15 3. ПРИМЕР СБОРКИ ШИНЫ И ДОСТУПА К ПОРТАМ ................................... 17 9 Rev. 1.1 WAD-DIO128H Введение С развитием вычислительной техники и постоянного роста потребностей в высокоскоростных устройствах производители персональных компьютеров отказываются от таких периферийных узлов как шина ISA и последовательных портов RS-232, LPT. По этой причине приходится снимать с производства проверенное временем не дорогое, но надежное оборудование, использующее эти интерфейсы. Стоимость PCI –плат по сравнению с платами на ISA выше в несколько раз, но проблема заключается ещё и в том, что не всегда нужна высокая производительность PCI –плат. Компания «АКОН» предлагает альтернативный вариант шины ISA, построенной на контроллерах ISA-BOX. Это внешняя распределенная шина, которая состоит из одного или нескольких контроллеров в зависимости от задач, которые управляют подключенными к ним платами ISA. Программное обеспечение верхнего уровня представляет набор внешних контроллеров как единое целое, т.е. как одну шину. Собранная таким образом внешняя шина совместима с платами всех производителей. К особенностям такого решения можно отнести отсутствие отработки прерываний и каналов прямого доступа к памяти. К преимуществам то, что шина собрана на внешних модулях (при этом не нужно открывать корпус компьютера) и то, что её можно собирать даже в том случае, если на компьютере есть слоты ISA, но в недостаточном количестве. 1. Концепция построения шины Узловые контроллеры ISA-BOX могут подключаться к таким интерфейсам как RS232, RS-485, USB, Ethernet (витая пара). Rev. 1.1 10 WAD-DIO128H Рис.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 собрана и готова к использованию. 11 Rev. 1.1 WAD-DIO128H 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 Rev. 1.1 12 WAD-DIO128H 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); Параметры: отсутствуют Возвращаемый параметр: идентификатор регистрации контроллеров. (См. ниже) 13 Rev. 1.1 интерфейса. WAD-DIO128H 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. Если все же они требуются, то их детальное описание предоставляется компанией «АКОН» в отдельном документе. Rev. 1.1 14 WAD-DIO128H 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. Причиной не успешного вызова может стать либо не правильно зарегистрированный интерфейс и/или контроллер либо плохая линия связи с контроллером. 15 Rev. 1.1 WAD-DIO128H 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. Причиной не успешного вызова может стать либо не правильно зарегистрированный интерфейс и/или контроллер либо плохая линия связи с контроллером. Rev. 1.1 16 WAD-DIO128H 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); } Модуль разработан и изготовлен Компанией АКОН. Предлагаем к поставке модули АЦП, модули ЦАП, устройства ввода-вывода цифровой информации, модули нормирующих преобразователей с гальванической развязкой, модули для распределённых систем и другое оборудование. ====================================================================== 17 Rev. 1.1