- 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: в таких состояниях команды алгоритм анализа прерывается по причине отсутствия причины для анализа
- CMD_SUCCES:
Алгоритм выдачи команды:
- отдается роботу только если он в состоянии READY
- если после выдачи реальной команды приходит ACCEPT, то команда считается принятой роботом
- если приходит не ACCEPT, то робот переводится в режим решения проблемы