Описание автомата робот-команда

korvin
Администратор
Сообщения: 202
Зарегистрирован: 18 ноя 2017, 15:36

Описание автомата робот-команда

Сообщение korvin » 18 май 2019, 04:44

Возможные состояния робота:
  • READY - готов для получения новых команд
  • WORK - работает, занят
  • ERROR - ошибка
  • INITIALIZATION - процесс инициализации

Возможные состояния отданной команды:
  • CMD_SUCCESS - команда выполнена
  • CMD_FAULT - ошибка команда
  • CMD_WORK - команда исполняется
  • CMD_SEND - идет процесс передачи команды роботу
  • CMD_NONE - нет команды

Любая смена состояний команд (назначение новых, пометка о выполнении уже отданных, перевод в решение проблемы) производится лишь в том случае, если состояние робота READY и робот не находится в режиме решения проблемы. Конкретней:
  • прежде всего анализируется из СУБД тип последней переданной роботу команды.
    • Если это INITY, то полученное от робота в INFO ID команды должно быть или 0, или реальным ID команды. Иначе робот переводится в режим решения проблемы, и алгоритм анализа прерывается.
    • Если команда последняя была не INITY, то происходит проверка полученного от робота ID команды и ID последней отданной команды из СУБД. Если они не соответствуют друг другу, то робот переводится в режим решения проблемы, и алгоритм анализа прерывается.
  • далее анализируется состояние отданной команды:
    • CMD_SUCCES:
      • Если № текущего трека соответствует № целевого трека, то команда помечается успешно исполненной, и происходит переход к алгоритму выдачи новой команды
      • Если № текущего трека НЕ соответствует № целевого трека, то робот переводится в режим решения проблемы, и алгоритм анализа прерывается
    • CMD_FAULT : робот переводится в режим решения проблемы, и алгоритм анализа прерывается
    • CMD_WORK, CMD_SEND, CMD_NONE: в таких состояниях команды алгоритм анализа прерывается по причине отсутствия причины для анализа

Алгоритм выдачи команды:
  • отдается роботу только если он в состоянии READY
  • если после выдачи реальной команды приходит ACCEPT, то команда считается принятой роботом
  • если приходит не ACCEPT, то робот переводится в режим решения проблемы

Вернуться в «Упрощенный сервер штабелеров»