Опознан-преемник — булева переменная, используемая запра­шивающей станцией для регистрации приема действительного ка­дра установить-преемника во время последовательности запрос- вхождения. Если эта переменная имеет значение «истинно», когда тайм-аут_окна_ответа истек, соперничество успешно разрешено.

Счет_передач_заявок — целое число в диапазоне от 0 до макс- счета_яіередач. Используется в качестве индекса ДС для выбора двух бит из адреса станции. Значение выбранных бит (кратное двум интервалам-ответа) определяет длину поля информации кад­ра заявка-маркера, подлежащего передаче. После каждого кад­ра заявка_маркера значение переменной счет-передач-заявок уве­личивается на единицу.

Счет_прохождений_соперничества — целое число в диапазоне ют 0 до макс-счета-передач. Используется в качестве индекса ДС для выбора двух бит из адреса станции. Дополнение до единиц значения выбранных бит (кратного интервалу-ответа) определяет длительность времени, в течение которого станция задерживается в состоянии ЗАПРОС-ВХОЖДЕНИЯ после получения кадра раз- решение_соперничества. Если до истечения тайм-аута соперни­чества никаких других кадров не опознано, станция передает вла­дельцу маркера кадр установить-преемника, увеличивает значе­ния счета-прохождений-соперничества, переходит в состояниеЗАДЕРЖКА-ЗАПРОС А и ожидает маркер или другой кадр раз- решение-соперничества.

Задержка-соперничества (цикл) — целочисленная функция, при­нимающая значения 0, 1, 2 или 3. Эти значения основаны на допол­нении до единиц пары адресных бит, которые указываются в цикле сортировки адресов. Это значение используется для управ­ления числом интервалов-ответа, на которые станция задержива­ется перед передачей при запросе вхождения в логическое кольцо.

Счет_прохождений-разрешения — целое число в диапазоне от О до макс-счета-передач. Используется для счета числа прохож­дений разрешений соперничества, которые выполняет станция,, владеющая маркером. Если этот счет достигает.значения макс- счета_передач, процесс разрешения прекращается и УД—КА пе­реходит в следующее подсостояние передача-маркера.

Счет_запросов — целое число в диапазоне от 0 до 28—1.

Определяет, когда станция должна открыть окно ответа. Перед передачей маркера значение счета-запросов проверяется. Если это значение равно нулю, запрашивается новый преемник откры­тием окна ответа. Если это значение не равно нулю, счет умень­шается и передается маркер. Всякий раз, когда во время окон ответа, следующих за кадром запрос-преемника, что-либо- опознается, значение счетчика устанавливается в ноль, с тем, чтобы он снова оказался в значении ноль, когда станция в после­дующем примет и передаст маркер. Таким образом, получение кадра установить-преемника во время окна ответа побуждает станцию вновь открыть окно ответа перед следующей передачей маркера (тайм-аут-обслуживания_кольца разрешен).

Оставшиеся-попытки — целое число в диапазоне от 0 до пре- дельного-числа-попыток. Используется для счета числа повтор­ных передач при таймировании кадра, определяющего запрос-с- ответом.

Подавление_КПК — булева переменная, используемая в УД—КА для указания на то, что текущий кадр должен быть пере­дан без добавления КПК автоматом ПД—КА.

Счет_сбоев_передатчика — целое число в диапазоне от 0 до 7. Используется для информирования о том, что передатчик стан­ции, вероятно неисправен, в связи с чем передачи станции не- могут быть опознаны правильно другими станциями сети.

Значение счета-сбоев_передатчика увеличивается каждый раз,, когда станция решает закончить процесс соперничества за маркер или когда она не в состоянии передать маркер какому-либо преем­нику. Ни одна из таких ситуаций не должна иметь место во вре­мя нормальной работы. Значение счета-сбоев-передатчика сбра­сывается в ноль, если станция либо побеждает в процессе маркер­ного соперничества запрос-вхождения, либо успешно запрашивает нового преемника, поскольку такое событие указывает, что дру­гая станция правильно опознала передачу данной станции.

Если значение счета_сбоев_передатчика возросло до значения макс_счет_сбоев-передатчика, станция сообщает диспетчеру станции передатчик-неисправен и входит в состояние АВТОНОМ­НОЕ. Значение макс-счет-сбоев-передатчика устанавливается равным 7, допустимое при случайных протокольных тупиковых пос­ледовательностях, обусловленных помехами. Если станция не мо­жет войти в кольцо или передать маркер (находилась в логическом кольце) семь раз подряд, это значит что внешние влияния вызва­ли какую-то неисправность в станции, вероятно, в передатчике, и поэтому станция сама выходит из логического кольца.

