ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ
Ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå âûñøåãî ïðîôåññèîíàëüíîãî îáðàçîâàíèÿ Ñ...
70 downloads
479 Views
948KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ
Ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå âûñøåãî ïðîôåññèîíàëüíîãî îáðàçîâàíèÿ ÑÀÍÊÒ-ÏÅÒÅÐÁÓÐÃÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ ÀÝÐÎÊÎÑÌÈ×ÅÑÊÎÃÎ ÏÐÈÁÎÐÎÑÒÐÎÅÍÈß
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРОЦЕССОВ И СИСТЕМ Методические указания к выполнению практических занятий № 1–11
Ñàíêò-Ïåòåðáóðã 2006
Составители Я. А. Щеников Рецензент доктор технических наук, профессор Р. И. Сольницев В методических указаниях формируются цели и задачи дисциплины «Программное обеспечение процессов и систем». Приводятся темы практических работ, задания для самостоятельной работы, рекомендуемая литература. Рассмотрены примеры решений. Предназначены для студентов специальностей 220501 «Управление качеством» и 200800 «Проектирование и технология радиоэлектронных средств». Подготовлены кафедрой инноватики и управления качеством и рекомендованы к изданию редакционно-издательским советом СанктПетербургского государственного университета аэрокосмического приборостроения.
Редактор А. В. Семенчук Компьютерная верстка Н. С. Степановой Подписано к печати 27.04.06. Формат 60×84 1/16. Бумага офсетная. Печать офсетная. Усл. печ. л. 4,53. Уч. -изд. л. 4,7. Тираж 100 экз. Заказ № 226
Редакционно-издательский отдел Отдел электронных публикаций и библиографии библиотеки Отдел оперативной полиграфии ГУАП 190000, Санкт-Петербург, ул. Б. Морская, 67
© ГОУ ВПО «Санкт-Петербургский государственный университет аэрокосмического приборостроения», 2006
2
ПРЕДИСЛОВИЕ Понятия «система» и «процесс» встречаются во многих областях человеческой деятельности. Это может быть техническая система, система качества, технологический процесс и т. д. Современные процессы и системы носят сложный характер, поэтому в ряде случаев прежде чем приступать к их созданию и использованию, целесообразно провести их моделирование. При этом может быть достигнут эффект, заключающийся в экономии средств и времени, которые были бы потрачены на дорогостоящие натурные испытания, исправление брака и т. д. На сегодняшний день существует огромное количество пакетов моделирования, работа которых основана на каком-либо одном математическом аппарате. В то же время для моделирования современных систем и процессов уже недостаточно одного математического аппарата, следовательно, речь идет о моделировании сложных систем. Данные методические указания посвящены пакету моделирования динамических систем SIMULINK, который является универсальным и дает возможность моделировать сложные системы, используя практически любой известный на сегодняшний день математический аппарат. Еще одним достоинством универсального пакета моделирования является простота переноса численных данных из одного математического аппарата в другой. Подробно рассмотрены вопросы функционирования среды SIMULINK, а также примеры решения задач проектирования и обеспечения качества на базе теории линейных систем, нечетких систем, кластерного анализа, событийного моделирования, нейронных сетей, средств моделирования виртуальной реальности. Приведены варианты задач для самостоятельной работы студентов.
3
Практическое занятие № 1 СОЗДАНИЕ МОДЕЛИ ДИНАМИЧЕСКОЙ СИСТЕМЫ В SIMULINK Цель занятия: получить первоначальные навыки работы с Simulink, знакомство с менеджером библиотек (Simulink Library Browser) и редактором блок-схем. 1.1. Запуск SIMULINK Запуск Simulink осуществляется при загруженной системе MATLAB. Без MATLAB Simulink не работает. Существует несколько способов запуска: 1-й способ: нажатие кнопки
на панели командного окна MATLAB.
2-й способ: ввод команды simulink в командном окне MATLAB. 3-й способ: выбор команды New model в разделе File главного меню MATLAB. 4-й способ: меню Open->File-> указать путь к уже созданной модели. Последний способ предпочтителен при запуске уже готовой и отлаженной модели, когда требуется провести моделирование и не нужно добавлять новые блоки в модель. 1.2. Менеджер библиотек Simulink Library Browser После запуска Simulink появляется менеджер библиотек (рис. 1.1), который состоит из дерева библиотек блочных компонентов, окна, отображающего состав текущей (выделенной) библиотеки, поля с кратким описанием выделенного блока и поля ввода ключевого слова для поиска интересующего блока.
4
Рис. 1.1. Менеджер библиотек Simulink Library Browser
1.3. Поиск блоков по названию Менеджер библиотек снабжен собственной поисковой системой блоков по названию. Введите в поле справа от слова «find» слово display и нажмите клавишу Enter.
Система начнет поиск в библиотеках и выведет первый найденный блок, в названии которого присутствует слово «display». При этом автоматически раскроется библиотека, в которой этот блок находится (в данном случае это библиотека Simulink). Если затем снова нажать клавишу Enter, то система найдет следующий блок, в названии которого присутствует слово display. В данном случае это будет тоже блок display, но уже находящийся в библиотеке DSP Blockset. Таким образом, зная функцию блока на английском языке, можно осуществлять автоматический поиск подходящих блоков. 1.4. Редактор блок-схем Запуск редактора блок-схем можно осуществить несколькими способами: на панели менеджера библиотек 1-й способ: нажатие кнопки Simulink library Browser; 2-й способ: выбор команды New model в разделе File главного меню менеджера библиотек. 5
1.5. Создание блок-схем После запуска появляется отдельное пустое окно редактора блоксхем. Процесс создания модели состоит из четырех этапов: 1. Нахождение необходимых блоков в менеджере библиотек и их буксировка в окно редактора блок-схем. Для этого необходимо открыть соответствующий раздел библиотеки. Далее, указав курсором на требуемый блок и нажав на левую клавишу мыши, отбуксировать блок в окно редактора блок-схем (рис. 1.2).
Рис. 1.2. Окно редактора блок-схем после буксировки блоков Sine Wave и Scope
2. Проведение информационных связей. Для этого необходимо указать курсором на выход блока, а затем нажать и, не отпуская левую клавишу мыши, провести линию ко входу другого блока. После этого отпустить клавишу. В случае правильного соединения линия связи будет сплошной черной, неправильного – пунктирной красной. Для создания точки разветвления в соединительной линии нужно подвести курсор к предполагаемому узлу и, нажав правую клавишу мыши, протянуть линию. Для удаления линии требуется выделить ее, а затем нажать клавишу Delete на клавиатуре (см. рис. 1.3). Для создания копии блока надо установить курсор на требуемый блок в окне модели, нажать правую клавишу мыши. В результате слева от курсора появится знак «+». Затем, удерживая клавишу в нажатом положении, переместить в нужное место курсор и отпустить клавишу. 6
Таблица 1.1 Операции редактирования блоков Меню
Операция
Format
Font – задает шрифт для надписей под выделенным блоком Flip name – перемещает надпись на противоположную сторону блока Hide name – скрывает надпись Flip block – поворачивает блок на 180° Rotate block – поворачивает блок на 90° Show drop s hadow – отображает тень от блока Fore ground color – цвет Cus tom – настройки пользователя, Black, White… Dark, Green – ц в ета: черн ый , белый … темн орамки блока Background color – цвет зеленый фона блока
Рис. 1.3. Окно редактора блок-схем после проведения связи (пунктиром показана лишняя связь, которую необходимо удалить)
Редактирование положения, цвета, надписей блоков осуществляется путем выделения блока и нажатия правой клавишей мыши. Назначение пунктов появившегося контекстного меню приведено в табл. 1.1. 3. Настройка параметров блоков. Для этого необходимо дважды щелкнуть левой клавишей мыши, указав курсором на изображение блока. При вводе числа в качестве десятичного разделителя должна использоваться точка, а не запятая. После внесения изменений нужно закрыть окно кнопкой OK либо воспользоваться кнопкой Apply для сохранения изменений без закрытия окна (рис. 1.4). 7
Рис. 1.4. Окна настройки параметров блоков Sine wave и Scope
4. Настройка параметров моделирования. Последний этап создания модели – настройка параметров моделирования. Вызов окна настройки осуществляется путем выбора команды Simulation Parameters… в разделе Simulation редактора блок-схем или сочетанием клавиш Ctrl+E при активном окне редактора блок-схем. Окно настройки параметров моделирования содержит пять вкладок (рис. 1.5), основными являются Solver (Решатель) и Workspace I/O (Ввод/ Вывод в рабочее пространство). Назначение параметров моделирования приведены в табл. 1.2. 5. Сохранение и запуск модели. После создания блок-схемы и настройки параметров моделирования следует сохранить блок-схему в папку с номером своей группы (меню File/Save as). Название файла не должно начинаться с русских букв или начинаться с цифры. Предпочтительным является название типа «prakt1», где 1 – номер практической работы. Запуск модели осуществляется путем выбора в меню пункт . Если нет ошибок, Simulation/Start или нажатием пиктограммы модель запустится. Работа модели будет продолжаться до истечения интервала моделирования либо пока не будет вручную остановлена 8
Рис. 1.5. Окно настройки параметров моделирования
пользователем нажатием на пиктограмму
. Если есть необходи-
мость временно приостановить работу модели, следует нажать на пиктограмму
(пауза).
Задание для самостоятельной работы: самостоятельно изучите операции редактирования окна блок-схемы (меню Format): Font….Execution order.
9
Таблица 1.2 Назначение параметров моделирования вкладки Solver Параметр
Размерность
Назначение
Start time
с
Stop time
То же
Время начала моделирования [0, ], отрицательные числа игнорируются Время конца моделирования [0, ], отрицательные числа игнорируются, inf – процесс моделирования будет длиться до остановки пользователем вручную Variable step – решатель с переменным шагом Fixed step – решатель с фиксированным шагом ode 45, ode 23…ode 23tb – решатели Максимальный размер шага моделирования Минимальный размер шага моделирования Начальный размер шага моделирования Относительная погрешность моделирования 1e–3 = 0,1 % Абсолютная погрешность моделирования Опции вывода результатов моделирования: Re fine factor Produce additional output Produce s pe cifie d output only
Solver optionType
–
Max step size Min step size Initial step size Relative tolerance
с То же – %
Absolute tolerance Output option
То же –
Практическое занятие № 2 ЗНАКОМСТВО С УНИВЕРСАЛЬНОЙ БИБЛИОТЕКОЙ SIMULINK Цель занятия: познакомиться с библиотекой блочных компонентов и с блоками, которые они содержат. Изучить возможности, которыми они обладают. 2.1. Обзор универсальной библиотеки SIMULINK Универсальная библиотека SIMULINK (рис. 1.1) содержит следующие разделы (табл. 2.1).
10
Таблица 2.1 Разделы и содержание библиотеки SIMULINK Название раздела
Описание раздела
Continuous Discontinuous Discrete Look- Up Tables Math Operations Model Verification Model- Wide Utilities Ports&Subsystems Signal Attributes Signal Routing Sinks Sources User- Defined Function
Блоки, работающие в непрерывном времени Блоки, имитирующие различные виды нелинейностей Блоки, работающие в дискретном времени Блоки таблиц Блоки, реализующие математические операции Блоки проверки свойств сигналов Утилиты, расширяющие возможности модели Порты и подсистемы Блоки задания свойств сигналов Блоки маршрутизации сигналов Блоки приема и отображения сигналов Блоки источников сигналов Функции, определяемые пользователем
2.2. Обзор блоков раздела Sources Можно с полной уверенностью утверждать, что практически любая модель в SIMULINK не обходится без блоков из трех разделов: Sources, Sinks и Math Operations. Блоки и параметры блоков из этих разделов приведены в Прил. к практ. работе № 2. Ознакомимся с наиболее часто используемыми блоками из этих библиотек. Для этого создадим новую модель (рис. 2.1). Для создания блок-схемы сначала необходимо открыть раздел Sinks и перетащить в модель блок Scope, затем скопировать его 11 раз, используя методику, приведенную в практической работе № 1. После этого следует открыть раздел Sources, перетащить и разместить источники сигналов в модель, согласно рис. 2.1, после чего провести связи. Затем следует запустить модель нажатием на пиктограмму
. Генерируе-
мые блоками сигналы просматриваются путем двойного нажатия на соответствующем блоке Scope. После окончания просмотра следует сохранить модель под именем «prakt21». 11
Рис. 2.1. Знакомство с блоками раздела Sources
2.3. Обзор блоков раздела Math Operations Создайте новое окно редактора блок-схем нажатием на пиктограмму
. Откройте раздел Sinks и перетащите в редактор блоки Scope и
Display. Затем откройте раздел Sources и перетащите в редактор блоки Sine Wave и Constant. Расположите блоки, как показано на рис. 2.2, скопируйте нужное количество раз и только после этого перетащите блоки из раздела Math Operations. Измените значения в блоках Constant c единицы на 2 и 5. Чтобы из сумматора сделать вычитающее устройство, необходимо в параметре List of signs изменить значение |++ на |+– . Чтобы из умножителя сделать делитель в параметре Number of inputs изменить значение 2 на */. После запуска модели просмотрите последовательно содержимое блоков Scope и проверьте правильность выполнения математических операциях на блоках Display. Сохраните модель под именем «prakt22». 2.4. Исследование блоков из других разделов Универсальная и специализированные библиотеки содержат большое количество блоков и нет возможности рассмотреть их все. Приме12
Рис. 2.2. Знакомство с блоками раздела Math Operations
ры использования блоков можно, конечно, найти в справочной системе путем нажатия кнопки Help в окне параметров блока, но часто документация не устанавливается. В данном случае можно попытаться исследовать блок. Наиболее универсальным является воздействие на блок каким-то сигналом (синусоидальным или случайным) и анализ выхода блока с помощью блока Scope. Если входов у исследуемого блока много, то может быть лучшим вариантом будет использование блоков Constant на входе и блока Display на выходе. Задание для самостоятельной работы: самостоятельно исследуйте работу блоков: XY Graph, Matrix Viewer. Практическое занятие № 3 СОЗДАНИЕ СИСТЕМЫ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ Цель занятия: получить навыки создания линейных систем, систем с обратной связью, систем автоматического управления. 3.1. Исследование блоков раздела Continuous Практически все блоки, необходимые для создания линейных непрерывных систем, находятся в разделе Continuous библиотеки SIMULINK, исключение составляют блоки Sum, Product, Gain, которые находятся в 13
библиотеке Math Operations. Для исследования их работы создадим блоксхему (рис. 3.1), изменим параметр в блоке Constant с 1 на 3, сохраним полученную модель под именем «prakt31» и запустим. Результаты моделирования приведены в правой части рис. 3.1. Видно, что блок Derivative осуществляет операцию вычисления производной входного сигнала (выброс в момент перепада входного сигнала), блок Integrator -– интегрирование входного сигнала (линейно нарастающий сигнал), а блоки Transport Delay и Variable Transport Delay – задержку входного сигнала на постоянную и переменную величину времени.
Рис. 3.1. Исследование блоков раздела Continuous
3.2. Модель простейшей системы автоматического регулирования Рассмотрим работу автопилота. Система должна поддерживать заданную высоту полета самолета (1000 м) при воздействии факторов, приводящих к случайным колебаниям высоты в пределах 10 м. Для создания блок-схемы перетащим в новое окно редактора блоки Constant, Uniform Random Number, Transfer Fcn, Sum, Scope, Gain, Mux. Список параметров, которые необходимо изменить, при14
ведены в табл. 3.1. Время моделирования установите равным 3600 с, сохраните блок-схему под именем «prakt32» и запустите на моделирование. Если все сделано правильно, результат будет аналогичным, приведенному на рис. 3.2. Сигнал с большим размахом – траектория движения самолета без автопилота, сигнал с меньшим размахом – траектория движения в случае работы системы автоматического регулирования. Таблица 3.1 Список изменяемых параметров блоков Блок
Constant, Constant1, Constant2 Transfer Fcn, Transfer Fcn1 Uniform Random Number и Uniform Random Number1 Sum Gain
Параметр
Constant value Denominator MinimumMaximum List of signs Gain
Новое значение
1000 [100 0] –1010 |+– 5
3.2. Модель простейшей системы автоматического регулирования
15
Задания для самостоятельной работы: самостоятельно измените коэффициент усиления блока Gain (10, 100, 1000); между выходом блока Gain и входом сумматора поочередно включите блок Integrator (Transport delay) и пронаблюдайте реакцию системы. Практическое занятие № 4 СОЗДАНИЕ ПОДСИСТЕМ Цель занятия: получить навыки создания подсистем, их маскирования. 4.1. Создание системы Зададимся целью создать «универсальный» дисплей (рис. 4.1).
Рис. 4.1. «Универсальный» дисплей
Создадим новое окно редактора блок-схем и скопируем в него следующие блоки: Sine Wave (Simulink/Sources), Repeating Sequence (Simulink/Sources), 2 блока Constant (Simulink/Sources), 2 блока Rounding Function (Simulink/Math Operations), Assignment (Simulink/ Math Operations), Matrix Viewer (DSP Blockset/DSP Sinks). Для того чтобы модель приобрела вид, как показано на рис. 4.2, прежде всего, необходимо установить параметры блока Assignment (табл. 4.1). После установки новых параметров блоков установите параметр окончания времени моделирования Stop time = inf, сохраните модель и запустите ее. Результат работы приведен на рис. 4.2.
16
Таблица 4.1 Новые параметры блоков Блок
Параметр
Assignment
Matrix Viewer Constant Constant1 Sine Wave Repeating Sequence
Input Type Source of row indices Source of column indices Colormap matrix Axis origin Constant value Constant value Amplitude Bias Time values Output values
Новое значение
Matrix External External Vga Lower left… –1*ones(100) 0 10 50 [0 200] [1 100]
4.2. Создание подсистемы
Рис. 4.2. «Универсальный» дисплей в работе
Самый простой способ создания подсистемы (рис. 4.3) – это выделение рамкой интересующей системы (левая кнопка мыши) с последующим выбором в контекстном меню пункта Create subsystem (правая кнопка мыши).
17
Рис. 4.3. Последовательность создания подсистемы
4.3. Маскирование подсистемы Для того чтобы придать подсистеме законченный вид: задать параметры, создать пиктограмму, разработать справочную информацию 18
необходимо перейти в редактор маски. Переход осуществляется нажатием правой клавиши на созданной подсистеме и выбором из контекстного меню пункта Edit mask (рис. 4.4).
Рис. 4.4. Редактор маски Mask ed: tov
Редактор маски содержит 4 вкладки: Icon, Parameters, Initialization, Documentation. Создание пиктограммы созданной подсистемы Наиболее простой способ создания пиктограммы – в редакторе пиктограмм, который вызывается из командного окна Matlab командой iconedit(‘modelname’,’Subsystem’), где modelname – имя модели, Subsystem – имя блока, для которого будет создаваться пиктограмма. В нашем случае необходимо набрать iconedit(‘prakt4’,’Subsystem’). Пиктограмма создается по точкам, расположение которых указывается с помощью мыши. Между собой точки соединяются прямыми линиями. Для того чтобы начать новую линию необходимо нажать клавишу n на клавиатуре. Для отмены создания последней точки используется клавиша d. Выход из редактора с автоматическим обновлением пиктограммы осуществляется клавишей q. По завершении работы с редактором необходимо также закрыть его окно рисования. Кроме обновления пиктограммы, завершение работы с редактором пиктограмм 19
сопровождается выводом в командной строке MATLAB графической команды, обеспечивающей построение пиктограммы. Введите в появившемся окне изображение окна, как это показано на рис. 4.5. Затем перейдите в редактор маски и введите в поле Drawing commands две команды, определяющие наименования входов подсистемы. Результат приведен на рис. 4.5.
Рис. 4.5. Создание пиктограммы подсистемы
Создание редактируемых параметров Снова перейдите в модель, сделайте двойное нажатие на изображении подсистемы, чтобы увидеть ее содержимое. Найдите блок Constant1 и измените параметр «Constant value» с 0 на color. Пусть этот параметр, отвечающий за цвет движущейся точки, будет редактируемым. Теперь вернитесь в редактор маски и перейдите на вкладку Parameters. Нажмите на кнопку
. Появится приглашение на ввод
переменной. Введите переменную, как это показано на рис. 4.6. 20
Рис. 4.6. Создание редактируемого параметра
Prompt – описания параметра. Обычно используется его название в виде текста, например “Gain”, “Constant value” и т. п. Variable – сама переменная. Название должно полностью совпадать с названием переменной, находящейся в блоке Constant1. Type – вид редактирования параметра. Edit – редактируемое поле ввода. Checkbox – Флажок. Popup – раскрывающийся список. В этом случае в графе Popup Strings (элементы списка) необходимо ввести элементы списка, разделенные символом вертикальной черты. Например, выражение alpha|beta|gamma задаст список из трех элементов: alpha, beta и gamma. Evaluate – параметр может быть вычисляемым выражением. Tunable – пользователь может изменить значение параметра в процессе моделирования. Создание справки маскированной подсистемы Для создания описания и справки маскированной подсистемы служит вкладка Documentation. Текст, введенный в графу Mask Type (рис. 4.7) – название подсистемы, в графу Mask description отображается в верхней части окна диалога и предназначен для краткого описания блока. В графу Mask Help вносятся команды, обеспечивающие загрузку файлов справки, созданных пользователем, в справочную систему при нажатии клавиши Help в окне параметров. Наиболее удобным форматом файла справки является htm (html) – формат. Вызов справочного htm-файла осуществляется командой вида: web([‘file:///’ which(‘helpfile.htm’)]);, где helpfile.htm – имя файла справки. Для правильной работы справочной системы необходимо, чтобы файл справки находился в той же папке, что и файл модели, и данная папка являлась рабочей. Введите текст, как это показано на рис. 4.7. После этого сохраните модель под именем «prakt4», измените параметр Point color = –0.7 в 21
созданной подсистеме и запустите модель. Убедитесь, что цвет движущейся точки изменился на красный. Сделайте двойное нажатие на созданной подсистеме, в окне параметров нажмите на кнопу Help и убедитесь, что вызывается файл справки (рис. 4.7).
Рис. 4.7. Создание справки маскируемой подсистемы
Задание для самостоятельной работы: в созданную подсистему добавьте второй параметр – размер поля дисплея, сделайте его редактируемым, снабдите необходимым описанием. Практическое занятие № 5 СОЗДАНИЕ СИСТЕМЫ НЕЧЕТКОГО ВЫВОДА Цель занятия: получить навыки создания систем нечеткого вывода, основанных на правилах. 5.1. Знакомство с процессом разработки системы нечеткого вывода в интерактивном режиме Для создания и моделирования систем нечеткого вывода используются блоки Fuzzy Logic Controller или Fuzzy Logic Controller with Ruleviewer, которые содержатся в библиотеке Fuzzy Logic Toolbox (рис. 5.1). Однако для их функционирования предварительно следует создать матрицу нечеткого вывода (рис. 5.2). 22
Рис. 5.1. Содержимое библиотеки Fuzzy logic Toolbox
Рис. 5.2. Параметры блока Fuzzy logic controller with Ruleviewer
Матрица системы нечеткого вывода создается с помощью редактора систем нечеткого вывода FIS Editor (рис. 5.3), доступ к которому можно получить, набрав в командном окне MATLAB: >>fuzzy и нажав Enter.
Рис. 5.3. Редактор систем нечеткого вывода
23
5.2. Создание простой системы нечеткого вывода Пусть имеется задача оценки успеваемости студента по пятибалльной шкале на основании данных о его посещаемости и активности на занятиях. Таким образом, имеем систему нечеткого вывода, у которой имеются два входа: посещаемость, активность и один выход – оценка. Ш а г 1. Прежде чем переходить к созданию системы необходимо выбрать ее тип: Мамдани (Mamdani) или Сугено (Sugeno). Выбор осуществляется с помощью меню File->New Fis->Mamdani. Выбираем систему Mamdani (она стоит по умолчанию). Ш а г 2. Создание необходимого количества входов и выходов системы. Изначально у системы один вход Input1. Чтобы добавить второй вход, необходимо воспользоваться меню Edit->Add Variable…->Input. Аналогично, с помощью меню Edit->Add Variable…->Output можно добавить в систему выход, но в нашем случае по умолчанию один выход есть. Ш а г 3. Переименование входов и выходов. Эта процедура обязательна и необходима в дальнейшем для составления правил. Для того чтобы переименовать вход или выход, нужно выделить его, при этом вокруг появится жирная красная рамка, и в окне Name изменить название (Input1, Input2, Output1) на необходимые нам (Poseshaemost, Activnost, Ocenka). Результаты переименования приведены на рис. 5.4.
Рис. 5.4. Переименованные входы и выходы системы нечеткого вывода
Ш а г 4. Редактирование функций принадлежности. Для редактирования предназначен редактор Membership Function Editor, войти в кото24
рый можно либо путем двойного нажатия на любой вход или выход системы, либо с помощью меню Edit->Memberships Functions. Прежде чем редактировать любую из функций, ее надо выделить. Пусть это будет вход «Poseshaemost». При этом рамка вокруг него становится красного цвета. По умолчанию для входов и выходов используются треугольные функции ошибки. Заменим их на функции Гаусса. Для этого сначала удалим существующие функции с помощью меню Edit->Remove all MFs, затем добавим 3 функции Гаусса с помощью меню Edit->Add MFs. В появившемся окне следует выбрать тип функции (gaussmf) и их количество (3) и нажать OK (рис. 5.5).
Рис. 5.5. Окно установки типа и количества функции принадлежности
Затем следует задать диапазон изменения функций. Пусть для входа «Poseshaemost» он будет от 0 до 100% (количество посещаемых лекций в процентах). Диапазон задается в левой нижней части окна редактора функций принадлежности в поле Range. Следующий этап – переименование функций принадлежности, что понадобится потом при составлении правил. Переименование осуществляется путем выделения интересующей функции (например, mf1) и заменой в поле Name текущего названия на необходимое нам. Очевидно, что максимум функции принадлежности mf1 соответствует плохой («plohaya») посещаемости, максимум функции mf2 – средней («srednyaya»), максимум функции mf3 – хорошей («horoshaya»). Результаты редактирования функции принадлежности входа «Poseshaemost» приведены на рис. 5.6. 25
Рис. 5.6. Редактирование функций принадлежности
Аналогичные действия необходимо провести над входом «activnost» и выходом «ocenka». При этом диапазон функции принадлежности должен быть от 1 до 5 (пятибалльная оценка) у входа «activnost» и от 2 до 5 у выхода «ocenka». Количество функций принадлежности у входа «activnost» – 3 (plohaja, srednaya, horoshaya), у выхода «ocenka» – 4 («2», «3», «4», «5»). Ш а г 5. Создание базы правил. Правила создаются в редакторе правил Rule Editor, перейти к которому можно с помощью меню Edit – >Rules. Для создания первого правила необходимо выделить последовательно функции принадлежности plohaya (poseshaemost), plohaya (activnost) и 2 (ocenka) и нажать кнопку . Результат действия приведен на рис. 5.7, что соответствует правилу: «Если посещаемость плохая и активность плохая, то оценка 2». Аналогичным образом вводятся остальные 8 правил (рис. 5.8). Ш а г 6. Тестирование полученной системы нечеткого вывода. Наблюдать работу созданной системы можно в просмотрщике правил Rule Viewer, перейти к которому можно с помощью меню View>Rules (рис. 5.9). Вертикальные красные линии у входов можно перемещать, получая таким образом ответ. В конкретном случае видно, что при полном отсутствии на лекциях и плохой активности система ставит оценку 2,69 балла. 26
Рис. 5.7. Создание базы правил
Рис. 5.8. Готовая база правил
Рис. 5.9. Окно просмотрщика правил
27
Задание для самостоятельной работы: создайте нечеткую систему оценки показателей качества группы товаров (изделий). Практическое занятие № 6 СОЗДАНИЕ РЕАКТИВНОЙ СИСТЕМЫ В STATEFLOW Цель занятия: получить навыки построения SF-диаграмм и их совместной работы с SIMULINK. 6.1. Инструменты построения SF-диаграмм Для моделирования реактивных систем широко используется Stateflow chart (диаграмма состояний и переходов). Для создания модели реактивной системы используется блок Chart, который находится в библиотеке Stateflow. 6.2. Пример создания SF-диаграммы Рассмотрим процесс создания SF-диаграммы на конкретном примере – модели работы светофора. Для создания новой модели SIMULINK, работающей совместно c STATEFLOW, удобно использовать команду stateflow, которую необходимо ввести в командном окне MATLAB (рис. 6.1).
Рис. 6.1. Результат выполнения команды stateflow
28
Прежде чем переходить к построению SF-диаграммы, необходимо в SIMULINKе создать модель светофора, которой будет управлять блок chart (рис. 6.2). Для этого следует открыть библиотеку блоков нажатием кнопки
, перетащить в создаваемую блок-схему следующие
блоки: Pulse Generator (Simulink/Sources), Constant (Simulink/Sources) – 3 шт, Matrix Concatenation (Simulink/Math Operations), Matrix Viewer (DSP Blockset/Sinks).
Рис. 6.2. Модель после буксировки блоков, проведения связей и изменения параметров
Далее необходимо изменить параметры блоков, согласно табл. 6.1. Таблица 6.1 Изменение параметров блоков Блок
Pulse Generator Constant Constant1 Constant2 Matrix Concatenation Matrix Viewer
Параметр
Новое значение
Period Constant value Constant value Constant value Number of inputs Concatenation method Show Image Properties Colormap matrix
1 –0,7 –0,6 –0,5 3 Vertical vga
29
После изменения параметров модель рекомендуется сохранить под именем «prakt6» и запустить. По окончании моделирования и после двойного нажатия на иконке Matrix Viewer должно появиться стилизованное изображение светофора, как это показано на рис. 6.2. Как видно из рисунка, блоки Constant управляет цветами светофора: красному цвету соответствует цифра (–0,7), желтому – (–0,6), зеленому – (0,5), черному – (0). Теперь можно приступать к созданию SF-диаграммы. Для перехода в редактор SF-диаграмм необходимо сделать двойное нажатие левой кнопкой мыши на иконке Chart. На рис. 6.3 приведена готовая SF-диаграмма управления светофором.
Рис. 6.3. Созданная SF-диаграмма управления работой светофора
Создание SF-диаграммы проходит в несколько шагов. Ш а г 1. Создание состояний и процедур. В диаграмме состояния представлены прямоугольными полями со скругленными углами. Ввод 30
нового состояния осуществляется путем нажатия кнопки
в левом
верхнем углу редактора SF-диаграмм и буксировки его с нажатой левой клавишей мыши в нужное место. Состояния можно также увеличивать/ уменьшать, ухватившись за скругленные края прямоугольника. Состояния должны обязательно иметь названия. В нашем случае они обозначают текущий цвет (состояние) светофора: red (красный), red_yellow (красный и желтый), green (зеленый), yellow (желтый). Названия вводятся вместо знака вопроса (?) и должны заканчиваться косой чертой (/). После ввода косой черты и нажатия ENTER можно переходить к вводу процедур. При задании самого состояния могут быть заданы следующие действия: en: (entry) – действие, выполняемое на входе в состояние; du: (during) – действие, выполняемое пока состояние активно; ex: (exit) – действие, выполняемое на выходе из состояния; on: (on event) <имя события> – действие, выполняемое в момент появления события (имя которого указано) при условии, что система будет находиться в данном состоянии. Заполните состояния событиями, как указано на рис. 6.3. Особое внимание следует обратить на правильность написания: десятичный разделитель – точка, а не запятая. Ш а г 2. Создание переходов. Прежде всего необходимо указать какое состояние будет начальным. Для этого с помощью кнопки
(переход
по умолчанию) установим переход на состояние red, как это показано на рис. 6.3. Переходы между состояними проводятся с помощью мыши. Для этого следует перевести указатель мыши в любое место контура состояния-источника, нажать левую клавишу мыши и довести стрелку до любого места в контуре состояния-приемника после чего отпустить левую клавишу мыши. Затем следует описать условия переходов. Для этого надо выделить линию перехода и вместо появившегося знака вопроса ввести условие типа after(60,sec), где 60 обозначает количество пришедших событий sec, после которого необходимо осуществить переход в следующее состояние. Аналогичным образом создайте остальные три условия, как это показано на рис. 6.3. Ш а г 3. Определение переменных. Первоначально перенесенный в модель блок chart не имеет ни входов, ни выходов. Их необходимо создать. В созданной SF-диаграмме имеются: одно событие (sec), кото31
рое является входом и три переменные, соответствующие цветам светофора (red, yellow, green), которые являются выходами. Определение переменных осуществляется в меню Add редактора SF-диаграмм. Для события необходимо выполнить Add->Event->Input from Simulink и в появившемся окне в поле Name изменить название event на sec. Остальные поля следует оставить без изменений. Для переменных необходимо выполнить Add->Data->Output to Simulink и в появившемся окне в поле Name изменить название data на red. Остальные поля следует оставить без изменений. Процедуру повторить для переменных yellow и green. Очень важно, чтобы имена вводимых переменных полностью совпадали с именами переменных в SF-диаграмме, иначе произойдет ошибка в начале моделирования. Ввод событий и переменных сопровождается появлением входов и выходов у блока Chart. Если по какой-то причине события или данные введены неправильно, то отредактировать их можно, выполнив Tools>Explore. В появившемся окне необходимо выделить имя неправильно введенной переменной и либо отредактировать его, либо удалить. Ш а г 4. Запуск модели. Перейдите в блок-схему SIMULINK, удалите из нее блоки Constant, Constant1, Constant2, и проведите связи, как это показано на рис. 6.4. После чего перейдите в окно настройки параметров модели (меню Simulation->Simulation Parameters) и установите параметр Stop time = inf. Сохраните модель под названием «prakt6» и запустите. Если все выполнено правильно, то SF-диаграмма будет последовательно управлять сигналами светофора.
Рис. 6.4. Модель светофора в действии
32
Задание для самостоятельной работы: доработайте модель и SFдиаграмму таким образом, чтобы происходил переход в состояние green при нажатии пешеходом кнопки. Практическое занятие № 7 СОЗДАНИЕ НЕЙРОННЫХ СЕТЕЙ Цель занятия: ознакомиться с процессом создания и моделирования систем на основе нейронных сетей. 7.1. Функции пакета Neural Networks Toolbox Функции создания нейронных сетей net=newff(PR, [S1 S2…SNl], {TF1 TF2…TFNl}, BTF, BLF, PF) – функция создания многослойной НС с обучением по методу обратного распространения ошибки: PR – R × 2 – матрица минимальных и максимальных значений R входных элементов; Si – размер i-го скрытого слоя для Nl слоев; TFi – функция активации нейронов i-го слоя, по умолчанию ‘tansig’; BTF – функция обучения сети, по умолчанию ‘traingd’; BLF – функция настройки весов и смещений, по умолчанию ‘learngdm’; PF – функция ошибки, по умолчанию ‘mse’. net=newrbe(P,T,goal,spread) – функция создания сети с радиальными базисными элементами c нулевой ошибкой на обучающей выборке: P – R × Q –матрица Q входных векторов; T – S × Q – матрица Q целевых векторов; spread – отклонение (по умолчанию 1,0). Функции обучения нейронных сетей net=train(net,P,T) – функция обучения нейронной сети: net – имя необученной сети; P – матрица входных значений нейронной сети; T – матрица выходных значений нейронной сети. Метод обучения задается с помощью параметра net.trainFcn, например net.trainFcn = ‘trainbfg’. Функции использования нейронных сетей [Y]=sim(net,P) – функция, моделирующая работу нейронной сети: 33
net – имя сети; P – ее входы. gensim(net) – функция генерирует нейросетевой блок Simulink для последующего моделирования нейронной сети средствами этого пакета. net – имя созданной сети. 7.2. Аппроксимация функций с помощью нейронных сетей Предположим, что имеет ся обучающая выборка ((x 1 , y 1 ), y 2 )…(x N, y N)) (пары данных «вход-выход»). Задача аппроксимации состоит в нахождении оценки неизвестной функции F(х). Выбор топологии нейронной сети Вообще, выбор архитектуры сети для решения конкретной задачи основывается на опыте разработчика. Создадим сеть для аппроксимации функции вида T = P3 на отрезке [ –1, 1], используя следующие экспериментальные данные: P=[–1 –0,8 –0,6 –0,4 –0,2 0 0,2 0,4 0,6 0,8 1] T=[–1 –0,51 –0,22 –0,06 –0,01 0 0,01 0,06 0,22 0,51 1] Для оценки числа нейронов в скрытых слоях однородных нейронных сетей можно воспользоваться формулой для оценки необходимого числа синаптических весов Lw (в многослойной сети с сигмоидальными передаточными функциями) (mN)/(1+log2N) ≤ Lw ≤ m(N/m +1 )(n + m + 1) + m, где n – размерность входного сигнала; m – размерность выходного сигнала; N – число элементов обучающей выборки. В нашем случае размерность входного сигнала n = 1, размерность выходного сигнала m = 1, число элементов обучающей выборки N = 11, тогда необходимое количество синаптических весов: (1 × 11)/(1 + log211) ≤ Lw ≤ 1(11/1 + 1)(1 + 1 +1) + 1 2,47 ≤ Lw ≤ 37. Видно, что число синаптических весов может быть невелико, а скрытый слой – только один. Создадим сеть прямого распространения с тремя нейронами в скрытом слое и одном – в выходном: net = newff([–1 1], [3 1]). Следующий этап – обучение созданной сети: net = train(net,P,T) (x 2 ,
34
Функция train обучает заданную сеть net, используя вектор входов P и вектор выходов T. Результат (структура обученной сети) присваивается переменной net. Проверка правильности обучения осуществляется с помощью функции использовании нейронной сети: Y=sim(net,P) Результатом является вектор выходов Y как результат воздействия векторов входа на обученную сеть: Y= Columns 1 through 7 –0,9999 –0,5102 –0,2189 –0,0631 –0,0104 0,0077 0,0228 Columns 8 through 11 0,0609 0,1834 0,5371 0,9624 Если сравнить результат с требуемым T=[–1 –0,51 –0,22 –0,06 –0,01 0 0,01 0,06 0,22 0,51 1] видно, что точность аппроксимации удовлетворительна. Увеличив число скрытых нейронов, можно достигнуть лучших результатов: Y= Columns 1 through 7 –1,0000 –0,5100 –0,2200 –0,0600 –0,0100 0,0000 0,0100 Columns 8 through 11 0,0600 0,2200 0,5100 1,0000 Сравним сеть прямого распространения с сетью с радиальными базисными элементами: net1=newrbe(P,T) Обучение сети занимает меньшее время. Проверим результат работы сети: Y=sim(net1,P) Y= Columns 1 through 7 –1,0000 –0,5100 –0,2200 –0,0600 –0,0100 0,0000 0,0100 Columns 8 through 11 0,0600 0,2200 0,5100 1,0000 Следовательно, можно сделать вывод, что при одинаковой точности аппроксимации, сеть с радиальными базисными элементами обучается быстрее. 35
Использование обученной ИНС в среде SIMULINK (рис. 7.1) Перенести полученную обученную ИНС в среду SIMULINK можно с помощью команды: gensim(net)
Input 1
p{1}
y{1}
p{1} Neural Network
y{1}
Рис. 7.1. Результат работы команды gensim
Задание для самостоятельной работы: создайте временной ряд и сделайте прогноз будущего значения. Практическое занятие № 8 МОДЕЛИРОВАНИЕ ПРОЦЕССОВ КАЧЕСТВА Цель занятия: ознакомиться с возможностями SIMULINK для моделирования процессов качества. 8.1. Создание подсистемы, имитирующей поставщика Поставим задачу создания подсистемы, имитирующую работу поставщика. Функционирование блока заключается в следующем: чем больше (до определенного предела) платим за комплектующее, тем выше его качество, и наоборот. Эту зависимость удобно задать в виде таблицы, в которой входом является цена изделия, а выходом – его показатель качества. Причем последний удобно нормировать к единице, 0 соответствует 0% качественной продукции, 1–100% качественной продукции (табл. 8.1). Таблица 8.1 Зависимость цена – качество в табличной форме
36
Цена (Cost), р.
Качество (Quality)
100 300 600 >600
0,9 0,99 0,999 0,999
Теперь приступим к созданию подсистемы. Для этого запустим SIMULINK, создадим новое окно редактора блок-схем и скопируем в него следующие блоки: Constant (Simulink/Sources), Display (Simulink/Sink), Look-Up Table (Simulink/Look-Up Tables). Разместите их и проведите между ними связи, как это показано на рис. 8.1. Параметры блока LookUp Table измените в соответствии с табл. 8.2. Таблица 8.2 Новые параметры блока Look-Up Table Параметр
Vector of input values Vector of output values
Новое значение
[100 300 600 601] [0,9 0,99 0,999 0,999]
Рис. 8.1. Подсистема, имитирующая работу поставщика
Задайте постоянное значение в блоке Constant, равным 200, и запустите модель. На дисплее отразится нормированная величина качества, соответствующая цене. В заключение переименуйте надпись под таблицей Look-Up Table в Cost – Quality. 8.2. Создание подсистемы, имитирующей работников Аналогичным образом создается подсистема, имитирующая поведение работников. Выделите и скопируйте уже полученную подсистему, имитирующую работу поставщика и расположите ее в свободном месте редактора блок-схем. От предыдущей подсистемы она будет отличаться только названием («Zplata – Quality») и параметрами блока Look-Up Table (табл. 8.3). Готовая подсистема после моделирования приведена на рис. 8.2.
37
Новые параметры блока Look-Up Table
Параметр
Vector of input values Vector of output values
Таблица 8.3
Новое значение
[10 30 60 61] [0,9 0,99 0,999 0,999]
Рис. 8.2. Подсистема, имитирующая поведение работников
8.3. Блоки раздела Model Verification Изначально блоки раздела Model Verification (библиотека Simulink) предназначены для проверки соответствия сигналов определенным требованиям: заданным уровням, нахождению сигнала вне или внутри определенных границ, контролю нулевого значения, контролю градиента. Но, данный раздел может быть полезен при моделировании процессов контроля, заключающегося, например в проверке соответствия какоголибо параметра допуску. В зависимости от установок параметров блоки раздела Model Verification могут останавливать или не останавливать процесс моделирования, а также генерировать или не генерировать логический сигнал на выходе в случае выполнения условия. Рассмотрим модель системы технического контроля, заключающегося в проверке нахождения измеряемой характеристики в пределах от 2 до 7. Для этого скопируем в новое окно редактора блок-схем следующие блоки (рис. 8.3): Random Number (Simulink/Sources), 2 блока Constant (Simulink/Sources), Scope (Simulink/Sinks), Mux (Simulink/Signal Routing), Data Type Conversion (Simulink/Signal Attributes), Check Dynamic Gap (Simulink/Model Verification). Присвойте новые значения параметров блокам, как это указано в табл. 8.4. После этого запустите модель. Результаты моделирования приведены на рис. 8.3. Сохраните модель под именем «prakt82». 38
Рис. 8.3. Модель системы технического контроля
Таблица 8.4 Новые параметры блоков Блок
Random Number Constant Constant1 Check Dynamic Gap
Параметр
Новое значение
MeanVariance Constant value Constant value Stop simulation when assertion fails Output assertion signal
52 2 7
Задание для самостоятельной работы: самостоятельно исследуйте следующие блоки раздела: Model Verification: Assertion, Check Discrete Gradient, Check Dynamic Range, Check Static Gap, Check Static Range. Практическое занятие № 9 КЛАСТЕРНЫЙ АНАЛИЗ ДАННЫХ Цель занятия: изучить возможности MATLAB по кластерному анализу данных. 9.1. Анализ при неизвестном количестве кластеров Функция pdist возвращает парные расстояния между объектами (векторами): 39
Y = pdist(Х) Y = pdist(Х,’metric’) Y = pdist(Х, ‘minkowski’,p) Х – матрица данных, имеющая m строк и n столбцов, рассматриваемая как совокупность m векторов с n элементами каждый. ‘metric’ – строковая переменная, принимающая возможные значения: ‘Euclid’ – евклидово расстояние; ‘SEuclid’ – нормализованное евклидово расстояние; ‘Mahal’ – расстояние Махаланобиса; ‘CityBlock’ – расстояние по Манхэттену (расстояние Хэмминга); ‘Minkovski’ – расстояние в метрике Минковского; p – некоторое фиксированное число, показатель метрики Минковского (по умолчанию p = 2). Возвращаемая величина Y – вектор с (m – 1)m/2 элементами, которые являются расстояниями, соответственно, между вектором 1 и вектором 2, вектором 1 и вектором 3… вектором 1 и вектором m… вектором m–1 и вектором m. Функция linkage(Y) возвращает иерархическое дерево кластеров, используя по умолчанию алгоритм «ближайшего соседа». Является исходной для ряда других функций, в частности для функции построения дендрограммы dendrogramm Z = linkage(Y) Z = linkage(Y, ‘method’) Аргументами функции являются вектор Y расстояний между m объектами, возвращаемый функцией pdist, и строковая переменная ‘method’ (метод), которая задает метод кластеризации и может принимать одно из следующих значений: ‘single’ – алгоритм «ближайшего соседа»; ‘complete’ – алгоритм «дальнего соседа»; ‘average’ – алгоритм «средней связи»; ‘centroid’ – центроидный алгоритм, использующий расстояние по «центрам тяжести» групп; ‘ward’ – пошаговый алгоритм. Функция возвращает матрицу Z, имеющую m – 1 строку и 3 столбца и содержащую информацию об иерархическом дереве кластеров. Нижний уровень иерархии образован m исходными объектами (векторами), которые затем объединяются попарно (в зависимости от расстояния 40
между ними), образуя новые кластеры, которые также могут объединяться попарно (в зависимости от взаимного расстояния) и т. д. Каждому новому формируемому кластеру, соответствующему i-й строке матрицы Z, присваивается индекс m + i (m – число исходных объектов). Столбцы 1 и 2 матрицы Z содержат индексы объектов (кластеров), которые были объединены в пары при образовании нового кластера, а столбец 3 – расстояние между данными объектами. Всего подобным образом будет организован m – 1 кластер. Функция dendrogram(Z) возвращает графическое отображение результата выполнения функции linkage. 9.2. Анализ при известном количестве кластеров Функция kmeans(X, K) разделяет точки матрицы данных X размерностью m × n на K кластеров (количество кластеров задается пользователем и не может превышать количество элементов m). 9.3. Алгоритм нечеткой кластеризации Функция fcm осуществляет кластеризацию с использованием алгоритма Fuzzy c-means [center,U,obj_fcn] = fcm(data,cluster_n) [center,U,obj_fcn] = fcm(data,cluster_n,option) Аргументы функции: data – матрица данных, каждый столбец которой соответствует одной из переменных, а каждая строка – одному из опытов; cluster_n – число задаваемых кластеров (должно быть больше 1); options – вектор опций функций со следующими элементами: options(1) – показатель для матрицы U (по умолчанию 2,0); options(2) – максимальное число итераций при определении центров кластеров (по умолчанию 100); options(3) – минимальная сумма улучшения (по умолчанию 1е-5); options(4) – вывод информации в процессе итераций (по умолчанию 1). Выходные параметры функции: center – матрица, элементы которой (по столбцам) являются координатами найденных центров кластеров, число строк равно числу центров; U – матрица значений принадлежности данных к выявленным кластерам; obj_fcn – значения целевой функции в процессе итераций. 41
Задание для самостоятельной работы: имеется ряд моделей определенного товара (например, мобильные телефоны); выяснить, на сколько потребительских групп можно разбить данный товар. Практическое занятие № 10 СОЗДАНИЕ ВИРТУАЛЬНОЙ МОДЕЛИ ФИЗИЧЕСКОГО ОБЪЕКТА Цель занятия: получить навыки создания виртуального мира в Virtual Reality Toolbox. 10.1. Состав библиотеки Virtual Reality Toolbox Виртуальный мир или трехмерная сцена описывается на стандартном специализированном языке VRML97 (Virtual Reality Modeling Language). Для создания и редактирования используется встроенный редактор VRML editor (используется V-Realm Builder), входящий в дистрибутив SIMULINK. Для просмотра созданных 3D миров используется VRML viewer. Содержимое и назначение блоков библиотеки Virtual Reality Toolbox приведены в Прил. 10, табл. 10.1 и рис. 10.1. 10.2. Принятая система координат и единицы измерения 10.3. Последовательность создания виртуального мира
Рис. 10.1. Система координат и положительное направление вращение виртуальных объектов (правило правой руки)
42
Таблица 10.1 Принятые в VRML размерности Величина
Длина, ширина, высота Расстояние Угол Время
Размерность
Метры То же Радианы Секунды
Рассмотрим последовательность создания модели с визуализацией результатов с помощью средств виртуальной реальности. В качестве примера возьмем модель объекта, летающего по определенной пользователем траектории. Ш а г 1. Создание заготовки модели. Запустите MATLAB и SIMULINK. Создайте новое окно редактора блок-схем и перетащите в него блоки: Clock (Sources), 3 блока Look-Up Table (Look-Up Tables), Matrix Concatenation (Math Operations), VR Sink (Virtual Reality Toolbox). Разместите их, как показано на рис.10.2. У блока Matrix Concatenation необходимо сделать третий вход и изменить метод объединения на вертикальный.
Рис. 10.2. Заготовка модели
Ш а г 2. Создание виртуального мира. Сделайте двойное нажатие левой клавишей мыши на блоке VR sink. Появится окно параметров блока, которое сильно отличается по виду от окон других блоков. Най43
дите кноку New и нажмите на нее. Запустится редактор V-Realm Builder. Нажмите на кнопку , чтобы приступить к созданию нового виртуального мира. Окно редактора поделено на две части: слева будет отображаться древовидная структура виртуального мира (пока там только видна надпись «New World»), а справа – объекты виртуального мира. На начальном этапе рекомендуется не перемещать объекты с помощью мыши, а работать только в левом окне со свойствами объектов. Наиболее простым по реализации летающим объектом является объект типа «летающая тарелка». Для его создания сначала необходимо создать группирующий элемент Transform (меню Nodes->Insert->Groups>Transform) и переименовать его в «ufo». Для переименования необходимо выделить надпись Transform (цвет фона станет синим), выждать 1–2 с и еще раз выделить надпись (рис. 10.3). При этом вокруг надписи появится прямоугольная рамка и она будет готова к редактированию.
Рис. 10.3. Последовательность переименования элемента Transform
Добавим еще два объекта: сферу и цилиндр. Для того чтобы они являлись дочерними объекта Ufo, необходимо нажать на знак слева от надписи Ufo, и в раскрытом списке свойств выделить свойство children, как это показано на рис. 10.4. Добавим объект сфера. Для этого следует выбрать меню Nodes->Insert->Geometry->Sphere. Имя объекта «Transform» также необходимо изменить, но на этот раз уже на «Sphere». Результат приведен на рис. 10.4.
Рис. 10.4. Добавление и редактирование объекта Sphere
44
Объект цилиндр добавляется аналогичным образом. Для этого следует сначала выделить свойство children в группирующем объекте «Ufo», выбрать меню Nodes->Insert->Geometry->Colinder, изменить название на Colinder. Результат приведен на рис. 10.5.
Рис. 10.5. Добавление и редактирование объекта Colinder
На этом этапе необходимо убедиться, что объекты Sphere и Colinder являются дочерними для объекта Ufo. Ш а г 3. Редактирование свойств объектов виртуального мира. Найдите у объекта Sphere свойство scale, сделайте на нем двойной щелчок и в появившемся окне поставьте галочки возле осей X axis и Z axis. После этого переведите горизонтальный ползунок так, чтобы размеры сферы по осям X и Z увеличились в 4 раза (рис. 10.6).
Рис. 10.6. Редактирование свойств объекта Sphere
Теперь найдите у объекта Colinder свойство radius (радиус). Сделайте двойное нажатие на свойстве radius и установите значение радиуса, равным 4,1 м. Результат редактирования приведен на рис. 10.7. 45
Рис. 10.7. Редактирование свойства radius объекта Colinder
Затем найдите у объекта Colinder свойство height (высота). Сделайте двойное нажатие на свойстве height и установите значение высоты, равным 0,2 м. Результат редактирования приведен на рис. 10.8.
Рис. 10.8. Редактирование свойства height объекта Colinder
Летающий объект создан. Теперь необходимо сохранить созданный виртуальный объект в свою папку под именем «prakt10» (меню File>Save as…). Ш а г 4. Указание свойств объектов виртуального мира, которые будут изменяться сигналами SIMULINK. Не закрывая редактор V-Realm Builder, перейдем в заготовку модели и снова сделаем двойной щелчок на блоке VR Sink. В появившемся окне параметров найдем кнопку Browse… и нажмем ее. В появившемся окне «Select world» необходимо перейти в свою папку, найти и загрузить только что сохраненный виртуальный мир «prakt10». Для подтверждения выбора необходимо нажать кнопку Apply. Результат приведен на рис. 10.9. В правой части окна параметров появилось дерево объектов виртуального мира, в чем можно убедиться нажав на слева от объекта Ufo. Поставьте галочку у свойства translation объекта Ufo, как это показано на рис. 10.10, и нажмите кнопку Apply. 46
Рис. 10.9. Результат загрузки виртуального мира в блок VR Sink
Рис. 10.10. Указание свойств объектов виртуального мира, которые будут изменяться сигналами из SIMULINK
Ш а г 5. Запуск и проверка работоспособности модели. Теперь перейдем в модель SIMULINK и убедимся, что у блока VR Sink появился вход Ufo.translation. Сделайте соединения, как это показано на рис. 10.11. Измените параметры блоков Look-Up Table, как это указано в табл. 10.2. Сохраните модель в свою папку под именем «prakt10», затем сделайте двойное нажатие на блоке VR Sink и нажмите кнопку View. Откроется просмотрщик, в котором появится изображение летающей тарелки. Чтобы оживить модель, запустите ее на моделирование нажатием на кнопку
. Результат моделирования приведен
на рис. 10.11. 47
Рис. 10.11. Модель летающего объекта
Таблица 10.2 Новые параметры блоков Look-Up Table Название блока
Look- Up Table Look- Up Table1 Look- Up Table2
Новые значения параметров
Vector of input values: [0 2 8 10] Vector of output values: [–1 0 0 1] Vector of input values: [0 2 8 10] Vector of output values: [0 6 8 0] Vector of input values: [0 2 8 10] Vector of output values: [–20 –15 –5 0]
Задание для самостоятельной работы: создать небольшой рекламный ролик, элементами которого должны быть: Background, Evaluation Grid, Box, Transform, Direction Light, Viewpoint; создать виртуальную модель электронного модуля 2-го уровня, элементами которого должны быть: Background, Evaluation Grid, Box, Transform, Direction Light, Viewpoint Практическое занятие № 11 МОДЕЛИРОВАНИЕ ЭНЕРГЕТИЧЕСКИХ СИСТЕМ POWER SYSTEM BLOCKSET Цель занятия: получить навыки моделирования работы силовых систем и устройств. 11.1. Создание модели сетевого выпрямителя Запустите SIMULINK и создайте новое окно редактора блок-схем. Затем перетащите в окно следующие блоки: AC Voltage Source 48
(SimPowerSystems/Electrical Sources), Diode (SimPowerSystems/Power Electronics), Parallel RLC Branch (SimPowerSystems/Elements), Voltage Measurement (SimPowerSystems/Measurements), 3 блока Scope (Simulink/Sinks), Demux (Simulink/Signal Routing). Расположите блоки и соедините их связями, как это показано на рис. 11.1.
Рис. 11.1. Модель однополупериодного выпрямителя
Измените параметры блока Parallel RLC Branch согласно табл. 11.1. Таблица 11.1 Новые значения параметров блока Parallel RLC Branch Параметр
Новое значение
Resistance
1000
Inductance Capacitance
inf 1e- 4
При установке параметра Inductance = inf изображение индуктивности исчезнет. Теперь откройте окно установки параметров моделирования (меню Simulation->Simulation parameters…) и установите время окончания моделирования Stop time равным 0.05. Сохраните модель под именем «prakt11» и запустите. Модель не запустится, но появится сообщение (рис. 11.2): «Ваша система содержит нелинейные элементы. Для улучшения качества моделирования вам следует использовать решатели для жестких систем. Рекомендуемые решатели: ode23tb или ode15s». Снова вернемся в окно установки параметров моделирования и выберем один из рекомендуемых решателей, например ode15s, и снова запустим модель. Теперь процесс моделирования проходит быстрей, и можно рассмотреть результаты моделирования (рис. 11.3). 49
Рис. 11.2. Система рекомендует выбрать решатели для жестких систем
Рис. 11.3. Результаты моделирования однополупериодного выпрямителя
Блок Scope отображает ток через диод, Scope1 – напряжение на диоде, Scope2 – напряжение на нагрузке. 11.2. Исследование влияния величины нагрузки на форму выпрямленного напряжения Уменьшим сопротивление нагрузки (Resistance = 300) и снова запустим модель. Результаты моделирования приведены на рис. 11.4. Видно, что ток через диод возрос, также возросли пульсации напряжения на нагрузке.
Рис. 11.4. Результаты моделирования при сопротивлении нагрузки, уменьшенном до 300 Ом
50
Теперь увеличим емкость фильтра (Capacitance = 1e-3 ) и запустим модель. Результаты моделирования приведены на рис. 11.5. Видно, что ток через диод возрос, а амплитуда пульсаций уменьшилась.
Рис. 11.5. Результаты моделирования при емкости фильтра, увеличенной до 1e-3 Ф
Задание для самостоятельной работы: самостоятельно исследовать двухполупериодную и мостовую схемы выпрямления, для этого сохранить модель под именами «prakt112» и «prakt113».
51
Рекомендуемая литература 1. Черных И. В. SIMULINK: среда создания инженерных приложений/ Под общ. ред. В. Г. Потемкина. М.: ДИАЛОГ-МИФИ, 2003. 496 с. 2. Гультяев А. Имитационное моделирование в среде Windows: Практ. пособие. СПб.: КОРОНА-Принт, 1999. 250 с. 3. Дьяконов В., Круглов В. Математические пакеты расширения MATLAB: Спец. справочник. СПб.: Питер, 2001. 480 с. 4. Дьяконов В., Круглов В. MATLAB. Анализ, идентификация и моделирование систем: Спец. справочник. СПб.: Питер, 2002. 448 с. 5. Прикладные нечеткие системы / Под ред. Т. Тэрано, К. Асаи, М. Сугэно. М.: Мир, 1993. 368 с. 6. Аврамова О. Д. Язык VRML: Практ. руководство. М.: ДИАЛОГМИФИ, 2000. 288 с. 7. Потемкин В. Г., Медведев В. С. Нейронные сети. MATLAB 6. М.: ДИАЛОГ-МИФИ, 2002. 496. 8. Гультяев А. Визуальное моделирование в среде MATLAB: Учеб. курс. СПб.: Питер, 2000. 300 с. 9. Ярушкина Н. Г. Основы теории нечетких и гибридных систем: Учеб. пособие. М.: Финансы и статистика, 2004. 320 с. 10. Осовский С. Нейронные сети для обработки информации / Пер. с польск. И. Д. Рудинского. М.: Финансы и статистика, 2004. 344 с. 11. Леоненков А. В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. СПб.: БХВ-Петербург, 2005. 736 с. 12. www.matlab.ru. 13. www.web3d.org. 14. www.exponenta.ru.
52