Текущее состояние

Условие выхода

Выполняемое действие


Имя перехода


Продолжение

Следующее состояние


И ПМ_кадр.УК /= маркер

И ПМ_кадр.УК /— установить-преемника

И ПМ_кадр.УК /= разрешение-соперничества))

И счет_прохождений_соперничества > = макс-счет-прохождений

И счет_сбоев_іпередатчика < макс-счет-сбоев-передатчика

Продвижение к концу процесса соперничества, поэтому отсчитываются последовательные сбои для обнару- жения неиоправного передатчика.

Обработка кадра в состоянии ДЕЖУРНОЕ

счет_сбоев_передатчика := счет_сбоев_передатчика + 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. Состояние ИСПОЛЬЗОВАНИЕ МАРКЕРА

  1. ИСПОЛЬЗОВА- передача-кадра 6. ОЖИДАНИЕ- НИЕ-МАРКЕРА ОТВЕТА-ИНТ-КА

ожидание-передачи (класс-доступа)

И НЕ тайм-аут-удержания-маркера.истек

передан один кадр пользователя-УДС текущего класса- доступа изъятие_ожидающего-кадра (

очередь => класс-доступа,

УК = > уп<равление_кадра,

АП = > получатель,

АО => отправитель,

АО должен быть равен ДС, кроме узлов ретрансля-

ции

блок_данных = > бдз

подавление_КПК = > подавить-КПК);Текущее состояние Имя перехода

Условие выхода Выполняемое действие

Следующее состояние



оставшиеся_входы := макс_число-попыток;

^передан (УК = > управление-кадра, АП = > получатель, АО => отправитель, блок_данных = > бдз подавление_КПК => подавить-КПК); тайм-аут_окна_ответа.старт (3);

5. ИСПОЛЬЗОВА- отсутствие-передачи НИЕ-МАРКЕРА

7. КОНТРОЛЬ- КЛАССА- ДОСТУПА

НЕ ожидание-передачи (класс-доступа)

ИЛИ тайм-аут_удержания-маркера.истек

пора отдать маркер

установить следующий более высокий класс-доступа класс-доступа : = класс-доступа — 2;




7.2.3.6. Состояние ОЖИДАНИЕ_ОТВЕТА_ИНТ_КА

6. ОЖИДАНИЕ- отсутствие-тайм-

ОТВЕТА-ИНТ- аута

КА

5. ИСПОЛЬЗОВА­НИЕ-МАРКЕРА

у правд ен и ескадр а .де йств ие-У Д С =<з а прос-без-ответ а

ИЛИ получен-ответ

генерируется автоматом ИНТ—КА при получении ответа.

проверка наличия другого обслуживаемого запроса

ОТСУТСТВИЕ ДЕЙСТВИЙ




6. ОЖИДАНИЕ- повторная-

ОТВЕТА-ИНТ- попытка КА

6. ОЖИДАНИЕ- ОТВЕТА-ИНТ- КА

тайм-аут_окна_ответа. истек

И молчание-шины

И оставшиеся-попытки > 0

И НЕ управление-кадра.действие-УДС — запрос-без-ответа

И НЕ получен-ответ

И НЕ (ПМ_протокольный-кадр ИЛИ ПМ-кадр-данных) оставшйеся-іпопыткй := оставшиеся-попытки— 1;

передача (УК = > упіравление-ікадра,



АП => получатель,

АО = > отправитель, блОК-ДаНН ЫХ = >сбд, подавление_КПК => подавить-КПК); тайм-аут_окна_ответа.старт (3);

  1. О

    5. ИСПОЛЬЗОВА-
    НИЕ-МАРКЕРА

    ЖИДАНИЕ- отсутствие-

ОТВЕТА-ИНТ- ответа-6

КА

тайм-аут_окна-ответа.истек

И молчание-шины

И оставшиеся-попытки = О

И НЕ управление-кадра. действие_УДС = запрос-без-ответа

И НЕ получен-ответ

И НЕ (ПМ_протокольный_кадр ИЛИ ПМ-кадр-данных) проинформировать ИНТ-КА о отсутствии ответа ИНТ_КА_СОБЫТИЕ.уведомление (ответ-запаздывает); проверить наличие другого обслуживаемого запроса

6

1. ДЕЖУРНОЕ

. ОЖИДАНИЕ- неожидаемый-

ОТВЕТА-ИНТ- кадр-6

КА

НЕ управление-кадра. действие-УДС = запрос-без-ответа

И НЕ получен-ответ

И (ПМ_протокольный-кадр

ИЛИ (ПМ_кадр-данных

И ПМ-кадр.АП /= ДО)

И ПМ_кадр.АО /= ДС

Какая-то другая станция полагает, что она владеет мар-

кером, поэтому отсрочка путем уведомления ИНТ-КА о ситуации и выход из кольца

ИНТ—КА_СОБЫТИЕ.уведомление (неожидаемый-кадр);

  1. ОЖИДАНИЕ- собственный- 6. ОЖИДАНИЕ-

ОТВЕТА-ИНТ- кадр-6 -ОТВЕТА-

КА ИНТ-КА

НЕ управление-кадра. действие-УДС = запрос-без-ответа И НЕ получен-ответИ (ПМ_протокольный-кадр ИЛИ ПМ_кадр_данных)

И ПМ_кадр.АО = ДС

Игнорирование собственного кадра

ПМ_протокольный_кадр : — false;

7.2.3.7- Состояние КОНТРОЛЬ-КЛАССА-ДОСТУПА

к

7. КОНТРОЛЬ-
КЛАССА-
ДОСТУПА


следующий- класс-доступа


5. ИСПОЛЬЗОВА-
НИЕ-МАРКЕРА


ласс-доступа > обслуживание-кольца Загрузка таймера_удержания_маркера остатком из тай- мера-оборота-маркера для данного класса-доступа тайм-аут-удержания_маркера.старт (

тайм-аут_оборота-маркера (класс_доступа). значение);

Повторный запуск таймера оборота маркера тайм-аут-оборота_маркера (класс-доступа). старт (

желаемое-время-оборота (класс-доступа));

в

7. КОНТРОЛЬ- КЛАССА -ДОСТУПА

ыход-из-кольца 8. ПЕРЕДАЧА-

МАРКЕРА

класс-доступа — обслуживание-кольца

И СС-известен

И НЕ желание-участвовать

И НЕ ожидание-любой-передачи

И счет-запросов > О

все уровни доступа проверены и все очереди пусты

Запрос на удаление из кольца и передача маркера сле-

дующей станции

передача (УД = > установить-преемника,

АП = > ПС,

блок_данных = > СС);

состояние-передачи := передача-маркера;

счет-запросов := счет-запросов — 1;

—— Повторный запуск таймера обслуживания кольца «об-

ращение маркера»

тайм-аут-обращения-маркера (обслуживание-кольца).

старт (желаемое_время-обращения (обслуживание-кольца));

  1. КОНТРОЛЬ- выполнить- 8. ПЕРЕДАЧА-

КЛАССА- запрос-преемника МАРКЕРА

ДОСТУПА класс_доступа = обслуживание-кольца И СС_известен И счет-запросов = О

И НЕ тайм-аут-оборота-маркера (обслуживание-кольца).

истек Все классы-доступа проверены и доступны при наличии —- возможности. Сейчас новым станциям предлагается войти в кольцо состояние-передачи := запрос-преемника;

повторный старт тайм-аута оборота маркера (обслужи- вание-кольца)

тайм-аут_оборота_маркера (обслуживание-кольца). старт ( желаемое-время-оборота (обслуживание-кольца))

  1. КОНТРОЛЬ- выполнить- 8. ПЕРЕДАЧА-

КЛАССА- передачу-маркера МАРКЕРА

ДОСТУПА класс-доступа = обслуживание-кольца И СС-известен

И (((желание-участвовать ИЛИ ожидание-любой-передачи)

И (счет-запросов > О

ИЛИ (счет-запросов = О

И тайм-аут-оборота_маркера (обслуживание-кольца).

истек))

—- Все класса-доступа проверены и доступны при наличии —- возможности. Передача маркера следующей станции состояние-передачи := передача-маркера;

счет-запросов := макс, (счет-запросов— 1, 0);

Повторный старт, тайм-аута_оборота_маркера (обслу- живание-кольца)

тайм-аут_оборота_маркера (обслуживание-кольца) старт ( желаемое-время-оборота (обслуживание-кольца))

7. КОНТРОЛЬ- КЛАССА- ДОСТУПА

выполнить- 8. ПЕРЕ ДАЧ А-

запрос-любой- МАРКЕРА

станции

класс-доступа = обслуживание-кольца

И НЕ СС-известен

Все классы-доступа проверены и доступны при наличи

и возможности. Необходимо найти какого-либо преем- ника

состояние_передачи := запрос-любой-станции;

Повторный старт тайм-аута_оборота_маркера (обслу- живание_кольца)

тайм-аут_оборота_маркера (обслуживание-кольца). старт ( желаемое_время_оборота (обслуживание-кольца));

7.2.3.8. Состояние ПЕРЕДАЧА-МАРКЕРА

Примечание к состоянию 8. Подсостояния ПЕРЕДАЧА-МАР- КЕРА и их упорядочение: Состояние 8 имеет 7 подсостоя- ний, каждое из которых представляет различные аспекты процесса передачи маркера. Эти подсостояния отслежива- ются переменной состояние-передачи, которая относится к типу подсостояние_передачи_маркера. Определение этого типа повторно дано ниже. Функция подсостояние-переда- чи_маркера (запрос-преемника) — это встроенная в стант цию~преем;ник функция языка Ада, позволяющая последо- вательно перейти к следующему подсостоянию, не зная имени текущего состояния.

подсостояние-передачи-маркера (запрос-преемника,

передача-маркера, повторная-передача-маркера, передача-кто-следующий, повтор-кто-следующий, запрос-любой-станции, общее-число-сбоев);

  1. ПЕРЕДАЧА- открыто одно- 10. ОЖИДАНИЕ-

МАРКЕРА окно-ответа ОТВЕТА

передача-состояния = запрос-преемника

И НЕ наименьший-адрес

открыть 1 окно ответа для станций с адресами между ДС и СС

счет-прохождений_разрешения := 0;

опознан-преемник := false;

ПМ_протокольный-кадр := false;

пакет-помех := false

;



передача (УК =>■ запрос_преемника-1, АП => СС);

тайм-аут_окна-ответа. старт (1);

8. ПЕРЕДАЧА- открыто-два-окна- 10. ОЖИДАНИЕ- МАРКЕРА ответа ОТВЕТА

состояние-передачи = запрос-преемника

И наименьший-адрес

открыть 2 окна ответа для станций с адресами меньши- ми или большими адреса любой станции кольца счет-разрешений_соперничества := 0;

опознан-преемник := false;

ПМ_протокольный_кадр := false;

пакет-помех := false;

передача (УК = > запрос-преемника-2, АП => СС);

тайм-аут_окна_ответа. старт (2);

п

8. ПЕРЕДАЧА-
МАРКЕРА

ередача-маркера 9. КОНТРОЛЬ-

ПЕРЕДАЧИ- МАРКЕРА

состояние-передачи = передача-маркера

ИЛИ состояние-передачи = повторная-передача-м эркера

передача-маркера

передача (УК => маркер,

АП => СС);

маркер-перед ан := true;

«маркер-передан» не требуется устанавливать на этой дуге.

Анализ показал, что невозможно перейти в состояние ДЕЖУРНОЕ без «сливания» сетью кадров данной станции.

Реализация этого действия факультативна и его исклю- чение может повысить обнаруживаемость дублиро- ванных адресов.

Следующие две переменные используются в состоянии

КОНТРОЛЬ-ПЕРЕДАЧИ-МАРКЕРА

первые-помехи := true;

ожидаемое-отражение . = true;

Текущее состояние Имя перехода

Условие выхода

Выполняемое действие

Следующее состояние



ПМ-протокольный-кадр := false; пакет_помех := false;

тайм-аут_передачи_маркера. старт (1);

8. ПЕРЕДАЧА- МАРКЕРА

вопрос-кто- 10. ОЖИДАНИЕ-

следующий ОТВЕТА



состояние-передачи = передача-кто-следующий ИЛИ состояние-передачи = повтор-кто-следующий счет_прохождения_разрешения := 0;

опознан-преемник := false;

ПМ_протокольный-кадр := false;

пакет_помех := false;

передача (УК =' блок-данных =>

> кто-следующий, > СС);