Фильтр по тематике

Опыт разработки многопотокового ПО на базе ОС QNX для сепараторов алмазов

3453 0

В статье рассмотрено применение ОС РВ QNX для осуществления работы системы распознавания образов (машинного зрения) на рентгеноабсорбционных (трансмиссионных) сепараторах алмазов ОАО НПП «Буревестник» в условиях жёсткого реального времени.

Введение

Сепараторы алмазов – это сложное технологическое оборудование, состоящее из целого набора механических, пневмогидравлических и электронных устройств, объединённых программными средствами в комплекс, решающий задачу выделения алмазов из потока дроблёного материала.
Научно-производственное предприятие «Буревестник» уже более 50 лет специализируется на разработке и производстве рентгеновских сепараторов, различной производительности и разной крупности обрабатываемого алмазосодержащего материала. На сегодня основная продукция предприятия – рентгенолюминесцентные сепараторы, использующие явление рентгенолюминесценции алмазов, отличающее последние от основной массы сопутствующих минералов.
С использованием цифровой обработки сигналов выделен набор численных критериев, позволяющих не только выделить до 99% алмазов из потока материала путём оценки интенсивности и кинетики сигналов люминесценции, но и обеспечить селективность – минимизацию числа ложных обнаружений.
В последние годы выход сепараторов Научно-производственного предприятия «Буревестник» на африканский рынок поставил вопрос об извлечении нелюминесцирующих либо очень слабо люминесцирующих алмазов. Это потребовало от производителей сепараторов обратиться к другому физическому признаку, связанному с различием в поглощении излучения.

Принцип действия

Принцип действия рентгенографического сепаратора (РГС) основан на различии поглощения рентгеновского излучения материалами с различной атомной плотностью.
Интенсивность рентгеновских лучей экспоненциально убывает в зависимости от пройденного пути в поглощающем слое

где d – толщина слоя;
I0 – интенсивность источника излучения;
I – интенсивность излучения, прошедшего через поглощающий слой;
k – коэффициент поглощения.
Коэффициент поглощения k пропор­ционален Z3λ3, где Z – атомный номер элемента, λ – длина волны.
   
Алмаз (углерод – С) имеет Z = 6 по таблице Менделеева. Сопутствующие ми­нералы, такие как циркон ZrSiO4, каль­­цит CaCO3, полевой шпат K[AlSi3O8]–Na[AlSi3O8]–Ca[Al2Si2O8], содержат в своём составе химические элементы с бо́льшими номерами, имеют бо́льшую атомную плотность и гораздо сильнее поглощают излучение.
Если пропускать поток обогащаемого материала между источником (рентгеновская трубка) и приёмником – детектором излучения, то интенсивность рентгеновского излучения, попадающего на детектор в данный момент времени, будет зависеть от того, какой минерал (алмаз или нет) находится между источником и детектором. Если это алмаз, то интенсивность излучения, попавшего на датчик, велика, а если сопутствующий минерал, то мала или отсутствует.
Параллельно с описанной зависимостью поглощения рентгеновского излучения материалом от его атомной плотности имеет место зависимость поглощения от толщины куска (объекта) материала в направлении, перпендикулярном потоку излучения. Таким образом, поглощение излучения «толстым» алмазом может оказаться равным поглощению излучения «тонким» сопутствующим минералом (например, в виде пластинки). С целью обеспечить контрастность объектов-алмазов и объектов – сопутствующих минералов независимо от их толщины, в сепараторе использованы два источника излучения с разными энергиями (так называемые высокая энер­гия – ВЭ и низкая энергия – НЭ), расположенные над потоком, и два приёмника излучения, расположенные под потоком последовательно по ходу материала. При оптимальном выборе энергии источников путём совместной математической обработки сигналов приёмников ВЭ и НЭ обеспечивается выявление различия между алмазом и сопутствующими минералами по поглощению излучения. Обработка включает оценку отношения коэффициентов поглощения на ВЭ и НЭ:

