Модули/ICP-DAS - OpenSCADAWiki

# Модули/ICP-DAS

This page is a translated version of the page Modules/ICP DAS and the translation is 95% complete.

English • ‎mRussian • ‎Українська

| The translation checking and actualizing

Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
ICP_DAS | Оборудование ICP_DAS | 1.9 | GPL2 | daq_ICP_DAS.so | en,uk,ru,de | x86,ARM | DAQ | Роман Савоченко | Предоставляет реализацию поддержки оборудования "ICP DAS". Включает поддержку основных I-87xxx DCON модулей, I-8xxx быстрых модулей и плат на шине ISA.

Модуль предоставляет в систему OpenSCADA поддержку различного оборудования фирмы "ICP DAS" (http://www.icpdas.com, http://ipc2u.ru) посредством библиотеки API libi8k.a от фирмы, для модулей I-87xxx и I-8xxx, и прямых ioctl вызовов к модулям ядра, для плат на шине ISA.

Большинство оборудования фирмы "ICP DAS" работает посредством последовательных интерфейсов и протокола DCON, однако часть нового оборудования, например, серия I-8xxx работает на параллельной шине, а другая часть, устанавливается в слоты параллельной шины (I-87xxx), доступны по последовательному интерфейсу и протоколу DCON, однако не адресуются прямо, а требуют вызова специализированной команды выбора слота. Доступ к оборудованию, использующему прямые запросы по протоколу DCON, может быть осуществлён модулем DAQ.DCON. Поддержка остального оборудования не добавлялась в модуль DAQ.DCON, а реализовывалась в данном модуле по причине наличия библиотеки API фирмы "ICP DAS" только для платформ x86_32 и ARM(OABI, HardFloatFPA), что вносит ограничения на доступ к оборудованию фирмы "ICP DAS" и другому оборудованию по протоколу DCON на иных аппаратных платформах.

Причиной создания данного модуля стали работы с контроллером фирмы "ICP DAS" LP-8781 серии "LinPAC" с целью реализации среды исполнения PLC на основе системы OpenSCADA.

Библиотека API фирмы "ICP DAS" для платформ x86_32 -> libi8k.a и ARM(OABI, HardFloatFPA) -> libi8k_arm.a размещена вместе с исходными текстами данного модуля и не требует отдельной инсталляции.

## 1 Контроллер данных

Для добавления источника данных "ICP DAS" создаётся и конфигурируется контроллер в системе OpenSCADA. Пример вкладки конфигурации контроллера данного типа изображен на рис.1.

Рис.1. Вкладка конфигурации контроллера.

From this tab you can set:

- State of the controller object, as follows: status, "Enabled", "Running" and the storage name containing the configuration.
- Identifier, name and description of the controller.
- The state "Enabled" and "Running", in which the controller object must be translated at start up.
- Policy of scheduling and priority of the data acquisition task.
- Bus, on which the modules/boards are placed. If you specify a serial interface (COM {X}), then access is made under the protocol DCON. If the main controller bus is LP-8xxx the access is made through the parallel bus API or mixed. Bus ISA set allow select boards for bus ISA, from configured boards list.
- Transport through which requests to the serial bus performed. It's allowed on field "Bus" set to "COM {X}". If set "<ICP DAS>" then used the serial requests API from "ICP DAS", by default.
- Data transfer rate for the serial interface. It is indicated for the not main bus and transport "<ICP DAS>".
- Serial request tries.

## 2 Parameters

The module provides only one the "Standard (std)" type of the parameters with the parameters table name "ICPDASPrm_{CntrId}". There accessible three groups of modules/boards depending from selected bus:

- ISA — boards on ISA;
- I-87xxx — modules on serial bus and with protocol DCON, for example into LinPAC;
- I-8xxx — modules on parallel bus, for example into LinPAC.

Рис.2. Вкладка конфигурации параметра.

Вкладка конфигурации параметра (рис.2) в целом одинакова для всех групп модулей/плат и содержит:

- Состояние параметра, а именно: тип и состояние "Включен".
- Идентификатор, имя и описание параметра.
- Состояние, в которое переводить параметр при загрузке: "Включен".
- Тип модуля/платы.
- Адрес модуля/платы, в случае работы на не главной последовательной шине (в десятичном виде от 0 до 255) или шине ISA.
- Слот модуля, в случае работы с устройствами серии I-8xxx и I-87xxx, установленных в корзину ПЛК.
- Контроль CRC для модулей серии I-87xxx на последовательной шине.
- Дополнительные параметры модуля, в зависимости от шины и конкретной платы/модуля.

В соответствии с настройками параметра осуществляется формирование и опрос атрибутов (рис.3).

Рис.3. Вкладка атрибутов параметра.

### 2.1 Модули серии I-8xxx

Модули серии I-8xxx устанавливаются в слот параллельной шины корзины контроллера, например, серии LinPAC. В таблице 1 приведены свойства модулей "ICP DAS" серии I-8xxx, реализуемых в OpenSCADA.

Таблица 1 Свойства модулей серии I-8xxx

Модуль | AI | AO | DI | DO | Замечания
--- | --- | --- | --- | --- | ---
I-8014 | i8014W_ReadAI() or i8014W_ReadFIFO() for mode FIFO(Magic) |  |  |  | Tested!
I-8017 | I8017_GetCurAdChannel_Float_Cal() |  |  |  | Tested!
I-8024 |  | I8024_VoltageOut |  |  |
I-8037 |  |  |  | DO_16, DO_16_RB |
I-8040 |  |  | DI_32 |  |
I-8041 |  |  |  | DO_32, DO_32_RB |
I-8042 |  |  | DI_16 | DO_16, DO_16_RB | Tested!
I-8046 |  |  | DI_16 |  |
I-8048 |  |  | DI_8 |  |
I-8050 |  |  | DIO_DI_16 | DIO_DO_16 |
I-8051 |  |  | DI_16 |  |
I-8052 |  |  | DI_8 |  |
I-8053 |  |  | DI_16 |  |
I-8054 |  |  | DI_8 | DO_8, DO_8_RB |
I-8055 |  |  | DI_8 | DO_8, DO_8_RB |
I-8056 |  |  |  | DO_16, DO_16_RB |
I-8057 |  |  |  | DO_16, DO_16_RB |
I-8058 |  |  | DI_8 |  |
I-8060 |  |  |  | DO_8 (6), DO_8_RB |
I-8063 |  |  | DI_8 (4) | DO_8 (4), DO_8_RB |
I-8064 |  |  |  | DO_8, DO_8_RB |
I-8065 |  |  |  | DO_8, DO_8_RB |
I-8066 |  |  |  | DO_8, DO_8_RB |
I-8068 |  |  |  | DO_8, DO_8_RB |
I-8069 |  |  |  | DO_8, DO_8_RB |
I-8077 |  |  | DIO_DI_16 | DIO_DO_16 |

#### 2.1.1 Настройка контроллеров серии LP-8xxx

Для конфигурации свойств контроллеров серии LP-8xxx предусмотрена вкладка "LinPAC" на странице контроллера (рис.4), а также параметр "LP-8xxx" (рис.5). В параметре "LP-8xxx" можно получить информацию о серийном номере контроллера, версии SDK, значении DIP и поворотного переключателя. Во вкладке "LinPAC" можно установить значение сторожевого таймера контроллера. Сторожевой таймер контроллера выключается установкой нулевого значения. Обновление значения сторожевого таймера осуществляется в задаче контроллера и с её периодичностью, следовательно зависание задачи опроса приводит к перезапуска контроллера! Значение сторожевого таймера должно быть больше полного времени загрузки системы, до загрузки OpenSCADA, при этом OpenSCADA должна грузиться после запуска синхронизации времени.

Рис.4. Вкладка "LinPAC" конфигурации контроллеров серии "LP-8xxx".
Рис.5. Атрибуты параметра "LP-8xxx".

#### 2.1.2 Модуль I-8014 и I-8017

Быстрые модули аналогового ввода, работающие на параллельной шине.

Модуль I-8014 формально обеспечивает скорость доступа к данным по одному каналу в 250 КГц посредством FIFO, однако ввиду заложенного аппаратного-программного ограничения не позволяет достичь скорости более 100 КГц на канал при сканировании в реальном времени, за счёт низкой скорости чтения из FIFO. При этом чтение данных FIFO осуществляется c большими потерям ресурсов процессора на высоких частотах сбора, а именно это 9.5 микросекунд на измерение.

Модуль I-8017 формально обеспечивает скорость доступа к данным по одному каналу в 130 КГц, однако ввиду заложенного аппаратно-программного ограничения не позволяет достичь скорости более 33 КГц на канал при сканировании нескольких каналов в реальном времени (за счёт переключения). При этом ожидание данных осуществляется в глухом цикле, что приводит к большим потерям ресурсов процессора на высоких частотах сбора.

Модулями предоставляется шестнадцать атрибутов аналоговых входов ai{x} и по восемь признаков нарушения верхней ha{x} и нижней la{x} границ, для I-8017. Также модулями предоставляется вкладка "Конфигурация" с расширенной настройкой (рис.6):

- Количество обрабатываемых параметров — указывает сколько входов обслуживать. Характерен в режиме быстрого сбора данных и используется для ограничения количества обрабатываемый каналов соразмерно используемым ресурсам процессора.
- Периодичность быстрого сбора данных (сек) — указывает с какой периодичностью осуществлять быстрый сбор данных для количества каналов, указанных ранее. Режим быстрого сбора данных отключается указанием нулевого периода.
- Режимы усилений входов, отдельно для каждого входа определяет усиление из ряда: +-1.25В, +-2.5В, +-5В, +-10В и +-20мА.

Рис.6. Вкладка "Конфигурация" модулей I-8014 и I-8017.

#### 2.1.3 Инверсия значений дискретных входов и выходов

Для модулей дискретного входа и выхода, во вкладке "Конфигурация" (рис.7), предоставляется функция выборочной инверсии канала, что очень удобно при последующей работе с каналом.

Рис.7. Вкладка "Конфигурация" модуля дискретного входа и выхода.

### 2.2 Модули серии I-87xxx

Модули серии I-87xxx устанавливаются в слот последовательной шины корзины контроллера, например, серии LinPAC. В таблице 2 приведены свойства модулей "ICP DAS" серии I-87xxx, реализуемых в OpenSCADA.

Таблица 2 Свойства модулей серии I-87xxx

Модуль | AI | AO | DI | DO | Счётчики | Замечания
--- | --- | --- | --- | --- | --- | ---
I-87005 | #AA (8); TP: $AA7CiRrr ($AA8Ci) |  |  | @AADODD (8), @AADI |  |
I-87013 | #AA (4); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87015 | #AA (7); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87016 | #AA (2); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87017 | #AA (8); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87017DW | #AA (16); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87017ZW | #AA (20); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  | Tested!
I-87018 | $AA3; #AA (8); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87018ZW | $AA3; #AA (10); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87019RW | $AA3; #AA (8); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  | Tested!
I-87019ZW | $AA3; #AA (10); TP: $AA7CiRrr ($AA8Ci) |  |  |  |  |
I-87022 |  | #AAN(Data) (2), $AA8N; W: ~AA0-5 |  |  |  |
I-87024 |  | #AAN(Data) (4), $AA8N; W: ~AA0-5 |  |  |  | Tested!
I-87026 |  | #AAN(Data) (2), $AA8N; W: ~AA0-5 |  |  |  |
I-87026PW | #AA (6); TP: $AA7CiRrr ($AA8Ci) | #AAN(Data) (2), $AA8N; W: ~AA0-5 | @AADI (2) | @AADODD (2), @AADI |  |
I-87028 |  | #AAN(Data) (8), $AA8N; W: ~AA0-5 |  |  |  |
I-87037 |  |  |  | @AA(Data) (16), @AA; W: ~AA0-5 |  |
I-87040 |  |  | @AA (32) |  | #AAN (32) | Tested!
I-87041 |  |  |  | @AA(Data) (32), @AA; W: ~AA0-5 |  | Tested!
I-87042 |  |  | @AA (16) | @AA(Data) (16), @AA; W: ~AA0-5 |  |
I-87046 |  |  | @AA (16) |  | #AAN (16) |
I-87051 |  |  | @AA (16) |  | #AAN (16) |
I-87052 |  |  | @AA (8) |  | #AAN (8) |
I-87053 |  |  | @AA (16) |  | #AAN (16) |
I-87054 |  |  | @AA (8) | @AA(Data) (8), @AA; W: ~AA0-5 | #AAN (8) |
I-87055 |  |  | @AA (8) | @AA(Data) (8), @AA; W: ~AA0-5 | #AAN (8) |
I-87057 |  |  |  | @AA(Data) (16), @AA; W: ~AA0-5 |  |
I-87058 |  |  | @AA (8) |  | #AAN (8) |
I-87059 |  |  | @AA (8) |  | #AAN (8) |
I-87061 |  |  |  | @AA(Data) (16), @AA; W: ~AA0-5 |  |
I-87063 |  |  | @AA (16) | @AA(Data) (16), @AA; W: ~AA0-5 | #AAN (16) |
I-87064 |  |  |  | @AA(Data) (8), @AA; W: ~AA0-5 |  |
I-87065 |  |  |  | @AA(Data) (8), @AA; W: ~AA0-5 |  |
I-87066 |  |  |  | @AA(Data) (8), @AA; W: ~AA0-5 |  |
I-87068 |  |  |  | @AA(Data) (8), @AA; W: ~AA0-5 |  |
I-87069 |  |  |  | @AA(Data) (8), @AA; W: ~AA0-5 |  |

#### 2.2.1 Абстрактный модуль серии I-87xxx

Кроме поддержки модулей в таблице 2 данной группой модулей предоставляется реализация абстрактного модуля "I-87xxx" при выборе которого пользователю предоставляется возможность указать количество и типы основных сигналов подключенного модуля: AI, AO, DI, DO и Счётчики. Данная функция также избирательно доступна для модулей, содержащих сигналы AO и Счётчики и позволяет ограничить число обслуживаемых каналов, с целью уменьшения трафика на последовательном интерфейсе.

Абстрактный модуль "I-87xxx" можно использовать для модулей "ICP DAS" серии I-7xxx на "чистой" последовательной шине.

Поля указания количества сигналов и их типов предоставляются в основной вкладке страницы конфигурации объекта параметра (рис.8).

Рис.8. Основная вкладка параметра абстрактного модуля "I-87xxx".

#### 2.2.2 Выбор типа канала для AI

Для модулей аналогового ввода доступна возможность выбора режима/усиления, что осуществляется из списка (рис.9), если для модуля он указан, или прямым указанием кода режима. Установленные режимы сохраняются и хранятся в самом модуле.

Рис.9. Вкладка "Конфигурация" модуля аналоговых входов.

#### 2.2.3 Хостовый сторожевой таймер и значения по умолчанию при включении и срабатыванию таймера

Модулями с выходами, аналоговыми или дискретными, обычно предоставляется функция хостового сторожевого таймера. А именно установка значения выходов в безопасное состояние при отсутствии активности обмена с хоста в течении указанного интервала времени. Также модули позволяют установить значения выходов при включении.

На рисунке 10 представлена вкладка модуля аналоговых выходов с функциями:

- установка и контроль состояния сторожевого таймера модуля;
- установка и контроль значения выходов модуля при включении;
- установка и контроль значения выходов модуля при срабатывании хостового сторожевого таймера.

Рис.10. Вкладка "Конфигурация" модуля аналоговых выходов.

### 2.3 Платы на шине ISA

Платы данного типа устанавливаются на шину ISA персонального компьютера. Для работы с этими платами необходима сборка и запуск драйверов-модулей ядра Linux. В таблице 3 приведены свойства плат "ICP DAS" на шине ISA, реализуемых в OpenSCADA.

Функция счётчиков на данный момент не реализована в OpenSCADA.

Таблица 3 Свойства плат на шине ISA

Модуль | AI | AO | DI | DO | DIO | Счётчики | Замечания
--- | --- | --- | --- | --- | --- | --- | ---
A-626 |  | IXISA_AO{0...5} | IXISA_DI_{A...B} | IXISA_DO_{A...B} |  |  |
A-628 |  | IXISA_AO{0...7} | IXISA_DIO_{A...B} | IXISA_DIO_{A...B} |  |  |
A-8111 | IXISA_AI (8,12) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO{0...1} | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
A-812 | IXISA_AI (16,12) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO{0...1} | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
A-821 | IXISA_AI (16,12) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
A-822 | IXISA_AI (16,12) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO{0...1} | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
A-823 | IXISA_AI (16,12) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO{0...1} | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
A-826 | IXISA_AI (16,16) IXISA_ADGCR IXISA_ADMXCR IXISA_ADMCR IXISA_ADSTCR | IXISA_AO{0...1} | IXISA_DI{L,H} | IXISA_DO{L,H} |  | IXISA_8254C{0...2} IXISA_8254CR |
DIO-144 |  |  |  |  | IXISA_CN{0...5}P{A...C} IXISA_CN{0...5}CR |  | Tested!
DIO-24 |  |  |  |  | IXISA_P{A...C} IXISA_CR |  |
DIO-48 |  |  |  |  | IXISA_CN{1...2}P{A...C} | IXISA_CN{1...2}CR IXISA_8254C{0...2} IXISA_8254CR |
DIO-64 |  |  | IXISA_DIO_{A...D} | IXISA_DIO_{A...D} |  | IXISA_8254C{0...5} IXISA_8254CR IXISA_8254CR1 |
DIO-96 |  |  |  |  | IXISA_CN{0...3}P{A...C} IXISA_CN{0...3}CR |  |
ISO-730 |  |  | IXISA_IDIO_{A...B} IXISA_DIO_{A...B} | IXISA_IDIO_{A...B} IXISA_DIO_{A...B} |  |  |
ISO-813 | IXISA_AI (32) IXISA_ADGCR IXISA_ADMXCR IXISA_ADSTCR |  |  |  |  |  |
ISO-AD32 | <FIFO> |  |  |  |  |  |
ISO-C64 |  |  |  | IXISA_DO_{A...H} |  |  |
ISO-DA16 | ? |  |  |  |  |  |
ISO-P32C32 |  |  | IXISA_DIO_{A...D} | IXISA_DIO_{A...D} |  |  |
ISO-P64 |  |  | IXISA_DI_{A...H} |  |  |  |
P16R16DIO |  |  | IXISA_DI_{A...B} | IXISA_DO_{A...B} |  |  |
P8R8DIO |  |  | IXISA_DI (8) | IXISA_DO (8) |  |  |
TMC-10 |  |  | IXISA_DI_{A...B} | IXISA_DO_A |  | IXISA_8254C{0...2} IXISA_8254CR IXISA_8254CS |

## 3 Ссылки

- Специальные модули ядра Linux 2.6.29-rt-up для контроллеров LP-8x81
- Специальные модули ядра Linux 2.6.29-rt1-up для контроллеров LP-8x81
- Драйвер производителя (VIA) для сети контроллеров LP-8x81
- Патч для сборки сетевого драйвера "rhinefet" на Linux 2.6.29-rt
- Патч для сборки сетевого драйвера "rhinefet" на Linux 2.6.29-rt1
- Набор драйверов Linux для ISA плат

Modules/ICP_DAS/ru - GFDL | May 2026 | OpenSCADA 0.9.9