125 Использование пакета SIMULINK/MATLAB для построения S-функций систем управления

ВВЕДЕНИЕ

 

Одним из важных достоинств пакета Simulink /MATLAB [1,2,4] является возможность расширения набора образующих его стандартных блоков, другими словами, возможность разработки пользовательских блоков. Несмотря на то, что библиотека стандартных блоков этого пакета достаточно велика, так велика, что некоторые из авторов учебных курсов и справочников полагают, что и нет смысла дополнять этот набор, по нашему мнению, такое суждение не имеет серьезных оснований. Наше убеждение основано прежде всего на том, что, во-первых, каждая новая версия пакета Simulink/MATLAB пополняется целым рядом новых стандартных блоков, во-вторых, упомянутые авторы по-видимому не разрабатывали моделей оригинальных систем. Поэтому им кажется, что все уже сделано. Однако каждая оригинальная задача показывает:  необходимо иметь новые пользовательские блоки для ее решения.

В учебном пособии приводятся основные сведения о технологии разработки  пользовательских блоков с помощью инструментария, входящего в состав пакета Simulink /MATLAB. При этом предполагается, что читатель хотя бы поверхостно знаком с языком программирования С [6,7], на котором написано большинство программ, положенных  в основу построения пользовательских блоков.

 

1. МОДЕЛИРОВАНИЕ В ПАКЕТЕ Simulink /MATLAB

 

Прежде чем переходить к решению проблем, связанных с построением пользовательских блоков, в этой главе остановимся вкратце на принципах работы Simulink/MATLAB. Применительно к моделированию систем автоматического управления блок-схема (модель), построенная в этом пакете, представляет собой, образно говоря, “живую” структурную схему системы. Место звеньев, включенных в структурную схему [5], в блок-схеме занимают статические и динамические блоки. В процессе динамического моделирования (симуляции) Simulink преобразовывает сигналы, поступающие на каждый из блоков и на систему в целом в соответствии с математической моделью этих блоков. С точки зрения математической модели все звенья системы принадлежат двум видам математических моделей, которые описываются дифференциальными и разностными уравнениями. Отсюда все блоки моделей систем автоматического управления можно разделить на непрерывные и дискретные блоки.

 

1.1. Непрерывные динамические блоки

 

Непрерывный динамический блок Simulink − графический символ непрерывного элемента системы управления (или самой непрерывной системы), описываемого уравнениями в переменных состояния

 

(1)

(2)

Первое из этих уравнений является векторным дифференциальным уравнением состояния, а второе − векторным или матричным алгебраическим уравнением выхода. Здесь  − n-вектор состояния, − r-вектор или (r×k) - матрица входа, − l-вектор или (l×q) - матрица выхода, и  − в общем случае нелинейные вектор-функции. Символы n, r, l определяют размерность векторов состояния, входа и выхода соответственно.

Непрерывный динамический блок Simulink можно рассматривать как графический символ системной (машинной) программы, позволяющей при заданном входе  и начальном состоянии :  а) вычислять производную вектора   состояния  ,  другими  словами,      правую часть     уравнения (1);

б) интегрировать   уравнение (1),   т.е.    определять   вектор   состояния    ;

в) наконец, решать алгебраическое уравнение выхода (2), т.е. находить результат моделирования.

При разработке такой встроенной в Simulink/MATLAB системной программы большое значение имеют атрибуты входа и выхода, т.е. атрибуты входного и выходного сигналов блока. При этом играет роль, к какому типу относятся эти сигналы, т.е. являются ли они а) вещественными или комплексными (числовой тип данных), б) векторными (одноразмерными 1D) или матричными (двухразмерными 2D), в) int8, int12, int32, double, single (машинный тип данных).

Программа моделирования непрерывного динамического блока предусматривает численное интегрирование уравнения состояния (1). Для этой цели служат специальные функции  MATLAB [1,3],  так называемые  решатели

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

Сущность численного интегрирования уравнения (1) сводится в простейшем случае (при использовании метода Эйлера) к аппроксимации уравнения (1) на интервале моделирования  векторным разностным уравнением

 

(3)

 

где  − шаг моделирования (интегрирования),  − последовательность входа,  − последовательность состояния, − число шагов моделирования.

Разностное уравнение (3) дает приближенное решение дифференциального уравнения состояния (1), причем точность решения зависит от выбора шага моделирования, чем меньше шаг моделирования, тем выше точность решения при прочих равных условиях. Однако при этом увеличивается время моделирования. Меню Simulink [1,3] дает возможность выбора постоянного или переменного значения шага моделирования. Рекомендуется использовать решатель с переменным шагом моделирования, который уменьшает величину , если скорость изменения состояния увеличивается, и увеличивает значение   при уменьшении скорости изменения состояния. При этом в ряде случаев общее время моделирования оказывается даже меньше, чем при фиксированном шаге моделирования за счет уменьшения общего числа шагов. Заметим, что установленный интервал моделирования не равняется машинному  времени, требуемому для нахождения значений вектора  для

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

После вычисления значений вектора   или,    как принято     говорить в Simulink,     после вычисления     производной        вектора состояния (calculate derivatives)

 

решается алгебраическое  уравнение

 

