Текущее состояние
Условие выхода
Выполняемое действие
Имя перехода
Продолжение
Следующее состояние
И ПМ_кадр.УК /= маркер
И ПМ_кадр.УК /— установить-преемника
И ПМ_кадр.УК /= разрешение-соперничества))
И счет_прохождений_соперничества > = макс-счет-прохождений
И счет_сбоев_іпередатчика < макс-счет-сбоев-передатчика
Продвижение к концу процесса соперничества, поэтому отсчитываются последовательные сбои для обнару- жения неиоправного передатчика.
Обработка кадра в состоянии ДЕЖУРНОЕ
счет_сбоев_передатчика := счет_сбоев_передатчика + 1;
3. ЗАДЕРЖКА- конец—всех» 0. АВТОНОМНОЕ
ЗАПРОСА соперничеств
(ПМ_кадр-данных
ИЛИ (ПМ_протокольный_кадр
И ПМ_кадр.УК = маркер
И ПМ-кадр.АП /= ДМ)
ИЛИ (ПМ_Піротокольньпй-жадр
И ПМ-кадр.УК /= маркер
И ПМ-кадр.УК /= установить-преемника
И ПМ-кадр.УК /= разрешение-соперничества))
И счет-прохождений_соперничества > = макс-счет-
шрохождений
И счет-сбоев-передатчика >• = макс-счет-сбоев-
передатчика
Возможно условие «неисправный передатчик».
Предполагается наихудший случай
УЗ-СОБЫТИЕ.уведомление (неисправный-передатчик);
3. ЗАДЕРЖКА- игнорирование- ЗАПРОСА соперников ПМ-протокольный-кадр И ПМ-кадр.УК = установить-преемника ПМ_протокольный_кадр := false; |
3. ЗАДЕРЖКА- ЗАПРОСА |
3. ЗАДЕРЖКА- игнорирование- ЗАПРОСА помех л а кет-помех |
3. ЗАДЕРЖКА- ЗАПРОСА |
игнорирование любого нераспознаваемого потока сигналов
Текущее состояние Имя перехода Условие выхода Выполняемое действие |
Следующее состояние |
пакет-іпомех := false;
3. ЗАДЕРЖКА- длительная- ЗАПРОСА неактивность шины |
1. ДЕЖУРНОЕ |
та йм-а ут-ие актив ности- Ліин ы .-истек
И молчание_шины
И НЕ (ПМ_протокольный_кадр ИЛИ ПМ_кадр_данных ИЛИ пакет-помех) Кольцо, возможно, повреждено. Повторный запуск тайм- аута_неактивности_шины, возврат в состояние ДЕ- ЖУРНОЕ и ожидание для уверенности
тайм-аут_неактивности_шины.старт (макс-незанятость-шины);
7.2.3.4. Состояние ЗАЯВКА-МАРКЕРА
4. ЗАЯВКА- проигрыш-лри- МАРКЕРА сортировке-адресов |
1. ДЕЖУРНОЕ |
тайм-аут_заявки. истек
И НЕ молчание-шины
другие станции опознают (передачи и выходят из сопер-
ничества
тайм-аут_неактивности_шины.старт (макс-незанятость-
ш-ины);
4. ЗАЯВКА- шродолжение- МАРКЕРА сортировки-адресов тайм-аут-заявки.истек И молчание-шины |
4. ЗАЯВКА- МАРКЕРА |
И счет_передач-заявки макс-число-передач
Выполнить итерацию алгоритма многократной сорти-
ровки_адресов
счет_передач_заявки := счет_передач_заявки + 1;
Сформировать блок_данных длиной 0, 2, 4 или 6 интер-
валов-ответа
бдз : =блок-данных-заявки (счет_передач_заявки);
передача (УК => заявка-маркера, блок-данных = > бдз);
тайм-аут_заявки. старт (1); задержка на один интервал-
ответа
4. ЗАЯВКА- выигрыш-при- МАРКЕРА сортировке-адресов |
5. ИСПОЛЬЗОВАНИЕ-МАРКЕРА |
тайм-аут-заявки. истек
И молчание-шины
И счет-іпередач-заявки >■= макс-число-іпередач маркер
не заявлен в-кольце : = true;
—— установить тайм-ауты оборота-маркера в значение «истек» тайм-аут_оборота_маркера (4) .старт (0);
тайм-аут_оборота-маркера (2) .старт (0);
тайм-аут_оборота-маркера (0).старт (0);
тайм-аут_оборота_маркера (обслуживание-кольца) .старт (начальное-значение-тайм-аута-обслуживания- кольца);
счет_запросов := 0;
установить класс-доступа в наивысшее значение класс_доступа := макс-класс-доступа;
тайм-аут-удерж-маркера.старт (время-удерж-маркера- высш-пр);
7.2.3.5. Состояние ИСПОЛЬЗОВАНИЕ МАРКЕРА
ИСПОЛЬЗОВА- передача-кадра 6. ОЖИДАНИЕ- НИЕ-МАРКЕРА ОТВЕТА-ИНТ-КА
ожидание-передачи (класс-доступа)
И НЕ тайм-аут-удержания-маркера.истек
передан один кадр пользователя-УДС текущего класса- доступа изъятие_ожидающего-кадра (
очередь => класс-доступа,
УК = > уп<равление_кадра,
АП = > получатель,
АО => отправитель,
АО должен быть равен ДС, кроме узлов ретрансля-
ции
блок_данных = > бдз
подавление_КПК = > подавить-КПК);Текущее состояние Имя перехода Условие выхода Выполняемое действие |
Следующее состояние |
оставшиеся_входы := макс_число-попыток;
^передан (УК = > управление-кадра, АП = > получатель, АО => отправитель, блок_данных = > бдз подавление_КПК => подавить-КПК); тайм-аут_окна_ответа.старт (3);
5. ИСПОЛЬЗОВА- отсутствие-передачи НИЕ-МАРКЕРА |
7. КОНТРОЛЬ- КЛАССА- ДОСТУПА |
НЕ ожидание-передачи (класс-доступа)
ИЛИ тайм-аут_удержания-маркера.истек
пора отдать маркер
установить следующий более высокий класс-доступа класс-доступа : = класс-доступа — 2;
7.2.3.6. Состояние ОЖИДАНИЕ_ОТВЕТА_ИНТ_КА
6. ОЖИДАНИЕ- отсутствие-тайм- ОТВЕТА-ИНТ- аута КА |
5. ИСПОЛЬЗОВАНИЕ-МАРКЕРА |
у правд ен и ескадр а .де йств ие-У Д С =<з а прос-без-ответ а
ИЛИ получен-ответ
генерируется автоматом ИНТ—КА при получении ответа.
проверка наличия другого обслуживаемого запроса
ОТСУТСТВИЕ ДЕЙСТВИЙ
6. ОЖИДАНИЕ- повторная- ОТВЕТА-ИНТ- попытка КА |
6. ОЖИДАНИЕ- ОТВЕТА-ИНТ- КА |
тайм-аут_окна_ответа. истек
И молчание-шины
И оставшиеся-попытки > 0
И НЕ управление-кадра.действие-УДС — запрос-без-ответа
И НЕ получен-ответ
И НЕ (ПМ_протокольный-кадр ИЛИ ПМ-кадр-данных) оставшйеся-іпопыткй := оставшиеся-попытки— 1;
передача (УК = > упіравление-ікадра,
АП => получатель,
АО = > отправитель, блОК-ДаНН ЫХ = >сбд, подавление_КПК => подавить-КПК); тайм-аут_окна_ответа.старт (3);
О
5. ИСПОЛЬЗОВА-
НИЕ-МАРКЕРА
ОТВЕТА-ИНТ- ответа-6
КА
тайм-аут_окна-ответа.истек
И молчание-шины
И оставшиеся-попытки = О
И НЕ управление-кадра. действие_УДС = запрос-без-ответа
И НЕ получен-ответ
И НЕ (ПМ_протокольный_кадр ИЛИ ПМ-кадр-данных) проинформировать ИНТ-КА о отсутствии ответа ИНТ_КА_СОБЫТИЕ.уведомление (ответ-запаздывает); проверить наличие другого обслуживаемого запроса
6
1. ДЕЖУРНОЕ
. ОЖИДАНИЕ- неожидаемый-ОТВЕТА-ИНТ- кадр-6
КА
НЕ управление-кадра. действие-УДС = запрос-без-ответа
И НЕ получен-ответ
И (ПМ_протокольный-кадр
ИЛИ (ПМ_кадр-данных
И ПМ-кадр.АП /= ДО)
И ПМ_кадр.АО /= ДС
Какая-то другая станция полагает, что она владеет мар-
кером, поэтому отсрочка путем уведомления ИНТ-КА о ситуации и выход из кольца
ИНТ—КА_СОБЫТИЕ.уведомление (неожидаемый-кадр);
ОЖИДАНИЕ- собственный- 6. ОЖИДАНИЕ-
ОТВЕТА-ИНТ- кадр-6 -ОТВЕТА-
КА ИНТ-КА
НЕ управление-кадра. действие-УДС = запрос-без-ответа И НЕ получен-ответИ (ПМ_протокольный-кадр ИЛИ ПМ_кадр_данных)
И ПМ_кадр.АО = ДС
Игнорирование собственного кадра
ПМ_протокольный_кадр : — false;
7.2.3.7- Состояние КОНТРОЛЬ-КЛАССА-ДОСТУПА
к
7. КОНТРОЛЬ-
КЛАССА-
ДОСТУПА
следующий- класс-доступа
5. ИСПОЛЬЗОВА-
НИЕ-МАРКЕРА
тайм-аут_оборота-маркера (класс_доступа). значение);
Повторный запуск таймера оборота маркера тайм-аут-оборота_маркера (класс-доступа). старт (
желаемое-время-оборота (класс-доступа));
в
7. КОНТРОЛЬ- КЛАССА -ДОСТУПА
ыход-из-кольца 8. ПЕРЕДАЧА-МАРКЕРА
класс-доступа — обслуживание-кольца
И СС-известен
И НЕ желание-участвовать
И НЕ ожидание-любой-передачи
И счет-запросов > О
все уровни доступа проверены и все очереди пусты
Запрос на удаление из кольца и передача маркера сле-
дующей станции
передача (УД = > установить-преемника,
АП = > ПС,
блок_данных = > СС);
состояние-передачи := передача-маркера;
счет-запросов := счет-запросов — 1;
—— Повторный запуск таймера обслуживания кольца «об-
ращение маркера»
тайм-аут-обращения-маркера (обслуживание-кольца).
старт (желаемое_время-обращения (обслуживание-кольца));
КОНТРОЛЬ- выполнить- 8. ПЕРЕДАЧА-
КЛАССА- запрос-преемника МАРКЕРА
ДОСТУПА класс_доступа = обслуживание-кольца И СС_известен И счет-запросов = О
И НЕ тайм-аут-оборота-маркера (обслуживание-кольца).
истек Все классы-доступа проверены и доступны при наличии —- возможности. Сейчас новым станциям предлагается войти в кольцо состояние-передачи := запрос-преемника;
повторный старт тайм-аута оборота маркера (обслужи- вание-кольца)
тайм-аут_оборота_маркера (обслуживание-кольца). старт ( желаемое-время-оборота (обслуживание-кольца))
КОНТРОЛЬ- выполнить- 8. ПЕРЕДАЧА-
КЛАССА- передачу-маркера МАРКЕРА
ДОСТУПА класс-доступа = обслуживание-кольца И СС-известен
И (((желание-участвовать ИЛИ ожидание-любой-передачи)
И (счет-запросов > О
ИЛИ (счет-запросов = О
И тайм-аут-оборота_маркера (обслуживание-кольца).
истек))
—- Все класса-доступа проверены и доступны при наличии —- возможности. Передача маркера следующей станции состояние-передачи := передача-маркера;
счет-запросов := макс, (счет-запросов— 1, 0);
Повторный старт, тайм-аута_оборота_маркера (обслу- живание-кольца)
тайм-аут_оборота_маркера (обслуживание-кольца) старт ( желаемое-время-оборота (обслуживание-кольца))
7. КОНТРОЛЬ- КЛАССА- ДОСТУПА |
выполнить- 8. ПЕРЕ ДАЧ А- запрос-любой- МАРКЕРА станции |
класс-доступа = обслуживание-кольца
И НЕ СС-известен
Все классы-доступа проверены и доступны при наличи
и возможности. Необходимо найти какого-либо преем- ника
состояние_передачи := запрос-любой-станции;
Повторный старт тайм-аута_оборота_маркера (обслу- живание_кольца)
тайм-аут_оборота_маркера (обслуживание-кольца). старт ( желаемое_время_оборота (обслуживание-кольца));
7.2.3.8. Состояние ПЕРЕДАЧА-МАРКЕРА
Примечание к состоянию 8. Подсостояния ПЕРЕДАЧА-МАР- КЕРА и их упорядочение: Состояние 8 имеет 7 подсостоя- ний, каждое из которых представляет различные аспекты процесса передачи маркера. Эти подсостояния отслежива- ются переменной состояние-передачи, которая относится к типу подсостояние_передачи_маркера. Определение этого типа повторно дано ниже. Функция подсостояние-переда- чи_маркера (запрос-преемника) — это встроенная в стант цию~преем;ник функция языка Ада, позволяющая последо- вательно перейти к следующему подсостоянию, не зная имени текущего состояния.
подсостояние-передачи-маркера (запрос-преемника,
передача-маркера, повторная-передача-маркера, передача-кто-следующий, повтор-кто-следующий, запрос-любой-станции, общее-число-сбоев);
ПЕРЕДАЧА- открыто одно- 10. ОЖИДАНИЕ-
МАРКЕРА окно-ответа ОТВЕТА
передача-состояния = запрос-преемника
И НЕ наименьший-адрес
открыть 1 окно ответа для станций с адресами между ДС и СС
счет-прохождений_разрешения := 0;
опознан-преемник := false;
ПМ_протокольный-кадр := false;
пакет-помех := false
;
передача (УК =>■ запрос_преемника-1, АП => СС);
тайм-аут_окна-ответа. старт (1);
8. ПЕРЕДАЧА- открыто-два-окна- 10. ОЖИДАНИЕ- МАРКЕРА ответа ОТВЕТА
состояние-передачи = запрос-преемника
И наименьший-адрес
открыть 2 окна ответа для станций с адресами меньши- ми или большими адреса любой станции кольца счет-разрешений_соперничества := 0;
опознан-преемник := false;
ПМ_протокольный_кадр := false;
пакет-помех := false;
передача (УК = > запрос-преемника-2, АП => СС);
тайм-аут_окна_ответа. старт (2);
п
8. ПЕРЕДАЧА-
МАРКЕРА
ПЕРЕДАЧИ- МАРКЕРА
состояние-передачи = передача-маркера
ИЛИ состояние-передачи = повторная-передача-м эркера
передача-маркера
передача (УК => маркер,
АП => СС);
маркер-перед ан := true;
«маркер-передан» не требуется устанавливать на этой дуге.
Анализ показал, что невозможно перейти в состояние ДЕЖУРНОЕ без «сливания» сетью кадров данной станции.
Реализация этого действия факультативна и его исклю- чение может повысить обнаруживаемость дублиро- ванных адресов.
Следующие две переменные используются в состоянии
КОНТРОЛЬ-ПЕРЕДАЧИ-МАРКЕРА
первые-помехи := true;
ожидаемое-отражение . = true;
Текущее состояние Имя перехода Условие выхода Выполняемое действие |
Следующее состояние |
ПМ-протокольный-кадр := false; пакет_помех := false;
тайм-аут_передачи_маркера. старт (1);
8. ПЕРЕДАЧА- МАРКЕРА |
вопрос-кто- 10. ОЖИДАНИЕ- следующий ОТВЕТА |
состояние-передачи = передача-кто-следующий ИЛИ состояние-передачи = повтор-кто-следующий счет_прохождения_разрешения := 0;
опознан-преемник := false;
ПМ_протокольный-кадр := false;
пакет_помех := false;
передача (УК =' блок-данных => |
> кто-следующий, > СС); |