Предоставляет реализацию поддержки оборудования "ICP DAS". Включает поддержку основных I-87xxx DCON модулей, I-8xxx быстрых модулей и плат на шине ISA.
Лицензия:
GPL
Введение
Модуль предоставляет в систему 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. Вкладка конфигурации контроллера.
С помощью этой вкладки можно установить:
Состояние контроллера, а именно: статус, состояния "Включен" и Запущен" и имя БД, содержащей конфигурацию.
Идентификатор, имя и описание контроллера.
Состояние, в которое переводить контроллер при загрузке: "Включен" и "Запущен".
Имя таблицы для хранения конфигурации параметров контроллера.
Политику планирования вызовов и приоритет задачи сбора данных.
Шина на которой расположены модули/платы. Если указан последовательный интерфейс (COM {X}), то доступ производится по протоколу DCON. В случае указания мастер шины контроллера LP-8xxx доступ производится через API параллельной шины или смешано. Указание ISA шины позволяет выбирать платы для шины ISA, из перечня сконфигурированных плат.
Транспорт, через который осуществляются запросы к последовательной шине. Доступен при установке поля "Шина" в "COM {X}". Если указано "<ICP DAS>" то используется API последовательных запросов от "ICP DAS", по умолчанию.
Скорость передачи данных для последовательного интерфейса, указывается для неглавной последовательной шины и транспорта "<ICP DAS>".
Количество попыток последовательных запросов.
2. Параметры
Модуль предоставляет только один тип параметров — “Стандарт(std)” и три группы модулей/плат, доступные в зависимости от выбранной шины:
ISA — платы на шине ISA;
I-87xxx — модули на последовательной шине и с протоколом DCON, например в LinPAC;
I-8xxx — модули на параллельной шине, например в 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() или i8014W_ReadFIFO() для режима FIFO(Magic)
Проверен!
I-8017
I8017_GetCurAdChannel_Float_Cal()
Проверен!
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
Проверен!
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)
Проверено!
I-87018
$AA3; #AA (8); TP: $AA7CiRrr ($AA8Ci)
I-87018ZW
$AA3; #AA (10); TP: $AA7CiRrr ($AA8Ci)
I-87019RW
$AA3; #AA (8); TP: $AA7CiRrr ($AA8Ci)
Проверено!
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
Проверено!
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)
Проверено!
I-87041
@AA(Data) (32), @AA; W: ~AA0-5
Проверено!
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), если для модуля он указан, или прямым указанием кода режима. Установленные режимы сохраняются и хранятся в самом модуле.
2.2.3 Хостовый сторожевой таймер и значения по умолчанию при включении и срабатыванию таймера
Модулями с выходами, аналоговыми или дискретными, обычно предоставляется функция хостового сторожевого таймера. А именно установка значения выходов в безопасное состояние при отсутствии активности обмена с хоста в течении указанного интервала времени. Также модули позволяют установить значения выходов при включении.
На рисунке 10 представлена вкладка модуля аналоговых выходов с функциями:
установка и контроль состояния сторожевого таймера модуля;
установка и контроль значения выходов модуля при включении;
установка и контроль значения выходов модуля при срабатывании хостового сторожевого таймера.
Платы данного типа устанавливаются на шину ISA персонального компьютера. Для работы с этими платами необходима сборка и запуск драйверов-модулей ядра Linux. В таблице 3 приведены свойства плат "ICP DAS" на шине ISA, реализуемых в OpenSCADA.
Функция счётчиков на данный момент не реализована в OpenSCADA.