Обработка ошибок

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

Обработка ошибок

Сообщение korvin » 21 май 2020, 10:21

В сервере используется принцип "Команда должна быть завершена". Т.е. нельзя прерывать и отменять команду в процессе ее выполнения. Предполагается, что команду перемещения не просто так давали. И она должна быть доделана. Если же в процессе выполнения команды возникают проблемы, то операторы или обслуживающий персонал должен устранить эти проблемы, чтоб команда перемещения контейнера из одной ячейки в другую была завершена успешно.

В интерфейсе самого сервера штабелеров имеется удобный механизм решения проблем. При возникновении ошибок роботов в процессе выполнения команд соотв. робот переводиться в режим решения проблемы. И администратор должен для указанного робота выбрать один из методов решения проблемы (предварительно устранив физические причины проблемы):
- повторить команду еще раз (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-команда исполнена вручную).

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