AI От студенческих экспериментов до промышленных решений: история одного разработчика

AI

Редактор
Регистрация
23 Август 2023
Сообщения
3 747
Лучшие ответы
0
Реакции
0
Баллы
243
Offline
#1
Никогда не предполагал, что погружусь в математическое моделирование, компьютерные симуляции и прочие непростые материи. В планах было создавать компьютерные игры, грезил о том, чтобы играть тяжёлый металл — но уж никак не создавать какие‑то цифровые двойники. Однако жизнь, как выясняется, не то, чтобы сложнее, чем думалось, но куда интереснее. А может, просто страннее? Впрочем, это не важно.

Наверное, мой путь покажется довольно стандартным. Школа – университет – работа. Попробую немного рассказать про каждый из этих этапов.

Школа и первые квесты


Для олдфагов CRPG

В школе Информатика преподавалась, как мне кажется, больше для галочки, хотя какие-то фундаментальные знания об устройстве ЭВМ, битах, байтах и прочих вводах/выводах я получил. Гораздо больше я получал знаний по математике, физике и химии – это была специализация класса. Личный компьютер у меня появился в 2001, и естественно, я тут же с головой окунулся в компьютерные игры.

Как ни странно, удовольствие от игр в те годы, сопровождалось еще и постоянным поиском. Поиском самих игр, а главное – путей к их нормальному запуску, оптимизации. Приобретением таких полезных навыков как переустановка операционных систем (не только Windows, беспокойный молодой ум привел меня к экспериментам с Red Hat в 2003 году, это было больно), увеличение файла подкачки, постоянные маленькие оптимизации на основе советов старших друзей и статей из «ЛКИ»(журнал «Лучшие компьютерные игры») и «Игромании» формировали, я назову это, инженерный характер.

Отдельными упражнениями стали забавы с такими вещами как гитарные процессоры, типа «Guitar Rig». Поиск драйверов, уменьшение задержек, попытки добиться приемлемого звучания (как на Black Album у Metallica) в 2005 году были для меня своеобразными квестами тех лет.

Однако самим программированием я почти не увлекался. А вот цикл статей в том же «ЛКИ» о разработке собственной игры на Delphi с нуля я жадно читал с интересом. Прикоснулся я к программированию, когда пытался создавать свои модификации для Neverwinter Nights 2002 года выпуска. Насколько я помню, редактор модов был очень удобный и понятный, но, чтобы воспроизвести что-то сложное приходилось писать макросы (поведение NPC или нестандартные игровые механики) на специальном языке. А может это были плюсы(С++)…

К сожалению, этих деталей уже не помню. Как бы там ни было, весь «набитый опыт» потом мне пригодится и в университете, и в профессиональной деятельности.

Университетские эксперименты


Закончив школу в славном городе Тамбове, я поступил в Российский государственный геологоразведочный университет(МГРИ-РГГРУ) на кафедру «Автоматизация, механизация и энергоснабжение горных и геологоразведочных работ». Казалось бы, ничего общего с моделированием, играми или рок музыкой. Ну разве что какая-нибудь плоская шутка или анекдот про тяжелые металлы, и мем из Breaking bad.


Хэнк осуждает

Учеба шла, я бы сказал, непринужденно, отчасти из-за хорошего школьного образования, усидчивости, и как позже выяснилось, правильного выбора специальности. Дело в том, что я совершенно до поступления не понимал, чем будет заниматься выпускник данного ВУЗа по специальности. Пока, на 3-м курсе не начали преподавать мой любимый, и, если можно так выразиться, «семейный» предмет – электротехника.

Семейный – потому что дед по отцовской линии знал электротехнику на отлично, и в 11 лет собрал свой первый радиоприемник, папа – также знал на отлично и также собрал свой первый приемник, а я… В этом возрасте спалил радиоприемник. Но зато научился чинить всякие джойстики и блоки питания от SEGA. И все-таки законы Ома и правила Кирхгофа усвоил я довольно быстро, как только добрался до них в школьной программе по физике.

Вернемся в ВУЗ. Предмет давался особенно легко, да и профессор, ставший в последствии одним из моих научных руководителей, был настоящим ученым с большой буквы. Параллельно мое внимание также захватил курс по Автоматизации горных машин и механизмов — это тот, где про всякие передаточные функции, триггеры и прочую булеву алгебру рассказывают.

Вот эти два предмета и дали основу новому увлечению, да и вообще всему моему карьерному пути – математическому/имитационному/симуляционному моделированию. Тут нужное можно подчеркивать, поскольку словосочетаний в нашей литературе встречается великое множество.

Будет правильным, прояснить – к составлению уравнений и новых математических закономерностей я совершенно не испытывал влечения, а вот использовать графические программные средства (CAE еще их называют) – отнюдь.

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


