Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОДЕЛИРОВАНИЕ ПРОЦЕССОВ И СИСТЕМ / Консп_лекц_МПиС_бак_очн_14г(нужно от 16 стр.).doc
Скачиваний:
118
Добавлен:
21.03.2016
Размер:
2.3 Mб
Скачать

9.3. Matlab

Система MATLABявляется системой моделирования, ориентированной на работу с различными массивами данных - скалярами, векторами, двумерными матрицами и многомерными массивами. Это одновременно и операционная среда, и (свой) язык программирования. Допускает обращение к программам, написанным на других языках -FORTRAN,ADA, С и С++.

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

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

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

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

Базовым разделом данного программного пакета является MATLAB. Он содержит описание универсальногоMATLAB-языка программирования интерпретирующего типа, методологию программирования и программные и графические средства, упрощающие разработку, отладку и тестирование программ. Кроме этого разделMATLABсодержит интерфейсное программное средствоThe MATLABNotebook, позволяющее создать посредством пакетаMicrosoftWordинтерактивные текстовые продукты (М-книги), связанные со средойMATLAB.

MATLAB-язык является объектно-ориентированным. Все классы языкаMATLABпо программным признакам делятся на две основные группы -ValueиHandle. Первые отличаются свойствами обычных переменных, копии которых являются независимыми. Для вторых любые копии являются ссылками на один и тот же соответствующий исходный образец.

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

Подсистема Simulink - интерактивная среда для имитационного моделирования и анализа широкого класса статических и динамических процессов, использующая графический язык блок-диаграмм. Предоставляет возможность моделирования процессов в непрерывных, дискретных, событийных и гибридных динамических системах (понятие "непрерывная система" – общепринятое, с априорной установкой системного времени и использованием методов численного интегрирования; дискретные модели основаны на предварительном расчете модельного времени без элементов численного интегрирования; события представляют собой скачкообразные изменения состояний модели). Включает в себя библиотеку блоков (непрерывные и дискретные, линейные и нелинейные элементы, математические функции, источники и приемники сигналов, специальные блоки), которые можно использовать для создания новых систем и информационных технологий. Позволяет объединять блок-диаграммы в составные блоки (SubSystem). Содержит средства для создания блоков и библиотек, определяемых пользователем.Simulink-модели оформляются в виде файлов с расширениемmdl. Все сигналы, циркулирующие в блоках и моделируемых системах, являются информационными, посколькуне копируютфизические аналоги.

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

Библиотечный Simulink-блок представляет собой систему типа вход-выход-состояние (иногда только вход или выход) и может быть как простым, так и составным. С точки зрения объектно-ориентированной структуры каждый блок библиотеки является классом, а блок модели - экземпляром класса. В этом экземпляре пользователь может задавать свои параметры в зависимости от требований, предъявляемых к моделируемой системе и её процессам.

Общемодельные параметры задаются путем вызова окна Simulinkв строке инструментов модели. При этом необходимо задать время работы модели, тип решателя, шаг времени и ряд других элементов. В пакетеSimulinkразличают два способа задания модельного времени: с переменным (Variable-Step) и постоянным (Fixed-Step) шагами. В первом случае производится адаптация шага в зависимости от скорости протекания процессов.

Для реализации гибридного поведения модели в пакете Simulinkпредусмотрены специальные средства, реагирующие на особые события и вырабатывающие специальные сигналы. К этим средствам относятся блокиEnable(доступен),Trigger(скачок) иHitCrossing(локализация момента смены знака). Первый реагирует на появление у переменной отрицательных значений и отключает блок, внутри которого он расположен, до тех пор, пока значение переменной опять не станет положительным. Второй имеет два входа и реагирует на "скачок", подаваемый на специальный вход, запоминая при этом значение переменной, подаваемой на второй ход. Третий способен найти значение времени, при котором входной сигнал принимает нулевое значение, и выдать соответствующий сигнал.

Пример статической системы. Предположим, что интересующая нас информация находится в Интернете на одном из двухWeb-узлов - Сайт 1 и Сайт 2. Результаты поиска нужно отобразить. Все данные (результат анализа сайтов и факты сообщений) имеют бинарные значения - 1, 0. Число различных выборок - 4. Составим таблицу 1 информационных состояний.

