Автоматизированная система кулонометрического контроля 2004 г.

М.Л. Гольдштейн, А.В. Матвеев
Институт математики и механики УрО РАН

Аннотация

В статье представлены несколько вариантов построения многофункциональной автоматизированной системы для экспериментальной высокотемпературной электрохимии в зависимости от платформы (типа операционной системы: Windows, Real-time Linux, плат ввода-вывода, наличия цифровых сигнальных процессоров на этих платах и т.п.). По каждому варианту приведены сравнительные точностные и временные характеристики функционирования кулонометрического канала системы и пути их достижения. К достоинствам системы можно отнести возможность функционирования в реальном масштабе времени в широком диапазоне (интервал между измерениями (4*10-7 – 1) с, время реакции системы на внешние события (8*10-7 – 6*10-5) с), возможность проведения высокоточных измерений количества электричества, прошедшего через электрохимический объект (минимальный предел измерения количества электричества 10-6 Кл при основной погрешности 0,1%), автоматическое формирование управляющих воздействий, применение в научно-исследовательских, промышленных и полупромышленных целях.

Структура и характеристики автоматизированной системы кулонометрического контроля

При проведении научных исследований в области экспериментальной электрохимии и в промышленности одним из высокоинформативных показателей является количество электричества (Q), прошедшее через электрохимический объект (ЭО) [1].

Для того чтобы определиться с основными требованиями к автоматизированной системе кулонометрического контроля (АСКК) рассмотрим выражение для определения количества электричества:

Выражение для определения количества электричества

где:
N – число измерений в течение временного интервала [tнач,tкон];
Rш – сопротивление шунта;
Uk – падение напряжения на сопротивлении шунта в момент времени tk.

Максимально допустимая величина (tk - tk-1) определяется типом объекта и характером контролируемого процесса и определяет временной диапазон, в котором должна работать система. Для научно-исследовательских целей, когда речь идет о быстропротекающих процессах, это (10-7 – 10-3) с, для полупромышленных (10-5 – 10-2) с, для промышленных целей, характеризующихся стационарными процессами, это (10-3 – 1) с.

Особенность АСКК состоит в возможности функционaирования в реальном масштабе времени в широком временном диапазоне, автоматического формирования управляющих воздействий. Для научных целей представляет интерес возможность детального исследования процесса после его завершения путем анализа базы данных эксперимента.

Структурная схема АСКК приведена на рис. 1. В качестве системной среды, т.е. среды, объединяющей различные функциональные элементы, использован персональный компьютер Pentium III (700 МГц, 128 МБ). Для фиксации ввода (значения Uk) и вывода данных применены платы ввода-вывода (ПВВ) L-7xx (шина PCI) фирмы L-Card (Москва) и A812PG (шина ISA) фирмы ICP DAS (Тайвань).

Структурная схема автоматизированной системы кулонометрического контроля

Рис. 1. Структурная схема автоматизированной системы кулонометрического контроля.

Для реализации функций реального времени АСКК (если они требуются), таких как непрерывный сбор данных с гарантией непревышения паузы между отсчетами и реакция системы на накопление заданного Q в заданное время, можно выбрать два пути построения АСКК. Первый путь состоит в использовании операционной системы реального времени (ОСРВ) [2]. Второй путь заключается в применении широко распространенной ОС Windows и платы ввода-вывода, содержащей дополнительный процессор (для реализации поставленной задачи мы выбрали платы с цифровыми сигнальными процессорами (DSP)), на котором реализуются функции реального времени [3]. У каждого пути есть свои плюсы и минусы. ОСРВ – очень дорогой программный продукт. Существуют свободно распространяемые системы, такие как, например, RT-Linux [4], однако по своим характеристикам они уступают коммерческим ОСРВ. К недостаткам ОСРВ также можно отнести менее привычный пользовательский интерфейс и малое число специалистов, знающих эти системы. Таким образом, обслуживание АСКК, устранение проблем, связанных с аппаратурой и программным обеспечением в этих системах, весьма затруднительно, чего не скажешь о Windows. В пользу “Windows + DSP” относятся и лучшие временные характеристики, которые для нашей задачи превосходят расчетные характеристики АСКК для самых прогрессивных ОСРВ. К недостаткам второго подхода можно отнести недостаточную надежность Windows, непредсказуемые отказы в ее работе, что является серьезным аргументом против данного пути при контролировании ответственных промышленных и полупромышленных процессов. Применяя оба варианта построения АСКК, мы добились разных характеристик системы, которые представлены в таблице.

