Не открывает файлы simulink
Полезна для преподавателей и студентов, делающих первые шаги в программе. Программа позволяет моделировать переходные процессы в любых системах, в том числе в системах автоматики.
Вложение | Размер |
---|---|
kratkaya_instruktsiya_simulink.docx | 521.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.
∙ Пиктограмма свернутого узла дерева содержит символ+, а пиктограмма развернутого содержит символ −.
∙ Для того чтобы развернуть или свернуть узел дерева, достаточно щелкнуть на его пиктограмме левой клавишей мыши.
При выборе соответствующего раздела библиотеки в правой части окна отображается его содержимое (рисунок 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.
После составления модели необходимо сохранить ее в виде файла на диске, выбрав пункт меню 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 заточена под людей, которые не обязательно являются профессиональными программистами, – математиков, инженеров, аналитиков и даже студентов.
С одной стороны, это большой плюс – люди просто решают свою прикладные задачи без заморочек с выбором библиотек, архитектурой ПО и прочим ООП.
С другой стороны, часто можно наблюдать, что, находясь в песочнице Матлаба, люди оказываются оторваны от мира «большого программирования» со своими устоявшимися подходами и инструментами.
Понятно, что не всем условным математикам нравится глубоко в это все погружаться. Но при этом мне очень досадно наблюдать, как суровые инженеры, которые программируют микроконтроллеры для самонаводящихся ракет, не могут даже настроить систему контроля версий, не говоря уже об автоматизированном тестировании и прочих девопсах.
В этой статье я хочу показать инженерам, как можно без боли контролировать изменения скриптов MATLAB и моделей Simulink. А также попытаюсь донести матлаберам, не знакомым с системой контроля версий (а таких большинство), что для них это необходимый инструмент на каждый день.
Что такое «система контроля версий»?
Это отдельная бесплатная программа, которая работает вместе с MATLAB и сохраняет всю историю того, что вы изменяли в своем проекте: какой добавляли код, как изменяли настройки модели и т. д.
Самая популярная и мощная называется Git, сегодня будем говорить о ней.
Чтобы ваш проект не выглядел так
Бардак и боль
Намного комфортнее хранить старые версии моделей и кода где-то в истории изменений, чем в куче в одной папке. Ведь вы на следующий же день забываете, какой именно файл актуальный и почему нельзя удалять старые. Контроль версий – самый удобный способ превратить проект из помойки во что-то понятное и приятное.
Нет, не все. Только с системой контроля версий вы сможете нормально работать над одним проектом всей командой. Вы имеете полную историю изменений всех файлов проекта. Вы видите кто, когда и что конкретно изменил.
А еще без этого вы в принципе не сможете полноценно автоматизировать тестирование и использовать прочие прелести из мира DevOps.
Наконец, работа с системой контроля версий – это один из самых базовых и необходимых навыков, если вы захотите перейти в IT-отрасль или серьезную зарубежную компанию.
А для студентов, которые наше все, это вообще мастхэв – стыдно не владеть Гитом в 2021.
Не очень, за вечер можно освоить базу. Если вы совсем не знаете, что такое Git, то уйдет пара вечеров. Хорошая новость – в Гугле и на Ютубе вы найдете тонны материалов, где все объясняют на пальцах.
Предупреждение
Когда вы более-менее освоитесь с контролем версий и Git, то по-другому вы не сможете и на захотите работать в принципе. При создании каждого нового проекта вы первым делом будете добавлять его в Git. Вы перетащите все старые проекты в Git. Вы научите коллег работать в Git. Вы будете вспоминать старые времена как свои темные века.
Я сам все это проходил. И многие коллеги проходили. Поэтому я и пишу об этом так уверенно.
Итак, я постарался максимально вас мотивировать, чтобы вы смогли преодолеть тот небольшой порог, с которым сейчас столкнетесь. К делу.
Установка GitHub Desktop
Предположим, что MATLAB у вас уже установлен. Осталось научить его контролю версий с помощью Git.
И если вы еще не в курсе, то знайте, что сам Git – это консольная утилита, то есть работать с ним нужно из черного окна терминала. Поэтому все уроки по Гиту, что вы найдете в интернете, изобилуют разными командами.
Хорошая новость в том, что сегодня мы писать команды не будем и обойдемся исключительно возможностями Матлаба и еще одного специального приложения с функционалом Git.
Этого вам хватит, чтобы войти в тему и освоить самые базовые принципы контроля версий. Ну а продолжив освоение, вы в любом случае установите Git и освоите парочку команд, без этого никуда.
А пока что мы скачаем так называемый Git GUI-клиент. Подобных приложений создано десятки, если не сотни. Их задача – позволить вам работать с Гитом быстро и удобно с помощью мышки и без командной строки.
Моим любимым Git-приложением является GitHub Desktop. Оно сильно упрощает работу с Гитом и делает ее приятной рутиной. Оно красивое, удобное и без излишеств. Я пользуюсь им буквально каждый день и вам советую.
Честно говоря, я сомневаюсь, что до сих пор остались люди, которые работают с Гитом на десктопе исключительно из командной строки (а если и есть, то они меня пугают 😨).
Скачиваем GitHub Desktop с официального сайта и устанавливаем. Для начала пропускаем этап, связанный с созданием аккаунта, а затем вводим свое имя и почту (эти данные нужны для Гита и никуда не передаются, пока вы сами не захотите).
Итак, у нас установлены MATLAB и GitHub Desktop. Пора внедрить контроль версий в наш проект.
Создание репозитория
Repository переводится как «хранилище». В Гите репозиторием называется папка, в которой хранится ваш проект (код, модели, данные…) плюс полная история изменений всех файлов проекта.
Давайте сначала создадим пустой Git-репозиторий, а затем перенесем в него проект. Для создания нового репо используем GitHub Desktop. Выбираем File -> New Repository… и затем обязательно вводим название новой папки проекта MyProject, а также указываем путь родительской папки, в которой будет создана папка проекта (например, папка Документы\MATLAB):
Открываем созданную папку в Матлабе и видим там какой-то непонятный файл .gitattributes:
Это служебный файл Гита, который для нас создал GitHub Desktop. Подобные файлы используют, чтобы тонко настроить репозиторий и то, как Гит с ним работает. В нашем случае .gitattributes не особо нужен, но трогать его не будем, чтобы не запутаться.
Тут у вас возникает вопрос: а что тогда делает нашу обычную пустую папку MyProject Гит-репозиторием, который будет хранить все изменения?
Ответ: наличие скрытой директории .git, которая также автоматом создалась в нашей папке. Именно в ней и будет храниться вся история изменений. Лазить в эту папку лишний раз не стоит, менять в ней что-то вручную нельзя, удалять – тем более, потеряете всю историю. Просто знайте, что она существует и делает всю работу, хоть вы ее и не видите:
Мы ее не видим, а она есть, только вы ее не трогайте
Дальнейшие действия вы можете выполнять для любого своего проекта MATLAB/Simulink. Просто выберите проект и скопируйте все его файлы в MyProject.
Я же для наглядности создам простейший проект с нуля, чтобы не отвлекать вас от сути.
Для начала создаем простейший скрипт sin_params.m, допустим, с параметрами модели:
И простейшую Симулинк-модель sin_model.slx:
Итак, мы имеем не что иное, как локальный репозиторий Git с нашим проектом. Осталось добавить ему истории!
Учёт изменений
Теперь посмотрим, как вы будете работать с Git каждый день.
Переходим в GitHub Desktop, в котором уже открыта наша папка с проектом. Это приложение скорее всего будет запущено у вас постоянно вместе с Матлабом.
Мы видим, что изменилось в вашем проекте – добавилось аж 6 новых файлов! При этом полезных из них только два – скрипт и модель, остальные файлы временные, их создал Симулинк для ускорения симуляции.
Новые файлы в репозитории
Примем простое правило: всякие временные и прочие левые файлы в историю изменений добавлять не надо. Добавляйте только те файлы, которые вы разрабатываете. А чтобы остальные не мешались, сразу добавим их в игнор Гита. Для этого выберем в меню Repository -> Repository settings…, в окошке выбираем Ignored files и вводим в текстовое поле следующее:
Теперь Гит не будет обращать внимания на всю папку slprj и файлы с расширением slxc. А в списке добавленных файлов мы видим скрипт, модель и новый файл .gitignore, в котором и хранится список игнорируемых файлов.
Теперь давайте зафиксируем наши изменения проекта в истории. Как вы видите в списке, из изменений у нас – создание трех новых файлов.
В терминологии Гита фиксация любых изменений называется «коммит» (commit). Поэтому вместо «зафиксировать изменения» будем говорить просто «закоммитить», привыкайте.
Итак, галочками уже отмечены изменения, которые хотим закоммитить. Осталось придумать им ёмкое описание. Например, напишем: «Добавил скрипт с параметрами и модель». Что писать и на каком языке – решайте сами. Только помните, что названия коммитов помогут и пригодятся вам в будущем, потому не пишите откровенную ерунду.
Описание коммита при желании тоже можете добавить
После этого жмём кнопку Commit и тем самым сохраняем наши изменения в истории. На сами файлы проекта это никак не влияет. Просто изменения сохранены куда-то в недра в папки .git.
Теперь полюбуемся нашим коммитом в истории изменений на вкладке Commits. Вы можете посмотреть название коммита и что конкретно было изменено. Такое исследование истории никак не влияет на файлы проекта и не изменяет их. Считайте, что вы просто читаете логи.
Первый Initial commit создал GitHub Desktop при создании репозитория
Кстати, обратите внимание, что, когда Матлаб понимает, что в текущей папке есть контроль версий, он цветными иконками показывает статус файлов по сравнению с последним коммитом (не изменён, изменён, удален, конфликтует и т. д.). Это одна из фич интеграции MATLAB и Git:
Если вы измените файл, иконка поменяется
Теперь поменяем параметры в нашем скрипте:
А в модели поменяем sin на cos. Не забываем сохранить.
Можете внести еще пару любых изменений
Одна из стратегий работы с Гитом (которой не обязательно придерживаться) – делать отдельный коммит на каждое изменение. Так и поступим. Сначала пометим галочкой и закоммитим изменение скрипта, потом также поступим с моделью. История стала интереснее:
Анализ изменений
Теперь посмотрим, как Гит позволяет вспомнить, какие конкретно изменения были когда-то внесены в наш репозиторий.
Для этого выделим коммит, в котором мы меняли параметры, и приложение тут же показывает нам, что конкретно в этом текстовом файле поменялось:
А вот с моделью Симулинк это полноценно не сработает, потому что файл бинарный и Гит не может его расшифровать. Зато Матлаб сможет. В Матлабе кликаем правой кнопкой на модели в окне Current Folder и в меню выбираем Source Control -> Compare to Revision. Выбираем один из старых коммитов и жмем Compare to Local.
Открывается инструмент анализа изменений Simulink-модели. Все изменения показаны в дереве, и вы тут же можете посмотреть, как модель выглядела до и после изменения:
Заключение
Я думаю, этого пока достаточно. Мы рассмотрели самые-самые основы Git, чтобы вы просто могли начать. За кадром остались такие важные вопросы, как откат к старым версиям, отправка репозитория на сервер для совместной работы и не только.
Мы поговорим о них следующих статьях, если эта тема вам зайдет. Так что не стесняйтесь задавать вопросы в комментариях, делиться опытом и ставить плюсики. Спасибо за прочтение, все материалы можете скачать по ссылке.
Использование современных программных средств, таких как Matlab/Simulink, позволяет существенно упростить анализ различных сложных систем. Скрипты Matlab позволяют в автоматическом режиме запускать схемы Simulink с изменением различных параметров.
Пройдите наш онлайн-курс по MATLAB/SIMULINK. Там вы научитесь пользоваться MATLAB как мощным калькулятором, создавать свои модели в SIMULINK, моделировать электрические цепи, а также сложные электроэнергетические системы с устройствами релейной защиты.
Такая задача может появиться, к примеру, при построении амплитудно-частотной характеристики (АЧХ) некоторого фильтра. Если фильтр достаточно сложный, то его аналитическое описание не всегда представляется возможным. В таком случае прибегают к численным методам анализа.
Simulink позволяет представить рассматриваемый фильтр в виде совокупности элементов, из которого он состоит, и сымитировать его работу при подаче на него определённого входного сигнала, например, напряжения.
Известно, что АЧХ представляет собой характеристику, описывающую амплитуду выходного сигнала в зависимости от входного при различных частотах. То есть для её построения необходимо изменять частоту входного сигнала при неизменной амплитуде и измерять амплитуду выходного сигнала. Это итерационная процедура, которая может быть автоматизирована.
Рассмотрим простейший фильтр, представленный на рис. 1. Параметры фильтра R = 1 Ом, L = 10 мГн, C = 400 мкФ.
Рис. 1. Исследуемый фильтр
Для построения АЧХ необходимо при известной амплитуде входного напряжения Uвх измерять амплитуду выходного напряжения Uвых при различных частотах входного напряжения и формировать замер
Для этого в Simulink собрана схема, представленная на рис. 2. Сама модель в Simulink: circuit.mdl.
Рис. 2. Схема в Simulink для построения АЧХ фильтра
Таким образом, схему по рис. 2 необходимо прогонять определённое число раз, при этом изменяя частоту источника ЭДС и измеряя выходное напряжение с помощью вольтметра Voltage. Для этого воспользуемся следующим скриптом Matlab (сам скрип вы можете скачать: simulink_start.m):
Для автоматического задания параметров элементов модели в Simulink в Matlab используется функция set_param . Для запуска моделирования используется функция sim . После окончания работы скрипта формируется АЧХ, представленная на рис. 3.
Рис. 3. АЧХ исследуемого фильтра
Итак, в статье представлен пример использования запуска модели в Simulink с помощью скрипта в Matlab для построения АЧХ фильтра.
Рекомендуемые записи
Using modern software tools, such as Matlab / Simulink, can significantly simplify the analysis of…
The Matlab / Simulink software package allows you to simulate not only electrical networks, but…
Программный комплекс Matlab/Simulink позволяет моделировать не только электрические сети, но и многое другое, в том…
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Я супер новичок в моделях Simulink и системах управления. У меня есть модель .slx Simulink для системы динамики дронов. Он принимает два входа (roll cmd, pitch cmd) и выводит скорость x, скорость y, положение x и положение y.
Отсюда кажется, что я могу открыть систему, позвонив
Но как мне поместить входные данные и получить выходные значения? Есть ли способ, которым я могу сделать это в графическом интерфейсе?
РЕДАКТИРОВАТЬ: Вот полный макет моей модели:
Я получил предупреждение:
Как получить выходные данные с номерами портов? Я попытался
[vx, vy, px, py] = sim ('SimpleDroneDynamics.slx');
И получил ошибку, сказав
- Есть ли способ непрерывной подачи входных данных на каждом временном шаге? Будучи модулем контроллера, я думаю, что должен вводить разные значения в зависимости от выходного положения и скорости.
EDIT2: я использую Matlab2017a
2 ответа
Прежде всего, в модели Simulink используется основное рабочее пространство Matlab. Таким образом, вы можете изменить значения переменных в командном окне (или просто в вашем скрипте) и запустить модель Simulink.
Есть несколько способов инициализации этой константы для Simulink. Еще один полезный способ - создать скрипт, содержащий все ваши переменные, и загрузить его при запуске модели Simulink. Вы можете сделать это, добавив имя скрипта в Simulink / Model Explorer / Callbacks. (Существуют разные обратные вызовы - при загрузке, при запуске и т. Д.). Подробнее об этом читайте: здесь.
Теперь вы можете запустить симуляцию, используя функцию sim :
name_of_model должен содержать путь, если модель не находится в активной папке MATLAB (активную папку вы можете увидеть в окне matlab прямо под главным меню).
Существуют различные свойства функции sim , прочтите о них в справке, это может быть полезно для вас. Кстати, вы можете изменить некоторые параметры вашей модели, используя sim . Вы даже можете найти любой блок в вашей модели и изменить его свойства. Подробнее о sim и о поиск текущих блоков. Интересно, что последнее решение даст вам возможность изменять параметры во время симуляции!
О получении вывода. После запуска симуляции вы получаете переменную tout в основном рабочем пространстве. Это массив временных шагов. Но если вы добавите блок вывода (как на моем изображении), вы также получить другую переменную в рабочей области yout . yout - это наборы данных. Он содержит все ваши выходные значения. Для 2-х аутпортов например:
Получить значения любого из аутпортов:
это тип данных временного ряда, поэтому:
yout.get(1).Values.Time - дать вам время
yout.get(2).Values.Data - каждый раз выдаю вам значения этого вида
У нас есть еще один метод для получения выходных значений:
он возвращает двойные массивы. t - временной массив, y - матрица всех выходных значений (она уже двойная и содержит только значения без времени, но для каждого времени моделирования!)
Так что теперь вы можете создавать общий графический интерфейс Matlab и работать с этими переменными! Нет никаких сложностей. Вы можете прочитать больше о графическом интерфейсе для Simulink .
О первых двух пунктах вашего вопроса:
В Simulink .
- Для входных данных вы можете использовать постоянный блок, а если дважды щелкнуть входной блок, вы можете назначить значение, которое может быть переменной рабочей области.
Чтобы получить выходные данные в ваше рабочее пространство, вы можете использовать блок simout (убедитесь, что вы сохранили формат в массив).
Подключите входы к вашей модели Simulink
Подключите выходы вашей модели Simulink к блокам Simout.
Сценарий MATLAB
О третьем пункте вашего вопроса
Вы можете определить продолжительность вашего моделирования в редакторе блок-схем. Вы можете поместить переменную, которая определена в вызывающем скрипте. Есть несколько способов получения зависящих от времени входных переменных:
Один вариант, который я лично не рекомендую, это использовать цикл for и вызывать модель simulink с разными значениями roll и pitch .
Второй и более эффективный подход заключается в замене постоянных блоков на другие исходные блоки, такие как сигналы линейного изменения или синусоидальные сигналы.
Читайте также: