Разработка системы тестирования аппаратно-программного комплекса PNRS для Cassel Aero
Заказчик: Cassel Aero
Отрасль: Электроника и аппаратное обеспечение
Каждое рабочее место разработчика и тестера было оснащено программным модулем для проведения отладки и тестирования (в прошлых трёх поколениях использовалась специально разработанная аппаратура).
Ситуация
Во время разработки системы наведения при помощи спутниковой навигации Precision Navigation and Recognition System (PNRS) необходимо постоянно производить отладку и тестирование у разработчика. В условиях отсутствия реального вертолёта доработки системы необходимо производить в виртуальной среде.
Обычно новые требования к системе у заказчика появлялись зимой, когда полёты временно прекращались. Но часто возникали ситуации, когда заказчик задумывал функцию, а на этапе внедрения (за 1-2 недели до начала лётного сезона) после пробных полётов видел, что требования к ней должны быть несколько иными, либо она конфликтует со старым функционалом. По этой причине требовалось достаточно быстро внести в систему новые изменения и провести их тестирование. Имея на столе эмулятор, заказчик мог сымитировать полёт, получив версию программы уже в январе-феврале. Оценив результат, он мог скорректировать ТЗ, когда у разработчиков ещё остается время на полноценную переработку и тестирование. Таким образом, создание виртуальной среды для проведения различных проверок работы оборудования оказалось востребованным на всех этапах разработки нового функционала PNRS.
Решение
За 12 лет проекта (2013) виртуальная среда прошла минимум через 4 поколения вместе с развитием аппаратуры, установленной в вертолёте. Рассмотрим только последнее из них.
В реальной системе имеется блок, разработанный в АстроСофт, который управляет всем оборудованием, отвечающим за процесс распыления удобрений. В частности цифровыми выходами и входами, аналоговым выходом, отвечающим за ширину разбрасывания материала, аналоговым входом, показывающим количество оставшейся селитры в чане и т.п. Протокол связи с этим блоком разработан силами АстроСофт, поэтому полностью известен. Устройство подключается через шину USB. Базовой ЭВМ у заказчика является ноутбук, поэтому он может запускать программу и в вертолёте (при этом устройство подключено к USB) , и в ангаре (устройство не подключено).
Было принято решение устанавливать на ЭВМ ActiveX компонент. Библиотека, обеспечивающая связь с оборудованием, пытается найти USB устройство. Если оно не обнаружено, запускается ActiveX компонент, который полностью имитирует реальное устройство и передаёт данные по тому же протоколу. Таким образом, устанавливается связь либо через реальный USB-канал, либо через виртуальный канал. Первоначальные варианты установки связи через сеть были отвергнуты в виду сложности обучения пилотов заказчика, не являющихся специалистами в данной области, правилам настройки фаервола.
Как следствие, с точки зрения основной программы и библиотеки связи нет никакой разницы, с чем они работают. То есть производится проверка всех программных модулей так, будто работа ведётся с реальным оборудованием.
В интерфейсе пользователя не используется клавиатура: так как программой PNRS нужно управлять с помощью широкого набора «горячих» клавиш, может возникнуть конфликт. Было принято решение управлять эмулятором при помощи джойстика, так как этот канал не создаёт конфликтов с другими устройствами ввода. Кроме того, джойстик – привычный элемент управления для пилота.
Для проверки программы на утечки и взаимные блокировки одних программных модулей другими (по мнению заказчика, зависания некоторых версий PNRS были из-за блокировок, но впоследствии было доказано, что это результат зависания сторонних драйверов использовавшегося тогда оборудования) в компонент введён режим автопилота. Пользователь выбирает большое количество областей для удобрения, а также точку загрузки селитры, после чего система автоматически имитирует поведение пилота, заводя вертолёт на треки и подлетая к точке заправки. Такой режим используется для ночных тестов. Утром проверяется, не произошло ли утечек памяти, не зависла ли программа, не упало ли её быстродействие ниже критического из-за большого количества графических объектов (каждая обработанная территория отображается на карте согласно требованиям заказчика).
Результат
Каждое рабочее место разработчика и тестера было оснащено программным модулем для проведения отладки и тестирования (в прошлых трёх поколениях использовалась специально разработанная аппаратура). Из дополнительно закупаемого оборудования требуется только джойстик. Благодаря этой системе удаётся воспроизвести полёт с условиями, наиболее приближёнными к реальным. Компонент имеет также режим автопилота для проведения длительных тестов без участия человека.
Заказчик при помощи этого же компонента может проверять принятые им решения ещё до реальных полётов, а по результатам – оперативно корректировать требования, оставляя время на переработку архитектуры и глубокое тестирование.
Кроме того, разработанный компонент используется для внутренних сертификационных испытаний оборудования без необходимости оплаты услуг диспетчера и затрат лётных ресурсов вертолёта. В этом случае его подсистема GPS выводится на реальный COM-порт, а остальное оборудование подключается через основной USB-канал. Имитируя полёты, можно проверять срабатывание всех реле, открывание/закрывание крышки чана, скорость работы разбрасывающего диска, правильность работы прочих узлов. Только если внутренние испытания показали полную работоспособность всех систем, производится реальный сертификационный полёт.
Используемые технологии
Тестовый ActiveX компонент разработан на языке C++ в среде Microsoft Visual Studio 9.0. Работа с джойстиком осуществляется средствами WIN32 API. Среди прочего, компонент содержит эмулятор GPS/ГЛОНАСС приёмника, работающего по протоколу NMEA.
Скачать