Первые-помехи — булева переменная, которая управляет об­работкой пакетов помех в состоянии КОНТРОЛЬ-ПЕРЕДАЧИ- МАРКЕРА. Принимает значение «истинно» при входе в это сос­тояние и значение «ложно», когда ожидаемые отраженные сигна­лы ложны и опознан пакет помех. Если пакет помех опознается, когда переменная первые-помехи имеет значение «ложно», станция переходит в состояние ДЕЖУРНОЕ.

Ожидаемое_отражение — булева переменная, используемая при попытке передать маркер. Она помогает станции отличать опознаваемые передачи своего собственного маркера от только что переданных новым владельцем маркера искаженных данных. Пе­ременная ожидаемое_отражение устанавливается в значение «ис­тинно» при передаче маркера и в значение «ложно», когда станция опознает, или предположительно опознает отраженные сигналы переданного ею маркера.

Состояние_передачи — переменная многих состояний, исполь­зуемая для управления операциями подсостояния состояния ПЕ- РЕДАЧА-МАРКЕРА.

Действия, выполняемые в этом состоянии, зависят от значения переменной состояние-передачи следующим образом:

Значение переменной состояние_передачи

Действие

Запрос_ирссмиика

Передача кадра запрос-преемника. Вход в состояние ОЖИДАНИЕ-ОТВЕТА

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

Передача маркера преемнику. Вход в состояние КОНТРОЛЬ_ПЕРЕДАЧИ_МАР. КЕРА

Повторная-передача- тларкера

Кто_следующий?

Те же действия, что и в подсостоянии пе- редача-маркера

Передача кадра кто следующий? Вход в состояние ОЖИДАНИЕ-ОТВЕТА


Значение переменной состояние_передачи

Действие

Запрос-любой-станции

Передача кадра запрос-преемника-2 с АП-ДС и с двумя открытыми окнами от­вета, которые охватывают все другие стан­ции. Вход в состояние ОЖИДАНИЕ-ОТ- ВЕТА

Общая неисправность

Установка переменной станция-ограни- ченной-іакшивиоісти в значение «истинно» и либо молчаливая передача маркера об­ратно самой себе (если станция имеет до­полнительные данные для передачи), либо вход в состояние ДЕЖУРНОЕ. Эта стан­ция не должна передавать снова до тех пор, пока не будет иметь данных для пе­редачи или пока не опознает действитель­ного кадра от другой станции



ИНТ — КА-СОБЫТИЕ.уведомление — функция, обеспечива­емая автоматом УД—КА. Эта функция настраивает автомат ИНТ—КА на появление значительных событий в автомате УД-КА.

УЗ_СОБЫТИЕ.уведомление — функция, обеспечиваемая под­уровнем УДС, которая настраивает диспетчера на появление зна­чительных событий в подуровне УДС.

7Л.7. Переменные инициации. Значения переменных, описыва­емых в настоящем разделе, копируются в соответствующие опера­ционные переменные при инициации станции. Каждая переменная инициации имеет тот же диапазон, что и соответствующая поимено­ванная операционная переменная.

иниц-ДС — копируется в ДС при инициации

иниц_интервал_ответа — копируется в интервал_ответа при инициации

иниц-макс-счет-запросов — копируется в макс-счет-запросов при инициации

иниц_макс_числа_попыток — копируется в макс-число-попы- ток при инициации

иниц_время_удержания_маркера_высш_приоритета — копиру­ется в время-удержания_маркера-высш-приоритета при инициа­ции

иниц-желаемого-времени-оборота (класс доступа) — копиру­ется в желаемое-время_обоірота (класс доступа) при инициации

иниц_исходного_значения_таймера_обслуживания кольца — ко­пируется в исходное-значение-таймера-обслуживания-кольца при инициации

иниц_желание-участвоватькопируется в желание-участво- вать при инициации

7 2. Формализованное описание автомата управления доступом. В данном подразделе приводится формализованное описание автомата УД—КА. Используемая описательная модель является гибридом метода конечных автоматов и процедурных нотаций и концепций языков программирования. В любой момент времени автомат УД—КА может находиться в одном из 11 основные состоя­ний. Его действия и переходы в другое состояние определяются его оценкой переменных УДС, рассмотренных в предыдущем под­разделе.

В соответствующих таблицах спецификация УД—КА ориен­тирована на правильную работу в дуплексной среде. То есть ав­томат не должен вводиться в заблуждение приемом собственных передач. Кроме того, УД—КА не будет работать надлежащим об­разом в полудуплексной среде. Дело разработчика добиться того, чтобы реализация, не являющаяся дуплексной, действовала так, как если бы она была дуплексной.

