Тема: Алгоритмы функций, выполняемых в станциях с программным управлением
Лекция №7
В соответствии с рекомендациями МККТТ (серия Z.100 «Specification and Description Language SDL») определены этапы разработки программного обеспечения. При этом выделены два типа алгоритмов. Алгоритмы этапа спецификаций и алгоритмы этапа описаний.
Спецификация отображает работу станции с точки зрения заказчика и написана с использованием терминов заказчика. Например, они включают алгоритмы входящей и исходящей связи и другие, описывающие работу станции с точки зрения верхнего уровня, т.е. пользователя. Далее следует разработка алгоритмов, реализующих эти функции.
В настоящей книге рассматривается часть алгоритмов этапа описания. Для более детального рассмотрения вопросов разработки алгоритмического обеспечения можно обратиться к [9-11]. В этой главе будут использованы термины и символы, которые используются в рекомендациях МККТТ. Ниже приведены некоторые из них.
Алгоритм изображается в виде модели конечного автомата [10]. Для описания его действия применяются следующие термины:
ВХОД — сигнал, поступающий из внешнего окружения;
ВЫХОД — сигнал, передаваемый алгоритмом во внешнее окружение;
СОСТОЯНИЕ — состояние алгоритма, при котором действия процесса приостановлены до получения сигнала ВХОД;
ПЕРЕХОД — совокупность действий, которые при поступлении сигнала ВХОД переводят автомат из одного состояние в другое.
Перечисленные действия (кроме сигнала ВЫХОД) включает в себя:
РЕШЕНИЕ — выбор одного из нескольких возможных путей продолжения процесса;
ЗАДАЧА — действие, которое не является ни РЕШЕНИЕМ, ни ВЫХОДОМ.
Для этих операторов заданы графические символы, применяемые для их изображения [9, 20].
Обычно функции этапа описания являются детализацией символов уровня спецификации. Например, алгоритм сканирования, который приводится первым в этой главе, дает описание реализации оператора ВХОД на уровне спецификации.
Отметим, что эти функции рассматривались в предыдущих разделах применительно к устройствам управления станциями координатной системы.
Все функции управляющих устройств координатной техники могут быть реализованы программно. Поэтому в 80-е годы все станции в основном перешли на программное управление. Каждому устройству может соответствовать программный модуль. Рассмотрим алгоритмы функционирования некоторых наиболее широко используемых модулей. Это позволит, во-первых, проанализировать алгоритмы функционирования модулей, участвующих в установлении соединения, и, во-вторых, на примерах конкретных алгоритмов выявить общие принципы их реализации.
Рассмотрение базируется на общей модели алгоритма, показанного на рис. 1. Центральный алгоритм получает от программы сканирования сигналы об изменении состояния вешней среды и вызывает периферийные модули.
Рис. 1 Структурная схема алгоритма работы станции
Для построения общего алгоритма предполагается наличие сменных модулей, реализующих отдельные функции и вызываемых центральной программой. При этом сами модули должны удовлетворять специфическим требованиям.
Первое — они должны иметь внешний интерфейс и применяться так же как микросхема, по необходимости. В отличие от большинства микросхем программный модуль может настраиваться (в настоящее время некоторые микросхемы также обладают этим свойством). Настройка может осуществляться по количественным показателям либо выбором режимов.
Имея базовый модуль и исходные данные, можно создавать (генерировать) конкретный модуль. Программный модуль обычно сопровождается текстом контрольной задачи для его проверки. Таким образом, алгоритмический модуль является настраиваемой на заданный режим или оборудование единицей. В основу математической модели положен автоматный принцип.
Каждый из модулей отображается в виде виртуального автомата, управляющего конкретным оборудованием или обновляющего конкретные области памяти. При этом он имеет виртуальные входы и выходы. Входы разделяются на две группы: оперативные и входы настройки. Формализация модулей алгоритмов в виде логических выражений представлена далее.
Изложение в данном разделе строится по принципу «меньше подробностей», поэтому, следуя ключевой линии анализа, алгоритмы будут изложены в общем виде. Для более подробного изучения можно рекомендовать [40].
Алгоритм сканирования
Итак, принято, что программное обеспечение можно реализовать на базе универсальной программы. Первая ее часть — алгоритм ввода. Один из наиболее распространенных алгоритмов ввода — сканирование, т.е. ввод путем периодического опроса.
Некоторые особенности алгоритма сканирования порождаются структурой оборудования. Датчики, подлежащие сканированию для определения поступления вызова, называемые «точки сканирования», включаются в «линейки сканирования». Они образуют матрицы, называемые определителями. На станции может быть несколько определителей — от 1 до 100. Поэтому адрес каждой точки сканирования определяется номером определителя, номером линейки в определителе и номером точки в этой линейке. На рис. 2.68, а показаны эти входные данные, которые задают программному обеспечению необходимые параметры. Некоторые из точек могут быть заблокированы, для чего задается таблица блокировок, которая содержит «маски», исключающие из процесса сканирования некоторые точки. Число определителей, число линеек, таблица блокировок, число точек в линейке относятся к полупостоянным данным, отображающим параметры оборудования. Кроме этого имеются полупостоянные данные, относящиеся к процессу.
В связи с особенностями обслуживающего процесса должны быть введены данные, относящиеся к нему:
Число и значение периодов сканирования (обычно значение длительности периода указывается в количестве интервалов длительностью 10 мс).
Расписание сканирования, т.е. таблица, закрепляющая значения периодов за отдельными линейками.
Таблица сканирования, где находятся адреса сканируемых линеек. Они располагаются в строках таблицы и подразделяются на списки. В каждый список вносятся адреса сканируемых линеек, располагающиеся в порядке их опроса. Например, первым идет список линеек, опрашиваемых каждые 10 мс, потом список линеек, опрашиваемых через каждые 20 мс, и т.д.
Размер буфера заявок. Этот параметр задает длину буфера для сохранения полученных заявок на работу программ обработки вызова. Он задается после вероятностного расчета числа поступающих вызовов.
На рис. 2, а показаны оперативные входы и выходы:
Сигнал задающего генератора, который задает начало процесса опороса следующей линейки. Как уже упоминалось, в большинстве систем минимальный период составляет 10 мс.
Запрос на сканирование по заданному адресу, который поступает от оператора или программы, если какие-либо линейки не сканируются периодически или требуется внеочередная проверка их состояния.
Сигнал «ответное слово» — реакция на сигнал опроса линейки. Его вид зависит от режима сканирования.
Режимы, в которых может работать алгоритм сканирования, следующие:
Простое сканирование, которое заключается в том, что при периодическом опросе, считывается состояние линейки (кодируемое 1 — если есть изменение точки опроса, и 0 — если изменения нет). Состояние всех точек линейки поступает обратно на вход модуля сканирования в виде «-разрядного слова (п — разрядность линейки, обычно равная 16 или 32).
Режим с защитой. Сканируемые датчики обычно контактируют с внешней средой (абонентские и соединительные линии, контакты реле), что вызывает появление кратковременных помех. Для борьбы с этим явлением применяется сканирование с защитой. Наиболее распространенный способ — двойное (тройное) сканирование со сравнением результатов. Для дальнейшей обработки передаются только сигналы, имеющие устойчивый характер, т.е. сохраняющиеся более заранее заданного времени.
Рис. 2 Общий вид алгоритма сканирования
Сканирование по флажку. Во многих случаях входной сигнал поступает в случае окончания накопления данных. Например, при поступлении от соседней станции информации о номере вызываемого абонента на входящей станции накапливаются цифры и вырабатывается заявка на соединение после того, как принято достаточное количество цифр. В таких случаях сканируется только один датчик (флажок), а после того, как появляется сигнал об окончании приема информации, считывается вся информация.
Еще один вид сканирования — по запросу, когда извне (от оператора или программы) записывается заявка на сканирование.
В соответствии с режимом сканирования формируются различные виды заявок. На рис. 2, б показана заявка на простое сканирование. Она содержит следующую информацию:
тип определителя, указывающий на устройства, включенные в данный определитель (многие из них содержат несколько точек сканирования);
номер определителя — это номер определителя в типе;
номер линейки — это номер внутри определителя.
На рис. 2, в показана информация, запрашивающая сканирование по заявке. Она содержит адрес сканируемой линейки и адрес процесса (области памяти, в которую нужно записать результат).
На рис. 2, г показана структура ответного слова сканирования. В данном случае приведена информация при простом сканировании и сканировании с защитой по заявке. Она содержит:
номер заявителя, т.е. программы или оборудования, которое дало заявку на сканирование;
информацию о точке сканирования, которая представлена в координатах оборудования, т.е. содержит тип комплекта (АК, ИШК и т.п.), номер комплекта, номер точки сканирования в данном комплекте;
информация о типе изменения;
состояние опрашиваемой точки, а именно перешла ли она из состояния, обозначаемого нулем (исходное состояние), в состояние, обозначаемое единицей (рабочее состояние).
Иногда от программы сканирования требуется в результате указать один из двух переходов, например, из исходного состояния в рабочее и наоборот. Тогда с учетом необходимости отображать отсутствие изменения для поля типа изменения предусматривается два бита. Они указывают: 00 — нет изменения, 01 — изменение из исходного состояния в рабочее, 10 — изменение из рабочего состояния в исходное.
При сканировании по флажку в поле типа изменения указывается вся принятая информация, о завершении приема которой сигнализировал флажок.
Информация, полученная в процессе сканирования, является исходной для выбора и дальнейшей активизации программ.
При работе алгоритма сканирования большую роль играет организация списков адресов сканирования (рис. 2.69, а). В памяти списки адресов могут быть сгруппированы по длительности периода сканирования. Например, в список S группируются адреса линеек, сканируемых с периодом 10 мс, в список S2 — адреса линеек, сканируемых каждые 20 мс, в S — адреса линеек, сканируемые с периодом 40 мс. Предположим, что в первом периоде опрашиваются все списки, тогда через 10 мс опрашиваются только список S (для списков S2 и S3 пауза в сканировании не истекла). Во втором цикле будут опрашиваться списки S и S2. Далее будет сканироваться только один список S . Далее все три списка. В результате число сканируемых адресов будет то уменьшаться, то увеличиваться, что может привести к скоплению заявок в отдельные десятимиллисекундные циклы (на рис. 2.69, а, результирующий график).
Поэтому принимается несколько другой порядок опроса списков — адреса списков разделяются на части, число которых равно числу 10-миллисекундных интервалов, составляющих период. Так, например, список S2 (период сканирования 20 мс) разделяется на 2 части, список S3 — на четыре части (период сканирования 40 мс). При этом каждый 10-миллисекундный интервал сканируется весь список S половина списка S2 четверть S3. Это обеспечивает в каждом интервале относительное выравнивание числа сканируемых линеек (рис. 2.69, б, результирующий график) и обеспечивает высокую вероятность равномерного поступления заявок в разных циклах.
Рис. 3 Принципы распределения заявок
Связь с центральным алгоритмом осуществляется следующим образом:
а) при работе с существующим процессом результаты сканирования (в форматах, показанных на рис. 3) записываются в соответствующую область памяти процесса, указанную в заявке; вместе с состоянием процесса они являются исходными данными для осуществления перехода;
б) при первоначальном вызове записывается заявка на открытие области памяти процесса, после чего записывается входной сигнал, и новый процесс устанавливается в конец очереди на обработку; такая установка позволяет не задерживать обработку существующих вызовов и является одной из мер борьбы с перегрузкой процессора при пике на
грузки.
Центральный алгоритм после обработки процесса записывает в область памяти алгоритмов заявку на сканирование, где указан объект, от которого ожидается сигнал ВХОД, и номер (адрес) области процесса, куда необходимо установить заявку.