Программа формирования ППК для управления двухзвенной КС на ЭОВ6

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Содержательная постановка задачи

2. Функциональная схема и алгоритм решения задачи

3. Обоснование выбора языка программирования

4. Алгоритм и описание разработанной программы

5. Описание алгоритма

6. Анализ полученных результатов

Заключение

Литература

Приложения

Введение

В курсовой работе необходимо разработать программу формирования ППК для управления двухзвенной КС на ЭОВ6.

Для решения этой задачи были сформулированы следующие пункты:

1. Содержательная постановка задачи;

2. Составление функциональной схемы и алгоритма решения;

3. Разработка программы на языке Turbo С++ 3. 0, реализующую составленный алгоритм.

4. Описание разработанной программы и анализ полученных в ходе ее выполнения результатов.

1. Содержательная постановка задачи

Задание курсовой работы: Программа формирования ППК для управления двухзвенной КС на ЭОВ6.

На первом этапе обслуживания вызова (ЭОВ6) необходимо отключить КПЗ (комплект посылки «Занято»), для этого необходимо сформировать две ПК.

На каждом этапе обслуживания вызова для формирования периферийных команд используются данные из РВ. В РВ на ЭОВ6 хранятся следующие данные (Nак, Nкпз, ПЛкпз).

Двухзвенное коммутационное поле.

Рассмотрим программы формирования и выдачи ППК.

Заявки для программы формирования ППК подготавливает программа управления подключением комплектов. Эти заявки записываются в буфер (БЗ на формирование выдачи ППК). Каждая заявка в этом буфере имеет свой номер и закреплена за определённым АК. Взаимодействие между программами происходит с помощью буферов и полей заявок. Заявки в буфере представлены порядковым номером и номером найденным перед записью заявки комплекта, для подключения (отключения) которого к АК необходимого сформировать ППК. Буфер образует для тех программ поток заявок, который невелик. Одна заявка в поле заявок занимает один разряд слова данных. По номеру слова и номеру разряда, где найдена единица. Программа выдачи ПК выполняет пересчёт этой заявки в буфер ПК (БПК), из которого должны быть выданы ПК.

2. Функциональная схема и алгоритм решения задачи

Функции программ формирования ППК:

1) Поиск свободного буфера ПК (БПК),

2) Чтение данных о координатах пути АК — комплект из РБ,

3) Формирование периферийных команд и запись их в найденный свободный БПК,

4) Запись заявки в поле заявок на выдачу ПК.

Диспетчер данного приоритетного уровня системы коммутационных программ, которому подчинена программа формирования ППК, анализирует содержимое БЗ на формирование и выдачу ППК. Происходит выбор очередной заявки и передача её программе формирования ППК.

Каждая заявка в БЗ закреплена за своим АК. Программе формирования ППК доступны все необходимые данные об обслуживаемом вызове, хранящегося в регистре вызова (РВ), закреплённом за каждым АК.

Поиск свободного БПК выполняется по содержимому массива состояний БПК. В этом массиве за определённым разрядом данного слова закреплён конкретный БПК. Пусть логическая единица в некотором разряде этого массива соответствует свободности определенного БПК.

Если нет ни одного свободного БПК, то программа формирования ППК возвращает заявку, полученную от диспетчера, в БЗ на формирование и выдачу ППК. При наличии свободного БПК, заявка в БЗ на формирование и выдачу ППК аннулируется, чтобы одна и та же заявка не обслуживалась многократно.

Каждая ППК характеризуется форматом и содержимым. В формате ПК имеется три зоны: признак выдачи (ПВ), код операции (КО), адресная информация. ПВ занимает один разряд (старший) в слове ПК.

ПВ

КО

АПУУ

Y

X

Значение ПВ=1 указывает на необходимость выдачи ПК в управляемый пакет (в частности — в ПУУ квазиэлектронной АТС).

Код операции выражается одним разрядом слова ПК. Значение КО=1 указывает на необходимость включения коммутационного элемента КП, КО=0 выключение.

Адресная информация состоит из кода адреса блока ПУУ, адреса вертикали Y и адреса горизонтали коммутатора КП.

Программа формирования ПК формирует и записывает в БПК определённое количества ПК, зависящее о этапа обслуживаемого вызова.

После записи всех требуемых для обслуживания данного вызова ПК в БПК программа формирования ПК записывает заявку на выдачу этих команд в поле заявок. Вместо заявки в этом поле определяется номер БПК, где записаны сформированные для данного вызова ПК.