,                           (4)

 

соответствующее уравнению выхода (2).  Здесь − последовательность выхода. В Simulink процесс вычисления значений называется вычислением выхода (calculate output).

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

 

 

 

Заметим, что в Simulink шаг моделирования непрерывного блока называется периодом дискретизации непрерывного блока (continuous sample time), а состояние ─ состоянием непрерывного блока (continuous state).

 

1.2. Дискретные динамические блоки

Дискретный динамический блок Simulink − графический символ дискретного элемента системы управления (дискретного фильтра), описываемого уравнениями в переменных состояния

 

(5)

.             (6)

 

Первое из этих уравнений является векторным разностным уравнением состояния, связывающим будущее значение вектора состояния  дискретного блока с его текущим состоянием  и текущим значением последовательности входа . Заметим, что в Simulink вектор состояния  дискретного блока называется discrete state. Второе из этих уравнений представляет собой алгебраическое уравнение выхода, решение которого дает выходную последовательность .  Период , с которым считываются  выходные значения,  называется периодом дискретизации дискретного блока (discrete sample time). Значение этого периода выбирается пользователем в отличие от периода дискретизации непрерывного блока, который устанавливается и изменяется автоматически самим Simulink.

Здесь − число шагов моделирования дискретного блока в интервале моделирования ,  и − в общем случае нелинейные вектор- функции. Процесс решения уравнения (5), т.е. определение будущего значения  вектора состояния дискретного блока по известным значениям  и , называется в Simulink обновлением (модификацией) состояния дискретного блока (update discrete states). Заметим, что сигнал на выходе дискретного блока в блок-схеме Simulink носит кусочно-постоянный  (“ящичный”) характер, т.е. вместо последовательности на выходе имеет место сигнал, описываемый выражением

 

Период дискретизации дискретного блока, как правило, значительно больше периода дискретизации непрерывных блоков, т.е. . Поэтому в Simulink принято называть основным (главным) периодом дискретизации (шагом моделирования) (major time step), а  вспомогательным (малым) периодом дискретизации  (minor time step).

 

 

1.3. Статические  блоки

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

(7)

Здесь    -   выход,  а   u − вход статического    блока,  -  в общем  случае нелинейная  вектор-функция.

Для статических блоков характерно то, что они не имеют состояния, т.е. являются блоками без памяти, а также то, что им присущ неявный период дискретизации. Последнее замечание означает, что статические блоки наследуют период дискретизации от блоков, выходные сигналы которых поступают на вход этих статических блоков. Так, если  на вход  статического блока подается выходной сигнал какого-либо дискретного блока с периодом дискретизации  , то выходной сигнал статического блока также является дискретным с тем же периодом дискретизации ,т.е. . Если же вход статического блока  связан с выходом непрерывного блока с периодом дискретизации , то выходной сигнал этого статического блока имеет тот же самый период дискретизации . Таким образом, статический блок имеет, как говорят, унаследованный период дискретизации (inherited sample time).

 

1.4. Дополнительная классификация блоков

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

 

1.4.1. Блоки с диалоговым окном параметров

 

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

 

 

 

 

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

1.4.2. Блоки с прямой связью

 

В зависимости от вида уравнения выхода все блоки в Simulink можно разделить на блоки без прямой связи и блоки с прямой связью (блоки input feedthrou).

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

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

 

1.5. Блок-схемы (модели) систем управления

Блок-схемы (модели) систем управления разделяются на  1) блок-схемы непрерывных систем управления, которые состоят лишь из статических и непрерывных динамических  блоков, 2) блок-схемы дискретных систем управления, включающих только статические и дискретные динамические   блоки, 3) блок-схемы гибридных (цифровых) систем управления, которые содержат как непрерывные, так и дискретные динамические и статические блоки. Рассмотрим некоторые аспекты динамического моделирования (симуляции) моделей гибридных систем управления.

 

1.6. Динамическое моделирование блок-схем систем управления

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

Динамическое моделирование включает в себя две стадии: стадию инициализации модели и стадию исполнения модели [стадию вычисления всех переменных величин (выходов и состояний) для блоков и модели в целом]. В течение стадии инициализации Simulink:

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

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

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

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

В каждый главный шаг моделирования Simulink:

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

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

 

2. ПРОГРАММИРОВАНИЕ S-ФУНКЦИИ НА ЯЗЫКЕ С

 

Simulink дает вам возможность создавать библиотеки пользовательских блоков, которые вы можете затем применять в ваших моделях. Имеются два способа построения пользовательского блока - графический и программный, т.е. с помощью написания программы. Чтобы создать пользовательский блок графическим способом, т.е. с помощью модельного окна, применяют стандартные блоки Simulink, из которых образуют подсистему (составной блок), реализующую требования, предъявляемые к поведению создаваемого пользовательского блока [2,4].

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

Новые версии Simulink, а именно Simulink 4.1 и  Simulink 4.5 [2], содержат специальный Разработчик S-функции, называемый S-Function Builder и позволяющий автоматизировать работу по написанию рутинных составляющих S-функции. В этой главе мы остановимся на создании S-функции с помощью кодовых инструкций, не прибегая к помощи S-Function Builder.