package тайм-аут-шина-свободна is новый тайм-аут (инт-времени = > интервал-ответа);

package тайм-аут_соперничества is новый тайм-аут (инт-времени = > интервал-ответа);

•package тайм-аут_заявки is новый тайм-аут (инт-времени

.= > интервал-ответа); package тайм-аут_окна-ответа is новый тайм-аут (инт-времени

= >» интервал-ответа); package тайм-аут-передачи-маркера is новый тайм-аут (инт_времени => интервал-ответа);

package тайм-аут_удержания_маркера is новый тайм-аут

(инт_времени => октетный-интервал); package тайм-аут-оборота-маркера

is array (обслуживаніие-жольца . . 4) of нового тайм-аута (инт_времени => октетный-интервал);

использовано только — 2, 0, 2, 4

Скопировать параметры инициации в качестве текущих зна- чений

ДС := иниц-ДС;

интервал-ответа := иниц-интервал-ответа;

макс_счет_запросов := иниц-макс-счет_запросов;

макс-число-попыток := иниц_макс_число-попыток;

время-удерж-маркера-высш-приоритета

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

: = иниц_нач_значение_тайм-аута_обслуживания-кольца; желание-участвовать := иниц_желание-участвовать;

мин_длина_преамбулы-после_молчания

:= <соответствующий физический параметр>;

получить длину преамбулы из физического уровня Установить начальные значения внутренних переменных в_кольце := false;

СС-известен := false;

наименьший_адрес := false;

станция_ограниченной_активности :== false;

маркер-передан- := false;счет_сбоев_передатчика := 0;

УЗ-СОБЫТИЕ. уведомление (нет_преемника);

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

(макс-незанятость_1пи'ны);

  1. Состояние ДЕЖУРНОЕ

  1. ДЕЖУРНОЕ лрием-маркера 5. ИСПОЛЬЗОВА­

НИЕ-МАРКЕРА

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

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

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

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

И в-кольце

прием маркера станция-ограниченной-активности := false;

ПС := ПМ_кадр.АО; установлен предшественник

установка наивысшего класса-доступа класс_доступа := макс-класс-доступа;

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

(время_удерж_маркера-высш-1Приоритета);

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

1. ДЕЖУРНОЕ новый-преемник 1. ДЕЖУРНОЕ

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

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

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

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

И ПМ_кадр.блок_данных /= ДС

И в-кольце опознан новый преемник СС := ПМ_кадр.блок-данных; наименьший-адрес : = (СС>ДС); СС-известен := true;

станция_ограниченной-активности := false; счет-запросов := 0;

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

УЗ_СОБЫТЙЕ.уведомленійе (новый-преемник, СС);Текущее состояние Имя перехода

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

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

тайм-аут_неактивности_шины.старт ПМ_протокольный_кадр := false;

(м а кс-незанятость- шины);

1. ДЕЖУРНОЕ нет-преемника-1

1. ДЕЖУРНОЕ



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

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

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

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

И ПМ_кадр.блок_данных = ДС

И в-кольце

преемник — сама станция — единственная станция

в кольце

СС : = ПМ_кадр.блок-данных;

СС_известен := .false; ни одной станции в кольце

станция-ограниченной-активности := false;

счет_запросов := 0;

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

УД_СОБЫТИЕ.уведомление (нет-преемника);

тайм-аут_неактивности_шины.старт (макс-незанятость- шины);

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

1. ДЕЖУРНОЕ ввод-запроса-

вхождения

ПМ_протокольный-кадр И ПМ_кадр.АО /= ДС

2. ЗАПРОС- ВХОЖДЕНИЯ

И НЕ (в_кольце И СС-известен) не участвует в работе

кольца

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

И ( (ПМ_кадр.УК = запрос-преемника-1)

И ПМ-кадр.УК > ДС

И ПМ_кадр.АП<ДС)

ИЛИ (ПМ_кадр.УК = запрос_преемника-2

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

ИЛИ ПМ-кадр.АП < ДС ) ) )

Запрос-преемника опознан, . что позволяет данной


станции ответить в качестве возможного преемника.

Предполагается соперничество

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

счет-передач-маркера := 0;

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

ВМ := ПМ_кадр.АО; сохранение адреса текущего ВМ;

СС := ПМ_кадр.АП;

наименьший_адрес := (ДС <. СС); станция-ограниченной-активности := false;

инициация «истечения» тайм-аутов-оборота-маркера тайм-аут-оборота-маркера (4) .старт (0);

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

тайм-аут_оборота-маркера (0). старт (0);

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

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

тайм-аут-соперничества.старт (задержка-ответа (ДС <.

ДМ) );

П

1. ДЕЖУРНОЕ

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

восст-запроса- 2. ЗАПРОС- вхождения ВХОЖДЕНИЯ

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

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

И в-кольце

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

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