Таблица 1

Наличие нужной информации

Факт сообщения

Сайт 1

Сайт 2

0

0

1

0

1

1

1

0

1

1

1

1

Осуществим ручной ввод (нет развертки во времени) данных с помощью блоков-источников постоянных величин (Constant). Таких блоков нужно два - по числу источников информации (Сайт 1 -Siti1, Сайт 2 -Siti2). Для первой выборки необходимо в поле параметров этих блоков ввести соответственно числа 0, 0. Набор состояний пользователя Интернета легко описывается блокомCombinatorialLogic. В поле параметров этого блока укажем по два входных набора и одинвыходной (всего четыре тройки чисел): [0 0 1;0 1 1;1 0 1;1 1 1], отобразив таким образом результаты поиска и факт сообщения. В качестве приемника сообщений выберем блок цифровых дисплеев - два дисплея для отображения входных данных, один - для вывода факта сообщения. Так как такой совокупности дисплеев нет в библиотекеSimulink, необходимо перенести библиотечный блокDisplayв модель, заказать его характеристики и увеличить блок по высоте. В этом случае при первом запуске модели на выполнение в поле блокаDisplayавтоматически появятся все три дисплея (так как выход блокаCombinatorialLogic- вектор). Поскольку информация от двух источников передается через одного пользователя, потребуется также блок мультиплексораMux(рис. 9.3).

0

0

0

Сайт 1

Constant

. . .

. . .

Сайт 1

0

1

Факт сообщения

Combinatorial Logic

Mux

Constant 1

Display

Рис. 9.3

Вводя любые входные наборы, можно последовательно исследовать реакцию модели для четырех выборок.

Для визуального упрощения сложных Simulink-моделей, кромеSubSystem, в определенных случаях целесообразно использовать маскированные подсистемы (MaskSubsystem), куда помещают часть всей модели и которые нельзя увидеть на блок-диаграмме. Это обычные блокиSubSystem, которые введены вSimulink-модели из библиотеки и обработаны редактором маски (MaskEditor). Для запуска последнего необходимо в менюEditокна блок-диаграммыSimulinkвыбрать командуMaskSubsystem.

Пример динамической системы с непрерывным временем.Проведем формирование, периодическую выборку и наблюдение гармонического информационного сигнала в следующей системе – рис. 9.4. Формирование гармонического сигнала на рис. 9.4 осуществляется блокомSineWave, периодическая выборка и запоминание – блокомZero-OrderHold, наблюдение – осциллографомScope.

Рис. 9.4

Блок SineWaveберется в библиотекеSimulinkиз разделаSources,Zero-OrderHold– из разделаDiscrete, аScope– из разделаSinks. После переноса блоков на модельное полеUntitledпроизводят их соединение и установку параметров: амплитуды, периода дискретизации (выборки), времени наблюдения, числа входов осциллографа и ряд других. Можно использовать параметры, уже приписанные блокам по умолчанию. В непрерывности системы можно убедиться по данным установочного поляSimulink-модели: по умолчанию использован метод интегрирования (решатель)ode45. Технологический алгоритм изменения времени модели –Variable-step(переменный щаг). Минимальный интервал дискретизации (SampleTime) в непрерывном блокеSineWaveустановлен равным нулю. Шаг выборки в дискретном блокеZero-OrderHold– постоянный и равен одной секунде.

Подсистема Stateflow. Представляет собой разновидность технологического информационного алгоритма, основанного на картах состояния Харела. Расширяет возможностиSimulink, предоставляя вместе с ним возможность моделирования гибридных или сложных событийно-управляемых систем. Созданные пользователями пакетаSimulinkмодели при этом рассматриваются как объекты, закон управления которыми реализуется вStateflow. Для этого вStateflowразрабатывают диаграммы состояний исходнойSimulink-модели и добавляют интерфейс событий и данных; после отладки системы производится генерация программного кода.

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

