Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Часть 2. Помехоустойчивое кодирование.

Часть 1. Моделирование систем автоматического управления в MATLAB.

 

Задание 1. ДИНАМИЧЕСКИЕ И ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ САУ.

Постановка задачи

В качестве объекта исследования выступают линейные (линеаризованные) динамические стационарные системы управления с одним входом и одним выходом. При этом модель одномерной САУ задана в виде комплексной передаточной функции, записанной как отношение полиномов

(формула)

 

1. Определить полюса и нули передаточной функции

(формула)

2. Записать дифференциальное уравнение, определяющее функционирование САУ.

3. Построить графики переходной и импульсно-переходной функции:

 

h (t), w (t).

4. Построить логарифмические частотные характеристики

 

L (ω).

5. Построить частотный годограф Найквиста

 

W (i ω), ω = [0, ∞].

6. Представить исходную систему в виде последовательного соединения типовых звеньев. Построить характеристики этих типовых звеньев.

 

Ход работы

 

Задана передаточная функция САУ

 

Найдём её динамические и частотные характеристики.

 

1. Создадим LTI-объект с именем w, для этого выполним:

>> w=tf([2 4],[1 3 5 4 3])

 

Transfer function:

 

2 s + 4

-----------------------------

s^4 + 3 s^3 + 5 s^2 + 4 s + 3

Найдем полюса и нули передаточной функции с использованием команд pole, zero:

>> pole(w)

ans =

-1.2762 + 1.0718i

-1.2762 - 1.0718i

-0.2238 + 1.0149i

-0.2238 - 1.0149i

 

>> zero(w)

ans =

-2

2. Построим переходную функцию командой step(w). Результат ее выполнения приведен на рис. 1.1:

Рис. 1.1. Переходная функция h(t).

Из графика переходной функции видно, что система стремится к устойчивому состоянию.

Построим импульсную переходную функцию командой impulse(w). Результат показан на рис. 1.2:

Рис. 1.2. Импульсная переходная функция.

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

3. Диаграмму Боде получим, используя команду bode(w) – рис. 1.3:

Рис. 1.3. Логарифмические частотные характеристики.

4. Определим частотный годограф Найквиста, выполнив команду nyquist(w) – рис. 1.4:

 

Рис. 1.4. Частотный годограф.

Годографом передаточной функции W(jw) называется кривая, прочерчиваемая концом вектора W(jw) =|W(jw)|ejj(w) на комплексной плоскости при измерении частоты w от 0 до бесконечности.

Замкнутая система управления устойчива, если годограф передаточной функции W(jw) разомкнутой системы не охватывает на комплексной плоскости точку c координатами (-1, j0).

Если годограф проходит через точку -1, то говорят, что система находится на границе устойчивости. В этом случае на некоторой частоте W(jw0)= -1 и в системе могут существовать незатухающие колебания частоты w0. В неустойчивых системах уровень сигнала x(t) будет нарастать со временем.

Из графика частотного годографа (АФЧХ) видно, что график (годограф) проходит через точку -1, следовательно, система находится на границе устойчивости.

Аналогичные результаты (рис. 1.5) можно получить, используя команду ltiview(w), с соответствующими настройками в меню «Plot Configuration»:

Рис. 1.5. LTI-viewer.

Каждая из построенных характеристик полностью и однозначно определяет рассматриваемую систему управления.

 

Задание 2 ОПИСАНИЕ СИСТЕМ В ПРОСТРАНСТВЕ СОСТОЯНИЙ.

 

Постановка задачи

Даны математические модели трех систем и структурная схема, представляющая собой соединение этих систем. Необходимо:

– получить модель результирующей системы в пространстве состояний,

– исследовать наблюдаемость и управляемость трех подсистем в отдельности и их соединения в соответствии со схемой.

 

 

 

1. Создадим матрицы первой системы:

>> A1=[5 -3; 2 1]

 

A1 =

 

5 -3

2 1

 

>> B1=[1 3;3 -1]

 

B1 =

 

1 3

3 -1

 

>> C1=[1 2;2 -1]

 

C1 =

 

1 2

2 -1

2. Создавая, аналогично, матрицы двух других систем создадим ss-объекты:

>> s1=ss(A1, B1, C1, 0)

 

a =

x1 x2

x1 5 -3

x2 2 1

 

b =

u1 u2

x1 1 3

x2 3 -1

 

c =

x1 x2

y1 1 2

y2 2 -1

 

d =

u1 u2

y1 0 0

y2 0 0

 

Continuous-time model.

 

>> A2=[1 0;-1 2]

 

A2 =

 

1 0

-1 2

 

>> B2=[3;-4]

 

B2 =

 

-4

 

>> C2=[5 -2;2 3]

 

C2 =

 

5 -2

2 3

 

