• Краткая инструкция по работе в программе Simulink. И. В. Черных. "Simulink: Инструмент моделирования динамических систем"

    Введение

    Настоящие методическое пособие предназначено для изучения раздела «Автоматика» междисциплинарного комплекса МДК 03.01., дисциплин «Основы автоматика», «Системы автоматического управления»

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

    В первой части инструкции (Часть 1) приведен способ описания систем дифференциальными уравнениями. В следующей части (Часть 2) инструкции будет представлен способ описания систем как совокупности множества передаточных функций.

    Для иллюстрации примера использована версия 7.11 программы MATLAB.

    Работа с другими версиями MATLAB аналогична, за исключением вида «окон».

    Мы постарались максимально упростить инструкцию и в доступной форме показать как можно пользоваться Simulink

    Часть 1. Общие сведения о системе Simulink

    Программа Simulink является приложением к пакету MATLAB.

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

    Основным понятием системы моделирования Simulink является сигнал. По умолчанию, сигналы – это скалярные безразмерные переменные, связывающие компоненты модели. Однако, существуют и специальные сигналы, например электрические, гидравлические, механические и т.д., которые определенным образом описывают конкретное физическое влияние одних элементов моделируемой системы на другие. Компоненты модели – это элементы библиотеки Simulink или другие модели, которые осуществляют изменения сигналов (например, интегрирование, усиление, сложение двух сигналов и т.д.).

    Simulink является достаточно самостоятельным инструментом и при работе с ним совсем не требуется знать сам MATLAB и остальные его приложения. С другой стороны доступ к функциям MATLAB и другим его инструментам остается открытым и их можно использовать в Simulink. Часть входящих в состав пакетов имеет инструменты, встраиваемые в Simulink (например, LTI-Viewer приложения Control System Toolbox – пакета для разработки систем управления).

    Имеются также дополнительные библиотеки блоков для разных областей применения (например, Power System Blockset – моделирование электротехнических устройств, Digital Signal Processing Blockset – набор блоков для разработки цифровых устройств и т.д).

    При работе с Simulink пользователь имеет возможность модернизировать библиотечные блоки, создавать свои собственные, а также составлять новые библиотеки блоков.

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

    (с фиксированным или переменным шагом). В ходе моделирования имеется возможность следить за процессами, происходящими в системе. Для этого используются специальные устройства наблюдения, входящие в состав библиотеки Simulink. Результаты моделирования могут быть представлены в виде графиков или таблиц.

    Преимущество Simulink заключается также в том, что он позволяет пополнять библиотеки блоков с помощью подпрограмм написанных как на языке MATLAB, так и на языках С++, Fortran и Ada.

    Для запуска программы необходимо предварительно запустить пакет MATLAB. Основное окно пакета MATLAB показано на рисунке 1. Там же показана подсказка, появляющаяся в окне при наведении указателя мыши на ярлык Simulink в панели инструментов.

    После открытия основного окна программы MATLAB нужно запустить программу Simulink. Это можно сделать одним из трех способов:

    Рисунок 1- Основное окно программы MATLAB

    ∙ Нажать кнопку (Simulink) на панели инструментов командного окна MATLAB.

    ∙ В командной строке главного окна MATLAB напечатать Simulink и нажать клавишу Enter на клавиатуре.

    ∙ Выполнить команду Open... в меню File и открыть файл модели (mdl - файл).

    Последний вариант удобно использовать для запуска уже готовой и отлаженной модели, когда требуется лишь провести расчеты и ненужно добавлять новые блоки в модель. Использование первого и второго способов приводит к открытию окна библиотеки Simulink (рисунок 2).

    Рисунок 2- Окно библиотеки Simulink.

    Цифрами обозначены: 1 –строка поиска компонентов, 2 – дерево библиотек Simulink, 3 –содержимое библиотеки (разделы или компоненты библиотеки)

    На рисунке 2 выделена основная библиотека Simulink (в левой части окна) и показаны ее разделы (в правой части окна). Библиотека Simulink в MATLAB 2010 содержит следующие основные разделы:

    0. Commonly Used Blocks – часто используемые компоненты из различных разделов основной библиотеки Simulink.

    1. Continuous – компоненты для моделирования систем в непрерывном времени.

    2. Discontinuities – компоненты для моделирования негладких и разрывных нелинейных функций.

    3. Discrete – компоненты для моделирования систем в дискретном времени.

    4. Logic and Bit Operations – компоненты для моделирования ло-

    гических (двоичных) операций.

    5. Lookup Tables – компоненты для моделирования функциональных и табличных зависимостей.

    6. Math Operations – компоненты для моделирования математических операций.

    7. Model Verification – компоненты для тестирования и верификации поведения моделей.

    8. Model-Wide Utilities – вспомогательные компоненты для документирования и линеаризации моделей.

    9. Ports & Subsystems – блоки построения иерархических моделей и подсистем.

    10. Signal Attributes – компоненты для преобразования типов сигналов в моделях.

    11. Signal Routing – компоненты для коммутации и объединения/разъединения сигналов.

    12. Sinks – компоненты для отображения и сохранения сигналов.

    13. Sources – источники сигналов и воздействий.

    14. User-Defined Functions – компоненты для создания пользовательских функций, реализованных на языке MATLAB.

    Список разделов библиотеки Simulink представлен в виде дерева, и правила работы с ним являются общими для списков такого вида:

    ∙ Пиктограмма свернутого узла дерева содержит символ+, а пиктограмма развернутого содержит символ −.

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

    При выборе соответствующего раздела библиотеки в правой части окна отображается его содержимое (рисунок 3).

    Рисунок 3- Компоненты библиотеки Simulink / Continuous.

    Пример построения модели в Simulink

    В качестве примера использования Simulink для моделирования систем рассмотрим отопление в жилом индивидуальном доме. Пусть для простоты, дом состоит из всего лишь одного помещения, в котором установлено отопление суммарной тепловой мощностью 𝑃 . Температура внутри этого дома 𝑇 𝑖 градусов, температура за окном – 𝑇 𝑜 градусов. Нас интересует каким образом изменяется температура 𝑇 𝑖 при изменении мощности 𝑃 (рисунок 4).

    Рисунок 4- Модель отапливаемого помещения по входу-выходу.

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

    параметрами модели является:

    ∙ температура за окном 𝑇 𝑜 – чем меньше она, тем больше тепла

    уходит из дома и тем больше нужна мощность нагревателя, чтобы достичь заданной температуры внутри 𝑇 𝑖 ;

    ∙ качество теплоизоляции – чем хуже теплоизоляция, тем больше тепла выходит наружу;

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

    В теплотехнике существуют множество моделей, с разной степенью точности моделирующие процессы нагревания и охлаждения тел. Далее мы рассмотрим самый простой из них. Для этого необходимо ввести понятие количества теплоты – энергии, необходимой для изменения термодинамического состояния тела (например, температуры). Из курса физики хорошо известно, что для того, чтобы нагреть тело массой 𝑚 и теплоемкостью 𝑐 от температуры 𝑇 1 до 𝑇 2 необходимо затратить количество теплоты 𝑄 , равное

    𝑄 = 𝑐𝑚 (𝑇 2 − 𝑇 1)

    Количество теплоты 𝑄 𝑖 , которое поступает от нагревателя мощностью 𝑃 за время 𝜏 – это просто интеграл по времени:

    𝑄 𝑖 (𝜏 ) =

    Для того, чтобы понять сколько тепла ушло на улицу, необходимо воспользоваться понятием теплового потока 𝑄 0 (t) – количество теплоты, проходящей через поверхность за единицу времени. Если считать, что теплопроводность внутри двух соприкасающихся сред больше, чем теплопроводность между ними, то тепловой поток пропорционален разности их температур:

    𝑄 0 (t)= -k(T i (t)–T 0 )

    𝑄 0 (𝜏 ) = (T i (t)–T 0 )dt

    Запишем уравнение теплового баланса:

    𝑄 = 𝑄 𝑖 + 𝑄 𝑜

    продифференцировав обе части по времени, можно записать дифференциальное уравнение, связывающее динамику изменения температуры 𝑇 𝑖 (𝑡 ) от мощности нагревателя:

    𝑐𝑚 = 𝑘 (𝑇 𝑜 − 𝑇 𝑖 (𝑡 )) + 𝑃 (𝑡 )

    Обозначив коэффициент 𝑐𝑚 = a и разделив переменные для интегрирования, можно записать:

    Последнее выражение – есть простейшая модель процесса теплообмена при отоплении помещения. Рассмотрим как осуществить моделирование этой системы с помощью Simulink.

    Для создания модели в среде Simulink необходимо последовательно выполнить ряд действий.

    Для начала необходимо создать новый файл модели с помощью команды File / New / Model, или используя кнопку на панели инструментов (здесь и далее, с помощью символа /, указаны пункты меню программы, которые необходимо последовательно выбрать для выполнения указанного действия). Вновь созданное окно модели показано на рисунке 5.

    Рисунок 5- Пустое окно модели.

    Далее расположим компоненты библиотеки Simulink в окне модели. Для этого необходимо открыть соответствующий раздел библиотеки (например, Sources – Источники). Далее, указав курсором на требуемый блок и, нажав на левую клавишу мыши, перетащить блок в созданное окно модели. Клавишу мыши нужно держать нажатой.

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

    ∙ в модель необходимо ввести параметр 𝑇 𝑜 , который в начале будет

    константой – используем компонент библиотеки Simulink /Commonly Used Blocks / Constant или Simulink / Sources / Constant (это один и тот же компонент);

    ∙ чтобы получить разность температур 𝑇 𝑜 − 𝑇 𝑖 (𝑡 ) необходимо использовать сумматор (в режиме вычитателя) – компонент библиотеки Simulink / Commonly Used Blocks / Sum или Simulink /

    Math Operations / Sum (также один и тот же компонент);

    ∙ для того, чтобы вычислить произведение разности температур на коэффициент 𝑘 ・ (𝑇 𝑜 − 𝑇 𝑖 (𝑡 )), необходимо использовать блок

    усилитель, поскольку такое произведение равнозначно усилению сигнала разности в 𝑘 раз ставим компонент библиотеки Simulink/ Commonly Used Blocks / Gain или Simulink / Math Operations/ Gain;

    ∙ чтобы получить сумму мощностей 𝑘 (𝑇𝑜 − 𝑇𝑖 (𝑡 )) + 𝑃 (𝑡 ) под интегралом необходимо использовать сумматор – компонент библиотеки Simulink / Commonly Used Blocks / Sum или Simulink /Math Operations / Sum;

    ∙ чтобы получить количество теплоты из суммы мощностей с помощью интегрирования

    𝑇 𝑖 (𝑡 )= (𝑘 (𝑇 𝑜 − 𝑇 𝑖 (𝑡 )) + 𝑃 (𝑡 )) dt

    необходимо использовать интегратор – компонент библиотеки Simulink / Commonly Used Blocks / Integrator или Simulink / Continuous / Integrator;

    ∙ для формирования сигнала внутренней температуры 𝑇 𝑖 (𝑡 ) из интеграла мощности необходимо использовать блок усилитель, домножающий значение интеграла на 1/ 𝑎 – компонент библиотеки

    Simulink / Commonly Used Blocks / Gain или Simulink / Math Operations / Gain;

    Кроме того, нам необходимо визуализировать зависимость 𝑇 𝑖 (𝑡 ), для этого мы используем осциллограф – компонент библиотеки Simulink / Commonly Used Blocks / Scope или Simulink / Sinks / Scope. А также мы задаем зависимость мощности от времени 𝑃 (𝑡 ) как единичный ступенчатый сигнал с помощью компонента библиотеки Simulink /Sources / Step.

    Рисунок 6- Окно модели, содержащее необходимые блоки

    На рисунке 6 показано окно модели, содержащее установленные блоки.

    Для удаления блока необходимо выбрать блок (указать курсором на его изображение и нажать левую клавишу мыши), а затем нажать клавишу Delete на клавиатуре.

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

    Рисунок 7- Блок, моделирующий интегратор и окно редактирования параметров блока

    Следующий шаг – настройка параметров каждого блока. Для этого необходимо дважды щелкнуть левой клавишей мыши, указав курсором на изображение блока. Откроется окно редактирования параметров данного блока. При задании численных параметров следует иметь в виду, что в качестве десятичного разделителя должна использоваться точка, а не запятая. После внесения изменений нужно закрыть окно кнопкой OK. На рисунке 7 в качестве примера показаны блок, моделирующий интегратор и окно редактирования параметров данного блока.

    В рассматриваемой модели необходимо установить следующие параметры блоков:

    ∙ блок Integrator: параметр Initial condition = 20 – интегрирование осуществляется с начальной температуры в помещении 20 градусов;

    ∙ блок Sum1 (нижний из двух сумматоров): List of signs = |+- – превращает сумматор в вычитатель;

    Параметры 𝑎 и 𝑘 модели пока не будем задавать, положив 𝑎 = 1 и 𝑘 = 1. После установки на схеме всех блоков из требуемых библиотек нужно выполнить соединение элементов схемы с помощью сигналов.

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

    С целью удобства понимания модели, можно задать имена не только блокам, но и сигналам. Для этого необходимо дважды щелкнуть по сигналу и ввести имя. Обозначим сигналы, соответствующие переменным 𝑃 , 𝑇 𝑜 , 𝑇 𝑖 , P, T o и T i .

    Схема модели, в которой выполнены все соединения между блоками и их настройка, показана на рисунке 8.

    Рисунок 8- Окончательная схема модели.

    После составления модели необходимо сохранить ее в виде файла на диске, выбрав пункт меню File/Save As... в окне схемы и указа папку и имя файла. При последующем редактировании схемы можно пользоваться пунктом меню File/Save. При повторных запусках программы Simulink загрузка схемы осуществляется с помощью меню File/Open... в окне обозревателя библиотеки или из основного окна MATLAB.

    Запуск моделирования выполняется с помощью выбора пункта меню Simulation/Start или нажатием кнопки с треугольником (воспроизведение) на панели инструментов. Рядом в поле ввода указана продолжительность моделирования системы, по умолчанию моделирование останавливается при достижении модельного времени 𝑡 𝑠𝑡𝑜𝑝 = 10. Процесс расчета можно завершить досрочно, выбрав пункт меню Simulation/Stop или кнопку с квадратом (стоп). Расчет также можно остановить (Simulation/Pause) и затем продолжить (Simulation/Continue).

    Запустим моделирование. После окончания, дважды щелкнем на блок осциллографа (Scope). На нем должна отображается зависимость 𝑇 𝑖 (𝑡 )

    (рисунок 9). Если графика не видно, то необходимо щелкнуть правой кнопкой по черной зоне и выбрать из меню Autoscale, что приведет к автоматическому масштабированию осей графика.

    Рисунок 9- Результат моделирования при 𝑃 = 1.

    Видно, что температура внутри падает от 20 градусов до температуры, которая выше уличной 𝑇 𝑜 = 1, моделируемой блоком Constant.

    Таким образом сказывается действие нагревателя.

    Установим в параметрах блока Step, моделирующего зависимость 𝑃 (𝑡 ), большую мощность нагрева. Блок Step выдает на своем выходе константное значение, задаваемое его параметром Final value, и происходит это во время, задаваемое параметром Step time. До этого момента значение на выходе компонента Step равно 0. Установив параметр Final value = 10, запустим моделирование еще раз. Получим зависимость 𝑇 𝑖 (𝑡 ), показанную на рисунке 10.

    Рисунок 10- Результат моделирования при 𝑃 = 10.

    Отчетливо видно, что температура падает до включения нагревателя при 𝑡 = 1, после чего растет до достижения постоянного значения, соответствующего термодинамическому равновесию между теплом, подводимым нагревателем и отводимым наружу.

    Литература

    1. А. Борисевич, Теория автоматического управления: элементарное введение

    с применением MATLAB , Изд. МГУ, 2011г.

    2. А. Ф. Дащенко, В. Х. Кириллов, Л. В. Коломиец, В. Ф. Оробей

    MATLAB В ИНЖЕНЕРНЫХ И НАУЧНЫХ РАСЧЕТАХ

    Одесса «Астропринт» 2003

    3. В. П. Дьяконов MATLAB 7.*/R2006/R2007 Самоучитель

    Москва, ДМК, 2008


    Для моделирования поведения динамических систем, к которым относятся экипажи подвижного состава, используются ЭВМ. Существует большое количество алгоритмических языков, на которых может быть выполнено решение задачи. Выбор того или иного языка программирования зависит от многих условий. Часто решающую роль оказывает удобство программирования, наличие проверенных математических методов, легкость представления результатов моделирования. Такими особенностями обладает пакет MATLAB, содержащий в своем составе инструмент визуального моделирования SIMULINK.

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

    Подготовка задачи для моделирования в SIMULINK проводится в следующей последовательности:

    Выбор расчетной схемы.
    Составление системы уравнений, описывающих исследуемый процесс.
    Приведение системы к виду, удобному для решения (разрешение относительно старших производных).
    Определение начальных условий.
    Составление структурной схемы.
    Моделирование возмущающих функций.
    Определение исходных данных.
    Составление модели в среде SIMULINK.
    Включение средств визуализации.
    Тестирование.
    Решение.
    Анализ результатов.
    Отчет.

    Ниже рассмотрены примеры моделирования в среде SIMULINK на простых примерах.

    Вертикальные колебания экипажа ЭПС

    Математическая модель вынужденных колебаний двухмассовой системы

    Для исследования влияния основных параметров экипажа на вертикальные колебания используют упрощенную модель с двумя степенями свободы, в которой две массы связаны упругими и диссипативными связями (рис.1). Такая модель описывает вертикальные колебания рельсовых экипажей с двухъярусным подвешиванием: магистральных локомотивов (электровозов и тепловозов) и пассажирских вагонов.

    Рис.1. Расчетная схема

    Уравнения движения рассматриваемой системы при наличии возмущения со стороны пути описывается следующими дифференциальными уравнениями:

    В уравнениях (1) введены следующие обозначения:

    m 1 – обрессоренная масса тележки;

    m 2 – масса кузова, приведенная к одной тележке;

    с 1 , b 1 – жесткость и демпфирование в первом ярусе подвешивания;

    с 2 , b 2 – жесткость и демпфирование во втором ярусе подвешивания;

    h (t ) – возмущение со стороны пути;

    – обобщенные координаты и их производные по времени:

    Преобразуем уравнения движения к виду:

    В качестве возмущения используем неровность проф. Н.Н.Кудрявцева. Неровность хорошо описывает изменение прогиба вдоль рельсового звена. Модель неровности представляет собой сумму полуволны синусоиды частотой w и трех полуволн синусоиды частотой 3w , уложенные на длине рельсового звена L . Амплитуды неровностей A 1 A 2 выбираются в зависимости от типа и состояния пути.

    Частота возмущения;

    V - скорость движения.

    Построим описанную выше модель в среде SIMULINK.

    Модель вынужденных колебаний двухмассовой системы в системе Simulink

    При запуске SIMULINK открываются два окна:

    Пустое рабочее окно – заготовка для создания новой модели (untitled );

    Окно библиотеки SIMULINK, содержащей наборы основных разделов (Library : simulink ).

    Рис. 2. Пример начала работы в SIMULINK

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

    Процесс построения модели в системе Simulink представляет последовательность выбора необходимых блоков из соответствующих библиотек, и соединение их связями.

    Обычно для моделирования динамической системы используют уравнения движения в виде (2).

    Построение модели каждого уравнения начинаем с сумматора, имеющего столько входов, сколько членов содержит правая часть уравнение. Для первого уравнения это сумматор Sum 1 (рис. 3). Входы сумматора могут иметь как положительное значение, так и отрицательное (рис. 4). Используемые блоки рекомендуется именовать для облегчения последующей проверки и анализа.

    Рис. 11. Подсистема, описывающая колебания первого тела

    Рис. 12. Подсистема, описывающая колебания второго тела

    Рис. 13. Настройка запускающей программы

    Подпрограмма задания начальных значений – обычный m -файл. Для данного примера в файле MDYN 21. m задаются следующие значения:

    %MDYN21
    %Start programm
    %
    echo on
    A1=0.005;
    A2=0.002;
    L=25;
    p=pi/L;
    M1=8.82;
    C1=7000;
    B1=60;
    M2=25.8;
    C2=2600;
    B2=125;
    echo off
    x0 = ;
    =sim("mdyn21",10,simset("InitialState",x0));

    В приведенном тексте подпрограммы знак "точка с запятой" в конце строки запрещает вывод значений переменных.

    Для отображения введенных данных применены операторы «echo on – echo off ». Выделенный фрагмент подпрограммы выводится в управляющее окно MATLAB (рис14).

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

    Запуск моделирующей программы в этом примере осуществляется двойным нажатием на блок START .


    Рис. 14. Вывод в окне управляющей программы MATLAB

    Добавим в модель информационный блок, содержащий краткое описание модели – блок Info , обозначенный символом «? ». Содержание блока показано на рис. 15.

    Рис. 15. Информационный блок

    Для отображения фазовой диаграммы введем блок отображения XY _ Graph , обозначенный на блок-схеме "фазовая диаграмма ". Результаты вывода показаны на рис. 16.

    Рис. 16. Результаты моделирования – фазовая диаграмма

    Использование подпрограмм пользователя

    Для расширения возможностей моделирования в среде SIMULINK предусмотрена возможность подключения подпрограмм пользователя написанных на языке MATLAB. В предыдущей модели заменим функции неровности модулем "MATLAB Function " - "Неровность ". Модель определяет ссылку на подпрограмму пользователя, в которой описана функция неровности от пути и ее производная (рис. 17). Такой подход позволяет использовать проверенные модули как при программировании в пакете MATLAB, так и при моделировании в среде SIMULINK.

    Рис. 17. Модель и настройка блока функции MATLAB

    Рассмотренные примеры не претендуют на полноту описания возможностей пакета MATLAB и среду визуального моделирования SIMULINK. Для изучения рекомендуем специальную литературу и руководство пользователя.

    Рубан В.Г. © 2000

    ВВЕДЕНИЕ

    Настоящие методические указания служат пособием для студентов института, выполняющих лабораторные и курсовые работы по теории линейных систем автоматического управления и автоматизированному электроприводу. Целью практикума является закрепление теоретического материала по дифференциальным уравнениям, передаточным функциям, временным и частотным характеристикам звеньев и автоматических систем, их устойчивости, влиянию параметров и структуры систем на показатели качества процессов управления в переходном и установившемся режимах функционирования, исследованию систем с запаздыванием.

    Особенностью данного практикума является его выполнение на персональных компьютерах с использованием системы MATLAB - Simulink, позволяющей автоматизировать процесс анализа систем управления, представленных в виде структурных динамических схем.

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

    ЛАБОРАТОРНАЯ РАБОТА № 1 ИЗУЧЕНИЕ СИСТЕМЫ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ

    MATLAB - SIMULINK

    Цель работы

    Ознакомление с системой MATLAB, приобретение практических навыков исследования систем автоматического управления (САУ) с помощью приложения MATLAB – системой имитационного моделирования Simulink.

    1.1. Основные сведения

    MATLAB - это язык программирования сверхвысокого уровня, предназначенный для технических вычислений. Он включает в себя вычисления, визуализацию и программирование в легкой для использования среде, где задачи и решения представлены в общей математической форме. MATLAB является интерактивной системой, в которой основные элементы данных представлены массивами, не требующими предварительного задания размерности. Это позволяет решать множество технических задач, особенно в матричной и векторной форме, а также писать программу на традиционных скалярных языках, таких как Си или Фортран.

    Название "MATLAB" произошло от сокращения слов "matrix laboratory". Система MATLAB состоит из пяти основных частей:

    1. Язык программирования MATLAB. Это матрично-массивный язык высокого уровня с управлением состоянием, функциями, структурами данных, входом/выходом, и объектно-ориентированным программированием.

    2. Рабочая среда MATLAB. Это графический интерфейс, с которым работает пользователь. Включает рабочий стол MATLAB, командное окно, редактор и отладчик файлов MATLAB, справочный броузер.

    3. Графическая система MATLAB. Содержит команды высокого уровня для двухмерного и трехмерного представления данных, обработки изображений, анимации. Также содержит набор команд низкого уровня, позволяющих пользователю построить собственный интерфейс.

    4. Библиотека математических функций MATLAB. Содержит набор вычислительных алгоритмов, начиная с элементарных арифметических функций (сложение/вычитание, тригонометрические функции) и заканчивая сложными функциями, такими как обращение матриц и преобразования Фурье.

    5. Интерфейс прикладных программ MATLAB. Эта библиотека позволяет писать программы на языках Си и Фортран, взаимодействующие с MATLAB. Включает в себя устройства вызова из MATLAB (динамической связи), вызова MATLAB как вычислительного механизма, и для работы с MAT-файлами.

    Simulink является программой для имитационного моделирования и анализа динамических систем, входящей в состав пакета MATLAB. Simulink позволяет производить построение модели в виде унифицированных блоков на экране компьютера и может работать с линейными, нелинейными, непрерывными, дискретными моделями или их сочетаниями с большим числом переменных.

    1.2. Порядок выполнения работы

    1. Включите компьютер.

    2. Находясь в ОС Windows, запустите MATLAB двойным щелчком левой кнопки "мыши" по соответствующей иконке на рабочем столе. В результате открывается основное окно MATLAB.

    3. Для запуска Simulink нажмите в основном окне MATLAB на кнопку с всплывающей подписью Simulink Library Browser . В результате

    открывается окно библиотеки блоков Simulink.

    4. Для построения новой модели в окне Simulink Library Browser нажмите на кнопку с всплывающей подписьюNew model . Программа откроет

    окно с "чистым листом" без имени (untitled). Для открытия существующей модели в окне библиотеки блоков или в командном окне нажмите на кнопку с всплывающей подписью Open a model , и в появившемся окне выберите

    требуемый файл (файлы, созданные в Simulink, имеют расширение .mdl ).

    5. Создайте структурную схему, приведенную на рис. 1.1 и задайте указанные преподавателем значения ее параметров.

    Рис. 1.1. Структурная схема (а) и модель в Simulink (б) исследуемой системы

    Набор структурной схемы осуществляется путем выбора требуемых блоков в окне Simulink Library Browser и перетаскивания их при

    помощи мыши в окно, где осуществляется построение модели. Для удобства пользования все блоки разделены на группы. В данной лабораторной работе использованы блоки группы Simulink с подгруппамиContinuous

    (непрерывные звенья), Math Operations (математические блоки),Sinks (приемники данных),Sources (источники сигналов). Имена блоков указаны

    на рис. 1.1,б.

    Редактирование параметров блока осуществляется двойным щелчком левой кнопки мыши по требуемому блоку. При этом открывается окно параметров блока, вид которого зависит от вида блока.

    Для соединения блоков достаточно указать курсором мыши на выход блока-источника сигнала и затем при нажатой кнопке мыши протянуть соединение на вход блока-приемника сигнала. Соединение блоков можно также осуществлять выделением левой кнопкой мыши требуемых блоков при нажатой клавишеCtrl . Для создания отвода необходимо указать правой

    кнопкой мыши на место отвода соединения и при нажатой кнопке протянуть отвод на вход требуемого блока.

    Для вывода результатов моделирования к выходам требуемых блоков необходимо присоединить блоки-приемники сигналов (см. п. 9).

    Удаление ненужных блоков и соединений происходит путем выделения соответствующего объекта и нажатия клавиши Delete клавиатуры.

    Дополнительную информацию по построению моделей, а также по работе с MATLAB в целом можно найти в меню Help Desk , а также в .

    6. Сохраните созданную модель.

    7. Задайте параметры для процесса численного интегрирования модели. Для этого в меню окна модели откройте Simulation -Parameters . В

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

    8. Рассчитайте полученную модель. Запуск расчета (интегрирования) модели в меню Simulation кнопкойStart . Процесс расчета модели

    отображается прогрессивной шкалой в нижней части окна. При необходимости

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

    9. По окончании расчета получите требуемые результаты с помощью блоков-приемников данных. Просмотр и печать графиков переходных процессов осуществляется с помощью блокаScope . Просмотр численных

    значений переменной в ходе моделирования осуществляется блоком Display .

    Для редактирования полученных графиков или сохранения их в формате графического файла, необходима установка выходных блоков То Workspace .

    В параметрах этих блоков указывается имя выводимой переменной Variable name и формат данныхSave format (Array) . Далее в командном окне MATLAB или редакторе М-файлов, вызываемого командой менюNew M- file , записывается команда построения графиков. В простейшем случае она

    имеет вид: plot(x,y);

    где x ,y – имена выводимых переменных.

    При построении нескольких графиков в одних осях команда примет вид: plot(x,y,x,z,..);

    где x – имя общей (независимой) переменной,y,z – зависимые переменные.

    Примечание: команды, набранные в командной строке, выполняются после нажатия клавиши Enter . Для выполнения команд, набранных в редакторе М-

    Вывод нескольких переменных в один блок-приемник данных, осуществляется с помощью блока объединения сигналов в общую шинуMux .

    Переменная времени в MATLAB обозначена как tout . После сохранения (редактор генерирует файл с расширением.m ) и запуска программы (командаRun менюTools редактора), последняя строит график в окнеFigure ,

    который может быть обработан имеющимися в меню окна инструментами. Сохранение графика происходит либо как файла с расширением .fig (команда

    Save менюFile окна графика), в этом случае он будет доступен только из MATLAB, либо как графического файла с расширениями.bmp ,.jpg и прочими по выбору (командаExport менюFile окна графика). В последнем

    случае график может быть вставлен в документ отчета по лабораторной работе, написанного, например, в редакторе Word.

    10. Для построения логарифмических частотных и амплитудно-фазовых частотных характеристик (ЛЧХ и АФЧХ) по полиному передаточной функции необходимо в командном окне или в М-файле ввести соответственно команды

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

    случае наличия двух и более коэффициентов в полиноме, последние записываются в квадратных скобках через пробел. Например, для построения

    ЛЧХ колебательного звена с передаточной функции W (p ) = 0,01 p 2 + 5 0,2 р + 1 ,

    необходимо набрать следующую команду: bode(tf(5,));

    Для построения частотных характеристик по модели, в Simulink с помощью блоков In иOut необходимо указать соответственно вход и выход

    линеаризация исследуемой модели и построение её ЛЧХ или АФЧХ. Синтаксис

    Linmod("имя файла модели")

    bode(A,B,C,D) или nyquist(A,B,C,D) grid

    где A ,B ,C ,D – матрицы пространства состояний системы, полученные при выполнении командыlinmod ;grid – команда нанесения на график координатной сетки.

    11. После окончания работы выйдите из MATLAB, закрыв все окна.

    1.3. Содержание отчета по работе

    1. Цель работы.

    2. Схема исследованной системы с числовыми значениями параметров.

    3. Экспериментально полученные графики переходного процесса, ЛЧХ, АФЧХ.

    4. Ответы на контрольные вопросы.

    1.4. Контрольные вопросы

    1. Что из себя представляет система MATLAB и какова область его применения?

    2. С какими видами моделей может работать Simulink?

    3. Каким образом осуществляется построение структурной схемы в Simulink?

    4. Как в Simulink осуществляется ввод и редактирование параметров блоков?

    5. Как в MATLAB осуществляется построение ЛЧХ и АФЧХ системы?

    6. Как осуществляется печать графиков переходных процессов?

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

    ДИНАМИЧЕСКИХ ЗВЕНЬЕВ

    Цель работы Исследование переходной функции, амплитудно-фазовых и

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

    2.1. Основные сведения Типовыми динамическими звеньями САУ являются звенья, процессы в

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

    d 2 y

    a0 y= b2

    d 2 x

    B0 x,

    где x (t ) ,y (t ) - соответственно входной и выходной сигналы звена;a 0 ,a 1 ,a 2 ;b 0 ,b 1 ,b 2 - постоянные коэффициенты.

    Данное уравнение дает возможность определить передаточную функцию типового звена в виде

    W (p )=

    y (p )

    b p2 + b p+ b

    x (p )

    a p2

    a p +

    Анализ возможных вариантов задания коэффициентов передаточной функции (2.2) показывает, что к типовым звеньям нулевого и первого порядка,

    т.е. к звеньям, описываемым уравнениями вида (2.1) при a 2 = b 2 = 0 , относятся следующие

    1. Безынерционное звено (при a 1 = b 1 = 0)

    W (p) = b 0 = k. a0

    2. Дифференцирующее звено (при a 1 = b 0 = 0)

    W (p )=

    b 1 p =

    kp ,

    где k =

    3. Форсирующее звено (при a 1 =

    W (p )=

    b1 p+

    b 0 =

    k (Tp + 1) , гдеk =

    b 1 .

    4. Интегрирующее звено (при a 0

    B 1 =0)

    W (p )=

    где k =

    b 0 .

    Апериодическое звено первого порядка (при b 1 = 0)

    W (p )=

    где k =

    a p +

    Tp + 1

    Реальное дифференцирующее звено (при b 0 = 0)

    W (p )=

    где k =

    a p +

    Tp + 1

    Из типовых

    звеньев второго

    наибольшее применение нашло

    колебательное звено при b 1 =b 2 = 0 с передаточной функцией следующего вида:

    W (p )=

    Где k =

    ; T =

    ; ξ =

    a p + a

    2ξ Tp +1

    Рассмотренная совокупность типовых динамических звеньев первого и второго порядков оказывается достаточной для построения структуры практически любой линейной САУ. При этом сложные реальные звенья могут заменяться последовательным или параллельным соединением нескольких типовых звеньев.

    Временными характеристиками являются взаимосвязанные переходная h (t ) и весовая ω(t ) функции, представляющие собой реакции исследуемых звеньев на типовые воздействия в виде единичной ступенчатой функции 1(t ) и δ –функции δ(t ) . При этом переходная функция дает возможность оценить устойчивость и качество процессов управления, происходящих в исследуемых звеньях при скачкообразных входных воздействиях.

    Частотные характеристики, основанные на использовании преобразования Фурье, позволяют оценить происходящие в звеньях процессы управления не только при скачкообразных, но и при любых других входных сигналах, действующих в реальных условиях.

    При этом любой входной сигнал x (t ) представляется в виде суммы гармоник различных частот с определенными, соответствующими данному сигналу амплитудами и фазами, а реакция на сумму входных гармоник, т.е. выходной сигналy (t ) равен сумме реакций на каждую из них.

    Для отдельной гармоники на входе линейного звена x (t ) = x 0 (ω) × e j ω t

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

    y (t ) = y 0 (ω ) × e j (ωt + ϕ(ω)) .

    Реакция звена на гармоники различных частот характеризуется его комплексным коэффициентом передачи, который представляет собой амплитудно-фазовую частотную характеристику (АФХ) звена определяется следующим образом.

    1. Общие сведения 5
    2. Запуск Simulink 5
    3. Обозреватель разделов библиотеки Simulink 6
    4. Создание модели 8
    5. Окно модели 10
    6. Основные приемы подготовки и редактирования модели 11
    6.1. Добавление текстовых надписей 11
    6.2. Выделение объектов 12
    6.3. Копирование и перемещение объектов в буфер промежуточного хранения 12
    6.4. Вставка объектов из буфера промежуточного хранения 12
    6.5. Удаление объектов 12
    6.6. Соединение блоков 13
    6.7. Изменение размеров блоков 14
    6.8. Перемещение блоков 14
    6.9. Использование команд Undo и Redo 14
    6.10. Форматирование объектов 14
    7. Установка параметров расчета и его выполнение 15
    7.1. Установка параметров расчета модели 15
    7.1.1. Simulation time (Интервал моделирования или время расчета) 15
    7.1.2. Solver options (Параметры расчета) 15
    7.1.3. Output options (Параметры вывода) 16
    7.2. Установка параметров обмена с рабочей областью 16
    7.3. Установка параметров диагностирования модели 18
    7.4. Выполнение расчета 19
    8. Завершение работы 19
    9. Библиотека блоков Simulink 19
    9.1. Sources - источники сигналов 19
    9.1.1. Источник постоянного сигнала Constant 19
    9.1.2. Источник синусоидального сигнала Sine Wave 20
    9.1.3. Источник линейно изменяющегося воздействия Ramp 21
    9.1.4. Генератор ступенчатого сигнала Step 22
    9.1.5. Генератор сигналов Signal Generator 23
    9.1.6. Источник случайного сигнала с равномерным распределением Uniform Random Number 23
    9.1.7. Источник случайного сигнала с нормальным распределением Random Number 24
    9.1.8. Источник импульсного сигнала Pulse Generator 24
    9.1.9. Генератор линейно-изменяющейся частоты Chirp Generator 25
    9.1.10. Генератор белого шума Band-Limited White Noice 25
    9.1.11. Источник временного сигнала Clock 26
    9.1.12. Цифровой источник времени Digital Clock 27
    9.1.13. Блок считывания данных из файла From File 27
    9.1.14. Блок считывания данных из рабочего пространства From Workspace 28
    9.1.15. Блок сигнала нулевого уровня Ground 29
    9.1.16. Блок периодического сигнала Repeating Sequence 29
    9.1.17. Блок входного порта Inport 30
    9.2. Sinks - приемники сигналов 31
    9.2.1. Осциллограф Scope 31
    9.2.2. Осциллограф Floating Scope 36
    9.2.3. Графопостроитель ХУ Graph 37
    9.2.4. Цифровой дисплей Display 38
    9.2.5. Блок остановки моделирования Stop Simulation 39
    9.2.6. Блок сохранения данных в файле То File 40
    9.2.7. Блок сохранения данных в рабочей области То Workspace 40
    9.2.8. Концевой приемник Terminator 41
    9.2.9. Блок выходного порта Outport 41
    9.3. Continuous – аналоговые блоки 43
    9.3.1. Блок вычисления производной Derivative 43
    9.3.2. Интегрирующий блок lntegrator 44
    9.3.3. Блок Memory 48
    9.3.4. Блок фиксированной задержки сигнала Transport Delay 49
    9.3.5. Блок управляемой задержки сигнала Variable Transport Delay 50
    9.3.6 Блок передаточной функции Transfer Fcn 51
    9.3.7. Блок передаточной функции Zero-Pole 53
    9.3.8. Блок модели динамического объекта State-Space 54
    9.4. Discrete – дискретные блоки 55
    9.4.1. Блок единичной дискретной задержки Unit Delay 55
    9.4.2. Блок экстраполятора нулевого порядка Zero-Order Hold 56
    9.4.3. Блок экстраполятора первого порядка First-Order Hold 57
    9.4.4. Блок дискретного интегратора Discrete-Time Integrator 57
    9.4.5. Дискретная передаточная функция Discrete Transfer Fсn 59
    9.4.6. Блок дискретной передаточной функции Discrete Zero-Pole 60
    9.4.7. Блок дискретного фильтра Discrete Filter 61
    9.4.8. Блок модели динамического объекта Discrete State-Space 62
    9.5. Nonlinear - нелинейные блоки 63
    9.5.1. Блок ограничения Saturation 63
    9.5.2. Блок с зоной нечувствительности Dead Zone 64
    9.5.3. Релейный блок Relay 65
    9.5.4. Блок ограничения скорости изменения сигнала Rate Limiter 66
    9.5.5. Блок квантования по уровню Quantizer 67
    9.5.6. Блок сухого и вязкого трения Coulomb and Viscous Friction 68
    9.5.7. Блок люфта Backlash 69
    9.5.8. Блок переключателя Switch 70
    9.5.9. Блок многовходового переключателя Multiport Switch 71
    9.5.10. Блок ручного переключателя Manual Switch 72
    9.6. Math – блоки математических операций 73
    9.6.1. Блок вычисления модуля Abs 73
    9.6.2. Блок вычисления суммы Sum 74
    9.6.3. Блок умножения Product 75
    9.6.4. Блок определения знака сигнала Sign 76
    9.6.5. Усилители Gain и Matrix Gain 77
    9.6.6. Ползунковый регулятор Slider Gain 79
    9.6.7. Блок скалярного умножения Dot Product 80
    9.6.8. Блок вычисления математических функций Math Function 80
    9.6.9. Блок вычисления тригонометрических функций Trigonometric Function 82
    9.6.10. Блок вычисления действительной и (или) мнимой части комплексного числа Complex to Real-Imag 82
    9.6.11. Блок вычисления модуля и (или) аргумена комплексного числа Complex to Magnitude-Angle 83
    9.6.12. Блок вычисления комплексного числа по его действительной и мнимой части Real-Imag to Complex 84
    9.6.13. Блок вычисления комплексного числа по его модулю и аргументу Magnitude-Angle to Complex 85
    9.6.14. Блок определения минимального или максимального значения MinMax 85
    9.6.15. Блок округления числового значения Rounding Function 86
    9.6.16. Блок вычисления операции отношения Relational Operator 87
    9.6.17. Блок логических операций Logical Operation 88
    9.6.18. Блок побитовых логических операций Birwise Logical Operator 89
    9.6.19. Блок комбинаторной логики Gombinatorical Logic90
    9.6.20. Блок алгебраического контура Algebraic Constraint 91
    9.7. Signal&Systems - блоки преобразования сигналов и вспомогательные блоки 92
    9.7.1. Мультиплексор (смеситель) Mux 92
    9.7.2. Демультиплексор (разделитель) Demux 93
    9.7.3. Блок шинного формирователя Bus Creator 95
    9.7.4. Блок шинного селектора Bus Selector 96
    9.7.5. Блок селектора Selector 97
    9.7.6. Блок присвоения новых значений элементам массива Assignment 98
    9.7.7. Блок объединения сигналов Merge 99
    9.7.8. Блок объединения сигналов в матрицу Matrix Concatenation 100
    9.7.9. Блок передачи сигнала Goto 101
    9.7.10. Блок приема сигнала From 102
    9.7.11. Блок признака видимости сигнала Goto Tag Visibility 102
    9.7.12. Блок создания общей области памяти Data Store Memory 103
    9.7.13. Блок записи данных в общую область памяти Data Store 103
    9.7.14. Блок считывания данных из общей области памяти Data Store 103
    9.7.15. Блок преобразования типа сигнала Data Type Conversion 104
    9.7.16. Блок преобразования размерности сигнала Reshape 105
    9.7.17. Блок определения размерности сигнала Width 105
    9.7.18. Блок определения момента пересечения порогового значения Hit Crossing 106
    9.7.19. Блок установки начального значения сигнала IC 107
    9.7.20. Блок проверки сигнала Signal Specification 107
    9.7.21. Датчик свойств сигнала Probe 108
    9.7.22. Блок, задающий количество итераций Function-Call Generator 109
    9.7.23. Информационный блок Model Info 110
    9.8. Function & Tables – блоки функций и таблиц 111
    9.8.1. Блок задания функции Fcn 111
    9.8.2. Блок задания функции MATLAB Fcn 112
    9.8.3. Блок задания степенного многочлена Polynomial 113
    9.8.4. Блок одномерной таблицы Look-Up Table 113
    9.8.5. Блок двумерной таблицы Look-Up Table(2D) 114
    9.8.6. Блок многомерной таблицы Look-Up Table (n-D) 115
    9.8.7. Блок таблицы с прямым доступом Direct Loop-Up Table (n-D) 116
    9.8.8. Блок работы с индексами PreLook-Up Index Search 117
    9.8.9. Блок интерполяции табличной функции Interpolation (n-D) using PreLook-Up 118
    9.9. Subsystem – подсистемы 119
    9.9.1. Виртуальная и монолитная подсистемы Subsystem и Atomic Subsystem 121
    9.9.2. Управляемая уровнем сигнала подсистема Enabled Subsystem 121
    9.9.3. Управляемая фронтом сигнала подсистема Triggered Subsystem 123
    9.9.4. Управляемая уровнем и фронтом сигнала подсистема Enabled and Triggered Subsystem 124
    9.9.5. Управляемая S-функцией подсистема Function-call subsystem 125
    9.9.6. Блок условного оператора If 125
    9.9.7. Блок переключателя Switch Case 126
    9.9.8. Управляемая по условию подсистема Action Subsystem 127
    9.9.9. Управляемая подсистема For Iterator Subsystem 127
    9.9.10. Управляемая подсистема While Iterator Subsystem 129
    9.9.11. Конфигурируемая подсистема Configurable Subsystem 130
    9.10. Маскирование подсистем 131
    9.10.1. Общие сведения 131
    9.10.2. Создание окна параметров 132
    9.10.3. Создание пиктограммы подсистемы 136
    9.10.3.1. Команды вывода текста 137
    9.10.3.2. Команды построения графиков 138
    9.10.3.3. Команды отображения передаточных функций 139
    9.10.3.4. Команды отображения рисунка из графического файла 139
    9.10.3.5. Использование редактора пиктограмм iconedit 140
    9.10.3.6. Создание автоматически обновляемых пиктограмм 141
    9.10.4. Создание справки маскированной подсистемы 142
    9.10.5. Создание динамически обновляемых окон диалога 144
    9.10.6. Управление портами маскированной подсистемы 146
    10. Редактор дифференциальных уравнений DEE 150
    11. Использование Simulink LTI-Viewer для анализа динамических систем 153
    11.1. Работа с Simulink LTI-Viewer 153
    11.2. Настройка с Simulink LTI-Viewer 156
    11.3. Экспорт модели 159
    12. Основные команды MATLAB для управления Simulink-моделью 160
    12.1. add_block 160
    12.2. add_line 161
    12.3. add_param 161
    12.4. bdclose 161
    12.5. bdroot 162
    12.6. close_system 162
    12.7. delete_block 162
    12.8. delete_line 163
    12.9. delete_param 163
    12.10. gcb 163
    12.11. gcs 163
    12.12. find_system 164
    12.13. get_param 166
    12.14. new_system 167
    12.15. open_system 167
    12.16. replace_block 167
    12.17. save_system 168
    12.18. set_param 168
    12.19. simulink 169
    13. Отладчик Simulink моделей 169
    13.1. Графический интерфейс отладчика Simulink моделей 169
    13.1.1. Панель инструментов 170
    13.1.2. Список контрольных точек Break/Display points 171
    13.1.3. Панель задания точек прерывания по условию Break on conditions 171
    13.1.4. Главное окно отладчика 173
    14. Повышение скорости и точности расчетов 177
    14.1. Повышение скорости расчета 178
    14.2. Повышение точности расчета 179
    15. Обзор набора инструментов Simulink Performance Tools 179
    15.1. Simulink Accelerator 180
    15.2. Simulink Model Profiling 180
    15.3. Simulink Model Coverage 181
    15.4. Simulink Model Differencing 182
    16. Simulink-функции 183
    16.1. Блок S-function 184
    16.2. Математическое описание S-функции 184
    16.3. Этапы моделирования 185
    16.4. Callback-методы S-функции 185
    16.5. Основные понятия S-функции 186
    16.6. Создание S-функций на языке MATLAB 187
    16.7. Примеры S-функций языке MATLAB 193
    16.7.1. Простейшая S-функция 193
    16.7.2. Модель непрерывной системы 195
    16.7.3. Модель дискретнойной системы 198
    16.7.4. Модель гибридной системы 202
    16.7.5. Модель дискретной системы с переменным шагом расчета????
    16.7.6. Непрерывная модель электродвигателя постоянного тока независимого возбуждения 206
    16.7.6.1. Математическое описание ДПТ НВ 206
    16.7.6.2. Пример S-функции для ДПТ НВ 208
    16.8. Создание S-функций на языке C с помощью S-Function Builder 212
    16.9. Модернизация S-функций, созданных с помощью S-Function Builder 221
    16.10. Создание S-функций на языке Fortran 239
    Приложение 1. Система меню обозревателя библиотек программы Simulink 244
    Приложение 2. Система меню окна модели 245

    1. Общие сведения

    Программа Simulink является приложением к пакету MATLAB . При моделировании с использованием Simulink реализуется принцип визуального программирования, в соответствии с которым, пользователь на экране из библиотеки стандартных блоков создает модель устройства и осуществляет расчеты. При этом, в отличие от классических способов моделирования, пользователю не нужно досконально изучать язык программирования и численные методы математики, а достаточно общих знаний требующихся при работе на компьютере и, естественно, знаний той предметной области в которой он работает.

    Simulink является достаточно самостоятельным инструментом MATLAB и при работе с ним совсем не требуется знать сам ^ MATLAB и остальные его приложения. С другой стороны доступ к функциям MATLAB и другим его инструментам остается открытым и их можно использовать в Simulink. Часть входящих в состав пакетов имеет инструменты, встраиваемые в Simulink (например, LTI-Viewer приложения Control System Toolbox – пакета для разработки систем управления). Имеются также дополнительные библиотеки блоков для разных областей применения (например, Power System Blockset – моделирование электротехнических устройств, Digital Signal Processing Blockset – набор блоков для разработки цифровых устройств и т.д).

    При работе с Simulink пользователь имеет возможность модернизировать библиотечные блоки, создавать свои собственные, а также составлять новые библиотеки блоков.

    При моделировании пользователь может выбирать метод решения дифференциальных уравнений, а также способ изменения модельного времени (с фиксированным или переменным шагом). В ходе моделирования имеется возможность следить за процессами, происходящими в системе. Для этого используются специальные устройства наблюдения, входящие в состав библиотеки Simulink . Результаты моделирования могут быть представлены в виде графиков или таблиц.

    Преимущество Simulink заключается также в том, что он позволяет пополнять библиотеки блоков с помощью подпрограмм написанных как на языке MATLAB, так и на языках С + +, Fortran и Ada .

    ^ 2. Запуск Simulink

    Для запуска программы необходимо предварительно запустить пакет MATLAB. Основное окно пакета MATLAB показано на Рис. 2.1. Там же показана подсказка появляющаяся в окне при наведении указателя мыши на ярлык Simulink в панели инструментов.

    Рис 2.1. Основное окно программы MATLAB

    После открытия основного окна программы MATLAB нужно запустить программу Simulink. Это можно сделать одним из трех способов:

    Последний вариант удобно использовать для запуска уже готовой и отлаженной модели, когда требуется лишь провести расчеты и не нужно добавлять новые блоки в модель. Использование первого и второго способов приводит к открытию окна обозревателя разделов библиотеки Simulink (рис. 2.2).

    Рис 2.2. Окно обозревателя разделов библиотеки Simulink

    Моделирование механических систем в пакете

    MATLAB – высокоуровневый язык технических расчетов, интерактивная среда разработки алгоритмов и современный инструмент анализа данных.

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

    Simscape – это основная библиотека Simulink для моделирования объектов различной физической природы. Позволяет создавать модели гибридных мультидоменных объектов в виде принципиальных схем, элементов и соединений, реальных физических величин с учетом единиц измерения.

    Simscape служит основой для моделирования в Simulink электросиловых, механических и гидравлических объектов. Библиотека расширяется специализированными пакетами SimMechanics, SimDriveline, SimHydraulics и

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

    Начало работы в Simulink

    При запуске MATLAB перед нами возникает примерно следующее окно:

    Пока что не понятно, как здесь можно что-то сделать, однако это очень полезное окно. К нему мы обязательно вернёмся немного позже, а пока сразу приступим к делу. А первым делом нужно выбрать папку, в которой мы будем работать.

    Нажимаем на троеточие справа от окошка «Current Folder» и выбираем (создаём) первую понравившуюся папку. Наверняка это будет что-то типа C:\Вася\временное11\123\...

    Сразу хочу отметить, что самое интересное в Матлабе и Симулинке – это поиск ошибок. За ним можно проводить ни один месяц, и даже год. Однако ошибки ошибкам рознь… Можно долго и упорно собирать какуюнибудь сложную модель, собрав её, попытаться сохраниться и получить окошко, где в нескольких предложениях описывается содержание ошибки и даже даётся ссылка на более подробный отчёт... В этом случае можно несколько раз пересобрать схему, переустановит матлаб, снести винду, но всё будет бесполезно… А на деле оказывается, что Вы где-то в окне Симулинка просто поставили русскую букву или слово.

    Поэтому, сразу усвоим главное правило –

    MATLAB – русофобская программа. Она не переваривает кириллицу ни в каком виде. Ни в адресе, ни в окнах, ни в переменных, НИГДЕ!

    Поэтому сразу забываем о хранении наших проектов по адресу «C:\Вася\временное11\123\» и выбираем папку что-то типа

    «C:\Vasya\Temp11\123\».

    Отлично, теперь можно начинать работать.

    Нажимаем «File-New-Model». Возникает следующее окошко:

    Отлично, уже что-то более дружелюбное, чем командная строка Матлаба. Интуитивно понятно, что это поле, где нужно что-то рисовать… Т.к. мышкой рисовать не получается, тыкнем на красно-сине-зелёную кнопочку «Library Browser». Откроется библиотека элементов Симулинка:

    У меня до сих пор разбегаются глаза от обилия предлагаемых библиотек. Назначение очень многих из них для меня до сих пор остаются

    загадкой. Мы начнём с самого простого. Соберём схему колебательного звена, посмотрим на переходный процесс при воздействии «ступеньки» и даже на ЛАХ с ЛФХ.

    Для этого нам нужен источник «ступеньки», сама передаточная функция и окошко где мы будем смотреть на переходный процесс.

    Предлагаю найти все эти элементы в библиотеке Simulink так, чтобы получилось что-то вроде этого:

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

    Сейчас постараемся соединить все эти звенья друг с другом. Можно делать это просто тягая мышкой от одной стрелочки к другой, а если надоест, можно просто выделить один блок левой клавишей, потом зажав Ctrl, нажать на другой блок.

    Отлично. Теперь нужно настроить эти блоки один за другим… Про ступеньку и говорить нечего, там всё ясно, оставим всё по дефолту: время начала 1 с, начальное значение 0, конечное значение 1.

    Интереснее с передаточной функцией. Напомню, что мы собирались собрать колебательное звено. Я лично привык видеть его в виде:

    в то время как симулинк требует от нас сразу коэффициенты знаменателя и числителя. Можно, конечно, быстро перемножить на бумажке

    постоянную времени и коэффициент демпфирования, но это не серьёзно… Лучше научимся пользоваться переменными.

    Есть как минимум 2 способа управляться с переменными в симулинке. Я привык вбивать их в командную строку Матлаба, которую мы видели в самом начале. Тогда получится что-то вроде этого:

    Как видно, значения тут же внеслись в Workspace и теперь мы можем свободно вбивать их в любое окошко симулинка и проводить с ними любые операции. Потом можно сохранить их в один файл (Save Workspace as…) и загружать при необходимости.

    Другой вариант – делать то же самое через Model Explorer. Нажимаем на кнопку с изображением лупы рядом с кнопкой «Library Browser» и получаем следующее окно:

    Как видно, здесь имеется не только общий Workspace, но и Workspace непосредственно модели. В общем-то, можно задать все переменные там, и тогда они будут загружаться автоматически вместе с моделью, но я всё же склоняюсь к тому, что глобальные переменные, хранящиеся в отдельном файле – это более правильно. Можете считать меня занудой

    Итак, вбиваем любым способом значения T=0.1 (постоянная времени колебательного звена) и d=0.3 (коэффициент демпфирования).

    Теперь в окошке передаточной функции останется только перемножить всё как нужно:

    Ну всё, теперь можно запустить наконец расчёт. Жмём на «плей», затем на окошко Scope, затем на «атвомасштаб» (бинокль). Самое время проанализировать результат. Получилось что-то похожее на колебательный процесс, который оканчивается примерно через 3 секунды, однако, какой-то угловатый. Ну первым делом уменьшим время моделирования с 10 до 3 секунд (справа от кнопок «плей» и «стоп») и рассмотрим по-ближе:

    На лицо какие-то угловатости, особенно в области пика. Матлаб в командной строке выдал жалобу, мол «выбран дефолтный максимальный шаг столько-то, если на самом деле всё окок, можешь меня заткнуть, нажав туда-то». У нас всё не окок.

    Самое время познакомиться с решателями симулинка. Нажимаем

    «Simulation - Configuration Parameters…»:

    Опять глаза разбегаются от обилия всяких менюшек и полей. Попробуем разобраться. Сейчас нас интересует, прежде всего, решатель (solver). Здесь мы выбираем каким методом будем решать дифференциальные уравнения (да, блоки, которые мы суём в поле симулинка, на самом деле – диффуры  ). Прежде всего, определяемся, что это будет за метод – с постоянным шагом или переменным. Есть мнение, что система диффур любой сложности решается методом Эйлера, путём уменьшения шага Это значит, что если в нашем переходном процессе длительностью 5 секунд, есть момент длительностью 0.1 с, который нужно обсчитывать с шагом 0.1 милисекунду (например, шток гидроцилиндра бьётся об упор), мы оставшиеся 4.9 секунды когда гидроцилиндр спокойно движется, должны будем обсчитывать всё равно с шагом 0.1 милисекунда. Время расчёта в этом случае увеличивается во много раз и для серьёзных задач может превратиться в несколько часов. Поэтому добрые математики придумали алгоритмы с переменным шагом. Т.е. в ответственные моменты решатель решает диффуры, уменьшая шаг настолько насколько это требуется, а когда всё «спокойно», увеличивает шаг, экономя наше время.

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

    Следующее меню – сам решатель. Это вообще - глубокий матан, вникать в него особо не будем, пройдёмся вкратце. Хэлп Матлаба очень

    уж рекомендует решатель ode45. Из приведённых там таблиц следует, что он самый точный. С одной лишь оговоркой. Если наша задача не жёсткая. Под жёсткостью понимается не содержание неимоверной жести в условии, а жёсткость или нежёсткость диффур нашей мат. модели. А между ними в свою очередь грань довольно расплывчатая. Один и тот же диффур может быть как жёстким, так и не жёстким, в зависимости от коэффициентов. В нашем случае – это постоянные времени различных элементов системы. Если они различаются на несколько порядков (как например, постоянная времени хорошего ЭГУ и плохого гидроцилиндра), то скорее всего нежёсткий решатель типа ode45 пойдёт в разнос и выдаст нам мегарасходящийся переходный процесс. В этом случае нужно использовать жёсткие решатели, помеченные буквой s (stiff). Тут наиболее точным является решатель ode15s.

    Резюмируя. Тривиальные задачи решаем с ode45, задачи с элементами системы с заведомо различающимися постоянными времени (то как наши родные гидроприводы), решаем с ode15s. Если ничего не получается, ставим метод Рунге-Кутты 4-го порядка (ode4) с шагом 0.1 мкс и оставляем комп считать на ночь

    Поехали дальше. А дальше всё значительно проще… Нужно всего лишь выбрать максимальный, минимальный и начальные шаги. Вспоминаем, что матлаб жаловался на максимальный шаг, ставим значение 0.001 с для перестраховки. Теперь, даже если решатель вздумает, что ничего сложного на его пути нет, он всё равно будет считать отрезками не больше 1 мс.

    Жмём ок и затем «плэй». Смотрим результат:

    Другое дело. Всё гладенько, да и матлаб больше не жалуется. Можно хоть сейчас вставлять в чьё-нибудь ДЗ

    Ну кстати, сразу пару слов о графиках. Рядом с кнопкой принтера, есть кнопка «Парметры» в которой можно настроить, к примеру, количество осей. В этом случае у окошка Scope появится несколько входов, и графики будут располагаться один под другим. Чтобы расположить несколько графиков на одном, нужно использовать блок Mux

    В этом случае несколько сигналов можно запихнуть в один Scope и в окне они будут отображаться разными цветами.

    Теперь разберёмся как строить логарифмические амплитудные и фазовые характеристики. Делается это при помощи расширения «Control Design» там же в симулинке.