В интерфейсе самого сервера штабелеров имеется удобный механизм решения проблем. При возникновении ошибок роботов в процессе выполнения команд соотв. робот переводиться в режим решения проблемы. И администратор должен для указанного робота выбрать один из методов решения проблемы (предварительно устранив физические причины проблемы):
- повторить команду еще раз (LOAD, UNLOAD или MOVE)
- пометить команду как выполненную вручную (LOAD, UNLOAD или MOVE)
В API этот механизм решения проблемы дублируется. Для каждой отданной команды можно узнать - не находится ли исполняющий ее робот в режиме решения проблемы (вызвать соотв. PL-SQL функцию):
Код: Выделить всё
sarmat.api.get_cmd_problem_state(:CMD_ID)
где:
- :CMD_ID - ID соответствующей команды, отданной сторонней системой Заказчика через таблицу command
Функция возвращает:
- пустую строку, если проблем нет
- строку вида: [R_ID, CI_TYPE, BUSY] если робот по команде находится в режиме решения проблемы, где:
- R_ID - ID робота
- CI_TYPE - тип проблемной команды ('LOAD', 'UNLOAD', 'MOVE')
- BUSY - занята ли платформа робота (=0 или 1)
Также через API можно решить проблему. Для этого нужно вызвать соответствующую PL-SQL процедуру:
Код: Выделить всё
sarmat.api.Problem_Resolve(R_ID, CMD_ID, TYPE_)
где:
- R_ID - ID робота, проблема которого должна быть решена
- CMD_ID - ID команды, по которой проблема должна быть решена
- TYPE_ - тип решения проблемы (=0-повторить команду, =1-команда исполнена вручную).