>> s2=ss (A2, B2, C2, 0)

 

a =

x1 x2

x1 1 0

x2 -1 2

 

b =

u1

x1 3

x2 -4

 

c =

x1 x2

y1 5 -2

y2 2 3

 

d =

u1

y1 0

y2 0

 

Continuous-time model.

 

>> A3=[1 2;3 2]

 

A3 =

 

1 2

3 2

 

>> B3=[1;-2]

 

B3 =

 

-2

>> C3=[-1 2]

 

C3 =

 

-1 2

 

>> s3=ss(A3,B3,C3,0)

 

a =

x1 x2

x1 1 2

x2 3 2

 

b =

u1

x1 1

x2 -2

 

c =

x1 x2

y1 -1 2

 

d =

u1

y1 0

 

Continuous-time model.

 

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

 

>> rank(ctrb(A1,B1))

 

ans =

 

 

>> rank(obsv(A1,C1))

 

ans =

 

 

>> rank(ctrb(A2,B2))

 

ans =

 

 

>> rank(obsv(A2,C2))

 

ans =

 

 

>> rank(ctrb(A3,B3))

 

ans =

 

 

>> rank(obsv(A3,C3))

 

ans =

 

Видно, что во всех случаях ранги матриц управляемости и наблюдаемости совпадают с размерностями пространства состояний.

4. Получим систему, определяемую соединением:

Для корректного использования функции connect введем дополнительную систему, передаточная функция которой равна 1.

 

>> s4=tf(1)

 

Transfer function:

 

>> sys=append(s1,s2,s3,s4)

 

a =

x1 x2 x3 x4 x5 x6

x1 5 -3 0 0 0 0

x2 2 1 0 0 0 0

x3 0 0 1 0 0 0

x4 0 0 -1 2 0 0

x5 0 0 0 0 1 2

x6 0 0 0 0 3 2

 

b =

u1 u2 u3 u4 u5

x1 1 3 0 0 0

x2 3 -1 0 0 0

x3 0 0 3 0 0

x4 0 0 -4 0 0

x5 0 0 0 1 0

x6 0 0 0 -2 0

 

c =

x1 x2 x3 x4 x5 x6

y1 1 2 0 0 0 0

y2 2 -1 0 0 0 0

y3 0 0 5 -2 0 0

y4 0 0 2 3 0 0

y5 0 0 0 0 -1 2

y6 0 0 0 0 0 0

 

d =

u1 u2 u3 u4 u5

y1 0 0 0 0 0

y2 0 0 0 0 0

y3 0 0 0 0 0

y4 0 0 0 0 0

y5 0 0 0 0 0

y6 0 0 0 0 1

 

Continuous-time model.

 

>> Q=[2 -4 6;3 2 0;4 1 3]

 

Q =

 

2 -4 6

3 2 0

4 1 3

 

>> in=[1 5]

 

in =

 

1 5

 

>> out=[5 4]

 

out =

 

5 4

 

>> s_com=connect(sys,Q,in,out)

 

a =

x1 x2 x3 x4 x5 x6

x1 5 -3 -6 -9 0 0

x2 2 1 2 3 0 0

x3 6 -3 1 0 0 0

x4 -8 4 -1 2 0 0

x5 1 2 5 -2 1 2

x6 -2 -4 -10 4 3 2

 

b =

u1 u2

x1 1 3

x2 3 -1

x3 0 0

x4 0 0

x5 0 0

x6 0 0

 

c =

x1 x2 x3 x4 x5 x6

y1 0 0 0 0 -1 2

y2 0 0 2 3 0 0

 

d =

u1 u2

y1 0 0

y2 0 0

 

Continuous-time model.

 

Обращаясь к данным объекта, можно получить матрицы А, В, С:

>> A=s_com.A

 

A =

 

5 -3 -6 -9 0 0

2 1 2 3 0 0

6 -3 1 0 0 0

-8 4 -1 2 0 0

1 2 5 -2 1 2

-2 -4 -10 4 3 2

 

>> B=s_com.B

 

B =

 

1 3

3 -1

0 0

0 0

0 0

0 0

 

>> C=s_com.C

 

C =

 

0 0 0 0 -1 2

0 0 2 3 0 0

 

5. Вычислим ранги матриц наблюдаемости и управляемости итоговой системы:

>> rank(ctrb(A,B))

 

ans =

 

 

>> rank(obsv(A,C))

 

ans =

 

 

Результаты показывают, что система управляема и наблюдаема.

 

 

Часть 2. Помехоустойчивое кодирование.

Задание 1. Выполнить моделирование кодека Хэмминга (11,15) без ошибок и с ошибками с кратностью T1=4, T2=5.

Задание 2. Выполнить моделирование кодека BCH (5,15) без ошибок и с ошибками с кратностью T1=4, T2=5.

Задание 3. Выполнить моделирование кодека Рида-Соломона RS(5,15) без ошибок и с ошибками с кратностью T1, T2.

Задание 4. Выполнить моделирование сверточного кодека 2/3 без ошибок и с ошибками с кратностью T1, T2.

 

Задание 1. Выполнить моделирование кодека Хэмминга (11,15) без ошибок и с ошибками с кратностью T1=4, T2=5

Рисунок 2.1. Имитационная модель кодека Хэмминга

Источник данных, генератор случайных двоичных чисел – Bernoulli Binary-Integer, вырабатывающий случайные биты. Выход генератора делаем в виде кадра из K=11 отсчетов. В окне параметров блока задаем и вероятность нулей, равную 0,9.

Кодер Хэмминга – Hamming encoder. Он по сообщению K формирует передаваемый код V. В окне параметров блока задаем N=15.

Умножитель Gain. Он умножает выход кодера на вектор ошибки E из 0 и 1, имитирующий ошибки в канале связи (ошибка может получиться при компоненте E, равном 0). Вектор E должен содержать N компонент, которые вычислим функцией rot90(randerr(N,1,N-ER)). Получим вектор-строку из N равновероятных нулей и единиц, из которых N-ER равны 1.

Декодер Хэмминга – Hamming decoder. Для него зададим параметры, аналогичные кодеру.

Блоки Unbuffer преобразуют кадры в линейные последовательности, направляемые к виртуальному 4-входовому наблюдателю Scope.

Наблюдатель Scope позволяет в общем масштабе времени наблюдать сигналы от блоков Buffer. Чтобы в графиках наблюдателя были заголовки, сделаем входам имена. Для этого двойным щелчком по линии входа вызовем окно ввода имени, в которое занесем имя. зададим имена: для передаваемого сообщения – Message_T, для передаваемого кода Code_T, для принятого кода – Code_R, для декодированного сообщения Message_R.

При моделировании с разными кратностями ошибок получим:

Рис.2.2. Моделирование кодека Хэмминга без ошибок, ER=0.

Рис.2.3.Моделирование кодека Хэмминга, ошибка кратности T1=ER=4.

Рис.2.4.Моделирование кодека Хэмминга, ошибка кратности T2=ER=5.

Задание 2. Выполнить моделирование кодека BCH (5,15) без ошибок и с ошибками с кратностью T1=4, T2=5

 

Рисунок 2.5. Имитационная модель кодека BCH

 

Источник данных, генератор случайных двоичных чисел – Bernoulli Binary-Integer, вырабатывающий случайные биты. Выход генератора делаем в виде кадра из K=5 отсчетов.

Кодер BCH – DCY encoder. Он по сообщению K формирует передаваемый код V. В окне параметров блока (Рисунок 5) зададим N=15, K=5.

Умножитель Gain. Он умножает выход кодера на вектор ошибки E из 0 и 1, имитирующий ошибки в канале связи (ошибка может получиться при компоненте E, равном 0). Вектор E должен содержать N компонент, которые вычислим функцией rot90(randerr(N,1,N-ER)). Получим вектор-строку из N равновероятных нулей и единиц, из которых N-ER равны 1.

Декодер BCH – BCH decoder. Для него нужно задать параметры, аналогичные кодеру. Декодер имеет два выхода: верхний декодированное сообщение, нижний – кратность исправленных ошибок.

Блок Sum, в котором путем вычитания сравниваются исходное и декодированное сообщение. В окне параметров блока нужно зададим знаки операндов минус и плюс.

Блоки Unbuffer преобразуют кадры в линейные последовательности, направляемые к виртуальному 2-входовому наблюдателю Scope.

Наблюдатель Scope позволяет в общем масштабе времени наблюдать сигналы от блоков Buffer. Чтобы в графиках наблюдателя были заголовки, сделаем входам имена. Для этого двойным щелчком по линии входа вызовем окно ввода имени, в которое занесем имя. зададим имена: для сигнала сравнения – Compare, для передаваемого кода Code_T, для кратности исправленных ошибок – Error_T.

При моделировании с разными кратностями ошибок получим:

Рис.2.6. Моделирование кодека BCH (5,15) без ошибок, ER=0

Рис.2.7. Моделирование кодека BCH (5,15), ошибка кратности T1=ER=4

Рис.2.8. Моделирование кодека BCH (5,15), ошибка кратности T2=ER=5

 

Задание 3. Выполнить моделирование кодека Рида-Соломона RS(5,15) без оши-бок и с ошибками с кратностью T1, T2

 

Создаем модель в среде Simulink. В модель включаем:

Источник данных, генератор случайных целых чисел – Random-Integer, вырабатывающий числа в интервале от 0 до N-1. Выход генератора сделаем в виде кадра из K чисел.