Формула (1) справедлива для монохроматического источника излучения, следовательно, оценка (2) является приближённой.
Для дискретного набора данных в каждой точке получим:

Здесь символами N, N0 обозначены оцифрованные значения интенсивности I, I0.
Основное преимущество РГС перед современными рентгенолюминесцентными сепараторами – это возможность выявлять и выделять из потока материала алмазы независимо от характера их рентгенолюминесценции: слабо люминесцирующие либо не люминесцирующие вовсе.
Структурная схема сепаратора (рис. 1) содержит два источника непрерывного рентгеновского излучения, каждый на основе высоковольтного источника питания (ВИП) и рентгеновской трубки (РТ), и транспортную систему с использованием вибропитателя (ВП – дозатор подачи с регулировкой производительности) и ленточного транспортёра для обеспечения постоянной скорости потока материала.
Ширина ленты транспортёра около 200 мм. Датчиками рентгеновского излучения, прошедшего через обогащаемый материал, служат полупроводниковые координатные детекторы на основе линейной фотодиодной матрицы, совмещённой со сцинтиллятором (далее – линейки), преобразующим рентгеновское излучение в световые кванты. Детекторные линейки размещаются по длине в направлении, перпендикулярном потоку материала.
Сигналы датчиков рентгеновского излучения обрабатываются программируемым блоком регистрации (БР), который обеспечивает опрос элементов детектора. При этом одновременно последовательно опрашиваются одноимённые пикселы всех 8 линеек. Встроенные АЦП, установленные на входе БР, преобразуют амплитуды сигналов пикселов в числовой массив, отображающий текущее распределение (по длине детектора) интенсивности излучения, прошедшего через обогащаемый материал.
Помимо регистрации БР поддерживает человеко-машинный интерфейс (ЧМИ) сепаратора на основе графического сенсорного монитора, который позволяет контролировать значения параметров и режимов сепаратора и управлять ими.
Непосредственное управление уст­ройствами: ВИП РТ 1, 2, дозатором, транспортёром, отсекателем, – осущест­вляет контроллер управления (КУ), связанный через соответствующие драйверы с ЧМИ БР с одной стороны и указанными устройствами с другой.
Вся длина детектора разбита на несколько зон (в данном случае – 16), каждой из которых ставится в соответствие исполнительный элемент – пневмоклапан (ПК), отсекающий от потока часть материала в зоне, где обнаружен минерал (алмаз) с малым поглощением излучения. Срабатывание ПК контролируется датчиком.

Структура программного обеспечения (ПО)

Укрупнённый алгоритм программы блока регистрации приведён на рис. 2.
Наряду с поддержкой графического экранного интерфейса и обработкой команд оператора ПО блока регистрации реализует в реальном времени собственно процесс регистрации и анализа алмазосодержащей породы, управление устройствами сепаратора и обслуживание АСУ обогатительной фабрики, в составе которой эксплуатируется сепаратор.
Алгоритм работы с АСУ реализуется в соответствии со спецификацией Mod­bus RTU [2]. Блок регистрации поддерживает стандартные функции Slave, поэтому подробно рассматривать их не имеет смысла.
Остановимся на организации процесса регистрации. Для выделения сигналов алмазов из общего массива сигналов в системе регистрации предварительно задаются численные критерии, учитывающие класс крупности материала, скорость перемещения транспортёрной ленты и частоту формирования входных данных от детекторов. Задаётся диапазон нормализованных значений интенсивности сигналов ВЭ и НЭ, соответствующих полезному компоненту.
Обработка числового массива программой БР осуществляется непрерывно циклически. По окончании очередного цикла опроса детекторных модулей производится обработка принятого массива данных, включающая нормализацию сигналов с детекторов ВЭ и НЭ, сопоставление полученных значений с критерием обнаружения, и далее в случае наличия пикселов, которые классифицируются как принадлежащие ценному компоненту, формирование связанной области таких пикселов. Если полученная после фильтрации область имеет размер больше минимального, формируется сигнал обнаружения, который передаётся в контроллер управления. Транспортную задержку (интервал времени на прохождение объектом расстояния от зоны регистрации до зоны отсечки) и импульс управления отсекателем формирует контроллер управления.
В качестве регистрирующих устройств используются два массива фотодиодных линеек (отдельно для каждого излучателя) по 512 пикселов. Каждый массив поддерживает режим параллельного считывания блоков по 128 пикселов, следовательно, необходимо 4 синхронных независимых канала АЦП для каждого массива. Период опроса массивов связан со скоростью подачи материала по транспортёру и составляет 300–600 мкс. Для оцифровки сигнала выбрана плата АЦП PCI-1714 фирмы Advantech. Плата имеет встроенный сигнальный процессор, осуществляющий сбор данных и сохранение их в буфере FIFO. По достижении программно задаваемой границы буфера выполняется передача данных с использованием механизма прямого
доступа к памяти (DMA). По оконча­нии передачи генерируется аппаратное прерывание. Обработчик прерывания передаёт данные из буфера DMA в ОЗУ программы БР для дальнейшей обра­ботки. На рис. 3 представлено изображение, формируемое из последовательности строк.
Стрелкой показано направление движения материала.
Таким образом, можно выделить следующие функции ПО, требующие различной по времени реакции:
  • процесс поддержки графического человеко-машинного интерфейса;
  • обмен с КУ;
  • поддержка АСУ;
  • анализ данных;
  • обработка прерывания по окончании передачи данных АЦП1;
  • обработка прерывания по окончании передачи данных АЦП2.

