Как создать модель в симулинке по уравнению

Модельно-ориентированное проектирование на коленке, идентификация систем в MATLAB/Simulink

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

Оборудование и программное обеспечение в наличии

    Watchdog Watchduck:

    Выполняет ту же функцию, что и Watchdog timer, но применительно к инженеру — помогает выйти из зависания.

Машина реального времени Speedgoat. Немного проще, нежели на заглавной иллюстрации, примерно такая:

В данном ПК (а это по сути и есть IBM совместимый ПК) присутствуют платы ввода-вывода с аналоговыми, дискретными, и прочими входами и выходами, которые я использую как для сбора данных, так и для управления ходом эксперимента. Но самое главное — я могу одним нажатием запускать на ней модели Simulink в режиме жесткого реального времени. О таких машинках (да простят мне уменьшительно-ласкательное дальнейшее к Ней обращение:-) я много еще могу рассказать. Если интересно — можно выделить для этого отдельный топик.

MATLAB/Simulink

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

  • Двигатель постоянного тока с энкодером и зубчатой передачей от Pololu.Вот такой:
  • Arduino+ Motor Shield от seeedstudio

    Для работы с Arduino из-под Simulink я использую библиотеку Embedded Coder Target for Arduino.
    Эта библиотека позволяет использовать модели Simulink для генерации кода полностью готового к компиляции под данную платформу. Можно использовать также встроенную поддержку Arduino в MATLAB/Simulink, но мне данный таргет более по душе.

  • Макетная плата, проводники, питание и прочая мелочевка
  • На самом деле, любой из представленных компонентов может быть заменён на соответствующий функциональный аналог (кроме утки, конечно!). Но, так как делалось все «на коленке» — то и право выбора остается за владельцем этого важного сустава.

    В собранном виде, если это можно назвать собранностью, все выглядит так:

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

    Есть система — необходимо получить её модель для дальнейшей работы. Проще некуда.
    Поведение системы и её модели должно максимально совпадать в пределах допустимых входных воздействий. Метод «черного ящика» подразумевает, что мы не будем, или почти не будем, принимать во внимание физику процессов внутри системы, а будем рассматривать её с общей точки зрения теории управления.

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

    Целевая система в некотором приближении и с упрощением состоит из следующего набора подсистем:

    • Дискретная подсистема — Arduino
    • Непрерывная механическая подсистема — двигатель
    • Непрерывная электрическая подсистема — Motor Shield

    Вход системы — заданное значение ШИМ 0-100%.
    Еесть возможность изменять скважность ШИМ сигнала, подавая на выход «аналогового» порта Arduino значения uint8 от 0 до 255. Необходимо узнать, как будет реагировать силовая электроника и двигатель на это воздействие.
    Тестовый вектор будет зашит в контроллер, состоит он из 501 элемента и выдается с дискретизацией 0.04с. Итого

    20 секунд тестового воздействия.
    Выглядит тестовый вектор так:

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

    Выход системы — скорость вращения вала, угол поворота вала. С квадратурного энкодера, при вращении вала двигателя, я получаю два меандра со смещением по фазе на pi/2. Их обрабатывает аппаратный декодер, который присутствует на одной из конфигурируемых плат ввода-вывода. При загрузке модели Simulink на машину реального времени происходит «прошивка» ПЛИС (FPGA) для обеспечения требуемых входов/выходов. Тики, с декодера умножаем на коэффициент и превращаем в угол, а скорость изменения их количества в скорость. Энкодер двигателя делает 64 триггирования за один оборот, что позволяет с хорошей точностью отслеживать описанные выше параметры. Основной алгоритм на машине реального времени установлен мною на работу с частотой 10 kHz — на выходе я получаю экспериментальные данные с периодом дискретизации 0,0001с. Аппаратная же часть ПЛИС работает на частоте 33 MHz, что позволяет, помимо основного алгоритма декодирования, успевать применить еще и антидребезговые алгоритмы без ущерба точности измерениям на довольно высоких оборотах. Простыми словами декодирование квадратурного сигнала на FPGA описано в прекрасной статье fpga4fun —> QuadratureDecoder.

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

    Так выглядит ШИМ из Arduino (желтый) и напряжение на чисто резистивной нагрузке, которая подключена к шилду:

    А вот графики при подключенном двигателе в режимах, когда двигатель еще не вращается, и уже вращается:

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

    Модели Simulink

    На машине реального времени я запускаю вот такую модель:

    Структура её крайне проста. Есть блоки для входов, выходов, общие настройки плат ввода-вывода, вывод информации на дисплей машинки и простая внутренняя логика пересчета тиков от квадратурного энкодера в угол и скорость.

    Модель для получения прошивки под Arduino выглядит следующим образом:

    Таблица истинности, которая отслеживает знак сигнала и управляет входами Motor Shield

    Код алгоритма можно посмотреть под спойлером:

    Весь проект можно скачать здесь.

    Модель, которую я буду использовать для проверки результатов:

    Все модели можно скачать здесь.
    «Открыл и запустил» может не сработать, есть нюансы. С вопросами в личку, или в комментарии.

    Видео

    Результаты

    Вот, что получилось в итоге:

    Синий — это входной сигнал с пределами от -255 до +255. В пересчете на вольты будет примерно от -8,5 до 8,5.
    Зеленый — скорость вращения вала двигателя.

    Видим временную задержку, отсутствие вращения, либо крайне малое вращение при подаче ШИМ менее 25%. Также наблюдаем классический апериодический переходной процесс.

    А вот информация, которая выводится во время проведения эксперимента на дисплей, подключенный к машине реального времени:

    Идентификация

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

    Так нам говорит курс ТАУ, с неё мы и начнем.

    В составе MATLAB есть прекрасный инструмент для идентификации систем — System Identification Toolbox. Он доступен как в виде графического интерфейса, так и в виде набора функций, которые можно использовать в скриптах MATLAB. Рассмотрим сперва работу в графическом интерфейсе.

    Импортируем данные, полученные в ходе эксперимента и тестовое воздействие:

    После импорта нам становятся доступны инструменты предварительной обработки данных. Мы имеем возможность, например, разделить массивы данных на две части — для идентификации и отдельно для верификации. Но это для более сложных случаев, давайте же скорее перейдем к делу!

    Выбираем из выпадающего списка «Estimate» пункт Transfer Function Models.

    Получаем передаточную функцию:

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

    Синим отображен отклик передаточной функции на исходный тестовый вектор. Видно, что данную функцию можно использовать как модель исходной системы только в режиме старт-стоп. И не удивительно — нелинейное поведение, которое присутствует в системе, не может быть описано таким способом.

    Продвигаемся дальше, используем шаблон модели Хаммерштейна-Винера, которая дает возможность описывать нелинейное поведение системы:

    В качестве входной нелинейности выберем Dead Zone — отсутствие реакции системы на входной сигнал менее определенного порогового значения. Такой тип нелинейности должен взять на себя описание трения спокойствия и влияния постоянных магнитов, которое имеет место в системе.
    Остальные параметры по умолчанию, жмем Estimate.

    Update#1 по просьбе MichaelBorisov:
    Более подробно настройка нелинейной части выглядит так:

    Для случая с Dead Zone все просто — задаем тип и пороговые значения.

    Настройка линейной части позволяет предварительно указать порядок и оценить задержку:

    Несмотря на то, что это «черный ящик» — на практике получение адекватного результата очень зависит от колличества знаний о системе, которые Вы вложили в конфигурацию расчета.
    endOfUpdate#1 по просьбе MichaelBorisov:

    Сравниваем полученный результат с экспериментальными данными:

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

    Теперь нам остается только экспортировать данную модель в Simulink, где мы можем приступить к разработке системы управления. Но об этом в следующем топике!

    Благодарю за внимание, надеюсь было интересно?
    И еще раз благодарю за ответы на небольшой опрос:

    Краткая инструкция по работе в программе Simulink

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

    Скачать:

    ВложениеРазмер
    kratkaya_instruktsiya_simulink.docx521.87 КБ

    Предварительный просмотр:

    Настоящие методическое пособие предназначено для изучения раздела «Автоматика» междисциплинарного комплекса МДК 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 необходимо затратить количество теплоты 𝑄 , равное

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

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

    𝑄 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;

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

    необходимо использовать интегратор – компонент библиотеки 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 Самоучитель

    Как создать модель в симулинке по уравнению

    И.В.Черных. «Simulink: Инструмент моделирования динамических систем»

    7. Установка параметров расчета и его выполнение

    Перед выполнением расчетов необходимо предварительно задать параметры расчета. Задание параметров расчета выполняется в панели управления меню Simulation/Parameters. Вид панели управления приведен на Рис.7.1.

    Рис 7.1. Панель управления

    Окно настройки параметров расчета имеет 4 вкладки:

    • Solver (Расчет) — Установка параметров расчета модели.
    • Workspace I/O (Ввод/вывод данных в рабочую область) — Установка параметров обмена данными с рабочей областью MATLAB.
    • Diagnostics (Диагностика) — Выбор параметров диагностического режима.
    • Advanced (Дополнительно) — Установка дополнительных параметров.

    Установка параметров расчета модели выполняется с помощью элементов управления, размещенных на вкладке Solver. Эти элементы разделены на три группы (рис. 7.1): Simulation time (Интервал моделирования или, иными словами, время расчета), Solver options (Параметры расчета), Output options (Параметры вывода).

    7.1. Установка параметров расчета модели

    7.1.1. Simulation time (Интервал моделирования или время расчета)

    Время расчета задается указанием начального (Start time) и конечного (Stop time) значений времени расчета. Начальное время, как правило, задается равным нулю. Величина конечного времени задается пользователем исходя из условий решаемой задачи.

    7.1.2. Solver options (Параметры расчета)

    При выборе параметров расчета необходимо указать способ моделирования (Type) и метод расчета нового состояния системы. Для параметра Type доступны два варианта — c фиксированным (Fixed-step) или с переменным (Variable-step) шагом. Как правило, Variable-step используется для моделирования непрерывных систем, a Fixed-step — для дискретных.

    Список методов расчета нового состояния системы содержит несколько вариантов. Первый вариант (discrete) используется для расчета дискретных систем. Остальные методы используются для расчета непрерывных систем. Эти методы различны для переменного (Variable-step) и для фиксированного (Fixed-step) шага времени, но, по сути, представляют собой процедуры решения систем дифференциальных уравнений. Подробное описание каждого из методов расчета состояний системы приведено во встроенной справочной системе MATLAB.

    Ниже двух раскрывающихся списков Type находится область, содержимое которой меняется зависимости от выбранного способа изменения модельного времени. При выборе Fixedstep в данной области появляется текстовое поле Fixed-step size (величина фиксированного шага) позволяющее указывать величину шага моделирования (см. рис. 7.2). Величина шага моделирования по умолчанию устанавливается системой автоматически (auto). Требуемая величина шага может быть введена вместо значения auto либо в форме числа, либо в виде вычисляемого выражения (то же самое относится и ко всем параметрам устанавливаемым системой автоматически).

    Рис 7.2. Вкладка Solver при выборе фиксированного шага расчета

    При выборе Fixedstep необходимо также задать режим расчета (Mode). Для параметра Mode доступны три варианта:

    • MultiTasking (Многозадачный) – необходимо использовать, если в модели присутствуют параллельно работающие подсистемы, и результат работы модели зависит от временных параметров этих подсистем. Режим позволяет выявить несоответствие скорости и дискретности сигналов, пересылаемых блоками друг другу.
    • SingleTasking (Однозадачный) — используется для тех моделей, в которых недостаточно строгая синхронизация работы отдельных составляющих не влияет на конечный результат моделирования.
    • Auto (Автоматический выбор режима) — позволяет Simulink автоматически устанавливать режим MultiTasking для тех моделей, в которых используются блоки с различными скоростями передачи сигналов и режим SingleTasking для моделей, в которых содержатся блоки, оперирующие одинаковыми скоростями.

    При выборе Variable-step в области появляются поля для установки трех параметров:

    • Мах step size — максимальный шаг расчета. По умолчанию он устанавливается автоматически (auto) и его значение в этом случае равно (SfopTimeStartTime)/50. Довольно часто это значение оказывается слишком большим, и наблюдаемые графики представляют собой ломаные (а не плавные) линии. В этом случае величину максимального шага расчета необходимо задавать явным образом.
    • Мin step size — минимальный шаг расчета.
    • Initial step size — начальное значение шага моделирования.

    При моделировании непрерывных систем с использованием переменного шага необходимо указать точность вычислений: относительную (Relative tolerance) и абсолютную (Absolute tolerance). По умолчанию они равны соответственно 10 -3 и auto.

    7.1.3. Output options (Параметры вывода)

    В нижней части вкладки Solver задаются настройки параметров вывода выходных сигналов моделируемой системы (Output options). Для данного параметра возможен выбор одного из трех вариантов:

    • Refine output (Скорректированный вывод) – позволяет изменять дискретность регистрации модельного времени и тех сигналов, которые сохраняются в рабочей области MATLAB с помощью блока То Workspace. Установка величины дискретности выполняется в строке редактирования Refine factor, расположенной справа. По умолчанию зна чение Refine factor равно 1, это означает, что регистрация производится с шагом D t = 1 (то есть для каждого значения модельного времени:). Если задать Refine factor равеным 2, это означает, что будет регистрироваться каждое второе значение сигналов, 3 — каждое третье т. д. Параметр Refine factor может принимать только целые положительные значения
    • Produce additional output (Дополнительный вывод) — обеспечивает дополнительную регистрацию параметров модели в заданные моменты времени; их значения вводятся в строке редактирования (в этом случае она называется Output times) в виде списка, заключенного в квадратные скобки. При использовании этого варианта базовый шаг регистрации (D t) равен 1. Значения времени в списке Output times могут быть дробными числами и иметь любую точность.
    • Produce specified output only (Формировать только заданный вывод) — устанавливает вывод параметров модели только в заданные моменты времени, которые указываются в поле Output times (Моменты времени вывода).

    7.2. Установка параметров обмена с рабочей областью

    Элементы, позволяющие управлять вводом и выводом в рабочую область MATLAB промежуточных данных и результатов моделирования, расположены на вкладке Workspace I/O (рис. 7.3).

    Рис 7.3. Вкладка Workspace I/O диалогового окна установки параметров моделирования

    Элементы вкладки разделены на 3 поля:

    • Load from workspace (Загрузить из рабочей области). Если флажок Input (Входные данные) установлен, то в расположенном справа текстовом поле можно ввести формат данных, которые будут считываться из рабочей области MATLAB. Установка флажка Initial State (Начальное состояние) позволяет ввести в связанном с ним текстовом поле имя переменной, содержащей параметры начального состояния модели. Данные, указанные в полях Input и Initial State, передаются в исполняемую модель посредством одного или более блоков In (из раздела библиотеки Sources).
    • Save to workspace (Записать в рабочую область) – Позволяет установить режим вывода значений сигналов в рабочую область MATLAB и задать их имена.
    • Save options (Параметры записи) – Задает количество строк при передаче переменных в рабочую область. Если флажок Limit rows to last установлен, то в поле ввода можно указать количество передаваемых строк (отсчет строк производится от момента завершения расчета). Если флажок не установлен, то передаются все данные. Параметр Decimation (Исключение) задает шаг записи переменных в рабочую область (аналогично параметру Refine factor вкладки Solver). Параметр Format (формат данных) задает формат передаваемых в рабочую область данных. Доступные форматы Array (Массив), Structure (Структура), Structure With Time (Структура с дополнительным полем – “время”).

    7.3. Установка параметров диагностирования модели

    Вкладка Diagnostics (рис. 7.4) позволяет изменять перечень диагностических сообщений, выводимых Simulink в командном окне MATLAB, а также устанавливать дополнительные параметры диагностики модели.

    Сообщения об ошибках или проблемных ситуациях, обнаруженных Simulink в ходе моделирования и требующих вмешательства разработчика выводятся в командном окне MATLAB. Исходный перечень таких ситуаций и вид реакции на них приведен в списке на вкладке Diagnostics. Разработчик может указать вид реакции на каждое из них, используя группу переключателей в поле Action (они становятся доступны, если в списке выбрано одно из событий):

    • None — игнорировать,
    • Warning -— выдать предупреждение и продолжить моделирование,
    • Error — выдать сообщение об ошибке и остановить сеанс моделирования.

    Выбранный вид реакции отображается в списке рядом с наименованием события.

    Рис 7.4. Вкладка Diagnostics окна установки параметров моделирования

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


    источники:

    http://nsportal.ru/vuz/tekhnicheskie-nauki/library/2014/07/01/kratkaya-instruktsiya-po-rabote-v-programme-simulink

    http://lokan.narod.ru/7.asp.htm