Основные элементы карты состояний - это состояние (state) и переход (transition). Каждое состояние описывает один режим работы событийно-управляемой системы. Состояние становится активным, если получает значение "истина" условие перехода (срабатывает переход), ведущего к нему, или если это состояние является начальным. Каждое состояние на диаграммеStateflowимеет "родителя", которым, по умолчанию, является сама диаграммаStateflow. Графическое состояние выбирают на инструментальной панели и переносят на то место, где его нужно разместить. Состояние имеет текстовые метки, которые определяют действия, выполняемые во время его активности. Состояние, которое может быть активным, только если активно состояние, называемое его родителем, называется подсостоянием. Подсостояние создается в поле родительского состояния. Состояние с его подсостояниями можно сгруппировать в единое целое. Допустимы параллельные активные состояния.

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

Переменные(Data) вStateflow- это неграфические объекты на диаграмме. Переменные могут быть входными, выходными, локальными, константами, существующими только в определенные отрезки времени, в рабочем пространствеMATLAB, импортируемые от внешних источников, экспортируемые во внешние приемники. Тип переменных задается выбором соответствующего меню в окне диаграммы состояний.

События- это неграфические объекты на диаграммеStateflow, управляющие диаграммой. Все события, имеющие отношение к диаграмме, должны быть определены. Различают входные, выходные, локальные, импортируемые и экспортируемые события. События также создаются выбором меню в поле диаграммStateflow.

Теоретической основой построения и исследования моделей в среде Stateflowявляется теория конечных автоматов, поэтому проще всего создаватьStateflow-модели, заменяя блокиCombinatorialLogic(содержат таблицы истинности) вSimulink-модели наStateflow-диаграммы.

Пример. Рассмотрим снова модель рис. 9.3. Состояния системы определяются поведением пользователя Интернета. Поэтому заменим блокCombinatorialLogicновымStateflow-блокомChart(в исходном состоянии этот блок не имеет входных и выходных портов)- рис. 9.5.

0

0

Constant

0

Mux

Constant 1

Chart

Display

Рис. 9.5

Опишем интерфейс блока Chartс блок-диаграммойSimulink-модели. Описание элементов интерфейса самого блокаChartвыполняется с помощью графического редактораStateflow(вызывается с поля блокаChart), а для описания элементов интерфейса сSimulinkнеобходимо открыть менюAddполя инструментов редактора. Так как потребуются два порта, следует также открыть строкуDataв менюAdd, где выберем команду Input from Simulink, а затем Output to Simulink. Воткрывающихся последовательно окнах надо определить имя передаваемых данных, их формат, диапазон значений и т. д. Для входа выберем имяInternet, для выхода -Action(рис. 9.6).

0

0

Internet Action

Chart

0

Mux

Constant

Constant 1

Display

Рис. 9.6

Технология разработки самой Stateflow-диаграммы в блокеChartосновывается на инструментарииStateflow-редактора. ПримерStateflow-диаграммы дан на рис. 9.7, гдеV1,V2 - переменные, определяющие условия чтения данных из источников; малые прямоугольники - состояния (State); большие прямоугольники - состояния-родители; кружок - признак альтернатив ы (ConnectiveJunction); линии связи - переходы (Transition, без надписей - по умолчанию -Default

V1V2

V2 V1

Рис. 9.7

Transition);V1V2,V2V1- метки-условия. После отладки диаграммы средствами графического редактора она может быть запущена. Для этого необходимо в менюToolsредактора выбрать командуOpenSimulationTargetBuilder(построитель целевого программного кода имитации) и в открывшемся окне задействовать кнопкуCoderOptions. После установки флагаEnableDebugging/Animation(разрешение анимации при отладке) в менюToolsредактора выбрать командуDebug(отладка) и в открывшемся окнеStateflowDebuggingустановить переключательEnabled(разрешенный). Затем запустить диаграмму кнопкойStart.

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

DSP Blockset (Signal Processing Blockset)- библиотека моделирования дискретных систем, связанных с цифровой обработкой процессов, корреляционным анализом, линейным предсказанием и сжатием информации. Блоки накопителей данной библиотеки позволяют описывать накопление и хранение поступающей информации или заявок на обслуживание. Эти блоки могут быть использованы при моделировании запоминающих устройств.Queue-блоки обеспечивают сохранение величин в регистрах, имеющих форматFIFO.Stack-блок сохраняет входные данные в регистре форматаLIFO. БлокDistributorнакапливаетNзначений и выдает их одновременно наNканалов (период выдачи данных вNраз меньше периода поступления).Statistics- блоки, непосредственно включаемые в структуру модели и позволяющие автоматизировать анализ процессов.

