Алгоритм сканирования

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

Некоторые особенности алгоритма сканирования порождаются структурой оборудова­ния. Датчики, подлежащие сканированию для определения поступления вызова, называемые «точки сканирования», включаются в «линейки сканирования». Они образуют матрицы, на­зываемые определителями. На станции может быть несколько определителей — от 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) записываются в соответствующую область памяти процесса, указанную в заявке; вместе с состоянием процесса они являются исходными данными для осуществления перехода;

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

Центральный алгоритм после обработки процесса записывает в область памяти алго­ритмов заявку на сканирование, где указан объект, от которого ожидается сигнал ВХОД, и номер (адрес) области процесса, куда необходимо установить заявку.