В МФТИ есть как факультеты, которые готовят сильных программистов, так и факультеты, выпускающие крутых специалистов в области физики, биологии и химии. Однако в сфере физических исследований также не обойтись без навыков программирования. В частности, все масштабные физические эксперименты автоматизированы.
Из-за того, что программы обучения (а, следовательно, и компетенции) физиков и программистов сильно отличаются, при их совместной работе над экспериментами нередко возникают трудности. Мы в лаборатории методов ядерно-физических экспериментов ставим своей целью подготовку специалистов, которые могут и разобраться в физике процессов, и написать необходимое программное обеспечение. Для этого в прошлом году мы запустили магистерскую программу, а в этом еще один проект, направленный на знакомство физиков с программированием. О нем я и расскажу в этой статье.
Меня зовут Татьяна Мухина. Я учусь в магистратуре МФТИ и по совместительству являюсь одним из авторов и преподавателем курса «Введение в системы сбора данных».
На первых курсах в МФТИ даже на физических факультетах, конечно, преподается программирование. В зависимости от направления студенты изучают Python, С или C++. Обычно эти курсы направлены на знакомство с основами языка или численными методами, а вот реализацию систем сбора данных студентам не рассказывают.
Тем не менее даже на первых курсах студенты могут сталкиваться с задачами, в которых им пригодился бы этот навык. Например, на экзаменах по общей физике учащиеся не только должны ответить на выпавший им билет, но и рассказать заранее подготовленный вопрос по выбору. Это может быть как теоретический материал, выходящий за рамки изучаемого курса, так и результаты исследования, которое они провели с использованием собственной экспериментальной установки – а для этого могут потребоваться автоматизированные системы сбора данных.
Именно поэтому у нас возникла необходимость создать ознакомительный курс по системам сбора данных, который позволил бы за один семестр познакомить физиков с работой таких систем. В качестве языка программирования для курса мы выбрали среду разработки LabVIEW. Она хорошо показывает себя в управлении системами сбора и обработки данных в учебных целях или в небольших экспериментах, так как ее проще освоить, чем классические языки программирования. Также для большинства устройств и датчиков уже есть готовые драйверы для работы в LabVIEW.
Курс реализуется как факультативный: на него могут записаться все желающие по согласованию с преподавателем, но мы рекомендуем его студентам 2-3 курса физических факультетов. Пробный запуск курса проводился в формате интенсива и был рассчитан на 4 занятия по 4 академических часа. В дальнейшем курс будет расширен до полноценной семестровой дисциплины (15 пар).
Цели и задачи курса
У курса две цели:
Знакомство студентов с особенностями современных систем сбора данных.
Получение ими практических навыков создания таких систем на примере программно-аппаратного комплекса LabVIEW на базе инженерного лабораторного комплекса NI Educational Laboratory Virtual Instrumentation Suite (NI ELVIS) III.
Задачи курса:
Изучение теории передачи и записи аналоговых и цифровых сигналов, протоколов различного уровня.
Изучение основных инструментов, которые используются в системах сбора данных.
Изучение системы LabVIEW для сбора данных и управление небольшими экспериментами.
Об ELVIS III
В качестве устройства сбора данных мы использовали инженерный лабораторный комплекс NI Educational Laboratory Virtual Instrumentation Suite (NI ELVIS) III. Он сочетает в себе необходимое контрольно-измерительное оборудование (АЦП, ЦАП, осциллограф и генератор сигнала) и встроенную макетную плату для сборки электрических схем.
К недостаткам можно отнести необходимость скачивания (и покупки) дополнительного программного пакета LabVIEW ELVIS III, а также некоторые проблемы взаимодействия с комплексом, которые опишем дальше.
Программа курса
При создании программы курса и методических материалов мы руководствовались следующими идеями:
нужно предусматривать больше задач для самостоятельной работы студентов, при необходимости после разбирать их в группе;
в сложных задачах можно давать последовательный алгоритм работы программы, а не готовую инструкцию по ее написанию;
необходимо включать больше прикладных задач.
Программа курса для пробного запуска выглядела следующим образом:
Введение в графическую среду разработки LabVIEW.
Использование визуального языка LabVIEW для работы с инженерным лабораторным комплексом NI Educational Laboratory Virtual Instrumentation Suite (NI ELVIS) III.
Сборка и настройка схемы трехразрядного аналого-цифрового преобразователя.
Настройка цифрового двухканального осциллографа на базе NI ELVIS III.
Каждый пункт соответствовал одному занятию протяженностью 4 академических часа (2 пары).
Введение в графическую среду разработки LabVIEW
В этом разделе мы предлагали студентам за две пары познакомиться со средой разработки LabVIEW. Занятия начинались с обсуждений основных принципы работы в среде. Для знакомства с базовым синтаксисом языка мы давали студентам простые задачки, а чтобы решать их было интереснее, задачи постарались сделать более прикладными. Например, студентам было предложено поэтапно создать конвертер энергии из одних единиц измерения в другие:
Написать программу, которая переводит введенное в джоулях значение энергии в электронвольты и в килокалории.
Сделать непрерывным выполнение программы из задачи 1 после однократного запуска. Добавить задержку в 100 мс.
Реализовать конвертер введенного в джоулях значения энергии в электронвольты, если кнопка нажата, и в килокалории, если кнопка отпущена.
Используя структуру Case и контроллер Enum, создать конвертер энергетических единиц измерения: в числовой контроллер вводится значение энергии и контроллером типа Enum выбирается единица измерения из предложенных, далее из аналогичного списка выбирается единица измерения, в которую необходимо перевести величину, после нажатия кнопки “Перевести” в индикаторе появляется необходимое значение энергии в требуемой единице измерения.
В еще одном блоке задач нужно было написать программу для вычисления оценки по матанализу исходя из баллов за работу в семестре и оценки за экзамен – в МФТИ это определяется по достаточно сложной системе. Заключительная задача была выбрана так, чтобы объединить в себе уже полученные знания. Студентам предлагалось смоделировать полет снаряда, который бросили под углом к горизонту, при выборе различного характера силы трения (сухое или вязкое).
Использование LabVIEW для работы с NI ELVIS III
На этом занятии студенты должны были узнать возможности комплекса NI ELVIS III, а также научиться взаимодействовать с ним посредством LabVIEW. Взаимодействие с NI ELVIS III происходит по стандартной схеме: открытие канала, при необходимости конфигурация взаимодействия, само взаимодействие и закрытие канала.
Сборка и настройка схемы трехразрядного аналого-цифрового преобразователя
Задачи этого блока курса – за две пары собрать схему трехразрядного АЦП, написать программу, которая анализирует приходящий сигнал и обрабатывает его, выводя двоичный код отклика и полученное значение напряжения. После этого студенты должны сравнить работу готового трехразрядного АЦП и встроенного АЦП NI ELVIS III.
Чтобы справиться с этим заданием, студентам предложили такой алгоритм работы программы:
программа управляет аналоговым выходом, с которого подается напряжение на вход схемы АЦП;
в цикле программа считывает значения напряжения с цифровых входов, к которым подключены 7 выходов АЦП;
из полученных значений формируется двоичное трехразрядное представление входного напряжения;
программа преобразовывает его в значение напряжения входного сигнала и в реальном времени выводит на график;
для сравнения с работой встроенного в NI ELVIS III АЦП на тот же график программа выводит значение напряжения с аналогового входа NI ELVIS III, на который подается входной сигнал;
программа завершает свою работу по кнопке «Stop».
Мы сознательно дали студентам алгоритм работы программы, а не четкий порядок действий по ее созданию. Это позволяет оттачивать навык самостоятельного написание программ на первых этапах.
Настройка цифрового двухканального осциллографа на базе NI ELVIS III
В этом блоке в течении двух пар студенты должны настроить цифровой двухканальный осциллограф. Выполнение этого задания полезно для большей осознанности при дальнейшей работе с этим устройством, а также позволит при необходимости воссоздать процесс его работы. Так же, как и в задании по реализации АЦП, для написания программы мы дали студентам алгоритм ее работы и готовую лицевую панель. После настройки осциллографа студенты с его помощью должны были исследовать работу амплитудно-частотного фильтра.
Выявленные недостатки и дальнейшие планы по доработке
Сначала мы протестировали программу на небольшой группе студентов. Первый запуск прошел успешно и показал, что у ребят есть необходимость в таком вводном курсе по системам сбора данных. Но не все было гладко: мы нашли несколько недочетов в текущей программе курса, о которых сейчас и расскажем.
Во-первых, чтобы работать с ELVIS III, необходимо устанавливать дополнительное ПО, доступное только для Windows. Так как студенты работают на собственных ноутбуках (часто на macOS или Linux), это добавляет проблем к установке программного пакета. Поэтому для небольших вводных задач мы решили выбрать другое, более простое устройство для сбора данных.
Во-вторых, уже на первом занятии мы поняли, что выделили недостаточно часов для освоения LabVIEW. Это привело к тому, что при выполнении более сложных задач студенты все еще сталкивались с проблемами уровня простого синтаксиса. Чтобы исправить эту ситуацию, мы решили на следующих запусках курса в два раза увеличить количество часов, выделяемых на изучение LabVIEW.
Также мы заметили, что студентам было трудно писать алгоритм работы АЦП на первых этапах изучения ELVIS III – до этого они не сталкивались с устройствами сбора данных. Поэтому мы решили добавить занятие с совсем простыми задачами. Например, измерить напряжение с помощью АЦП, затем написать программу и собрать схему для измерения сопротивления элемента цепи, а позже использовать эту схему для определения температуры воздуха в комнате с помощью терморезистора.
И последняя проблема: изначально мы планировали проводить занятия один раз в неделю по 4 академических (или 3 астрономических) часа. Такой формат оказался очень интенсивным: студентам было тяжело усваивать и сразу применять полученную информацию.
В целом пробный запуск показал нам, что развитие курса и его масштабирование на большее число студентов имеет смысл. Сейчас мы находимся на этапе доработки методических материалов и планируем второй запуск уже в весеннем семестре. Будем рады, если наш опыт создания и анализа курса по системам сбора данных будет вам полезен!