Simulink Report Generator- подсистема, позволяющая создавать и настраивать отчеты из моделейSimulinkиStateflowв различных форматах, среди которыхHTML,XML,SGML.

Statistics Toolbox(может быть включена в другие разделы как составная часть) - подсистема инструментов статистического анализа, работающая под управлениемMATLAB.

SimEvents– подистема моделирования [17] дискретно-событийных системcочередями и серверами - блоками обслуживания. Может объединяться сSimulink-блоками любых типов в непрерывно-дискретных (гибридных) моделях. Понятие дискретности в SimEvents опирается на независимость по отношению кSimulink-времени операций формирования, планирования и обработки событий. События происходят с активными элементами-сущностями (entities), которые могут иметь атрибуты, содержащие данные, распространяемые в модели вместе с активными элементами. Планируемые события помещаются в календарь событий в определенном порядке.

Блоки для формирования различных моделей данной подсистемой сосредоточены в SimEvents-части общей Simulink-библиотеки (рис.9.8).

Рис. 9.8

Из различных разделов указанной SimEvents-библиотеки выбираются требуемые элементы для размещения их в рабочем поле SimEvents-модели. На рис. 9.9 показан выбор раздела Attributes.

Рис. 9.9. Блоки раздела Attributes библиотеки SimEvents

Пример гибридной системы. Рассмотрим линию передачи сообщений с удаленного центра управления на объект – рис. 9.10. Данные управления формируются вSimulink-блокеController. Объектом управления являетсяSimulink-блокAktuatorModel. Для согласования передатчика и приемника информации используется SimEvents-подсистемаSubsystem. БлокиControllerиAktuatorModelна рис. 9.10

Рис. 9.10

Controller

AktuatorModel

являются элементами непрерывной Simulink-модели, подчиняющейся своим правилам поведения и способам временной синхронизации процессов. БлокSubsystem, относящийся к дискретным SimEvents-подсистемам, работает в общем случае асинхронно сSimulink-моделями. Поэтому, например, в SimEvents можно использовать свое время для организации каких-либо операций. Так, на рис. 9.11 для

Рис.9.11

формирования сообщений блоком Event-BasedEntityGeneratorиспользован автономный задающий временной блокDigitalClock. Любое изменение его показания (событие-Event), поступая на входtsгенератораEvent-BasedEntityGenerator, обеспечивает формирование на выходеOUTгенератора сущности-сообщения (entities). Эти сообщения в блокеSetAttributeзаполняются информацией центра управления (линияln1- вход А1), имеющейся на момент формирования сообщения. Следующий блок –InfiniteServer– имитирует распространение (задержку) сообщения по каналу связи . Время задержки задается случайно блокомEvent-BasedRandomNumber. После выхода сообщения из канала связи атрибуты сообщения (информация управления) выделяются блокомGetAtributeи поступают в объект управления (по выходуOut1), а использованные сообщения – в сборный пунктEntitySink.

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

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

  • Конструирование запроса;

  • Задание переменных для хранения данных в рабочей области памяти;

  • Выполнение запроса.

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

  • Конструирование запроса;

  • Задание переменных, содержащих экспортируемые данные;

  • Выполнение запроса.

Рис.9.12

Реализация ввода-вывода данных проводится с помощью Visual Query Builder (Строитель визуального запроса), вызываемый с помощью функции querybuilder - рис. 9.12.

Рис.9.12

импорте данных (выбор Selectв полеDataoperation) после нажатия кнопкиExecuteпроявляется на полеData. Двойной клик в полеDataвызывает появление редактора Variable Editor (Редактор переменной) с полным набором значений переменной, указанной в полеData.

При экспорте данных (выбор Insertв полеDataoperation) после указанных выше операций в полеDataпоявляется переменная, транспортирующая данные из памяти в выбранную базу (в полеDataSource).