Распределённая шина ISA

advertisement
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
Download