Скачиваний:
79
Добавлен:
01.06.2021
Размер:
393.57 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ассистент

Н.В. Апанасенко

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2

АНАЛИЗ СИСТЕМЫ МНОЖЕСТВЕННОГО ДОСТУПА С ТОПОЛОГИЕЙ ТИПА ЗВЕЗДА

по курсу: МОДЕЛИРОВАНИЕ СИСТЕМЫ РАСПРЕДЕЛНИЯ РЕСУРСОВ

РАБОТУ ВЫПОЛНИЛА

СТУДЕНТКА ГР. №

4716

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2021

Лабораторная работа №2

Анализ системы множественного доступа с топологией типа звезда

  1. Цель лабораторной работы

Получение навыков моделирования стандартных сценариев работы телекоммуникационных систем с топологией типа «звезда». Изучение свойств алгоритмов планирования ресурсов нисходящего кадра в подобных системах. Изучение стратегий распределения ресурсных блоков в централизованной сети со случайным трафиком.

Вариант 18

Модель распространения

R, м

PTX, Вт

f0, МГц

kn

18

Окумура-Хата, large city

1000

80

1800

4

  1. Пример расчёта параметров моделируемой системы

    1. Расчет мощности шума

Где – полоса пропускания канала связи, T – абсолютная температура (К), k – постоянная Больцмана , kN – коэффициент теплового шума приемника.

PN = 1.38 * 10-23 Дж/К * 300К * 0.18 * 106 Гц * 4 = 29.8 * 10-16 Вт

    1. Расчет уровня потерь в канале связи (для конкретных АБ)

L – уровень потерь, зависит от частоты, высоты базовой станции, высоты точки приема, расстояние от абонента до базовой станции.

α = (1.1 * lg(1800 * 106) – 0.7) * 2 м – 1.56 * lg(1800 * 106) + 0.8 = 0.04

L = 10(46.3 + 33.9 lg(1800 * 10^6 Гц) – 13.82 * lg(30 м) – α + [44.9 - 6.55 * lg(2 м)] * lg(0.25 км) + 3)/10 = 19.3 * 1010

    1. Расчет мощности сигнала, принятой АБ:

PRX =

    1. Расчет отношение сигнал/шум:

SNR = 0.26 * 106

    1. Расчет пропускную способность канала связи:

Где – полоса пропускания канала связи, – отношение сигнал/шум (Signal-to-Noise Ratio, SNR) у абонента с индексом

С = 0.18 * 106 Гц * log2(1 + 0.26 * 106) = 3.07 Мбит/c

  1. Результаты моделирования

Для каждого абонента, подключенного к БС, выделяется буфер, в который поступают пакеты данных и ожидают отправку на абонентское устройство. Задача БС доставить пакеты данных каждому АБ. Для этого время передачи разделено на равные интервалы – слоты, длительность каждого равна длительности передаваемого сообщения. В рассматриваемой модели длительность сообщений принята равной ,, а полоса частот, выделяемая для каждого абонента кГц.

Рисунок 1 – График зависимости среднего суммарного объёма данных в буфере от интенсивности входного потока

Рисунок 2 – Увеличенный график зависимости среднего суммарного объёма данных в буфере от интенсивности входного потока

  1. Выводы

В ходе выполнения лабораторной работы были получены навыки моделирования стандартных сценариев работы телекоммуникационных систем с топологией типа «звезда». Изучены свойства алгоритмов планирования ресурсов нисходящего кадра в подобных системах и стратегии распределения ресурсных блоков в централизованной сети со случайным трафиком.

Из графиков видно, что чем больше количество абонентов, находящихся в системе тем ниже значение интенсивности входного потока, при котором в буферах у абонентов начинается накапливаться данные, так как БС не успевает их отправлять. Так, например, для 8 абонентов и интенсивностью входного потока больше чем 20 пакетов в секунду система не справляется с передачей данных, в то время, как для 2 абонентов буфер абонентов не перегружается с интенсивность меньше, чем 80 пакетов в секунду.

Листинг программы:

import numpy as np

import pandas as pd

from matplotlib import pyplot as plt

#---данные из варианта---

r = 2500 #радиус

Ptx = 80 #излучаемая мощность БС