Заявки на выдачу ПК будут прочитаны программой выдачи ПК.

Рис. 1. Взаимосвязь программ формирования, выдачи и контроля выполнения ППК

Рис. 2. Программа формирования ППК.

3. Обоснование выбора языка программирования

Для выполнения курсовой работы выбран язык программирования Turbo С++ 3.0 по следующим причинам:

Четкость конструкций языка Turbo С++ 3.0.

Реализация языка надежна на всех существующих ПЭВМ в режиме эмуляции MS-DOS.

Язык полностью удовлетворяет требованиям структурного программирования, то есть в нем есть элементы, описывающие все базовые структуры.

Язык содержит полный набор структурированных данных.

Существуют программные средства проверки правильности программы.

4. Алгоритм и описание разработанной программы

5. Описание алгоритма

1. С помощью констант задаем: количество ячеек БЗППК, количество входов в коммутатор звена А, количество выходов из коммутатора звена А, количество коммутаторов звена А, количество выходов из коммутатора звена B.

2. С помощью константы задаем количество БПК

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

4. МСБПК формируется с помощью датчика случайных чисел, а поле заявок равно МСБПК.

5. Вводим количество КПЗ.

6. Вводим номера выходов в которые включаются КПЗ.

7. Обнуляем переменную J. В ней будем считать количество заявок.

8. Вводим номер АК от которого поступает заявка.

9. Проверяем условие, что данный АК существует. Если условие выполняется, то переходим на блок 14.

10. Увеличиваем число заявок на 1.

11. Записываем заявку в поле заявок.

12. Формируем регистр вызова для поступившей заявки.

13. Выводим информацию, что данного АК не существует.

14. Делаем запрос: есть ли ещё заявки.