И ( (ПМ_кадр.УК = запрос_преемника-1

И ПМ-кадр.АО > ДС

И ПМ-кадр.АП < ДС)

ИЛИ (ПМ_кадр.УК = запрос-преемника-2

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

ИЛИ ПМ-кадр.АП < ДС) ) )

Данная станция была в кольце, но в данное время она

пропускается по некоторым причинам.

Кадр запрос-преемника опознан, что позволяет данной

станции ответить в качестве возможного преемника.

Предполагается соперничество.

счет-прохождений-соперничества := 0;

счет-запросов := 0;маркер-передан := false;

ВМ :=• ПМ-кадр.АО;

станция-ограниченной-активности := false;

тайм-аут_соперничества.старт (задержка-ответа (ДС <

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

1. ДЕЖУРНОЕ собственный-кадр-1 1. ДЕЖУРНОЕ

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

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

И ПМ_кадр.АО = ДС игнорирование собственного кадра тайм-аут_неактивности-шины.старт (макс-незанятость- шины);

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

1. ДЕЖУРНОЕ дублированный- 0. АВТОНОМНОЕ адрес-1

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

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

И НЕ маркер-передан

Обнаружен дублированный адрес станции. Инфор- мирование диспетчера сети УЗ-СОБЫТИЕ.уве- домление (дублированный-адрес);

1. ДЕЖУРНОЕ «латание»-кольца 2. ЗАПРОС- ВХОЖДЕНИЯ

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

И ПМ-кадр.УК = кто-следующий

И ПМ-кадр.АО /— ДС

И ПМ_кадр.блок_данных = ПС

И в-кольце

Распознает сообщение кто-следующий от шредшест- • венника предшествующей станции и отвечает со- общением установить-преемника, чтобы «зала- тать» кольцо после выхода из него неисправной станции (предшественника ДС). Возможно сопер- ничествосчет_прохождений-соперничества := 0;

счет_запросов := 0;

маркер_передан := false;

ДС := ПМ-кадр.АО;

станция_ограниченной-активности : = false;

тайм-аут_соперничества.старт (0);

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

1. ДЕЖУРНОЕ несвободиая-шина 1. ДЕЖУРНОЕ пакет-помех

шина не свободна

сброс тайм-аута_неактивности-шины

тайм-аут_неактивности-шины.старт (макс-незанятость- шины);

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

1. ДЕЖУРНОЕ отсутствие-маркера 4. ЗАЯВКА- МАРКЕРА

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

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

И НЕ (ПМ_протокольный_кадр ИЛИ ПМ-кадр-данных ИЛИ пакет-помех)

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

ИЛИ в_кольце

ИЛИ (желание_участвовать И НЕ станция_ограниченной-активности))

в случае выхода из строя приемника ДС

нет маркера, поэтому передача заявки

счет_передач-заявки : = 1;

бдз := блок_данных_заявки (счет-передач-заявки); передача (УК = > заявка-маркера, блок-данных

= > бдз);

тайм-аут_заявки.старт (1);

1. ДЕЖУРНОЕ


выход-из-кольца


1. ДЕЖУРНОЕ



ПМ-протокольный-кадр И ПМ-кадр.АО /= ДС И в-кольце

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

И ( (ПМ_кадр.УК = запрос-преемника_1

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

И ПМ_кадр.АП < ДС)

ИЛИ (ПМ-кадр.УК = запрос-преемника-2

И (ПМ-кадр.АО > ДС

ИЛИ ПМ_кадр.АП < ДС) ) )

Данная станция вышла из кольца маркер-передан := false;

станция-ограниченной-активности :=. false;

в-кольце := false;

СС-известен : = false;

УЗ-СОБЫТИЕ.уведомление (нет-преемника);

тайм-аут-неактивности_шины.старт (макс-незанятость- шины);

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

1. ДЕЖУРНОЕ незанятая-стапция 1. ДЕЖУРНОЕ

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

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

И НЕ (ПМ_протокольный_кадр ИЛИ ПМ-кадр-данных ИЛИ іпакет-помех)

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

И НЕ в-кольце

И (НЕ желание-участвовать ИЛИ станция-ограниченной- активности)

Кольцо вышло из строя

Сброс тайм-аута-неактивности-шины для захвата шины

тайм-аут-снеактивности-шины.старт (макс-незаінятость-Шійны);

1. ДЕЖУРНОЕ передача-ответа 1. ДЕЖУРНОЕ

ПМ-кадр-данных

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

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

И ПМ_кадр.УК.действие-УДС = запрос-с-ответом

Получен запрос_с-ответом

Станция должна начать выдачу ответа в течение двух интервалов-ответа, если эта факультативная возмож- ность обеспечивается

станция-ограниченной-активности := false; получить_ожидаемый-ответ (

УК — > управление-кадра, АП = > получатель, АО => отправитель, іблок-данпых = > обд, подавление-КПК => подавить-

КПК);

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

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

АО => отправитель, блок_данных => сбд, подавление-КПК = > подавить-КПК); маркер-передан := true;

