Модуль: | ICP_DAS |
Ім'я: | Обладнання ICP_DAS |
Тип: | DAQ |
Джерело: | daq_ICP_DAS.so |
Версія: | 1.8.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" з метою реалізації середовища виконання ПЛК на основі системи 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 | 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 |
Для конфигурации свойств контроллеров серии LP-8xxx предусмотрена вкладка "LinPAC" на странице контроллера (рис.4), а также параметр "LP-8xxx" (рис.5). В параметре "LP-8xxx" можно получить информацию о серийном номере контроллера, версии SDK, значении DIP и поворотного переключателя. Во вкладке "LinPAC" можно установить значение сторожевого таймера контроллера. Сторожевой таймер контроллера выключается установкой нулевого значения. Обновление значения сторожевого таймера осуществляется в задаче контроллера и с её периодичностью, следовательно зависание задачи опроса приводит к перезапуска контроллера! Значение сторожевого таймера должно быть больше полного времени загрузки системы, до загрузки OpenSCADA, при этом OpenSCADA должна грузиться после запуска синхронизации времени.
Быстрые модули аналогового ввода, работающие на параллельной шине.
Модуль I-8014 формально обеспечивает скорость доступа к данным по одному каналу в 250 КГц посредством FIFO, однако ввиду заложенного аппаратного-программного ограничения не позволяет достичь скорости более 60 КГц на канал при сканировании в реальном времени, за счёт низкой скорости чтения из FIFO. При этом чтение данных FIFO осуществляется c большими потерям ресурсов процессора на высоких частотах сбора.
Модуль I-8017 формально обеспечивает скорость доступа к данным по одному каналу в 130 КГц, однако ввиду заложенного аппаратно-программного ограничения не позволяет достичь скорости более 33 КГц на канал при сканировании нескольких каналов в реальном времени (за счёт переключения). При этом ожидание данных осуществляется в глухом цикле, что приводит к большим потерям ресурсов процессора на высоких частотах сбора.
Модулями предоставляется шестнадцать атрибутов аналоговых входов ai{x} и по восемь признаков нарушения верхней ha{x} и нижней la{x} границ, для I-8017. Также модулями предоставляется вкладка "Конфигурация" с расширенной настройкой (рис.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-rt-up для контроллеров LP-8x81: file:lp8x81_2629rt_up.tgz
Специальные модули ядра Linux 2.6.29-rt1-up для контроллеров LP-8x81: file:lp8x81_2629rt1_up1.tgz
Драйвер производителя (VIA) для сети контроллеров LP-8x81: file:rhinefet20070212111037.tgz
Патч для сборки сетевого драйвера "rhinefet" на Linux 2.6.29-rt: file:rhinefet_build_to_2.6.29.patch
Патч для сборки сетевого драйвера "rhinefet" на Linux 2.6.29-rt1: file:rhinefet_build_to_2.6.29rt1.patch.gz
Набор драйверов Linux для ISA плат: file:ixisa0.17.0.1.tgz