[#] Поездка в Бадары
vit01(mira, 1) — All
2021-07-20 04:09:33


Рассказываю о своей первой поездке в [Радиоастрофизическую обсерваторию ИСЗФ СО РАН]( https://goo.gl/maps/B8ki4jf5gHvWjzsm6 ) в урочище Бадары (Бурятия).


## Общие слова

Итак, про новый солнечный радиотелескоп ИСЗФ (он же Сибирский Радиогелиограф), я в своём блоге очень часто пишу, потому что уже на протяжении долгого времени работаю с его данными и потому что устроен в отделе радиоастрофизики. Но работать с уже готовыми данными из Иркутска - это одно, а увидеть всё вживую и своими глазами - совсем другое. Поэтому, конечно же, я очень хотел побывать в обсерватории лично. И как только появилась возможность, сразу же сюда приехал.

Цели поездки были примерно такие:

1. Узнать больше о приборе, выяснить некоторые детали о нём (набраться опыта и знаний)
2. Хорошенько поработать в обсерватории, чтобы упростить людям работу и обслуживание антенн. Эту цель я поставил, потому что уже знал, что у антенн есть проблемы с глючностью прошивок и с постоянными сбоями, поэтому примерно знал, что искать и что исправлять
3. Свалить подальше от родителей, пусть даже и на неделю. Да, это тоже пустим в счёт мотивации
4. Сравнить с другими обсерваториями, где я уже побывал, и посмотреть, а где же жить лучше

## Разбавим текст фотографиями

Все остальные фотки с поездки можно посмотреть [в облаке по ссылке]( https://alicorn.tk/dashie/s/FEkyYnp78zjdFBt ). За некоторые из них спасибо одногруппнику Илье, который ехал вместе со мной (у него на камере лучше стабилизация работает).

Поселили нас вот в таком вот старом советском домике, который стоит посреди леса. От домика до самого здания обсерватории топать 1.7 километров.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/iwmoT7OOxArumqyEMlFc

Как выглядит здание обсерватории - см. фоточки из облака :) Это не просто так, а чтобы вам как читателям был стимул посмотреть все фотки. А я больше сосредоточусь на самом приборе

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/Z69PtOMne64Jl2ePaTgP

Итак, радиотелескоп состоит из трёх антенных решёток, работающих в разных диапазонах. Работает и наблюдает за Солнцем на данный момент только первая решётка: от 3 до 6 ГГц. Те антенны, которые разобраны и лежат, сложенные в кучки - это остатки старого прибора-прототипа (48 антенн, до апгрейда). Мелкие антенны предназначены для второй и третьей антенных решёток, которые ещё не запущены.

Для более высокой частоты наблюдения диаметр антенн меньше, чтобы обеспечить одинаково-широкое поле зрения (если антенны будут большими, то поле зрения по всему небу при повышении частоты наоборот сузится). Это объясняется тем, что при дифракции на щели размер главного лепестка получившейся функции (а значит и лепестка диаграммы направленности) зависит от длины волны и диаметра щели как: \\(dx \sim \frac{\lambda}{D}\\)

Схема расположения антенн первой решётки такая:

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/69UFnAGQgjsRcAMISOun

Облучатель (это такая штука, в которой фокусируется весь сигнал) представляет собой внутри два перпендикулярных друг другу диполя и позволяет извлекать данные в двух поляризациях. Круговые поляризации получаются из линейных путём корреляции и добавления фазового сдвига \\(\pi / 2\\).

Амплитуды сигналов с облучателей собираются мощным 12-битным АЦП, а коэффициенты корреляции с каждой пары антенн (они же в терминологии радиоастрономов называются видности) вычисляются как усреднённая сумма произведений 3-битных (редуцированных) значений амплитуд. Почему из 12 бит сделали 3 бита? Всё достаточно просто: во-первых, вычислительных мощностей микроконтроллеров не хватит для перемножения 12-битных чисел с огромной скоростью, плюс при проведении процедуры усреднения не особо принципиально, какой изначально числовой разрядности будет произведение (на точности это не сильно сказывается). Ранее здесь вообще использовали 1-битный коррелятор, суммирующий только одиночные единички и нули.

Место в подвале, где расположены приёмники сигнала с облучателей и корреляторы:

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/2ZxdBuK1ogbzhfcJkzmz

Для отсчёта времени, кстати, используются атомные часы с Рубидием, привезённые аж из Стенфорда. Для частот порядка нескольких гигагерц уже простыми часами не обойдёшься, иначе вычислить функцию кросс-корреляции сигналов просто так не получится.

Большинство компьютеров здесь, кстати, на Линуксе, и управляются под Fedora (в том числе последней версии). Есть и достаточно мощные компы, например, один из них на Intel Core i9 и с 32 гигами оперативки.

## Чем я тут занимался

### Сисадминские мелочи

Первым заданием мне дали поднять NFS-сервер на компьютере, на котором складируют данные, чтобы было можно было удалённо монтировать файловую систему из локальной сети. Это оказалось достаточно просто.

Потом меня посадили разбираться с интерфейсом местного маршрутизатора Mikrotik, на котором не поднималась вебморда после обновления. С этим тоже справился, заодно вытащил в сеть отвалившийся спектрополяриметр. Так что теперь могу могу себе записать галочкой, что микротик потыкать довелось :). В сети, здесь, кстати, висит вместе с антеннами около 800 устройств. И вполне себе сидят работают.

### Заклинивающие антенны

После этого я получил действительно интересное задание, связанное с перезапуском заклинивших антенн. И здесь придётся начинать издалека. Суть в том, что прошивка антенны, которая управляет двигателем, написана достаточно "осторожно": она реализована так, чтобы в случае неполадок приостанавливать движение антенны (в принципе, это правильно, а то оборудование дорогое). Система наведения, в свою очередь, тоже весьма капризная: заклинивать может и из-за двигателя, и из-за редуктора, и из-за неравномерной нагрузки на оси вращения.

Когда одна из антенн останавливается, то она начинает захватывать меньше сигнала от Солнца, из-за чего на графиках суммы потока излучения наблюдается просадка. Наблюдателей это сбивает с толку. Ведь если на Солнце всё спокойно, то график потока должен быть идеально ровным. А если на Солнце случилась вспышка, то и на потоке происходит всплеск. Поэтому с заклиниванием антенн обязательно нужно было что-то делать, иначе очень легко ловить вспышки по потоку не получится. Кроме этого, антенны рассинхронизировались по фазе, так что картинки тоже получались хуже, чем могли быть.

Обычно, когда с антенной что-то происходило, то её перезапускали отдельно вручную. Потом додумались перезапускать её ход с помощью программы. Мне же встала задача получать информацию о заклинивании в телеметрии антенны и автоматически с помощью скрипта давать ей пинка (а именно выключить и включить).

### Получение телеметрии

Управляющий блок каждой антенны имеет свой IP-адрес и позволяет общаться с собой по протоколу [SNMP]( https://ru.wikipedia.org/wiki/SNMP ). На запросы он отвечает некоторым закодированным выхлопом, который ещё и не до конца задокументирован. Проблема как прошивки, так и управляющего софта заключается в том, что исходников нет (и подрядчик выдавать их пока не хочет, т.к. секрет фирмы). Документация есть, но в достаточно ограниченном виде. К счастью, для меня достали описания большей части полей телеметрии в виде XML-файлов, которые потом скормил в свою программу.

Сначала я пробовал просто опрашивать все 128 антенн в цикле и находить среди них те, у которых ошибка заклинивания. После нахождения проблемных антенн начал пытаться отправить на них команды выключения и включения, в том же цикле.

Время последовательного опроса всех антенн было от 4 до 5 минут (это очень медленно), из-за чего проблемные антенны успевали съехать, а потом перезапускались и вставали на место, и так раз за разом. На графиках потока это отражалось примерно так:

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/vxIPA29wAuE2ouAcYrzG

Поток сильно не падал, но всё равно получалась нехорошая гребёнка. Нужно было засекать проблемные антенны мгновенно, чтобы сразу же их перезапускать, и они не успевали за это время "отстать" от Солнца. К счастью, прошивка позволяет им выставить так называемый SNMP-TRAP-сервер. Это режим, при котором опрашивать вручную все антенны не надо, а они сами шлют информацию на заданный им сервер.

### Пусть антенны сами всё шлют мне

Питоновская библиотека pysnmp кроме простого обмена сообщениями вида запрос-ответ позволяет в том числе работать в виде SNMP-сервера, чем я и воспользовался. Как только сообщение ловилось, в нём искался код ошибки, и если он находился, то мой скрипт отсылал команду перезапуска. Задержки в этот раз не превышали нескольких секунд, и на потоке это не сказывалось. Здесь гребёнки во время работы скрипта уже никакой нет:

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/2clNf5Gj5f7wbALNBbSw

### Полноценный интерфейс для мониторинга

Всё очень круто! Антенны благодаря перезапуску наводятся ровно, графики потока стабильные, картинки будут строиться красивые. Но и на этом останавливаться не стал. Из своего скрипта я решил сделать более-менее полноценную систему мониторинга, чтобы упростить людям работу

1. Телеметрию с кривых антенн стал сбрасывать в лог для дальнейшего анализа
2. Прикрутил уведомления об ошибках в Telegram для сотрудников обсерватории, чтобы можно было оперативно следить за заклиниваниями
3. Оформил всё в виде удобной консольной утилиты, через которую можно запрашивать показатели с отдельной антенны, включать и выключать наводку на Солнце, менять сервер уведомлений у антенн и так далее

> По итогам работы моего скрипта в первой решётке СРГ были найдены 4 антенны, которые полностью отключат и отправят обратно подрядчику на ремонт. Также нашли ещё несколько сомнительных антенн, за которыми будут чаще наблюдать.

Поскольку моя программа для мониторинга оказалась лучше, чем программа подрядчика, начальство планирует её дорабатывать (код уже выложен на институтском Гитлабе), например, сделать веб-интерфейс для просмотра всех показателей антенны в реальном времени. Я принял это как челлендж и решил интерфейс тоже успеть реализовать самостоятельно :)

Вот, что получилось:

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/7tqS8Esb820ii4BM2cbL

Сначала сделал экспорт самой актуальной телеметрии со скрипта в виде JSON с помощью веб-фреймворка [Flask]( https://github.com/pallets/flask/ ). А потом отдельным скриптом с помощью фреймворка [Plotly Dash]( https://dash.plotly.com/ ) накидал вебморду, запрашивающую данные раз в секунду и позволяющую их удобно просматривать.

[Plotly]( https://plotly.com/ ) - это движок для построения интерактивных графиков на языках Python и R. При знакомстве с ним мне понравилась система связи виджетов друг с другом. Может быть, он не настолько прост в настройке как matplotlib, но для веб-приложений, думаю, это идеальный вариант. Наверное, тут следовало бы привести примеры кода, но лучше оставлю ссылку на [официальную галерею]( https://dash-gallery.plotly.host/Portal/ ) примеров, потому что там всё показано как надо. В документации советую особое внимание обратить на секцию Dash Callbacks.

### Что ещё удалось сделать

Сделал много правок для статьи вместе с научным руководителем, посидел на своих совещаниях как обычно, иногда гулял, дочитывал книжку по психологии. И при этом некоторое количество свободного времени ещё оставалось по вечерам, оно уходило на прослушивание музыки и просмотр ютубчика.

## Где лучше: в Бадарах или в Мондах?

Кормят хорошо и сытно как здесь, так и там. Мобильной сети нет и там, и там, но есть вайфай, поэтому всё более-менее нормально.

**Плюсы Монд:**

1. Природа всё-таки там красивее и благороднее. Наверное, дело в том, что Монды находятся на высоте около 2000 метров над уровнем моря, и видны вершины гор
2. Архитектура там тоже прикольнее и интереснее, как из советского фантастического кино. Однако, и в Бадарах её плохой не назовёшь, просто менее интересная
3. Много самых разных научных установок. В Бадарах всё-таки один радиотелескоп
4. Нет комаров. Возможно, летом они тоже есть, но я не был в Мондах летом. В Бадарах комаров по вечерам очень много.
5. В жилом домике было аж 2 монитора. Жаль, что тогда забыл переходник, потому что перед сном посидеть за большим экраном самое то
6. Дорога от научных установок до жилых домиков короче, чем в Бадарах

**Плюсы Бадар:**

1. В жилом корпусе есть персональный душ и туалет, а также центральное отопление. В Мондах туалеты похуже и не в доме. Вместо душа вроде как есть баня, но это не то. Отопление в Мондах печное + электрообогреватель
2. Много цветов в корпусе и в столовой. Очень много красивых цветов
3. Интернет в Бадарах гораздо быстрее и стабильнее. По проводу аж до 100 мбит/c, вайфай - до 50. Это решающее удобство для меня :)
4. Есть персональный холодильник и небольшая электроплита. В Мондах есть печка, но всё равно. Жаль, что стиральной машины нет, так бы точно жить можно было
5. Есть конференц-зал и даже спортзал с тренажёрами

## Что в итоге?

Итогами поездки, конечно, доволен. Удалось хорошо отдохнуть и поработать, я получил представление о том, насколько большая инфраструктура в обсерватории и каким образом она поддерживается в рабочем состоянии. Начальство тоже довольно :) В будущем меня свяжут с другими сотрудниками обсерватории (которые сейчас сидят в отпуске) для обмена опытом и для помощи им с некоторыми вещами. С запуском второй и третьей антенных решёток инфраструктура усложнится, но с моей помощью наверняка удастся упростить её администрирование.

Ещё меня могут допустить к получению сырых данных с прошивки, чтобы выяснить влияние антенн друг на друга, это поможет устранить больше шумов и улучшить качество построения изображений.

Кроме работы с антеннами у меня и так много других научных проектов. Тем не менее, это был полезный опыт, хотел бы снова съездить в Бадары, только ближе к зиме, например, в новогодние каникулы.

Этот пост в блоге: https://blog.alicorn.tk/posts/rao-trip.html