Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебники 80251

.pdf
Скачиваний:
6
Добавлен:
01.05.2022
Размер:
1.65 Mб
Скачать

Рассмотрим построение диаграммы Боде (логарифмическая амплитудночастотная характеристика — ЛАЧХ). Как известно, она определяется как:

измеряется в децибелах и строится в функции от

)

Полученная диаграмма Боде (ЛАЧХ) для RLC –цепи представлена на рис. 16:

Рис. 16. Диаграмма Боде (ЛАЧХ) для RLC –цепи

График в логарифмическом масштабе построен с помощью функции plot2d1. Первый аргумент этой функции – строка из трех символов, которая определяет вид графика. Первый символ о означает, что в случае построения нескольких кривых на одном графике аргумент x для них будет один и тот же. Следующие два символа определяют способ масштабирования осей x и y (соответственно): l – означает логарифмический масштаб, n – линейный.

Частотные характеристики системы можно также получить и с помощью функции syslin. Рассмотрим ее применение на примере дифференцирующего звена с замедлением, передаточная фунция которого имеет вид:

21

где K, T – параметры , .

Построим диаграмму Боде и годограф Найквиста такой системы при Т=0,3, К=5*10-3.

Первый параметр функции syslin определяет тип системы: непрерывная(«c») или дискретная («d»). Вторым параметром задаем передаточную функцию данного звена. Для этого вначале введена переменная s в качестве аргумента многочлена. С помощью функции bode построена диаграмма Боде (ЛАХ и ЛФЧХ), а с помощью функции nyquist – кривая Найквиста (АФХ). Эти функции имеют одинаковые наборы входных параметров: первым параметром передается имя системы, созданной при помощи оператора syslin, а вторым и третьим аргументами – минимальная и максимальная частоты соответственно (рис. 17).

Рис. 17. Диаграмма Боде и годограф Найквиста

22

Лабораторная работа № 8 ПРИМЕРЫ ИССЛЕДОВАНИЯ ДИНАМИЧЕСКИХ СИСТЕМ

1. ЦЕЛЬ РАБОТЫ

Научиться рассчитывать переходные процессы с помощью Scilab.

2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Упражнение 1. Расчет переходных процессов.

Задачи моделирования часто сводятся к интегрированию систем обыкновенных дифференциальных уравнений (ОДУ) первого порядка вида

(рис. 18):

где y(t) – n - мерный вектор,

 

,

t – независимая переменная,

f(t,y)=[f1(t,y),…,fn(t,y)]T , t0 начальный

момент

времени,

– вектор

начальных условий.

 

 

 

 

Для решения ОДУ используется функция Scilab ode.

В качестве первого примера рассмотрим RLC-цепочку, входом будем считать падение напряжения на всей цепи, а выходом – заряд конденсатора q(t). Из второго закона Кирхгофа следует:

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

Проинтегрируем ее при помощи функции ode. Для интегрирования следует написать головную программу, содержащую обращение к процедуре ode и подпрограмму-функцию, в которой вычисляются правые части системы дифференциальных уравнений. В головной программе должны быть заданы начальные условия для всех переменных, начальное и конечное значения аргумента интегрирования.

23

Вместо того, чтобы описывать подпрограмму-функцию в отдельном файле, можно описать ее непосредственно в головной программе с помощью функции deff, как это сделано в приведенном примере. Первым параметром этой функции является строка вида:

[s1,s2,...]=newfunction(e1,e2,....), где s1, s2, ...–выходные переменные, e1,e2,... – входные переменные, а =newfunction – имя описываемой функции. Второй аргумент – строка, определяющая последовательность инструкций создаваемой функции.Таким образом, команда: deff(’dy=F(t,y)’,’dy=Q*y+P*u(t)’); определяет функцию, аналогичную функции, описываемой в отдельном файле:

functiondy=F(t,y)

dy=Q*y+P*u(t); endfunction

Втаком случае переменные Q и P необходимо определить как глобальные или определять в самой подпрограмме.

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

ode являются y0 – вектор начальных состояний, t0 – начальный момент времени, T – моменты времени, для которых производится вычисления, F – подпрограмма-функция, вычисляющая правые части системы дифференциальных уравнений.

Выходным аргументом в данном примере будет вектор: Y=(I,q) (рис. 18).

Рис. 18. Моделирование RLC – цепочки

24

Часто в подпрограмму нужно передавать дополнительные аргументы. Так, для функции dy=f(t,y,u1,...,un) требуются дополнительные параметры u1,...,un. Эти аргументы можно передать при вызове функции ode как список вида list(f,u1,...un).

Рассмотрим нелинейную систему (рис. 19):

Напишем следующую подпрограмму вычисления правых частей второй системы:

Текст головной программы:

Рис. 19. Фазовая траектория системы (2) на плоскости (y1, y2)

25

Лабораторная работа № 9 МОДЕЛИРОВАНИЕ В SCICOS

1.ЦЕЛЬ РАБОТЫ

1.Изучить программирование на наглядных примерах в редакторе Scicos

2.Получить опыт моделирования в редакторе Scicos для создания собственных моделей.

.

2.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Пример 1

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

x = Ах + Вu,

у = Cx, где A, B, C - постоянные матрицы.

Наблюдению доступен вектор y, поступающий на вход без шумов. Кроме того, на вход поступает управление u и начальное значение вектора х: х0. На выходе формируется оценка x€. Переходный процесс в такой системе должен быть по возможности коротким, но при этом флуктуационная составляющая ошибки не должна быть велика.

Уравнение оценивания в таком случае имеет вид:

x = A x€ + Bu + K(y−C x€).

Матрица K должна быть выбрана так, чтобы у собственных значений − KC были отрицательные вещественные части.

Текст программы Scilab для выполнения этой процедуры с неопределенными заранее матрицами, помещенными в контекст модели, является следующим:

Функция ppol используется, чтобы получить матрицу усиления K. На вход u подается sin (t) (рис. 20).

26

Рис. 20. Функция ppol

Использование символических параметров полезно, потому что оно позволяет нам создавать универсальную модель. Чтобы изменить матрицы A, B, и C и размерность системы или время дискретизации, мы должны изменить только определение m, n и матрицы. Никаких изменений в схеме не требуется

(рис. 21).

Рис. 21. Изменение символических параметров

На левой панели показаны параметры до их изменения. На правой – после изменения.

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

Сделаем загрузку:

27

Мы только должны удостовериться, что файл данных datafile содержит переменные A, B, C, D, x0, и dt прежде, чем начать сеанс Scicos. Этот файл может быть создан в Scilab следующим образом:

→save('datafile'',A,B,C,x0,dt)

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

Нужно также отметить, что использование отдельного файла скрипта подразумевает, что диаграмма Scicos не является модульной, и этот файл скрипта должен всегда сопровождать модель.

Пример 2

Решить дифференциальное уравнение y'"' + y'"+ y" + 0.5y' + 0.1y = 0.1,

при нулевых начальных условиях.

Для самой высокой производной запишем y'"' = - y'"- y" - 0.5y´- 0.1y + 0.1.

Предположим, что y'"' известна. Тогда, после четырехкратного интегрирования получим у. Самая высокая производная, y'"' существует между блоками 8 и 1 (рис. 22).

Рис. 22. Максимальное значение производной у

Постоянное слагаемое 0.1 формируется блоком 7 как шаг в момент t=0. Производные y'", y", y' и y отoбражаются в MScope 12.

Результаты решения через мультиплексор 9 записаны в файл в ASCIIкоде блоком 10.

Начальные условия у всех интеграторов нулевые, в соответствии с условиями задачи.

28

У интеграторов есть верхние и нижние пределы. Необходимо не забывать задать их перед пуском.

Блок 7 по умолчанию имеет начальное время ступени равное 1. Его необходимо заменить на 0.

Блоки 5 и 6 не обязательны, так как можно установить входной множитель в блоке 8. Здесь они включены для наглядности.

Часы активации имеют начальное время равное нулю, а период 0.1. Это не имеет никакого отношения к точности решения, а только задает шаг выхода.

MScope имеет размерность входных портов портов {1 1 1 1}. Величины Ymin и Ymax были установлены после первого прогона. Период обновления (refresh-period) такой же как окончательное время интегрирования.

Запись в файл (блок 10) удобна тем, что данные могут быть импортированы в другие программы. Необходимо задать имя файла и задать строку формата в стиле Fortran. Это значит:

формат пишется в круглых скобках и включает: / – новая линия;

iw – область целого числа с шириной w знаков;

fw.d – область числа с плавающей запятой шириной w знаков, включая d цифры после десятичной запятой. Здесь w> = d+3, чтобы включить по крайней мере одну цифру целого числа, знак и точку;

ew.d – область числа с плавающей запятой, степень десяти шириной w знаков, включая d цифры после десятичной запятой. Здесь w> = d+7, чтобы включить по крайней мере одну цифру целого числа, знак для мантиссы, трех знаков для экспоненты, знака экспоненты и одного для точки;

nx n – пробелы;

tn – перемещает курсор принтера в положение n.

В этом примере выбрано (7 (e16.8,1x)) для строки формата (8 десятичных чисел), так как величины переменных малы.

Пример 3

Рассмотрим решение еще одного ДУ.

Продемонстрируем простым примером, как моделирование некоторых уравнений может стать сложным (можно показать как эту задачу можно облегчить с помощью компонентов Modelica). Рассмотрим систему ДУ:

Теперь покажем реализацию этих уравнений в модели (рис. 23).

29

Рис. 23. Реализация уравнений в модели

В блочном подходе есть несколько недостатков. Для моделирования часто необходимо слишком много блоков. Это делает модель неудобочитаемой. Также в такой сложной блок-схеме трудно отразить наглядно структуру физической или технической задачи.

Пример 4

Блок с массой М перемещается по грубой поверхности с коэффициентом трения f. Постоянная сила сопротивления – f·M·g, где g – сила тяготения, и K – коэффициент упругости пружины.

Покажем движение блока на графике (рис. 24), если его перемещают на 1 метр направо и отпускают.

Рис. 24. Движение блока

Такое движение можно описать уравнением: y" = -y - 0.15*sign (y').

Начальное условие для положения установлено в 1 метр (в блоке интегратора 2), время окончания интеграции 9.4, время обновления MScope 10. Период часов активации 0.01, а начальное время равно нулю (рис. 25-27).

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]