Технические характеристики реализованных АСКК в зависимости от выбора аппаратно-программных средств

Операционная система

Плата ввода-вывода (цена)

DSP на плате

Интервал между измерениями (задается пользователем), в с

Возможная задержка между двумя измерениями

Время реакции системы на накопление заданного Q, в с

Абсолютная погрешность АЦП на плате, в В

Количество сохраняемой информации на 1 отсчет, в байтах

Windows-98

L-783 (PCI) ($430)

ADSP-2186

4*10-7 – 1

Отсутствует

8*10-7

3*10-4

2
(ток)

Windows-98

L-780 (PCI) ($340)

ADSP-2186

2.5*10-6 – 1

Отсутствует

3*10-6

1*10-5

2
(ток)

Windows-98

A812PG (ISA) ($160)

Отсутствует

1.6*10-5 – 1

Непредсказуемо (определяется Windows)

Не менее 1.6*10-5 . Верхняя граница определяется Windows

9*10-4

7
(ток + время)

Real-Time Linux 2.2

A812PG (ISA) ($160)

Отсутствует

1.6*10-5 – 1

6*10-5 c

1.6*10-5
6*10-5

9*10-4

7
(ток + время)

Реализация АСКК по схеме “Win-32 + DSP”

Главное окно программы АСКК отображает не только текущие значения параметров (ток, Q, время), но также и предысторию процесса. Во время функционирования АСКК может создаваться база данных для подробного исследования процесса после его завершения.

Перед каждым запуском процесса открывается окно настроек программы. Здесь выбираются значения сопротивления шунта для корректного подсчета тока и Q, задается период снятия показаний, выбирается способ остановки процесса: по заданному времени, при прохождении заданного Q или по команде пользователя. Так как потоки данных могут быть высокоскоростными (до 5 МБ/с), то размер базы данных также задается в окне настроек и ограничен объемом свободного пространства на жестком диске компьютера. При достижении заданного объема сбор данных на диск прекращается.

Применив плату A812PG, получили систему не реального времени, то есть максимальное время между отсчетами и время реакции на событие не определены, какой бы приоритет мы не назначали потоку Windows-приложения, отвечающему за сбор данных. В целях снижения времени реакции системы текущее значение Q вычисляется после каждого отсчета, поэтому применяется программный способ обмена с платой, когда центральный процессор формирует управляющее воздействие, которое запускает АЦП, затем ждет сигнала готовности данных и считывает данные с платы в оперативную память компьютера. Так как временной интервал между двумя отсчетами не фиксирован в силу многозадачности Windows, после каждого отсчета считывается текущее время с точностью до микросекунд и это значение также заносится в базу данных.

При работе с платами серии L-7xx программная оболочка системы разбивается на две части: программа DSP, которая загружается в память DSP каждый раз перед началом работы с платой, и Windows-приложение. Платы данной серии имеют некоторые различия, такие как частота и разрядность АЦП, входной диапазон, частота процессора, однако принцип действия остается тем же. Для определенности дальнейшее описание будем проводить для платы L-783. Текущее значение Q сохраняется в ячейке памяти DSP и может быть считано Windows-приложением (память ADSP-2186 (16 Кбайт слов данных и 16 Кбайт слов программ) [5] “видна” центральному процессору) для обновления значения на экране монитора. Для транспортировки непрерывно поступающих данных о значении силы тока применяем следующий алгоритм. Каждое значение отсчета с АЦП записываем в память DSP, определенный участок которой сконфигурирован в виде кольцевого буфера. При заполнении половины буфера генерируется прерывание CPU. Виртуальный драйвер Windows по этим прерываниям считывает данные и помещает их в большой кольцевой буфер, реализованный в RAM компьютера и доступный пользовательскому приложению. Программа в Windows организована как многопоточное приложение, где один поток занимается записью данных на жесткий диск, другой поток выводит графики на экран монитора в реальном времени, а третий отвечает за пользовательский интерфейс.

Специфика АСКК состоит в том, что требуется обеспечить быструю реакцию системы в реальном масштабе времени на внешние события. Для реализации функций АСКК, ответственных за быструю реакцию системы, мы модифицировали стандартную программу DSP, разработанную производителем платы. Стандартная программа содержит функции многоканального сбора данных и транспортировки их в RAM компьютера, часть которых была оставлена в модифицированной нами программе.

