@startuml |#428743|МОСТ| :Выполняет опрос дальномеров по внутренним протоколам взаимодействия; split if (Есть связь с дальномером 1?) then (yes) if (Данные валидны?) then (yes) :Поместить номер дальномера и данные с него в посылку для отправки в ПО ПЧ, согласно протоколу взаимодействия; else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0xffffff; endif else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0; endif split again if (Есть связь с дальномером 2?) then (yes) if (Данные валидны?) then (yes) :Поместить номер дальномера и данные с него в посылку для отправки в ПО ПЧ, согласно протоколу взаимодействия; else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0xffffff; endif else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0; endif split again if (Есть связь с дальномером 3?) then (yes) if (Данные валидны?) then (yes) :Поместить номер дальномера и данные с него в посылку для отправки в ПО ПЧ, согласно протоколу взаимодействия; else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0xffffff; endif else (no) :Поместить номер дальномера в посылку для отправки в ПО ПЧ, в качестве данных отправить 0; endif end split :Отправить данные; |#f56767|ПЧ| :Принять данные с платы МОСТ; :Сформировать датаграмму для отправки в Sitara; :Отправить данные в Sitara; |#458ff7|Контроллер ТСК| :Распаковать датаграмму; split :Определить наличие связи с дальномером, корректность данных; if (Данные дальномера корректны?) then (да) :Сенсорная система исправна; stop else (нет) :Записать в журнал, что произошла ошибка; endif split again :Отправить Ping по IP адресу камеры компьютерного зрения для определения наличия связи; if (Есть ответ от камеры?) then (да) :Отправить запрос в камеру для получения координат кромки детали по настроенным областям поиска; if (Координаты получены?) then (да) :Сенсорная система исправна; stop else (нет) |#458ff7|Контроллер ТСК| :Записать в журнал, что произошла ошибка; endif else (нет) |#458ff7|Контроллер ТСК| :Записать в журнал, что произошла ошибка; endif end split |#fc9738|Контроллер робота| :Сигнализировать в ЧМИ о наличии проблем с сенсорной системой с указанием кода ошибки и понятного описания проблемы; :Сенсорная система не исправна; end @enduml