BMSTU/01-itsp-lab-01-report.tex

288 lines
14 KiB
TeX
Raw Normal View History

\documentclass[a4paper,fontsize=14bp]{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\setcounter{secnumdepth}{0}
\numerationTop
\begin{document}
\thispagestyle{empty}
\makeBMSTUHeader
\makeReportTitle{лабораторной}{1}{Исследование беспроводного канала связи \\ при распространении радиоволн \\ в открытом пространстве}{Проектирование информационных \\ и телекоммуникационных систем}{}{к.т.н., доцент кафедры ИУ-3 \\ Баскаков С.С.}
\newpage
\thispagestyle{empty}
\tableofcontents
\newpage
\pagestyle{fancy}
\section{Цель}
Целью данной лабораторной работы являлось изучение основ работы с системой имитационного моделирования OMNeT++, построение имитационной модели беспроводного канала связи и исследование его характеристик средствами имитационного моделирования и аналитическими расчетами.
\section{Задание}
\begin{enumerate}
\item Выполнить моделирование исходного проекта, обработку результатов экспериментов по приведенному выше описанию и убедиться в повторяемости приведенных графиков.
\item Изменить значения параметров исходной имитационной модели системы в соответствии с индивидуальным вариантом.
\item Провести аналогичный имитационный эксперимент с модифицированной моделью системы. В случае необходимости следует увеличить максимальное время моделирования, чтобы рассмотреть ситуацию с ухудшением качества связи и ее отсутствием по мере увеличения расстояния между устройствами.
\item Обработать результаты моделирования и построить соответствующие графики.
\item Выполнить аналитические расчеты для оценки мощности принятого сигнала, вероятности битовой ошибки и вероятности пакетной ошибки для модифицированной системы. Сравнить расчетные значения с полученными в ходе имитационного моделирования.
\end{enumerate}
\section{Выполнение}
\subsection{Обработка исходной модели}
После запуска исходной модели в папке с результатами были записаны файлы со скалярными и векторными значениями моделирования. По этим значениям в пакете математического моделирования MATLAB были построены графики, представленные на рисунках \hyperref[pic:defpowrel]{\ref{pic:defpowrel}}, \hyperref[pic:defber]{\ref{pic:defber}}, \hyperref[pic:defper]{\ref{pic:defper}}, \hyperref[pic:defploss]{\ref{pic:defploss}}. Полученные графики являются идентичными с представленными в задании к лабораторной работе.
\begin{figure}[H]
\centering
\begin{multicols}{2}
\includegraphics[width=8cm]{01-itsp-lab-01-def-pow-rel.png}
\caption{Мощность принятого сигнала и отношение сигнал/(интерференция+шум)}
\label{pic:defpowrel}
\columnbreak
\includegraphics[width=8cm]{01-itsp-lab-01-def-ber.png}
\caption{Вероятность битовой ошибки}
\label{pic:defber}
\end{multicols}
\end{figure}
\begin{figure}[H]
\centering
\begin{multicols}{2}
\includegraphics[width=8cm]{01-itsp-lab-01-def-per.png}
\caption{Вероятность пакетной ошибки}
\label{pic:defper}
\columnbreak
\includegraphics[width=8cm]{01-itsp-lab-01-def-ploss.png}
\caption{Количество потерянных пакетов}
\label{pic:defploss}
\end{multicols}
\end{figure}
\subsection{Изменение исходной модели}
Исходная система была модифицирована согласно задания, итоговые значения приведены в таблице \hyperref[table:individual]{\ref{table:individual}}, а полный файл настроек в листинге \hyperref[lst:modified]{\ref{lst:modified}}
\begin{table}[H]
\centering
\begin{tabular}{||r|r|r|r|r|r|r|r||}
\hline
D (байт) & T (мсек) & $P_t$ (мВт) & F (МГц) & R (кбит/с) & W (МГц) & $P_t$ (дБм) & V (м/с) \\ [0.5ex]
\hline\hline
50 & 10 & 80 & 2000 & 200 & 300 & -90 & 20 \\ [1ex]
\hline
\end{tabular}
\caption{Параметры системы согласно индивидуальному варианту (№ 11)}
\label{table:individual}
\end{table}
\begin{lstlisting}[style=ASMStyle, caption=Изменённый файл omnetpp.ini, label={lst:modified}]
[Config Lab_1]
description = Point-to-point wireless communication channel
network = Lab_1_Network
sim-time-limit = 100s
*.host*.ipv4.arp.typename = "GlobalArp"
*.hostTX.numApps = 1
*.hostTX.app[0].typename = "UdpBasicApp"
*.hostTX.app[0].destAddresses = "hostRX"
*.hostTX.app[0].destPort = 5000
*.hostTX.app[0].messageLength = 50B
*.hostTX.app[0].sendInterval = exponential(10ms)
*.hostTX.app[0].packetName = "UDPData"
*.hostRX.numApps = 1
*.hostRX.app[0].typename = "UdpSink"
*.hostRX.app[0].localPort = 5000
*.host*.wlan[0].typename = "AckingWirelessInterface"
*.host*.wlan[0].mac.useAck = false
*.host*.wlan[0].mac.fullDuplex = false
*.host*.wlan[0].mac.headerLength = 23B
*.host*.**.bitrate = 200kbps
*.radioMedium.typename = "ApskScalarRadioMedium"
*.radioMedium.pathLoss.typename = "FreeSpacePathLoss"
*.radioMedium.backgroundNoise.power = -90dBm
*.radioMedium.mediumLimitCache.centerFrequency = 2GHz
*.radioMedium.mediumLimitCache.maxTransmissionDuration = 1s
*.host*.wlan[0].radio.typename = "ApskScalarRadio"
*.host*.wlan[0].radio.centerFrequency = 2GHz
*.host*.wlan[0].radio.bandwidth = 300kHz
*.host*.wlan[0].radio.transmitter.power = 80mW
*.host*.wlan[0].radio.transmitter.preambleDuration = 10us
*.host*.wlan[0].radio.transmitter.headerLength = 8B
*.host*.wlan[0].radio.receiver.sensitivity = -110dBm # not used
*.host*.wlan[0].radio.receiver.energyDetection = -110dBm # not used
*.host*.wlan[0].radio.receiver.snirThreshold = 0dB # not used
*.hostRX.wlan[*].radio.minSnir.result-recording-modes = default,+vector
*.hostRX.wlan[*].radio.bitErrorRate.result-recording-modes = default,+vector
*.hostRX.wlan[*].radio.packetErrorRate.result-recording-modes = default,+vector
*.hostRX.mobility.typename = "LinearMobility"
*.hostRX.mobility.speed = 20mps
*.hostRX.mobility.initialMovementHeading = 0deg
*.host*.wlan[0].mac.queue.packetCapacity = 50
*.visualizer.mobilityVisualizer.displayVelocities = true
*.visualizer.mobilityVisualizer.displayMovementTrails = true
\end{lstlisting}
\subsection{Результаты моделирования}
В результате моделирования с представленными в листинге \hyperref[lst:modified]{\ref{lst:modified}} значениями, в среде OMNeT++ сеть не дошла до максимального уровня пакетной ошибки, в связи с чем время моделирования было изменено на 200 сек. Результаты моделирования (в виде исходных «*.sca»- и «*.vec»-файлов приложены к отчёту). Графики поведения модели представлены на рисунках \hyperref[pic:wrkpowrel]{\ref{pic:wrkpowrel}}, \hyperref[pic:wrkber]{\ref{pic:wrkber}}, \hyperref[pic:wrkper]{\ref{pic:wrkper}}, \hyperref[pic:wrkploss]{\ref{pic:wrkploss}}.
\begin{figure}[H]
\centering
\begin{multicols}{2}
\includegraphics[width=8cm]{01-itsp-lab-01-wrk-pow-rel.png}
\caption{Мощность принятого сигнала и отношение сигнал/(интерференция+шум)}
\label{pic:wrkpowrel}
\columnbreak
\includegraphics[width=8cm]{01-itsp-lab-01-wrk-ber.png}
\caption{Вероятность битовой ошибки}
\label{pic:wrkber}
\end{multicols}
\end{figure}
\begin{figure}[H]
\centering
\begin{multicols}{2}
\includegraphics[width=8cm]{01-itsp-lab-01-wrk-per.png}
\caption{Вероятность пакетной ошибки}
\label{pic:wrkper}
\columnbreak
\includegraphics[width=8cm]{01-itsp-lab-01-wrk-ploss.png}
\caption{Количество потерянных пакетов}
\label{pic:wrkploss}
\end{multicols}
\end{figure}
В результате аналитических расчётов были получены следующие графики (рисунки \hyperref[pic:anpowrel]{\ref{pic:anpowrel}}, \hyperref[pic:anber]{\ref{pic:anber}}, \hyperref[pic:anper]{\ref{pic:anper}}). На основании полученных графиков можно сделать вывод о полном соответствии смоделированной системы и теоретических значений параметров.
\begin{figure}[H]
\centering
\begin{multicols}{2}
\includegraphics[width=8cm]{01-itsp-lab-01-an-pow-rel.png}
\caption{Мощность принятого сигнала и отношение сигнал/(интерференция+шум)}
\label{pic:anpowrel}
\columnbreak
\includegraphics[width=8cm]{01-itsp-lab-01-an-ber.png}
\caption{Вероятность битовой ошибки}
\label{pic:anber}
\end{multicols}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=8cm]{01-itsp-lab-01-an-per.png}
\caption{Вероятность пакетной ошибки}
\label{pic:anper}
\end{figure}
\section{Выводы}
В результате выполнения лабораторной работы были изучены основные аспекты системы имитационного моделирования OMNeT++, были выполнены различные имитационные эксперименты модели беспроводного канала связи, а также было проведено исследование характеристик модели созданной средствами имитационного моделирования и с помощью аналитических расчетов в системе пакете MATLAB. Также был написан код на языке Python для построения аналитических моделей, представленный в приложении \hyperref[appendix:jupyter]{\ref{appendix:jupyter}}
\newpage
\appendix
\setcounter{secnumdepth}{5}
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Alph{subsection}}
\subsection{Jupyter notebook}
\label{appendix:jupyter}
\begin{lstlisting}[language=Python, style=PyCodeStyle]
import matplotlib.pyplot as plt
import numpy as np
from scipy import special
from math import pi
D = 50
PT = 80
FREQ = 2000
PN = -90
R = 200
W = 300
SPEED = 20
# График 1 Мощность принятого сигнала и Отношение сигнал / (интерференция + шум)
def get_rx_power():
timestamp = 200
light_speed = 3 * 10 ** 8
initial_distance = 5
freq = FREQ * 10 ** 6
Pt = PT * 10 ** -3
wavelength = light_speed / freq
rx_power = []
for t in range(1, timestamp + 1):
distance = initial_distance + SPEED * t
result = Pt * wavelength ** 2 / (4 * pi * distance) ** 2
rx_power.append(result)
return rx_power
Pn = 10 ** ((PN/10) - 3)
rx_power = get_rx_power()
signal_noise = []
signal_noise_scaled = []
rx_power_scaled = []
for i in range(len(rx_power)):
rx_power_scaled.append(10 * np.log10(rx_power[i]) + 30)
signal_noise.append(rx_power[i] / Pn)
signal_noise_scaled.append(10 * np.log10(signal_noise[i]))
fig, ax = plt.subplots()
ax.grid()
ax.set_xlabel('Время, сек')
ax.set_ylim(-90, -30)
ax.set_ylabel('Мощность принятого сигнала Prx, дБм', color="C0")
ax.plot(range(1, 201), rx_power_scaled, color="C0")
ax2 = ax.twinx()
ax2.set_ylim(-10, 60)
ax2.set_ylabel('Отношение сигнал/(интерференция+шум), дБ', color="C1")
ax2.plot(range(1, 201), signal_noise_scaled, color="C1")
plt.gcf().set_dpi(300)
plt.show()
# График 2 Аналитическая вероятность битовой ошибки
ber_values = []
for i in range(len(signal_noise)):
ber_values.append(0.5 * special.erfc(np.sqrt((signal_noise[i] * W) / R)))
fig, ax = plt.subplots()
ax.set_xlim(0, 201)
ax.set_ylim(10 ** -18, 10)
ax.grid()
ax.set_xlabel('Время, сек')
ax.set_ylabel('Вероятность битовой ошибки')
plt.semilogy(range(1, 201), ber_values)
plt.gcf().set_dpi(300)
plt.show()
# График 3 Аналитическая вероятность пакетной ошибки
L = D + 59
per_values = []
for i in range(len(ber_values)):
per_values.append(1 - (1 - ber_values[i]) ** (8 * L))
fig, ax = plt.subplots()
ax.set_ylim(0, 1.1)
ax.grid()
ax.set_xlabel('Время, сек')
ax.set_ylabel('Вероятность пакетной ошибки')
plt.plot(range(1, 201), per_values)
plt.gcf().set_dpi(300)
plt.show()
\end{lstlisting}
\end{document}