Для программирования DSP был применен DSP – ассемблер (ADSP-21XX Assembler, Version 1.13). Поэтому время выполнения определенных участков кода можно определить из исходного текста программы. Время выполнения одной инструкции, которая может содержать одну или несколько команд, равняется времени 1 такта процессора, т.е. 25 нс [6]. Временная диаграмма функционирования BIOS представлена на рис. 2. По возрастающему фронту сигнала последовательного порта DSP SPORT1 срабатывает УВХ АЦП. В этот же момент устанавливается запрос на прерывание IRQE. Переключение контекста DSP происходит за три такта (75 нс). Далее осуществляется переход (25 нс) на процедуру обработки прерывания IRQE, в которой вычисляется количество электричества Q:

AY0 = IO(ReadADC);считывание значения предыдущего отсчета в регистр DSP (25 нс)
DM(I3,M3) = AY0;запись значения в память (буфер) DSP (25 нс)
AR = AX0 + AY0;вычисление очередного текущего значения Q (75 нс)
AX0 = AR, AR = AX1 + C;
AX1 = AR, AR = SR0 +C;
AY0 = DM(msw2);вычисление разности текущего Q и заданного (100 нс)
SR0 = AR, AR = AX0 - AY0;
AR = AX1 - AY1 + C - 1;
AR = SR0 - AF + C - 1;
IF LT JUMP end;проверка прохождения заданного Q (25 нс)
IO(0) = SR1;формирование управляющего воздействия (25 нс)
end: RTI;возврат из прерывания в основную программу (25 нс)

Временная диаграмма функционирования программы DSP

Рис. 2. Временная диаграмма функционирования программы DSP.

Основная программа DSP циклически проверяет переполнение половины буфера и инициализирует и запускает канал IDMA DSP в случае положительного результата проверки, который осуществляет транспортировку данных из буфера в RAM компьютера параллельно с вычислениями DSP. Тем самым обеспечивается непрерывный сбор данных.

Текущее значение тока или Q может быть считано СPU из памяти DSP в любое время. Для этого CPU необходимо сгенерировать прерывание IRQ2 DSP для записи данных из регистров DSP в определенные ячейки его памяти и затем считать значения из этих ячеек.

Частота отсчетов на плате задается:

ADC_Rate = 20000/(SCLKDIV + 1) кГц

где: SCLKDIV – переменная DSP, требующая инициализации.

Выбираем максимальную частоту отсчетов, исходя из того, что в течение интервала времени между двумя отсчетами должна успеть выполниться процедура обработки прерывания IRQE и несколько тактов основной программы DSP, но не менее одного. Таким образом, максимальная частота отсчетов составляет 2500 кГц (интервал между отсчетами равен 4*10-7 с) при SCLKDIV = 7.

Время реакции АСКК на внешнее событие считаем следующим образом (с учетом того факта, что в процедуре обработки прерывания IRQE доступно значение отсчета предыдущей выборки АЦП): время между двумя отсчетами плюс время, прошедшее от запуска АЦП до формирования управляющего воздействия. При максимальной частоте время реакции составляет 775 нс. Подобных временных характеристик невозможно добиться, используя в качестве вычислительной среды центральный процессор, какую бы операционную систему мы не взяли. В этом случае требуется передавать данные с платы в оперативную память компьютера, а затем формировать управляющее воздействие центральным процессором. При этом в лучшем случае мы потеряем время на передачу данных по шине PCI или ISA (время аппаратной задержки шины может составлять 6 – 8 мкс [7]), а в худшем случае сыграет свою роль задержка программного обеспечения, в частности, операционной системы, и время реакции может возрасти в сотни раз.

В схеме с сигнальным процессором все данные остаются на плате, а управляющие воздействия формирует этот процессор, т.к. устройства вывода находятся на этой же плате. Алгоритмы, выполняемые на подобных платах, как правило, не должны быть большими, поскольку основное их предназначение - быстрая обработка данных в непосредственной близости от источников сигналов и средств формирования управляющих воздействий, когда время передачи данных в центральный процессор является критичным.

Применяя DSP, не требуется сохранять в базу данных время отсчета, так как интервалы между отсчетами строго фиксированы и, следовательно, объем данных для хранения в базе данных уменьшается в 3,5 раза. Однако, при работе с платой L-783 на максимальной частоте поток данных составляет 5 Мбайт в секунду и сбор данных занимает значительное время процессора. Для эффективного использования вычислительной мощности системы, а также во избежание разрывов последовательности отсчетов применен алгоритм буферизации сбора данных. Учитывая специфику работы жесткого диска, данный алгоритм “ждет” накопления в оперативной памяти достаточного количества отсчетов, и, затем, сохраняет весь блок, тем самым оптимизируя время сбора данных и освобождая центральный процессор для выполнения функций визуализации накопленных данных.

Реализация АСКК под управлением Real-time Linux

Real-time Linux – это свободно распространяемая ОСРВ, в которой маленькое ядро реального времени сосуществует со стандартным POSIX-ядром Linux [8]. Из ядра реального времени запускается Linux-ядро как задача с наименьшим приоритетом, которая выполняется только в том случае, если не выполняется никакая задача реального времени. Принцип действия системы следующий: всю работу с чувствительными ко времени устройствами выполняет подсистема реального времени, а результаты передает в Linux, в которой происходит обработка информации, сбор данных на диск, визуализация, передача в сеть и пр. [8].

Приложение, реализующее АСК, разбивается на две части: первая часть – реального времени, реализованная как модуль ядра (все задачи реального времени должны выполняться в пространстве ядра), в которой осуществляется взаимодействие с платой и минимальный набор вычислений (подсчет Q, формирование управляющего воздействия), и вторая часть - это linux-процесс, который обеспечивает пользовательский интерфейс и сбор данных на диск. Приложение может запускаться автоматически при загрузке системы.

Для передачи данных из ядра в linux-процесс и обратно существует два механизма [8]. Первый – через разделяемую память, второй – через механизм очередей реального времени, которым мы и воспользовались в силу наличия в нем удобных средств для задач сбора данных. Чтение из очереди со стороны процесса linux выглядит как чтение из устройства. Отсутствие драйверов плат ввода-вывода для RT-Linux не является большим препятствием для разработчика. Драйвер в этой системе – это модуль ядра. Так как задача реального времени – это также модуль ядра, то все драйверные функции можно объединить в этот же модуль [9]. Все обращения к плате (то есть запись и чтение из портов ввода-вывода) происходят внутри программы.

Linux-процесс разбивается на три потока. Первый (главный) поток поддерживает пользовательский интерфейс – это движение мыши, способность нажимать кнопки. Второй поток отвечает за обновление информации на экране в течение процесса: текущее значение Q, время с момента запуска процесса. Третий поток обеспечивает сбор данных на диск. Все потоки имеют стандартные приоритеты. Определить сколько процессорного времени требуется интерфейсным потокам несложно: достаточно проверить реакцию интерфейса на движение мыши, нажатие ее кнопок и клавиш клавиатуры. Сколько требуется времени потоку для сбора данных определяется только тестированием. Именно в этом и есть один из недостатков RTLinux: нельзя записывать на диск сразу после поступления данных, в пространстве ядра. Здесь возможна запись данных только в буфер (в данном случае в очередь реального времени), а уже из пользовательского приложения на диск.

Распределение процессорного времени между процессами будет существенно зависеть от выбранного интерфейса. Так как необходимо визуализировать данные с помощью графиков, то интерфейс должен быть графическим. Но системы, поддерживающие графический интерфейс, такие как, например, X Window, требуют значительного количества ресурсов, в том числе и времени процессора. И в случае применения X Window для реализации АСКК максимальное время между отсчетами пришлось бы существенно увеличить.

Есть и еще одна проблема, связанная с использованием X Window. Некоторые видеокарты в сочетании с некоторыми версиями X сервера не позволяют системе функционировать в реальном времени. Это связано с тем, что драйверы записывают информацию на видеокарту, не спрашивая о наличии свободного места в буфере, что останавливает процессор на неопределенное время. Эта проблема до сих пор не решена, а официального списка аппаратного и программного обеспечения, вызывающих такой эффект, не существует. Поэтому, во время работы задачи реального времени интерфейс пользователя псевдографический, реализован с помощью библиотеки newt. Когда задача завершается, можно загрузить X Window и уже там анализировать графики. Приложение в X Window реализовано с помощью библиотеки GTK.

