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

288 lines
14 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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}