Алгоритмы отдельных функций, выполняемые в станциях с программным управлением
Пример алгоритма, реализующего процесс сканирования
Итак, как мы уже выяснили, имеется много конкретных алгоритмов, выполняющих процессы сканирования. Тому, кто интересуется более подробным знакомством с этим вопросом, можно порекомендовать ряд литературных источников [31], [9]. Эти книги содержат описание алгоритмов, которые не представлены в этом курсе. Ниже даны обобщенные выводы из указанных источников, соответствующие максимально строгим требованиям по обслуживанию вызовов.
Алгоритм сканирования приведен на рис. 3.4. На этом рисунке приняты следующие обозначения:
- R1K — предыдущее состояние точек опроса линейки;
- R2K — последующее состояние точек опроса линейки;
- R0K — состояния линейки в таблице блокировки для опроса линейки.
Остальные переменные R3K, R4K, R5K, R6K — вычисляются в процессе работы алгоритмы и поясняются по ходу его рассмотрения.
Верхний индекс в алгоритме означает текущий номер обслуживаемой линейки, который изменяется в соответствии с оператором 20 этого алгоритма.
Он начинается с периодического запуска таймера. В данном случае выбран период запуска 10 мс, что гарантирует чтение наиболее короткого сигнала (импульса дискового набора номера) от 2 до 3 раз. Многократный опрос в дальнейшем позволяет отличить реальный сигнал от помехи.
В начале алгоритма идут операторы 1-7, обрабатывающие буфер заявок от уже начавшихся процессов. Такой приоритет в обработке позволяет не ставить на обслуживание новые заявки, чтобы избежать перегрузки алгоритмов обработки. Данный участок алгоритма определяет наличие сигналов, которые ожидает остановленный после перехода процесс. Алгоритм при этом доставляет в процесс сигнал ВХОД.
Второй участок содержит операторы 8-12, выявляющие наличие изменений в состоянии внешней среды. Принцип его работы заключается в том, что сопоставляются предыдущее состояние линеек R1 и последующее R2 и определяется, есть ли изменения по сравнению с предыдущим моментом времени.
Например, если в некоторый 10-миллисекундный цикл k:
R1 = 00101101, а
R2 = 10010101, то
.
Разряды результата, равные единице, говорят о наличии изменения, при этом следует обратить внимание на то, что отмечены два типа перехода — из 1 в 0 и из 0 в 1.
Далее должны быть отделены заблокированные точки опроса. Для этого образовывается массив блокировок {R0}. Одно слово из этого массива R0 считывается. В нем 0 обозначает, что точка сканирования заблокирована, а 1 — что она находится в работе и поразрядно умножается на результат предыдущей операции ( R3 ):
R3 = 10111000
R0 = 11001111
R4 = R3&R0 = 10001000.
Для многих процессов важна не только информация о наличии изменения, необходимо также различать его тип. Например, переход из 0 в 1 обозначает вызов, а обратный — отбой. При приеме номера фиксация цифры может проходить либо по переднему фронту импульса, либо по заднему (но не по двум сразу). В связи с этим производятся нижеследующие действия. Отделяются разряды, означающие переход из 0 в 1. Для этого с операторами R4 и R2 проводят операцию поразрядной конъюнкции:
R4 = 10001000
R2 = 10010101
R5 = R4&R2 = 1000000
Единственная единица означает искомый переход.
Далее проверяются разряды, изменившие свое значение из 1 в 0:
R4 = 10001000
R5 = 10000000
Единичное значение разрядов соответствует указанному выше переходу.
Следующие операторы (13-18) обеспечивают получение координат комплектов, в которых произошли изменения.
При сканировании с защитой результат сканирования содержит заявку на повторное сканирование (на рис. 3.4 не показано). Повторное сканирование определяет наличие устойчивого изменения в течение двух предыдущих циклов.
После этого каждому слову массива предыдущих состояний присваивается значение текущего, чтобы подготовить последующие циклы (оператор 19).
Дальнейшие действия (с 20 по 21) связаны с переходом к следующей строке сканирования или завершением процесса при проверке последней линейки.
Алгоритм завершается переходом в исходное состояние.
Алгоритм передачи команд
Рассматриваемый алгоритм в соответствии с общей моделью выполняет оператор ВЫХОД. Он формирует и передает команды во внешнюю среду. В современных системах такого рода команды передаются в следующие устройства:
- Комплекты, содержащие реле. Например, команда может идти в комплекты аналоговых абонентских линий, где осуществляется контактная коммутация сигнала посылки вызова и подключения линии к измерительной аппаратуре.
Такого рода работа требует передачи аналоговых сигналов высокой мощности или малого сопротивления контактов, коммутирующих сигналы. Несмотря на прогресс техники, контакты еще не скоро будут заменены другими средствами. Обмотки, управляющие реле, компонуются в специальные линейки, и сигналы, поступающие из процессора, перекодируются и при необходимости усиливаются. Особенности передачи команд в такие устройства обусловлены тем, что объекты коммутации имеют относительно большое время срабатывания и отпускания, гораздо больше скорости работы процессора. Поэтому при передаче команд обычно неэффективно дожидаться реакции, а целесообразно возвратиться к процессу по прошествии времени, достаточного для выполнения команды устройством.
Устройство, которое выполняет команды за время, превышающее скорость работы процессора, будем называть медленным.
- Коммутационные поля. Устройства этого рода, несмотря на их различия, из которых наиболее существенными являются временное и пространственное разделение, содержат специальные области памяти, обычно называемые "адресная память", куда записывается информация о каналах, выбранных в результате работы программы поиска путей. Такие области памяти используют ту же элементную базу, что и устройства управления, и поэтому работают с такой же скоростью. Их мы будем называть "быстрыми".
Коммутационные поля, как правило, содержат несколько каскадов. Поэтому команды управления передаются по каскадам.
- Устройства обмена информацией. Они могут быть отнесены к "быстрым". От предыдущих эти устройства отличает то, что в их функции может входить последующая обработка информации для обеспечения помехоустойчивости и других функций, отнесенных к первым трем уровням в модели открытых систем [49].
В начале этой лекции мы условились, что алгоритмы будут изображаться на основе модели конечного автомата. Как уже было сказано ранее, это, в частности, означает, что работа алгоритма отображается последовательностью переходов из предыдущего состояние в последующее в зависимости от поступившего сигнала. Изменение состояния процесса обычно вызывает необходимость в изменении внешней среды. Например, включение/выключение реле, передачу сигналов на соседнюю станцию и др. В общем случае говорят, что состояние внешней среды приводится в соответствие с состоянием процесса.
Например, при переходе процесса из состояния " СВОБОДНО " в состояние " ОЖИДАНИЕ НАБОРА НОМЕРА " требуется подключить к абонентскому комплекту приемник набора номера (регистр). Для этого надо как минимум выработать команды на включение коммутационного поля и включения соответствующих реле комплекта. Смена состояний в большинстве случаев вызывает передачу последовательности команд во внешнее (по отношению к ЭВМ) оборудование. Состав команд определяется парой состояний, определяющих ПЕРЕХОД ("предыдущее и последующее состояние"). Алгоритм передачи команд работает в соответствии с характеристиками команд, которые рассматриваются ниже.
Команды могут выдаваться одним из следующих способов:
- Последовательно одна за другой.
- При условии правильного исполнения предыдущей команды.
- По истечении определенного времени после выдачи предыдущей команды.
Указанные условия должны быть записаны совместно с кодом команды.
Сами команды могут иметь самый различный вид, но если интересоваться обобщением их видов, то можно сказать, что они содержат координаты устройства, на которое они воздействуют. Например, для включения реле комплекта команда может содержать номер комплекта и номер реле в комплекте.
Для коммутационного поля нужны координаты коммутационного поля, которых может быть много. Это, например, номер блока, номер группы, номер матрицы, номер тракта, номер канала и пр.
И последнее уточнение, характеризующее этот процесс: передача команд проводится в несколько этапов.
Первый этап: формирование команд. Уже говорилось, что один и тот же ПЕРЕХОД, как правило, сопровождается выдачей одной и той же последовательности команд. Однако все команды имеют определенный адрес. Другими словами, все одноименные процессы установления соединения одинаковы, но каждый "экземпляр процесса" имеет конкретные адреса, так как каждый вызов поступает от определенного источника и требует индивидуальной маршрутизации.
Поэтому на этапе формирования команды она считывается последовательно из памяти и к ней присоединяется конкретный адрес. Исходными данными для него могут быть данные, хранящиеся в области памяти процессов.
Это может быть адрес, содержащийся во входном сигнале, в номере вызывающего абонента либо найденный в результате поиска и выбора новых путей и приборов.
Местоположение исходных данных в области памяти процессов должно быть указано в заявке на формирование команды.
Второй этап: выдача команд. Как правило, пути передачи команд могут быть различными, и по соображениям надежности пути передачи как минимум дублируются. Кроме того, устройства бывают основные и резервные.
Они могут работать в режимах:
- "горячего" резерва (одно устройство работает, а второе находится под электропитанием, но не выполняет никаких рабочих функций (программ) и подключается в случае аварии первого);
- разделения нагрузки (в нормальном режиме каждый работает на свое оборудование, а при аварии один принимает всю нагрузку на себя);
- в синхронном режиме (в нормальном режиме оба устройства работают параллельно, при аварии неисправное устройство отключается).
При различных режимах необходимы различные алгоритмы маршрутизации команд. Например, первая попытка передачи команды проходит через основное устройство. В случае неудачной передачи команда повторяется второй раз, а затем происходит попытка передачи через другое устройство.
Возможны и другие алгоритмы, один из них будет приведен далее.
Третий этап: контроль выполнения команды. При этом производится опрос контрольных точек устройства, в которое передана команда. Сканируют контрольные точки устройства, которые сигнализируют о правильности выполнения команды. При положительном результате формируется сигнал "команда выполнена". Отрицательный результат требует принятия мер по доставке команды. Если после этого команда не передана, то вырабатывается признак "команда не выполнена".
Связь данного модуля с центральным алгоритмом проявляется следующим образом. В центральный модуль передается результат выполнения команды. В случае положительного результата ("команда выполнена"), возможны следующие варианты:
- Если ВЫХОД предназначен для передачи команд в быстрые устройства, то центральная программа завершает ПЕРЕХОД тем, что устанавливает в области памяти процесса следующее состояние и начинает обработку следующего процесса.
- Если команда предназначена для передачи в медленные устройства, то устанавливается следующее состояние, указанное в таблице. С точки зрения центральной программы — это такой же процесс, как и предыдущий. Но в алгоритме передачи обязательно должно быть состояние ожидания выполнения команды (обычно оно именуется " Ожидание перехода [имя следующего состояния] ").
- При отрицательном результате передачи команд в область памяти процесса записывается входной сигнал "команда не выполнена", там же модуль передачи команд записывает следующее состояние " Команда не выполнена в состоянии [имя предыдущего состояния] ", после чего в центральную программу передается сигнал на повторную обработку этого процесса с новыми данными. Естественно, что новое состояние и новый выходной сигнал вызовут новый переход, действия которого зафиксированы в других состояниях центральной программы.
Во всех случаях, указанных в пунктах 1), 2), 3), центральная программа переходит к обработке следующего процесса.
Модуль передачи команд для формирования команд использует данные, хранящиеся в области памяти процесса. В основном они применяются для формирования конкретных адресов в типовых наборах команд.
После рассмотрения алгоритмов, связанных с функциями ввода/вывода, рассмотрим коммутационные алгоритмы, выполняющие задачи, которые применяются во всех типах коммутационных станций.