Модель электротехнического комплекса буровой установки для исследований

[Пояснение о какой диагностике идет речь. Токовая диагностика электродвигателей или Motor Current Signature Analysis (MCSA) — это метод контроля технического состояния оборудования, основанный на анализе потребляемого тока. В процессе диагностики регистрируют и исследуют токовые сигналы, выявляя характерные гармоники и аномалии, которые могут свидетельствовать о развивающихся дефектах. Например, асимметрия фаз, межвитковые замыкания, износ подшипников или дисбаланс ротора приводят к специфическим изменениям в спектре тока. Для анализа применяют методы спектрального разложения (чаще всего это преобразование Фурье) и алгоритмы машинного обучения, позволяющие автоматически распознавать паттерны и закономерности неисправностей. Преимущества метода заключаются в его неинвазивности — не требуется разборка двигателя, а измерения можно проводить в рабочем режиме. Регулярная токовая диагностика помогает прогнозировать отказы, сокращать внеплановые остановки и оптимизировать затраты на техническое обслуживание.]

В течение года я получал именную стипендию, и это укрепило мой интерес к науке, инженерии и компьютерному моделированию. Впоследствии я участвовал в вузовских конференциях, подавал заявки на финансирование научно‑исследовательских и опытно‑конструкторских работ (НИОКР), защитил диплом и поступил в аспирантуру.

Одним из значимых результатов тех лет стала сборка экспериментального стенда из доступных компонентов. Переход от виртуальных испытаний на моделях к работе с реальными образцами был закономерным шагом. Хотя исправный и неисправный двигатели у нас уже имелись, для стенда отсутствовала ключевая деталь — плата аналого‑цифрового преобразования (АЦП), необходимая для сбора данных. Именно она обозначена на схеме как аппаратная часть для измерений.


Пример схемы стенда для токовой диагностики (фотографий оригинального, к сожалению, не осталось)

Решение нашлось, как мне кажется неожиданное, но вполне себе рабочее. Взять трансформатор (такой Советский зеленый) и подключить токовые шунты в цепях статоров двигателей через трансформатор к входу звуковой карты. Надежный план, как швейцарские часы. Да, сначала все-таки сработал «русский авось». Куда же без него. Амплитуда сигнала, итак, была меньше 1 В, поэтому отложив трансформатор в сторону, я решил подключить его напрямую, и… спалил шунт эпично выбив автоматы в лаборатории.

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


Спектр тока, полученный с помощью «чудо-стенда»

На этом Конец? Нет, конечно. Шишек было набито много, не все удалось реализовать из намеченного, но самое главное, какой вопрос мучает выпускника? Куда устроится на работу!

Работы мечты?


После предложений продавать буровой оборудование, поработать буровым мастером, поработать инженером по бурению, Богиня удачи (Тюхе в греческой мифологии) подкинула мне, можно сказать, золотой билет. Вакансия на инженера по моделированию систем электроснабжения собственных нужд АЭС. Атомных электростанций. Не похоже на золотой билет?

Отнюдь – желание заниматься моделированием, да еще и систем электроснабжения превысило неуверенность в несоответствии своего профильного образования. Хотя курс по электроснабжению, энергетике, теплотехнике и другим предметам я сдал на отлично, и представление о работе электростанций вполне себе имел, что уж говорить об электротехническом оборудовании.

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


Как не вспомнить легенду, когда ты чувствуешь себя на коне

Моделировать на новом месте пришлось уже не 1,2 или 5 двигателей, и электротехнические комплексы из нескольких линий электропередач и трансформаторов, а уже пару сотен шин и сборок разных классов напряжений, несколько систем выпрямительных устройств, дизель генераторы, а главное – под 1500 асинхронных двигателей разного типа. Отсюда и появляется термин – ПОЛНОМАСШТАБНАЯ математическая модель. И стоит не забывать про то, что все это должно считаться строго за отведенное исполняемой задаче время. Самое настоящее жесткое реальное время и никаких компромиссов.

Задачи одновременно и пугали, и вдохновляли, и хорошо, что существовали те самые средства инженерного анализа и моделирования (CAE). Ошибок при выполнении такой работы сделать можно много, и их исправления на поздних этапах становится ой как не простым делом, и к тому же – жутко дорогим.

Не все давалось легко, не все получалось с первого раза, но, с задачами я справлялся и довольно быстро освоился с моделированием таких систем. А вот вопросов к точности и удобству инструментов у меня накапливалось много. Сказывалось параллельное обучение в аспирантуре, юношеский максимализм и жгучее желание все делать быстрее, а главное – достоверно и точно. Быстро обнаружились проблемы в моделях тех самых асинхронных двигателей, устойчивости расчетов при моделировании динамических нагрузок источниками тока (что я сразу заменил на другой метод), да и результаты иногда сильно расходились с данными для верификации.