тайм-аут_неактивности-шины.старт (макс-незанятость- шины);

  1. ДЕЖУРНОЕ опознана-другая- 1. ДЕЖУРНОЕ станция

Примечание. Нижеследующее определяет инверсию совокуп- ности всех изложенных выше условий приема-кадра, то есть предполагается то же, что и «в-противном-случае» или «ничего-из_вышеперечисленного».

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

И НЕ (ПМ_кадр.УК.действие-УДС = запрос-с-ответом

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

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

И НЕ любое из нижеперечисленного

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

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

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

И в-кольце)

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

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

И в-кольце)

ИЛИ (ПМ-кадр.УК = запрос-преемника-1

И (в-кольце ИЛИ желание-участвовать

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

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

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

ИЛИ (ПМ-кадр.УК = запрос-преемника-2

И (в-кольце ИЛИ желание-участвовать

ИЛИ ожидание-любой-передачи) И(ПМ-кадр.АПСДС)

ИЛИ ПМ-кадр.АО > ДС)

ИЛИ (ПМ_кадр.УК = кто-следующий

И ПМ_кадр.блок-данных = ПС) и в-кольце) ) )

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

станция-ограниченной-активности := false; тайм-аут-неактивности-шины.старт (макс-незанятость-шины); ПМ_протокольный_кадр := false;

    1. Состояние ЗАПРОС ВХОЖДЕНИЯ

  1. ЗАПРОС- продолжение- 3. ЗАДЕРЖКА-

ВХОЖДЕНИЯ соперничества ЗАПРОСА

тайм-аут-соперничества. истек

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

И НЕ (ПМ_протокольный_кадр ИЛИ ПМ-кадр-данных ИЛИ пакет-помех) передача (УК = установить-преемника, АП = > ВМ, самый последний надежный АО

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

тайм-аут_неактивности-шины.старт (макс-незанятость- шины);

  1. ЗАПРОС- потеря- 1. ДЕЖУРНОЕ

ВХОЖДЕНИЯ соперничества-2

(ПМ_протокольный-кадр ИЛИ ПМ-кадр-данных ИЛИ пакет-помех) Исчезновение соперничества и событие повторной обра-

ботки в состоянии 1

ОТСУТСТВИЕ ДЕЙСТВИЙ7.2.3.3. Состояние ЗАДЕРЖКА-ЗАПРОСА

  1. ЗАДЕРЖКА- задержка- 2. ЗАПРОС-

ЗАПРОСА соперничества ВХОЖДЕНИЯ

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

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

И счет-прохождений-соперничества < макс_число передач задержка до следующей соперничающей передачи

длительность задержки зависит от бит адреса, индексируемых

счетом-прохождений-соперничества

счет_прохождеіьий_соперничества : = счет-пірохождений-соперниче- ства + 1 тайм-аут-соперничества.старт (задержка-соперничества

(счет-прохождений-соперничества));

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

  1. ЗАДЕРЖКА- выигрыш- 5. ИСПОЛЬЗОВА-

ЗАПРОСА соперничества НИЕ-МАРКЕРА

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

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

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

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

здесь передается маркер, поэтому станция остается в кольце в_кольце : = true;

СС_известен := true;

ПС := ПМ-кадр.АО;

счет_сбоев-передатчика := 0;

установить класс доступа в наивысшее значение класс_доступа := макс-класс-доступа;

УЗ-СОБЫТИЕ.уведомление (новый-преемник, СС);

тайм-аут_удерж_маркера.старт (время-удерж_маркера_ высш-приор);

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

3. ЗАДЕРЖКА- «латание»- 5. ИСПОЛЬЗОВА-

ЗАПРОСА при-выигрыше НИЕ-МАРКЕРА

ПМ_протокольный-кадр И ПМ-кадр.УК = маркер



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

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

Здесь 'передается маркер, поэтому станция возвращается в

кольцо

ПС := ПМ_кадр.АО;

счет_сбоев_передатчика := 0;

Установить наивысшее значение класса-доступа

класс_доступа := макс-класс-доступа;

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

(время-удерж_маркера-высш_приоритета);

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

  1. ЗАДЕРЖКА- потеря- 1. ДЕЖУРНОЕ

ЗАПРОСА соперничества-3

(счет-прохождений-соперничества < макс_счет_прохождений

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

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

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

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

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

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

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

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

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

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

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

прохождений)

—— Что-то еще продолжается, поэтому соперничество долж- но закончиться. Возврат в состояние ДЕЖУРНОЕ и повторная обработка события.

1. ДЕЖУРНОЕ

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

3. ЗАДЕРЖКА- конец-

ЗАПРОСА соперничества

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

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

И ПМ_кадр.УК = маркер И ПМ.кадр.АП /= ДС) ИЛИ (ПМ-протокольный-кадр