Диагностика автономного подводного планерного робота с помощью дерева отказов / неисправностей
Данный пример посвящен анализу дерева отказов / неисправностей (FTA - Fault Tree Analysis), это такой метод идентефикации и анализа факторов, которые могут способствовать возникновению исследуемого нежелательного события.
Ниже мы приводим краткий обзор по оценке неисправностей в автономных подводных роботах, строим дерево неисправностей робота и анализируем результаты надежности системы.
Для построения дерева неисправностей мы использовали данные 58 запусков роботов, которые собирались в течение 2 лет.
При анализе надежности системы мы выявили 10 типов неисправностей. В работе рассматривается их комплексный вклад в надежность робота.
К ним относятся:
Неисправности в энергосистеме
Неисправности системы обнаружения утечек
Неисправности системы погружения
Неисправности системы обнаружения окружающей среды
Неисправности системы предотвращения столкновений
Сбои в компьютерной системе
Неисправности двигательной установки
Неисправность системы связи
Неопознанные неисправности
Построение дерева неисправностей
Дерево строится в пять этапов следующим образом:
Определяется вершина события. Ей может быть само нежелательное событие или последствия его возникновения. В этой статье рассматриваются неисправности
только трех уровней: компонентов (датчиков), подсистем и системы.
Определяется вклад неисправностей каждой компоненты в неисправности верхнего уровня, а затем используется соответствующие элементы управления AND (1) и OR (2), для построения дерева неисправностей подсистемы или основной системы.
Следует рассматривать дерево неисправностей каждой подсистемы, как модуль основного дерева неисправностей. В этом примере мы используем десять модулей, девять подсистем и одно поддерево неизвестных неисправностей.
Нахождение вероятности отказа каждого компонента.
Построение основного дерева неисправностей и оценка
надежности системы с помощью построения графиков.
На скриншоте - дерево отказов / неисправностей, которое мы рассматриваем
Компонента
Для каждой компоненты есть свое значение параметра Lambda.
Рассмотрим на примере компоненты Battery Detection. Значение параметра равно 7.5*10^-6:
Мы рассмотрели компоненту Battery Detection, остальные компоненты данного дерева отказов выглядят аналогично.
Подсистема
Далее, высчитанная для компоненты в конкретный момент времени вероятность, вместе с другими сигналами подсистемы (в данном случае подсистема POWER и ее компоненты: Battery Detection, Battery, Voltage Detection, Current Monitoring) формируют вероятность подсистемы.
В блоке Engee Function реализован расчет вероятности нежелательного события подсистемы, где u1, u2, u3, u4 - вероятности событий компонентов подсистемы в определенный момент времени:
structBlock <: AbstractCausalComponent end
function(c::Block)(t::Real,u1,u2,u3,u4)
y=1-((1-(u1)).*(1-(u2)).*(1-(u3)).*(1-(u4)));
return(y)
end
После этого производится рассчет надежности каждой подсистемы:
Мы рассмотрели подсистему POWER, другие подсистемы данного дерева отказов выглядят аналогично.
Система и график ее надежности
После расчетов вероятностей нежелательных событий подсистем, мы вычисляем вероятность нежелательного события системы в целом, а после - ее надежность по аналогии.
Для построения графика надежности системы переходим в каталог с текущим скриптом:
In [ ]:
cd(@__DIR__)# Переместимся в каталог, где лежит текущий скриптhomePath=string(@__DIR__)
Out[0]:
"/user/FTA/FTA_Robot_Glider"
Задаем функцию загрузки и запуска модели:
In [ ]:
functionstart_model_engee()tryengee.close("FTA_Robot_Glider",force=true)# закрытие модели catcherr# в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catchm=engee.load("$(@__DIR__)/FTA_Robot_Glider.engee")# загрузка моделиend;tryengee.run(m,verbose=true)# запуск моделиcatcherr# в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catchm=engee.load("$(@__DIR__)/FTA_Robot_Glider.engee")# загрузка моделиengee.run(m,verbose=true)# запуск моделиendend
Out[0]:
start_model_engee (generic function with 1 method)
Запустим модель:
In [ ]:
trystart_model_engee()# загрузка и запуск моделиcatcherrend;
С помощью полученных данных, можно судить о величине вклада каждой подсистемы в надежность системы, а после использовать выводы для доработки подсистем робота, несущих наибольший вклад в отказ системы.
Как видно из полученного графика, самый большой вклад в отказ системы вносит подсистема Power.
Заключение
Мы рассмотрели принцип построения дерева неисправностей на примере автономного подводного робота в среде Engee.
Дерево отказов / неисправностей как метод поиска корня проблем в системе, позволяет не только выявить проблему, но и
поспособствовать разработке решения этой проблемы за счет демонстрации уязвимых мест.
ПубличноПросматривать контент могут все пользователи сообщества
Тип
Модель динамической системы
Краткое описание
В данном примере рассмотрим дерево неисправностей для автономного подводного планерного робота, и найдем систему, вносящую наибольший вклад в отказ системы