f0 = 1800 #частота БС

kn = 4 #коэф. теплового шума приёмника

f = .18 #полоса пропускания канала связи

delta_f = .18 #полоса ресурсного блока

T = 300 #абсолютная температура

Pn = f *10 ** 6 * T * kn * 1.38 * 10**-23 #мощность теплового шума

slots_num = 10**5 #кол-во слотов

h = 30 #высота БСЫ

h_s = 2 #высота точки приёма

S = 3 #т.к. большой город

blocks = int(f/delta_f) #кол-во ресурсных блоков в слоте

t = 5*10**-4 #время выполнения ресурсного блока

#------------------------

def subs_generator(r, n, Ptx, Pn, f, f0, h, h_s, S, slots_num):

subs = pd.DataFrame(columns=range(slots_num)) #таблицы с пропускными способностями абонентов для каждого слота

for i in range(n):

s_range = r * np.random.random()**.5 #расстояние от БС до текущего АБ

alpha = (1.1*np.log10(f0)-.7)*h_s-(1.56*np.log10(f0)-.8)

L = 10**((46.3 + 33.9*np.log10(f0)-13.82*np.log10(h)-alpha+(44.9-6.55*np.log10(h_s))*\

np.log10((s_range**2+(h-h_s)**2)**.5/1000)+S)/10) #потери

sub_cc = [] #список пропускных способностей АБ

for _ in range(slots_num):

Prx = Ptx/(L + np.random.normal(0, 1)) #уровень потери мощности сигнала

SNR = Prx/Pn #отношение сигнал-шум

CC = f *np.log2(1 + SNR) * 10**3/8 #пропускная способность для текущего АБ (Кбайт/cек)

sub_cc.append(CC)

subs.loc['sub_' + str(i)] = sub_cc

return subs

def pepega_clap(subs, blocks, t, p, n, l):

packs = pd.DataFrame(columns=subs.columns) #количество данных пришедших для каждого АБ в каждом ресурсном блоке

#при генерации отнимаем единицу, т.к. geometric возвращает номер первого успеха

packs = packs.append([np.random.geometric(p, size = packs.shape[1])-1 for sub in subs.index], ignore_index=True)

D = [packs[0].tolist()] #массив, заполненности буфера для каждого АБ для каждого слота

for slot in range(1, subs.shape[1]):# для каждого слота

print('n =', n, 'lmb =', l, '(', slot, '/', slots_num, end=' )\t\r')

pp = slot % n #определяем номер АБ, которому достанентся ресурсный блок

#вычитаем из буфера выбранного АБ кол-во данных равное: пропск. способности * длительность слота

allocated_res = D[-1][:pp] + [max(0, D[-1][pp] - t*subs[slot][pp])] + D[-1][pp+1:]

D.append(allocated_res) #добавляем список с пересчитанным буфером в общий список

#увеличиваем объём данных в буфере для каждого АБ на заранее сгенерированное кол-во пакетов/данных (в Кбайт)

D[-1] = [i+j for i,j in zip(packs[slot],D[-1])]

return np.mean([sum(slot) for slot in D]) #возвращаем среднее суммарное кол-во данных в буфере

subs_num = [2,4,8] #кол-во абонентов

lmb = np.arange(1,101,5) #интенсивность входного потока (Пакетов/сек)

p_list = 1/(lmb*t+1) #рассчитываем p для геометрического распределения

for n in subs_num: #для каждого кол-ва абонентов

subs = subs_generator(r, n, Ptx, Pn, f, f0, h, h_s, S, slots_num) #генерируем пропускные способности АБ

total_D = [] #список средн. суммарн. данных в буфере для текущего колв-ва АБ

for p, l in zip(p_list, lmb): #для каждого p

D_p = pepega_clap(subs, blocks, t, p, n, l) #рассчитываем среднее суммарное кол-во данных в буфере

total_D.append(D_p)

plt.plot(lmb, total_D, marker='o', label = n)

plt.legend()

plt.xlabel('Интенсивность входного потока (пакетов/сек)')

plt.ylabel('Средн. суммарный объём данных в буфере (Кбайт)')

plt.show()

Соседние файлы в предмете Моделирование систем распределения ресурсов