- •1 Вводное занятие. Правила техники безопасности при выполнении лабораторных работ в дисплейном классе.
- •2 Изучение интерфейса пакета MathCad
- •Теоретические сведения
- •Рабочее окно MathCad
- •Массивы и строки, формирование и использование.
- •Формулы, их ввод, редактирование и вычисление.
- •Порядок выполнения
- •Контрольные вопросы.
- •Математические выражения
- •Операторы
- •Типы данных
- •Функции
- •Текстовые фрагменты
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Контрольные вопросы
- •4 Средства графики и анимация в пакете MathCad.
- •Графические области
- •Создание анимационного клипа
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 6.
- •Построение пересекающихся фигур
- •Упражнение 2.
- •Упражнение 3.
- •Контрольные вопросы
- •5 Аналитические вычисления в системе MathCad.
- •Выделение выражений для символьных вычислений
- •Символьные операции
- •Операции с выделенными выражениями
- •Операции с выделенными переменными
- •Операции с выделенными матрицами
- •Интегральные преобразования
- •Стиль представления результатов вычислений
- •Примеры символьных операций в командном режиме
- •Операторы вычисления пределов функций
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •6 Приближение функций в пакете MathCad.
- •Интерполяция функций
- •Аппроксимация функций
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Варианты заданий для упражнений 1-3
- •Контрольные вопросы
- •Численное решение скалярного уравнения
- •Аналитическое решение скалярного уравнения
- •Решение системы линейных алгебраических уравнений (СЛАУ)
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Контрольные вопросы
- •8 Решение ОДУ в системе MathCad.
- •Использование решающего блока
- •Прямой вызов решателей
- •Задание на работу
- •Варианты задания.
- •Контрольные вопросы
- •9 Изучение интерфейса системы Matlab.
- •Теоретические сведения
- •Команды управления окном
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Контрольные вопросы
- •Теоретические сведения
- •Operators and special characters.
- •Arithmetic operators (арифметические операторы).
- •Пример 1:
- •Пример 2
- •Relational и Logical operators (отношения и логические оперции)
- •Пример 3:
- •Special characters (специальные символы)
- •Программирование и m- файлы.
- •Структурные типы данных
- •Пример 7
- •Пример 8
- •Пример 9
- •Пример 10
- •Пример 11
- •Управляющие операторы
- •Ветвление: IF и SWITCH
- •Циклы FOR и WHILE
- •Команды ввода – вывода
- •Пример 12
- •Пример 13
- •Интерактивное взаимодействие
- •Пользовательские функции и сценарии
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •11 Графические средства системы Matlab.
- •Теоретические сведения
- •Пример 4:
- •Пример 5
- •Пример 6:
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение2.
- •Упражнение 3.
- •Контрольные вопросы
- •Теоретические сведения
- •Свойства ЛСС-объекта.
- •Создание и преобразования ЛСС
- •Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Методы Control System Toolbox
- •ЛСС – модели (LTI Models Function)
- •Характеристики моделей (Model Characteristics)
- •Преобразование моделей (Model Conversions Function)
- •Упрощение моделей (Model Order Reduction)
- •Преобразование ss-моделей (State-Space Realizations)
- •Динамические характеристики моделей (Model Dynamics)
- •Соединение моделей (Model Interconnections)
- •Отклики во временной области (Time Responses Function)
- •Частотные характеристики (Frequency Response)
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Упражнение 6.
- •Упражнение 7.
- •Контрольные вопросы
- •13 Интерфейс среды Simulink. Основные блоки.
- •Теоретические сведения
- •Визуальный синтез в частотной области
- •Пример 3
- •Синтез регулятора во временной области
- •Порядок выполнения.
- •Упражнение 1.
- •Упражнение 2.
- •Контрольные вопросы
- •14 Средства физического моделирования в среде Simulink
- •Теоретические сведения
- •Получение дифференциальных уравнений из блок-схемы Simulink
- •Пример 1
- •Пример 2
- •Пример 3
- •Моделирование силовых электрических систем
- •Пример 4
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Упражнение 6.
- •Контрольные вопросы
- •Список литературы
- •Основная литература
- •Дополнительная литература
- •Периодические издания
- •Программное обеспечение и Интернет-ресурсы
- •Методические указания к курсовому проектированию и другим видам самостоятельной работы
Получение дифференциальных уравнений из блок-схемы Simulink
Для этой цели служит функция linmod, которая возвращает четыре матрицы, определяющие модель в пространстве состояний. Для того, чтобы эта функция сработала, нужно, чтобы в модели присутствовали входные и выходные порты. Этим портам будут соответствовать входы и выходы ss-модели.
Пример 1
Пусть мы создали (и обязательно сохранили на диске!) блок-схему под названием model:
После выполнения функции linmod получим следующие матрицы:
>> [A B C D]=linmod('model') A =
0 |
|
0 |
3.0000 |
0 |
-1.0000 |
0 |
|
0 |
1.0000 |
0 |
|
B = |
|
|
|
0 |
|
|
|
1.0000 |
|
|
|
0 |
|
|
|
C = |
|
|
|
1.0000 |
0 |
0 |
|
0 |
|
0 |
3.0000 |
D = |
|
|
|
0 |
|
|
|
0 |
|
|
|
>> |
|
|
|
Из этих матриц теперь можно получить ss-модель с использованием обычного конструктора. Заметьте, что утеряна всякая информация об именах переменных, как входных и выходных, так и переменных состояния. Это, несомненно, некоторый недостаток описываемого инструмента. Впрочем, он преодолим, причѐм не единственным способом. Один из них заключается в получении этой информации обращением к той же функции, но в другой форме:
>> StructInfo=linmod('model') StructInfo =
a:[3x3 double]
b:[3x1 double]
c:[2x3 double]
d:[2x1 double] StateName: {3x1 cell}
OutputName: {2x1 cell} InputName: {'model/Phi'} OperPoint: [1x1 struct]
Ts: 0
>>
Вся разница в том, как задан выходной параметр. В данном случае задана простая переменная, и она оказывается структурой (это такой тип данных), содержащей всю информацию о модели: четыре матрицы (a, b, c, d), имена переменных состояния (StateName), имена входных (InputName) и выходных (OutputName) переменных, шаг дискретизации (Ts). Обратите внимание на имя входной переменной. Оно повторяет имя входного порта с добавлением имени модели (файла с блок-схемой). То же самое относится и к имени выходных переменных:
>> StructInfo.OutputName{:,:} ans =
model/X1 ans = model/X2
>>
Имена переменных состояния совпадают с именами блоков, причѐм если в блоке содержится звено 2-го порядка, то его имя встретится 2 раза.
>>StructInfo.StateName{:,:} ans =
model/Nagruzka ans = model/Obmotka ans = model/Obmotka
>>
Как это ни обидно, но полученная структура не является LTI-объектом и не может быть напрямую преобразована в такой объект с помощью конструктора, хотя имеет практически ту же структуру, те же поля. Это можно сделать только в несколько приѐмов. Например так:
>>S=ss(StructInfo.a, StructInfo.b, StructInfo.c, StructInfo.d);
>>S.StateName=StructInfo.StateName;
>>S.OutputName=StructInfo.OutputName;
>>S.InputName=StructInfo.InputName;
>>S
a =
model/Nagruz model/Obmotk model/Obmotk
model/Nagruz |
0 |
0 |
3 |
model/Obmotk |
0 |
-1 |
0 |
model/Obmotk |
0 |
1 |
0 |
b = |
|
|
|
|
model/Phi |
|
|
model/Nagruz |
0 |
|
|
model/Obmotk |
1 |
|
|
model/Obmotk |
0 |
|
|
c =
model/Nagruz model/Obmotk model/Obmotk
model/X1 |
1 |
0 |
0 |
model/X2 |
0 |
0 |
3 |
d = |
|
|
|
|
model/Phi |
|
|
model/X1 |
0 |
|
|
model/X2 |
0 |
|
|
Continuous-time model.
>>
Вполученной структуре StructInfo есть ещѐ одно поле – OperPoint.
>>StructInfo.OperPoint
ans =
x: [0x1 double]
u:[1x0 double]
t:[]
>>
Это точка линеаризации (Operating Point), о которой стоит поговорить особо. Дело в том, что функция linmod может справиться и с нелинейной моделью, возвратив еѐ линеаризованный вариант.
Пример 2
Пусть теперь мы работаем с нелинейной моделью (ширина мѐртвой зоны составляет ±0.5):
>>SI=linmod('model_N');
>>SI.a
ans =
0 |
0 |
0 |
0 |
-1.0000 |
0 |
0 |
1.0000 |
0 |
>>
Первая строка матрицы А вся состоит из нулей. Это понятно, потому что в нуле зона нечувствительности имеет нулевой наклон, система стала неуправляемой, разорванной. Однако линеаризацию можно произвести в другой точке пространства состояний, которую можно задать вторым параметром функции linmod. Третьим параметром может быть значение входного сигнала (соответствующей размерности).
>>SI=linmod('model_N',[1 1 1],3); >> SI.a
ans =
0 |
0 |
3.0000 |
0 |
-1.0000 |
0 |
0 |
1.0000 |
0 |
>>
Теперь получена та же матрица, что и для линейной системы.
Следует, однако, помнить, что линеаризованная модель имеет совсем другие переменные состояния, чем исходная. Она записана "в отклонениях" от точки линеаризации (Operating Point). Впрочем, если точка линеаризации не указана, то есть совпадает с началом координат, то отклонения и сами координаты совпадают.
Достаточно часто в качестве точки линеаризации выбирают точку равновесия, то есть установившееся состояние (Steady State) системы. Эта точка определяется входным сигналом, который должен быть постоянным. Такую точку равновесия можно, конечно, рассчитать вручную, приравняв нулю все производные в уравнениях системы. Для чего, разумеется, надо иметь эти уравнения. Но можно воспользоваться функцией trim, вычисляющей точки равновесия (Steady State) для Simulink-схемы.