Оцениваемые условия и действия, выполняемые при каждом пе­реходе конечного автомата, выражаются с использованием син­таксиса, основанного на языке программирования Ада. Перемен­ные УД—КА и другие блоки информации, используемые УД—КА, описываются с использованием деклараций данных, подобных язы­ку Ада. Если блок информации не может быть выражен с исполь­зованием синтаксиса Ада, используется описательное утвержде­ние, заключенное в угловые скобки (О). Для лучшей чита­бельности принят упрощенный, подобный языку Ада стиль описа­ния, который не предназначен для представления компилируемых утверждений.

Представлено следующее:, стилистические декларации на языке программирования большинства переменных, функции и процедуры, используемые при описании конечного автомата; пе­речень переходов состояний УД—КА (дуги); таблицы переходов состояний УД—КА.

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

  1. условия, которые должны иметь место для выполнения кон­кретного перехода;

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

Примечание. В целях описания предполагается, что автомат УД—КА должен мгновенно реагировать на внешние события. Таким образом, все усло­вия оцениваются одновременно.7.2.1. Объявления данных автомата УД—КА

Примечание. Здесь константы представлены в виде цифровых значений в отличие от разд. 4, где они представлены в виде последовательностей упоря­доченных для передачи бит.

Константы и параметры

Все нижеперечисленное рассматривается в данном описании как константы с учетом того, что многие из этих констант по существу являются параметрами станций, устанавливаемыми диспетчером станции

интервал-символа: constant длительность := 1/ <сетевая

•скорость да;нны:х>.

октетный-интервал: constant длительность := 8«интервал-

символа;

длина-адреса: constant (16, 48); параметр сети

макс_счет_передач: constant (9, 25) := (длина-адреса/2) 4- 1;

макс-длина-адреса: constant (2 ** 6 — 1, 2««48 — 1)

: = (2 дл'И'на-адреса — 1);

длительность_тайм-аута: constant целое := (2««21);

макс_длина_кадра: constant целое := (2** 13— 1); 8191

макс_длина_блока_данных: constant целое : =

(макс_длина_кадра — (54-2 * длина-адреса/8));

это дает 8174 при 48-битном адресе,

и 8182 при 16-битном адресе.

макс_класс_доступа: constant целое := 6;

•обслуживание-кольца: constant целое := —2;

минимальное значение класса доступа

макс-счет-сбоев-передатчика: constant целое := 7;

иниц—ДС: constant целое range 0 .. макс-адрес

:= < специфичен для станции >;

иниц-ннтервал-ответа: constant длительность range октетный-

интервал ..

(2.» 13 — 1) «октетный-интервал := < специфичен для сети>; иниц_желание-участвовать: constant булево : = <специфичен

для станции >;

иниц-макс-счет-зацросов: constant целое

16 .. 255 : = < специфичен для станции >;

иниц_макс_число-попыток: constant целое range 0..7 := 3;

значение типа

иниц-время_удерж_маркера_высш_приоритета: constant целое range 0 .. (2 ** 16 — 1) := <специфичен для станции>;

иниц_желаемое-время_обращения: array (—2, 0, 2, 4) constant целое range 0 .. длительность-тайм-аута := «^специфичен для

станции >•

иниц-нач_значение-тайм-аута-обслуживания-кольца constant целое range 0.. длительность-тайм-аута <специфичен для

станции>;

Определение типов

type интервалы-ответа is целое range 0.. 7;

type адрес is целое range 0.. макс-адрес;

type счет_передач is целое range 0.. макс-счет-передач;

type приоритет_УЛЗ is целое range 0 .. 7;

type приоритет-УДС is (0, 2, 4, 6);

type действия-УДС is (запрос-без-ответа, запрос-с-ответом, ответ);

type символ-УДС is (ноль, единица, не-данные, зап-нерабоч, плохой-сигнал, молчание);

обозначаются соответственно (0, 1, N, Р, В, S) символ-данных is символ-УДС range ноль .. единица;

обозначается D

type октет_данных array (0 .. 7) of символ-данных;

type тип-блока-данных is

record

длина: целое range 0.. макс_длина_блока_данных := 0;

данные: array (0 .. макс-длина-блока-данных) of октет-

-данных;

end record;

type идентификатор-кадра is (управление_УДС, 2#00#

данные); 2#10#или 2#01#или 2#11#

type тип_упр_кадра is (идк: идентификатор-кадра) record case идк is

when управление-УДС => типкддисп : целое range 0.. 63;