Петренко (1195942), страница 5
Текст из файла (страница 5)
В связи с этим основное преимущество использования Matlab в данной работе является возможность цифровой обработки сигналов и данных: DSPTооlbоx, WaveletTооlbоx, CоmmunicatiоnTооlbоx, FilterDesignTооlbоx – наборы функций, позволяющих решать широкий спектр задач обработки сигналов, проектирования цифровых фильтров и систем связи [28].
Как и любой процесс проектирования, процесс построения графического интерфейса пользователя можно разбить на следующие этапы:
-
Постановка задачи;
-
Создание формы интерфейса и создание на неё элементов управления;
-
Написание кода программы и кода обработки событий.
Этапы построения графического интерфейса пользователя:
-
На первом этапе проводиться анализ поставленной задачи и определяется количество и состав элементов управления необходимых для решения задачи;
-
На втором этапе создаётся форма графического интерфейса и на ней создаются и размещаются элементы управления. Здесь же описываются их свойства;
-
На третьем этапе создания графического интерфейса пользователя пишется код основной программы вычисления и код для обработки событий [26].
Внешний вид графического интерфейса представлен на рисунке 4.1.
Рисунок 4.1 Внешний вид графического окна
Для описания распространения импульса по волокну воспользуемся формулой (3.17), описывающей частотно-модулированный импульс супергауссовой формы.
При моделировании входного импульса будем учитывать, что длительность соответствует входной длительности импульса
. А при моделировании импульса на выходе
.
Удобно использовать формулу (3.17) при исследовании разных форм импульсов. Так как при параметрах и
, мы получаем простой гауссовый импульс, соответствующий формуле (3.13). Если
, то импульс можно считать частотно модулированным, как показано в формуле (3.15).
Длительность входного импульса зависит от тактового интервала и, соответственно, от скорости распространения. В работе примем, что
Тогда длительность выходного импульса будет определяться формулой (3.18). Но так как в ней не учитывается влияние поляризационно-модовой дисперсии, преобразуем её с помощью формул (2.3) (2.7). Получаем:
Дисперсионную длину будем определять определить, как [6]
Уровень сигнала будем рассчитывать, основываясь на формулах (2.1) и (2.2). При этом коэффициент затухания будет изменяться в зависимости от выбранного волокна. Его значения возьмем из характеристик к выбранным оптическим волокнам. Уровень входного сигнала условно примем за 1. Тогда:
Основываясь на характеристиках выбранного оптического волокна и параметрах аппаратуры, программа будет рассчитывать длины регенерационного участка по затуханию и по дисперсии, по формулам (2.8) и (2.11) и моделировать входной и выходной импульс.
Для создания графического интерфейса пользователя в Matlab используются следующие компоненты:
-
Push Button – Кнопка. При нажатии отображается нажатой, при отпускании генерирует действие и отображается отжатой.
-
Edit Text - Редактор текста. Используется для ввода и редактирования строк текста. Действие генерируется при нажатии клавиши Enter для однострочного текста и Ctl+Enter для многострочного текста.
-
Static Text - Статический текст. Используется для меток.
-
Pop-Up Menu - Выпадающее меню (иначе ComboBox). Список тем для выбора. Позволяет выбрать одну или несколько тем. Открывается только при выборе. Используется для экономии места.
-
Axes - Координатные оси. Используются для рисования графиков.
Все графические объекты имеют 4 callback-функции:
-
Callback – Matlab выполняет эту функцию всякий раз, когда пользователь нажимает на левую кнопку мыши и курсор мыши указывает на объект;
-
ButtonDownFcn – Тоже, что и Callback, но для объектов в неактивном состояние;
-
CreateFcn – Matlab вызывает эту функцию сразу после создания объекта;
-
DeleteFcn – Matlab вызывает эту функцию непосредственно перед удалением объекта [29].
Для доступа к каждому объекту при написании программы удобно использовать значение свойства Tag объекта. По умолчанию в случае создании объектов с помощью конструктора GUIDE Matlab самостоятельно присваивается Tag значение, образуемое конкатенацией имени класса объекта и его порядкового номера. При программном создании объектов свойство Tag остается пустым [26].
Для создания графического интерфейса пользователя мы использовали GUIDE. Значение свойства Tag объектам мы присваивали самостоятельно, используя смысловые значения каждого объекта.
В нашем программном комплексе две кнопки. Одна из них, «Построить графики», является основной, так как при её нажатие производиться расчет всех необходимых величин, выводиться значение длин регенерационного участка и строятся графики входного и выходного импульсов. Поэтому основная часть кода находиться в функции Callback по обработки этой кнопки. Вторая кнопка – «Выход», производит закрытие окна графического интерфейса.
Координатные оси используются для отображений графиков входного и выходного импульса. Построение графиков происходит с помощью функции plot. Команда plot(x,y) соответствует построению обычной функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y – значениям функции. Вместо x мы задаем вектор значений t. Значениям функции y соответствует значение интенсивности импульса.
t=-5*tout:tin/50:5*tout;
yin=1*exp(-(1+i.*C).*t.^(2*l)./2./(tin^(2*l)));
yout=A*exp(-(1+i.*C).*t.^(2*l)./2./(tout^(2*l)));
Для ввода значения длины линии мы использовали Edit Text. Преобразование из строкового к числовому формату производилось с помощью функции str2double, для доступа к текущим свойствам объекта используем функцию get. В качестве указателя на определенный графический объект используем идентификатор handles. Ниже приведен фрагмент кода, присваивающий значение Edit Text переменной L:
L = str2double(get(handles.length, 'String')).
Статический текст применяется для наглядности модели и пояснения смысловых значений текстовых полей и выпадающих меню. Для поясняющих меток достаточно в свойствах объекта Property Inspector в качестве свойства String прописать смысловое значение, как показано на рисунке 4.2. Так же в свойствах объекта можно установить шрифт (FontName), размер шрифта (FontSize), цвет (ForegroundColor), положение (Position) и другие атрибуты. В строке Style прописывается тип объекта. На рисунке 4.2 он соответствует статическому тексту – text.
Рисунок 4.2 – Редактор свойств графических объектов
Так же статичный текст используется для вывода значений длин регенерационного участка. Для вывода используется команда set. Для начала прописываем указатель на определенный графический объект, так же с помощью идентификатора handles. Именно для такого опознанного объекта функция set изменяет характеристики, которые указаны в других аргументах при вызове функции set. Далее приведен фрагмент кода для вывода значений длины регенерационного участка по затуханию и дисперсии в соответствующий Static Text .
set(handles.text_Lkr,'String',Lkr1)
set(handles.text_Lkr2,'String',Lkr2).
Для выбора волокна, оборудования, длины волны, скорости, параметра модуляции и крутизны фронта применяется выпадающее меню. В редакторе свойств объекта Property Inspector в строке String заранее устанавливаем столбец всех значений переменной величины. А в программном коде с помощью оператора switch выбираем номер строки и присваиваем соответствующие значения:
Volokno=get(handles.volokno, 'value');
switch Volokno
case 1
D=0.06*1E-12;
if Lyamda==1310*1E-9;
K=3*1E-3;
a=0.34;
else
K=18*1E-3; a=0.2;
end
case 2
D=0.06*1E-12;
if Lyamda==1310*1E-9;
warndlg('Данное волокно не предназначено для этой длины волны');
else K=8*1E-3; a=0.25;
end
case 3
D=0.2*1E-12;
if Lyamda==1310*1E-9;
K=3.5*1E-3;
a=0.35;
else K=18*1E-3; a=0.21;
end
case 4
D=0.2*1E-12;
if Lyamda==1310*1E-9;
warndlg('Данное волокно не предназначено для этой длины волны');
else K=3.5*1E-3; a=0.22;
end
case 5
D=0.1*1E-12;
if Lyamda==1310*1E-9;
warndlg('Данное волокно не предназначено для этой длины волны');
else K=4*1E-3; a=0.2;
end
end
Для задания разных параметров волокна в зависимости от длины волны используется условный оператор if. То есть сначала в программном коде определяется выбранная в графическом интерфейсе пользователя длина волны, а далее в соответствие с выбранной длиной волны присваиваются значения параметров волокна.
Как можно заметить, в приведенном выше фрагменте кода используется команда warndlg. Так как не все волокна могут распространять сигнал на двух длинах волн, то это предупреждение будет ограничением при выборе не соответствующей длины волны. Команда создает диалогового окна предупреждения «Данное волокно не предназначено для этой длины волны», дальнейший расчет не производиться.
Чтобы сохранить результаты исследований и в дальнейшем использовать их для анализа и построения графиков мы использовали функцию fprintf:
fid = fopen('work_a.txt', 'a');
fprintf(fid, '%f %f %f %f\r\n', a, Lkr, Lkr1, Lkr2);
fclose(fid);
Указатель на файл fid открывает соответствующий файл в формате txt и добавляет данные в конец файла или создает файл, если такого ранее не создано. С помощью спецификаторов к fprintf мы записываем результаты каждого нового замера в новую строку. Запись необходимых величин происходит через пробел в строчку.
Далее c помощью функции fopen открываем нужный файл. Считываем матрицу значений и присваиваем векторы значений в соответствии с записанной величиной:
fid = fopen('work_a.txt', 'r');
S = fscanf(fid, '%f', [4,6])
fclose(fid);
a=S(1, :)
Lkr=S(2, :)
Lkr1=S(3, :)
Lkr2=S(4, :)
plot(a, Lkr, a, Lkr1, a, Lkr2)
xlabel('Затухание, дБ/км')
ylim([0 200])
grid on
ylabel('Длина регенерационного участка,км')
title('Зависимость длины регенерационного участка от затухания')
legend('Длина регенерационного участка итого, 'Длина регенерационного участка по затуханию', 'Длина регенерационного участка по дисперсии')
При построении графиков полученных зависимостей мы так же использовали команду plot. Общий заголовок для графика проставляется функцией title. Функция xlabel предназначена для проставления названия горизонтальной оси, функция ylabel - то же для вертикальной оси (причём эти надписи ориентированы вдоль осей координат). Кроме того, используя команду grid on можно нанести измерительную сетку на всю область построения графика. Команда legend добавляет к текущему графику пояснение в виде указанных текстовых строк. А команда ylim ограничивает значение координаты y.
Полный листинг программы находится в Приложении А.
-
Результаты исследования
-
Исследование длины регенерационного участка от скорости распространения
-
При исследовании импульсов с огибающей формой Гаусса выставим крутизну фронта , параметр модуляции
.
Для определения энергетического потенциала аппаратуры были использованы характеристики оптического тестера EXFO FOT-302X-23BL [30].
Для исследования выбраны волокна двух фирм Fujikura Ltd (Япония) [31] и Draka (Финляндия) [32]. От каждой фирмы представлены несколько образцов оптического волокна, каждое из которых соответствует рекомендации МСЭ-Т G.652, G.653 или G.655. Итого исследовалось пять волокон. Два волокна компании Draka: ESMF (G.652) и TeraLight (G.655) и три волокна, произведенных Fujikura Ltd: FutureGuide-SM (G.652), FutureGuide-DS (G.653) и FutureGuide-SS (G.655) [33].
В программном комплексе есть возможность выбора скорости передачи от 155,52 Мбит/с до 39,813 Гбит/с и длины волны 1310 нм или 1550 нм. Волокна Draka ESMF и FutureGuide-SM, соответствующие рекомендации МСЭ-Т G.652, были исследованы на двух длинах волны. Остальные волокна исследовались только на длине волны 1550 нм, так как по своей структуре не смогут передавать информацию на длине волны 1310 нм.
Данные, полученные в ходе исследования, собраны в таблицу 5.1.
Таблица 5.1 – Данные исследования
Скорость передачи, Мбит/с | 155,52 | 622,08 | 2488,32 | 9953,28 | 39813,12 | |||||
Длина регенерационного участка, км | Дисперсия | Затухание | Дисперсия | Затухание | Дисперсия | Затухание | Дисперсия | Затухание | Дисперсия | Затухание |
Волокно DrakaESMF на длине волны 1310 нм | 178,6 | 113,7 | 44,7 | 113,7 | 11,2 | 113,7 | 2,8 | 113,7 | 0,7 | 113,7 |
Волокно DrakaESMF на длине волны 1550 нм | 29,7 | 184,4 | 7,4 | 184,4 | 1,9 | 184,4 | 0,5 | 184,4 | 0,1 | 184,4 |
Волокно DrakaTeraLight на длине волны 1550 нм | 66,9 | 150,9 | 16,7 | 150,9 | 4,2 | 150,9 | 1,0 | 150,9 | 0,3 | 150,9 |
Волокно FutureGuide-SM на длине волны 1310 нм | 153,1 | 110,7 | 38,3 | 110,7 | 9,6 | 110,7 | 2,4 | 110,7 | 0,6 | 110,7 |
Волокно FutureGuide-SM на длине волны 1550 нм | 29,8 | 176.6 | 7,4 | 176.6 | 1,9 | 176.6 | 0,5 | 176.6 | 0,1 | 176.6 |
Продолжение таблицы 5.1
Волокно FutureGuide-DS на длине волны 1550 нм | 153,1 | 169,4 | 38,3 | 169,4 | 9,6 | 169,4 | 2,4 | 169,4 | 0,6 | 169,4 |
Волокно FutureGuide-SS на длине волны 1550 нм | 133,9 | 184,4 | 33,5 | 184,4 | 8,4 | 184,4 | 2,1 | 184,4 | 0,5 | 184,4 |
По полученным данным можно сделать вывод, что длина регенерационного участка по затуханию не зависит от скорости передачи и, соответственно, от длительности импульсов. Длина регенерационного участка по дисперсии существенно зависит от скорости и при увеличении скорости, она уменьшается. Если на скорости 155 Мбит/с мы можем увидеть длину регенерационного участка около 100 км, то при скорости 40 Гбит/с её значение не будет достигать и 1 км.