Ошибка Кода, Которая Стоила Целой Атомной Электростанции

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

Именно это произошло в январе 2012 года, когда на калифорнийской АЭС Сан-Онофре произошла утечка радиоактивной воды из первого контура парогенератора.

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

И это только начало истории.



Ошибка кода, которая стоила целой атомной электростанции

Компания AЭS San Onofre удобно расположена на побережье Тихого океана в сейсмически активной Калифорнии.

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

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



Ошибка кода, которая стоила целой атомной электростанции

Очень упрощенная схема работы кондиционера, но наш герой на ней присутствует. Это цилиндр, установленный внутри корпуса реактора и представляющий собой простой теплообменник.

Внутри него пар (в случае кипящих реакторов, BWR) или вода под давлением (в случае водо-водяных реакторов, PWR) течет по пучкам трубок из реактора, нагревая их.

Далее эта штука попадает на лопатки турбины и раскручивает их, чтобы наконец произвести электричество.



Ошибка кода, которая стоила целой атомной электростанции

Вообще вот тебе парогенератор

Ошибка кода, которая стоила целой атомной электростанции

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

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

Именно это произошло на третьем энергоблоке Сан-Онофре.



Ошибка кода, которая стоила целой атомной электростанции

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



Ошибка кода, которая стоила целой атомной электростанции

Антивибрационные решетки и теплообменные трубки В процессе эксплуатации некоторые трубки все равно выйдут из строя, но не 80 сразу, как в этом случае.

И еще более странно, когда такая авария происходит в новом парогенераторе, проработавшем меньше года! Проблема была еще и в том, что в тот момент заканчивали монтаж точно такого же парогенератора на энергоблоке №2 (всего на АЭС было два агрегата) и через несколько месяцев на нем тоже будут зафиксированы повышенные вибрации.

Всё, вся станция встала, но в чём причина проблемы? При выборе поставщика еще в 2004 году американцы выбрали японскую компанию Mitsubishi Heavy Industries (MHI).

Да, у нее не было опыта создания столь больших парогенераторов, сколько было необходимо, но их продукция хорошо зарекомендовала себя, и японцы очень хотели закрепиться на рынке США.

Осмотр парогенераторов Сан-Онофре специалистами MHI подтвердил, что ясно, что ничего не ясно.

Наблюдался повышенный износ, вызванный более сильными, чем ожидалось, вибрациями, но причина вибраций была неясна.

Владелец компании Southern California Edison Company (SCE) надеялся, что удастся обойтись небольшими затратами и просто заменить поврежденные лампы, а затем запустить агрегат, но японцы, посмотрев вниз, заявили, что не могут этого гарантировать.

это решило бы проблему.

И они были чертовски правы.

В течение следующих месяцев обе стороны пытались, с одной стороны, найти причину аварии, а с другой — придумать план ремонта.

Была ровно одна проблема: никто еще не понял причину аварии.

И японцы, и американцы сошлись во мнении, что именно повышенные вибрации стали разрушили теплообменные трубки, но почему они появились – загадка.

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

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



Ошибка кода, которая стоила целой атомной электростанции

Японцы при любом упоминании о возможности замены парогенераторов Ситуация оказалась весьма забавной.

Обе стороны хотели бы провести ремонт, потому что это было дешевле и быстрее, но не смогли, потому что японцы так и не смогли придумать адекватный план.

И даже если будет произведен ремонт, кондиционер долго будет работать на половинной мощности.

Альтернативой была замена парогенераторов, но это означало как минимум 5-7 лет на изготовление и поставку, в течение которых САУ оставалась бы выключенной.

При этом каждый месяц простоя обходился SCE в $100 млн на покупку мощностей у других производителей для поставок по долгосрочным контрактам.

Те.

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

Поэтому обе стороны тянули, надеясь, что решение в итоге упадет им на голову.

Но оно не упало.

В июле 2013 года, подведя итоги, прикинув размеры убытков и посмотрев на недоброжелательного регулятора, SCE решила, что AЭS следует закрыть, а на япошек подать в арбитражный суд за невыполнение контракта.

Останавливаться.

Так и не нашли причину вибраций? Нашли, и нашли еще много интересного, но чтобы собрать все факты в общую картину, требовался арбитраж.



Одна ошибка в коде и у вас проблемы

Еще в апреле 2012 года (то есть всего через 3 месяца после аварии) японцы, взявшиеся перепроверить вибрационные расчеты, обнаружили в них ошибку, получившую название Gap Velocity Error. Расчетный комплекс, на котором японцы рассчитывали новый парогенератор, состоял из пяти программ (кодов), каждая из которых была собственной разработкой кампании.



Ошибка кода, которая стоила целой атомной электростанции

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

Результаты расчетов по коду SSPC использовались в качестве входных данных для следующего кода FIT-III, выполнявшего расчеты расходов и паросодержания в парогенераторе.

Результаты расчетов с использованием FIT-III передавались через код постпроцессора FIT-III одновременно в коды FIVATS и IVHET. Программа FIVATS (Flow-Induced Vibration Analysis of Tubular Structures) рассчитывала вибрации, а IVHET (Ударная вибрация трубы теплообменника с опорой на зазоры) рассчитывала вибрационный износ трубок.

Проблема оказалась в том, что код FIT-III выдавал более низкое значение расхода, чем было на самом деле.

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

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

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

То есть программный код при в целом правильном моделировании процесса просто давал неправильное значение следующему уровню вычислений, который был нужен.



Ошибка кода, которая стоила целой атомной электростанции

Трубки парогенератора и свободный поток: P КАК Я — значение расстояния между трубками, необходимое для расчета вибрации, П ФИТ-III — стоимость, произведенная программой А теперь несколько нюансов: 1) Этот код вовсе не был новым и был разработан за 20 лет (!) до инцидента в Сан-Онофре.

До этого на нем был спроектирован не один парогенератор с треугольной решеткой трубок.

Ни один из них не был подвержен преждевременному износу, и поэтому код никто не пересматривал.

Каким образом исправленный код был проверен без обнаружения этой ошибки, остается загадкой.

2) Еще в январе 2005 года японский консультант Пол Ланфорд при анализе результатов расчета выразил сомнение в адекватности расхода и предположил, что его просто забыли умножить на какой-то коэффициент. Японцы по просьбе заказчика провели проверку, но ошибок в коде не нашли, а потому спустили вопрос на тормоза, согласившись просто усилить контроль качества.

При этом других работников, выразивших сомнения в управлении качеством, просто уволили.

3) Американцы, готовясь к арбитражу, попытались восстановить код программы, используя существующий набор алгоритмов из Технического описания Расчетного комплекса для подтверждения его работоспособности.

Из трех рассмотренных кодов (FIT-III, SSPC и FIVATS) удалось получить рабочий прототип только для последнего, остальные же имели ошибки и были крайне плохо документированы.

Более того, даже в ходе арбитража японцы отказались предоставить полные коды программного обеспечения SCE на доработку, а предоставили их в NRC, где пришли к выводу, что коды содержат ошибки.

4) Ошибка в самом коде не могла привести к вибрациям, выходящим за рамки расчетных, так как даже исправленные расчеты показали, что вибрации находятся в пределах нормы.

Но именно здесь в нашу историю вступают технические амбиции.



Идя широко Митсубиси, не рви штаны

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

Если зазор между трубкой и ячейкой сетки слишком велик, возникнет разрушительная вибрация.

Но в то же время, чем меньше зазор, тем выше требования к точности изготовления, так как если размеры зазоров различаются по длине трубки, она может погнуться.

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

Японцы, исходя из цели увеличения запаса прочности, решили сделать зазор как можно меньшим – предполагалось, что его можно будет сделать не более 0,003 дюйма (0,076 мм).

Таким образом, колебания можно было демпфировать даже при существенно более высоких скоростях потока, чем расчетные.

Те.

теоретически такое решение случайно полностью компенсировало бы ошибку расчета.

Проблема оказалась в другом.

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

В MHI вначале даже признали эту версию, тем более, что при проверке парогенератора третьего энергоблока обнаружили увеличенные зазоры.

А вот парогенератор второго энергоблока был сделан гораздо тщательнее, и там проблема тоже присутствовала.

Более того, изучение карты неравномерности распределения зазоров при арбитраже показало, что вышедшие из строя трубы расположены далеко от зоны с увеличенными зазорами.

Тем не менее, американцы настояли на этой версии причины, поскольку она позволяла обвинить в браке MHI.

Ошибка кода, которая стоила целой атомной электростанции

Красным цветом показана область с максимальными зазорами, зеленым — трубы с увеличенными зазорами, не имеющими дефектов, желтым — те же трубы, которые либо имели, либо не имели дефектов.

Черные провальные трубки.

Возможное решение выявленного несоответствия предложили специалисты Areva, нанятые американцами в качестве консультантов.

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

Моделирование показало, что значительные колебания возможны и при чрезвычайно узких зазорах из-за происходящих в них турбулентных течений.

Это была новая проблема для отрасли, поскольку раньше с ней никто не сталкивался.

И японцы цеплялись за эту версию.



Ошибка кода, которая стоила целой атомной электростанции

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

Но с другой стороны, новизна и отсутствие ранее каких-либо гипотез о наличии такого явления позволяли снять с себя ответственность и списать все на форс-мажор.

Самое смешное, что арбитраж так и не смог ответить утвердительно, чья версия верна.

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

MHI обязали компенсировать американским заказчикам затраты, связанные с поиском причин инцидента, попытками вернуть агрегаты в эксплуатацию и выполненными на станции ремонтными работами, на сумму всего $125 млн.

Американцы потребовали от суда 7 миллиардов на покрытие расходов из-за простоя и преждевременного закрытия станции, но из-за неустановленной первопричины аварии арбитры не смогли возложить полную ответственность на MHI. При этом SCE пришлось выплатить японцам $58 млн в качестве компенсации расходов на арбитраж, поскольку компания так и не смогла доказать в нем свою правоту.



Какие выводы можно сделать из всей этой истории?

  1. некритическая ошибка в программном обеспечении при расчете всего одного параметра привела к фатальным результатам из-за непредсказуемого явления;
  2. непредсказуемость явления вызвана отсутствием достаточного количества подтверждающих расчетов;
  3. обе стороны небрежно подошли к процессу контроля качества документов, а также к процессам проверки и подтверждения результатов;
  4. При этом вопросов к японскому управлению качеством пока еще больше, поскольку еще при разработке парогенераторов они увольняли рабочих, высказывавших претензии к качеству работы;
  5. Техническое описание программного обеспечения в 2 из 3 случаев не давало понимания того, как оно работает и содержало ошибочные данные;
  6. Если бы в программном обеспечении не было ошибки, авария все равно могла бы произойти, поскольку первопричина ее кроется в технических решениях, но она напрямую повлияла на выбор этого технического решения.

Желаю всем правильной документации по проектам, спасибо за внимание.



Ошибка кода, которая стоила целой атомной электростанции

Теги: #Читальный зал #Инженерные системы #Технологии #Энергетика и аккумуляторы #США #АЭС #ошибки кода #расследование инцидентов #арбитраж

Вместе с данным постом часто просматривают: