Особняком держится подход, когда у нас уже есть описание объекта управления, просто он выполнен в виде кода или модели в другой среде. Но мы хотим перенести его в Engee, чтобы продолжить разработку системы управления. С помощью специальных блоков Engee Function и C Function можно интегрировать код на языках Julia и C, MATLAB и Fortran. А блок fmu позволит интегрировать в Engee целые модели из других сред в формате fmu с помощью интерфейса fmi.
И теперь при каких-либо изменениях, например изменим момент инерции нагрузки или добавим трение на валу, нам не составит труда изменить модель. Тем более параметры заданы здесь переменными, и их можно задавать, например, из скрипта. Здесь как раз проявляется то удобство совместной работы скриптов и моделей, о которой я говорила в начале. Уточнить и усложнить модель, сделав её нелинейной, можно, добавив блоки из раздела «нелинейные».
Но описание объекта управления дифференциальными уравнениями — довольно трудоёмкая задача. Особенно если объект достаточно сложен и парой уравнений тут уже не обойтись. В таком случае для описания объекта управления больше подойдёт физическое моделирование. В этом случае модель объекта управления собирается из блоков, которые соответствуют реальным физическим компонентам. Для двигателя, например, это инерция, сопротивление и индуктивность обмотки и так далее. То есть уравнения уже вшиты внутрь каждого блока, и вам о них уже не нужно думать. Этот подход идеален как в случае, если вы хотите быстро набросать объект управления, чтобы проверить какую-либо гипотезу, так и для разработки сложных систем, учитывающих множество процессов и ограничений.
Плюс в том, что инженер наглядно видит, что происходит в модели. Помимо механики и электричества, в Engee есть обширные библиотеки блоков для моделирования физических систем разной природы. В том числе гидравлические и пневматические агрегаты, магнитные процессы, тепловые эффекты и многое другое. Библиотека действительно большая и пополняется с каждым релизом. Кроме физических блоков, привычных для пользователей MATLAB Simscape, появились блоки, повторяющие функционал Amesim. Блоки протестированы на соответствие блокам Amesim и показывают довольно высокую точность. Поэтому вы можете переносить свои наработки из других сред в Engee, сохраняя привычную точность.
Если и этого мало, допустим, в вашей схеме должен быть уникальный компонент, которого нет среди сотен физических блоков. Это тоже не проблема, ведь в Engee есть язык физического моделирования — инструмент, позволяющий создавать свои собственные физические блоки.
По уравнениям мы можем собрать модель объекта любой сложности. К примеру, здесь открыта модель двигателя постоянного тока.
Основной блок для моделирования систем с непрерывными состояниями — это «Интегратор». Он интегрирует входящий в него сигнал. А основной блок для моделирования систем с дискретными состояниями — это «Запаздывание на шаг». Он задерживает входной сигнал на один шаг дискретизации.
Аналогично, всё начинается с описания системы уравнениями дифференциальными, если мы имеем дело с непрерывной системой или разностными, если объект дискретный. И далее по ним составляется модель. «Направленной» она здесь названа, так как каждый блок имеет вход и выход. Каждый блок определяется математической взаимосвязью между его входами, выходами, параметрами и переменными состояния.
В этом примере данные были получены из эксперимента и записаны в таблицу. Первый столбец таблицы — частота. Второй — частотный отклик. Выше в кодовой ячейке данные из таблицы как раз экспортируются и обрабатываются.
Линейные стационарные объекты имеют преимущество в том, что они просты и позволяют легко проводить анализ системы. Но если ваша система нелинейная или нестационарная, то эти объекты уже не подойдут. Кроме того, если в вашем объекте управления что-либо изменится, то придётся пересматривать всю передаточную функцию или любой другой объект заново. Поэтому для описания систем чаще обращаются к созданию моделей из отдельных блоков.
Модель частотной характеристики содержит набор дискретизированных измерений частотной характеристики системы. Эту модель создаёт функция frd. Первый аргумент — это комплексная переменная, описывающая амплитуду и фазу отклика. Второй аргумент задаёт частоты, на которых был измерен отклик. Обычно они получаются путём сбора экспериментальных данных или моделирования.
В Engee доступна ещё одна форма линейных стационарных объектов — частотная передаточная функция. Она задаётся с помощью наборов частот и комплексных чисел, выражающих реакцию системы на этих частотах. Это удобный способ хранить данные частотные характеристики системы для визуализации или использования в расчётах. Частотная передаточная функция доступна в библиотеке EngeeControlSystems.
И наконец, объект в форме пространств состояний создаётся с помощью функции ss. Её аргументами являются матрицы A, B, C и D. В блоке непрерывных и дискретных пространств состояний можно также задать эти матрицы в виде переменных рабочей области. Также обратите внимание, что можно переходить из одной формы линейно-стационарного объекта в другую.
И аналогично можно создавать такую систему через заранее созданную переменную s. Соответствующие блоки также можно найти и в разделе «Непрерывные», и в разделе «Дискретные».
Ещё один довольно удобный способ, когда мы отдельно задаём s как переменную и затем используем её в расчётах. В моделях блок передаточной функции находится в разделе «Непрерывные» и для дискретной передаточной функции в разделе «Дискретные».
Кликнув на блок, вы легко можете настроить параметры передаточной функции. Конечно сюда можно писать не только численные значения, но и переменные, которые можно задать из командной строки или скрипта. Для создания системы в форме нулей и полюсов используется функция zpk. Её аргументы — нули, полюса, коэффициент усиления системы и в случае дискретной системы — период дискретизации.
Передаточную функцию можно создать с помощью функции tf. Аргументами являются числитель и знаменатель передаточной функции. Если нужна дискретная передаточная функция, то третьим аргументом указывается период дискретизации.
Такими линейными стационарными объектами могут быть передаточные функции, передаточные функции в форме нулей полюсов или модели в пространстве состояний. Использовать их можно как в виде блоков, так и кодом. Чтобы создавать линейные стационарные объекты в скриптах, нужно подключить библиотеку Julia ControlSystemsBase.
Проектирование системы управления начинается с математического описания объекта управления. Знакомый всем инженерам систем управления способ — это, исходя из физических принципов, описать систему уравнениями. Далее, пользуясь преобразованием Лапласа или Z-преобразованием, перейти к одной из форм линейных стационарных объектов.