Разработка и отладка

Выбор программной платформы

Очевидно, что обеспечить временны́е требования нашей задачи может только операционная система жёсткого реального времени (ОС РВ). Для применяемого оборудования нет специальных требований сертификации ПО или ОС, поэтому основными критериями выбора ОС были компактность, детерминизм, масштабируемость.
Выбор ограничился наиболее известными ОС РВ: VxWorks, LynxOS, QNX Neutrino и Windows CE. Также важными для нас критериями выбора были наличие технической поддержки производителя, удобная среда разработки и отладки ПО, поддержка ОС фирмами-производителями аппаратных средств, наличие низкоуровневого доступа к устройствам системы. Результаты тестирования ОС РВ, представленные, например, в отчёте экспертов Dedicated Systems [3], показывают, что QNX опережает другие ОС РВ по основному критерию «жёсткости» реального времени, кроме того, QNX поддерживают в России официальный дистрибьютор – SWD Software, один из крупнейших поставщиков оборудования для автоматизации – компания ПРОСОФТ и другие.
Основным назначением ОС QNX Neutrino является реализация программного интерфейса POSIX в масштабируемой отказоустойчивой форме, подходящей для широкого круга открытых систем, начиная от небольших встроенных систем с ограниченными ресурсами и заканчивая крупными распределёнными вычислительными системами.
Ключевыми преимуществами ОС РВ QNX Neutrino [4] при использовании во встраиваемых системах являются:
  1. эффективность: ОС РВ QNX Neutrino способна работать в многозадачном режиме, управлять потоками, осуществлять планирование процессов по приоритетам и выполнять быстрое переключение контекстов. Жёсткое реальное время обеспечивается за счёт механизма диспетчеризации с вытеснением (в каждый момент времени работает процесс/поток с наивысшим приоритетом; кроме того, обработчики прерываний имеют приоритет выше, чем у любого процесса/потока) [5];
  2. масштабируемость и гибкость: ОС РВ QNX Neutrino может быть масштабирована до самых компактных конфигураций. Масштабирование осуществляется за счёт включения/выключения процессов, обеспечивающих соответствующий функционал. Разработчики могут легко изменять её конфигурацию в соответствии с требованиями создаваемых приложений. Возможно использование только ресурсов, необходимых для поставленной задачи;
  3. сетевые возможности: ОС РВ QNX Neutrino позволяет интегрировать всю сеть в единый общий набор ресурсов. Для приложений не существует разницы между локальными и удалёнными ресурсами, то есть возможен запуск любого периферийного устройства с любой машины в сети (естественно, при наличии соответствующих прав).
Уникальные возможности эффективности, модульности и простоты достигаются в ОС QNX Neutrino благодаря двум фундаментальным принципам:
  • микроядерная архитектура: микроядерная ОС строится на основе миниатюрного ядра, обеспечивающего минимальные службы для произвольной группы взаимодействующих процессов, которые обеспечивают функциональность более высокого уровня. Ядро в QNX Neutrino отвечает только за базовые примитивы ОС (сигналы, таймеры, планирование и т.п.) [6]. Остальные компоненты системы реализуются отдельно, вне ядра, где каждому определяется своё защищённое пространство. Такая система надёжнее традиционной ОС, где модули ядра могут влиять друг на друга;
  • межзадачное взаимодействие на основе обмена сообщениями: процессы в ОС РВ QNX Neutrino имеют возможность обмениваться данными с помощью сообщений, служащих также для синхронизации при выполнении нескольких процессов. Получая и отправляя сообщения, процессы изменяют своё состояние (время начала и продолжительность работы). Планирование обмена сообщениями осуществляется микроядром.

Решение проблем совместимости аппаратных устройств с QNX


С учётом описанных задач, решаемых ПО блока регистрации, была выбрана аппаратная структура блока (рис. 4), включающая следующие элементы:
  • ЦП – процессорная плата IB945F­(ЦП Intel Core 2 Quard Q9300) производства iBASE;
  • плата цифрового ввода-вывода PCI-1734 компании Advantech;
  • две платы АЦП PCI-1714 Advantech;
  • BlueStorm/SP Opto – многопортовый коммуникационный адаптер – Con­nectTech.
Для реализации человеко-машинного интерфейса необходимо предусмотреть наличие монитора с сенсорной панелью; был выбран промышленный ЖК-монитор TDM-121 фирмы IEI. Основным критерием выбора данных компонентов системы, кроме необходимой функциональности, было наличие драйверов производителя под QNX или открытых низкоуровневых описаний плат (в случае Advantech).

Настройка целевой системы

Несмотря на наличие протестированных драйверов всех отдельно взятых устройств, возникла проблема при сборе инструментальной системы в целом. Все используемые платы – 5 единиц – подключаются к шине PCI. Выделение ресурсов (пространства ввода-вывода и прерываний) осуществляется на уровне BIOS при загрузке системы. Спецификация PCI поддерживает возможность работы нескольких устройств с одной линией запроса прерывания. BIOS по умолчанию выделяет одно и то же прерывание, например, интегрированному контроллеру Ethernet и одной из плат АЦП. При низкой частоте прерываний такая схема отрабатывает вполне корректно, но на практике при периоде прерываний 600 мкс система, если не зависает совсем, то надолго засыпает. Для увеличения производительности в QNX 6.5 [7] можно исключить разделение прерываний между устройствами, включив поддержку APIC (Advanced Programmable Interrupt Controller), что и было сделано по совету специалистов отдела разработки компании «СВД Встраиваемые Системы». Все устройства в системе при этом получили уникальные IRQ (In­ter­rupt Request – аппаратное прерывание). Но проблемы на этом не закончились. Оказалось, что плата BlueStorm/SP Opto не поддерживает работу при загрузке в режиме APIC. По нашей просьбе служба поддержки SWD Software и производитель платы ConnectТech доработали стандартный драйвер так, чтобы прерывания платы получали уникальные предустановленные номера IRQ, свободные в нашей системе. В итоге мы получили распределение векторов прерываний, показанное на рис. 5, с помощью перспективы QNX Profiler.
Используя опцию TimeLine, можно убедиться, что все устройства имеют уникальные IRQ:
  • 2, 128 – сетевой менеджер io-pkt-v4-hc (интегрированный контроллер Ether­net);
  • 3 – драйвер последовательного порта devc-ser8250 (обмен с КУ);
  • 17 – драйвер устройства расширения последовательных портов devc-serCtiPciUart (АСУ);
  • 18, 19 – платы АЦП (рабочая программа cay1).
Стрелками на рис. 5 выделен период прерываний АЦП, который составляет порядка 600 мкс. Оба АЦП работают синхронно.
При запуске программы на такой инструментальной платформе зависания графического интерфейса и периферийного оборудования отсутствуют.

Планирование потоков

Микроядро QNX управляет только потоками, и именно потоки можно считать минимальной единицей выполнения [1]. Каждый процесс в QNX может содержать один или несколько потоков. В нашем случае требуется параллельное выполнение нескольких алгоритмов в одном процессе. Выбор потока, который будет выполняться процессором (то есть активно использовать процессорное время), и есть планирование потоков. Микроядро выбирает, какой поток будет выполняться в следующий момент времени, основываясь на следующих параметрах потоков:
  • приоритет потока (уровень приоритета потока): каждый поток в ОС РВ QNX6 выполняется с каким-то определённым приоритетом. Чем выше приоритет, тем больше шансов у потока получить процессорное время в первую очередь. При наличии в системе двух и более потоков в состоянии Ready (готовых к выполнению) микроядро передаст управление тому потоку, чей приоритет выше;
  • дисциплина планирования: каждый поток в системе выполняется с определённой дисциплиной планирования [1]. Микроядро учитывает дисциплину планирования при наличии в системе двух и более потоков в состоянии Ready, выполняющихся с одним приоритетом. Если потоку задана дисциплина планирования FIFO (First In, First Out), то он может выполняться сколь угодно долго. Управление будет передано другому потоку, только если он будет вытеснен более приоритетным потоком, заблокируется или добровольно отдаст управление. При использовании этой дисциплины планирования поток, который выполняет длительные математические вычисления, может полностью захватить процессор (то есть не позволит выполняться потокам с тем же и более низким приоритетом). Дисциплина планирования RR (Round Robin) отличается тем, что поток не выполняется «бесконечно», а работает только на протяжении определённого кванта времени (time slice). По истечении кванта времени микроядро ставит процесс в конец очереди потоков, готовых к выполнению, и управление передаётся следующему потоку (на том же уровне приоритета). Если же на этом уровне приоритета нет других потоков в состоянии Ready, то потоку выделяется ещё один квант времени.
Используемая в блоке регистрации аппаратная платформа включает 4-ядерный микропроцессор Intel Core 2 Quad Q9300, а загрузочный образ системы поддерживает режим симметричного мультипроцессирования (SMP), поэтому для программного обеспечения выбрана структура, выделяющая описанные ранее задачи в отдельные потоки, каждый со своим приоритетом.
По умолчанию каждый поток при запуске наследует приоритет и дисциплину планирования от потока-родителя. Изменить атрибуты потока можно при помощи специальных функций. Пример иллюстрирует инициализацию потока math_thread с приоритетом 20, дисциплиной планирования RR, выполняющего процедуру start_routine. В случае если создаётся поток для обработки прерывания, одновременно инициализируется соответствующая структура event (листинг 1).

Процесс (1) – поддержка графического человеко-машинного интерфейса – не имеет критических требований ко времени реакции на события и является фоновым для остальных процессов системы, поэтому оставим для него приоритет, определяемый по умолчанию, – 10.
Процесс (2) – обмен с КУ – должен выполняться с более высоким приоритетом, так как по информации от КУ актуализируется текущее состояние сепаратора, выберем для него приоритет 15.
Процесс (3) – анализ (обработка) данных от АЦП – должен выполняться синхронно с чтением данных, и ни один пакет данных не должен быть пропущен, поэтому назначаем ему приоритет 20 (выше, чем у большинства процессов в системе).
Процессы (4) и (5) – обработка прерываний от АЦП – должны быть с ещё более высоким приоритетом, выбираем 22 и 23.
Процесс (6) – обмен с АСУ – также является фоновым в нашей системе, и переназначать ему более высокий приоритет не будем.
Таким образом, для нашей задачи мы инициализируем пять потоков, поток 1 является родительским. Потоки 2 и 6 осуществляют чтение данных из стандартных устройств – последовательных портов ser2 и ser485 – и обработку этих данных. В потоке 4 выполняется чтение данных из буфера DMA и их анализ (листинг 2).

