Модуль: | ICP_DAS |
Имя: | Оборудование ICP_DAS |
Тип: | DAQ |
Источник: | daq_ICP_DAS.so |
Версия: | 1.0.0 |
Автор: | Савоченко Роман |
Описание: | Предоставляет реализацию поддержки оборудования "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 размещена вместе с исходными текстами данного модуля и не требует отдельной инсталляции.
Для добавления источника данных "ICP DAS" создаётся и конфигурируется контроллер в системе OpenSCADA. Пример вкладки конфигурации контроллера данного типа изображен на рис.1.
С помощью этой вкладки можно установить:
Модуль предоставляет только один тип параметров — “Стандарт(std)” и три группы модулей/плат, доступные в зависимости от выбранной шины:
В будущем планируется добавление поддержки плат "ICP DAS" на шинах PCI и PCI-Express.
Вкладка конфигурации параметра (рис.2) в целом одинакова для всех групп модулей/плат и содержит:
В соответствии с настройками параметра осуществляется формирование и опрос атрибутов (рис.3).
Модули серии I-8xxx устанавливаются в слот параллельной шины корзины контроллера, например, серии LinPAC. В таблице 1 приведены свойства модулей "ICP DAS" серии I-8xxx, реализуемых в OpenSCADA.
Таблица 1 Свойства модулей серии I-8xxx
Модуль | AI | AO | DI | DO | Замечания |
I-8014 | Отсутствует реализация данного модуля в библиотеке libi8k, для платформы x86_32 | ||||
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 |
Для конфигурации свойств контроллеров серии LP-8xxx предусмотрена вкладка "LinPAC" на странице контроллера (рис.4), а так-же параметр "LP-8xxx" (рис.5). В параметре "LP-8xxx" можно получить информацию о серийном номере контроллера, версии SDK и значении DIP-переключателя, а во вкладке "LinPAC" можно установить значение сторожевого таймера контроллера. Сторожевой таймер контроллера выключается установкой нулевого значения. Обновление значения сторожевого таймера осуществляется в задаче контроллера и с её периодичностью, следовательно зависание задачи опроса приводит к перезапуска контроллера!
Быстрый модуль аналогового ввода, работающий на параллельной шине. Обеспечивает скорость доступа к данным по одному каналу в 130 КГц. Однако ввиду заложенного аппаратного ограничения не позволяет достичь скорости более 33 КГц на канал при сканировании нескольких каналов (за счёт переключения). При этом ожидание данных осуществляется в глухом цикле, что приводит к большим потерям ресурсов процессора на высоких частотах сбора.
Модулем предоставляются шестнадцать атрибутов аналоговых входов ai{x} и по восемь признаков нарушения верхней ha{x} и нижней la{x} границ. Также модулем предоставляется вкладка "Конфигурация" с расширенной настройкой (рис.6):
Для модулей дискретного входа и выхода, во вкладке "Конфигурация" (рис.7), предоставляется функция выборочной инверсии канала, что очень удобно при последующей работе с каналом.
Модули серии 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 данной группой модулей предоставляется реализация абстрактного модуля "I-87xxx" при выборе которого пользователю предоставляется возможность указать количество и типы основных сигналов подключенного модуля: AI, AO, DI, DO и Счётчики. Данная функция так-же избирательно доступна для модулей, содержащих сигналы AO и Счётчики и позволяет ограничить число обслуживаемых каналов, с целью уменьшения трафика на последовательном интерфейсе.
Абстрактный модуль "I-87xxx" можно использовать для модулей "ICP DAS" серии I-7xxx на чистой последовательной шине.
Поля указания количества сигналов и их типов предоставляются в основной вкладке страницы конфигурации объекта параметра (рис.8).
Для модулей аналогового ввода доступна возможность выбора режима/усиления, что осуществляется из списка (рис.9), если для модуля он указан, или прямым указанием кода режима. Установленные режимы сохраняются и хранятся в самом модуле.
Модулями с выходами, аналоговыми или дискретными, обычно предоставляется функция хостового сторожевого таймера. А именно установка значения выходов в безопасное состояние при отсутствии активности обмена с хоста в течении указанного интервала времени. Также модули позволяют установить значения выходов при включении.
На рисунке 10 представлена вкладка модуля аналоговых выходов с функциями:
Платы данного типа устанавливаются на шину ISA персонального компьютера. Для работы с этими платами необходима сборка и запуск драйверов-модулей ядра Linux. В таблице 3 приведены свойства плат "ICP DAS" на шине ISA, реализуемых в 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 | Проверено! | |||||
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 |
Специальные модули ядра Linux 2.6.29 для контроллеров LP-8x81: file:lp8x81_2629.tgz
Драйвер производителя (VIA) для сети контроллеров LP-8x81: file:rhinefet20070212111037.tgz
Патч для сборки сетевого драйвера на Linux 2.6.29: file:build_2.6.29.patch
Набор драйверов Linux для ISA плат: file:ixisa0.17.0.1.tgz