Модуль: | ICP_DAS |
Ім'я: | Обладнання ICP_DAS |
Тип: | DAQ |
Джерело: | daq_ICP_DAS.so |
Версія: | 1.8 |
Автор: | Савоченко Роман |
Опис: | Надає реалізацію підтримки обладнання "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)" та три групи модулів/плат, доступні у залежності від обраної шини:
Вкладка конфігурації параметру (рис.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, однак у зв'язку із закладеним апаратно-програмним обмеженням не дозволяє досягти швидкості більш 100 КГц на канал при скануванні у реальному часі, за рахунок низької швидкості читання із FIFO. При цьому читання даних FIFO здійснюється з великими втратами ресурсів процесору на високих частотах збору, а саме це 9.5 мікросекунд на вимір.
Модуль 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: lp8x81_2629rt_up.tgz
Специальні модулі ядра Linux 2.6.29-rt1-up для контролерів LP-8x81: lp8x81_2629rt1_up.tgz
Драйвер виробника (VIA) для мережі контролерів LP-8x81: rhinefet20070212111037.tgz
Патч для збірки мережевого драйверу "rhinefet" на Linux 2.6.29-rt: rhinefet_build_to_2.6.29.patch
Патч для збірки мережевого драйверу "rhinefet" на Linux 2.6.29-rt1: rhinefet_build_to_2.6.29rt1.patch.gz
Набір драйверів Linux для ISA плат: ixisa0.17.0.1.tgz