Потоки 4 и 5 осуществляют обработку прерываний от АЦП, поэтому при инициализации этих потоков инициализируется событие, выполняющее уведомление о прерывании.
Потоки 4 и 5 находятся в постоянном ожидании аппаратного прерывания, при возникновении которого генерируется событие event и выполняется процедура обработки прерывания isr_handler (листинг 3, 4).

В начале работы наше приложение сay1 запускает указанные потоки, как видно по результатам работы тестовой утилиты pidin (листинг 5).
Здесь pid – идентификатор процесса (process ID) в системе, tid – идентификатор потока (thread ID) в процессе, prio – номер приоритета потока и дисциплина планирования, STATE – состояние потока.

Отладка ПО, использование встроенной перспективы IDE Momentics

Интегрированная среда разработки IDE Momentics позволяет записать лог-файл работы инструментальной системы и проанализировать его с помощью QNX System Profiler. Можно посмотреть информацию о загрузке каждого процессора, распределении памяти, времени выполнения, миграции потоков между процессорами (рис. 6).

По временной шкале (Timeline) можно проследить, как работает программа cay1. На рис. 6 мы видим все наши шесть потоков (Thread). Поток 1 активизируется раз в несколько миллисекунд, что соответствует работе таймера в Photon, по которому обновляется графический интерфейс. Поток 2 примерно раз в 1 секунду обрабатывает пакет, пришедший от КУ. Поток 3 постоянно ожидает прихода новых данных и выполняет их чтение и обработку. Потоки 4 и 5 каждые 600 мс обрабатывают аппаратные прерывания от АЦП. Поток 6 неактивен и ожидает прихода команды от АСУ.

Заключение

Рассмотренная в статье работа – уже третий проект, реализованный программистами отдела сепараторов. Первые два, завершённые в 2010 [8] и 2011 годах, прошли проверку временем и успешно функционируют в более чем 100 изделиях, что свидетельствует о надёжности системы, обеспечивающей функционирование сепаратора алмазов (рис. 7).

Особенность данного проекта – большой объём математической онлайн-обработки, выполняющей задачу так называемого распознавания образов, или машинного зрения. Эта часть проекта была выполнена специалистами московского ООО «Визиллект Сервис», а затем встроена в ПО на платформе QNX одним из авторов статьи. ●

Литература

  1. Рентгеновское излучение [Электронный ресурс]. – Режим доступа : http://ru.wiki­pedia.org/wiki/Рентгеновское излучение.
  2. Modbus Specifications and Implementation Guides [Электронный ресурс]. – Режим доступа : http://www.modbus.org/specs.php.
  3. QNX 6.5 : RTOS Evaluation Project [Электронный ресурс]. – Режим доступа : http://download.dedicated-systems.com/LinkClick.aspx?fileticket=bma4_-qvzb­Y%3D&tabid=127&mid=474.
  4. Операционная система реального времени QNX Neutrino 6.3. Системная архитектура : пер. с англ. – СПб. : БХВ-Петербург, 2006.
  5. Александр Кузнецов. ОСРВ QNX – выбор, проверенный временем // Встраиваемые системы. – 2009. – № 1.
  6. Микроядерная архитектура [Электронный ресурс]. – Режим доступа : http://www.swd.ru/index.php3?pid=380.
  7. Intel MultiProcessor specification. Version 1.4. May 1997 [Электронный ресурс]. – Режим доступа : http://download.intel.com/design/pentium/datashts/24201606.pdf.
  8. Евгений Владимиров. Сепаратор для обогащения алмазосодержащих материалов с программным обеспечением в среде ОС РВ QNX // Современные технологии автоматизации. – 2011. – № 4.
E-mail: envlad@list.ru

3453 0
Комментарии
Рекомендуем