Предоставляет доступ к "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.
Рис.2. Вкладка "Параметр", конфигурации параметра-платы в целом.
С помощью этой вкладки можно установить:
Состояние параметра, а именно: тип и состояние "Включен".
Идентификатор, имя и описание параметра.
Состояние, в которое переводить параметр при загрузке: "Включен".
Тип, адрес и вектор прерывания платы. Вектор прерывания доступен только для плат с аналоговыми входами и 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: file:dscud5.91linux.tar.gz
Патч для сборки драйвера для ядра Linux 2.6.29, используемого при сборе данных по прерыванию: file:lastkernels.patch