Основы тестирования программного обеспечения

Функциональная спецификация

Разбить на страницы
Показывать лекцию целиком

Введение

Назначение

Система предназначена для управления автоматизированным комплексом хранения подшипников. Она обеспечивает прием подшипников на склад, а также подбор и выдачу по запросу.

Данный документ описывает требования и ограничения на использование приложения.

Принятые сокращения

В настоящем документе приняты следующие определения и сокращения:

СокращениеОпределение
FS Данный документ. Содержит технические требования, предъявляемые к программному продукту
HLD High Level Design. Содержит описание модульной структуры проекта и взаимодействия его модулей
Проект Проект системы управления автоматизированным комплексом хранения подшипников

В последующем тексте слово "должен" определяет необходимое требование к продукту. Слова "может", "предполагает" и "способен" определяют направление работ, которое подлежит дальнейшему уточнению.

Обзор

Введение

Комплекс хранения подшипников состоит из:

  • Склада (п. 1.2.2).
  • Терминала подшипника (п. 1.2.3).
  • Терминала оси (п. 1.2.4).
  • У каждого из элементов комплекса существует программа управления, реализованная в виде в dll, принимающая на вход высокоуровневые команды и преобразующая их в управляющие воздействия для данного элемента.

    (рис 13.1) Структура комплекса(рис 13.2) Концептуальная схема стеллажа

    Склад

    Склад предназначен для хранения подшипников. Он представляет собой стеллаж с ячейками, имеет входную и выходную ячейку и робот-манипулятор.

    Все ячейки имеют координаты - сторона стеллажа (0 или 1), ряд (0 или 1 для каждой стороны), колонка (от 0 до 4 для каждого ряда), а также порядковый номер. Выходная ячейка имеет номер 999 и координаты (9,9,9), а приемная - 0 и координаты (0,0,0). Всего ячеек, кроме приемной и выходной, 20 штук.

    Стеллаж имеет две области ячеек: рабочую и резервную (рис. 13.2). В рабочей области хранятся опознанные подшипники, т.е. подшипники, для которых были получены параметры с терминала подшипника и операция по перемещению в ячейку завершилась успешно. В резервную область попадают неопознанные подшипники, т.е. подшипники, при операциях с которыми произошел сбой и нельзя гарантировать достоверность полученных для них параметров.

    Как в рабочей, так и в резервной областях, могут существовать сбойные ячейки. Ячейка помечается как сбойная, если робот-манипулятор не может взять из нее подшипник или если он не может положить подшипник в эту ячейку. Каждая ячейка может быть помечена либо как занятая, либо как свободная, либо как сбойная.

    Схема стеллажа
    колонка 0 колонка 1 колонка 2 колонка 3 колонка 4
    сторона 0 1 2 3 4 5 ряд 1
    6 7 8 9 10 ряд 2
    Рабочая зона
    сторона 1 11 12 13 14 15 ряд 3
    16 17 18 19 20ряд 4
    Резервная зона

    Статус склада

    Склад может иметь в каждый момент времени один из следующих статусов:

    Статус склада
    КодЗначение
    32 Подшипник во входной ячейке
    16 Подшипник в манипуляторе
    4 Нет нуля
    0 Склад свободен
    (рис 13.3) Граф переходов статусов склада

    Список команд складу

    Склад принимает следующие команды:

    Список команд складу
    КодНазваниеПолное название команды
    1 1 GetR ПОЛУЧИТЬ ИЗ ВХОДНОЙ ЯЧЕЙКИ
    2 2 SendR ОТПРАВИТЬ ИЗ ЯЧЕЙКИ В ВЫХОДНУЮ ЯЧЕЙКУ
    4 4 PutR ПОЛОЖИТЬ В РЕЗЕРВ
    5 6 SetN ПРОИЗВЕСТИ ЗАНУЛЕНИЕ
    7 20 Term ЗАВЕРШЕНИЕ КОМАНД ВЫДАЧИ

    Формат команд складу

    Команды имеют формат:

    Формат команд складу
    ПараметрТипДиапазон допустимых значенийОписание
    1 NameCommand int 1:6,9,10,20 Название команды (табл. 13.2)
    2 TagSt int 0:1 Сторона результирующей ячейки
    3 TagCol int 0:4 Колонка результирующей ячейки
    4 TagRow int 1:2 Ряд результирующей ячейки
    5 SourseSt int 0:1 Сторона исходной ячейки
    6 SourseCol int 0:4 Колонка исходной ячейки
    7 SourseRow int 1:2 Ряд исходной ячейки
    Сообщения от склада в ответ на посылку команды
    КодОписание
    1 -4 Нет свободных ячеек
    2 -3 Не послать
    3 -2 Тайм-аут
    4 -1 Нет клиента
    5 0 Успешное получение команды
    6 1 Ошибка при получении команды
    7 2 Склад не понял команду
    8 3 Склад занят
    Сообщение от склада
    КодОписание
    1 -1 Нет склада
    2 0 Нет сообщения
    3 1 Команда выполнена без ошибки
    4 2 Команда выполнена с ошибкой. Не удается взять подшипник из заданной ячейки
    5 3 Команда выполнена с ошибкой. Не удается положить подшипник в заданную ячейку
    Статус обмена со складом
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм аут
    3 -1 Нет клиента
    4 0 Возвращаемый параметр mParametr содержит статус склада
    5 1 Нет данных

    Терминал подшипника

    Терминал подшипника производит измерение параметров подшипника, и на запрос системы возвращает одно из следующих сообщений.

    Статус обмена с терминалом подшипника
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм-аут
    3 -1 Нет клиента
    4 0 Структура с измеренными параметрами подшипника в буфере
    5 1 Нет данных

    Если код сообщения = 0, то в буфере находится структура с параметрами:

    Параметры подшипника
    ПараметрТипДиапазон допустимых значенийОписание
    1 NameMaster String Любая строка длиной до 255 символов ФИО мастера, производившего измерения
    2 Factory String Любая строка длиной до 255 символов Название депо
    3 ShiftNum Byte 1...2 Номер рабочей смены
    4 Number String Любая строка длиной до 255 символов Номер подшипника
    5 GroupNum Int 12...20 Номер группы подшипника
    6 Septype Byte 0...1 Тип сепаратора подшипника
    7 AShift Float 0.01...1 Осевой сдвиг

    Терминал оси

    Терминал оси производит измерение ее параметров. В ответ на запрос системы он возвращает одно из следующих сообщений:

    Статус обмена с терминалом оси
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм аут
    3 -1 Нет клиента
    4 0 Структура с измеренными параметрами оси в буфере
    5 1 Нет данных
    Параметры оси
    ПараметрТипДиапазон допустимых значенийОписание
    1 Name Master String Любая строка длиной до 255 символов ФИО мастера, производившего измерения
    2 ShiftNum Byte 1...2 Номер рабочей смены
    3 Factory String Любая строка длиной до 255 символов Название депо
    4 ANumber Int Любая строка длиной до 255 символов Номер оси
    5 Side Byte 0...1 Сторона оси 0-правая, 1-левая
    6 BackDiam Float 12...20 Посадочный диаметр задний
    7 FrontDiam Float 12...20 Посадочный диаметр передний

    Интерфейсы взаимодействия системы

    (рис 13.4) Интерфейсы системы

    Интерфейс со складом (Store.dll)

    Для получения сообщения от склада:

    static public long GetStoreMessage() - возвращаемые значения описаны в табл. 13.7.

    Для получения статуса склада:

    static public int GetStoreStat(out long mParametr) - возвращаемые значения описаны в табл. 13.6. Значения, принимаемые возвращаемым параметром mParametr, описаны в табл. 13.2.

    Для посылки команды складу:

    static public int SendStoreCom (int NameCommand, int TagSt, int TagCol, int TagRow, int SourseSt, int SourseCol, int SourseRow) - возвращаемые значения в передаваемые параметры описаны в табл. 13.4.

    Интерфейс с терминалом подшипника (Bearing.dll)

    Для получения сообщения от терминала подшипника система должна вызвать следующую функцию модуля Bearing.dll:

    static public int GetRollerPar(out string NameMaster, out string Factory, out string Number, out byte ShiftNum, out int GroupNum, out byte SepType, out float AShift). Функция должна возвращать одно из значений, перечисленных в табл. 13.87. Возвращаемые параметры описаны в табл. 13.9.

    Интерфейс с терминалом оси (Axle.dll)

    Для получения сообщения от терминала оси система должна вызывать следующую функцию модуля Axle.dll:

    static public int GetRollerPar(out string NameMaster, out string Factory, out string Number, out byte ShiftNum, out int GroupNum, out byte SepType, out float AShift). Функция должна возвращать одно из значений, перечисленных в табл. 13.10. Возвращаемые параметры описаны в табл. 13.11.

    Специфические требования

    Система управления комплексом должна:

    Произвести опрос статуса склада (вызвать функцию 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 Другое Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: ОШИБКА: Неопределенный статус"

    При любом другом статусе в журнал должно быть добавлено сообщение "СКЛАД: ОШИБКА: Неопределенный статус".

    Произвести опрос терминала оси (вызвать функцию получения сообщения от терминала - 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 Другое Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: ОШИБКА: Неопределенный статус"

    Полученный статус: 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 команды.

    При получении того же статуса при повторной попытке выполнения команды:

    Ячейка должна быть помечена как сбойная (не должны предприниматься дальнейшие попытки положить в нее подшипники).

    В журнал должно быть добавлено сообщение "СИСТЕМА: Ячейка <Номер_Стороны> <Номер_Колонки> <Номер_Ряда> помечена как сбойная".

    Текущая команда должна быть удалена.

    На первое место в очередь должна быть добавлена команда с параметрами удаленной команды, но номер результирующей ячейки в команде должен быть заменен номером другой свободной ячейки, соответственно алгоритму поиска свободной ячейки.

    Страницы:

    Введение

    Назначение

    Система предназначена для управления автоматизированным комплексом хранения подшипников. Она обеспечивает прием подшипников на склад, а также подбор и выдачу по запросу.

    Данный документ описывает требования и ограничения на использование приложения.

    Принятые сокращения

    В настоящем документе приняты следующие определения и сокращения:

    СокращениеОпределение
    FS Данный документ. Содержит технические требования, предъявляемые к программному продукту
    HLD High Level Design. Содержит описание модульной структуры проекта и взаимодействия его модулей
    Проект Проект системы управления автоматизированным комплексом хранения подшипников

    В последующем тексте слово "должен" определяет необходимое требование к продукту. Слова "может", "предполагает" и "способен" определяют направление работ, которое подлежит дальнейшему уточнению.

    Обзор

    Введение

    Комплекс хранения подшипников состоит из:

  • Склада (п. 1.2.2).
  • Терминала подшипника (п. 1.2.3).
  • Терминала оси (п. 1.2.4).
  • У каждого из элементов комплекса существует программа управления, реализованная в виде в dll, принимающая на вход высокоуровневые команды и преобразующая их в управляющие воздействия для данного элемента.

    (рис 13.1) Структура комплекса(рис 13.2) Концептуальная схема стеллажа

    Склад

    Склад предназначен для хранения подшипников. Он представляет собой стеллаж с ячейками, имеет входную и выходную ячейку и робот-манипулятор.

    Все ячейки имеют координаты - сторона стеллажа (0 или 1), ряд (0 или 1 для каждой стороны), колонка (от 0 до 4 для каждого ряда), а также порядковый номер. Выходная ячейка имеет номер 999 и координаты (9,9,9), а приемная - 0 и координаты (0,0,0). Всего ячеек, кроме приемной и выходной, 20 штук.

    Стеллаж имеет две области ячеек: рабочую и резервную (рис. 13.2). В рабочей области хранятся опознанные подшипники, т.е. подшипники, для которых были получены параметры с терминала подшипника и операция по перемещению в ячейку завершилась успешно. В резервную область попадают неопознанные подшипники, т.е. подшипники, при операциях с которыми произошел сбой и нельзя гарантировать достоверность полученных для них параметров.

    Как в рабочей, так и в резервной областях, могут существовать сбойные ячейки. Ячейка помечается как сбойная, если робот-манипулятор не может взять из нее подшипник или если он не может положить подшипник в эту ячейку. Каждая ячейка может быть помечена либо как занятая, либо как свободная, либо как сбойная.

    Схема стеллажа
    колонка 0 колонка 1 колонка 2 колонка 3 колонка 4
    сторона 0 1 2 3 4 5 ряд 1
    6 7 8 9 10 ряд 2
    Рабочая зона
    сторона 1 11 12 13 14 15 ряд 3
    16 17 18 19 20ряд 4
    Резервная зона

    Статус склада

    Склад может иметь в каждый момент времени один из следующих статусов:

    Статус склада
    КодЗначение
    32 Подшипник во входной ячейке
    16 Подшипник в манипуляторе
    4 Нет нуля
    0 Склад свободен
    (рис 13.3) Граф переходов статусов склада

    Список команд складу

    Склад принимает следующие команды:

    Список команд складу
    КодНазваниеПолное название команды
    1 1 GetR ПОЛУЧИТЬ ИЗ ВХОДНОЙ ЯЧЕЙКИ
    2 2 SendR ОТПРАВИТЬ ИЗ ЯЧЕЙКИ В ВЫХОДНУЮ ЯЧЕЙКУ
    4 4 PutR ПОЛОЖИТЬ В РЕЗЕРВ
    5 6 SetN ПРОИЗВЕСТИ ЗАНУЛЕНИЕ
    7 20 Term ЗАВЕРШЕНИЕ КОМАНД ВЫДАЧИ

    Формат команд складу

    Команды имеют формат:

    Формат команд складу
    ПараметрТипДиапазон допустимых значенийОписание
    1 NameCommand int 1:6,9,10,20 Название команды (табл. 13.2)
    2 TagSt int 0:1 Сторона результирующей ячейки
    3 TagCol int 0:4 Колонка результирующей ячейки
    4 TagRow int 1:2 Ряд результирующей ячейки
    5 SourseSt int 0:1 Сторона исходной ячейки
    6 SourseCol int 0:4 Колонка исходной ячейки
    7 SourseRow int 1:2 Ряд исходной ячейки
    Сообщения от склада в ответ на посылку команды
    КодОписание
    1 -4 Нет свободных ячеек
    2 -3 Не послать
    3 -2 Тайм-аут
    4 -1 Нет клиента
    5 0 Успешное получение команды
    6 1 Ошибка при получении команды
    7 2 Склад не понял команду
    8 3 Склад занят
    Сообщение от склада
    КодОписание
    1 -1 Нет склада
    2 0 Нет сообщения
    3 1 Команда выполнена без ошибки
    4 2 Команда выполнена с ошибкой. Не удается взять подшипник из заданной ячейки
    5 3 Команда выполнена с ошибкой. Не удается положить подшипник в заданную ячейку
    Статус обмена со складом
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм аут
    3 -1 Нет клиента
    4 0 Возвращаемый параметр mParametr содержит статус склада
    5 1 Нет данных

    Терминал подшипника

    Терминал подшипника производит измерение параметров подшипника, и на запрос системы возвращает одно из следующих сообщений.

    Статус обмена с терминалом подшипника
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм-аут
    3 -1 Нет клиента
    4 0 Структура с измеренными параметрами подшипника в буфере
    5 1 Нет данных

    Если код сообщения = 0, то в буфере находится структура с параметрами:

    Параметры подшипника
    ПараметрТипДиапазон допустимых значенийОписание
    1 NameMaster String Любая строка длиной до 255 символов ФИО мастера, производившего измерения
    2 Factory String Любая строка длиной до 255 символов Название депо
    3 ShiftNum Byte 1...2 Номер рабочей смены
    4 Number String Любая строка длиной до 255 символов Номер подшипника
    5 GroupNum Int 12...20 Номер группы подшипника
    6 Septype Byte 0...1 Тип сепаратора подшипника
    7 AShift Float 0.01...1 Осевой сдвиг

    Терминал оси

    Терминал оси производит измерение ее параметров. В ответ на запрос системы он возвращает одно из следующих сообщений:

    Статус обмена с терминалом оси
    КодОписание
    1 -3 Нет обмена
    2 -2 Тайм аут
    3 -1 Нет клиента
    4 0 Структура с измеренными параметрами оси в буфере
    5 1 Нет данных
    Параметры оси
    ПараметрТипДиапазон допустимых значенийОписание
    1 Name Master String Любая строка длиной до 255 символов ФИО мастера, производившего измерения
    2 ShiftNum Byte 1...2 Номер рабочей смены
    3 Factory String Любая строка длиной до 255 символов Название депо
    4 ANumber Int Любая строка длиной до 255 символов Номер оси
    5 Side Byte 0...1 Сторона оси 0-правая, 1-левая
    6 BackDiam Float 12...20 Посадочный диаметр задний
    7 FrontDiam Float 12...20 Посадочный диаметр передний

    Интерфейсы взаимодействия системы

    (рис 13.4) Интерфейсы системы

    Интерфейс со складом (Store.dll)

    Для получения сообщения от склада:

    static public long GetStoreMessage() - возвращаемые значения описаны в табл. 13.7.

    Для получения статуса склада:

    static public int GetStoreStat(out long mParametr) - возвращаемые значения описаны в табл. 13.6. Значения, принимаемые возвращаемым параметром mParametr, описаны в табл. 13.2.

    Для посылки команды складу:

    static public int SendStoreCom (int NameCommand, int TagSt, int TagCol, int TagRow, int SourseSt, int SourseCol, int SourseRow) - возвращаемые значения в передаваемые параметры описаны в табл. 13.4.

    Интерфейс с терминалом подшипника (Bearing.dll)

    Для получения сообщения от терминала подшипника система должна вызвать следующую функцию модуля Bearing.dll:

    static public int GetRollerPar(out string NameMaster, out string Factory, out string Number, out byte ShiftNum, out int GroupNum, out byte SepType, out float AShift). Функция должна возвращать одно из значений, перечисленных в табл. 13.87. Возвращаемые параметры описаны в табл. 13.9.

    Интерфейс с терминалом оси (Axle.dll)

    Для получения сообщения от терминала оси система должна вызывать следующую функцию модуля Axle.dll:

    static public int GetRollerPar(out string NameMaster, out string Factory, out string Number, out byte ShiftNum, out int GroupNum, out byte SepType, out float AShift). Функция должна возвращать одно из значений, перечисленных в табл. 13.10. Возвращаемые параметры описаны в табл. 13.11.

    Специфические требования

    Система управления комплексом должна:

    Произвести опрос статуса склада (вызвать функцию 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 Другое Добавить в журнал сообщений запись "ТЕРМИНАЛ ПОДШИПНИКА: ОШИБКА: Неопределенный статус"

    При любом другом статусе в журнал должно быть добавлено сообщение "СКЛАД: ОШИБКА: Неопределенный статус".

    Произвести опрос терминала оси (вызвать функцию получения сообщения от терминала - 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 Другое Добавить в журнал сообщений запись "ТЕРМИНАЛ ОСИ: ОШИБКА: Неопределенный статус"

    Полученный статус: 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 команды.

    При получении того же статуса при повторной попытке выполнения команды:

    Ячейка должна быть помечена как сбойная (не должны предприниматься дальнейшие попытки положить в нее подшипники).

    В журнал должно быть добавлено сообщение "СИСТЕМА: Ячейка <Номер_Стороны> <Номер_Колонки> <Номер_Ряда> помечена как сбойная".

    Текущая команда должна быть удалена.

    На первое место в очередь должна быть добавлена команда с параметрами удаленной команды, но номер результирующей ячейки в команде должен быть заменен номером другой свободной ячейки, соответственно алгоритму поиска свободной ячейки.

    Вернуться к учебному плану