Главная задача при разработке программного обеспечения для АСКК – это оптимально распределить время между процессами, чтобы обеспечить как можно более скоростное функционирование системы в реальном времени, сбор данных на диск и визуализацию хода эксперимента. Главный процесс – это процесс реального времени, в котором производится сбор и первичная обработка данных. Прерывать этот процесс слишком часто не следует, так как будет тратиться много времени (в процентном соотношении) на переключение контекста, а также может переполниться стек RTLinux. С другой стороны, если не прерывать процесс долго, то очередь реального времени переполнится и мы не успеем сохранить все данные.

В результате расчетов и экспериментов мы остановились на следующем. Периодическая задача реального времени запускается с периодом 500 мкс, а в конце каждого запуска прерывается на 40 мкс. При этом данные успевают сохраниться на диск и интерфейс работает приемлемо, то есть быстро реагирует на действия пользователя (при разработке АСКК можно рассчитывать, что данная система не будет использована другими задачами, кроме нашей). Так как задержка планировщика может составлять 20 мкс, то при максимальной частоте работы платы максимальный интервал между двумя отсчетами составляет 60 мкс. Временная диаграмма функционирования программы управления изображена на рис. 3.

Временная диаграмма функционирования программы управления для RT-Linux

Рис. 3. Временная диаграмма функционирования программы управления для RT-Linux.

Описание эксперимента с использованием АСКК

В качестве примера приведен эксперимент по электрохимическому осаждению циркония из хлоридно-фторидного электролита на жидком цинковом катоде, что представляет значительный практический и теоретический интерес. Первый обусловлен простотой удаления цинка из катодного продукта методом вакуумной дистилляции. Второй – тем, что изучение рассматриваемой системы позволяет выявить наиболее общие закономерности осаждения редких металлов на жидком катоде в условиях многочисленных побочных явлений, осложняющих основной электродный процесс. В качестве методов исследования выбраны потенциостатический и импульсно-потенциостатический.

Опыты вели в трехэлектродной ячейке с рабочим расплавом KCl – NaCl – 25% мас. K2ZrF6 массой 60 г (Vэ = 36 см3) при Т = 700° С в атмосфере очищенного аргона. Квалификация солей: KCl – “хч”, NaCl - “хч”, K2ZrF6 - “ч”. Катодом служил жидкий цинк марки ”Ч”, помещенный в тигель из окиси бериллия; растворимым анодом – иодидный цирконий; электродом сравнения – хлорный полуэлемент.

Опыты проводили при последовательном (шаг 100 мВ) изменении задаваемого потенциала без замены катода (Мк = 0,6; Vк = 0,09 cм3; Sк = 0,6 cм2).

Начальный ток i0 фиксировали через t = 1с после включения поляризующего тока, i`0 находили экстраполяцией на нулевое время экспоненциального участка, описываемого уравнением Лингейна:

it = i`0 × exp(-kt)

По тангенсу угла наклона этого участка рассчитывали коэффициент затухания. Электролиз прекращали после десятиминутной выдержки установившегося значения тока iy, далее фиксировали конечный потенциал j кк катода и, с целью установления времени t обменной реакции, его дальнейший спад. Количество электричества, пропущенное через ячейку до выключения тока Q или до его стабилизации Q`, определяли средствами АСКК. Проведенные измерения позволили выделить характерные области потенциалов и связать их с возможными электродными процессами.

Список литературы

1. П.K Агасян, Т.К. Хамракулов. Кулонометрический метод анализа. М.: Химия, 1984. C. 168.
2. А.А. Жданов // PCWeek. 1999. № 8. C. 23.
3. С. Семенцев // Компоненты и технологии. 2000. №4. C. 50.
4. А. Черемисин // Открытые Системы. 1999. № 09-10. C. 52.
5. ADSP-218x DSP Hardware reference. Norwood, USA: Analog Devices Technical Reference Books, 2001, P. 1.4.
6. ADSP-218x DSP Instruction set reference. Norwood, USA: Analog Devices Technical Reference Books, 2001, P. 4.5.
7. С. Сорокин // Современные технологии автоматизации. 1998. № 3. C. 14.
8. V. Yodaiken. The RTLinux Manifesto. Department of Computer Science, New Mexico, Institute of Technology, Socorro, 2001.
9. О. Померанц. Ядро Linux - программирование модулей. М: Изд-во “Кудиц-образ”, 2000. С. 9.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск