Заказ на тестирование нейлера
В конце 2019 года к нам обратились за разработкой и тестированием функций для нейлера: основного процесса — забивания гвоздей, а также функций безопасности, самодиагностики, сервисного обслуживания, сбора и отправки статистики в облако. Для разработки сценариев работы устройства мы использовали список функциональных и нефункциональных требований к новому инструменту и нейлер предыдущего поколения, у которого было меньше функций.
Некоторые сценарии было целесообразнее проверить на настоящем инструменте. Например, как нейлер ведет себя при механическом воздействии, сильной вибрации или очень низкой температуре. Возьмем сценарий, по которому инструмент нужно протестировать в условиях арктического холода. Для этого нужно понять, как реальная физическая модель устройства и всех его составных частей будет вести себя в условиях низких температур, предвидеть возможные поломки и отклонения от характеристик. Эти знания необходимы, чтобы потом воспроизвести все изменения в симуляции. Такие ситуации тяжело и дорого имитировать в HIL из-за физической сложности их модели, поэтому примерно 5% всех тестов заказчик и один из наших инженеров провели в лаборатории. Там же исправили незначительные недостатки в работе инструмента.
Все остальные тесты для проверки возможных состояний и процессов нейлера мы выполнили самостоятельно. Например, проверили выстрел гвоздя, перезагрузку гвоздей из обоймы после выстрела, режим паузы в работе, разряд аккумулятора. Одна из задач — протестировать сценарий, когда в обойме заканчиваются гвозди. Для этого инженер анализирует, что происходит на реальном устройстве. Инструмент выходит из режима энергосбережения, включается электродвигатель, натягивается пружина, затем оператор нажимает кнопку выстрела. Датчик, который определяет наличие гвоздя в канале, выдает ошибку, и ПО блокирует спуск пружины в инструменте.
Во время тестирования нужно было соблюдать меры предосторожности и при этом не нарушать условия самоизоляции. У нас было несколько вариантов решения этой проблемы.
Как протестировать нейлер не выходя из дома
Первый вариант — отключить датчики безопасности и использовать сам строительный инструмент. Недостатки этого решения:
- Использование нейлера без датчиков безопасности может привести к травмам.
- Не все сценарии работы инструмента можно проверить в домашних условиях.
- Невозможно выдать каждому сотруднику по инструменту для работы дома.
Второй вариант — готовая платформа симуляции на компьютере Software-in-the-Loop (SIL). Это хороший подход, если нужна симуляция только цифровой схемы — микропроцессоров, интерфейсов и компонентов, но нет аналоговых составляющих, то есть двигателей или сенсоров. В нашем случае пришлось бы программно эмулировать микроконтроллер, мотор, аналоговые датчики. Технически это возможно, но значительно увеличивает затраты на проект.
Третий вариант — HIL. В нашем случае это решение оказалось наиболее оптимальным по деньгам и времени. Мы уже использовали установку для симуляции окружения на двух несложных проектах для того же заказчика, поэтому в наличии были и сами устройства, и опыт работы с ними.
Что такое HIL-установка и из чего она состоит
Установка Hardware-in-the-Loop (HIL) — аппаратная платформа, с помощью которой можно имитировать окружение разрабатываемого прибора. Она включает три компонента:
Тестируемое устройство. Мы подобрали плату для прототипирования и быстрой разработки, которую обычно используют в хобби-проектах и для создания прототипов, — Nucleo на базе STM32. Такой же микроконтроллер используется в нейлере, хотя в остальном платы отличались. Но для HIL-тестирования это неважно, главное — подходящий микроконтроллер, поэтому мы без проблем запустили ПО инструмента.
Устройство симуляции окружения — плата со своим микроконтроллером. Она имитирует компоненты реального нейлера, без которых не будет работать ПО: мотор, кнопки, лампочки, сенсоры. Мы использовали продвинутый вариант HIL, поэтому на установке был дополнительный чип. Он симулировал аналоговые сигналы — например, синхронный бесколлекторный мотор, который было бы очень сложно воспроизвести только на микроконтроллере.
Средство коммутации — материнская плата, которая соединяет тестируемое устройство и симулятор окружения. На ней выведены все разъемы, поэтому можно подключить любой разъем от тестируемой платы к любому разъему платы для симуляции перемычками.
Как работать с HIL из дома
Небольшой размер HIL — 40 на 40 см — и наличие в компании пяти аппаратных платформ позволили нашим разработчикам забрать установки и работать с ними из дома. Однако HIL — не единственный необходимый компонент для имитации работы в лаборатории.
Помимо подключения самой платформы, нужно установить и настроить лицензионное ПО для работы с HIL. У наших разработчиков оно уже было установлено на рабочих ноутбуках, которые сотрудники взяли домой на время самоизоляции. Помимо этого, нужно подключение к корпоративной сети, в которой хранится, например, исходный код. Для этого мы использовали корпоративный VPN-сервис.
Когда мы решили вопрос удаленной работы, появились дополнительные сложности.
С какими трудностями мы столкнулись в работе
Тяжелее всего симулировать аналоговую часть устройства: мотор и датчики. Для этого нужно создать правильную модель электродвигателя с фазой разгона, выбега после выключения, обратной ЭДС. Для этого нам недоставало знаний электромеханики, поэтому мы обратились за консультацией к профессору МГУ.
Еще одна сложность — коммутация тестируемого устройства с платформой симуляции. Они соединялись проводами-перемычками. Это надежно, но при симуляции скоростных шин и передачи данных с большой частотой мы столкнулись с искажением сигналов — паразитными наводками.
Из-за них система работала не так, как должна была бы. Например, когда мы симулировали передачу данных по Bluetooth со скоростью 1 Мбит/с, в проводах генерировалось электромагнитное излучение. Оно вызывало в соседних проводах фантомные сигналы, из-за которых появлялись помехи и шум, а данные после передачи оказывались повреждены.
Об этой особенности коммерческого решения не было сказано ни в документации, ни в техподдержке. Причину искали несколько недель. Проблему решили экранированием: завернули провода в фольгу, и наводки прекратились. Если вы работаете с высокоскоростной передачей данных, обратите внимание на электромагнитную совместимость.
Поскольку мы использовали готовую коммерческую HIL, в комплекте шла документация. К сожалению, она не всегда была подробной и понятной. На данный момент ни стандарта, ни устоявшегося подхода к разработке симуляционных моделей не существует: каждый производитель использует уникальный подход и средства реализации. Эти знания не найти в университетских курсах или интернете. Каждый, кто начинает разрабатывать симуляцию в коммерческой HIL-системе, должен изучить ее документацию и понять, как разрабатывать модели.
В нашем случае сама среда разработки симуляции была сложной: очень много классов, абстракций, дополнительных условий для работы. Но при этом документация не описывала всех особенностей, целей и назначения некоторых компонентов. Было мало примеров работы. Иногда нам приходилось угадывать или экспериментировать с функциями, чтобы найти рабочее решение.
Наконец, нам пришлось принимать повышенные меры электробезопасности. Для защиты мы поставили трансформаторы для гальванической развязки и оптические изоляторы интерфейсов. Программистов, которые работали с электрооборудованием, отправили на обучение и сертификацию по правилам электробезопасности.
Высокие риски, связанные с электробезопасностью, не особенность именно HIL-установки. С ними сталкивается почти любой разработчик встраиваемого ПО: если на рабочем столе лежит прибор со снятой защитной крышкой, есть риск случайно дотронуться до каких-либо проводников под напряжением и получить удар током.
В случае HIL-установки также есть открытые проводники. Сама установка обычно не имеет частей с высоким напряжением, а само по себе напряжение 5–12 вольт не принесет вреда. Но инженер может, например, случайно дотронуться до заземленного радиатора отопления и открытого проводника HIL-установки, между которыми может быть большая разность потенциалов. Для защиты от этого и нужна гальваническая развязка по питанию.
Еще одна распространенная проблема в работе с HIL-установками — проверка достоверности тестов.
Как понять, соответствуют ли тесты реальности?
HIL — не полноценная замена тестам на реальных устройствах. Всё, что мы делаем, надо потом перепроверять на настоящем устройстве. Порой мы создаем с помощью установки искусственные условия, которые не обязательно совпадают с реальностью, но помогают протестировать большую часть функций устройства.
Чтобы протестировать ПО, нужно тщательно изучить сценарии его работы, а затем максимально точно воспроизвести их. Инженер, который разрабатывает симуляцию, должен иметь доступ к реальному устройству и его схеме, но при этом не должен знать ничего о ПО, над которым работает компания.
Если инженер знает суть разрабатываемого ПО, у него появляется соблазн подогнать симуляцию под код. Например, нужно протестировать защиту от перегрузки электродвигателя. Инженер разрабатывает его модель. Если он знает, что в тестируемом ПО алгоритм выявляет перегрузку только по показаниям датчика тока, тогда у инженера будет желание имитировать не всю работу устройства и его физику, а только его датчика тока.
Это чрезмерно упростит модель двигателя, в результате одни и те же ситуации на симуляции и на реальном устройстве могут различаться. Чтобы избежать этой проблемы, в нашей компании инженер, который разрабатывает симуляцию, не включается в коммуникации команды разработки ПО.
Порой бывает так, что, несмотря на тщательную имитацию устройства, ПО всё равно не работает на реальном инструменте. Часто требуются мелкие доработки, потому что специфика конечного устройства иногда в мелочах, на которые никто не обратил внимания. Например, длина провода.
У провода другой длины будет:
- другое электрическое сопротивление — например, 5 ом вместо 1 ома, то есть будет приходить электрический сигнал меньшего уровня;
- другая индуктивность и другие условия прохождения сигнала. Это незаметно на низких частотах, но при необходимости имитации, например, скоростных шин данных другая индуктивность может значительно изменить поведение;
- другое электромагнитное поле вокруг, которое влияет на другие проводники, расположенные рядом. Например, провод длиной 1 м не будет создавать серьезных помех в работе других шин данных рядом, а для 5-метрового это более вероятно.
Несмотря на необходимость повторных тестов на реальном устройстве, в ряде случаев HIL может оказаться очень полезной в разработке ПО.
Когда пригодится HIL?
HIL помогает быстро начать работу над проектом. Можно не оборудовать полноценную лабораторию, а тестировать в симуляции, по крайней мере, на начальных этапах разработки.
Для простых проектов не обязательно покупать коммерческое решение, можно собрать установку самостоятельно. HIL — это концепция, а реализация может быть как сложной и дорогой, так и простой для симуляции несложных сценариев. Любая HIL-установка состоит из тестируемого устройства, устройства симуляции окружения и средства коммутации, разница будет заключаться лишь в характеристиках этих элементов.
Например, задача — сделать простую HIL-установку для тестирования ПО для умной лампочки. Мы подобрали и купили отладочную плату с таким же микроконтроллером, как в самой умной лампочке. Дальше нужно устройство симуляции окружения. Для такого простого случая подойдет почти любая другая отладочная плата: Arduino, Nucleo или даже Raspberry Pi.
Соединяем эти две отладочные платы между собой временными перемычками. На плате симуляции окружения делаем простую симуляцию периферийных устройств, которые есть в лампочке кроме микроконтроллера: Wi-Fi-модуль, потенциометр, датчик напряжения, LED-драйвер.
У нас получается рабочая HIL-установка, которая позволит протестировать большинство сценариев. После окончания проекта HIL легко переиспользовать для других проектов. Мы работали с моделью, которая предназначена для устройств на микроконтроллерах, то есть подойдет для тестирования чего угодно, от игрушек до бытовой техники.
HIL-методику можно использовать для более сложных устройств. Например, тех, которые имеют в своем составе систему на кристалле (SoC). Состав HIL-установки будет в точности таким же: тестируемое устройство, устройство симуляции и средства коммутации.
Обычно системы на кристалле, в отличие от микроконтроллеров, гораздо более производительные и имеют скоростные интерфейсы. Можно найти коммерческое решение или собрать установку самостоятельно, подобрав необходимую платформу для симуляции.
В заключение
Итак, применение HIL-симуляции потребует первоначальных вложений сил и средств на изучение и внедрение.
Неважно, будете ли вы применять дорогие и сложные коммерческие решения или соберете собственную простую установку из подручных компонентов, — в дальнейшем ваши усилия окупятся удобством и новыми возможностями в разработке ПО, которые станут доступными с применением этого подхода.