@startuml header ИТ-020-21 end header title Алгоритм 51. Проводит диагностику сенсорной системы legend left ПЧ: UFC_Application Контроллер ТСК: аваы endlegend start floating note left: split group МОСТ ПЭ #LightGrey :Выполняет опрос дальномеров по внутренним протоколам взаимодействия; :Подготовить данные для отправки: * для каждого дальномера в качестве данных установить 0; repeat if (Данные валидны?) then (да) :Поместить номер дальномера и данные с него в посылку для отправки в ПО ПЧ, согласно протоколу взаимодействия; else (нет) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0xffffff; endif repeat while(Обработаны данные всех дальномеров?) :Отправить данные по протоколу **DS14.80029-01 95 01**; end group group ПЧ ПЭ #LightGrey :Принять данные по протоколу **DS14.80029-01 95 01**; if (Таймаут обновления счётчика) then (да) :Сформировать **отказ** приема данных платы МОСТ; elseif (Интегральный признак отказа) then (да) :Сформировать общий **отказ** платы МОСТ; else (нет) endif :Обновить данные дальномеров в датаграмме протокола **EtherCat**; end group group Контроллер ТСК: ядро реального времени #LightGrey :Обновить данные от ПЧ через **EtherCat**; :Осуществить преобразование данных дальномеров в физические величины; if (Данные дальномера в заданном диапазоне?) then (да) elseif (Дальномер показывает "0"?) then (да) :Сформировать **отказ** дальномера; else :Сформировать **признак** данные вне диапазона; endif end group split again group Контроллер ТСК: верхний уровень #LightGrey :Отправить Ping по IP адресу камеры компьютерного зрения для определения наличия связи; if (Есть ответ от камеры?) then (да) :Отправить запрос в камеру для получения координат кромки детали по настроенным областям поиска; if (Координаты получены?) then (да) else (нет) :Записать в журнал, что произошла ошибка; endif else (нет) :Записать в журнал, что произошла ошибка; endif end group end split group Контроллер ТСК: верхний уровень #LightGrey if (Есть сообщения о ошибках?) then (да) :Сформировать признак "Сенсорная система **не исправна**"; else (нет) :Сформировать признак "Сенсорная система **исправна**"; endif end group group Пульт ТСК #LightGrey :Отображать статус сенсорной системы; :Сигнализировать в ЧМИ о наличии проблем с сенсорной системой с указанием кода ошибки и понятного описания проблемы; end group end @enduml