Кодер Рида-Соломона – RS encoder. Он по сообщению K формирует передаваемый код из N символов.

Умножитель Gain. Он умножает выход кодера на вектор ошибки E из 0 и 1, имитирующий ошибки в канале связи (ошибка может получиться при компоненте E, равном 0). Вектор E должен содержать N компонент, которые вычислим функцией rot90(randerr(N,1,N-ER)). Получим вектор-строку из N равновероятных нулей и единиц, из которых N-ER равны 1.

Декодер Рида-Соломона – RS decoder, имеющий два выхода. На верхнем выходе из принятого кода R формируется декодированное сообщение, на нижний выход выводится кратность исправленных ошибок.

Сумматор Sum. В нем из декодированного сообщения вычитается исходное сообщение.

Блоки Unbuffer преобразуют кадры в линейные последовательности, направляемые к виртуальному двухвходовому наблюдателю Scope.

Наблюдатель Scope позволяет в общем масштабе времени наблюдать сигналы от блоков Buffer.

 

Рис.2.9. Имитационная модель RS кодека

Для Random-Integer. Выбираем M=15 и число отсчетов в кадре F=5.

Для RS encoder и RS decoder. В нем задаем длины сообщения K=5 и кодового слова N=15. Соглашаемся с выбранным по умолчанию примитивным полиномом g(x)=1011, из которого автоматически вычисляется порождающий полином. Аналогично задаем те же параметры для блока RS decoder.

Для блока Gain. В поле Gain задаем для Gain формулу rot90(randerr(N,1,N-ER)). Функция randerr(N,1,N-ER) создает строку значений, а функция rot90 превращает ее в столбец.

Для блока Sum. Для него выбираем отображение блока в виде прямоугольника и число входов суммирования, задав в списке знаков суммирования минус и плюс.

Чтобы в графиках наблюдателя были заголовки, сделаем входам имена. Для этого двойным щелчком по линии входа вызовем окно ввода имени, в которое занесем имя. Для входа сигнала сравнения примем имя Compare, для входа кратности исправленной ошибки Error T.

После моделирования можно двойным щелчком по блоку Scope посмотреть результаты:

Рис.3.1. Моделирование кодека Рида-Соломона RS(5,15) без ошибок, Gain=rot90(randerr(15,1,15))

Рис.3.2. Моделирование кодека Рида-Соломона RS(5,15) ошибки есть, Gain=rot90(randerr(15,1,10))

Рис.3.3. Моделирование кодека Рида-Соломона RS(5,15) ошибки в есть, их кратность T2 может превысить исправляющую способность кода,при этом Gain=rot90(randerr(15,1,9))

Задание 4. Выполнить моделирование сверточного кодека 2/3 без ошибок и с ошибками с кратностью T1, T2

Создаем модель в среде Simulink:

 

Рис.3.4. Имитационная модель сверточного кодека

В модель включаем:

Источник данных, генератор случайных двоичных чисел – Bernoulli Binary-Integer, вырабатывающий случайные биты. Выход генератора сделаем в виде кадра из K=2 отсчетов.

Сверточный кодер – Convolution encoder. Он по сообщению из K=2 символов формирует передаваемый код V из N=3 символов. В окне параметров кодера зададим функцию генерации решетки poly2trellis([4 3],[4 5 17; 7 4 2])

 

Сверточный декодер – Convolution decoder. Он декодирует сообщение, используя алгоритм Витерби. В окне параметров блока повторяем решетку, выбираем декодирование с жестким решением (Hard Decision) и глубину отслеживания назад примерно 3·(K+N)

Блоки Unbuffer преобразуют кадры в линейные последовательности, направляемые к виртуальному 3-входовому наблюдателю Scope.

Наблюдатель Scope позволяет в общем масштабе времени наблюдать сигналы от блоков Buffer. Чтобы в графиках наблюдателя были заголовки, сделаем входам имена. Для этого двойным щелчком по линии входа вызовем окно ввода имени, в которое занесем имя. зададим имена: для передаваемого сообщения – Message_T, для передаваемого кода V_Code, для декодированного сообщения Message_R.

 

После моделирования можно двойным щелчком по блоку Scope посмотреть результаты:

Рис.3.5. Моделирование сверточного кодека 2/3

Декодированное сообщение совпадает с исходным. Есть сдвиг во времени.

В ходе работы по помехоустойчивому кодированию мы промоделировали четыре типа кодеков, для каждого из которых провели определение (детектирование) ошибок и их коррекцию, например, изменяя ошибку кратности.



<== предыдущая лекция | следующая лекция ==>
Оператор прерывания цикла break | Рассмотрим взаимоотношения и связи кафедры.
Поделиться с друзьями:


Дата добавления: 2017-03-18; Мы поможем в написании ваших работ!; просмотров: 360 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

2281 - | 2077 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.