Как сохранить файл симулинк в старой версии

Обновлено: 06.07.2024

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

ВложениеРазмер
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 при создании репозитория

Первый Initial commit создал GitHub Desktop при создании репозитория

Кстати, обратите внимание, что, когда Матлаб понимает, что в текущей папке есть контроль версий, он цветными иконками показывает статус файлов по сравнению с последним коммитом (не изменён, изменён, удален, конфликтует и т. д.). Это одна из фич интеграции MATLAB и Git:

Если вы измените файл, иконка поменяется

Если вы измените файл, иконка поменяется

Теперь поменяем параметры в нашем скрипте:

А в модели поменяем sin на cos. Не забываем сохранить.

Можете внести еще пару любых изменений

Можете внести еще пару любых изменений

Одна из стратегий работы с Гитом (которой не обязательно придерживаться) – делать отдельный коммит на каждое изменение. Так и поступим. Сначала пометим галочкой и закоммитим изменение скрипта, потом также поступим с моделью. История стала интереснее:


Анализ изменений

Теперь посмотрим, как Гит позволяет вспомнить, какие конкретно изменения были когда-то внесены в наш репозиторий.

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


А вот с моделью Симулинк это полноценно не сработает, потому что файл бинарный и Гит не может его расшифровать. Зато Матлаб сможет. В Матлабе кликаем правой кнопкой на модели в окне Current Folder и в меню выбираем Source Control -> Compare to Revision. Выбираем один из старых коммитов и жмем Compare to Local.


Открывается инструмент анализа изменений Simulink-модели. Все изменения показаны в дереве, и вы тут же можете посмотреть, как модель выглядела до и после изменения:


Заключение

Я думаю, этого пока достаточно. Мы рассмотрели самые-самые основы Git, чтобы вы просто могли начать. За кадром остались такие важные вопросы, как откат к старым версиям, отправка репозитория на сервер для совместной работы и не только.

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

Я попытался использовать блок рабочей области для экспорта данных.

enter image description here

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

и я также попытался использовать область и изменить некоторые свойства: проверьте сохранить данные в рабочей области и снимите флажок Limite data to Last.

enter image description here

enter image description here

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

enter image description here

и после этого, я могу использовать ScopeData.сигналы.значения для получения значений.

кто-нибудь знает, как этого добиться?

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

пример of get_param

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

для чтения данных в любой строке вашей модели simulink:

получить объект блока simulink (давайте попробуйте часы с именем часы):

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

вы можете сделать чтение, в обратном вызове таймера.

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

в любое время во время моделирования вы можете заставить Simulink записать выходные данные моделирования в рабочую область:

я обнаружил, что эта команда довольно нестабильна в моем Matlab 2010a для Win64. В частности, я должен избегать этого, когда моделирование остановлено (т. е. первая проверка get_param(bdroot,'SimulationStatus') ), в противном случае Matlab показывает ошибку и просит перезапустить.

Я попытался использовать блок рабочей области для экспорта данных.

enter image description here

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

и я также попытался использовать область и изменить некоторые свойства: проверьте сохранить данные в рабочей области и снимите флажок Limite data to Last.

enter image description here

enter image description here

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

enter image description here

и после этого, я могу использовать ScopeData.сигналы.значения для получения значений.

кто-нибудь знает, как этого добиться?

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

пример of get_param

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

для чтения данных в любой строке вашей модели simulink:

получить объект блока simulink (давайте попробуйте часы с именем часы):

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

вы можете сделать чтение, в обратном вызове таймера.

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

в любое время во время моделирования вы можете заставить Simulink записать выходные данные моделирования в рабочую область:

я обнаружил, что эта команда довольно нестабильна в моем Matlab 2010a для Win64. В частности, я должен избегать этого, когда моделирование остановлено (т. е. первая проверка get_param(bdroot,'SimulationStatus') ), в противном случае Matlab показывает ошибку и просит перезапустить.

Читайте также: