Надає доступ до "Diamond Systems" DAQ плат. Включає основну підтримку базових плат.
Ліцензія:
GPL
Вступ
Модуль надає в систему OpenSCADA підтримку джерел даних, основаних на платах збору даних фірми Diamond Systems (http://diamondsystems.com). Модуль побудовано на основі універсального драйверу виробника плат. Універсальний драйвер доступний практично для всіх відомих програмних платформ, у вигляді бібліотеки. Універсальний драйвер було отримано за адресою http://www.diamondsystems.com/support/software та включено у дистрибутив системи OpenSCADA, тому для збірки цього модуля не потрібно зовнішніх бібліотек. Потрібно тільки збірку модуля ядра Linux "dscudkp.ko" для роботи за перериванням та з FIFO.
Плати збору даних фірми Diamond Systems представляють з себе модулі розширення формфактору PC/104. Плати можуть містити: аналогові IO(входи/виходи), дискретні IO та лічильники. Комплектація плат може значно варіюватися. Можуть міститися тільки IO одного типу або ж всього потроху. Крім того, функцією збору даних можуть наділятися і системні плати цієї фірми. Наприклад, системна плата "Athena" містить: 16 AI, 4 AO, 24 DIO.
Модуль надає підтримку аналогових та дискретних IO у режимах синхронного та асинхронного доступу. Збір аналогових входів (AI) підтримується також у режимі за перериванням (за допомогою FIFO). Метод збору за перериванням дозволяє досягнути максимальної частоти опитування, апаратурою яка це підтримує. У випадку із процесорною платою "Athena" ця частота досягає 100 кГц. У процесі збору за перериванням дані отримуються пакетами основного періоду опитування та розташовуються у буфер архівів значень.
У версії 2.0 цей модуль, згідно із завданням, було фактично повністю переписана за для забезпечення підтримки всього спектру плат збору даних фірми Diamond Systems. Отриманий модуль став першим, який підтримує роботу в усіх трьох режимах збору даних (синхронний, асинхронний, пакетний), додатково до того, що він є першим модулем збору даних системи OpenSCADA.
1. Об'єкт контролеру даних
На рівні об'єкта контролеру створюється загальне для всіх плат завдання обслуговування плат-параметрів. Приклад вкладки конфігурації об'єкту контролера наведено на рис.1.
Рис.1. Вкладка конфігурації об'єкта контролеру.
За допомогою цієї вкладки можна встановити:
Стан контролеру, а саме: статус, стани "Включено" та Запущено" та ім'я БД, яка містить конфігурацію.
Ідентифікатор, ім'я та опис об'єкту контролера.
Стан, в який переводити контролер при завантажені: "Включено" та "Запущено".
Ім'я таблиці для зберігання конфігурації параметрів контролеру.
Політику планування викликів та пріоритет завдання збору даних.
2. Об'єкт параметру-плати
Об'єкт параметру-плати безпосередньо містить конфігурацію окремо взятої плати та надає всі доступні на платі дані у вигляді атрибутів. Приклад вкладки "Параметр", конфігурації параметру-плати цілком, представлено на рис.2, а вкладку "Конфігурація", властивостей сигналів, наведено на рис.3.
Стан, в який переводити параметр при завантажені: "Включено".
Тип, адреса та вектор переривання плати. Вектор переривання доступний лише для плат з аналоговими входами та FIFO.
Частота вимірювання на один канал, при опитуванні аналогових входів за перериванням. Доступна тільки для плат із аналоговими входами та FIFO. Ненульові та коректні значення цього та попереднього поля включають режим опитування AI за перериванням.
Реальні значення цього поля можуть бути скинуті до ліміту частоти лічильника обслуговування AI за перериванням, під час перерахунку на один канал.
Режим асинхронного читання, з періодом об'єкта контролера. Працює і у режимі опитування AI за перериваннями для дискретних сигналів.
Режим відображення значення аналогових входів: "Код АЦП (ціле)", "Відсоток від шкали сигналу (реальне)" та "Напруга (реальне)". Режим "Напруга" може бути доступний не для всіх плат!
Обмеження на кількість аналогових параметрів що обробляються. Корисно при використанні меншої кількості каналів, але частіше. Особливо у режимі опитування за перериванням та керування режимом каналу SE(single-ended) та "Differential".
Рис.3. Вкладка "Конфігурація", властивостей сигналів.
За допомогою цієї вкладки можна встановити:
Інтервал сканування аналогових входів, визначає час між вибірками у режимі опитування AI за перериванням.
Якщо запитана частота вибірки велика та великий інтервал, то результуюча частота може скидатися до отриманої із інтервалу сканування.
Конфігурація діапазону AI. У режимі опитування AI по перериванню використовується діапазон нульового входу, чому у дужках вказано "(всі входи)".
Конфігурація напрямку груп дискретних входів (каналів), для DIO, та режим інверсії окремих дискретних входів.
На рисунку 4 представлено приклад вкладки "Атрибути" для плати "DMM-32x-AT".
Рис.4. Вкладка "Атрибути" параметру-плати.
В таблиці 1 наведено перелік плат фірми "Diamond Systems", статус їх підтримки та тестування.
Таблиця 1 Властивості плат фірми "Diamond Systems"
Плата
AI (16 біт)
AO (12 біт)
DIO (x8)
DI (x8)
DO (x8)
Зауваження
DMM-16
16
4
0
1
1
Ruby-MM
0
8
3
0
0
Opal-MM
0
0
0
1
1
DMM
16 (12біт)
2
0
1
1
Pearl-MM
0
0
0
0
2
Onyx-MM
0
0
6
0
0
Ruby-MM-416
0
4 (16 біт)
2
0
0
DMM-AT
16 (12 біт, 100КГц, 512 FIFO)
2
0
1
1
DMM-16-AT
16 (100КГц, 512 FIFO)
4
0
1
1
IR104
0
0
0
3
3
Prometheus
16 (100КГц, 48 FIFO)
4
3
0
0
Hercules EBX
32 (250КГц, 2048 FIFO)
4
5
0
0
Onyx-MM-DIO
0
0
6
0
0
Mercator
0
0
3
0
0
Athena
16 (100КГц, 48 FIFO)
4
3
0
0
Перевірено
DMM-32x(-AT)
32 (250КГц, 1024 FIFO)
4
3
0
0
GPIO-MM-11[12](DIO)
0
0
6
0
0
GPIO-MM-21
0
0
12
0
0
Poseidon
32 (250КГц, 1024 FIFO)
4
3
0
0
Athena-II
16 (100КГц, 2048 FIFO)
4
3
0
0
DMM-32dx(-AT)
32 (250КГц, 1024 FIFO)
4
3
0
0
Перевірено
Helios
16 (100КГц, 2048 FIFO)
4
5
0
0
Neptune
32 (250КГц, 1024 FIFO)
4
4
0
0
Зауваження
Особливістю роботи збору AI за перериванням є синхронізація переключення каналів; вимірів за окремим, внутрішнім, лічильником та використання FIFO як проміжного буферу вимірювання. Звісно, що цей лічильник на деяке значення буде відрізнятися від лічильника реального часу, а FIFO потрібно встигати вичитувати. Природно що потрібне підлаштування-калібровка розходження надходження даних із годинником реального часу. В цілому реалізуються наступні механізми компенсації розходження лічильників та інших явищ:
Переповнення FIFO — у наслідку чого втрачається один кадр даних розміром у FIFO та відбувається зсув положення каналів у області даних, якщо розмір FIFO не вирівняно до кількості каналів, в додатку до розміру блоку вимірювань.
Втрата циклів — виклик задачі обробки блоків даних може статися через один або декілька циклів, в наслідок низького пріоритету та інших факторів. Результатом цього явища є переповнення (завертання) даних блоку вимірів та потрібно повністю перевстановити час даних у реальний час.
Різниця у лічильнику вимірювання та годинника реального часу — компенсується шляхом підлаштування реальної частоти вимірювань на розмір відхилення часу більш циклу обробки. Тут присутня похибка на час виклику задачі обробки та потрапляння на границю скидання частини буферу вимірювання (transfers threshold) на значення біля розмірності скидання буферу вимірювання, половина від періоду вимірювання.
Посилання
Використана версія Linux драйвера від Diamond systems: dscud5.91linux.tar.gz
Патч для збірки драйверу для ядра Linux 2.6.29, використаного при зборі даних за перериванням: lastkernels.patch