15. Если вводим `y', то заявки ещё есть и возвращаемся на шаг 8. Если заявок больше нет, то переходим к следующему шагу.

16. Выводим содержимое РВ и МСБПК.

Начинается программа формирования ППК.

17. Если J?0, то в БЗППК есть заявки.

18. Обнуляем nmsbpk: в неё будем записывать номер первого свободного БПК (1-го в МСБПК).

19. Задаем цикл для формирования ППК для всех заявок.

20, 21, 22. Если есть свободный БПК, то переменной nmsbpk присваиваем номер 1-го свободного БПК.

23. Если nmsbpk=0, то свободных БПК нет и переходим на блок 30.

24. Если свободные БПК есть, то корректируем значение МСБПК.

25. Выводим скорректированный МСБПК.

26. С помощью данных из РВ формируется БПК.

27. Выводим информацию о том, что все БПК заняты.

28. Выводим содержимое поля заявок.

6. Анализ полученных результатов

1. Сначала мы вводим исходные данные для трехзвенной КС.

Количество подключенных к КС КПЗ: 1

Номер выхода в который подключен 1-й КПЗ: 3

2. Вводим номер АК, от которого поступила заявка.

Hомер АК от которого поступила заявка: 6

3. Программа формирует регистр вызова, в который записывает: номер

АК, номер КПЗ, ПЛАВ между АК и КПЗ, номер КПЗ.

Содержимое РВ 6

Nak=6

Nкпз=3

Nплаб=5

4. Ищется первый свободный буфер периферийных команд (БПК) и в массиве состояния БПК отмечается занятым.

МСБПК

0 0 0 0 0 0 1 0 1 1

МСБПК новый

0 0 0 0 0 0 0 0 1 1

5. В первый найденный БПК записываются сформированные периферийные команды.

1 2 3 4 5 - Столбцы

БПК 6

1 0 2 1 1

1 0 4 3 2 Подключение КПЗ

Первая команда включает коммутационный элемент на звене А.

Вторая — служит для подключения КПЗ абоненту А.

1-й столбец — Признак выдачи (ПВ).

Если ПВ=1, то необходимо выдать ПК в управляемый объект.

2-й столбец — Код операции (КО)

КО=0 — Указывает на отлючение коммутационного элемента

3-й столбец — адрес блока ПУУ

Указывает номер АПУУ в котором находится коммутационный элемент.

4-й столбец — адрес вертикали Y коммутатора КП (в данном блоке ПУУ).

5-й столбец — адрес горизонтали Х коммутатора КП (в данном блоке ПУУ).

6. В поле заявок записывается заявка для БПК 1.

Поле заявок

0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

Заключение

периферийный команда вызов алгоритм

Результатом разработанного курсового проекта является программа формирования ППК для управления двухзвенной КС на ЭОВ6 на языке программирования Turbo С++;

Анализ выполнения результатов.

Литература

Битнер В. И. Костюкович Н.Ф. Программная организация процессов формирования и выдачи периферийных команд. Методические указания по выполнению лабораторной работы. — Новосибирск.: СибГУТИ, 2001.

Дерк Луис. Turbo C++. Справочник- М: 1997.

Приложение 1

Распечатка программы

#include < stdio. h>

#include < stdlib. h>

#include< alloc. h>

#include< CONIO. H>

#include< math. h>

char zajav;

const jah=10;

const na=5;

const ma=4;

const ka=3;

const mb=4;

const kolbpk=10;

int kolkpz, i, j,*nvihkpz,*msbpk, ak, nmsbpk, k, m,*pz;

main ()

{

struct rv_struct

{

int ak, nkpz, plkpz;

} rv[10];

pz=(int*)malloc ((na*ka)*sizeof (int));

for (m=0; m<na*ka;m++)pz[m]=0;

msbpk=(int*)malloc (kolbpk*sizeof (int));

for (i=0; i<kolbpk;i++)

msbpk[i]=random (2);

printf («nВведите количество КПЗ: «);

scanf («%d»,& kolkpz);

nvihkpz=(int*)malloc (kolkpz*sizeof (int));

for (i=0; i<kolkpz;i++){

printf («nВведите номер выхода, в который включен%d КПЗ: «, i+1);

scanf («%d»,& nvihkpz[i]);}

j=0;

do{

printf («nВведите номер АК, от которого поступила заявка: «);

scanf («%d»,& ak);

if (ak< =na*ka)

{

pz[ak-1]=1;

rv[j]. ak=ak;

rv[j]. nkpz=nvihkpz[j];

rv[j]. plkpz=floor (ak/na)*ma+floor (nvihkpz[j]/mb)+1;

j=j+1;

}

else

printf («nДанного АК не существует!»);

printf («nЕсть еще заявки? y/n «);

zajav=getch ();

}while (zajav≠'n');

for (i=0; i<j;i++){

printf («nСодержимое РВ%d: n», rv[i]. ak);

printf («Nak=%dn», rv[i]. ak);

printf («Nкпз=%dn», rv[i]. nkpz);

printf («ПЛкпз=%dn», rv[i]. plkpz);}

printf («Содержимое МСБПК: «);

for (i=0; i<kolbpk;i++)printf («%d «, msbpk[i]);

if (j≠0)

{

for (i=0; i<j;i++)

{nmsbpk=0;

for (k=0; k<kolbpk;k++)

if (msbpk[10-k]==1)nmsbpk=10-k;

if (nmsbpk==0)

{

printf («nВсе БПК заняты. «);

}

else

{

msbpk[nmsbpk]=0;

printf («n»);

printf («Содержимое МСБПК: «);

for (m=0; m<kolbpk;m++)printf («%d «, msbpk[m]);

printf («nБПК%dn», nmsbpk);

printf («%d,%d,%1. 0lf,%1. 0lf,%1. 0lfn», 1,0,floor (rv[i]. ak/na)+1,

rv[i]. ak-floor (rv[i]. ak/na)*na, rv[i]. plkpz-floor (rv[i]. plkpz/ma)*ma);

printf («%d,%d,%1. 0lf,%1. 0lf,%1. 0lfn», 1,0,floor (rv[i]. nkpz/mb)+ka+1,

rv[i]. nkpz-floor (rv[i]. nkpz/mb)*mb, floor (rv[i]. ak/na+1));

}

}

}

printf («Содержимое поля заявок: n»);

for (m=0; m<na*ka;m++)printf («%d «, pz[m]);

getch ();

return (0);

}

Приложение 2

Распечатка результатов работы программы

Введите количество КПЗ: 1

Введите номер выхода, к которому подключен 1 КПЗ: 3

Введите номер АК, от которого поступила заявка: 6

Есть еще заявки? y/n

Содержимое РВ6:

Nak=6

Nкпз=3

ПЛкпз=5

Содержимое МСБПК: 0 0 0 0 0 0 1 0 1 1

Содержимое МСБПК: 0 0 0 0 0 0 0 0 1 1

БПК 6

1,0,2,1,1

1,0,4,3,2

Содержимое поля заявок:

0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

ПоказатьСвернуть
Заполнить форму текущей работой