ЖУРНАЛ СТА 1/2015

дартных устройств – последовательных портов 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 M OMENTICS Интегрированная среда разработки IDEMomentics позволяет записать лог- файл работы инструментальной систе- мы и проанализировать его с помощью 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 42 СТА 1/2015 РАЗ РА БОТ КИ / ДОБЫВ АЮЩА Я П РОМЫШЛ Е ННОС Т Ь www.cta.ru ЛИСТИНГ 3 void * int_routine(void *arg) //поток для обработки прерывания ID { SIGEV_INTR_INIT(&event); ID=InterruptAttach(inf.Irq,isr_handler,NULL,0,_NTO_INTR_FLAGS_TRK_MSK); //установка обработчика аппаратного прерывания InterruptUnmask(inf.Irq,ID); //разрешение прерываний while(1) InterruptWait(0, NULL);//ожидание прерывания } ЛИСТИНГ 4 const struct sigevent *isr_handler(void*,int) //процедура обработки прерывания { InterruptMask(irqI,ID);//маскирование прерывания на время обработки int_flag=1;//установка флага прерывания out8(0xa0,0x20); // сброс контроллера прерываний InterruptUnmask(irqI,ID);//разрешение прерываний return (&event); } ЛИСТИНГ 5 #pidin –P cay1 pid tid name prio STATE Blocked 442406 1 home/cay1 10r REPLY 241692 442406 2 home/cay1 15r REPLY 98318 442406 3 home/cay1 20r RUNNING 442406 4 home/cay1 23r INTR 442406 5 home/cay1 22r INTR 442406 6 home/cay1 10r REPLY 196630 Рис. 7. Сепаратор алмазов РГС-2

RkJQdWJsaXNoZXIy MTQ4NjUy