when данные =>

record

дейстівйе_ЎДС: действия-УДС:

=з а прос-Л5ез_ответа;

приоритет : приоритет-УЛЗ : =7;

end record;

end case;

end record;

for тип_упр_кадра use определяет структуру подполя

record at мод 8

идк at 0 range 0 .. 1;

типкддиоп at 0 range 2 .. 7;

действие-УДС at 0 range 2 .. 4;

приоритет at 0 range 5 .. 7;

end record;

type тип-КПК is array (0 .. 3) of октет-данных;

type кадр_общ_назначения is

record

УК: тип-упр-кадра;АП: адрес;

АО: адрес;

блок-данных: тип-блока-данных;

КПК: тип-КПК;

end record;

Состояние 8 (ПЕРЕДАЧА-МАРКЕРА) имеет семь подсостоя- —— ний, каждое из которых представляет собой различные аспекты процесса передачи маркера. Эти подсостояния от- слеживаются переменной состояние-передачи, которая при- надлежит к типу подсостояние_передачи_маркера. type подсостояние_передачи_маркера is

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

Определения констант

нулевой-блок-даиных: тип-блока-данных; имеет длину ноль

заявка-маркера: тип_упр-,кадра := (управлеиие_УДС,

типкддисп => 2#000000#);

запрос_преемника-1: тип-упр-кадра := (управление_УДС),

типкддисп = > 2# 100000#);

запрос-преемника-2: тип_упр_кадра := (управление-УДС,

типкддисп = > 2#010000#); кто-следующий: тип_упр_кадра := (управление-УДС,

типкддисп => 2# 110000#);

'разрешение-соперничества: тип-упр-кадра := (управление- УДС, типкддисп = > 2# 001000#);

маркер: тип-упр_кадра := (управление-УДС,

типкддисп = > 2#000100#); установить-преемника: тип-упр-кадра := (управление-УДС,

типкддисп = > 2#001100#):

Процедуры и пакеты

Пакеты родовых тайм-аутов

generic

type метка is целое range 0.. длительность-тайм-аута;

type единица-времени is (октетный-интервал, интервал- ответа);

package тайм-аут (инт-времени: единица-времени : =

октетный-интервал)

procedure старт (иниц: in метка);

function значение return метка;

function истек return булево;

end тайм-ау

т Тайм-ауты отсчитываются от значения «старт» вниз до нуля. Тайм-ауты истекают, когда их значение становится равным нулю.

Временной-интервал определяет дискретность тайм-аута или интервал счета. Каждый отсчет соответствует одной «еди- нице_времени», которая соответствует либо одному интер- валу-ответа, либо одному октетному-интервалу в физиче- ской среде.

function блок_данных-заявки (cycle : in число-передач)

return тип-блока-данных.

Выдает блок данных с произвольным содержимым и с полем его длины (указывая тем самым длительность его переда- чи), равным 0, 2, 4 или 6 интервалам_ответа. Эта длина за- висит от двух бит адреса, указанных циклом сортировки адреса.

function макс-незанятость-шины return интервалы-ответа;

Выдает 6 или 7 временных интервалов интервал-ответа:

если наименыпий-адрес, выдает 6 интервалов-ответа, в противном случае выдает 7 интервалов-ответа.

function задержка-ответа (ниже-ДС : in Boolean) return интервалы-ответа;

—- Выдает 0 или 1 временных интервалов интервал-ответа:

—— если ниже ДС, выдает 0 <инт.ервалов_ответа, в противном

. случае выдает 1 интервал-ответа.

function задержка-соперничества (cycle : in счет_передач) return интервалы-ответа;

Выдает 0, 1, 2 или 3 временных интервалов интервал отве- та, основываясь на дополнении до единиц двух бит адреса, —— указанного циклом сортировки адресов.

function ожидание-передачи (queue : in приоритет-УДС) return булево;

Выдает ИСТИННО при наличии ожидающего кадра в ука- занной очереди ожидающих кадров.

function ожидание-любой-передачи return булево;

Выдает ИСТИННО при наличии ожидающего кадра в любой из очередей ожидающих кадров

procedure изъятие-ожидающего-кадра (queue : in приоритет-УДС;

УК : out тип-упр-кадра;

АП : out адрес;

АО: out адрес;

блок-данных : out тип-блока-данных;

подавление-КПК : out булево);

Выдает первый кадр из указанной очереди ожидающих кад- ров

procedure получение-ожидаемого-ответа (УК : out тип-упр-кадра;

АП : out адрес;

АО : out адрес;

блок-данных : out тип-блока-данных;

подавление-КПК : out булево);

Выдает кадр ответа, сформированный пользователем-УДС —— после приема кадра запрос-с-ответом. Эта «очередь» мо- жет иметь .максимум один элемент.

procedure передача (УК : in тип-упр-кадра;

АП : in адрес := <ДС ИЛИ любой индивидуальный адрес >;

АО : in адрес := <ДС>;

блок_данных : in тип_блока-данных := нулевой-блок- данных;

подавление_КПК : in булево := false);

Выдает указанный кадр последовательно по символам в фи- зический уровень для передачи. Если запрошено подавле- ние-КПК, то КПК не присоединяется и последние четыре октета блока-данных служат в качестве КПК.

function принят-ответ return булево;

Выдает ИСТИННО после того, как ИНТ—КА примет ответ на неподтвержденный кадр запрос-с-ответом.

Булевы переменные

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

желание_участвовать: булево;

маркер-передан: булево;

наименьший-адрес: булево;

пакет_помех: булево;

СС-известен: булево;

питание_вкл.: булево;

ПМ-кадр_данных: булево;

ПМ_протокольный_кадр: булево; станция-ограниченной-активности: булево; подавление-КПК: булево.

Адресные переменные

ДС: адрес; данная станция

СС: адрес; следующая станция

ПС: адрес; предыдущая станция

ВМ: адрес; владелец маркераполучатель: адрес; адрес получателя

отправитель: адрес; адрес отправителя

Счетчики

счет_іпередач_заявок: счет-передач;

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

счет-разрешений-соперничества: счет-p азрешений;

счет_запросов: целое range 0 . . 255;

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

range 0 .. макс-счет_сбоев-передатчика;

Протокольные или кадровые блоки данных

бдз: тип-блока-данных;

сбд: тип-блока-данных;

Операционные переменные

класс-доступа: целое range — 2 .. макс-класс-доступа;

ма.кс-счет-запросов: целое range 16 .. 255;

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

мин_длина_лреамбулы_после_молчания: целое range 1 .. 15;

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

оставшиеся_попытки: целое range 0 .. макс_число-попыток;

ПМ_кадр: кадр-общего-назначения;

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

.. (2 ** 13 — 1) * октетный-интервал;

время_удерж_маркера_высш_приоритета: целое range

0.. (2** 16— 1);

желаемое-время-обращения: array (—2, 0, 2, 4) целое range

0.. длительность-тайм-аута;

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

0.. длительность-тайм-аута;

Перечень состояний и переходов СОСТОЯНИЙ УД-КА

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

Имя перехода

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

0, АВТОНОМНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

Инициация

1. ДЕЖУРНОЕ

новый-преемник нет-преемника-1 прием-маркера

ввод-запроса-вхождения

восст_запроса_вхожде- ния

собствеиный-кадр-1 дублированный адрес-1

«латание»~кольца

несвободная-шина отсутствие-маркера

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

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

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

2. ЗАПРОС- вхождения

  1. ДЕЖУРНОЕ

0. АВТОНОМНОЕ

  1. ЗАПРОС- вхождения

1.. ДЕЖУРНОЕ

4. ЗАЯВКА-МАРКЕРА



Продолжение

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

Имя перехода

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

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

выход-из_кольца нсзанятая-станция передача-ответа опознана-другая-

станция

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ .

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

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

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

продолжение-соперни- чества

потеря-соперничества-2

3. ЗАДЕРЖКА- ЗАПРОСА

1. ДЕЖУРНОЕ

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

з а держка -сопер ничества

выигрыш-соперничества

«латание»_при_выигры- ше

потеря-соперничества-3

конец_соперничества

конец_всех_соперничеств

игнорирование-соперни- ков

игнорирование-помех

длительная-неактив-

НОСТЬ-ШИНЫ

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

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

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

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

0. АВТОНОМНОЕ.

3. ЗАДЕРЖКА- ЗАПРОСА

3. ЗАДЕРЖКА- ЗАПРОСА

1. ДЕЖУРНОЕ

4. ЗАЯВКА-МАРКЕРА

4. ЗАЯВКА-МАРКЕРА

4. ЗАЯВКА-МАРКЕРА

проигрыш_при-сорти-

ровке-адресов

продолжение-сортиров- ки-адресов

выигрыш_при_сортиров- ке-адресов

1. ДЕЖУРНОЕ

  1. ЗАЯВКА-МАРКЕРА

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

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

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

передача_кадра

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

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

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

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

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

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

повторная—попытка

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

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



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

Имя перехода

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

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

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

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

отсутствие-ответа-6 неожидаемый-кадр-6 собственный-кадр-6

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

1. ДЕЖУРНОЕ

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

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

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

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

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

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

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

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

вып-запроса-преемника

вып_передачи_маркера

вып-запроса-любой- станции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

открыто-одно-окно- ответа

открыто-два-окна- ответа

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

тивности

нет_преемника-8

нет_перспективы

10. ОЖИДАНИЕ- ОТВЕТА

10. ОЖИДАНИЕ- ОТВЕТА

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

  2. ОЖИДАНИЕ- ОТВЕТА

  3. ОЖИДАНИЕ- ОТВЕТА

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

1. ДЕЖУРНОЕ

1. ДЕЖУРНОЕ

0. АВТОНОМНОЕ

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

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

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

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

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

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

безуспешная-передача-

маркера

собственный-кадр-9

собственный-маркер

вероятно-собственный- маркер

передача-хор

нет-уверенности

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

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

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

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

1. ДЕЖУРНОЕ

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


Продолжение

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

Имя перехода

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

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

вероятно-хор

1. ДЕЖУРНОЕ

10. ОЖИДАНИЕ- ОТВЕТА

нет-ответа-10

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

10. ОЖИДАНИЕ- ОТВЕТА

успешное-разрешение

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

10. ОЖИДАНИЕ- ОТВЕТА

собственный_адрес_10

10. ОЖИДАНИЕ- ОТВЕТА

10. ОЖИДАНИЕ- ОТВЕТА

опознан-преемник

10. ОЖИДАНИЕ— ОТВЕТА

10. ОЖИДАНИЕ- ОТВЕТА

игнорирование-ответа

10. ОЖИДАНИЕ— ОТВЕТА

10. ОЖИДАНИЕ- ОТВЕТА

не ожидавшийся-кадр- 10

1. ДЕЖУРНОЕ

10. ОЖИДАНИЕ- ОТВЕТА

передача-разрещения ✓

10. ОЖИДАНИЕ- ОТВЕТА

10. ОЖИДАНИЕ- ОТВЕТА

разрешение-безуспешно

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



7.2.3. Таблица переходов состояний УД-КА

Т

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

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

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

7 2.3.0. Состояние АВТОНОМНОЕ

0. АВТОНОМНОЕ инициация 1. ДЕЖУРНОЕ

Вкл-питания

И УЗ_ДЕЙСТВИЕ.привлечение (инициация) см. п. 3.2.11.2

—— Информация о конфигурации УДС, обеспечиваемая диспетче- ром

За инициацию подуровня УДС при включении питания стан-

ции несет ответственность ДИСП

Сюда входят значения:

иниц-интервал-ответа (кратен октетному-интервалу)

иниц_ДС (адрес данной станции)

иниц_длина-адреса (предполагается в ДС)

иниц_желаемое-время-оборота (по одному для каждого из классов доступа 4, 2, 0 и обслуживание-кольца, —2)

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

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

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

Примеры тайм-аутов, используемых в УД-КА