А вот это уже из личного архива. Имитатор блочного пульта управления Тяньваньской АЭС включая все рабочие места операторов. Эти 1,5 месяца командировки разделили мою профессиональную жизнь на «до» и «после». Но об этом в другой раз

Как это часто бывает, один инструмент морально и технологически устаревает, а люди, занимавшиеся его разработкой и поддержкой по разным причинам, перестают это делать. И вот, руководство компании решило доверить обновление/создание такого инструмента «молодому, перспективному» - то есть мне. Дамы и господа, встречайте – ELECTROCITY.

ELECTROCITY, не смотря на у�� очень странное название, представляет одновременно и библиотеку стандартных моделей и непосредственно кодогенератор более масштабной модели. Думаю, стоит сказать пару слов непосредственно о том, что такое «кодогенератор» и какое место он занимает в разработке полномасштабных математических моделей АЭС.


  1. На вход программы поступают метаданные о структуре и параметрах предметной области (в данном случае топологии моделируемого электротехнического комплекса, паспортные данные оборудования и т.д.),


  2. Программа обрабатывает эту информацию, если можно так выразиться, формирует математическую модель


  3. Программа генерирует файлы исходного кода (в оригинальной версии на Фортране 77(!)) и файлов задания исходного состояния для модельных переменных.

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

Сразу стоит отметить, что программа позволяла и позволяет создавать модели с большим количеством электрических узлов(шин) и моделировать не только процессы в собственных нуждах электростанций, но и в энергосистемах любой сложности. Размерность некоторых задач достигала 5000 электрических узлов, при этом обеспечивалась работа модели в режиме жесткого реального времени с шагом дискретизации в 1 мс.

Библиотеку пришлось разрабатывать сначала в команде с настоящим (в отличии от меня) программистом. И тогда, можно сказать, я первый раз столкнулся с устоявшейся истиной – без четкого ТЗ, результат… будет соответствующий. Приходилось дисциплинированно писать спецификации для программиста, попутно выводя формулы и уравнения, поправки для них, получать от него новую версию кодогенератора, проводить тесты, и так, пока результат не получался удовлетворительным.

Трудились мы так, с переменным успехом и тратой нервных клеток на протяжении пары-тройки месяцев. В какой-то момент, а именно в холодные январские дни, когда из дома выходить совершенно не хотелось, мне пришла гениальная мысль – а не заняться ли изучением языка C? На тот момент, программировал я в основном на Фортране и Matlabe, да и то, программирование заключалось в написании математических формул и уравнений. А здесь необходимо было научиться чтению/записи файлов, освоить структуры данных и еще много чего.

Собственно, за три‑четыре дня с книгой Кернигана и Ритчи «Язык программирования Си» в руках я понемногу освоил синтаксис и даже одолел указатели. Но главное, упражняясь, я переписал кодогенартор с Фортрана 77 на чистый C, параллельно улучшив структуру кода программы, и исправив некоторые фундаментальные ошибки от предыдущего автора.

В итоге, кодогенератор стал прочной основой для создания:


  • моделей собственных нужд и схем выдачи мощности для тренажёров АЭС в России, Китае, Белоруссии, Бангладеш, Египте, Венгрии и Индии;


  • аналогичных решений для тепловых станций;


  • цифровых двойников ТЭЦ;


  • онлайн‑платформы для системного моделирования;


  • систем электроснабжения медицинской техники.

Как это было 10 лет назад

Помимо моделирования режимов появлялись дополнительные функции, расчеты токов КЗ, базы электротехнического оборудования, дополнительные функции анализа, библиотеки устройств релейной защиты и автоматики…В общем, софт развивается.

Не называю себя сильным разработчиком (поэтому и код не привожу — без контекста он малополезен). Однако, если перенести слова Стивена Кинга о писателях на программирование — «написали, получили чек, обналичили, взяли деньги — вы талантливы», — выходит, что всё не так плохо.


И сейчас. Красивое.

Задумался, где сейчас применяют эти математические модели и мою библиотеку — и составил карту. География получилась широкая: от учебно‑тренировочных центров при АЭС до вузов, плюс НИИ, ТЭЦ, ГРЭС и ГЭС.


Уже не плохо, и есть к чему стремиться

Это лишь одна из историй — пожалуй, даже маленькое приключение. Жизнь, в сущности, и состоит из череды подобных приключений. Если вам было интересно, у меня есть ещё немало историй. И всё‑таки я никогда не предполагал, что свяжу свою судьбу с математическим моделированием…
 
Яндекс.Метрика Рейтинг@Mail.ru
Сверху Снизу