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. ЗАПРОС- вхождения
0. АВТОНОМНОЕ
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. ДЕЖУРНОЕ
|
5. ИСПОЛЬЗОВАНИЕ- МАРКЕРА 5. ИСПОЛЬЗОВАНИЕ- МАРКЕРА |
передача_кадра отсутствие_передачи |
|
6. ОЖИДАНИЕ- ОТВЕТА-ИНТ-КА 6. ОЖИДАНИЕ- ОТВЕТА-ИНТ-КА |
отсутствие_тайм-аута повторная—попытка |
|
Текущее состояние |
Имя перехода |
Следующее состояние |
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. ОЖИДАНИЕ- ОТВЕТА
5. ИСПОЛЬЗОВАНИЕ- МАРКЕРА 1. ДЕЖУРНОЕ 1. ДЕЖУРНОЕ 0. АВТОНОМНОЕ |
9. КОНТРОЛЬ-ПЕРЕ- ДАЧИ-МАРКЕРА 9. КОНТРОЛЬ_ПЕРЕ- ДАЧИ-МАРКЕРА 9. КОНТРОЛЬ_ПЕРЕ- ДАЧИ-МАРКЕРА 9. КОНТРОЛЬ_ПЕРЕ- ДАЧИ-МАРКЕРА 9. КОНТРОЛЬ-ПЕРЕ- ДАЧИ-МАРКЕРА 9. КОНТРОЛЬ-ПЕРЕ- ДАЧИ-МАРКЕРА |
безуспешная-передача- маркера собственный-кадр-9 собственный-маркер вероятно-собственный- маркер передача-хор нет-уверенности |
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)
иниц_время_удержания_маркера-высш-приоритета
иниц-макс_счет_запросов
иниц_нач-значение-таймера_обслуж-кольца и другие переменные, которые, возможно, потребуется ини- циировать
Примеры тайм-аутов, используемых в УД-КА