Специфические требования
Система управления комплексом должна:
Произвести опрос статуса склада (вызвать функцию etStoreStat).
Добавить в журнал сообщений запись "СИСТЕМА: Запрошен статус СКЛАДА". В зависимости от полученного значения произвести следующие действия:
Полученный статус склада = 32. В приемную ячейку склада поступил подшипник. Система должна:
Добавить в журнал сообщений запись "СКЛАД: Статус СКЛАДА = 32".
Получить параметры поступившего подшипника с терминала подшипника (должна быть вызвана функция GetRollerPar).
Добавить в журнал сообщений запись "СИСТЕМА: Запрошены параметры подшипника".
В зависимости от статуса терминала подшипника (возвращенного функцией GetRollerPar значения) должны быть выполнены действия, приведенные в табл.:
Полученный статус склада = 16. Склад свободен, т.е. не выполняет никаких команд, но при этом в манипуляторе находится подшипник. В этом случае система должна:
Добавить в журнал сообщений запись "СКЛАД: Статус СКЛАДА = 16".
Поставить на первое место в очереди команду PutR - "ПОЛОЖИТЬ В РЕЗЕРВ".
Полученный статус склада = 4. Нет нуля. В этом случае складу система должна:
Добавить в журнал сообщений запись "СКЛАД: Статус СКЛАДА = 4".
Поставить на первое место в очереди команду SetN - "ПРОИЗВЕСТИ ЗАНУЛЕНИЕ".
Полученный статус склада = 0. Склад свободен. Никаких действий в ответ на этот статус система предпринимать не должна.
1 | -3 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: -3 - нет обмена" |
2 | -2 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: -2 - таймаут" |
3 | -1 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: -1 - нет клиента" |
4 | 0 | Добавить на первое место команду GetR - "ПОЛУЧИТЬ ИЗ ПРИЕМНИКА В ЯЧЕЙКУ" Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: 0 - параметры возвращены <Номер_группы>" |
5 | 1 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: 1 - нет данных" |
6 | Другое | Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: ОШИБКА: Неопределенный статус" |
p>При любом другом статусе в журнал должно быть добавлено сообщение "СКЛАД: ОШИБКА: Неопределенный статус".
Произвести опрос терминала оси (вызвать функцию получения сообщения от терминала - GetAxlePar). В журнал сообщений должно быть добавлено сообщение "СИСТЕМА: Запрошены параметры оси". В зависимости от статуса терминала оси (возвращенного функцией GetAxlePar значения) должны быть выполнены следующие действия:
При поступлении команды в очередь система должна отправить команду на выполнение складу (параллельно с продолжающимся опросом терминала оси) и в зависимости от возвращенного функцией посылки команды статуса команды, выполнить следующие действия (табл. 13.4):
Полученный статус: 0 - успешное получение команды. В журнал сообщений дложно быть добавлено сообщение "СКЛАД: 0 - команда <Полное_название_команды> успешно принята". Команда должна быть удалена. Система должна получить сообщение от склада о результатах выполнения команды.
Полученный статус: 1 - при посылке команды произошла ошибка. В журнал сообщений дложно быть добавлено сообщение "СКЛАД: 1 - ошибка при посылке команды <Полное_название_команды>". Команда должна быть удалена.
1 | -3 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: -3 - нет обмена" |
2 | -2 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: -2 - таймаут" |
3 | -1 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: -1 - нет клиента" |
4 | 0 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: 0 - параметры возвращены <Передний_диаметр> < Задний_диаметр>" Подобрать два подшипника из имеющихся на складе в соответствии со следующими требованиями: Они должны находиться в ячейках с разными номерами Разность группы первого подшипника и группы переднего посадочного диаметра оси (FrontDiam) должна быть меньше либо равна 2 Разность группы второго подшипника и группы заднего посадочного диаметра оси (BackDiam) должна быть меньше либо равна 2 Разность разностей пункта ii и iii должна быть меньше либо равна 2 Выдаваемые подшипники должны иметь одинаковый тип сепаратора. В первую очередь должны выдаваться подшипники, которые находятся на складе дольше всего. При успешном подборе подшипников: В журнал сообщений должно быть добавлено сообщение "ТЕРМИНАЛ ОСИ: ПОДШИПНИКИ подобраны" В конец очереди команд должны быть добавлены две команды "SendR Отправить ячейку на выход" с параметрами подобранных подшипников, а также завершающая выдачу команда "Term Завершение команд выдачи" При отсутствии на складе подшипников, удовлетворяющих заданным параметрам, в журнал должно быть добавлено сообщение "ТЕРМИНАЛ ОСИ: Не подобрать ПОДШИПНИКОВ". |
5 | 1 | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: 1 - нет данных" |
6 | Другое | Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: ОШИБКА: Неопределенный статус" |
p>Полученный статус: 2 - склад не понял команду. В журнал сообщений должно быть добавлено сообщение "СКЛАД: 2 - склад не понял команду <Полное_название_команды>". Система должна попытаться послать команду повторно; после второй неудачной попытки в журнал должно быть добавлено сообщение "СКЛАД: Не понял команду после двух попыток", команда должна быть удалена, а система должна приступить к выполнению следующей в очереди команды, если очередь не пуста.
Полученный статус: 3 - склад занят. Система должна посылать команду в течение 30 секунд, при истечении данного интервала в журнал должно быть добавлено сообщение об ошибке "СКЛАД: 3 - занят более 30 секунд", команда должна быть удалена, а система должна приступить к выполнению следующей в очереди команды, если очередь не пуста.
Полученный статус: -1 - нет склада. Система должна попытаться выполнить команду повторно; после второй неудачной попытки в журнал должно быть добавлено сообщение "СКЛАД:-1 - нет СКЛАДА" и система должна завершить работу.
Полученный статус: -2 - таймаут. Система должна попытаться выполнить команду повторно; после второй неудачной попытки в журнал должно быть добавлено сообщение "СКЛАД:-2 - таймаут при посылке команды" и система должна завершить работу.
Полученный статус: -3 - не посылать. Система должна попытаться выполнить команду повторно; после второй неудачной попытки в журнал должно быть добавлено сообщение "СКЛАД:-3 - не удается послать команду СКЛАДУ" и система должна завершить работу.
Полученный статус: -4 - нет свободных ячеек. В журнал должно быть добавлено сообщение "СКЛАД:-4 - нет свободных ячеек", команда должна быть удалена, а система должна приступить к выполнению следующей в очереди команды, если очередь не пуста.
При получении любого другого статуса в журнал должно быть добавлено сообщение "СКЛАД: ОШИБКА: Неопределенный статус при посылке команды".
После успешного получения складом команды (получения статуса команды = 0) система должна получить сообщение от склада и добавить в журнал сообщение "СИСТЕМА: Запрошено сообщение от СКЛАДА":
Полученное сообщение: -1 - нет склада. Система должна попытаться получить сообщение повторно, после второй неудачной попытки в журнал должно быть добавлено сообщение "СКЛАД:-1 - нет СКЛАДА" и система должна завершить работу.
Полученное сообщение: 0 - нет сообщения. Это означает, что склад еще занят, следует продолжать опрос.
Полученное сообщение: 1 - Команда выполнена без ошибки.
На первое место в очередь должна быть добавлена команда с параметрами удаленной команды, но номер результирующей ячейки в команде должен быть заменен номером другой свободной ячейки, соответственно алгоритму поиска свободной ячейки.
Полученное сообщение: 2 - Команда выполнена с ошибкой, не удается взять подшипник. Если текущая выполняемая команда: GetR - "Получить из приемника в ячейку":
В журнал должно быть добавлено сообщение "СКЛАД: ОШИБКА: Не взять из входной ячейки".
Текущая команда должна быть удалена.
На первое место в очереди должна быть добавлена команда SetN - "Произвести зануление".
SendR - "Отправить ячейку на выход":
В журнал должно быть добавлено сообщение "СКЛАД: Не взять из ячейки <Номер_ячейки>".
Текущая команда должна быть удалена.
На первое место в очереди должна быть добавлена команда SetN - "Произвести зануление".
На второе место в очереди должна быть добавлена команда SendR - "Отправить ячейку на выход" с параметрами удаленной в п. 2 команды.
При получении того же статуса при повторной попытке выполнения команды SendR:
Ячейка должна быть помечена как сбойная (не должны предприниматься дальнейшие попытки положить в нее подшипники)
В журнал должно быть добавлено сообщение "СИСТЕМА: Ячейка <Номер_Ячейки> <Номер_Стороны> <Номер_Колонки> <Номер_Ряда> помечена как сбойная"
Текущая команда SendR должна быть удалена.
На первое место в очередь должна быть добавлена команда с параметрами удаленной команды, но номер результирующей ячейки в команде должен быть заменен номером другой свободной ячейки, соответственно алгоритму поиска свободной ячейки.
Полученное сообщение: 3 - команда выполнена с ошибкой, не удается положить подшипник. Если порядковый номер, результирующей ячейки - 999, т.е. это выходная ячейка, то:
В журнал должно быть добавлено сообщение "СКЛАД: Не могу положить подшипник в выходную ячейку".
Текущая команда должна быть отложена.
Должна быть выполнена команда SetN - "Произвести зануление" Должна быть предпринята попытка выполнить отложенную команду.
При получении того же статуса при повторной попытке выполнения команды:
Текущая команда должна быть удалена.
В журнал должно быть добавлено сообщение "СКЛАД: Не могу положить подшипник в выходную ячейку после второй попытки". Если порядковый номер, результирующей ячейки любой другой кроме 999 и 0, то:
В журнал должно быть добавлено сообщение "СКЛАД: Не могу положить подшипник в ячейку № <Номер_ячейки>".
Текущая команда должна быть удалена.
На первое место в очереди должна быть добавлена команда SetN - "Произвести зануление".
На второе место в очереди должна быть добавлена команда с параметрами удаленной в п. 2 команды.
При получении того же статуса при повторной попытке выполнения команды:
Ячейка должна быть помечена как сбойная (не должны предприниматься дальнейшие попытки положить в нее подшипники).
В журнал должно быть добавлено сообщение "СИСТЕМА: Ячейка <Номер_Стороны> <Номер_Колонки> <Номер_Ряда> помечена как сбойная".
Текущая команда должна быть удалена.
На первое место в очередь должна быть добавлена команда с параметрами удаленной команды, но номер результирующей ячейки в команде должен быть заменен номером другой свободной ячейки, соответственно алгоритму поиска свободной ячейки.