Текст
                    А. Гультлев
ВИЗУАЛЬНОЕ
МОДЕЛИРОВАНИЕ
вереде MATLAB
учебный
курс
современное средство
для построения
имитационных моделей
процессов
С^ППТЕР

А. Гультяев ВИЗУАЛЬНОЕ МОДЕЛИРОВАНИЕ в среде MATLAB ✓^учебный ''Ч курс С^ППТЕР Санкт-Петербург Москва • Харьков • Минск 2000
А. Гулыпяев Визуальное моделирование в среде MATLAB: учебный курс Главный редактор Заведующий редакцией Руководитель проекта Литературный редактор Художник Корректоры Верстка В. Усманов Е. Строганова И. Корнеев А. Жданов Н. Биржаков С. Журовина, Н. Солнцева Р. Гришанов ББК 32.973.2-018я7 J УДК 681.3.06(075) ] Гультяев А 5 Г94 Визуальное моделирование в среде MATLAB: учебный курс — СПб: Питер,* 2000. — 432 с.: ил. ISBN 5-272-00279-2 В книге описываются возможности моделирования процессов в реальном масштабе времени,. реализуемые популярным интегрированным пакетом MATLAB и системой визуального моделирования SIMULINK. Они позволяют спланировать имитационный эксперимент, обработать его результаты и создать программное обеспечение управления сложной системой, не прибегая при этом к написанию громоздких программ. Книга рассчитана на читателей, знакомых с теорией управления и имеющих некоторые навыки программирования. © А. Гультяев, 2000 © Серия, оформление, Издательский дом «Питер», 2000 Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного . разрешения владельцев авторских прав. р Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых свадений и не несет ответственность за возможные ошибки, связанные с использованием книги. ISBN 5-272-00279-2 ЗАО «Питер Бук». 196105, Санкт-Петербург, Благодатная ул., д. 67. Лицензия ИД № 01940 от 05.06.00. Налоговая льгота — общероссийский классификатор продукции ОК 005-93, том 2; 95 3000 — книги н брошюры. Подписано к печати с готовых диапозитивов 25.08.00. Формат 7Ох 1ОО1/16. Уел. печ. л. 34,83. Тираж 5000. Зак. 138. ОАО «Санкт-Петербургская типография № 6». 193144, Санкт-Петербург, ул. Моисеенко, 10. Телефон отдела маркетинга 271-35-42.
Содержание Урок 1. Роль математического моделирования в процессе принятия решений........8 Общая схема процесса принятия решений.................................9 Классификация задач принятия решений................................. 1 5 Описание предпочтений лица, принимающего решение.................... 17 Выявление предпочтений ЛПР.......................................1 8 Виды показателей эффективности................................... 1 9 Основные понятия теории моделирования................................22 Принципы моделирования...........................................23 Этапы математического моделирования..............................23 Построение концептуальной модели.................................25 Описание рабочей нагрузки........................................27 Что нового мы узнали?................................................30 Урак 2. Основы технологии имитационного моделирования.........................31 Понятие статистического эксперимента.................................32 Область применения и классификация имитационных моделей..............34 Описание поведения системы...........................................38 Моделирование случайных факторов.....................................40 Методы генерации случайных чисел.................................40 Требования к генераторам случайных чисел.........................41 Моделирование случайных событий..................................43 Моделирование случайных величин..................................44 Управление модельным временем........................................46 Виды представления времени в модели..............................46 Изменение времени с постоянным шагом............................4 В Изменение времени по особым состояниям...........................50 Моделирование параллельных процессов.................................53 Виды параллельных процессов......................................53 Методы описания параллельных процессов...........................55 Применение сетевых моделей для описания параллельных процессов...58 Планировоние модельных экспериментов.................................63 Цели планирования экспериментов..................................63 Стратегическое планирование имитационного эксперимента...........65 Тактическое планировоние эксперимента............................68 Обработка и анализ результатов моделирования.........................72 Оценка качества имитационной модели..............................73 Калибровка модели................................................77 Подбор параметров распределений..................................78 Оценка влияния и взаимосвязи факторов............................82 Что нового мы узнали?................................................87
Содержоние Урок 3. Знакомство с пакетом MATLAB...........................................88 Общие сведения.......................................................89 £< Установка..............................................................91 о1 Меню командного окна...................................................92 ° Настройка системы......................................................96 Г Команда Set Path..................................................96 Команда Preferences..............................................99 Настройка графического интерфейса...............................103 Средства помощи пользователю........................................104 Демонстрация возможностей системы...............................104 Справочная система в формате HTML...............................105 Справочная система в формате PDF................................106 Справочник по функциям MATLAB...................................1 Об Что нового мы узнали?...............................................1 08 Урок 4. Библиотека блоков SIMULINK...........................................109 SIMULINK — инструмент визуального моделирования.....................110 Начало работы...................................................110 Демонстрация возможностей.......................................115 Организация работы с библиотекой SIMULINK...........................120 Раздел Sources......................................................123 Раздел Sinks........................................................133 Раздел Continuous...................................................145 Раздел Discrete.....................................................150 Раздел Functions & Tables...........................................152 Раздел Math.........................................................159 Раздел Nonlinear....................................................169 Раздел Signals & Systems............................................17 5 Общие свойства блоков...............................................195 Виртуальные и невиртуальные блоки...............................197 Что нового мы узнали?..............................................1 98 Урок 5. Дополнительные библиотеки блоков.....................................199 Библиотека Simulink Extras..........................................200 Наборы блоков.......................................................201 Библиотека DSP Blackset.............................................202 Накопители......................................................202 Блоки логического управления....................................216 Блоки статистической обработки сигналов.........................228 Что нового мы узнали?...............................................236 Урок 6. Технология моделирования в среде SIMULINK............................237 Меню пользователя...................................................238 Меню File.......................................................238 Меню Edit.......................................................240 Меню View.......................................................244 Меню Simulation.................................................246 Меню Format.....................................................262 Первая модель.......................................................264 Возможные изменения.............................................267 Возможные добавления............................................275
Содержание 7 Описание случайных факторов........................................289 Моделирование случайных событий................................289 Генероция случайных величин с заданными параметрами............294 Управление временем................................................296 Выбор шага моделирования.......................................297 Управление окончанием сеанса моделирования................... 300 Синхронизация параллельных процессов...........................302 Что нового мы узнали?..............................................306 Урок 7. Подсистемы............................................................308 Создание подсистем....................................................309 Команда Create Subsystem.........................................309 Интерфейс подсистем..............................................311 Блок Subsystem...................................................312 Управляемые подсистемы................................................322 Е-подсистемы.....................................................322 Т-подсистемы.....................................................325 ЕТ-подсистемы....................................................327 Маскирование подсистем................................................32В ей Редактор маски...................................................329 Описание параметров подсистемы...................................332 Создание значка подсистемы.......................................335 Средства поддержки пользователя..................................341 Создание справочных подсистем.........................................343 Применение стандартной функции открытия..........................344 Применение нестандартной функции открытия........................345 Разработка собственной библиотеки блоков..............................346 Окно библиотеки..................................................346 Коррекция связи с библиотекой....................................348 Создание разделов библиотеки.....................................350 Отладчик блок-диаграмм................................................351 Запуск отладчика.................................................351 Режимы работы отладчика..........................................353 Управление выводом информации о процессе отладки.................355 Что нового мы узнали?.................................................356 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB.............357 Планирование экспериментов и обработка результатов моделирования..359 Планирование экспериментов....................................................359 Обработка и анализ результатов моделирования..................................363 Создание сценариев анализа данных.............................................372 STATEFLOW — инструмент событийного моделирования..................•................386 Организация взаимодействия между SIMULINK и STATEFLOW.........................386 Основные объекты SF-диаграммы.................................................388 Технология создания SF-диаграмм...............................................396 Средства отладки SF-моделей...................................................398 Работа в Мастерской реального времени..................:................................................403 Организация взаимодействия SIMULINK и RTW.....................................403 Работа SIMULINK во внешнем режиме...............................413 Что нового мы узнали?...............................................419
Роль математического моделирования в процессе принятия решений □ Общая схема процесса принятия решений □ Классификация задач принятия решений □ Описание предпочтений лица, принимающего решение □ Основные понятия теории моделирования
Втече! ine всей своей жизни, от первых шагов и до последнего вздоха, человек вынуж- ден принимать те или иные решения: какой подарок попросить у Деда Мороза, куда пойти учиться, как лучше потратить лишние (или последние) деньги и т. д. Если определенная ситуация, требующая принятия решения, повторяется достаточ- но часто, то решение приходит «само собой», автоматически. Если же ситуация не- достаточно знакома, или человек не располагает всей необходимой информацией, то принятие решения существенно усложняется. В таких случаях он вынужден, как правило, сравнивать между собой несколько возможных вариантов и выбирать тот, который кажется ему наиболее предпочтительным (или наименее опасным). Например, представим себе такую ситуацию: некйй добросовестный служащий опаздывает на работу; к остановке, которая находится на противоположной стороне уМщы, подходит автобус, а светофор сияет красным светом. У бедняги есть два варианта действий — пересечь улицу с риском для жизни на красный светили поехать Наследующем автобусе. Для принятия решения он должен знать, когда появится следующий автобус, а также соотнести потери от опоздания и возможного неудач- ного перехода улицы. Общая схема процесса принятия решений т В приведенном выше примере служащий сам принимает решение и сам же будет претворять его в жизнь. Значительно более важные последствия имеют так называе- мые управляющие решения. Они характеризуются тем, что выбор и реализация решения возлагаются на различные элементы единой и, как правило, достаточно сложной, системы. Принимается решение управляющим органом, а реализуется — исполнительным. Система, средствами которой формируется и реализуется решение, может быть организационной, технической, либо смешанной (комбинированной). Примером организационной системы может служить любое учебное заведение. В нем управляющим органом является ректорат, а исполнительным — профессорско-пре- подавательский и инженерно-технический состав. Беспилотный самолет-бомбар- дировщик — образец чисто технической системы (управляющий орган — бортовой компьютер, исполнительный — система бомбометания). Наиболее распространенны- ми в настоящее время являются смешанные системы, которые иногда называют еще «человеко-машинными» системами. К таким системам относится, в частности, любое современное промышленное предприятие. Одним из важнейших атрибутов сложной системы является наличие целенаправлен- ного поведения. В процессе достижения цели система так или иначе взаимодействует с внешней средой, которая может быть либо «дружелюбной», либо «враждебной», либо нейтральной. Очевид! ю, чем сложнее система и чем сложнее ее взаимодействие со средой, тем больше существует различных вариантов движения к цели. Одни могут быть лучше, другие хуже, третьи вообще могут привести к разрушению системы. А может отыскаться один, самый-самый, при котором «и волки сыты, и овцы целы». Итак, чтобы любая система жила долго и счастливо, необходимо уметь, во-первых, оценивать качество всех возможных способов достижения цели и, во-вторых, выби- .dfe 'А
10 Урок 1. Роль математического моделирования в процессе принятия решений рать из них наилучший с точки зрения интересов системы (либо, по крайней мере, один из пригодных). Для решения указанных задач разработана специальная теория, которая так и называется — теория принятия решений. Для дальнейшего изложения нам потребуется ряд терминов и понятий, используемых в этой теории. В основе принятия решения лежит исследование операции. Под операцией в данном случае понимается процесс достижения цели системой (с учетом ее взаимодействия с внешней средой). Исследование операции заключается в оценке и сравнении воз- можных способов ее проведения с учетом имеющихся ограничений. Ограничения, как правило, связаны с временными, материальными, людскими или другими вида- ми ресурсов, которые находятся в распоряжении оперирующей стороны {субъекта операции). Таким образом, способ проведения операции определяется стратегией использования имеющихся ресурсов. Поэтому вместо выражения «способ проведе- ния операции» чаще используют термин стратегия. Такая терминология обуслов- лена еще и тем, что появление этого раздела математики связано с исследованием военных операций. Стратегии, удовлетворяющие наложенным ограничениям, назы- ваются допустимыми. Понятие «допустимая стратегия» является относительным: множество допустимых стратегий изменяется, если изменяются ограничения (или имеющиеся ресурсы). Реализация той или иной допустимой стратегии приводит к различным исходам операции. Качество проведения операции, ее «успешность» оценивается с позиций лица, принимающего решение (ЛПР). ЛПР — это совсем необязательно конкретный человек определенной национальности. Под этим термином в теории принятия реше- ний понимается любой управляющий орган, персональный или коллегиальный, имеющий биологическое или техническое воплощение. В указанном смысле оценка качества проведения операции всегда является субъективной. Тем не менее, для по- лучения такой оценки должны использоваться объективные методы. Мерой эффективности проведения операции служит показатель эффективности. В общем случае он отражает результат проведения операции, который, в свою очередь, является функцией трех факторов: полезного эффекта операции (q), затрат ресурсов на проведение операции (с) и затрат времени на ее проведение (t). Значения q, с и t зависят от стратегии проведения операции ( и ). В формальном виде сказанное мож- но записать так: Yon = Y(q(u), c(u), t(u)) В зависимости от того, какие стороны планируемой операции интересуют ЛПР, список аргументов в указанном выражении может изменяться. Например, если эф- фективность операции не зависит от ее длительности, то фактор времени t (и) может быть опущен. И наоборот, факторы, наиболее существенные с точки зрения ЛПР, должны быть детализированы. В частности, затраты на проведение операции с (и) могут быть представлены в виде вектора {с, (и), с2(и), с3(и),...}, каждая компонен- та которого соответствует определенному типу ресурсов. Необходимо отметить, что факторы q, с и t могут носить не только количественный, но и качественный характер. Причем, форма их описания зависит как от сферы деятель- ности, к которой относится рассматриваемая операция (или, как говорят, «предмет-
Общая схема процесса принятия решений 11 ной области»), так и от возможности и требований к точности их оценки. Разумеет- ся, количественные оценки во многих случаях являются более объективными, одна- ко при решении некоторых задач они либо просто не нужны, либо их получение является слишком трудоемким, а вводимые упрощения искажают сущность решае- мой задачи. В качестве иллюстрации к изложенному рассмотрим ситуацию, которая на протя- жении многих лет повторяется в зимнее время на водоемах, окружающих Санкт- Петербург. Речь идет об операциях по спасению рыбаков, уносимых от берега на ото- рванных льдинах. Очевидно, что каждая такая операция может быть проведена либо более, либо менее успешно в зависимости от выбранной стратегии поиска потерпевших, используемых сил и средств и т. д. При количественной оценке результата операции факторы в показанном выше выражении получают следующую интерпретацию: О q(u)—число спасенных рыбаков; О с( и) — стоимость спасательных работ (в рублях); О t (и) — время на проведение операции (в часах). Имея возможность рассчитать указанные величины, можно получить достаточно объективную оценку эффективности выбранной стратегии и проведения спасатель- ной операции. Однако не менее реалистичную оценку можно получить и при исполь- зовании качественных значений тех же величин: О q (и) — сохраняя тот же смысл, принимает только одно из двух значений — уда- лось спасти всех или нет; О с( и) — также имеет два возможных значения — превышена смета на проведение работ или нет; О t(u) — удастся ли закончить операцию до наступления темноты. Несмотря на определенные преимущества качественного подхода к оценке результа- та операции, сравнение таких оценок связано со значительными трудностями. Для их преодоления создана специальная теория — теория отношений. Описание исполь- зуемых в ней методов выходит за рамки данной книги. Поэтому все последующее изложение относится к таким задачам поиска решения, в которых показатель эф- фективности имеет количественное выражение. Итак, показатель эффективности (ПЭ) позволяет оценить (точнее, описать) резуль- тат операции, полученный при использовании конкретной стратегии. Однако даже если такие оценки будут получены для всего множества допустимых страт егий, это- го еще не достаточно, чтобы выбрать одну из них, ту, которая будет реализована. Например, при оценке загруженности вычислительной сети оказалось, что коэффи- циент использования равен 0.7. Хорошо это или плохо? Чтобы ответить на подоб- ный вопрос, необходимо сформулировать правило, позволяющее ЛПР сравнивать Между собой стратегии, характеризующиеся различными значениями ПЭ. В одних случаях правило сравнения может быть очень простым, в других же его вообще не Удается найти и приходится изменять (уточнять) показатель эффективности. Ска- жем, если автомобиль одной и той же марки в двух разных автосалонах продается по разным ценам (при прочих равных условиях), то правило выбора салона напрашива-
12 Урок 1. Роль мотемотического моделирования в процессе принятия решений ется само собой. Совсем другое дело, когда автомобили различаются стоимостью, фирмой-изготовителем, дизайном, организацией гарантийного обслуживания и т. д. При этом первый оказывается предпочтительнее по одним показателям, второй — по другим. В такой ситуации покупатель должен сначала определить правило выбо- ра и только после этого сравнивать между собой различные варианты. В теории принятия решений правило, на основании которого производится выбор стратегии, отвечающей интересам Л ПР, называется критерием эффективности. Таким образом, показатель эффективности и критерий эффективности в совокуп- ности отражают цели, которые преследует Л ПР при проведении данной операции, а также наиболее предпочтительный для него способ достижения этой цели. Читателю, вероятно, известна трагедия буриданова осла, который погиб от голода, так и не выбрав одну из двух охапок сена. Почему это произошло? Да потому, что не было у него ни показателя, ни критерия эффективности, отражающих его предпоч- тения. Необходимо отметить, что на практике предпочтения ЛПР непостоянны и могут изменяться даже в одной и той же ситуации выбора. В связи с этим важное значение имеет понятие концепции рационального поведения ЛПР. Та линия поведения (кон- цепция), которой придерживается ЛПР, и определяет выбор правила, на основе ко- торого будут сравниваться стратегии. Согласно теории принятия решений, ЛПР может использовать одну из трех концеп- ций рационального поведения: пригодности, оптимальности или адаптивности. При использовании концепции пригодности приемлемой считается любая страте- гия, обеспечивающая значение ПЭ не хуже заданного. Концепция оптимальности требует, чтобы из всего множества допустимых страте- гий была выбрана только та, которая приводит к наилучшему («экстремальному») значению ПЭ. Концепция адаптивного поведения предполагает, что правило выбора может изме- няться в соответствии с изменяющимися характеристиками рассматриваемой си- туации. Поясним различие в использовании различных концепций рационального поведе- ния, воспользовавшись приведенным ранее примером (оценка загруженности сети). Пусть имеются три альтернативные стратегии организации работы сети. Первая обес- печивает значение коэффициента загрузки, равное 0.6, вторая — 0.7, третья — 0.9. При использовании концепции пригодности должно быть задано минимально допусти- мое значение коэффициента загрузки. Если оно равно 0.7, а оценка стратегий прово- дилась в порядке их нумерации, то в качестве управляющего решения будет выбрана вторая (хотя при изменении порядка оценки на ее месте может оказаться и третья). При использовании концепции оптимальности выбор в рассматриваемой ситуации будет всегда однозначен — в качестве стратегии управления работы сетью будет приниматься только третья. Даже на фоне этого простого примера можно дать краткую сравнительную оценку первых двух концепций: концепция пригодности требует, как правило, меньших за-
Общая схема процесса принятия решений 13 трат времени на поиск решения и обладает определенной гибкостью, зато концепция оптимальности гарантирует выбор наилучшего решения из числа допустимых. Еще большей гибкостью обладает концепция адаптивности. Для приведенного при- мера она может быть реализована так: допустимый уровень загрузки сети будет из- меняться при изменении параметров сети (в частности, ее конфигурации), а вместе с ним будет изменяться и стратегия управления сетью. И вот теперь мы вынуждены снова вернуться к понятию результата операции и свя- занному с ним показателю эффективности. Чтобы сравнивать между собой различ- ные стратегии, необходимо располагать их количественными оценками (то есть соот- ветствующими значениями ПЭ). Каким образом они могут быть получены? Самый надежный способ — это измерение результата операции после ее реального проведе- ния (при этом под измерением может пониматься подсчет, хронометраж, взвешива- ние и т. д.). Очевидно, что такой подход связан с целым рядом проблем. О Во-первых, далеко не всегда можно повторить операцию в одних и тех же усло- виях (погода изменилась, исполнители устали или вышли из строя и т. п.), что, j естестве! шо, не позволяет говорить об объективности выбора. О Во-вторых, многие операции просто невозможно провести повторно, используя другую стратегию (например, Курскую битву). О В-третьих, реальное воплощение системы, используемой при проведении опера- ции, как правило, является весьма дорогостоящим и трудоемким делом, а если речь идет о сравнении проектных или koi кггрукторских решений, то затраты средств и времени возрастают пропорционально числу сравниваемых вариантов. Список проблем можно было бы продолжить, но и приведенных вполне достаточно, •’ чтобы сделать вывод: методу измерений должна существовать какая-то альтернати- ва. И вот здесь на первое место выходит моделирование. Пока ограничимся достаточно общей трактовкой данного понятия. Моделирование — это замещение исследуемого объекта (оригинала) его условным образом или другим объектом (моделью) и изучение свойств оригинала путем ис- следования свойств модели. Очевидно, что действительная польза от моделирования может быть получена толь- ко при соблюдении двух условий: О модель обеспечивает корректное (или, как говорят, адекватное) отображение свойств оригинала, существенных с точки зрения исследуемой операции; О модель позволяет устранить перечисленные выше проблемы, присущие проведе- нию измерений на реальных объектах. О том, как обеспечить выполнение этих условий, пойдет речь в следующих главах. А пока еще одно предварительное замечание. Взависимости от способа реализации, все модели можно разделить на два больших Класса: физические и математические. О Физические модели предполагают, как правило, реальное воплощение тех физи- ;л. - Ческих свойств оригинала, которые интересуют ЛПР. Например, при проекта-
14 Урок 1. Роль математического моделирования в процессе принятия решений ровании нового самолета создается его макет, обладающий теми же аэродинами- ческими свойствами; при планировании застройки архитекторы изготавливают макет, отражающий пространственное расположение ее элементов. В связи с этим физическое моделирование называют также макетированием. О Математическая модель представляет собой формализованное описание сис- темы (или операции) на некотором абстрактном языке, например в виде сово- купности математических соотношений или схемы алгоритма. По большому счету, любое математическое выражение, в котором фигурируют физические величины, можно рассматривать как математическую модель того или иного процесса или явления. В частности, известное всем еще из начальной школы уравнение S=V-t, представляет собой модель равномерного прямолинейного движения. Именно математические модели мы и будем рассматривать в даль- нейшем как основной инструмент оценки эффективности альтернативных стра- тегий. Изложенное в данном разделе можно представить в виде следующей схемы (рис. 1.1). Рис. 1.1. Общая схема процесса принятия решения
Классификация задач принятия решений 15 Наиболее примечательным в данной схеме является то, что процесс поиска (выбо- ра) решения носит циклический характер. Имеется в виду, что любой из входящих в него этапов может повторяться неоднократно до тех пор, пока не будет найдено решение, удовлетворяющее требованиям ЛПР (либо не истечет время, отпущенное на принятие решения). При этом могут уточняться цели и условия проведения опера- ции, корректироваться модель предпочтений ЛПР и модель самой операции. Оче- видно, длительность и успех поиска зависят не только от знаний и навыков иссле- дователя, но и от того, какие инструменты он использует в своей работе. Именно поэтому основное внимание в книге уделено описанию средств визуального моде- лирования — программе SIMULINK, входящей в состав универсального математи- ческого пакета MATLAB. И все-таки даже самый хороший инструмент дает наилучший результат только в том случае, когда его обладатель знает больше, чем написано в инструкции по эксплуатации. Классификация задач принятия решений Одно из наиболее важных условий сокращения затрат времени и сил при поиске решения — это умение правильно выбрать метод поиска. За’Время существования теории принятия решений для наиболее часто встречающихся задач были разрабо- / таны методы, учитывающие их характерные особенности. Практически любая ситуация, требующая принятия решения, может быть отнесена к тому или иному известному классу, и исследователю остается только «узнать» ее. Для этого требуется, по крайней мере, иметь представление о характерных призна- ках различных классов. В настоящее время отсутствует единая универсальная клас- сификационная схема задач принятия решений, однако практически во всех изда- ниях, посвященных этим вопросам, фигурируют следующие классификационные признаки (рис. 1.2): О число лиц, принимающих решение; О вид показателя эффективности; О степень определенности информации о проблемной ситуации; О зависимость характеристик проблемной ситуации от времени. По признаку числа ЛПР различают задачи индивидуального и группового принятия решений. При групповом выборе решений определяющую роль играет проблема со- гласования индивидуальных предпочтений членов группы. По виду показателя эффективности задачи принятия решения подразделяют на за- дачи со скалярным и векторным показателем. При использовании скалярного ПЭ предполагается, что Л ПР интересует только одна лз составляющих результата операции (то есть только одна из характеристик страте- гии), например, ее длительность. Это наиболее простой случай при выборе стратегии. Но простота не означает, что определить значение скалярного ПЭ тоже легко. Прак- тически все методы математического программирования предназначены для поиска Решений именно по скалярному показателю. Необходимо отметить, что при использо- вании этих методов в роли показателя эффективности выступает целевая функция.
16 Урок 1. Роль мотемотического моделирования в процессе принятия решений Рис. 1.2. Классификация задач принятия решений При сравнении стратегий по векторному ПЭ могут быть использованы специальные методы, позволяющие свести векторный показатель к скалярному. Некоторые из них будут рассмотрены в следующем разделе. Вообще же выбор показателя эффективности является одним из наиболее важных и сложных этапов поиска решения и требует от исследователя не только опыта и зна- ния рассматриваемой предметной области, но и элементов творчества. Наиболее распространенные и полезные в практическом смысле формы ПЭ также будут рас- смотрены в следующем разделе. По степени определенности информации о проблемной ситуации различают задачи принятия решений в условиях определенности и задачи принятия решений в усло- виях неопределенности. Задачи принятия решений (ПР) в условиях определенности характеризуются нали- чием полной и достоверной информации о проблемной ситуации, целях, ограниче- ниях и последствиях принимаемых решений. В таких задачах заранее, до начала опе- рации, известно, к какому исходу приведет каждая из стратегий. Это, в частности, означает, что все внешние факторы известны, учтены, и они не могут каким-либо непредвиденным образом повлиять на исход операции. Характерная особенность всех задач ПР в условиях неопределенности состоит в том, что исход операции зависит не только от стратегий ЛПР и фиксированных факто- ров, но и от неопределенных факторов, не контролируемых ЛПР и не известных ему в момент принятия решения (или недостоверно известных). В результате каждая стратегия оказывается связанной с множеством возможных исходов операции, что существенно осложняет процесс выработки решения. Задачи принятия решений в условиях неопределенности подразделяют на задачи стохастической и нестохастической неопределенности.
Описание предпочтений лица, принимающего решение 17 В случае стохастической неопределенности каждой стратегии соответствует неко- торое конечное множество исходов, причем исследователю известны их вероятност- ные характеристики. Но даже если он ориентируется на наиболее вероятный исход, это не означает, что операция будет развиваться именно по данному сценарию. Поэтому задачи такого типа называют также принятием решений в условиях риска. Они имеют место в тех случаях, когда на исход операции могут повлиять те или иные случайные факторы. Например, если встречаются две примерно равные по силам футбольные команды, то возможны три различных исхода матча (либо побеждает первая команда, либо вторая, либо встреча заканчивается вничью); вероятность каждого из исходов известна (равна %), но какой именно будет реализован, остает- ся загадкой практически до окончания игры. Задачи ПР в условиях нестохастической неопределенности подразделяются, в свою очередь, i ia задачи ПР в условиях природной и поведенческой неопределенности. Такие задачи возникают в тех случаях, когда ЛПР не располагает вероятностными • характеристиками возможных исходов операции, либо они вообще не являются , ^случайными. В лучшем случае известны лишь диапазоны их значений. 4 Если ограниченность информации обусловлена недостаточной изученностью при- роды рассматриваемых явлений, то говорят о задачах с «природной» неопределен- ностыо. Если же недостаток информации обусловлен влиянием на ход операции других субъектов помимо ЛПР, то имеет место задача «поведенческой» неопреде- ленности. Для решения задач с поведенческой неопределенностью используются . методы теории игр. ЦТо Характеру зависимости проблемной ситуации от времени различают статиче- , -й?Мие и динамические задачи ПР. В динамических задачах параметры (характеристи- ками) проблемной ситуации изменяются во времени. Классификация задач ПР по перечисленным признакам приводит к различным комбинациям типов задач. Например, выбор варианта атаки летчиком истребителя может быть классифицирован как динамическая скалярная задача индивидуально- го принятия решения в условиях поведенческой неопределенности, поскольку в Данном случае в качестве ПЭ используется вероятность уничтожения цели и для любой выбранной стратегии исходы случайны, что обусловлено наличием фактора неопределенности — поведением противника. Описание предпочтений лица, принимающего решение •>^ак было показано в предыдущем разделе, модель предпочтений ЛПР служит осно- вой для принятия решения, то есть для выбора такой стратегии, которая в наиболь- Шей степени соответствует его интересам в планируемой операции. В свою очередь, ^предпочтения ЛПР могут быть выражены посредством выбора показателя и крите- Рия эффективности.
18 Урок 1. Роль математического моделирования в процессе принятия решений Выявление предпочтений ЛПР В простейшем варианте каждой стратегии может быть поставлено в соответствие значение скалярного ПЭ (здесь применимы методы математического программиро- вания). Более сложная (и более распространенная на практике) ситуация возникает, когда каждая из допустимых стратегий характеризуется векторным ПЭ. Трудности выбора еще более возрастают в условиях неопределенности, при отсутствии одно- значного соответствия между стратегиями и их векторными оценками. Если система предпочтений Л ПР обладает свойствами полноты и направленности, то может быть построена модель предпочтений ЛПР. Слово «модель» в данном случае означает формализованное описание соответствующих категорий, которое обеспе- чивает повторение процедуры выбора в однотипных ситуациях при различных ис- ходных данных. Кроме того, модель предпочтений ЛПР может быть использована для автоматизации процесса поиска решения. Но в любом случае для успешного решения задачи выбора необходимо выявить и измерить предпочтения ЛПР. Под выявлением предпочтений ЛПР понимают процесс получения информации о суждениях ЛПР относительно возможных исходов операции. Существует два под- хода к выявлению предпочтений: О на основе информации о ранее принятых решениях (при многократном повторе- нии выбора в неизменных условиях); О до принятия решения ЛПР — посредством специальной процедуры опроса. Именно в результате выявления предпочтений Л ПР оказывается возможным опре- делить, обладают ли они (предпочтения) свойствами полноты и направленности. Система предпочтений ЛПР обладает свойством полноты на множестве D элементов выбора, если она позволяет сравнить между собой любые два элемента d„ d2 G D и вынести одно из трех альтернативных суждений: a) d, предпочтительнее d2; б) d, и d2 равноценны; в) d2 предпочтительнее d,. Свойство направленности означает следующее. Если, например, при сравнении эле- ментов d, и d2 ЛПР выносит суждение: «d, предпочтительнее d2», а при сравнении элементов d2 и d3 — «d2 предпочтительнее d3», то при сравнении элементов d, и d2 его вывод должен быть однозначен: «d, предпочтительнее d3». Измерение предпочтений есть отображение альтернативных вариантов решений на числовую ось. В случае описания стратегий с помощью скалярного ПЭ измерение предпочтений не вызывает трудностей. Иногда может быть получена функциональная зависимость между частными ПЭ и результатом операции, что позволяет представить результат в виде скалярной величины. В более сложных случаях используются другие способы измерения предпочтений. Прежде чем перейти к их описанию, введем понятие «шкалы измерений». Шкала измерений — это система обозначений, позволяющая поставить в соответ- ствие объекту некоторый признак и использовать его в дальнейшем для сравнения объектов между собой.
Описание предпочтений лица, принимающего решение 19 Наибольшее распространение получили метрические, порядковые и номинальные шкалы. Рассмотрим их в порядке возрастания возможностей. О Номинальная шкала (или шкала наименований) — это, по существу, качественная шкала. Ее применяют для обозначения принадлежности объектов к определен- ным классам. Она позволяет описать отношение эквивалентности и различия между объектами. Однако предпочтение между объектами и между классами не устанавливается. Числа в этой шкале используются только для обозначения класса объектов. Пример применения порядковой шкалы — номер цеха или про- 1 изводственного участка на предприятии. О Порядковая (ранговая) шкала — применяется для измерения упорядоченности объектов по одному признаку или по их совокупности. Числа в ней задают толь- ко порядок следования объектов, но не позволяют определить, насколько один объект предпочтительнее другого. Примерами применения ранговой шкалы явля- ются: распределение мест в эстафетной гонке (когда интерес представляет только порядковый номер на финише, а не разница во времени); назначение приорите- те ; тов заявкам, поступающим на обслуживание в вычислительную систему, и т. д. 5^X3 Метрические шкалы являются наиболее совершенными. На практике применя- \ ются следующие их виды. • Шкала интервалов используется для описания различия свойств объектов в виде разности. Измерения в данной шкале позволяют определить, насколько ?'; . один объект лучше другого. При этом обязательно задаются масштаб измере- ft ний и начало отсчета. В шкале интервалов измеряются, например, сроки вы- . полнения различных работ, гарантийные сроки службы устройств, объем за- трат на проведение операции. .4! • Шкала отношений — частный случай шкалы интервалов при выборе нулевой точки отсчета. Она является более совершенной, поскольку позволяет опре- 7,,/. делять не только разность, но и отношение между значениями ПЭ. Показате- 'ли, измеренные в шкале отношений, наиболее распространены в технике и математике. К ним относятся, например, длина, масса, напряжение и т. д. , • Абсолютную шкалу принято считать наиболее совершенной. В этой шкале используется нулевая точка отсчета и единичный масштаб. Это означает, что измерения в ней могут быть произведены единственным способом (в отли- чие, например, от шкалы отношений). В абсолютной шкале определяется, в частности, количество объектов (предметов, событий), которое может быть измерено единственным образом с помощью ряда натуральных чисел. Абсо- лютными являются, например, шкала температур по Кельвину, шкала значе- ; -и ний вероятности события и т. п. Виды показателей эффективности /Ниже рассмотрены некоторые виды показателей эффективности, наиболее часто ЛМ^ользуемые на практике. Выбор конкретной формы ПЭ во многом зависит от спо- •^Щсоба описания исхода операции.
20 Урок 1. Роль математического моделирования в процессе принятия решений О Цель операции описывается случайным событием А, наступление которого явля- ется желательным результатом (целью) операции. Вероятность наступления это- го события Рр( А) зависит от стратегии и. В этом случае ПЭ есть вероятность на- ступления события A: W(u)=Pu(A). Примером такого ПЭ является вероятность обнаружения цели радиолокационными средствами. О Часто операция считается успешной, если ее результат лежит в некотором за- данном диапазоне (вспомните критерий пригодности). В этом случае рассматри- ваемое событие А заключается в истинности одного из соотношений: A=Yon( и )<YTp илиА=Утр1<Уоп(и)<Утр2. О Соответствующий ПЭ трактуется как вероятностная гарантия выполнения по- ставленной задачи: W( и )=Р (Yt i ( и )>утр). Такой показатель может быть использован для оценки эффективности рассматриваемой операции с точки зрения сроков ее проведения: в качестве Утр выступает заданная длительность выполнения работ, а в качестве У№ — реальные затраты времени. О Есл и цель операции выражается числовой переменной, зависящей от случайных факторов, то может быть использован еще один показатель эффективности — показатель среднего результата-. Wb (u)=М [ Yon (и) ]. Примерами таких показателей являются среднее число обслуженных заявок, сред- няя длина очереди и т. д. Зная диапазон изменения ПЭ, исследователь может сравнивать значение среднего результата с граничными (допустимыми) значениями результата операции. Как было отмечено ранее, выбор стратегии значительно усложняется, если исход операции оценивается с помощью векторного ПЭ (или множества скалярных ПЭ). Это объясняется тем, что некоторое решение может превосходить остальные по одним показателям и уступать им по другим. В таких условиях трудно определить, которая из стратегий более предпочтительна, не говоря уже об ее оптимальности. Если в задачах ПР по скалярному показателю основная сложность состоит в разра- ботке или выборе метода поиска экстремума, то в задачах ПР по векторному показа- телю главное внимание уделяется выработке решающего правила, основанного на компромиссе между значениями компонент векторного показателя. Таким образом, сложность проблемы П Р по векторному показателю даже в услови- ях определенности связана не столько с трудностями вычисления, сколько с обо- снованностью выбора «наилучшего» решения. Невозможно строго математически доказать, что выбранное решение является наилучшим: любое решение из числа не доминируемых (не улучшаемых одновременно по всем показателям) может оказать- ся наилучшим для конкретного ЛПР в конкретных условиях. Это является основ- ной аксиомой ПР по нескольким показателям. В зависимости от способа формирования решающего правила, методы ПР по век- торному показателю можно условно разделить на две группы. К первой группе отно- сятся эвристические методы, в которых ЛПР определяет вид свертки компонент векторного ПЭ в скалярный на основе «здравого смысла» (или интуиции). Методы второй группы — аксиоматические — основаны на использовании дополнительной информации о компонентах векторного ПЭ. Рассмотрим некоторые наиболее распространенные методы, относящиеся к первой группе.
Описание предпочтений лицо, принимающего решение 21 Метод обобщенного показателя Если, исходя из характера задачи, можно допустить, что абсолютное уменьшение одного из показателей компенсируется суммарным абсолютным увеличением дру- гих (показатели однородные), то в качестве обобщенного показателя может быть принята сумма такого вида: w0 = ^gi-w1 Здесь gf — коэффициент относительной важности частного показателя Wr Иногда допустимой считается не абсолютная, а относительная компенсация измене- ния одних показателей другими. Например, при оценке эффективности боевых действий истребительной авиации могут быть использованы два частных показателя — математическое ожидание (МОЖ) числа уничтоженных целей (W,) и МОЖ потерь своих самолетов (W2): W.o = £ g > • w, 1=1,2 Метод «затраты/эффект» Если из существа задачи следует, что одни показатели желательно увеличивать, адругие уменьшать, то в качестве обобщенного ПЭ используют следующее отно- шение: я1 П". W — 1=1 Здесь 1-1,..., ml — номера показателей, значения которых желательно увеличивать, а i=m1+1, m — номера показателей, значения которых желательно уменьшать. Часто первая группа показателей отождествляется с целевым эффектом, а вторая — с затратами на его достижение. При этом показатели не обязательно должны быть однородными. Метод целевого программирования Основой метода является свертывание частных ПЭ в обобщенный показатель, име- ющим смысл расстояния до «идеальной точки» в пространстве значений показателя эффективности. В качестве «идеальной» обычно выбирают точку, отвечающую представлениям ЛПР об идеальном исходе операции. В этом случае Wo вычисляется, как правило, следующим образом: = Ебг -(w. -w^)2 * » ' 1=1 ~ идеальное значение частного ПЭ W,.
22 Урок 1. Роль математического моделирования в процессе принятия решений В качестве ситуации, иллюстрирующей применение данного подхода, рассмотрим выбор одного из двух мест работы, каждое из которых характеризуется величиной зарплаты (W,), длительностью отпуска (W2) и временем, затрачиваемым на дорогу (W3). Если выбирающий определил для себя желаемое значение для каждого из этих показателей (соответственно W,., W2. и W3.), то обобщенный ПЭ будет выглядеть так: Wo = EQi -(Ц -Чп)2 1=1 В этом случае будет выбрано такое место работы, для которого отклонение реальных характеристик от желаемых является наименьшим. Метод главного показателя Если ЛПР считает, что целевой эффект достижим в основном вследствие увеличе- ния одного ( «главного» ) частного ПЭ, то исходная задача может быть сведена к зада- че оптимизации по этому показателю при условии, что значения остальных будут не ниже заданных. Общим недостатком перечисленных методов является зависимость принимаемых решений от некоторых эвристических допущений, задаваемых ЛПР, поэтому эти решения могут не обеспечить действительно лучшей стратегии. Их достоинство — относительная простота реализации. В тех случаях, когда невозможно произвести свертку векторного ПЭ, необходимо использовать один из аксиоматических методов. Эти методы основаны на использовании понятия Парето-оптимальности (по фамилии итальянского экономиста В. Парето). Стратегия называется Парето-оптимальной (эффективной), если она по всем показателям не хуже любой стратегии из допусти- мого множества и лучше хотя бы по одному из них (при взаимной независимости частных ПЭ). Чтобы выбрать одну из нескольких эффективных стратегий, необхо- димо располагать дополнительной информацией. Эта информация должна позво- лить Л ПР упорядочить частные ПЭ по их важности, после чего могут быть использо- ваны, например, рассмотренные выше методы свертки. Основные понятия теории моделирования Итак, чтобы сравнить между собой различные стратегии проведения операции (или решения), необходимо получить для них ожидаемые значения показателя эффек- тивности. Для этого, в свою очередь, полезно иметь математическую модель ис- следуемой операции. Таким образом, основная проблема заключается в том, где ее взять. Конечно, можно попросить у знакомых или у родственников, новрядлиуних есть под рукой именно то, что вам нужно. В любом случае лучше всего рассчитывать на собственные силы, точнее — на собственные знания и опыт. И если опыт приходит только со временем, то соответствующие знания можно получить прямо сейчас.
Основные понятия теории моделирования 23 Принципы моделирования Начнем с того, что рассмотрим основные принципы моделирования, в сжатой фор- ме отражающие тот достаточно богатый опыт, который накоплен к настоящему вре- мени в области разработки и использования математических моделей. О Принцип информационной достаточности. При полном отсутствии информа- ции об исследуемой системе построение ее модели невозможно. При наличии полной информации о системе ее моделирование лишено смысла. Существует некоторый критический уровень априорных сведений о системе (уровень ин- формационной достаточности), при достижении которого может быть построена ее адекватная модель. О Принцип осуществимости. Создаваемая модель должна обеспечивать достиже- ние поставленной цели исследования с вероятностью, существенно отличающей- ся от нуля, и за конечное время. Обычно задают некоторое пороговое значение Ро вероятности достижения цели моделирования Р( t), а также приемлемую грани- цу t0 времени достижения этой цели. Модель считают осуществимой, если мо- жет быть выполнено условие Р( t0)>P0. О Принцип множественности моделей. Данный принцип является ключевым. Речь идет о том, что создаваемая модель должна отражать в первую очередь те свой- — ства реальной системы (или явления), которые влияют на выбранный показатель эффективности. Соответственно при использовании любой конкретной модели познаются лишь некоторые стороны реальности. Для более полного ее исследова- . ния необходим ряд моделей, позволяющих с разных сторон и с разной степенью ! детальности отражать рассматриваемый процесс. О Принцип агрегирования. В большинстве случаев сложную систему можно пред- ставить состоящей из агрегатов (подсистем), для адекватного математического описания которых оказываются пригодными некоторые стандартные математи- ческие схемы. Принцип агрегирования позволяет, кроме того, достаточно гибко перестраивать модель в зависимости от задач исследования. О Принцип параметризации. В ряде случаев моделируемая система имеет в своем составе некоторые относительно изолированные подсистемы, характеризующи- еся определенным параметром, в том числе векторным. Такие подсистемы мож- но заменять в модели соответствующими числовыми величинами, а не описы- вать процесс их фу] 1кционирования. При необходимости зависимость значений этих величин от ситуации может задаваться в виде таблицы, графика или ана- литического выражения (формулы). Принцип параметризации позволяет со- кратить объем и продолжительность моделирования. Однако надо иметь в виду, что параметризация снижает адекватность модели. / Этапы математического моделирования Степень реализации перечисленных принципов в каждой конкретной модели может быть различной, причем это зависит не только от желания разработчика, но и от со- блюдения им технологии моделирования. А любая технология предполагает нали- '. чие определенной последовательности действий.
24 Урок 1. Роль математического моделирования в процессе принятия решений Слово «компьютер» пока в нашем повествовании отсутствовало. Тем не менее, рано или поздно оно должно было появиться. Начнем со словосочетания «компьютерное моделирование», которое все чаще используется в соответствующей литературе. Само по себе это понятие весьма широкое и каждый автор трактует его по-своему. Встречаются, например, такие выражения: «компьютерное моделирование верхней одежды», «компьютерное моделирование причесок» и т. п. В связи с этим есть необ- ходимость уточнить, что же мы будем понимать под этим термином. Так вот, в дан- ном случае компьютерное моделирование — это математическое моделирование с использованием средств вычислительной техники. Соответственно, технология компьютерного моделирования предполагает выполнение следующих действий. 1. Определение цели моделирования. 2. Разработка концептуальной модели. 3. Формализация модели. 4. Программ! 1ая реализация модели. 5. Планирование модельных экспериментов. 6. Реализация плана эксперимента. 7. Анализ и интерпретация результатов моделирования. Содержание первых двух этапов практически не зависит от математического мето- да, положенного в основу моделирования (и даже наоборот — их результат опреде- ляет выбор метода). А вот реализация остальных пяти этапов существенно различа- ется для каждого из двух основных подходов к построению модели. Именуются эти подходы в разных книгах по-разному, мы используем для их обозначения термины «аналитическое» и «имитационное» моделирование. Аналитическое моделирование предполагает использование математической модели реального объекта в форме алгебраических, дифференциальных, интегральных и других уравнений, связывающих выходные переменные с входными, дополненных системой ограничений. При этом предполагается наличие однозначной вычисли- тельной процедуры получения точного решения уравнений. При имитационном моделировании используемая математическая модель воспроиз- водит алгоритм («логику») функционирования исследуемой системы во времени при различных сочетаниях значений параметров системы и внешней среды. Примером простейшей аналитической модели может служить уравнение прямоли- нейного равномерного движения. При исследовании такого процесса с помощью имитационной модели должно быть реализовано наблюдение за изменением прой- денного пути с течением времени. Очевидно, в одних случаях более предпочтительным является аналитическое моде- лирование, в других — имитационное (или сочетание того и другого). Чтобы выбор был удачным, необходимо ответить на два вопроса. О С какой целью проводится моделирование? О К какому классу может быть отнесено моделируемое явление? Ответы на оба эти вопроса могут быть получены в ходе выполнения двух первых этапов моделирования.
Основные понятия теории моделирования 25 Общая цель моделирования в процессе принятия решения была сформулирована в разделе «Общая схема процесса принятия решений» — это определение (расчет) значений выбранного показателя эффективности для различных стратегий прове- дения операции (или вариантов реализации проектируемой системы). При разра- ь ботке конкретной модели цель моделирования должна уточняться с учетом исполь- «зуемого критерия эффективности. Для критерия пригодности модель, как правило, должна обеспечивать расчет значений ПЭ для всего множества допустимых страте- <4 гий. При использовании критерия оптимальности модель должна позволять непо- |1ственно определять параметры исследуемого объекта, дающие экстремальное 1ение ПЭ. им образом, цель моделирования определяется как целью исследуемой опера- , так и планируемым способом использования результатов исследования. 1ример, проблемная ситуация, требующая принятия решения, формулируется дующим образом: найти вариант построения вычислительной сети, который здал бы минимальной стоимостью при соблюдении требований по производи- шости и по надежности. В этом случае целью моделирования является отыска- параметров сети, обеспечивающих минимальное значение ПЭ, в роли которого тупает стоимость. ача может быть сформулирова! ia иначе: из нескольких вариантов конфигурации ислительной сети выбрать i шиболее надежный. Здесь в качестве ПЭ выбирается ;|^§дин из показателей надежности (средняя наработка на отказ, вероятность безотказ- ТэдЙОЙ работы и т. д.), а целью моделирования является сравнительная оценка вариан- :1||х>в сети по этому показателю. а^Рриведенные примеры позволяют напомнить о том, что сам по себе выбор показате- у: Ля эффективности еще не определяет «архитектуру» будущей модели, поскольку на !?3том этапе не сформулирована ее концепция, или, как говорят, не определена кон- •ЙЙептуальная модель исследуемой системы. Построение концептуальной модели > концептуальная (содержательная) модель — это абстрактная модель, определяющая «Фруктуру моделируемой системы, свойства ее элементов и причинно-следственные гЦвязи, присущие системе и существенные для достижения цели моделирования. ^Построение концептуальной модели включает следующие этапы. Определение типа системы. ,2. Описание рабочей нагрузки. / ‘ 3. Декомпозиция системы. ..,,У^а первом этапе осуществляется сбор фактических данных (на основе работы с ^йтературой и технической документацией, проведения натурных экспериментов, Э сбора экспертной информации и т. д.), а также выдвижение гипотез относительно К Значений параметров и переменных, для которых отсутствует возможность получе- w-йия фактических данных. Если полученные результаты соответствуют принципам
26 VpoK 1. Роль математического моделирования в процессе принятия решений информационной достаточности и осуществимости, то они могут служить .основой для отнесения моделируемой системы к одному из известных типов (классов). Наиболее важные в этом отношении классификационные признаки приведены на рис. 1.3. Рис. 1.3. Клоссификоция систем по типу поведения Одним из них является мощность множества состояний моделируемой системы. По этому признаку системы делят на статические и динамические. Система называ- ется статической, если множество ее состояний содержит один элемент. Если со- стояний больше одного, или они могут изменяться во времени, система называется динамической. Процесс смены состояний называется движением системы. Различают два основных типа динамических систем: О с дискретными состояниями (множество состояний конечно или счетно); О с непрерывным множеством состояний. Системы с дискретными состояниями характеризуются тем, что в любой момент времени можно однозначно определить, в каком именно состоянии находится сис- тема. Для такой идентификации обязательно нужно знать тот признак, который отличает одно состояние системы от другого. Например, при исследовании систем массового обслуживания в качестве такого признака обычно используют число зая- вок в системе. Соответственно, изменение числа заявок в системе интерпретирует- ся как переход системы в новое состояние. Если же не удается подобрать такой признак, либо его текущее значение невозмож- но зафиксировать, то систему относят к классу систем с непрерывным множеством состояний. Примером непрерывного множества состояний может служить измене- ние формы падающей капли. На практике возможны также смешанные случаи, когда некоторые состояния систе- мы могут быть идентифицированы как дискретные, а другие — как непрерывные; скажем, в «жизни» той же капли воды, образующейся в неплотно закрытом кране,
Основные понятия теории моделирования 27 можно выделить как дискретные состояния («висит» — «летит» — «упала»), так и непрерывные (изменение формы во время падения). Смена состояний может происходить либо в фиксированные моменты времени, ; множество которых дискретно (например, поступление новых заявок на обслужива- . * ние), либо непрерывно (изменение температуры тела при нагревании). В соответствии ' с этим различают системы с дискретным временем переходов (смены состояний) и сис- 4 темы с непрерывным временем переходов (точнее, «живущие» в непрерывном времени). « По условиям перехода из одного состояния в другое различают детерминированные Д системы и стохастические. IB детерминированных системах новое состояние зависит только от времени и теку- щего состояния системы. Другими словами, если имеются условия, определяющие < переход системы в новое состояние, то для детерминированной системы можно од- [ нозначно указать, в какое именно состояние она перейдет. Для стохастической системы можно указать лишь множество возможных состоя- ' ний перехода и, в некоторых случаях, — вероятностные характеристики перехода в каждое из этих состояний. ^.Рассмотренная схема классификации систем важна не сама по себе. На этапе раз- работки концептуальной модели она, во-первых, позволяет уточнить цели и зада- ! чи моделирования и, во-вторых, облегчает переход к этапу формализации модели. Кроме того, значительно позже, на этапе оценки качества разработанной модели, Е' знание классификационных признаков дает возможность оценить степень ее соот- r/ветствия первоначальному замыслу разработчика. Необходимо отметить, что рассмотренные классификационные признаки примени- мы и для определения типа разрабатываемой модели. При этом исследуемая систе- Шма и ее модель могут относиться как к одному, так и к разным классам. Например, ^ реальная система может быть подвержена воздействию случайных факторов и, со- ответственно, будет относиться к классу стохастических систем. Если разработчик ^“Модели считает, что влиянием этих факторов можно пренебречь, то создаваемая ^ -Модель будет представлять собой детерминированную систему. Аналогичным обра- щаем возможно отображение системы с непрерывным временем смены состояний в ^. Модель с дискретными переходами и т. д. Разумеется, принадлежность реальной си- стемы и ее модели к одному классу говорит о корректности модели, однако с точки ^зрения интересов исследования такое «зеркальное отображение» далеко не всегда f является полезным (вспомните принцип множественности моделей). Подробнее *^этот вопрос будет рассмотрен при обсуждении этапа декомпозиции системы. Описание рабочей нагрузки % • д- При исследовании эффективности операции весьма важную роль играет коррект- оров описание условий ее протекания. Как правило, оно представляет собой перечень tH характеристики внешних факторов, воздействующих на исполнительную подсис- тему, используемую ЛПР для достижения целей операции. Если при сравнении раз- у Личных стратегий другие виды материальных ресурсов не рассматриваются, то зада- | Ча исследования эффективности операции может быть сформулирована как задача 7 оценки эффективности исполнительной подсистемы (именно в этом смысле ранее Ж
28 Урок 1. Роль мотемотического моделирования в процессе принятия решений наряду с понятием «эффективность операции» использовалось понятие «эффек- тивность системы»), В этом случае вместо условий проведения операции удобнее рассматривать рабочую нагрузку соответствующей системы. Рабочая нагрузка — это совокупность внешних воздействий, оказывающих влияние на эффективность применения данной системы в рамках проводимой операции. Например, пусть оценивается производительность бортовой вычислительной сис- темы (ВС) при управлении полетом космического корабля. В качестве параметров рабочей нагрузки такой ВС целесообразно рассматривать поток информации, под- лежащей обработке, и поток отказов, приводящий к нарушению вычислительного процесса. Оценки производительности ВС будут иметь смысл только в том случае, если известно, для какой рабочей нагрузки они получены. Это утверждение спра- ведливо для любой задачи принятия решения, к какой бы предметной области она ни относилась. Нельзя говорить о прочности моста, не указывая, на какую макси- мальную нагрузку он рассчитан; точно так же некорректно сообщать максимальную скорость автомобиля, не уточнив, в каких условиях она была достигнута. Описание рабочей нагрузки (PH) является не только важной, но и достаточно сложной задачей. Особенно в тех случаях, когда приходится учитывать влияние случайных факторов, или когда речь идет о рабочей нагрузке проектируемой принципиально новой системы. В связи с этим многие авторы вводят понятие «модели рабочей на- грузки», подчеркивая сопоставимость уровня сложности описания собственно сис- темы и ее рабочей нагрузки. Модель рабочей нагрузки должна обладать следующими основными свойствами: О совместимостью с моделью системы; О представительностью; О управляемостью; О системной независимостью. Свойство совместимости предполагает, что, во-первых, степень детализации описа- ния PH соответствует детализации описания системы; во-вторых, модель PH долж- на быть сформулирована в тех же категориях предметной области, что и модель си- стемы (например, если в модели системы исследуется использование ресурсов, то PH должна быть выражена в запросах на ресурсы). Представительность модели PH определяется ее способностью адекватно предста- вить PH в соответствии с целями исследования. Другими словами, модель PH дол- жна отвечать целям исследования системы. Например, если оценивается пропуск- ная способность, должна выбираться PH, «насыщающая» систему. Под управляемостью понимается возможность изменения параметров модели PH в некотором диапазоне, определяемом целями исследования. Системная независимость — это возможность переноса модели PH с одной системы на другую с сохранением ее представительности. Данное свойство наиболее важно при решении задач сравнения различных систем или различных модификаций од- ной системы. Если модель PH зависит от конфигурации исследуемой системы или других ее параметров, то использование такой модели для решения задачи выбора невозможно.
Основные понятия теории моделировония 29 И, наконец, обратимся к этапу, завершающему построение концептуальной модели системы, — ее декомпозиции. Декомпозиция системы производится исходя из выбранного уровня детализации модели, который, в свою очередь, определяется тремя факторами: О целями моделирования; I О объемом априорной информации о системе; I О требованиями к точности и достоверности результатов моделирования. з Уровни детализации иногда называют стратами, а процесс выделения уровней — [ стратификацией. Детализация системы должна производиться до такого уровня, чтобы для каждого I элемента были известны или могли быть получены зависимости его выходных ха- Г рактеристик от входных воздействий, существенные с точки зрения выбранного I показателя эффективности. |! Повышение уровня детализации описания системы позволяет получить более точ- Ь ную ее модель, но усложняет процесс моделирования и ведет к росту затрат времени t на его проведение. е Например, если моделируется дискретная система, то увеличение детальности ее & описания означает увеличение числа различных состояний системы, учитываемых г в модели, и, как следствие — неизбежный рост объема вычислений. Е Поэтому при выборе уровня описания системы целесообразно руководствоваться Г следующим правилом: в модель должны войти все параметры, которые обеспечива- К ют определение интересующих исследователя характеристик системы на заданном ^'Временном интервале ее функционирования; остальные параметры по возможности В.; следует исключить из модели. К;При имитационном моделировании для оценки выбранного уровня детализации Вможно использовать специальные критерии. ® О Первый из них — отношение реального времени функционирования системы к Ц. времени моделирования (то есть к затратам машинного времени, необходимого ж-' на проведение модельного эксперимента). Например, если при одних и тех же под- ж ходах к программной реализации модели моделирование од! юго часа работы систе- мы требует в одном случае 3 минуты машинного времени, а в другом —10 минут, Ж то во втором случае степень детализации описания выше (соотношение 3:10). О Второй критерий — разрешающая способность модели, в том числе: Ц • разрешающая способность по времени — может быть определе! ia как кратчай- ший интервал модельного времени между соседними событиями; • разрешающая способность по информации — наименьшая идентифицируемая Ж порция информации, представимая в модели (для вычислительных систем, Г например, такими порциями могут быть слово, страница, программа, задание). О Третий критерий — число различных моделируемых состояний системы (или ти- £ пов событий).
30 Урок 1. Роль мотемотического моделирования в процессе принятия решений Для тех компонентов, относительно которых известно или предполагается, что они в большей степени влияют на точность результатов, степень детальности может быть выше других. Необходимо отметить, что с увеличением детальности возрастает устойчивость модели, но возрастают и затраты машинного времени на проведение модельного эксперимента. Что нового мы узнали? 0 Решение принимать значительно легче в том случае, если ты знаешь, чего хочешь и чем готов пожертвовать ради конечной цели. 0 Чтобы сравнить между собой различные варианты возможных решений, следует оценить их эффективность. Мерой эффективности решения служит показатель эффективности, а в качестве правила сравнения должен использоваться крите- рий эффективности. 0 Наиболее удобным и универсальным методом оценки эффективности решения является математическое моделирование. Вместе с тем, результаты оценки в этом случае существенно зависят от качества построенной модели. 0 Создание модели должно быть направлено на решение одной, достаточно конк- ретной задачи. Если с помощью моделирования требуется ответить на целый ряд вопросов, то лучше иметь под рукой несколько простых моделей, чем одного не- поворотливого «монстра».
Основы технологии УРОК имитационного моделирования О Понятие статистического эксперимента □ Область применения и классификация имитационных моделей □ Описание поведения системы □ Моделирование случайных факторов □ Управление модельным временем □ Моделирование параллельных процессов □ Планирование модельных экспериментов □ Обработка и анализ результатов моделирования
Содержание предыдущего урока можно, по большому счету, уместить в одной фразе: чтобы сравнить различные^ шения между собой, их требуется «изме- рить», а самым удобным измерительным инструментом является математическое моделирование. Какую роль в этом процессе играет эксперимент? Понятие статистического эксперимента Эксперимент, проводимый с помощью аналитической модели, ничем не отличается от традиционной для математики процедуры вычислений: для конкретных значе- ний параметров модели рассчитывается соответствующая им величина показателя эффективности. И сколько бы раз мы ни повторяли эту процедуру, результат всегда будет один и тот же (при неизменных значениях параметров). Совсем по-иному обстоит дело в том случае, когда для оценки эффективности систе- мы используется имитационное моделирование, поскольку имитационный экспери- мент представляет собой наблюдение за поведением модели под влиянием входных воздействий. При этрм часть из них (а может быть, и все) носят случайный харак- тер. В результате такого наблюдения исследователь получает набор эксперименталь- ных данных, на основе которых могут быть оценены характеристики системы. Очевидно, что аналитические модели для проведения имитационного эксперимен- та не годятся, и здесь нужна специальная имитационная модель. Такая модель должна отвечать двум основным требованиям: О отражать логику функционирования исследуемой системы во времени; О обеспечивать возможность проведения статистического эксперимента. Методы описания в модели логики функционирования системы будут рассмотрены немного позже. Сейчас остановимся на понятии статистическийэксперимент. В его основе лежит метод статистических испытаний (метод Монте-Карло). Суть его состоит в том, что результат испытания зависит от значения некоторой случай- ной величины, распределенной по заданному закону. Поэтому результат каждого от- дельного испытания также носит случайный характер. Проведя серию испытаний, получают множество частных значений наблюдаемой характеристики {выборку). Полученные статистические данные обрабатываются и представляются в виде чис- ленных оценок интересующих исследователя величин (характеристик системы). Теоретической основой метода статистических испытаний являются предельные теоремы теории вероятностей (теорема Чебышева, теорема Бернулли, теорема Пуассо- на). Принципиальное значение предельных теорем состоит в том, что они гарантиру- ют высокое качество статистических оценок при весьма большом числе испытаний. Важно отметить, что метод статистических испытаний применим для исследования как стохастических, так и детерминированных систем. Еще одной важной особенностью данного метода является то, что его реализация практически невозможна без использования компьютера. В качестве иллюстрации к изложенному рассмотрим применение метода статисти- ческих испытаний для вычисления площади круга заданного радиуса. Данная задача
Понятие статистического эксперимента 33 явно относится к классу детерминированных, поскольку весьма сложно представить себе случайные факторы, под влиянием которых площадь неподвижной геометри- ческой фигуры могла бы изменяться. И тем не менее... Пусть круг имеет радиус г=5, и его центр находится в точке с координатами (1,2). Уравнение соответствующей окружности имеет вид: (х-1)г+(у-2)2=25 Для решения задачи методом Монте-Карло впишем круг в квадрат. Его вершины будут иметь координаты (-4, -3), (6, -3), (-4,7) и (6,7). Любая точка внутри квадрата или на его границе должна удовлетворять неравенствам -4<х<6 и -3<у<7. При решении задачи естественно исходить из того, что все точки в этом квадрате могут появляться с одинаковой вероятностью, то есть х и у распределены равномер- но со следующими плотностями вероятности: О f (х)=1/10 — для -4<х<6и f(x)=0 — в противном случае; О f (у)=1/Ю — для -3<у<7 и f (у )=0— в противном случае. Проведя некоторое количество испытаний (то есть получив множество случайных точек, принадлежащих квадрату), подсчитаем число точек, попавших внутрь круга или на окружность. Если выборка состоит из п наблюдений и m из п точек попали внутрь круга или на окружность, то оценку площади круга можно получить из соот- ношения: SKP=SKB-m/n = 100 m/n В табл. 2.1 приведены оценки SKP, полученные для разных значений п, причем для каждого п выполнялось 5 прогонов (точное значение SKp=78.54 см). Прогоны отличаются друг от друга последовательностями случайных чисел, из ко- торых формировались координаты точек (рис. 2.1). На основании полученных результатов могут быть сделаны выводы, которые спра- ведливы для любого имитационного эксперимента независимо от физической при- роды и типа моделируемой системы: О каждый прогон модели можно рассматривать как одно наблюдение в проводи- мом эксперименте на модели;
34 Урок 2. Основы технологии имитационного моделирования Таблица 2.1. Результаты статистических испытаний Номер прогона Оценки площади круга (SJ Объем испытаний (п) 10000 100 200 1000 5000 1 78 79.5 78.8 78.22 78.77 2 70 77.0 77.3 78.6 78.23 3 81 79.5 80.2 77.72 78.88 4 70 77.0 79.5 77.76 78.63 5 79 77.0 79.8 79.0 78.21 Среднее 75.6 78.0 79.12 78.26 78.544 Дисперсия 27.3 1.88 1.29 0.3 0.1 О с увеличением продолжительности прогона (то есть продолжительности наблю- дения или объема испытаний) отклонение измеряемой величины от ее точного значения уменьшается, поскольку наблюдаемая система переходит в стационар- ное состояние; О влияние переходных условий можно уменьшить, если увеличить количество прогонов модели (то есть количество экспериментов); О существует предел, за которым увеличение продолжительности прогона модели уже не дает существенного повышения точности результата, измеряемой дисперсией. Основная цель рассмотренного примера — привлечь внимание к тому факту, что имитационное моделирование не ограничивается разработкой модели и написани- ем соответствующей программы, а требует подготовки и проведения статистическо- го эксперимента. В связи с этим результаты имитационного моделирования следует рассматривать как экспериментальные данные, требующие специальной обработки и анализа. В частности, для любого модельного эксперимента необходимо ответить на перечисленные ниже вопросы. О Какова должна быть продолжительность прогона для достижения стационарных условий? О Как получить статистически независимые наблюдения? О Сколько наблюдений необходимо для обеспечения требуемой точности? Ответы на эти вопросы будут даны в последующих разделах. Область применения и классификация имитационных моделей До сих пор речь шла о том, что моделирование можно считать основным инструмен- том, обеспечивающим принятие своевременных и обоснованных решений. Тем не менее, основной темой книги является не столько сам процесс принятия решений, сколько технология применения имитационного моделирования в различных обла- стях человеческой деятельности. Поэтому пришло время несколько расширить круг
Область применения и классификация имитационных моделей 35 обсуждаемых вопросов и поговорить о том, что же представляет собой полноценная имитационная модель и в каких случаях она может оказаться действительно полезной. Начнем с того, что попытаемся сформулировать характерные черты нашей «героини», г Имитационная модель (ИМ) — это формальное (то есть выполненное на некотором ' формальном языке) описание логики функционирования исследуемой системы и J взаимодействия отдельных ее элементов во времени, учитывающее наиболее суще- | ственные причинно-следственные связи, присущие системе, и обеспечивающее про- Г ведение статистических экспериментов. t При разработке ИМ остаются справедливыми основные принципы моделирования, I рассмотренные в разделе «Основные понятия теории моделирования» урока 1 «Роль I математического моделирования в процессе принятия решений». В В качестве следствия из этого утверждения необходимо отметить два важных об- Кстоятельства: В О взаимосвязь между отдельными элементами системы, описанными в модели, а И также между некоторыми величинами (параметрами) может быть представлена Г в виде аналитических зависимостей (например, при моделировании полета уп- к равняемой ракеты отработка поступающих на борт команд может быть описана чЬ на уровне логики, а возникающие перегрузки рассчитываются аналитически); К'О модель можно считать реализуемой и имеющей практическую ценность только в » том случае, если в ней отражены лишь те свойства реальной системы, которые W влияют на значение выбранного показателя эффективности. •Как было отмечено выше, для ИМ практически отсутствуют ограничения на область Эрих применения (по типу моделируемой системы), и речь может идти только о целе- сообразности использования ИМ в данной предметной области и об объеме трудо- йзатрат на ее разработку. •Поскольку основой имитационного моделирования является метод статистических ^Испытаний, наибольший эффект от его применения достигается при исследовании ‘Сложных систем, на функционирование которых существенное влияние оказывают случайные факторы. применение имитационного моделирования целесообразно также в следующих Жлучаях: УР если не существует законченной постановки задачи на исследова! 1ие и идет про- В ' цесс познания объекта моделирования; если характер протекающих в системе процессов не позволяет описать эти про- xf' цессы в аналитической форме; ВО если необходимо наблюдать за поведением системы (или отдельных ее компо- $ нентов) в течение определенного периода, в том числе с изменением скорости протекания процессов; i О при изучении новых ситуаций в системе либо при оценке функционирования ее у в новых условиях;
36 Урок 2. Основы технологии имитационного моделирования О если исследуемая система является элементом более сложной системы, другие элементы которой имеют реальное воплощение; О когда необходимо исследовать поведение системы при введении в нее новых эле- ментов; О при подготовке специалистов и освое]ши новой техники (в качестве тренажеров). Приведенный список возможных областей применения имитационных моделей (который одновременно можно рассматривать и как перечень их достоинств) неволь- но вызывает вопрос: а зачем же в таком случае нужны остальные виды моделей? К сожалению, имитационные модели имеют целый ряд недостатков. Первый и весьма существенный заключается в том, что разработка ИМ, как правило, требует больших затрат времени и сил. Кроме того, любая имитационная модель сложной системы значительно менее «объективна», чем аналитическая модель, поскольку она, прежде всего, отражает субъективные представления разработчикао моделируемой систе- ме. Причем, бывает достаточно сложно как опровергнуть, так и обосновать адекват- ность созданной И М, особенно если речь идет о проектируемой системе. И, наконец, еще одно обстоятельство. Результаты имитационного моделирования, как и при любом численном методе, всегда носят частный характер. Для получения обоснован- ных выводов необходимо проведение серии модельных экспериментов, а обработка результатов требует применения специальных статистических процедур. Каким же образом можно преодолеть указанные недостатки? Во-первых, современное состояние вычислительной техники и ее программного обеспечения позволило вооружить «модельеров» такими мощными инструменталь- ными средствами моделирования (к которым, в частности, относится пакет MATLAB), что по мере накопления опыта в их использовании возможные трудозатраты «стре- мятся к нулю»; то же самое можно сказать о средствах статистического анализа и визуализации полученных результатов. Во-вторых, «объективность» создаваемой модели может быть обеспечена в том случае, когда разработчик ясно представляет себе, какие именно характеристики исследуемой системы его интересуют: длительность выполни 1ия определенных операций, вероят- ность перехода системы в некоторое состояние, возможность конфликта между отдель- ными подсистемами и т. д. Дело в том, что для каждого варианта постановки задачи исследования может быть выбрана соответствующая схема построения модели. В этом отношении знание существующих схем построения имитационных моделей является весьма полезным. Наиболее важный признак — способ представления в модели динамики (движения) системы. Она может быть описана посредством событий, работ (активностей), про- цессов и транзактов. Другой важный признак — способ изменения модельного времени. По этому признаку различают модел! 1рование с постоя иным х нагом и моделирование по особым состояниям. Все эти понятия являются основополагающими в теории имитационного моделиро- вания и их достаточно подробному толкованию посвящены соответствующие раз- делы книги. В большинстве случаев конечной целью моделирования является оптимизация тех или иных параметров системы. Однако, как было отмечено выше, потенциальные
Область применения и классификация имитационных моделей 37 возможности имитационного моделирования существенно шире. В зависимости от этапа и назначения проводимых исследований, применяется один из трех наиболее распространенных видов имитационных экспериментов: О исследование относительного влияния различных факторов на значения выход- ных характеристик системы; О нахождение аналитической зависимости между интересующими исследователя выходными характеристиками и факторами; О отыскание оптимальных значений параметров системы (так называемый «экст- ремальный эксперимент»). Вид эксперимента влияет не только на выбор схемы его формализации, но также на построение плана эксперимента и выбор метода обработки его результатов. С точки зрения организации взаимодействия исследователя с моделью, в ходе экс- перимента ИМ делятся на автоматические и диалоговые. О Автоматическими называются ИМ, взаимодействие пользователя с которыми сводится только к вводу исходной информации и управлению началом и окон- чанием работы моделей. О Диалоговыми называются ИМ, позволяющие исследователю активно управлять ходом моделирования: приостанавливать сеанс моделирования, изменять значе- ния параметров модели, корректировать перечень регистрируемых данных и т. д. Классификация имитационных моделей схематично показана на рис. 2.2. Рис. 2.2. Схема классификации имитационных моделей
38 Урак 2. Основы технологии имитационного моделирования Описание поведения системы Описание динамики системы, или, проще говоря, ее поведения, составляет основу любой имитационной модели. В качестве исходных посылок для решения этой зада- чи используются результаты, полученные на этапе разработки концептуальной мо- дели системы. К ним относятся: О определение принадлежности моделируемой системы одному из известных клас- сов; О описание рабочей нагрузки системы; О выбор уровня детализации представления системы в модели и ее декомпозиция. Все последующие действия исследователя по созданию модели могут быть отнесены к этапу ее формализации, который в общем случае предполагает следующие шаги. 1. Выбор метода представления динамики системы (на основе событий, процессов или транзактов). 2. Формальное (математическое) описание случайных факторов, подлежащих учету в модели. 3. Выбор механизма изменения и масштаба модельного времени. Начнем с определения понятий «событие», «процесс», «работа» и «транзакт». При моделировании дискретных систем, которым в книге уделяется основное вни- мание, ведущую роль играет понятие «события». Событие представляет собой мгновенное изменение некоторого элемента системы или состояния системы в целом. Событие характеризуется: О условиями (или законом) возникновения; О типом, который определяет порядок обработки (дисциплину обслуживания) данного события; О нулевой длительностью. Обычно события подразделяют на две категории: О события следования, которые управляют инициализацией процессов (или отдель- ных работ внутри процесса); О события изменения состояний (элементов системы или системы в целом). В том случае, если модель строится с целью изучения причинно-следственных свя- зей, присущих системе, то описание ее поведения в терминах событий является «са- модостаточным». Примером такой задачи является проектирование пользовательс- кого интерфейса программного продукта, когда разработчику необходимо оценить взаимную согласованность элементов интерфейса (кнопок, флажков, переключате- лей, диалоговых окон и т. д.). Если же исследователя интересует не только логика смены состояний моделируе- мой системы, но и временные параметры ее работы, механизм событий служит осно- вой для представления в модели работ, процессов и транзактов.
Описоние поведения системы 39 Работа (активность) — это единичное действие системы по обработке (преобразо- ванию) входных данных. В зависимости от природы моделируемой системы, под входными данными могут пониматься информационные данные или какие-либо материальные ресурсы. Каждая из работ характеризуется временем выполнения и потребляемыми ресурса- ми. Соответственно, с помощью моделей, описанных в терминах работ, могут решать- ся задачи по оценке качества распределения ресурсов системы, ее производительно- сти, надежности и т. д. При моделировании сложных систем весьма часто имеют место ситуации, когда не- которые работы образуют устойчивую повторяющуюся последовательность. В та- ких случаях бывает удобнее перейти к описанию модели на основе процессов. Под процессом понимают логически связанный набор работ. Некоторые процессы могут рассматриваться, в свою очередь, как работы в процессе более высокого уров- ня. И, наоборот, при повышении степени детализации описания системы некоторая работа может быть разделена на более мелкие составляющие и, таким образом, «пре- вратиться» в процесс. Любой процесс характеризуется совокупностью статических и динамических ха- рактеристик. К статическим характеристикам процесса относятся: О длительность; О результат; О потребляемые ресурсы; О условия запуска (активизации); О условия останова (прерывания). В общем случае статические характеристики процесса не изменяются в ходе его реализации, однако при необходимости любая из них может быть представлена в модели как случайная величина, распределенная по заданному закону. Динамической характеристикой процесса является его состояние (активен или на- ходится в состоянии ожидания). Моделирование в терминах процессов производится в тех же случаях, что и в тер- минах работ (то есть когда система оценивается по каким-либо временным показа- телям, либо с точки зрения потребляемых ресурсов). Например, при оценке произ- водительности вычислительной сети обработка заданий может быть представлена в модели как совокупность соответствующих процессов, использующих ресурсы сети (оперативную память, пространство на жестких дисках, процессорное время, прин- теры и т. д.). При описании моделируемой системы в терминах работ и процессов используются оба вида событий: О события следования — для отражения временных параметров системы; О события изменения состояний — для представления логики взаимодействия протекающих в системе процессов (или выполняемых работ).
40 Урок 2. Основы технологии имитационного моделировония Еще один способ имитационного моделирования систем основан на использовании понятия транзакта. Транзакт — это некоторое сообщение (заявка на обслуживание), которое поступает извне на вход системы и подлежит обработке. В некоторых случаях, например при моделировании автоматизированных систем управления, более удобно проследить функционирование системы именно относительно алгоритма обработки транзакта. В рамках одной ИМ могут рассматриваться транзакты нескольких типов. Каждый транзакт характеризуется соответствующим алгоритмом обработки и необходимы- ми для его реализации ресурсами системы. Учитывая это, прохождение транзакта по системе можно в некоторых случаях рассматривать как последовательную акти- визацию процессов, реализующих его обработку («обслуживание заявки»), В связи с упоминанием термина «обслуживание заявки» уместно вспомнить о су- ществовании теории массового обслуживания. Если читатель с ней знаком, то оста- ется только добавить, что при разработке и исследовании имитационных моделей на основе транзактов целесообразно использовать методику и показатели, применя- емые при анализе систем массового обслуживания. В уроке 6 «Технология модели- рования в среде SIMULINK» приводятся примеры, поясняющие данный подход. Моделирование случайных факторов Еще раз отметим, что имитационная модель позволяет исследовать поведение раз- личных систем с учетом влияния случайных факторов. Эти факторы, в зависимости от их природы, могут быть отражены в модели как случайные события, случайные величины (дискретные или непрерывные) или как случайные функции (процессы). Например, если с помощью создаваемой имитационной модели предполагается исследовать надежность вычислительной системы, то возникновение отказа будет представлено в модели как случайное событие. Если же модель предназначена для оценки временных параметров процесса обслуживания клиентов в автомастерской, то интервал времени до появления очередного клиента удобнее всего описать как случайную величину, распределенную по некоторому закону. Методы генерации случайных чисел В основе всех методов и приемов моделирования случайных факторов лежит исполь- зование случайных чисел, имеющих равномерное распределение на интервале [0; 1 ]. «Истинно» случайные числа формируются с помощью аналого-цифровых преобразо- вателей на основе сигналов физических генераторов, использующих естественные источники случайных шумов (радиоактивный распад, шумы электронных и полу- проводниковых устройств и т. п.). Случайные числа, генерируемые аппаратно или программно на ЭВМ, называются псевдослучайными. Однако их статистические свойства совпадают со статистически- ми свойствами «истинно» случайных чисел. В состав практически всех современ-
Моделировоние случойных факторов 41 ных систем программирования входят специальные функции генерации случайных чисел, которые обычно называют датчиками или генераторами случайных чисел. Наиболее простой метод программной генерации случайных чисел — мультиплика- тивный; в его основе лежит следующее рекуррентное соотношение: a^A-a^+Omod-M Здесь ар аЬ1 — очередное и предыдущее случайные числа соответственно; А, С — константы; М — достаточно большое целое положительное число (чем больше М, тем длиннее неповторяемая последовательность). Достоинство метода заключается в том, что при одних и тех же значениях парамет- ров, входящих в это выражение, можно полностью воспроизвести эксперимент. Требования к генераторам случайных чисел Практика показывает, что результаты имитационного моделирования существенно зависят от качества используемых последовательностей псевдослучайных чисел. Поэтому применяемые в ИМ генераторы случайных чисел должны пройти тесты на пригодность. Основные анализируемые характеристики генерируемых датчиком последователь- ностей: О равномерность; О стохастичность (случайность); О независимость. Рассмотрим методы проведения такого анализа, наиболее часто применяемые на практике. Проверка равномерности Проверка равномерности может быть выполнена с помощью гистограммы относи- тельных частот генерируемой случайной величины. Для ее построения интервал (0,1) разбивается на ш равных частей и подсчитывается относительное число попаданий значений случайной величины в каждый интервал. (Более подробно алгоритм пост- роения гистограммы относительных частот рассматривается в разделе «Обработка и анализ результатов моделирования»). Чем ближе огибающая гистограммы к прямой, тем в большей степени генерируемая последовательность отвечает требованию рав- номерности распределения (рис. 2.3). Проверка стохастичности Рассмотрим один из основных методов проверки — метод комбинаций. Суть его сводится к следующему. Выбирают достаточно большую последовательность случай- » ных чисел Xj и для нее определяют вероятность появления в каждом из х, ровно j единиц. При этом могут анализироваться как все разряды числа, так и только 1 стар- ших. Теоретически закон появления j единиц в 1 разрядах двоичного числа может
42 Урок 2. Основы технологии имитационного моделирования быть описан как биномиальный закон распределения (исходя из независимости от- дельных разрядов). Рис. 2.3. Частотная гистограмма последовательности случайных чисел Тогда при длине выборки N ожидаемое число появлений случайных чисел х4 с j еди- ницами в проверяемых 1 разрядах будет равно: npN-Cyp’CI) Здесь С\ — число комбинаций (сочетаний) j единиц в 1 разрядах; pJ(1) — вероят- ность появления единицы в двоичном разряде; р (1)=0.5. Для полученной последовательности определяется эта же характеристика. Провер- ка соответствия реального значения теоретическому выполняется с помощью одно- го из статистических критериев согласия. Проверка независимости Проверка независимости проводится на основе вычисления корреляционного момента. Напомним, что две случайные величины а и b называются независимыми, если за- кон распределения каждой из них не зависит от того, какое значение приняла другая. Для независимых случайных величин корреляционный момент равен нулю. Для оценки независимости элементов последовательности поступают следующим образом. 1. Вводят в рассмотрение дополнительную последовательность У, в которой У,=х1+Г> где t — величина сдвига последовательности У относительно исходной последо- вательности X. 2. Вычисляют коэффициент корреляции случайных величин X и У, для чего исполь- зуются специальные расчетные соотношения. Еще одна важная характеристика датчика случайных чисел — длина отрезка апери- одичности L.
Моделирование случайных факторов 43 Если в основу работы датчика положен мультипликативный метод, то оценить L не- сложно: она определяется величиной константы М. Моделирование случайных событий Для моделирования случайного события А, вероятность которого равна Рс, достаточ- но сформировать одно число г, равномерно распределенное на интервале [ 0,1 ]. При попадании г в интервал [ 0, Рс ] считают, что событие А наступило, в противном слу- чае не наступило. Пусть, например, вероятность отказа вычислительной системы составляет 0.3. Что- бы определить, возникнет ли отказ на очередном шаге моделирования, достаточно сгенерировать с помощью датчика одно случайное число г и сравнить его с вероятно- стью отказа (рис. 2.4). Ро-0.3 Ро-0.3 I—I------1---------------1 I----------1--------1-----1 О 10 1 I----х------------------------1 I------------------------X------, 0 г 10 Г 1 Рис. 2.4. Маделировоние случайного события: отказ «произошел» (слева), отказ «не произошел» (справа) Для моделирования полной группы N несовместных событий А={ А,, А2 Ан} с ве- роятностями соответственно Р„ Р2,..., PN также достаточно одного значения г: событие А, из группы А считается наступившим, если выполняется условие: A = A1Spi <r<Xpi 1=0 1=0 Здесь n=1,N. Предположим, что в каждый момент времени может происходить обращение толь- ко к одному из трех модулей оперативной памяти вычислительной системы. Веро- ятности обращения к каждому из них Pv Р2 и Р3 равны соответственно 0.3,0.5 и 0.2. Чтобы узнать, из какого именно модуля будут считаны данные, необходимо опреде- лить, в какой интервал попадет полученное от датчика случайное число г (рис. 2.5). Если группа событий А не полна, то вводят фиктивное событие AN„ с вероятностью Ри.„ такой, что сумма вероятностей становится равной 1. После этого генерируют число г и проверяют указанное выше условие. При А=А(И1 считают, что ни одно событие из исходной группы А не наступило. Для имитации зависимых событий А и В (В зависит от А) необходимо знать безус- ловную вероятность Р( А) события А и условные вероятности Р( В/A) и Р( В/A). Сначала
44 Урок 2. Основы технологии имитационного моделирования описанным выше способом имитируется появление события А, в зависимости от исхода выбирается одна из вероятностей Р( В/A) или Р(В/А),ипотой же технологии определяется наступление события В. ₽1 Р2 Р3 I---Л---II—Л—II—--------1 I-------4------4----1—I О 0.3 0.5 1 I—X--------------------1 I----------------------X--1 0 г 10 Г 1 Рис. 2.5. Моделирование полной группы из трех несовместных событий — обращение к первому модулю памяти (слева), обращение к третьему модулю памяти (справа) Моделирование случайных величин При моделировании дискретных случайных величин наиболее часто используются два метода: О метод последовательных сравнений; О метод интерпретации. Метод последовательных сравнений Число г последовательно сравнивают со значением суммы Р,+Р2+..., где Р, — веро- ятность наименьшего значения случайной величины Y, Р2 — вероятность второго по величине значения. При первом выполнении следующего условия проверка прекра- щается и дискретная случайная величина Y считается принявшей значение у/ Г>ХР! 1=1 Процесс можно ускорить, применяя методы оптимизации перебора: дихотомии, ранжирования Р и т. д. Величины Pj рассчитывают по функциям распределения вероятности, соответству- ющим моделируемому закону. Метод интерпретации Метод основан на физической трактовке моделируемого закона распределения. На- пример, биномиальное распределение описывает число успехов в п независимых испы- таниях с вероятностью успеха в каждом испытании Р и вероятностью неудачи g=1 - Р. При моделировании этого распределения с помощью метода интерпретации выби- рают п независимых случайных чисел, равномерно распределенных на интервале
Моделирование случайных факторов 45 [0,1], и подсчитывают количество тех из них, которые меньше Р. Это число и явля- ется моделируемой случайной величиной. Моделирование непрерывных случайных величин При моделировании непрерывных случайных величин с заданным законом распре- деления могут использоваться три метода: О метод нелинейных преобразований; О метод композиций; О табличный метод. Первые два метода требуют от разработчика модели весьма серьезной математичес- кой подготовки и в данной книге не рассматриваются. Третий метод, условно назван- ный «табличным», основан на замене закона распределения непрерывной случайной величины специальным расчетным соотношением, которое позволяет вычислять значение случайной величины по значению случайного числа, равномерно распре- деленного все на том же интервале [0,1]. Такие соотношения получены практически для всех наиболее распространенных видов распределений и приведены в справочной литературе. В качестве примера ниже даны расчетные соотношения для двух законов распределения — показательного и нормального: х = -у-1п(г) ' Л Здесь X — параметр показательного распределения, г — равномерно распределенное случайное число. Здесь m, s — параметры нормального закона распределения, rt — равномерно распре- деленное случайное число. Технологию моделирования непрерывных случайных величин поясним на двух не- больших примерах. s Специалисты в области надежности технических систем доказали, что интервалы времени между отказами распределены по экспоненциальному закону. Чтобы полу- чить в модели величину промежутка времени между двумя соседними отказами, достаточно сгенерировать случайное число г и подставить его в указанное выше выражение для показательного закона распределения; разумеется, при этом должен быть известен параметр распределения X. Нормальный закон имеет более широкий диапазон применения, поскольку любая величина, зависящая от большого числа случайных факторов, может считаться распределенной по нормальному закону. Например, если некто играет в «Дартс» и пытается попасть в центр круга (в «бычий глаз»), то координаты точек попадания дротика можно считать распределенными по нормальному закону с параметрами m и
46 Урок 2. Основы технологии имитационного моделирования s, где m — координаты точки прицеливания, a s характеризует отклонение от нее по каждой из координат. Для определенности предположим, что mx=my=0, a sx=sy=5, то есть «бычий глаз» имеет координаты (0,0) и отклонение составляет 5 см. Чтобы смоделировать координаты очередной точки попадания, следует получить от датчи- ка две последовательности случайных чисел для каждой из координат в отдельно- сти (по 12 чисел в каждой) и подставить их вместе с параметрами закона в выраже- ние для нормального закона распределения: х = 5 у = 5 В одной и той же имитационной модели могут фигурировать различные случайные факторы, одни могут быть представлены как случайные события, другие — как слу- чайные величины; более того, если моделируется поведение достаточно сложной системы, то ее функционирование может быть связано с возникновением несколь- ких типов событий и учетом большого числа случайных величин, распределенных по различным законам. Если же моделирование всех случайных факторов основано на использовании одного датчика, генерирующего одну «общую» последовательность случайных чисел, то с математической точки зрения их нельзя считать независимыми. В связи с этим для моделирования каждого случайного фактора стараются ис- пользовать отдельный генератор, или, по крайней мере, обеспечивать создание но- вой последовательности случайных чисел. Во многих специализированных языках и пакетах моделирования такая возможность предусмотрена. Это относится, в част- ности, и к пакету MATLAB. Управление модельным временем Виды представления времени в модели Приступая к изучению механизмов управления модельным временем, уместно поговорить о том, какую роль вообще играет время в имитационном моделиро- вании. При знакомстве с имитационным экспериментом мы отмечали, что он пред- ставляет собой наблюдение за поведением системы в течение некоторого промежут- ка времени. Конечно, далеко не во всех статистических испытаниях фактор времени играет ведущую роль, а в некоторых и вообще может не рассматриваться. Вспом- ните, например, задачу о вычислении площади круга: полученный результат не зависел от того, сколь долго мы «бомбили» квадрат случайными точками (речь в данном случае не идет о количестве этих точек). Но значительно больше задач, в
Упровление модельным временем 47 которых оценка эффективности моделируемой системы напрямую связана с вре- менными характеристиками ее функционирования. К ним относятся упоминав- шиеся уже задачи по оценке производительности, некоторые задачи по оценке надежности, качества распределения ресурсов, а также все задачи, связанные с исследованием эффективности процессов обслуживания. Характерной особенно- 1 стью большинства практических задач является то, что скорость протекания рас- «I сматриваемых в них процессов значительно ниже скорости реализации модельного Г эксперимента. Например, если моделируется работа вычислительного центра в | течение недели, вряд ли кому-то придет в голову воспроизводить этот процесс в L модели в таком же масштабе времени. С другой стороны, даже те имитационные К эксперименты, в которых временные параметры работы системы не учитывают- к ся, требуют для своей реализации определенных затрат времени работы компью- Б тера. в.В связи с этим при разработке практически любой имитационной модели и плани- К ровании проведения модельных экспериментов необходимо соотносить между со- I'бой три представления времени: t О реальное время, в котором происходит функционирование имитируемой сис- R темы; КО модельное (или, как его еще называют, системное) время, в масштабе которого IГ организуется работа модели; Б. О машинное время, отражающее затраты времени Э ВМ на проведение имитации. №С помощью механизма модельного времени решаются следующие задачи: К О отображается переход моделируемой системы из одного состояния в другое; fО производится синхронизация работы компонент модели; к О изменяется масштаб времени «жизни» (функционирования) исследуемой сис- № темы; Е О производится управление ходом модельного эксперимента; К О моделируется квазипараллельная реализация событий в модели. I Приставка «квази» в данном случае отражает последовательный характер обработ- р ки событий (процессов) в ИМ, которые в реальной системе возникают (протекают) одновременно. [ Необходимость решения последней задачи связана с тем, что в распоряжении ис- Is следователя находится, как правило, однопроцессорная вычислительная система, а £ модель может содержать значительно большее число одновременно работающих р подсистем. Поэтому действительно параллельная (одновременная) реализация всех К компонент модели невозможна. Даже если используется так называемая распреде- * ленная модель, реализуемая на нескольких узлах вычислительной сети, совсем не обязательно, что число узлов будет совпадать с числом одновременно работающих компонент модели. Немного забегая вперед, следует отметить, что реализация ква-
48 Урок 2. Основы технологии имитационного моделирования зипараллельной работы компонент модели является достаточно сложной техниче- ской задачей. Некоторые возможные методы ее решения рассматриваются в следую- щем разделе, а пути полного избавления от этой проблемы с помощью пакета MATLAB — начиная со следующего урока. Ранее были названы два метода реализации механизма модельного времени — с по- стоянным шагом и по особым состояниям. Выбор метода реализации механизма модельного времени зависит от назначения модели, ее сложности, характера исследуемых процессов, требуемой точности результатов и т. д. Изменение времени с постоянным шагом При использовании данного метода отсчет системного времени ведется через фик- сированные, выбранные исследователем интервалы времени. События в модели считаются наступившими в момент окончания этого интервала. Погрешность в измерении временных характеристик системы в этом случае зависит от величины шага моделирования At. Метод постоянного шага целесообразно использовать в том случае, если: О события появляются регулярно, их распределение во времени достаточно равно- мерно; О число событий велико и моменты их появления близки; О невозможно заранее определить моменты появления событий. Данный метод управления модельным временем достаточно просто реализрвать в том случае, когда условия появления событий всех типов в модели можно предста- вить как функцию времени. Пусть, например, событие состоит в том, что летящий самолет пересекает некоторый воздушный рубеж, расстояние до которого равно R. Если самолет движется по прямой с постоянной скоростью V, можно вычислять путь, пройденный самолетом, с интервалом времени At:-S=S+V-At. Соответственно, событие считается наступив- шим, если выполняется условие S>R, а момент времен»наступления события прини- мается равным n-At, где п — номер шага моделирования, на котором условие стало истинным. В общем виде алгоритм моделирования с постоянным шагом представлен на рис. 2.6 (tH — текущее значение модельного времени, Тн — заданный интервал моделирова- ния), а для рассмотренного выше примера с самолетом — на рис. 2:1. Обратите внимание на то, что в отличие от обобщенного алгоритма, в приведенном примере моделирование завершается не по истечении заданного интервала времени, а при наступлении интересующего нас события. В связи с этим необходимо еще раз подчеркнуть, что при моделировании с постоянным шагом результат моделирова- ния напрямую зависит от величины этого шага. Причем, если шаг будет слишком большим, то результат, скорее всего, будет неверным: момент окончания очередного
Упровление модельным временем 49 Рис. 2.6. Алгоритм моделирования с постоянным шагам Рис. 2.7. Пример моделирования с постоянным шагам шага очень редко будет совпадать с реальным моментом пересечения самолетом за- данного рубежа. Такая ситуация показана на рис. 2.8. Рис. 2.8. Зависимость результата эксперимента от шага модельного времени На рисунке использованы следующие обозначения: О tj — ось модельного времени при использовании шага At,; О tm2 — ось модельного времени при использовании шага Дг2;
50 Урок 2. Основы технологии имитационного моделировония О tp — ось реального времени; ОТ,- реальный момент пересечения самолетом рубежа; О TR1, ТВ2 — моменты пересечения рубежа, полученные для соответствующих вели- чин At. Приведенный пример призван, кроме всего прочего, обратить внимание читателя на то, что выбор величины шага моделирования является нелегким и очень важным делом. Универсальной методики решения этой проблемы не существует, но во мно- гих случаях можно использовать один из следующих подходов: О принимать величину шага равной средней интенсивности возникновения собы- тий различных типов; О выбирать величину шага равной среднему интервалу между наиболее частыми (или наиболее важными) событиями. Изменение времени по особым состояниям При моделировании по особым состояниям системное время каждый раз изменяет- ся на величину, строго соответствующую интервалу времени до момента наступле- ния очередного события. В этом случае события обрабатываются в порядке их на- ступления, а одновременно наступившими считаются только те, которые являются одновременными в действительности. Для реализации моделирования по особым состояниям требуется разработка спе- циальной процедуры планирования событий (так называемого календаря событий). Если известен закон распределения интервалов между событиями, то такое прогно- зирование труда не составляет: достаточно к текущему значению модельного време- ни добавить величину интервала, полученную с помощью соответствующего датчика. Пусть, например, за летящим самолетом, фигурировавшем при описании моделирова- ния с постоянным шагом, наблюдает диспетчер. Он вводит информацию о самолете, причем интервалы между вводом двух соседних сообщений являются случайными величинами, распределенными по нормальному закону с заданными параметрами. Иллюстрация к такой ситуации приведена на рис. 2.9 (Тс — момент ввода очередного сообщения, At— случайный интервал). Atj Atj Atj I------------II------II---------1 I------------1------1-----------1——► tm“O Tcl Tc2 Tc3 t„ Tcl“tm+Ati ТйЧп+дъ Tc3“tn,+At3 Рис. 2.9. Изменение модельного времени по особым состояниям Если же момент наступления события определяется некоторыми логическими ус- ловиями, то необходимо сформулировать эти условия и проверять их истинность
’ST Упровление модельный временем 51 для каждого последующего шага моделирования. Практика показывает, что сложно- сти в реализации механизма изменения времени по особым состояниям связаны в первую очередь с корректным описанием таких условий. Трудности еще более воз- растают, если в модели фигурируют несколько типов взаимосвязанных событий. Моделирование по особым состояниям целесообразно использовать, если: О события распределяются во времени неравномерно или интервалы между ними велики; О предъявляются повышенные требования к точности определения взаимного по- ложения событий во времени; О необходимо учитывать наличие одновременных событий. Дополнительное достоинство метода заключается в том, что он позволяет эконо- мить машинное время, особенно при моделировании систем периодического дей- ствия, в которых события длительное время могут не наступать. Обобщенная схема алгоритма моделирования по особым состояниям представлена на рис. 2.10 (tco6 л — прогнозируемый момент наступления i-го события). Рис. 2.10. Алгоритм моделирования па особым состояниям Чтобы читатель смог «почувствовать разницу» в использовании двух методов управления модельным временем, вернемся к примеру с диспетчером Дополним
52 Урок 2. Основы технологии имитационного моделирования его следующим условием: необходимо подсчитать число сообщений, которые успе- ет ввести диспетчер в течение заданного интервала моделирования. Прежде всего, необходимо ответить на вопрос: что понимать под «особыми состоя- ниями», которые должны влиять на изменение модельного времени? На практике обычно вместо состояний рассматривают события, определяющие смену состояний моделируемого процесса. Для процесса ввода информации диспетчером такой пере- ход выполняется достаточно просто: событие — это ввод очередного сообщения; другими словами, ввод очередного сообщения «продвигает» модельное время на соответствующий интервал. Так, если интервалы между сообщениями подчиняют- ся нормальному закону с параметрами го и s, то очередное i-e значение модельного времени tn( 1) определяется следующим образом: tm(i)=tB(i-1)+norm(m, s) В этом выражении слагаемое по rm (m, s) означает обращение к генератору случайных чисел, распределенных по нормальному закону. Алгоритм работы модели приведен на рис. 2.11 (N — число введенных сообщений). Рис. 2.11. Пример работы модели по особым состояниям Подведем итоги изложенному в этом разделе. О Выбор механизма изменения модельного времени определяет технологию реа- лизации имитационной модели.
Моделирование параллельных процессов 53 £ О На выбор метода моделирования влияет целый ряд факторов, однако определя- ем ющим является тип моделируемой системы: для дискретных систем, события в ffi* которых распределены во времени неравномерно, более удобным является изме- Ж,.. нение модельного времени по особым состояниям. /Т' О Если в модели должны быть представлены компоненты реальной системы, рабо- - та которых измеряется в разных единицах времени, то они должны быть предва- - рительно приведены к единому масштабу. моделирование параллельных процессов Практически любая более или менее сложная система имеет в своем составе компо- ДМ.Ненты, работающие одновременно, или как принято говорить в технических науках, ЙНараллельно. Наверняка читатель сам может привести массу примеров таких систем Виз близкой ему области деятельности. Мы же напомним только один, взятый из -фонолога М. Жванецкого, посвященного работе ликеро-водочного завода. Судя по г*'сюжету монолога, все цеха этого предприятия работали абсолютно параллельно и «^независимо друг от друга. «Жтак, если в составе системы имеются компоненты (подсистемы), выполняющие Я^свои функции одновременно, то можно утверждать, что в такой системе существуют ьЯр .^параллельные процессы. Параллельно работающие подсистемы могут взаимодейство- вать самым различным образом, либо вообще работать независимо друг от друга. ДуСпособ взаимодействия подсистем определяет вид параллельных процессов, проте- д^кающих в системе. В свою очередь, вид моделируемых процессов влияет на выбор Ж.'йетода их имитации. * $Виды параллельных процессов К Асинхронный параллельный процесс — это такой процесс, состояние которого не за- Д&висит от состояния другого параллельного процесса (ПП). Як Пример асинхронных ПП, протекающих в рамках одной системы, — подготовка и Ж:/проведение рекламной кампании фирмой и работа сборочного конвейера. Или при- Мер из области вычислительной техники — выполнение вычислений процессором и / Вывод информации на печать. ’Ж1 Синхронный ПП—это такой процесс, состояние которого зависит от состояния вза- имодействующих с ним ПП. Яр Пример синхронного ПП — работа торговой организации и доставка товара со скла- Яр Да (нет товара — нет торговли). Яр Один и тот же процесс может быть синхронным по отношению к одному из актив- ных ПП и асинхронным по отношению к другому. Так, при работе вычислительной сети по технологии «клиент-сервер» каждый из узлов сети синхронизирует свою работу с работай сервера, но не зависит от работы других узлов.
54 Урок 2. Основы технологии имитационного моделирования Подчиненный Ш/создается и управляется другим процессом (более высокого уровня). Весьма характерным примером таких процессов является ведение боевых действий подчиненными подразделениями. Независимый ПП — процесс, который не является подчиненным ни для одного из процессов. Скажем, после запуска неуправляемой зенитной ракеты ее полет можно рассматри- вать как независимый процесс, одновременно с которым самолет ведет боевые дей- ствия другими средствами. Способ организации параллельных процессов в системе зависит от физической сущности этой системы. Остановимся несколько подробнее на особенностях реализации параллельных про- цессов в вычислительных системах (ВС). Это обусловлено следующей причиной. Разработка и использование любой ИМ предполагает ее программную реализацию и исследование с применением ВС. Поэтому для реализации моделей, имитирующих параллельные процессы, в некоторых случаях применимы механизмы, характерные для выполнения параллельных вычислений. Вместе с тем, реализация параллельных процессов в ВС имеет свои особенности: О на уровне задач вычислительные процессы могут быть истинно параллельными только в многопроцессорных ВС или вычислительных сетях; О многие ПП используют одни и те же ресурсы, поэтому даже асинхронные ПП в пределах одной ВС вынуждены согласовывать свои действия при обращении к общим ресурсам; О в ВС дополнительно используется еще два вида ПП: родительский и дочерний ПП; особенность их состоит в том, что процесс-родитель не может быть завершен, пока не завершатся все его дочерние процессы. В силу перечисленных особенностей для организации взаимодействия параллель- ных процессов в ВС используются три основных подхода: О на основе «взаимного исключения»; О на основе синхронизации посредством сигналов; О на основе обмена информацией (сообщениями). «Взаимное исключение» предполагает запрет доступа к общим ресурсам (общим дан- ным) для всех ПП, кроме одного, на время его работы с этими ресурсами (данными). Синхронизация подразумевает обмен сигналами между двумя или более процесса- ми по установленному протоколу. Такой «сигнал» рассматривается как некоторое событие, вызывающее у получившего его процесса соответствующие действия. Часто возникает необходимость передавать от одного ПП другому более подробную информацию, чем просто «сигнал-событие». В этом случае процессы согласуют свою работу на основе обмена сообщениями. Перечисленные механизмы реализуются в ВС на двух уровнях — системном и при- кладном.
Моделирование параллельных процессов 55 I Механизм взаимодействия между ПП на системном уровне определяется еще на‘ к этапе разработки ВС и реализуется в основном средствами операционной системы i (частично — с использованием аппаратных средств). г На прикладном уровне взаимодействие между ПП реализуется программистом By средствами языка, на котором разрабатывается программное обеспечение. Наибольшими возможностями в этом отношении обладают так называемые языки f реального времени и языки моделирования. К. Языки реального времени (ЯРВ) — это языки, предназначенные для создания про- ВТ граммного обеспечения, работающего в реальном масштабе времени, например для Ж’ разработки различных автоматизированных систем управления (предприятием, L воздушным движением и т. д.). К ним, в частности, относятся: язык Ада, язык Моду- Же ла и практически единственный отечественный язык реального времени — Эль-76 К» (использовавшийся в многопроцессорных вычислительных комплексах семейства № «Эльбрус»). ^Методы описания параллельных процессов Ж; Языки моделирования по сравнению с языками реального времени требуют от раз- работника значительно менее высокого уровня подготовки в области программиро- Д^г вания, что обусловлено двумя обстоятельствами: Ж#;О средства моделирования изначально ориентированы на квазипараллельную об- JPs- работку параллельных процессов; 0 механизмы реализации ПП относятся, как правило, к внутренней организации W системы (языка) моделирования и их работа скрыта от программиста. 4?;В практике имитационного моделирования одинаково широко используются как .'-процессно-ориентированные языки (системы) моделирования, например SIMULA, А |‘Так и языки, ориентированные на обработку транзактов (например, язык GPSS). Для тех и других характерны аналогичные методы реализации квазипараллелизма, Ж основаннь1е на веДении списков событий. В процессно-ориентированных системах используются списки событий следования, а в транзактных системах — списки со- Ж.‘< бытий изменения состояний. С . Современные языки и системы моделирования, ориентированные на среду многоза- дачных операционных систем типа Windows, частично используют аналогичные ме- ‘{4; Ханизмы управления процессами, что делает их применение еще более эффектив- Ж’ ным. В пакете MATLAB также имеется собственный язык моделирования, и к нему ж • • в полной мере можно отнести сказанное выше. Этот язык имеет свои особенности № моделирования параллельных процессов, которые подробно рассматриваются в сле- дующих уроках. Тем не менее, во многих случаях оказывается полезным знание об- ж щего механизма реализации ПП в языках моделирования. ж Рассмотрим его применительно к моделированию на основе транзактов. ♦ Ж В этом случае под событием понимается любое перемещение транзакта по системе, а также изменение его состояния (обслуживается, заблокирован и т. д.).
56 Урок 2. Основы технологии имитационного моделирования Событие, связанное с данным транзактом, может храниться в одном из следующих списков. О Список текущих событий. В этом списке находятся события, время наступления которых меньше или равно текущему модельному времени. События с «мень- шим» временем связаны с перемещением тех транзактов, которые должны были начать двигаться, но были заблокированы. О Список будущих событий. Этот список содержит события, время наступления которых больше текущего модельного времени, то есть события, которые должны произойти в будущем (условия наступления которых уже определены, например известно, что транзакт будет обслуживаться некоторым устройством 10 единиц времени). О Список прерываний. Данный список содержит события, связанные с возобновле- нием обработки прерванных транзактов. События из этого списка выбираются в том случае, если сняты условия прерывания. Рассмотрим использование двух первых списков событий в динамике, при модели- ровании параллельных процессов. В списке текущих событий транзакты расположены в порядке убывания приоритета соответствующих событий, а при равных приоритетах — в порядке поступления в список. Каждое событие (транзакт) в списке текущих событий может находиться либо в активном состоянии, либо в состоянии задержки. Если событие активно, то соот- ветствующий транзакт может быть продвинут по системе; если продвижение невоз- можно (например, из-за занятости устройства), то событие (и транзакт) переводит- ся в состояние задержки. Как только завершается обработка (продвижение) очередного активного транзакта, просматривается список задержанных транзактов, и ряд из них переводится в активное состояние. Процедура повторяется до тех пор, пока в списке текущих со- бытий не будут обработаны все активные события. После этого просматривается список будущих событий. Модельному времени присваивается значение, равное времени наступления ближайшего из этих событий. Данное событие заносится в список текущих событий. Затем просматриваются остальные события списка. Те из них, время которых равно текущему модельному времени, также переписываются в список текущих событий. Просмотр заканчивается, когда в списке остаются собы- тия, времена которых больше текущего модельного времени. В качестве иллюстрации к изложенному рассмотрим небольшой пример. Пусть в систему поступают транзакты трех типов, каждый из которых обслуживает- ся отдельным устройством. Известны законы поступления транзактов в систему и длительность их обслуживания. Таким образом, в системе существуют три парал- лельных независимых процесса (Р,, Р2, Р3). Временная диаграмма работы системы при обслуживании одного транзакта каждого типа показана на рис. 2.12.
Моделирование параллельных процессов 57 Рис. 2.12. Временная диаграмма параллельных процессов На рисунке события, относящиеся к процессу Р,, обозначены как С1Р относящиеся к Рг и к Р3 — соответственно как С21 и С31. Время Р[16служ соответствует времени обслужи- вания транзакта. Для каждого процесса строится своя цепь событий, однако списки событий являют- ся общими для всей модели. Формирование списков начинается с заполнения спис- ка будущих событий. Как было отмечено выше, в этот список помещаются события, время наступления которых превышает текущее значение модельного времени. Оче- видно, что на момент заполнения списка время наступления прогнозируемых собы- тий должно быть известно. На первом шаге t„=0 в список будущих событий заносят- ся события С„, С21, С31. Затем событие с наименьшим временем наступления — С,, — переносится в список текущих событий; если одновременных с ним событий нет, то оно обрабатывается и исключается из списка текущих событий. После этого вновь корректируется список будущих событий и т. д., пока не истечет заданный интервал моделирования. Динамика изменения списков текущих и будущих событий для рассмотренного примера отражена в приведенной ниже таблице. Значения модельного времени Список будущих событий Список текущих событий 0 Сц С21 С31 0 т„ б21 С31 С,2 С„ т21 С31 С12 С22 С21 т31 С12 С22 С32 б31 т12 С22 С32 С13 С12 Т22 С32 С13 С23 С22 Т32 ^13 С23 С33 С32 Т13 С?3 С33 б,3 Т23 ^23 С33 Многие авторы книг по имитационному моделированию, ставших уже классикой, считают, что знание механизма ведения списков событий просто необходимо разработ-
58 Урок 2. Основы технологии имитационного моделирования чику модели; умение проследить в динамике цепь происходящих в модели событий, во-первых, повышает уверенность создателя модели в том, что она работает правиль- но и, во-вторых, существенно облегчает процесс отладки и модификации модели. Применение сетевых моделей для описания параллельных процессов Сведения, приведенные в предыдущем разделе, кроме всего прочего должны были убедить читателя в том, что разработчику имитационной модели необходимо иметь хотя бы минимальные знания и навыки в области программирования. И хотя следу- ющие уроки книги в основном посвящены тому, чтобы развеять это впечатление, тем не менее, существует проблема, которую мы не сможем обойти. Речь идет о том, что этапу программной реализации модели (то есть ее описанию на одном из языков программирования) должен предшествовать так называемый этап алгоритмизации. Другими словами, прежде чем превратить имитационную модель в работающую компьютерную программу, ее создатель должен воспользоваться каким-то менее формальным и более наглядным средством описания логики работы будущей про- граммы. Разумеется, это требование не является обязательным для всех разработчи- ков и для всех создаваемых моделей: при наличии достаточного опыта программа не очень сложной модели может быть написана сразу. Однако практика показывает, что человеческие возможности не безграничны, и при моделировании более слож- ных систем даже опытные разработчики бывают вынуждены немного «притормо- зить» на этапе алгоритмизации. Для описания логики работы модели могут быть использованы различные средства: либо русский язык (устный или письменный), либо традиционные схемы алгоритмов (как на рис. 2.10,2.11), либо какие-то другие «подручные» средства. Первые два варианта являются, как правило, наиболее зна- комыми и наиболее часто используемыми. Однако если вы попробуете описать в виде схемы алгоритма модель даже такой простой системы, которая использовалась в предыдущем примере, то это окажется напрасной тратой времени и сил. Прежде всего потому, что такие схемы совершенно не приспособлены для описания парал- лельных процессов. Именно поэтому представляется необходимым познакомить читателя с одним из наиболее элегантных и весьма распространенных средств описания параллельных процессов — сетями Петри. Им посвящено достаточно большое число изданий, по- этому мы ограничимся изложением только тех основных сведений, которые необхо- димы с точки зрения реализации технологии имитационного моделирования парал- лельныхпроцессов. Сети Петри Одно из основных достоинств аппарата сетей Петри заключается в том, что они мо- гут быть представлены как в графической форме (что обеспечивает наглядность), так и в аналитической (что позволяет автоматизировать процесс их анализа). При графической интерпретации сеть Петри представляет собой граф особого вида, состоящий из вершин двух типов — позиций и переходов, соединенных ориентиро- ванными дугами, причем каждая дуга может связывать лишь разнотипные вершины
Моделирование параллельных процессов 59 L (позицию с переходом или переход с позицией). Вершины-позиции обозначаются | кружками, вершины-переходы — черточками. С содержательной точки зрения пе- [ реходы соответствуют событиям, присущим исследуемой системе, а позиции — ye- lp ловиям их возникновения. Таким образом, совокупность переходов, позиций и дуг В позволяет описать причинно-следственные связи, присущие системе, но в статике. К Чтобы сеть Петри «ожила», вводят еще один вид объектов сети — так называемые к фишки или метки позиций. Переход считается активным (событие может произой- № ти), если в каждой его входной позиции есть хотя бы одна фишка. К. Расположение фишек в позициях сети называется разметкой сети. к В аналитической форме сеть Петри может быть представлена следующим образом: К Р=(В, D, I, О, М) К В этом выражении представлены следующие параметры: К О В=Ь4 — конечное непустое множество позиций; О D=di— конечное непустое множество переходов; К, О I: BxD—>(0,1) —входная функция (прямая функция инцидентности), которая для каждого перехода задает множество его входных позиций; И О 0: DxB—>( О,1) — выходная функция (обратная функция инцидентности), которая К Для каждого перехода задает множество его входных позиций; О М — функция разметки сети, М: В—>(0,1,2,...) —ставит каждой позиции сети в соот- К ветствие неотрицательное целое число (равное числу меток в данной позиции). К С учетом введенных обозначений необходимое условие срабатывания перехода ф К (для всех входных позиций число находящихся в них меток должно быть не мень- ’ ше 1) может быть записано следующим образом: К Срабатывание перехода d} изменяет разметку сети М (В) на разметку М' (В) по следую- К щему правилу: КМ' (B)=M(B)-I(dj)+O(dj) В То есть переход d^ изымает по одной метке из каждой своей входной позиции и до- Кбавляет по одной метке в каждую из выходных позиций. Смену разметки обознача- К ют так: ^.Входная и выходная функции сети Петри (I и 0) позволяют описать любую сеть с ^Помощью двух матриц размера гохп (матриц входных и выходных позиций), имею- [‘щих следующую структуру: КО) d, d2 ... dn [ b, 0 1 ... 1 ! b2 1 1 ... 0 bm 1 0 ... 1
60 Урок 2. Основы технологии имитационного моделирования При анализе сети Петри основное внимание уделяется, как правило, трем направ- лениям. О Проблема достижимости. В сети Петри с начальной разметкой Мо требуется опре- делить, достижима ли принципиально некоторая разметка М' из Мо. С точки зре- ния исследования моделируемой системы, эта проблема интерпретируется как проблема достижимости (реализуемости) некоторого состояния системы. О Оценка живости переходов сети. Под живостью перехода понимают возмож- ность его срабатывания в данной сети при начальной разметке Мо. Анализ модели на свойство живости позволяет выявить невозможные состояния в моделируе- мой системе (например, неисполняемые ветви в программе). О Оценка безопасности сети. Безопасной является такая сеть Петри, в которой ни при каких условиях не может появиться более одной метки в каждой из пози- ций. Для исследуемой системы это означает возможность функционирования ее в стационарном режиме. На основе анализа данного свойства могут быть опреде- > лены требования к буферным накопителям в системе. Итак, достоинства сетей Петри заключаются в следующем: О позволяют моделировать ПП всех возможных типов с учетом возможных конф- ликтов между ними; О обладают наглядностью и обеспечивают возможность автоматизированного ана- лиза; О позволяют переходить от одного уровня детализации описания системы к другому (за счет раскрытия/закрытия переходов). Вместе с тем, сети Петри имеют ряд недостатков, ограничивающих их возможности. Основной из них — время срабатывания перехода считается равным нулю, что не позволяет исс ледовать с помощью сетей Петри временные характеристики модели- руемых систем. Е-сети В результате развития аппарата сетей Петри был разработан ряд расширений. Одно из наиболее мощных — так называемые Е-сети (evaluation — «вычисления», «оцен- ка») — «оценочные сети». В отличие от сетей Петри, в Е-сетях: О имеются несколько типов вершин-позиций: простые позиции, позиции-очереди, разрешающие позиции; О фишки (метки) могут снабжаться набором признаков (атрибутов); О с каждым переходом может быть связана ненулевая задержка и функция преоб- разования атрибутов фишек; О введены дополнительные виды вершин-переходов; О в любую позицию может входить не более одной дуги и выходить также не более одной.
Моделирование параллельных процессов 61 В связи с этим любой переход может быть описан тройкой параметров: dj = (S, t(dj), p(dp) Здесь S — тип перехода, t (d,) — функция задержки, отражающая длительность сра- батывания перехода, р( d,) — функция преобразования атрибутов меток. Еще одно важное отличие Е-сетей от сетей Петри состоит в том, что метки интерпре- тируются как транзакты, перемещающиеся по сети, а вершины-переходы трактуют- ся как устройства, выполняющие ту или иную обработку транзактов. Следствием такого подхода является требование: ни одна вершина-позиция Е-сети не может со- держать более одной метки (то есть любая Е-сеть изначально является безопасной). Базовые переходы Е-сети описаны ниже. Т-переход ( «исполнение», «простой переход»). Его графическое представление ана- логично представлению вершины-перехода сети Петри (рис. 2.13, слева). Переход срабатывает при наличии метки во входной позиции и отсутствии ее в выходной позиции. Формально это можно записать так: (1;0) |— (0;1) Т-переход позволяет отразить в модели занятость некоторого устройства (подсис- темы) в течение некоторого времени, определяемого параметром t (d). F-переход («разветвление»). Графическое представление приведено на рис. 2.13 в центре. Срабатывает при тех же ус ловиях, что и Т-переход: (1;0,0) (0;1,1) С содержательной точки зрения, F-переход отображает разветвление потока инфор- мации (транзактов) в системе. Рис. 2.13. Графическое представление переходов Е-сети — Т-переход (слева), F-переход (в центре), J-переход (спрово) J-переход («объединение»). Графическое обозначение показано на рис. 2.13 справа. Переход срабатывает при наличии меток в обеих входных позициях и отсутствии метки в выходной позиции: (1,1;0) [— (0,0:1) Он моделирует объединение потоков или наличие нескольких условий, определяю- щих некоторое событие. X-переход («переключатель»). По сравнению с тремя предыдущими типами перехо- дов, он содержит дополнительную управляющую («разрешающую») позицию, кото- рая графически обозначается обычно либо квадратиком, либо шестиугольником (рис. 2.14, слева).
62 Урок 2. Основы технологии имитационного моделирования Рис. 2.14. Графическое представление переходов Е-сети, имеющих разрешающую позицию — Х-переход (слева), Y-переход (справа) Логика его срабатывания задается следующими соотношениями: (0; 1;0,0) (0; 1;0,1) (1; 1; 0,0) — (0:0; 1,0) — (0;0;1,1) — (0;0;0,1) — (0;0;1,1) Х-переход изменяет направление потока информации (транзактов). В общем случае разрешающая процедура может быть сколь угодно сложной, но сущность ее работы заключается в проверке выполнения условий разветвления потока (с точки зрения программиста, разрешающая позиция аналогична условной инструкции типа if). Y-переход («выбор», «приоритетный выбор»). Этот переход также содержит разре- шающую позицию (рис. 2.14, справа). Логика срабатывания У-перехода: (0,1,1,0) — (0,0,1,1) (0,1,0,0) — (0,0,0,1) (0,0,1,0) — (0,0,0,1) (1,1,1,0) — (0,1,0,1) (1,1,0,0) — (0,0,0,1) (1,0,1,0) — (0,0,0,1) Y-переход отражает приоритетность одних потоков информации (транзактов) по сравнению с другими. При этом разрешающая процедура может быть определена различным образом: как операция сравнения фиксированных приоритетов меток; как функция от атрибутов меток (например, чем меньше время обслуживания, тем выше приоритет). В некотором смысле он работает аналогично инструкции выбора типа case. Еще раз подчеркнем, что в Е-сети все переходы обладают свойством безопасности. Это означает, что в выходных позициях (которые, в свою очередь, могут быть вход- ными для следующего перехода) никогда не может быть более одной метки. Вместе: с тем, в Е-сетях существуют понятия макроперехода и макропозиции, которые позво- ляют отображать в модели процессы накопления обслуживаемых транзактов в тех или иных узлах системы, а также расширить логические возможности Е-сетей. Рассмотрим некоторые из них. Макропозиция очередь представляет собой линейную композицию Т-переходов; суммарное количество выходных вершин-позиций определяет «емкость» очереди. Макропозиция генератор позволяет представлять в сети источник меток (транзактов). Если необходимо задать закон формирования меток, то «генератор» может быть дополнен разрешающей позицией.
Планирование модельных экспериментов 63 Поскольку в Е-сети нельзя «накапливать» метки, то вводится макропозиция погло- щения (или аккумулятор). В целях повышения компактности и наглядности Е-сети для обозначения макропо- зиций используют специальные символы: О Q —очередь; О G — генератор; О А — аккумулятор. Аналогичным образом, путем композиции N однотипных переходов могут быть по- лучены макропереходы всех типов: XN, YN, JN. Рассмотренные особенности Е-сетей существенно расширяют их возможности для моделирования дискретных систем вообще и параллельных процессов в частности. Ниже приведен пример описания в виде Е-сети мультипрограммной вычислитель- ной системы (рис. 2.15). Обработка поступающих заданий организована в ней по принципу квантования времени: каждому заданию выделяется равный отрезок (квант) процессорного времени; если задание выполнено, то оно покидает систему, если же времени оказалось недостаточно, то задание встает в очередь и ждет повтор- ного выделения кванта времени. Рис. 2.15. Пример описания вычислительной системы в виде Е-сети На рисунке использованы следующие обозначения: О сП—постановка задания в очередь; О d2 — выполнение задания в течение одного кванта времени; О d3 — анализ степени завершенности задания. Помимо очевидных достоинств Е-сетей, проявленное к ним внимание объясняется еще и тем, что технология моделирования систем в виде Е-сетей весьма эффективно реализуется с помощью инструмента SIMULINK, входящего в состав пакета MATLAB. Планирование модельных экспериментов Цели планирования экспериментов В качестве вступления хотелось бы привести небольшой пример, призванный смяг- чить некоторую сухость, появившуюся в изложении. Предположим, три юных натуралиста решили изучить повадки некой птички, оби- тающей в средней полосе (какого-нибудь зяблика). Первый стал наблюдать за птич-
64 Урок 2. Основы технологии имитационного моделирования кой по утрам, второй — когда придется, а третий вообще отложил это занятие до ( осени. Как вы думаете, кто из них получит наиболее полное и достоверное жизне- описание зяблика? Если вы знакомы с орнитологией (наукой о птицах) на уровне автора, вряд ли вам удастся правильно ответить на этот вопрос. Почему? Потому, что мы слишком мало знаем о птицах вообще и о зябликах в частности. Может быть, . эта птица отличается удивительным постоянством и независимо от сезона и време- ; ни суток занимается одним и тем же (например, высиживанием птенцов). А может, j взбалмошней ее в лесу никого нет: сегодня она в средней полосе, назавтра улетела в < теплые края, а послезавтра оказалась еще где-нибудь. И каждый день придумывает | себе новое занятие. Так в какое время за ней нужно наблюдать и насколько долго, I чтобы получить реальную картину? На подобные вопросы приходится отвечать не только юным натуралистам, нои | тому, кто занимается имитационным моделированием. ч О Во-первых, исследователь и на этапе планирования эксперимента должен по-1 мнить, к какому классу относится моделируемая система (статическая или дина- 1 мическая, детерминированная или стохастическая и т. д.). I О Во-вторых, он должен определить, какой режим работы системы его интересует; 1 стационарный (установившийся) или нестационарный. J О В-третьих, необходимо знать, в течение какого промежутка времени следует на-1 блюдать за поведением (функционированием) системы. 3 О И, наконец, в-четвертых, хорошо было бы знать, какой объем испытаний (то есть 1 повторных экспериментов) сможет обеспечить требуемую точность оценок (в ста-1 тистическом смыс ле) исс ледуемых характеристик системы. Разумеется, можно пойти по такому пути: не особенно задумываясь над перечислен-1 ными вопросами, взять от модели все «по максимуму» — исследовать работу систе- я мы во всех режимах, для всех возможных сочетаний внешних и внутренних пара- J метров и повторять каждый эксперимент по сотне раз. Однако польза от такого ] моделирования невелика, поскольку полученные данные будет очень сложно обра- ] ботать и проанализировать, а еще труднее принять на их основе какое-либо конкретное ч решение. Да и затраты времени на моделирование, даже с учетом быстродействия 1 современных компьютеров, окажутся чрезмерными. Таким образом, планирование модельных экспериментов преследует две основные 1 цели: О сокращение общего объема испытаний при соблюдении требований к достовер-1 ности и точности их результатов; 1 О повышение информативности каждого из экспериментов в отдельности. j Поиск плана эксперимента производится в так называемом факторном пространстве.! Факторное пространство — это множество внешних и внутренних параметров мо-1 дели, значения которых исследователь может контролировать в ходе подготовки и J проведения модельного эксперимента. ' Во многих случаях факторы могут носить не только количественный, но и качествен- j ный характер. Например, при оценке пользовательского интерфейса такими факто-1 рами могут быть цветовая палитра, степень подготовленности пользователей и т. д. J
Планирование модельных экспериментов 65 Поэтому значения факторов обычно называют уровнями. Если при проведении экс- перимента исследователь может изменять уровни факторов, эксперимент называет- ся активным, в противном случае — пассивным. Введем еще несколько терминов, используемых в теории планирования эксперимента. Каждый из факторов имеет верхний и нижний уровни, расположенные симметрич- но относительно некоторого нулевого уровня. Точка в факторном пространстве, со- ответствующая нулевым уровням всех факторов, называется центром плана. Интервалом варьирования фактора называется некоторое число J, прибавление ко- торого к нулевому уровню дает верхний уровень, а вычитание — нижний. Как правило, план эксперимента строится относительно одного (основного) выход- ного скалярного параметра Y, который называется наблюдаемой переменной. Если моделирование используется как инструмент принятия решения, то в роли наблю- даемой переменной выступает показатель эффективности. При этом предполагается, что значение наблюдаемой переменной, полученное в ходе эксперимента, складывается из двух составляющих: у = f(х) + е(х) Первая составляющая f (х) — функция отклика (неслучайная функция факторов), вторая составляющая е (х) — ошибка эксперимента (случайная величина). В обоих случаях х — точка в факторном пространстве (определенное сочетание уровней факторов). Очевидно, что у является случайной переменной, так как зави- сит от случайной велич ины е (х). Дисперсия Dy наблюдаемойпеременной, которая характеризует точность измерений, равна дисперсии ошибки опыта: Dy=De. D называют дисперсией воспроизводимости эксперимента. Она характеризует каче- ство эксперимента. Эксперимент называется идеальным при Dy=0. Существует два основных варианта постановки задачи планирования имитацион- ного эксперимента: О из всех допустимых требуется выбрать такой план, который позволил бы полу- чить наиболее достоверное значение функции отклика f (х) при фиксированном числе опытов; О из всех допустимых требуется выбрать такой план, при котором статистическая оценка функции отклика может быть получена с заданной точностью при мини- мальном объеме испытаний. Решение задачи планирования в первой постановке называется стратегическим планированием эксперимента, во второй — тактическим планированием. Стратегическое планирование имитационного эксперимента Итак, цель методов стратегического планирования имитационных экспериментов — получение максимального объема информации об исследуемой системе в каждом
66 Урок 2. Основы технологии имитационного моделирования эксперименте (наблюдении). Другими словами, стратегическое планирование по- 't зволяет ответить на вопрос, при каком сочетании уровней внешних и внутренних факторов может быть получена наиболее полная и достоверная информация о пове- дении системы (или птички зяблика). При стратегическом планировании эксперимента должны быть решены две основ- ( ные задачи: О идентификация факторов; О выбор уровней факторов. Под идентификацией факторов понимается их ранжирование по степени влияния на значение наблюдаемой переменной (показателя эффективности). По итогам идентификации целесообразно разделить все факторы на две группы — первичные и вторичные. Первичные — это те факторы, в исследовании влияния ко- торых экспериментатор заинтересован непосредственно. Вторичные — это факторы, которые не являются предметом исследования, но влиянием которых нельзя пре- небречь. Выбор уровней факторов производится с учетом двух противоречивых требований: О уровни фактора должны перекрывать (заполнять) весь возможный диапазон его изменения; О общее количество уровней по всем факторам не должно приводить к чрезмерно- му объему моделирования. Отыскание компромиссного решения, удовлетворяющего этим требованиям, и яв- ляется задачей стратегического планирования эксперимента. Способы построения стратегического плана Эксперимент, в котором реализуются все возможные сочетания уровней факторов, называется полным факторным экспериментом (ПФЭ). Общее число различных комбинаций уровней в ПФЭ для к факторов можно вычис-*., лить так: Здесь — число уровней i-ro фактора. Если число уровней для всех факторов одинаково, то N=Lk (L — число уровней). Недостаток ПФЭ — большие временные затраты на подготовку и проведение. Например, если в модели отражены 3 фактора, влияющие назначение выбранно-? го показателя эффективности, каждый из которых имеет 4 возможных уровня^; (значения), то план проведения ПФЭ будет включать 64 эксперимента (N=43). Если при этом каждый из них длится хотя бы одну минуту (с учетом времени на изме-ц нение значений факторов), то на однократную реализацию ПФЭ потребуется бо-, лее часа.
Планирование модельных экспериментов 67 Поэтому использование ПФЭ целесообразно только в том случае, если в ходе ими- тационного эксперимента исследуется взаимное влияние всех факторов, фигуриру- ющих в модели. Если такие взаимодействия считают отсутствующими или их эффектом пренебре- гают, проводят частичный факторный эксперимент (ЧФЭ). Известны и применяются на практике различные варианты построения планов ЧФЭ. Мы рассмотрим только некоторые из них. Рандомизированный план — предполагает выбор сочетания уровней для каждого прогона случайным образом. При использовании этого метода отправной точкой в формировании плана является число экспериментов, которые считает возможным (или необходимым) провести исследователь. Латинский план (или «латинский квадрат») — используется в том случае, когда проводится эксперимент с одним первичным фактором и несколькими вторичны- ми. Суть такого планирования состоит в следующем. Если первичный фактор А име- ет 1 уровней, то для каждого вторичного фактора также выбирается 1 уровней. Вы- бор комбинации уровней факторов выполняется на основе специальной процедуры, которую мы рассмотрим на примере. Пусть в эксперименте используется первичный фактор А и два вторичных фактора — В и С, число уровней факторов 1 равно 4. Соответствующий план можно представить в виде квадратной матрицы размером 1x1 (4x4) относительно уровней фактора А. При этом матрица строится таким образом, чтобы в каждой строке и в каждом столб- це данный уровень фактора А встречался только один раз: Значение фактора В Значение фактора С с, с2 С, С4 в, А, Аг Аз А4 В2 а2 А3 а4 А, В3 Аз а4 А, а2 В., а4 А, а2 Аз В результате имеем план, требующий 4x4=16 прогонов, в отличие от ПФЭ, для ко- торого нужно 43=64 прогона. Эксперимент с изменением факторов по одному. Суть его состоит в том, что один to факторов «пробегает» все 1 уровней, а остальные п-1 факторов поддерживаются постоянными. Такой план обеспечивает исследование эффектов каждого фактора в от- дельности. Он требует всего N=1 ,+12+.. ,+1„ прогонов (1, — число уровней i-го фактора). Для рассмотренного выше примера (3 фактора, имеющие по 4 уровня) N=4+4+4=12. Еще раз подчеркнем, что такой план применим (как и любой ЧФЭ) только при от- сутствии взаимодействия между факторами. Дробный факторный эксперимент. Каждый фактор имеет два уровня +- нижний и верхний, поэтому общее число вариантов эксперимента N=2k, где к — число факто- ров. Матрицы планов для к=2 и к=3 приведены ниже.
68 Урок 2. Основы технологии имитационного моделирования Матрица планов для к=2: Номер эксперимента Значения факторов Х1 х2 1 0 0 2 0 1 ; 3 1 0 ’ 4 1 1 Матрица планов для к=3: Номер эксперимента Значения факторов *1 *2 *3 1 0 0 0 2 0 0 1 3 0 1 0 4 0 1 1 1 5 1 0 о i 6 1 0 1 j 7 1 1 0 ! 8 1 1 1 j Планы, построенные по такому принципу, обладают определенными свойствам^ (симметричности, нормированное™, ортогональности и ротабельности), обеспечив вающими повышение качества проводимых экспериментов. Тактическое планирование эксперимента Совокупность методов установления необходимого объема испытаний относят К тактическому планированию экспериментов. Поскольку точность оценок наблюдаемой переменной характеризуется ее дисперси- ей, то основу тактического планирования эксперимента составляют так называемый методы понижения дисперсии. В связи с этим для восприятия последующего мате- риала читателю потребуются некоторые знания математической статистики. Формирование простой случайной выборки Поскольку имитационное моделирование представляет собой статистический экс- перимент, то при его проведении необходимо не только получить достоверный ре- зультат, но и обеспечить его «измерение» с заданной точностью. Различие понятий «достоверный результат» и «точный результат» с помощью рис. 2.16. можно пояснить На рисунке использованы следующие обозначения: О У, уо — истинное и ошибочное значения наблюдаемой переменной у; О b, Ьо — доверительные интервалы измерения величин у и уо.
Планирование модельных экспериментов 69 Рис. 2.16. Различие понятий «достоверный» и «точный» результат В общем случае объем испытаний (величина выборки), необходимый для получе- ния оценок наблюдаемой переменной с заданной точностью, зависит от следующих факторов: О вида распределения наблюдаемой переменной У (напомним, при статистическом эксперименте она является случайной величиной); О коррелированное™ между собой элементов выборки; О наличия и длительности переходного режима функционирования моделируе- мой системы. Если исследователь не обладает перечисленной информацией, то у него имеется единственный способ повышения точности оценок истинного значения наблюдаемой переменной — многократный прогон модели для каждого сочетания уровней факто- ров, выбранного на этапе стратегического планирования эксперимента. Такой под- ход получил название «формирование простой случайной выборки» (сокращенно — ПСВ). Другими словами, при использовании ПСВ каждый «пункт» стратегическо- го плана просто выполняется повторно определенное число раз. При этом общее чис- ло прогонов модели, необходимое для достижения цели моделирования, равно про- изведению NC-NT (Nc — число сочетаний уровней факторов по стратегическому плану; NT — число прогонов модели для каждого сочетания, вычисленное при тактическом планировании). Например, если для полного факторного эксперимента Nc=64, а для обеспечения тре- буемой точности оценок NT должно быть равно 20, то общее число прогонов моде- ли — 1280. Требуемое время для проведения всех испытаний (по минуте на каж- дое) — более 20 часов. То есть «модельер» должен трудиться почти сутки без сна и отдыха. Такой режим работы может вывести из строя не только человека, но и ком- пьютер. Поэтому даже при использовании ПСВ до начала испытаний необходимо определить тот минимальный объем выборки, который обеспечит требуемую точ- ность результатов. Если случайные значения наблюдаемой переменной не коррелированны и их рас- пределение не изменяется от прогона к прогону, то выборочное среднее можно счи- тать нормально распределенным. В этом случае число прогонов N,, необходимое для
70 Урок 2. Основы технологии имитационного моделирования того, чтобы истинное среднее наблюдаемой переменной лежало в интервале у±Ь с вероятностью (1 -а), определяется следующим образом: Здесь Z — значение нормированного нормального распределения, которое определя- ется по справочной таблице при заданном уровне значимости а/2; Dy — дисперсия; b — доверительный интервал. Если требуемое значение дисперсии Dy до начала эксперимента неизвестно, целесо- образно выполнить пробную серию из L прогонов и вычислить на ее основе выбороч- ную дисперсию, значение которой подставляют в выражение и получают предвари- тельную оценку числа прогонов NT. Затем выполняют оставшиеся NT- L прогонов, периодически уточняя оценку и число прогонов NT. Методы понижения дисперсии Основной недостаток методов планирования, основанных на использовании простой случайной выборки, — медленная сходимость выборочных средних к истинным средним с ростом объема выборки NT (пропорционально значению квадратного кор- ня из NT). Это приводит к необходимости использования методов уменьшения оши- бок, не требующих увеличения NT. Такие методы называются методами понижения дисперсии и делятся на три группы: О активные (предусматривают формирование выборки специальным образом); О пассивные (применяются после того, как выборка уже сформирована); О косвенные (в которых для получения оценок наблюдаемой переменной использу- ются значения некоторых вспомогательных величин). Активных методов понижения дисперсии известно достаточно много. Выбор конкрет- ного метода определяется, как правило, спецификой модели и целями эксперимен- та. Рассмотрим те из них, которые направлены на снижение влияния переходного периода. Выбор объясняется тем, что наличие и длительность переходного режима оказывают существенное влияние на качество результатов моделирования (в смысле точности). Вместе с тем, большинство ИМ используется для изучения функциони- рования системы в установившемся режиме. Существует три основных метода уменьшения ошибок, обусловленных наличием переходного периода: О значительное увеличение длительности прогона; О исключение из рассмотрения переходного периода; О инициализация модели при некоторых специально выбранных начальных условиях. На практике снижения влияния переходного периода обычно добиваются одним из следующих способов: О методом повторения; О методом подинтервалов; О методом циклов.
Планирование модельных экспериментов 71 Метод повторения. При использовании этого метода каждое наблюдение получает- ся при помощи отдельного прогона модели, причем все прогоны начинаются при одних и тех же начальных условиях, но используются различные последовательно- сти случайных чисел. Преимуществом метода является стат! ютическая независимость получаемых наблю- дений. Недостаток состоит в том, что наблюдения могут оказаться сильно смещен- ными под влиянием начальных условий. Метод подинтервалов. Данный метод основан на разбиении каждого прогона моде- ли на равные промежутки времени. Начало каждого интервала совпадает с началом очередного этапа наблюдений (на рис. 2.17 в качестве наблюдаемой переменной ис- пользуется длина очереди заявок — 0). Моменты начала регистрации u-----—L_—I-------L—г—----г-1* 5 10 15 20 t Рис. 2.17. Пример использования метода подинтервалов Достоинство метода состоит в том, что влияние переходных условий со временем уменьшается, и наблюдения точнее отражают поведение системы в стационарном режиме. Недостаток — значения наблюдаемых переменных, полученные в начале очередного интервала, зависят от конечныхусловий предыдущего интервала (то есть между интервалами существует автокорреляция). Метод циклов. При использовании метода циклов влияние автокорреляции умень- шается за счет выбора интервалов таким образом, чтобы в их начальных точках ус- ловия были одинаковыми. Например, в качестве таких условий можно рассматри- вать длину очереди заявок на обслуживание. В этом случае удобно выбрать начало очередного'интервала совпадающим с моментом, когда длина очереди становится равной нулю. Недостатком метода является меньшее по сравнению с методом под- интервалов число получаемых наблюдений (рис. 2.18). Моменты начала регистрации —----1----—।— I ► 5 10 15 20 t Рис. 2.18. Пример использования метода циклов
72 Урок 2. Основы технологии имитационного моделирования Метод стратифицированной выборки. Данный метод относится к группе пассивных методов понижения дисперсии. Пассивные методы влияют на подготовку и прове- дение эксперимента, но реализуются на этапе обработки и анализа результатов мо- делирования. Суть метода стратифицированной выборки состоит в следующем. Выборка разделяется напасти, называемые слоями (стратами). При этом необходи- мо, чтобы значения элементов выборки как можно меньше различались внутри од- ного слоя и как можно больше — между различными слоями. Внутри каждого слоя производят случайный отбор элементов и вычисляют среднее значение слоя уг По- лученные оценки используют для вычисления МОЖ по выборке в целом: Здесь N, — объем всей выборки и i-го слоя соответственно; к — число слоев. Если считать, что оценки уу независимы, то дисперсия по выборке в целом равна: Здесь D — дисперсия для i-ro слоя. При удачном выборе слоев величины Dyl будут малы, а значит, и выборочная диспер- сия D будет предпочтительнее, чем для оценки, полученной методами простой слу- чайной выборки. Косвенные методы понижения дисперсии основаны на том, что зачастую некоторые из выходных характеристик модели получить (вычислить) легче, чем другие. Их использование предполагает не только весьма глубокое знание сущности процессов, протекающих в системе, но и наличие формального описания взаимной зависимо- сти параметров модели. Основные методы анализа такой зав! гсимости рассматривав ются в следующем, заключительном, разделе этого урока. ' Обработка и анализ результатов моделирования 1 Решения, принимаемые исследователем по результатам имитационного моделирова- ния, могут быть конструктивными только при выполнении двух основных условий: О полученные результаты обладают требуемой точностью и достоверностью; О исследователь способен правильно интерпретировать полученные результаты и знает, каким образом они могут быть использованы. Возможность выполнения первого условия закладывается, в основном, еще на этапе разработки модели и частично — на этапе планирования эксперимента. Достовер- ность результатов моделирования предполагает, что модель, с помощью которой они получены, не только является «правильной», но отвечает и некоторым допо-л-
Обработке и анализ результатов моделирования 73 нительным требованиям, предъявляемым к имитационным моделям. Эти требова- ния и методы оценки соответствия им созданной модели рассматриваются ниже. Способность исследователя правильно интерпретировать полученные результаты и принимать на их основе важные решения существенно зависит от степени соответ- ствия формы представления результатов целям моделирования. Если разработчик модели уверен, что полученные результаты будут использоваться в соответствии с одной, четко определенной, целью, форма их представления может быть определена заранее. В этом случае преобразование экспериментальных данных к требуемому виду может производиться либо в ходе эксперимента, либо сразу пос- ле его завершения. Такой подход позволяет экономить память компьютера, необхо- димую для хранения большого количества необработанных данных, а также сокра- тить время на анализ результатов и принятие решения. Если же заранее конкретизировать цель моделирования сложно или целей несколько, данные должны накапливаться в базе данных и затем уже выдаваться в требуемой форме по запросу пользователя. Как правило, по такому принципу строятся систе- мы автоматизации моделирования. Далее будет показано, как при правильной организации обработки экспериментальных данных могут быть получены дополнительные сведения о моделируемой системе. Оценка качества имитационной модели Оценка качества модели является завершающим этапом ее разработки и преследует две цели: О проверить соответствие модели ее предназначению (целям исследования); О оценить достоверность и статистические характеристики результатов, получае- мых при проведении модельных экспериментов. При аналитическом моделировании достоверность результатов определяется дву- мя основными факторами': О корректным выбором математического аппарата, используемого для описания исследуемой системы; О методической ошибкой, присущей данному математическому методу. При имитационном моделировании на достоверность результатов влияет целый ряд дополнительных факторов, основными из которых являются: О моделирование случайных факторов, основанное на использовании датчиков случайных чисел, которые могут вносить «искажения» в поведение модели; О наличие нестационарного режима работы модели; О использование нескольких разнотипных математических методов в рамках од- ной модели; О зависимость результатов моделирования от плана эксперимента; О необходимость синхронизации работы отдельных компонент модели; О наличие модели рабочей нагрузки, качество которой зависит, в свою очередь, от тех же факторов.
74 Урок 2. Основы технологии имитационного моделирования Пригодность имитационной модели для решения задач исс ледования характеризу- ется тем, в какой степени она обладает так называемыми целевыми свойствами. Ос- новными из них являются: О адекватность; О устойчивость; О чувствительность. Ниже рассмотрены некоторые способы проведения оценки модели по каждому из них. Оценка адекватности В общем случае под адекватностью понимают степень соответствия модели тому реальному явлению или объекту, для описания которого она строится. Вместе с тем, создаваемая модель ориентирована, как правило, на исследование определенного подмножества свойств этого объекта. Поэтому можно считать, что адекватность модели определяется степенью ее соответствия не столько реальному объекту, сколько целям исследования. В наибольшей степени это утверждение спра- ведливо относительно моделей проектируемых систем (то есть в ситуациях, когда реальная система вообще не существует). Тем не менее, во многих случаях полезно иметь формальное подтверждение (или обоснование) адекватности разработанной модели. Один из наиболее распрост- раненных способов такого обоснования — использование методов математиче- ской статистики. Суть этих методов заключается в проверке выдвинутой гипотезы (в данном случае — об адекватности модели) на основе некоторых статистических критериев. f|>) ЗАМЕЧАНИЕ При проверке гипотез методами математической статистики необходимо иметь в виду, что статистические критерии не могут доказать ни одной гипотезы — они могут лишь указать на отсутствие опровержения. Итак, каким же образом можно оценить адекватность разработанной модели реаль- но существующей системе? Процедура оценки основана на сравнении измерений на реальной системе и резуль- татов экспериментов на модели и может проводиться различными способами. Наи- более распространенные из них: О по средним значениям откликов модели и системы; О по дисперсиям отклонений откликов модели от среднего значения откликов си- стемы; О по максимальному значению относительных отклонений откликов модели от откликов системы. Названные способы оценки достаточно близки между собой по сути, поэтому огра- ничимся рассмотрением первого из них. При этом способе проверяется гипотеза о
Оброботко и онализ результатов моделирования 75 близости среднего значения наблюдаемой переменной Y среднему значению откли- ка реальной системы Y". В результате No опытов на реальной системе получают множество значений (выбор- ку) Y*. Выполнив NH экспериментов на модели, также получают множество значений наблюдаемой переменной Y. Затем вычисляются оценки математического ожидания и дисперсии откликов мо- дели и системы, после чего выдвигается гипотеза о близости средних значений ве- личин Y' и Y (в статистическом смысле). Основой для проверки гипотезы является t-статистика (распределение Стьюдента). Ее значение, вычисленное по результатам испытаний, сравнивается с критическим значением tKp, взятым из справочной таб- лицы. Если выполняется неравенство tn<tкр, то гипотеза принимается. Необходимо еще раз подчеркнуть, что статистические методы применимы только в том случае, если оценивается адекватность модели существующей системе. На про- ектируемой системе провести измерения, естественно, не представляется возмож- ным. Единственный способ преодолеть это препятствие заключается в том, чтобы принять в качестве эталонного объекта концептуальную модель проектируемой сис- темы . Тогда оценка адекватности программно реализованной модели заключается в проверке того, насколько корректно она отражает концептуальную модель. Данная проблема сходна с проверкой корректности любой компьютерной программы, и ее можно решать соответствующими методами, например с помощью тестирования. Оценка устойчивости При оценке адекватности модели как существующей, так и проектируемой системы реально может быть использовано лишь ограниченное подмножество всех возмож- ных значений входных параметров (рабочей нагрузки и внешней среды). В связи с этим для обоснования достоверности получаемых результатов моделирования боль- шое значение имеет проверка устойчивости модели. В теории моделирования это понятие трактуется следующим образом. Устойчивость модели — это ее способность сохранять адекватность при исследова- нии эффективности системы на всем возможном диапазоне рабочей нагрузки, а так- же при внесении изменений в конфигурацию системы. Каким образом может быть оценена устойчивость модели? Универсальной проце- дуры проверки устойчивости модели не существует. Разработчик вынужден прибе- гать к методам «для данного случая», частичным тестам и здравому смыслу. Часто полезна апостериорная проверка. Она состоит в сравнении результатов моделиро- вания и результатов измерений на системе после внесения в нее изменений. Если результаты моделирования приемлемы, уверенность в устойчивости модели возра- стает. В общем случае можно утверждать, что чем ближе структура модели структуре си- стемы и чем выше степень детализации, тем устойчивее модель. Устойчивость результатов моделирования может быть также оценена методами математической статистики. Здесь уместно вспомнить основную задачу математи- ческой статистики. Она заключается в том, чтобы проверить гипотезу относительно
76 Урок 2. Основы технологии имитационного моделирования свойств некоторого множества элементов, называемого генеральной совокупно- стью, оценивая свойства какого-либо подмножества генеральной совокупности (то < есть выборки). В генеральной совокупности исследователя обычно интересует неко- j торый признак, который обусловлен случайностью и может иметь качественный , или количественный характер. В данном случае именно устойчивость результатов моделирования можно рассмат- ривать как признак, подлежащий оценке. Для проверки гипотезы о‘б устойчивости результатов может быть использован критерий Уилкоксона, который служит для проверки того, относятся ли две выборки к одной и той же генеральной совокупнос- ти (то есть обладают ли они одним и тем же статистическим признаком). Например, в двух партиях некоторой продукции измеряется определенный признак, и требуется проверить гипотезу о том, что этот признак имеет в обеих партиях одинаковое рас- пределение; другими словами, необходимо убедиться, что технологический процесс от партии к партии изменяется несущественно. При статистической оценке устойчивости модели соответствующая гипотеза мо- жет быть сформулирована следующим образом: при изменении входной (рабочей) i нагрузки или структуры ИМ закон распределения результатов моделирования ос- , тается неизменным. ' Проверку указанной гипотезы Н проводят при следующих исходных данных. Пусть имеются две выборки Х=(х,..хп) иУ=(у1,.... ут), полученные для различных : значений рабочей нагрузки; относительно законов распределения X и Y никаких предположений не делается. ’ Значения обеих выборок упорядочиваются вместе по возрастанию. Затем анали- зируется взаимное расположение х, и у,. В случае у <хх говорят, что пара значений ; (х,, у,) образует инверсию. ’ Например, пусть для n=m=3 после упорядочивания получилась такая последователь- ( ; ностьзначений: у,,х„у3, х,, у,, х3; тогда имеем инверсии: (х,, у,), (х2, у,), (х2, у3), (х3, у,), (х3,у,),(х3.у3). ’-I Подсчитывают полное число инверсий U. Если гипотеза верна, то U не должно сильно ’ отклоняться от своего математического ожидания М: .. п • m М =----- 2 От гипотезы отказываются, если |U-M| >11^(1)^ определяют потаблице для заданного уровня значимости). ' I Оценка чувствительности Очевидно, что устойчивость является положительным свойством модели. Однако если изменение входных воздействий или параметров модели (в некотором задан-, ном диапазоне) не отражается на значениях выходных параметров, то польза от та-. : кой модели невелика (ее можно назвать «бесчувственной»). В связи с этим возни- кает задача оценивания чувствительности модели к изменению параметров рабочей ; нагрузки и внутренних параметров самой системы. ;
Обработке и анализ результатов моделирования 77 Такую оценку проводят по каждому параметру X в отдельности. Основана она на том, что обычно диапазон возможных изменений параметра известен. Одна из наиболее простых и распространенных процедур оценивания состоит в следующем. 1. Вычисляется величина относительного среднего приращения параметра X: Xmax + Xmin 2. Проводится пара модельных экспериментов при значениях Х=Хтах и X=Xmln и сред- них фиксированных значениях остальных параметров. Определяются значения отклика модели Y,=f (Xmax) и Y,=f (Xmin). 3. Вычисляется относительное приращение наблюдаемой переменной Y: ду = 1 Yl.~ Y2 L'2 . 100 % Y, + Y2 В результате для k-го параметра модели имеют пару значений (ДХк, ДУ,), характери- зующую чувствительность модели по этому параметру. .Аналогично формируются пары для остальных параметров модели, которые образу- ют множество {ДХк, ДУк}. Данные, полученные при оценке чувствительности модели, могут быть использова- ны, в частности, при планировании экспериментов: большее внимание должно уде- ляться тем параметрам, по которым модель является более чувствительной. Калибровка модели Если в результате проведенной оценки качества модели оказалось, что ее целевые свойства не удовлетворяют разработчика, необходимо выполнить ее калибровку, то есть коррекцию с целью приведения в соответствие предъявляемым требованиям. Как правило, процесс калибровки носит итеративный характер и состоит из трех основных этапов: О глобальные изменения модели (например, введение новых процессов, изменение типов событий и т. д.); О локальные изменения (в частности, изменение некоторых законов распределе- ния моделируемых случайных величин); О изменение специальных параметров, называемых калибровочными. На первый взгляд, структурные изменения модели, как более сложные, должны рас- сматриваться только после того, как все попытки калибровки модели путем измене- ния параметров и локальных модификаций окажутся безуспешными. Однако такая стратегия может скрыть структурное несоответствие или недостаточную степень детальности модели. В этом смысле начинать калибровку с внесения глобальных изменений значительно безопаснее. Вообще целесообразно объединить оценку целевых свойств ИМ и ее калибровку в единый процесс. Именно такая стратегия принята в статистическом методе калиб- ровки, описанном ниже.
78 Урок 2. Основы технологии имитационного моделирования Процедура калибровки состоит из трех шагов, каждый из которых является итера- тивным (рис. 2.19). 1. Рис. 2.19. Схема процесса калибровки ИМ Сравнение выходных распределений. Цель — оценка адекватности ИМ. Критерии сравнения могут быть различны. частности, может использоваться величина разности между средними значениями откликов модели и системы. Устранение различий на этом шаге основано на внесении глобальных изменений. В 2. Балансировка модели. Основная задача — оценка устойчивости и чувствительно- сти модели. По его результатам, как правило, производятся локальные измене- ния (но возможны и глобальные). 3. Оптимизация модели. Цель этого этапа — обеспечение требуемой точности резуль- татов. Здесь возможны три основных направления работ: • дополнительная проверка качества датчиков случайных чисел; • снижение влияния переходного режима; • применение специальных методов понижения дисперсии. Подбор параметров распределений В некоторых случаях имитационная модель сложной системы может быть реализо- вана в виде набора отдельных моделей ее подсистем. При проведении эксперимен- тов с такой моделью в целях сокращения затрат времени бывает необходимо заме- нять моделирование работы одной из подсистем некоторым чис ловым параметрол (вспомните принцип параметризации), либо случайной величиной, распределен ной по заданному закону. Чтобы такая замена была выполнена корректно, исследо- ватель должен располагать описанием зависимости данного числового параметра он времени и других факторов, фигурирующих в модели. При имитационном моделировании подбор законов распределений выполняется на основе статистических данных, полученных в ходе эксперимента. В основе процедуры отыскания закона распределения некоторой величины по экс- периментальным данным лежит проверка статистических гипотез. Статистическая гипотеза — это утверждение относительно значений одного или более параметров распределения некоторой величины или о самой форме распреде- ления. Обычно выбирают две исходные гипотезы: основную — Но и альтернативную ей — Н,. Статистическая проверка гипотезы — это процедура выяснения, следует ли при- нять основную гипотезу Но или отвергнуть ее.
Обработка и анализ результатов моделирования 79 Если в результате проверки гипотеза Но ошибочно отвергается, то имеет место ошиб- ка первого рода (характеризующаяся более тяжелыми последствиями); если гипо- теза Но принимается при истинности ф — ошибка второго рода. Вероятности ошибок I и II рода (а и Р) зависят от критерия, на основании которого будет выбираться одна из гипотез. Очевидно, что вероятности этих двух ошибок взаимосвязаны, то есть чем больше значение а, тем меньше р, и наоборот. Обычное решение этой дилеммы состоит в том, что выбирают некоторое фиксиро- ванное значение а (как правило, 0,05,0.1,0.001) и надеются, что Р будет также мало. Фиксированное значение а называется уровнем значимости. Для выбранного значения а определяется так называемая критическая область В, удовлетворяющая условию: Р (Ze в| Но верна) <а Здесь Z — контрольная величина (критерий), представляющая собой некоторую функцию от выборки (результатов эксперимента). Проверка гипотезы состоит в следующем. Производится выборка (эксперимент), на основании чего вычисляется z — частное значение критерия Z. Если ze В, то от гипоте- зы Ноотказываются. Если z не принадлежит В, то говорят, что полученные наблюде- ния не противоречат принятой гипотезе. Разумеется, прежде чем выдвигать гипотезу относительно значений параметров распределения, необходимо определить вид самого закона распределения. Наибо- лее распространенный на практике и достаточно эффективный метод подбора зако- на распределения основан на использовании графического представления экспери- ментальных данных. Они отображаются в виде так называемой гистограммы относительных частот, ко- торая может быть построена как вручную, так и с помощью соответствующих ин- струментальных средств, входящих в состав большинства пакетов моделирования. Внешний вид гистограммы показан на рис. 2.20. Для эффективного использования графических средств пакета MATLAB, которому посвящена большая часть книги, полезно знать методику построения гистограммы относительных частот. 1. Вычисляется величина интервала гистограммы из следующего соотношения: й=(УМх_У.1П)/п>гДе (Утах-Утп) — диапазон изменения наблюдаемой переменной, п — число интервалов, выбранных исследователем. 2. По результатам (или в процессе) моделирования определяется число попаданий значений у в i-й интервал. 3. Вычисляется относительная частота попаданий наблюдаемой переменной в каж- дый интервал: G, = R/N, где R; — число попаданий в i-й интервал; N — общее число измерений (объем выборки). 4. На каждом i-м интервале строится прямоугольник со сторонами dxGr Сумма площадей прямоугольников гистограммы равна единице.
80 Урок 2. Основы технологии имитационного моделирования Рис. 2.20. Пример гистограммы относительных частот Для наиболее часто используемых статистических гипотез разработаны критерии, позволяющие проводить их проверку с наибольшей достоверностью. Рассмотрим основные из них. t-критерий Этот критерий служит для проверки гипотезы о равенстве средних значений двух нормально распределенных случайных вел! шин X и Y в предположении, что дисперсии их равны (хотя и неизвестны). Сравниваемые выборки могут иметь разный объем. В качестве критерия используют величину Т: Т = _________________X - у /П-1 • п2 (П1 + П2 - 2) /п. - 1)DX + (п2 - 1)Dy V пп + П2 Величина Т подчиняется t-распределению Стьюдента. Критическое значение для t-критерия определяется по таблице для выбранного зна- чения а и числа степеней свободы к=п,+пг-2. Если вычисленное по указанной формуле значение Т удовлетворяет неравенству T>tKC, то гипотезу Но отвергают. По отношению к предположению о «нормальной распределенности» величин х и у t- критерий не очень чувствителен. Его можно применять, если распределения случай- ных величин не имеют нескольких вершин и не слишком асимметричны.
Обработка и анализ результатов моделирования 81 F-критерий Этот критерий служит для проверки гипотезы о равенстве дисперсий Dx и Dv при ус- ловии, что х и у распределены нормально. Гипотезы такого рода имеют большое значение в технике, так как дисперсия есть мера таких характеристик, как погрешности измерительных приборов, точность технологических процессов, точность наведения при стрельбе и так далее. В качестве контрольной величины используется отношение дисперсий F=DX/Dy (или D./Dx — большая дисперсия должна быть в числителе). Величина F подчиняется F-распределению (Фишера) с (го,, ш2) степенями свободы , ш2=п2-1). Проверка гипотезы состоит в следующем. Для величины а=а/2 и величин т„ т2 по таблице F-распределения выбирают значе- ния Fa mii и . Если f, вычисленное по выборке, больше этого критического значения, гипотеза должна быть отклонена с вероятностью ошибки а. Критерии согласия Критерии согласия используются для проверки того, удовлетворяет ли рассматри- ваемая случайная величина данному закону распределения. Критерий согласия Пирсона (%2) служит для проверки гипотезы Но о том, что F (у )=F0( у), где Fy (у) — истинное распределение случайной величины у, Fo(у) — гипо- тетическое распределение. Проверка производится следующим образом. 1. Область значений случайной величины у разбивается (произвольно) на к непере- секающихся множеств («классов»). 2. В результате п опытов формируется выборка (у,, ... у„). 3. Вычисляется контрольная величина %2: Здесь — число значений у, попавших в i-й класс; р; — теоретическая вероят- ность для Fo (у) попадания значения у в 1 -й класс. 1. По таблице %2-распределений находят критическое значение Ха для уровня зна- чимости а и m=k-1 степеней свободы. Если X Ха, то гипотеза отвергается. При использовании критерияКолмогорова-Смирнова имеющуюся выборку (у, уп) упорядочивают по возрастанию и строят следующую эмпирическую функцию рас- пределения: F/y) = О, -оо < у < у1 1 / у, ут < у < у1+1, 1 = 1......п-1 1, у„ < у <оо
Урок 2. Основы технологии имитационного моделирования ИХ Контрольной величиной является следующая: D = max |F(y) - F0(y)| Гипотеза Но: Fy (у )=F0(y) отвергается, если вероятность попадания соответствующего критерия в критическую область оказывается меньше выбранного исследователем уровня значимости а. Критическое значение критерия, как и в предыдущих случаях, находится по таблице. Разумеется, проведение вручную расчетов, необходимых для проверки статисти- ческих гипотез, требует значительных затрат времени и сил. Поэтому многие совре- менные математические пакеты имеют в своем составе средства, позволяющие све- сти к минимуму число операций, выполняемых пользователем вручную. Оценка влияния и взаимосвязи факторов Как правило, количественная оценка степени влияния того или иного фактора на наблюдаемую переменную (показатель эффективности) вызывает значительную сложность, особенно при наличии взаимного влияния факторов. Наиболее простой и доступный способ решения этой проблемы состоит в использовании результатов оценки чувствительности модели. Эти результаты сложно представить в форме ана- литической зависимости, однако такое представление может оказаться весьма по- лезным для многих практических задач, связанных Как с разработкой моделей (речь опять-таки идет о принципе параметризации), так и непосредственно с принятием решений по экспериментальным данным. Отыскание аналитических зависимостей, связывающих между собой различные параметры, фигурирующие в модели, может быть основано на совместном исполь- зовании группы методов математической статистики: дисперсионного, корреляци- онного и регрессионного анализа. Подробному и строгому описанию соответствующих процедур посвящено огромное количество книг учебного, научного и справочного характера. Поэтому основная цель изложения последующего материала сводится к тому, чтобы показать роль и место указанных методов при проведении анализа дан- ных, полученных в ходе имитационного эксперимента. Кроме того, наличие в этом уроке краткой характеристики методов статистического анализа данных «развяжет руки» автору при описании технологии анализа результатов моделирования сред- ствами пакета MATLAB. Однофакторный дисперсионный анализ Суть однофакторного дисперсионного анализа сводится к определению влияния на результат моделирования одного выбранного фактора. Пусть, например, исследователя интересует средняя интенсивность отказов компь- ютера, и в созданной им модели учтены следующие факторы: интенсивность поступ- ления заданий пользователей, интенсивность обращений в оперативную память, временные характеристики решаемых задач и интенсивность обращений к жестко- му диску. Если предварительные данные говорят о том, что основной прич!той отка- зов является ненадежная работа жесткого диска, то в качестве анализируемого
Обработка и онализ результатов моделирования 83 фактора целесообразно выбрать iштенсивность обращений к нему. Задача анализа в данном случае состоит в том, чтобы оценить влияние указанного фактора на среднее число отказов. Формально постановка задачи однофакторного дисперсионного анализа состоит в следующем. Пусть интересующий нас фактор х имеет 1 уровней. Для каждого из них получена выборка значений наблюдаемой переменной у: у3 (1), у3 (2), ...yj (1), j=1. n, n — объем выборки (число наблюдений). Необходимо проверить гипотезу Но о равенстве средних значений выборок (то есть о независимости значений у от значений исследуемого фактора х). Уравнение одно- факторного дисперсионного анализа имеет вид: Уц = т+ ЭД ец Здесь yl3 — j -е значение у в i-й серии опытов; m — генеральное среднее случайной величины у (то есть среднее значение наблюдаемой переменной, обусловленное ее «сущностью»); а3 — неизвестный параметр, отражающий влияние фактора х («эффект» i-го значения фактора х); exj — ошибка измерения у. Для проверки гипотезы Но используют F-критерий и переходят от проверки значи- мости различий средних к проверке значимости различий двух дисперсий: О генеральной (обусловленной погрешностями измерений) — Do; О факторной (обусловленной изменением фактора х) — Dx: Значение F-критерия вычисляется как отношение Dx/D0 или D0/Dx (в числителе долж- на стоять большая из дисперсий); затем по таблице F-распределений находят его критическое значение Fxp для заданного уровня значимости и числа степеней свобо- ды m^n-l.n^l-l. Если F>Fxp, то гипотезу Но отвергают, то есть различия являются значимыми (фактор х влияет на значения у). Многофакторный дисперсионный анализ Многофакторный дисперсионный анализ (МДА) позволяет оценивать влияние на наблюдаемую переменную уже не одного, а произвольного числа факторов. Точнее, МДА позволяет выбрать из группы факторов, участвующих в эксперименте, те, ко- торые действительно влияют на его результат. Методику проведения многофакторного дисперсионного анал! (за рассмотрим при- менительно к частичному факторному эксперименту, проводимому в соответствии с латинским планом. Пусть в эксперименте рассматриваются один первичный фактор и два вторичных, каждый из которых имеет п уровней (то есть объем испытаний равен N=nz). Обозначим через у1]к результат эксперимента при условии, что фактор а находился на уровне i, фактор Ь — на уровне j, фактор с — на уровне к. Множество значений, которые может принимать упорядоченная тройка (i, j, к), обозначим через L. В этом случае уравнение дисперсионного анализа выглядит следующим образом: yljx = m + а, + bj + gk + eljk
84 Урок 2. Основы технологии имитационного моделировония Здесь m — генеральное среднее случайной величины у; ар bp gk — неизвестные пара- метры («эффекты» соответствующих факторов). Решение задачи дисперсионного анализа заключается в проверке гипотез о незави- симости результатов измерений от факторов а, Ь, с: На : ах = 0 , 1 = 1, п Нь ; Ь3 = 0 , j = 1, п Нс : gk = 0 , к = 1,п Для этого по методу наименьших квадратов (МНК) находят оценки параметров ш, аг, b , gk, минимизируя по указанным переменным (поочередно) функцию S3 = а (у13к - т + а, + Ь3 + дк )г Затем по каждому фактору вычисляется F-статистика. Величина F есть мера потерь при принятии гипотезы Но. Чем больше F, тем хуже модель, отвергающая влияние соответствующего фактора. Таким образом, если вычисленное значение F больше FKp, найденного по таблице для некоторого уровня значимости (и п-1, п2-Зп+2 степеней свободы), то гипотеза отвергается. Необходимо отметить, что дисперсионный анализ может использоваться для оцен- ки влияния факторов, имеющих как количественный, так и качественный характер, поскольку в уравнении дисперсионного анализа фигурируют не сами факторы, а только их «эффекты». В том случае, если все факторы носят количественный характер, взаимосвязь между ними и наблюдаемой переменной может быть описана с помощью уравнения рег- рессии. Корреляционный и регрессионный анализ Корреляционный и регрессионный анализ — это два близких метода, которые обыч- но используются совместно для исследования взаимосвязи между двумя или более непрерывными переменными. Результаты корреляционного анализа позволяют делать статистические выводы о степени зависимости между переменными. Велич! ща линейной зависимости между двумя переменными измеряется посредством простого коэффициента корреляции, величина зависимости от нескольких — по- средством множественного коэффициента корреляции. В корреляционном анализе используется также понятие частного коэффициента корреляции, который измеряет линейную взаимосвязь между двумя переменными без учета влияния других переменных. Если корреляционный анализ позволил установить наличие линейной зависимости наблюдаемой переменной от одной или более независимых, то форма зависимости может быть уточнена методами регрессионного анализа. Для этого строится так называемое уравнениерегрессии, которое связывает зависимую переменную с независимыми и содержит неизвестные параметры. Если уравнение линейно относительно параметров (но необязательно линейно относительно незави- симых переменных), то говорят олинейной регрессии, в противном случае регрессия нелинейна.
Обработка и анализ результотов моделирования 85 Рассмотрим простой корреляционный анализ, то есть метод определения взаимосвя- зи между двумя переменными. Обозначим их х и у. Независимо от способа получения выборки имеются два пред- варительных шага для определения существования и степени линейной зависимос- ти между х и у. Первый шаг заключается в графическом отображении точек (х,, у,) на плоскости (х, у), то есть в построении диаграммы рассеяния. Анализируя диаграмму рассеяния, можно решить, допустимо ли предположение о линейной зависимости между х и у (рис. 2.21). г)о<г„<1 в)0<г„<0 Рис. 2.21. Графическое представление корреляции между переменными Если коэффициент гху не равен нулю, то на втором шаге вычисляется его точное зна- чение. Чем больше по абсолютному значению гху, тем сильнее линейная зависимость между переменными. При I гху| =1 имеет место функционал ьная линейная зависимость междух » у вида у=Ь0+Ь,х, причем если гху=+1, то говорят о положительной корреляции, то есть большие значения одной величины соответствуют большим значениям другой; при гху=-1 имеет место отрицательная корреляция; при 0< г <1 вероятна либо линейная корреляция с рассеянием (рис. 2.21, в), либо нелинейная корреляция (рис. 2.21, г). При анализе результатов ИМ необходимо иметь в виду, что если даже удалось устано- вить тесную зависимость между двумя переменными, это еще не является прямым
86 Урок 2. Основы технологии имитационного моделирования доказательством их причинно-следственной связи. Возможно, имеет место стохас- тическая зависимость, обусловленная, например, коррелированностью последова- тельностей псевдослучайных чисел, используемых в имитационной модели. Поэтому результаты корреляционного анализа целесообразно уточнить, проведя регрессионный анализ. Регрессионный анализ позволяет решать две задачи: О устанавливать наличие возможной причинной связи между переменными; О предсказывать значения переменной по значениям независимых переменных (эта возможность особенно важна в тех случаях, когда прямые измерения зави- симой переменной затруднены). Если предполагается линейная зависимость между х и у, то она может быть описана уравнением, которое называется простой линейной регрессией у по х, вида: УгЬо+Ь1-х1+е1 Здесь i=1....n; п — объем испытаний; величины Ьо и Ь, являются неизвестными параметрами; е1 — случайные ошибки испытаний. Цель регрессионного анализа — найти наилучшие в статистическом смысле оценки параметров Ьо и Ь, (величину Ь, обычно называют коэффициентом регрессии). Зная значения Ьо и Ь„ можно найти оценку переменной у при х=х/ у, = Ьо + Ь, • Xj Каким же образом полученное уравнение (или, как говорят, регрессионная модель) может быть использовано для прогнозирования значен!ш зависимой переменной у? Чтобы ответить на этот вопрос, воспользуемся приводившимся уже примером, свя- занным с оценкой надежности компьютера. Предположим, исследователю удалось посредством дисперсионного анализа установить наличие зависимости среднего числа отказов от интенсивности обращений к жесткому диску. Предположим так- же, что корреляционный анализ позволил определить линейный характер этой зависимости. В этом случае, имея уравнение регрессии, связывающее указанные величины, можно для каждого конкретного значения интенсивности обращений к диску «спрогнозировать» соответствующее среднее число отказов. Разница между наблюдаемым и оцененным значением у при x=Xj называется откло- нением (или остатком) Величины отклонений могут быть использованы для проверки адекватности полученной модели. Для этого строится график d=f (у) или d=f (х) (рис. 2.22) и по его виду делается предварительное заключение о степени адекватности модели. В случае нескольких независимых переменных имеет место множественная линей- ная регрессия'. у = b0 + Ь1х1 + ...+ bkxk + е В этом случае для отыскания оценок Ь£ также используется метод наименьших квад- ратов (МНК). В случае нелинейной регрессии основой для построения регрессионной модели опять-таки является МНК. Однако в этом случае для отыскания оценок Ь3 строится
Что нового мы узнали? 87 система нелинейных уравнений (относительно ЬД а для ее решения используются различные итеращ юнные методы. Рис. 2.22. Графическое представление функции отклонений — модель адекватна (слева), необходимо введение дополнительной независимой переменной (справо) Как уже было отмечено ранее, эффективное использование процедур статистичес- кого анализа экспериментальных данных возможно только в том случае, если в рас- поряжении исследователя имеются соответствующие инструментальные средства, к описанию которых мы теперь можем перейти. Но прежде подведем краткий итог изложенному в этом уроке. Что нового мы узнали? 0 В тех случаях, когда поведение исследуемой системы зависит от воздействия большого числа случайных факторов, либо интерес представляет развитие ситу- ации во времени, удобнее всего использовать имитационные модели. Основная особенность таких моделей — обеспечение возможности проведения статисти- ческого эксперимента. 0 В зависимости от того, какие аспекты поведения исследуемой системы или опе- рации вас интересуют, ее модель может быть описана либо как последователь- ность событий, либо как совокупность взаимодействующих процессов, либо как последовательность операций обслуживания транзактов. 0 Создание имитационной модели сложной системы, функционирование которой предполагает наличие параллельных процессов, является весьма сложным делом, требующим от разработчика не только хорошего знания рассматриваемой пред- метной области, но достаточно прочных навыков в программировании. 0 Результаты i гмитационного эксперимента могут быть использованы для принятия решения лишь при условии их корректной статистической обработки, что предъяв- ляет к уровню подготовки исследователя целый ряд дополнительных требоваш ш. 0 Существенное повышение технологичности подготовки, проведения и анализа результатов имитационного моделирования возможно в том случае, если в распо- ряжении исследователя имеются соответствующие инструментальные средства.
| УРОК Знакомство с пакетом MATLAB □ Общие сведения □ Установка □ Меню командного окна П Настройка системы □ Средства помощи пользователю
История существования пакета MATLAB, название которого происходит от слово- сочетания Matrix Laboratory, (матричная лаборатория) насчитывает уже более двух десятков лет. Можно считать, что развитие MATLAB «шло в ногу» с развитием средств вычислительной техники: от «больших» ЭВМ с маленькими интерактивны- ми возможностями до настольных компьютеров, позволяющих использовать в ра- боте все пять (а иногда и шесть) способов восприятия информации. И, несмотря на достаточно высокую скорость смены поколений вычислительной техники, пакет MATLAB успевал впитывать все наиболее ценное от каждого из них. В результате к настоящему времени MATLAB представляет собой весьма удачное сочетание возможностей математики с последними достижениями в области вычис- лительной техники. Общие сведения Одним из основных достоинств пакета MATLAB является то, что для работы пользо- вателю достаточно знать о нем ровно столько, сколько требует решаемая задача. Так, в простейшем случае MATLAB может сыграть роль обыкновенного калькулятора, для использования которого достаточно помнить знаки математических операций. ». Если же решаемая задача требует создания каких-либо специальных инструментов, ' MATLAB предоставляет в распоряжение пользователя практически универсальный " язык объектно-ориентированного программирования в сочетании с интерактивны- ми средствами отладки создаваемых программ. И все-таки в первую очередь MATLAB — это средство математического моделиро- вания, обеспечивающее проведение исследований практически во всех известных областях науки и техники. При этом структура пакета позволяет эффективно соче- тать оба основных подхода к созданию модели: аналитический и имитационный. Именно в сфере математического моделирования MATLAB позволяет наиболее полно использовать все современные достижения компьютерных технологий, в том числе средства визуализации и аудификации (озвучивания) данных, а также воз- можности обмена данными через Интернет. Кроме того, пользователь имеет возмож- ность создавать средствами MATLAB собственный графический интерфейс, отве- чающий как его вкусам, так и требованиям решаемой задачи. Как следует из названия пакета, он ориентирован в первую очередь на обработку массивов данных (матриц и векторов). Это позволило его разработчикам существен- но повысить эффективность процедур, работающих с указанными типами данных, по сравнению с языками программирования «общего назначения» (Pascal, С и т. п.). С точки зрения пользователя, MATLAB представляет собой богатейшую библиоте- ку функций (в MATLAB 5.3 их около 800), единственная проблема при работе с ко- торой заключается в умении быстро отыскать те из них, которые нужны для реше- ния данной задачи. Для облегчения поиска библиотека функций разбита на разделы. Те из них, которые носят общий характер и используются чаще, входят в состав ядра MATLAB. Другие
90 Урок 3. Знакомство с пакетом MATLAB функции, относящиеся к конкретной области, включены в состав соответствующих специализированных разделов. Эти разделы называются в MATLAB Toolboxes (на- боры инструментов). Каждый из них имеет свое собственное название, отражающее его предназначение. Полная комплектация пакета MATLAB 5.3 содержит около 30 наборов инструментов. В их число входят как достаточно стандартные для матема- тических пакетов средства (решение дифференциальных и алгебраических уравне- ний, интегральное исчисление, символьные вычисления и т. д.), так и нетрадицион- J ные, способные претендовать на определенную уникальность в своем роде: средства 1 цифровой обработки изображений, поиска решений на основе нечеткой логики, аппарат построения и анализа(нейронных сете^- средства финансового анал! 1за и .] целый ряд других. Кроме того, имеются средства взаимодействия с популярными : офисными продуктами компании Microsoft — MS Word и MS Excel. Для включения в состав рабочей конфигуращ п i пакета того или иного набора инет- j рументов требуется наличие соответствующего лицензионного соглашения. <1 Особое место среди наборов инструментов занимает система визуального модели- Ч рования SIMULINK. В определенном смысле SIMULINK можно рассматривать как самостоятельный продукт фирмы Math Works (который даже в некоторых случаях 1 продается в «именной» упаковке), однако он работает только при наличии ядра MATLAB и использует многие функции, входящие в его состав. Именно поэтому 1 в первых разделах этого урока излагаются общие сведения о пакете MATLAB, не- ] обходимые для запуска и использования системы визуального моделирования 1 SIMULINK. Более глубоко вопросы взаимодействия SIMULINK с ядром MATLAB j и его наборами инструментов рассматриваются в уроке 4 «Библиотека блоков I SIMULINK». ‘ 1 Необходимо отметить, что в MATLAB использована технология ассоциативной обработки файлов, поддерживаемая операционной системой Windows. Она заклю- <; чается в том, что каждому типу файлов ставится в соответствие (ассоциируется с 1 ним) определенное приложение, обеспечивающее обработку хранящ! 1хся в нем дан- i ных. Чтобы активизировать ассоциированное приложение, пользователю достаточ- ! но дважды щелкнуть на значке файла кнопкой мыши. Например, при выборе файла > с расширением .doc загружается текстовый редактор MS Word. Для MAT LAB характерны файлы нескольких типов, для каждого из которых опре- делен свой допустимый набор операций и реализующие их средства. При работе с ! SIMULINK в основном используются файлы трех типов: ! ] О М-файлы (с расширением .гл) — файлы, содержащие тексты программ на языке ; MATLAB; в виде М-файлов реализованы все библиотечные функции MATLAB;! , по умолчан! по М-файлы открываются с помощью собственного редактора/отлад- . чика MATLAB; О Мс11-файлр1 (с расширением .mdl) — файлы моделей SIMULINK; могут быть от- i крыты либо с помощью SI MU LINK (в виде графического окна с блок-диаграм- мой), либо с помощью редактора/отладчика MATLAB; j О МАТ-файлы (с расширением .mat) — файлы, содержащие данные в двоичном коде, доступ к которым возможен либо из командного окна MATLAB, либо с по- мощью специальных средств SIMULINK.
Установка 91 Следует отметить, что хотя изложение материала ориентировано на работу с паке- том в среде Windows, система MATLAB не зависит от платформы и может работать под управлением и других операционных систем — UNIX и MacOS. При этом техно- логия моделирования средствами SIMULINK остается неизменной. Установка Возможна либо сетевая, либо локальная установка пакета MATLAB. Объем памяти на жестком диске, необходимый для установки ядра MATLAB, завис! it от парамет- ров файловой системы вашего компьютера (точнее, от размера кластера) и состав- ляет от 30 до 80 Мбайт. Для установки MATLAB в полной комплектации необходи- мо около 350 Мбайт, включая файлы помощи, общий объем которых превышает 140 Мбайт (см. раздел «Средства помощи пользователю»). Пользователь может за- дать индивидуальную конфигурацию системы, оставив в предлагаемом списке только те разделы, которые его интересуют. Для «вычеркивания» раздела из списка достаточно убрать «галочку» в соответствующей строке, щелкнув на ней левой кнопкой мыши. Наличие в списке ядра MATLAB при первоначальной установке является обяза- тельным. Для освоения технологии имитационного моделирования, изложенной в книге, до- статочно установить три компоненты: MATLAB (ядро системы), SIMULINK (тре- бует около 7 Мбайт на жестком диске) и средства статистического анализа Statistics Toolbox (еще 2 Мбайт). При изменении потребностей пользователя (или его интересов) исходная конфи- гурация может быть скорректирована. Для этого потребуется повторить процеду- ру установки, внеся в список разделов MATLAB соответствующие изменения (при этом уже установленные разделы в список включать не нужно). Необходимо отметить, что практически все разделы MATLAB содержат средства визуализации моделирования, реализуемые с помощью SIMULINK. Поэтому вклю- чение в рабочую конфигурацию любого раздела приводит к пополнению библиотеки блоков SIMULINK. Все блоки, включенные в состав библиотеки, являются «равно- правными» и могут быть использованы при разработке любой модели независимо от того, к какому разделу MATLAB относится каждый из них. При завершении установки MATLAB в меню панели задач Windows автоматически создается соответствующая программная группа, содержащая две компоненты: О ярлык запуска MATLAB; О ярлык программы удаления MATLAB из состава программного обеспечения компьютера (Uninstall MATLAB). Кроме того, на Рабочем столе автоматически создается ярлык MATLAB с соответ- ствующим значком в форме трехмерного «матлабовского» графика. Для запуска MATLAB достаточно дважды щелкнуть на этом значке.
92 Урок 3. Знакомство с пакетом MATLAB Меню командного окна Запуск MATLAB приводит к появлению на экране заставки (рис. 3.1). Затем откры- вается окно приложения — MATLAB Command Window (командное окно M ATLAB). Оно представляет собой стандартное основное окно Windows-приложения и содержит все основные компоненты такого окна (рис. 3.2): О строку заголовка с кнопками управления окном; О строку меню (основное меню приложения); О панель инструментов; О рабочее поле; О строку состояния; О вертикальную и горизонтальную полосы прокрутки. MATLAB ..........-. The Language of Technical Computing Рис. 3.1. Логотип покето MATLAB Рассмотрим более подробно меню и рабочее поле командного окна MATLAB. Строка меню М ATLAB содержит следующие меню: О File (файл) — команды для работы с файлами и настройки системы; О Edit (правка) — команды редактирования информации, отображенной в рабочем поле окна; О View (вид) — команды управления форматом окна; О Window (окно) — список открытых окон приложения; О Help (справка)—команды вызова средств поддержки пользователя.
Меню командного окна 93 Панель Активная Строка Горизонтальная Вертикальная Маркер изменения инструментов строка состояния полоса прокрутки полоса прокрутки размеров окна Рис. 3.2. Комондное окно MATLAB Расположенная ниже строки меню панель инструментов обеспечивает быстрый до- ступ к наиболее часто используемым командам меню (рис. 3.3). Просмотр библиотеки SIMULINK Окно справки Просмотр файловой системы Создать М-файл Вырезать Вставить Открыть М-файл Копировать Отменить Просмотр рабочей области Рис. 3.3. Панель инструментов командного окна MATLAB Каждая из кнопок снабжена всплывающей подсказкой (tooltip), которая появляет- ся на экране, когда указатель мыши находится на кнопке: О New M-file (создать М-файл); О Open M-file (открыть М-файл); О Cut (вырезать); О Сору (копировать); О Paste (вставить); О Undo (отменить); О Workspace Browser (просмотр рабочей области); О Path Browser (просмотр файловой системы); О Simulink Library Browser (просмотр библиотеки SIMULINK); О Help Window (окно справки).
94 Урок 3. Знакомство с пакетом MATLAB Из перечисленных выше меню наибольший интерес представляет меню Fi 1е. Содер- жащиеся в нем команды разбиты на несколько групп (рис. 3.4). Рис. 3.4. Команды меню File О Команды для работы с файлами: • New (создать); • Open (открыть); О Команды работы с рабочей областью MATLAB: • Load Workspace (загрузить рабочую область); • Save Workspace As (сохранить рабочую область как); • Show Workspace (показать рабочую область). О Команды настройки системы: • Show Graphic Property Editor (показать графический редактор свойств); • Show GUI Layout Tool (показать инструмент компоновки интерфейса); • Set Path (задать путь); • Preferences (предпочтения). О Команды вывода на печать: • Print Setup (параметры печати); • Print (печать); • Print Selection (печать выделенного).
Меню командного окна 95 □ Список файлов, открывавшихся в текущем сеансе работы с MATLAB (в начале сеанса этот список пуст). ) Команда выхода из MATLAB — Exit MATLAB (выход из MATLAB). В данном разделе будут рассмотрены только команды настройки системы. Особен- ности применения команд, относящихся к двум первым группам, излагаются в уро- ках 4 «Библиотека блоков SIMULINK», 5 «Дополнительные библиотеки блоков» и 6 «Технология моделирования в среде SIMULINK». Вторая часть окна — рабочее поле. Оно является основным средством взаимодей- ствия пользователя с системой и обеспечивает ведение диалога посредством команд- ного языка MATLAB. Это означает, что любая информация, вводимая пользовате- лем в активной строке (начинающейся символом «приглашение» » и мерцающим курсором в форме вертикальной черты), воспринимается системой как команда, подлежащая исполнению. В началё каждого сеанса работы с MATLAB в рабочем поле выводится сообщение: 7о get started, type one of these commands: helpwin, helpdesk, or demo (Для начала введите одну из следующих команд: helpwin, helpdesk или demo). Первая из указанных команд обеспечивает вызов справочника по функциям MATLAB, вторая — открывает файл помощи в формате HTML, а команда demo предназначена для демонстрации основных возможностей пакета MATLAB. Вопросы, связанные с использованием этих трех команд, обсуждаются подробнее в разделе «Средства по- мощи пользователю». Кроме перечисленных в сообщении, в качестве команд можно использовать: О арифметические выражения (например, 2+2; х/3); О имена библиотечных функций MATLAB (то есть имена М-файлов) с соответ- ствующими аргументами (например, Sin(3)); Э имена Mdl-файлов, расположенных в текущей папке; > некоторые инструкции языка программирования MATLAB; О имена наборов данных (констант, скалярных переменных, матриц). Если введенное выражение не является допустимой командой или содержит синтак- сическую ошибку, система выдает соответствующее диагностическое сообщение. Если команда не заканчивается символом точки с запятой (;), то она выполняется сразу же после нажатия клавиши Enter J Использование разделителя в виде точки с запятой позволяет вводить в рабочем поле последовательность команд, которая будет выполнена только в том случае, если после очередной команды не стоит этот символ. Если выполнение команды приводит к вычислению некоторого значения (скаляр- ного или матрицы), то оно запоминается в рабочей области MATLAB в переменной с именем ans (от английского слова answer — ответ). Значение, занесенное в пере- менную a ns, выводится на экран сразу после вычисления в форме ans=.
96 Урок 3. Знакомство с пакетом MATLAB Переменная ans может быть использована при выполнении последующих команд.' Например, выражение ans+4 будет воспринято системой как команда, требующая увеличить значение переменной ans на 4. При необходимости результат выполне- ’ ния команды может быть сохранен пользователем в рабочей области под любым, именем с помощью оператора присваивания. Например, выполнение команды! res=ans+4 приводит к записи в рабочую область результата сложения под именем? res. Аналогично может быть создан любой набор данных. В частности, команда? vector=[2 4 6 8] позволяет создать и поместить в рабочую область массив из четы- рех элементов. * Для вывода на экран данных, хранящихся в рабочей области, достаточно ввести имя соответствующей переменной и нажать клавишу Enter. Вывод информации в рабочее поле производится в режиме прокрутки, то есть! при выводе на экран очередного сообщения предыдущее сообщение сдвигается вверх. Вся информация, введенная пользователем или выведенная в рабочее поле систе- мой, сохраняется в течение всего сеанса работы. При необходимости ее можно про* смотреть, используя полосы прокрутки. Если выведенная информация более н< нужна, рабочее поле можно очистить с помощью команды Clear Session (очистит! данные сеанса), vei по Edit (правка). " ~ ? Команды, вводимые пользователем в течение сеанса работы, сохраняются в буферу команд. Выполнявшуюся ранее команду можно выполнить без повторного набора вызвав ее на экран с помощью клавиш управления курсором (? или 4-). Настройка системы Команды настройки системы находятся в меню File (файл). К ним относятся: . О Show GUI Layout Tool (показать инструмент компоновки интерфейса) — вызо! средств разработки графического интерфейса пользователя (GUI — Graphics User Interface); О Set Path (задать путь) — выбор рабочей папки; Я О Preferences (предпочтения) — установка параметров предпочтений системы. Рассмотрим использование названных средств в порядке их усложнения. J Команда Set Path Команда Set Path (задать путь) обеспечивает выбор активной папки (которая по умолчанию будет использоваться при выполнении операций работы с файлами), а также указание пути доступа к библиотечным функциям MATLAB.
Настройка системы 97 Выполнение этой команды приводит к открытию соответствующего диалогового окна (рис. 3.5). Рис. 3.5. Окно MATLAB Poth Browser Окно Path Browser (просмотр файловой системы) является, по сути, окном самостоя- тельного приложения, представляя собой «полноценное» окно, которое содержит те же основные компоненты, что и командное окно MATLAB (строку заголовка, строку меню, панель инструментов и т. д.). Отличие заключается в содержании меню и в том, что рабочее поле окна содержит некоторые дополнительные элементы интер- фейса. Поскольку при работе с SIMULINKara компонента не играет существенной роли, мы ограничимся лишь краткой характеристикой элементов интерфейса, име- ющихся в окне Path Browser. О Поле Current Directory (текущая папка) содержит путь к активной папке, изменить который можно либо вручную, введя его с клавиатуры, либо с помощью кнопки Browse (обзор), при щелчке на которой открывается дополнительное диалоговое окно с иерархическим деревом файловой системы (рис. 3.6). Текущий уровень иерархии определяется путем, выбранным в списке Path (путь). О Список Path отображает пути доступа к разделам функций MATLAB, входящих в рабочую конфигурацию. О В списке Files in general (файлы в основной папке) представлены файлы, имею- щиеся в выбранной папке. Выбрать папку можно либо выделив один из путей в списке Path (щелкнув на строке), либо введя путь в поле Current Directory.
98 Урок 3. Знакомство с пакетом MATLAB Рис. 3.6. Окно выбора текущей попки Ниже перечислены команды меню, которые предназначены, в основном, для работы с данными, представленными в списках Path и Files in general. О Меню File (файл): • Open (открыть) — открывает файл, выбранный в списке Files in general; t • Save Path (сохранить путь) — сохраняет выбранные пути в файл^ргФИйеВт; > • Exit Path Browser (выход из окна просмотра файловой системы). О Меню View (вид): • Toolbar (панель инструментов) — показать/скрыть панель инструментов; • Status bar (строка состояния) — показать/скрыть строку состояния; • Editor/Debugger (редактор/отладчик) — вызов встроенного редактора/отлад- чика MATLAB; • Workspace Browser (просмотр рабочей области) — вызов окна просмотра рабо- чей области MATLAB. О Меню Path (путь): • Add to Path (добавить в список путей) — обеспечивает добавление раздела библиотеки функций MATLAB в список Path; название раздела и полный путь к нему указывается в открывающемся диалоговом окне Add to Path, фор- мат которого показан на рис. 3.7; • Remove from Path (удалить из списка путей) — обеспечивает удаление выде- ленного пункта из списка Path; • Refresh (обновить) — вывод в окно Path обновленного списка; • Restore Defaults (восстановить значения по умолчанию) — восстановление предыдущих значений параметров, установленных в окне Path Browser.
Настройка системы 99 Кнопка Обзор Рис. 3.7. Окно изменения списко Poth > Меню Tools (инструменты): » Run (выполнить) — запуск на выполнение файла, выделенного в списке Files in general (команда может применяться только к М-файлам); ® Customize (настройка) — команда настройки меню Tools; при ее использова- нии открывается диалоговое окно (рис. 3.8), с помощью которого пользова- тель может внести в это меню имена М-файлов или другие конструкции, раз- решенные к использованию в качестве команд MATLAB; * Options (параметры) — команда настройки параметров работы редактора/ отладчика MATLAB; при выборе данной команды открывается окно свойств, содержащая две вкладки — General (общие) и Editor (редактор), описание которых вы найдете в разделе «Создание сценариев анализа данных» урока 8 «Взаимодействие SIMULINK с другими компонентами MATLAB»; • Font (шрифт) — команда вызова диалогового окнадля установки параметров шрифта, используемого для вывода информации в окне Path Browser. Рис. 3.8. Окно настройки меню Tools (спрова — результат ностройки) Новая команда меню ооlb ox\ mat 1 ab \ депеЖ oolbox\matlab\ops а оо lbox\matl аЪ М апд; oolbox\matlab\elms oolbox\matlab\el fui Соманда Preferences Команда-Preferences (предпочтения) меню File (файл) обеспечивает выбор форма- тов представления числовой и текстовой информации в командном окне, формата копирования данных в буфер обмена и настройку ряда других параметров системы.
100 Урок 3. Знакомство с пакетом MATLAB Все возможные настройки выполняются в диалоговом окне Preferences. Окно имеет три вкладки: General (общие), Command Window Font (шрифт для командного окна) и Copying Options (параметры копирования) Вкладка General (рис. 3.9) дает возможность произвести настройку следующих пара- метров. Рис. 3.9. Вкладка General окна предпочтений MATLAB О N umeric Format (формат числовых данных) — пользователю предлагается выбрать один из 10 вариантов: • Short (короткий) — вывод в формате с фиксированной точкой, выводится 5 значащих цифр (используется по умолчанию); • Long (длинный) — вывод в формате с фиксированной точкой, выводится 15 значащих цифр; • Hex (шестнадцатеричный) — шестнадцатеричный формат; • Bank- (денежный) — формат для вывода денежных сумм с использованием знакадоллара $; • Plus (знак) — вывод положительных и отрицательных чисел со знаком (мни- мая часть числа игнорируется); • Short Е (короткий с экспонентой) — вывод дробных чисел в формате с плаваю- щей точкой в экспоненциальной форме, мантисса содержит 5 значащих цифр; • Long Е (длинный с экспонентой) — вывод дробных чисел в формате с плаваю- щей точкой в экспоненциальной форме, в дробной части мантиссы выводится
Настройка системы 101 15 значащих цифр; для вывода порядка числа в двух последних форматах используется три знакоместа; • Short G (улучшенный короткий) — «улучшенный» короткий формат, в дроб- ной части числа выводится одна дополнительная значащая цифра; • Long G (улучшенный длинный) — «улучшенный» длинный формат, в дробной части числа также выводится одна дополнительная значащая цифра; • Rational (рациональный) — формат, при использовании которого дробные числа представляются в виде простых дробей (числитель/знаменатель); если числитель больше знаменателя, дробная часть не выводится. О С помощью переключателей Loose (default) (свободный (по умолчанию)) и Compact (компактный) может быть выбран формат рабочего поля командного окна. При использовании формата Loose выводимые системой сообщения (ответы) разде- ляются одной пустой строкой. Формат Compact обеспечивает вывод сообщений в каждой строке рабочего поля. О Группа переключателей Editor Preference (параметры предпочтений редактора) по- зволяет выбрать редактор. Если установлен переключатель Built-in Editor (встроенный редактор) — используется встроенный редактор MATLAB. В противном случае тре- буется указать какой-нибудь другой редактор, введя (вручную или щелкнув накнопке Browse (обзор), имя соответствующего файла и путь к нему в текстовом поле). О В поле Help Directory (папка помощи) можно ввести путь к папке (вручную или спо- мощью кнопки Browse), содержащей файлы справочной системы в формате html. О Установка флажка Echo On (включить эхо) ведет к отображению в рабочем поле вводимых пользователем команд. О Флажок Show Toolbar (показать панель инструментов) позволяет показать/скрыть панель инструментов (если флажок снят, она не отображается). О Флажок Enable Graphical Debugging (включить графическую отладку) позволяет разрешитъ/запретить использование графических средств при работе отладчика (если флажокснят, они не используются). Вкладка Command Window Font (рис. 3.10) обеспечивает выбор цвета, стиля и размера шрифта сообщений в командном окне MATLAB, атакже цвета фона рабочего поля. Выбор производится так же, как и в других Windows-приложениях — с помощью обычных и раскрывающихся списков. В нижней части окна находится флажок Display Fixed Pitch Fonts Only (отображать шрифты только с дискретным изменением размера символов), при установке которого в списке типов шрифтов окна параметров MATLAB остаются только шрифты с дискретным изменением размера символов. Вкладка Copying Options позволяет установить параметры для операций копирова- ния (рис. 3.11). О Группа переключателей Clipboard Format (формат буфера обмена) обеспечивает выбор формата копирования в буфер обмена: • Windows Metafile (метафайл Windows) — WMF-формат, используемый для хранения векторных рисунков; • Windows Bitmap (растр Windows) — BMP-формат, используемый для хране- ния растровых изображений.
102 Урок 3. Знакомство с пакетом MATLAB Рис. 3.10. Вкладка Command Window Font окна предпочтений MATLAB
Настройка системы и Флажок Match Figure Screen Size (настраивать рисунки по размеру экрана) позво- ляет выбрать способ копирования графических окон MATLAB: при установлен- ном флажке пользователь может задать размер и расположение графика при печати; если флажок снят, графическое окно будет выведено на печать в таком виде, как оно выглядит на экране. 3 Флажок White background (белый фон) устанавливает белый цвет фона графиче- ского окна; при снятом флажке цвет фона задается пользователем. [оследние два элемента становятся доступны только в том случае, если для копиро- вания рисунков используется WMF-формат. застройка графического интерфейса Разработка графического интерфейса пользователя (GUI) в среде MATLAB во мно- гом сходна с технологией разработки приложений с помощью таких инструментов визуального программирования, как Delphi, Visual Basic или Visual C++. Хотя со- здатели MATLAB постарались максимально облегчить пользователям работу по ре- ализации собственного интерфейса, тем не менее для эффективного использования имеющихся инструментов требуются знания основ объектно-ориентированного программирования на языке MATLAB. Рассмотрение соответствующих вопросов выходит за рамки данной книги. Поэтому мы ограничимся лишь краткой характери- стикой возможностей, которые предоставляет пользователям MATLAB при разра- ботке GUI. Как уже было сказано, вызов средств создания GUI возможен из командного окна MATLAB с помощью команды Show GUI Layout Tool (показать инструмент компонов- ки интерфейса) меню File (файл). В результате ее выполнения открывается диалого- вое окно, содержащее все основные инструменты, необходимые для компоновки элементов GUI (рис. 3.12). Кнопка Property Editor (редактор свойств) запускает редактор атрибутов графиче- скйхобъёктов(он может быть вызван и непосредственно из меню File командой Show Graphics Property Editor (показать графический редактор свойств)), который позволя- ет в дополнительном диалоговом окне изменять параметры компонентов GUI (раз- мер, цвет, положение и т. д.). Для создания нового диалогового окна (в MATLAB они называются Figure, но мы будем использовать термин форма) необходимо щелкнуть на кнопке Add Figure (до- бавить форму). При этом становятся доступны расположенные в нижней части окна кнопки элемен- тов GUI — осей для построения графиков, переключателей, меню и т. д. Чтобы доба- вить элемент интерфейса в форму, достаточно щелкнуть мышью на соответствую- щей кнопке, затем в поле формы щелкнуть в гой позиции, где должен находиться новый элемент. Изменение размеров и перемещение элементов интерфейса в преде- лах формы также производятся с помощью мыши. При последующих вызовах средств создания интерфейса все ранее созданные пользователем формы автоматически выводятся в списке Figure List (список форм). Выбранная в нем форма становится доступной для редактирования.
104 Урок 3. Знакомство с пакетом MATLAB Рис. 3.12. Окно графического редактора интерфейса Средства помощи пользователю Демонстрация возможностей системы Самый простой и доступный способ познакомиться с основными возможностями системы MATLAB — просмотр демонстрационных файлов, входящих в состав паке- та. Для запуска процесса демонстрации используется команда demo, которую нужно ввести в активной строке командного окна. Выполнение этой команды приводит к открытию окна MATLAB Demos (демонстрационные файлы MATLAB), показанному на рис. 3.13. В левой части окна выводится список разделов и наборов инструментов MATLAB, для которых можно просмотреть демонстрационный пример. Этот спи- сок зависит от рабочей конфигурации MATLAB. Чтобы выбрать интересующий раздел, достаточно дважды щелкнуть на соответству- ющей строке в левом списке. При этом обновляется содержимое обоих списков справа. В верхнем правом списке появляется текстовый комментарий к выбранному разделу, а в нижнем — демонстрационные файлы, поясняющие особенности его ис- пользования. Выбор файла в этом списке также выполняется с помощью мыши. Имя выбранного файла появляется на кнопке Run (выполнить), расположенной под спис- ком файлов. Щелчок на кнопке приводит к запуску соответствующего демонст-
Средства помощи пользователю 105 рационного примера. Выполнение практически всех демонстрационных файлов сопровождается открытием дополнительных диалоговых окон, с помощью которых пользователь может управлять процессом демонстрации. Рис. 3.13. Окно выбора демонстрационных файлов Наряду со средствами демонстрации возможностей MATLAB, существенную по- мощь в изучении пакета могут оказать текстовые электронные справочные системы, входящие в комплект поставки. Таких систем три: гипертекстовая система на осно- ве файлов в формате HTML(HyperText Markup Language),справочная документа- ция в формате PDF (Portable Document Format) и встроенная справочная система по функциям'КТАТЕАВ. Первые две из названных систем являются, в достаточной степени,автономными по отношению к MATLAB, и пользователь при установке может сам определить их состав, причем он не обязательно должен совпадать с пе- речнем устанавливаемых компонент пакета. В отличие от них, состав встроенного справочника MATLAB формируется автоматически, исходя из перечня устанавли- ваемых компонентов. Справочная система в формате HTML Для работы со справочной системой в формате HTML на компьютере должно быть установлено одно из двух средств просмотра HTML-файлов: Microsoft Internet Explorer (версии 3.0 и выше) или Netscape Communicator. Вызов данной справоч- ной системы во время сеанса работы с MATLAB может быть выполнен либо непо-
106 Урок 3. Знакомство с пакетом MATLAB средственно из командного окна путем ввода команды Helpdesk, либо с помощью од- ноименной команды меню Help. При необходимости эту команду можно выполнить, и работая со встроенным справочником MATLAB (подробнее об этом будет сказано немного позже). Справочная система в формате PDF Для просмотра документации в формате PDF необходимо установить специальную программу чтения файлов такого формата, которая называется Acrobat Reader из семейства продуктов Adobe компании Adobe Systems Inc. Эта программа входит в комплект поставки MATLAB и может быть установлена по желанию пользователя в процессе установки пакета. Формат PDF является, пожалуй, наиболее удобным для получения «твердой» копии документации по интересующему разделу (если, конеч- но, у вас по какой-то причине не оказалось под рукой предоставляемого вместе с программным продуктом комплекта документации). Справочник по функциям MATLAB Справочник содержит сведения о назначении и параметрах, а также примеры ис- пользования функций MATLAB, входящих в состав рабочей конфигурации пакета. Изменение конфигурации приводит к изменению списка функций, по которым мо- жет быть получена справка. Открыть справочник можно тремя способами: О воспользовавшись соответствующей кнопкой панели инструментов командного окна; О выбрав команду Help Window (окно справки) меню Help (справка); О введя команду helpwin в активной строке командного окна. Формат основного окна справочника показан на рис. 3.14. При открытии справочни- ка на его первой странице приводится список разделов библиотеки функций MATLAB, как входящих в ядро пакета, так и относящихся к установленным наборам инстру- ментов, с краткой характеристикой каждого раздела. Чтобы получить полную информацию по интересующему разделу, достаточно дваж- ды щелкнуть в соответствующей строке. В поле просмотра появится список функ- ций, входящих в этот раздел, с указанием назначения каждой из них. Дважды щелк- нув на нужной функции, можно получить о ней более подробные сведения. Названйе просматриваемого раздела справочника отображается в текстовом поле, расположенном в левом верхнем углу окна MATLAB Help Window (окно справки MATLAB). Это поле можно использовать для перехода к другому разделу справочника. Для этого следует набрать в нем название этого раздела (или имя функции) и щелкнуть вне пределов поля (либо нажать клавишу Enter). Перечень дополнительной информации, относящейся к просматриваемому разделу, выводится в раскрывающемся списке See also (смотри также). Чтобы вывести на экран эту информацию, нужно раскрыть список и выбрать в нем нужный пункт.
Средства помощи пользователю 107 Рис. 3.14. Первая «страница» встроенного справочника MATLAB Для перехода между разделами, которые были открыты ранее, используются кнопки Back (назад) и Forward (вперед). Кнопка Ноте (домой) позволяет вернуться на пер- вую страницу справочника. В правом верхнем углу окна имеются еще три кнопки: О Go То Help Desk (перейти к панели управления справочной системой) — переход к основному файлу справочной системы в формате HTML; О Tips (подсказки) — открывает окно подсказки по трем командам вызова помощи: Help, HelpWin и Helpdesk; О Close (закрыть) — закрывает справочник по функциям. Существует и другой способ доступа к информации, хранящейся во встроенном справочнике, — с помощью соответствующих команд, вводимых в командном окне. Таких команд две: help и lookfor. Команда help имеет формат help <имя М-функции> и позволяет вывести непосред- ственно в командное окно информацию о запрашиваемой функции. Если имя фун- кции опущено, в окно выводится список разделов справочника (в той же форме, как наего первой странице). Команда lookfor обеспечивает поиск и выдачу справочной информации по ключе- вому слову. Если данная команда используется в формате lookf о г <ключевое слово>,
108 Урок 3. Знакомство с пакетом MATLAB то при поиске просматривается только первая строка комментария, и она же выво- дится на экран, если в ней встретилось ключевое слово. Ввод команды в формате lookfor <ключевое слово> -all позволяет использовать при поиске и выводить на эк- ран все строки комментария. Что нового мы узнали? И Пакет MATLAB является универсальным инструментом математического моде- лирования, обеспечивающим решение как чисто «вычислительных», так и при- кладных задач. 0 Стандартный пользовательский интерфейс пакета и модульная организация его библиотеки позволяют соотносить требуемый уровень подготовки пользователя с уровнем сложности решаемых задач. 0 Пользователю предоставлена возможность индивидуальной настройки парамет- ров рабочей среды вплоть до создания собственных элементов графического ин- терфейса. 0 Для получения помощи по конкретным вопросам в распоряжении пользователя имеется развитая справочная система, включающая средства оперативной под- держки со стороны разработчика через Интернет.
УРОК Библиотека блоков SIMULINK П SIMULINK — инструмент визуального моделирования □ Организация работы с библиотекой SIMULINK П Раздел Sources П Раздел Sinks □ Раздел Continuous □ Раздел Discrete П Раздел Functions & Tables П Раздел Math П Раздел Nonlinear □ Раздел Signals & Systems □ Общие свойства блоков
Разработка моделей средствами SIMULINK (в дальнейшем S-моделей) основана на технологии drag-and-drop («перетащи и оставь»). В качестве «кирпичиков» для построения S-модели используются модули (или блоки), хранящиеся в биб- лиотеке SIMULINK. Библиотека SIMULINK хороша тем, что, с одной стороны, обеспечивает пользова- телю доступ ко всем основным возможностям пакета MATLAB, а с другой — является достаточно самостоятельной его компонентой, в том смысле, что при работе с ней не’ обязательно иметь навыки в использовании других инструментов, входящих в со-,; став пакета. Блоки, включаемые в создаваемую модель, могут быть связаны друг с другом как по. информации, так и по управлению. Тип связи зависит от типа блока и логики рабо- ты модели. Данные, которыми обмениваются блоки, могут быть скалярнымшеели- чинами, векторами или матрицами произвольной размерности. SIMULINK — инструмент визуального моделирования Любая S-модель может иметь иерархическую структуру, то есть состоять из моделей более низкого уровня, причем число уровней иерархии практически не ограничено. Наряду с другими параметрами моделирования пользователь может задавать спо- соб изменения модельного времени (с постоянным или переменным шагом), а также условия окончания моделирования. В ходе моделирования имеется возможность наблюдать за процессами, происходя- щими в системе. Для этого используются специальные «смотровые окна», входящие в состав библиотеки SIMULINK. Интересующие пользователя характеристики си- стемы могут быть представлены как в числовой, так и в графической форме. Кроме того, существует возможность включения в состав модели средств анимации. Еще одно важное достоинство библиотеки SIMULINK заключается в том, что она является открытой системой: состав библиотеки может быть пополнен пользовате- лем за счет разработки собственных блоков. Начало работы Запуск SIMULINK можно произвести одним из трех способов: О щелкнув на соответствующей кнопке панели инструментов командного окна MATLAB; О введя команду simulink в активной строке командного окна; О выбрав команду New ► Model (создать ► модель) в меню File (файл); Использование первого и второго способов приводит к открытию окна просмотра библиотеки SIMULINK (рис. 4.1), а при выборе команды New ► Model кроме него открывается еще и пустое окно для создания S-модели (рис. 4.2).
SIMULINK — инструмент визуального моделирования 111 Рис. 4.1. Окна просмотра разделав библиотеки SIMULINK Рис. 4.2. Пустое окно для создания блок-диаграммы модели Окно просмотра разделов содержит панель инструментов, собственно список разде- лов, реализованный в виде дерева, и два вспомогательных поля, одно из которых используется для вывода комментария к выбранному в списке элементу, а другое — для представления значка этого элемента (рис. 4.3). Кнопки панели инструментов окна просмотра, показанные на рис. 4.4, имеют следу- ющее предназначение (как обычно, идентифицировать кнопку вам поможет всплы- вающая подсказка): О Create a new model (создать модель) — создать новую S-модель (точнее, открыть новое окно модели);
112 Урок 4. Библиотека блоков SIMULINK Поле ввода ключа поиска Поле для вывода комментария Поле для вывода значка Рис. 4.3. Элементы окно просмотра разделав библиотеки SIMULINK О Open Model (открыть модель) — открыть одну из существующих S-моделей; О Always Тор (всегда сверху) — отобразить окно просмотра библиотеки поверх дру- гих открытых окон (в исходном состоянии окно просмотра этим свойством не обладает); данная кнопка работает как флажок: после щелчка режим фиксирует- ся и при этом меняется изображение кнопки; О Find Block (найти блок) — поиск блока, название которого (или первые несколько символов названия) указано в расположенном справа от кнопки поле; если тре- буемый блок найден, в окне просмотра открывается соответствующий раздел библиотеки, а блок выделяется, в противном случае в поле комментария выво- дится сообщение Not found <имя блока> (не найден). Открыть модель Кнопка «Всегда сверху» после щелчка блок Создать модель Всегда сверху Рис. 4.4. Кнопки панели инструментов окна просмотра библиотеки SIMULINK Список разделов библиотеки SIMULINK представлен в основном окне просмотра в виде дерева, и правила взаимодействия с ним являются стандартными для списков такого типа:
SIMULINK — инструмент визуального моделирования 113 О значок свернутого узла дерева содержит символ +, а развернутого — символ О чтобы развернуть или свернуть узел дерева, достаточно щелкнуть на значке (или дважды щелкнуть на текстовой метке узла). Структура библиотеки SIMULINK показана на рис. 4.5. Основная библиотека Разделы основной библиотеки Блоки, входящие в раздел Sinks Расширения основной библиотеки, относящиеся к наборам инструментов MATLAB Назначение выделенного блока Значок выделенного блока (в данном случае Display) (в данном случае Display) Рис. 4.5. Структура библиотеки SIMULINK На верхнем уровне иерархии расположена основная библиотека, которая носит соответствующее название — Simulink. Кроме нее на рисунке показаны библиотеки Simulink Extras (расширения SIMULINK), содержащая некоторые специализирован- ные наборы блоков (см. раздел «Библиотека Simulink Extras» в уроке 5 «Дополни- тельные библиотеки блоков»), и StateflojAcLGQ^bmifiHoe моделдревдние), с которой мы познакомимся в разделе «STATEFLOW — инструмеПТсобртийного моделиро- вания» урока 8 «Взаимодействие SIMULINK с другими компонентами MATLAB». Ко второму уровню относятся разделы основной библиотеки и библиотеки Simulink Extras. И, наконец, нижний уровень иерархии образуют' собственно блоки SIMU LINK, которые и играют роль «кирпичиков» при построении S-модели. Чтобы вставить блок в S-модель, необходимо нажать кнопку мыши на графической или текстовой метке блока и, не отпуская кнопку мыши, перетащить его в окно блок-диаграммы.
114 Урок 4. Библиотека блоков SIMULINK Что из этого должно получиться, вы узнаете немного позже. А пока вернемся к упо- мянутому окну блок-диаграммы, общий вид которого был показан на рис. 4.2. С точки зрения пользовательского интерфейса, оно представляет собой первичное окно Windows-приложения со всеми вытекающими из этого последствиями (его можно сворачивать, изменять размеры окна, перемещать по экрану и т. д.). В отли- чие от окна просмотра библиотеки, закрытие окна блок-диаграммы не приводит к выходу из SIMULINK. Строка меню окна блок-диаграммы содержит следующие меню: О File (файл) — команды работы с mdl-файлами; О Edit (правка) — команды редактирования блок-диаграммы и работы с библиотекой; О View (вид) — команды изменения формата окна и управления выводом дополни- тельной информации; О Simulation (моделирование) — команды управления моделированием; О Form at (формат) — команды редактирования формата (то есть внешнего облика) блоков диаграммы и блок-диаграммы в целом. Fla панель инструментов выведены следующие кнопки (рис. 4.6): О New Model (создать модель) — открыть новое (пустое) окно блок-диаграммы; О Open Model (открыть модель) — открыть существующий mdl-файл; О Save Model (сохранить модель) — сохранить mdl-файл на диске; Сохранить модель Копировать Рис. 4.6. Панель инструментов окна блок-диаграммы О Print Model (печать модели) — вывод на печать блок-диаграммы; О Cut (вырезать), Сору (копировать), Paste (вставить) — команды редактирования блок-диаграммы; О Undo (отменить) — отменить предыдущую операцию редактирования; О Redo (повторить) — восстановить результат последней отмененной операции ре- дактирования; О Start/Pause (пуск/пауза) — запуск модели на исполнение (команда Start); после запуска модели на кнопке появляется символ 11 и ей соответствует уже команда Pause; О Stop (стоп) — закончить моделирование; кнопка становится доступной по исте- чении интервала моделирования и после выполнения команды Pause; О Library Browser (просмотр библиотеки) — активизировать окно просмотра библио- теки.
SIMULINK — инструмент визуального моделирования I гэ Если в состав рабочей конфигурации MATLAB включено приложение Real Time Workshop, то строка меню дополняется меню Tools (инструменты), содержащим команды для работы с этим приложением. Краткие комментарии к кнопкам панели инструментов, а также к командам меню окна блок-диаграммы отображаются в левой части строки состояния, когда указа- тель мыши находится над соответствующим элементом интерфейса. Эта же строка используется и для индикации состояния SIMULINK: Ready (готовность) или Running ; выполнение). Наряду с указанной информацией в строке состояния отображаются: Э установленный масштаб просмотра блок-диаграммы (в процентах, исходное зна- чение равно 100%); О индикатор степени завершенности сеанса моделирования («включается» только при запуске модели); Э текущее значение модельного времени (выводится также только после запуска модели); О используемый алгоритм расчета состояний модели. Применение команд меню, не выведенных на панель инструментов, будет рассмотрено немного позже. Сейчас остановимся на описании основных возможностей SIMULINK. Демонстрация возможностей Чтобы получить представление о том, что такое модель, разработанная с помощью SIM ULINK, можно воспользоваться демонстрационными средствами MATLAB, о которых было сказано выше. Для открытия окна MATLAB Demos (демонстрационные файлы MATLAB), напомним, можно ввести команду demo в активной строке команд- ного окна. Пользовательимеет возможность выбрать один из следующих примеров, входящих в раздел Simulink-demo (демонстрационныефайлы SIMULINK): О New in Simulink 3(новоев Simulink 3) — иллюстрация дополнительных возможно- стей версии Simulink 3.0, входящей в состав MATLAB 5.3, по сравнению с верси- ями Simulink 2.x, использовавшимися в предыдущих версиях MATLAB; О New in Simulink 2 (новое в Simulink 2) — иллюстрация возможностей версий Simulink 2.x по сравнению с версией Simulink 1, входящей в состав MATLAB 4; О Simple models (простые модели) - примеры простых S-моделей; О Complex models (сложные модели) — примеры более сложных S-моделей; О Advanced Products (дополнительные продукты) — вывод справочной информации по использованию RTW (Real Time Workshop — «Мастерская реального време- ни» — средство генерации кода на языке С из блок-диаграмм, используемое при разработке программного обеспечения систем реального времени). При выделении одного из разделов в правой части окна MATLAB Demos выводится список входящих в него примеров S-моделей. В свою очередь, название отмеченной в этом списке модели отображается на расположенной ниже кнопке Run (выпол-
116 Урок 4. Библиотека блоков SIMULINK пить). Щелчок на этой кнопке приводит к тому, что открывается окно, содержащее блок-диаграмму выбранной модели. Что же представляет собой S-модель, которой предстоит стать главным персонажем дальнейшего повествования? Чтобы составить о ней первое, пока весьма общее, впе- чатление, воспользуемся одним из примеров, включенных авторами MATLAB в раздел Simple Models. Выделите этот раздел в левом списке окна MATLAB Demos. Как следует из комментария, появляющегося при этом в окне справа вверху, примеры из данного раздела помогут уяснить основные концепции SIMULINK, и если вы не были ранее знакомы с этой программой, начинать нужно именно отсюда. В списке примеров выделите модель Tracking a bouncing ball (траектория прыгающего мяча) и щелкните на кнопке Run Tracking a bouncing (запуск прыгающего мяча). На экране появятся два окна. Первое из них содержит блок-диаграмму модели с комментари- ями (рис. 4.7), другое представляет собой пример одного 1|6)лсмотровых окон», обеспечивающих наблюдение за поведением моделируемой системы. Это окно по виду напоминает экран электронного измерительного прибора (рис. 4.8). До начала моделирования на нем ничего нет, кроме измерительной шкалы и кнопок панели инструментов. С точки зрения структуры S-модели, такое «смотровое окно» — один из блоков диаграммы. Как управлять его параметрами, будет сказано немного позже. Рис. 4.7. Пример блок-диаграммы модели Вернемся к окну, содержащему блок-диаграмму модели. Она представляет собой набор блоков, соединенных между собой линиями связи. Направление движения информационных и управляющих сигналов на диаграмме обозначено стрелками.
SIMULINK — инструмент визуального моделирования 117 Любая линия связи может иметь произвольное число ответвлений, начало каждого из которых обозначается точкой. Число входов и выходов блока определяется его типом и значениями параметров настройки блока. Для обеспечения наглядности диаграммы входящие в нее блоки не только различаются графическим представле- нием, но и снабжаются (при необходимости) индивидуальными именами, которые выбираются пользователем. На выбор имени не накладывается никаких ограниче- ний, оно может представлять собой даже целую фразу. Рис. 4.8. «Смотровое окна» блока Все блоки, входящие в блок-диаграмму, можно условно разделить на три группы: функциональные, смотровые и информационные. В состав рассматриваемой S-модели входят два «смотровых окна». Одно из них уже упоминалось выше. Оно называется Bouncing Ball Display (экран прыгающего мяча) и открывается автоматически при открытии файла модели. Второе «смотровое окно» представлено на диаграмме блоком Velocity Scope (индикатор скорости). Чтобы его открыть, нужно дважды щелкнуть на блоке. До начала моделирования это окно, так же, как и первое, пусто. Информационных блоков, то есть блоков, предоставляющих пользователю допол- нительную информацию о модели, также два. Первый из них помечен символом «?», а второй имеет более развернутую метку — Double click here for Simulink Help (для полу- чения справки дважды щелкните мышью). Выполнив эту рекомендацию для каждого из информационных блоков, можно увидеть их содержимое (рис. 4.9). Технология создания таких информационных блоков будет рассмотрена в разделе «Создание справочных подсистем» урока 7 «Подсистемы»; сейчас лишь отметим, что первый из них создан на основе механизма подсистем, а второй — с помощью инструмента компоновки интерфейса, о которых уже шла речь в разделе «Меню командного окна» урока 3 «Знакомство с пакетом MATLAB».
118 Урок 4. Библиотека блоков SIMULINK Рис. 4.9. Содержимое информационных блоков модели (слева показано содержимое блока «?», а справа — блока Double click here for Simulink Help) мввмванмвмнаяпвют i Information SimtiW Intetof system bounce । With any Simulink system, you can start the simulation j by selecting "Start" from the "Simulation" menu. Once you i have started, you can always terminate a simulation by । selecting "Stop" from the same menu. Some simulations i reach their pre-set stop time and terminate automatically. iYou can set the simulation stop time, step size, and other i simulation parameters by editing lhe "Parameters" dialog box under the "Simulation" menu. : You can select and move any block on a Simulink block ! diagram by clicking once and dragging. You can ^generally i open a Simulink block by double-clicking on it For example, demo systems will often have a box marked with Остальные блоки модели являются функциональными. Двойной щелчок на любом из них приводит к открытию окна настройки параметров блока. Пока будем считать, что значения параметров, заданные разработчиками модели, нас устраивают. Следующий этап знакомства с S-моделью состоит в попытке провести с ней модель- ный эксперимент (то есть заставить ее работать). Предварительно расположите все три окна модели (два «смотровых окна» и блок- диаграмму) на экране так, чтобы они не перекрывали друг друга (при необходимости можно изменить размер каждого из них). Сделайте активным окно с блок-диаграм- мой и запустите модель щелчком на кнопке Start (пуск), расположенной на панели инструментов окна. После начала моделирования траектория движения прыгающего мяча отображается в «смотровом окне» Bouncing Ball Display, а изменение его скорости — в окне Velocity Scope. 11е дожидаясь, пока мяч перестанет «прыгать», выполните команду Pause (пауза), щелкнув на соответствующей кнопке панели инструментов. При этом процесс моделирования приостанавливается — мяч «зависает» в окне (рис. 4.10). Во время паузы может быть запущена другая модель или выполнены какие-либо действия в командном окне MATLAB. При повторном щелчке ыа той же кнопке, которая теперь соответствует команде Continue (продолжить), мяч продолжит движение. Модель заканчивает работ}', ког- да мяч останавливается (его скорость становится нулевой). В рассматриваемом примере условием окончания моделирования является наступ- ление определенного события — остановка мяча. Но условием окончания модельно- го эксперимента может служить также истечение заданного временного интервала моделирования. SIMULINK позволяет использовать и такую возможность. Давайте попробуем ею воспользоваться. При заданных параметрах модели (упругости мяча и начальной скорости полета) мяч перестает прыгать через 20 с. Этот отрезок времени совпадает в исходной модели с временным интервалом моделирования, длительность которого отображается на горизонтальной шкале «смотровыхокон».
SIMULINK — инструмент визуальною моде- ириви»и: Рис. 4.10. Траектория «прыгающего мяча» и график изменения его скорости Изменим параметры движения мяча, оставив прежним временной интервал моде- лирования. Найдите на блок-диаграмме элемент в форме треугольника с именем Elasticity (уп- ругость). Он позволяет задавать значение коэффициента упругости мяча. Текущее значение этого коэффициента, равное -0.8, выводится внутри блока. Очевидно, чем более упругий мяч нам попадется, тем дольше он будет прыгать. В данной модели увеличению упругости мяча соответствует увеличение абсолютного значения коэф- фициента Elasticity. Замените -0.8 на -0.9. Для этого щелкните дважды на блоке. В открывшемся окне настроек произведите соответствующие изменения (рис. 4.11) п щелкните на кнопке ОК.
120 Урок 4. Библиотека блоков SIMULINK Рис. 4.11. Диалоговое окно для изменения упругости мяча Окно настроек закроется, новое значение коэффициента будет выведено на изобра- жении блока. Запустите модель на исполнение командой Start. Для наблюдения за мячом опять воспользуемся «смотровыми окнами». По истечении 20 с мяч еще полон энергии (кинетической), но... время моделирования истекло, и работа модели оста- новлена. Это подтверждает и короткий звуковой сигнал, издаваемый компьютером. На этом первое знакомство с S-моделью можно закончить и перейти к более деталь- ному описанию возможностей SIMULINK. Организация работы с библиотекой SIMULINK Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию. Для любого блока можно получать требуемое число копий и использовать каждую из них абсолютно автономно. Более того, практически для всех блоков существует возможность индивидуальной настройки: пользователь может изменить как внут- ренние параметры блоков (например, количество входов), так и внешнее оформле- ние (размер, цвет, имя и т. д.). Подробнее эти вопросы обсуждаются в разделе «Меню пользователя» урока 6 «Технология моделирования в среде SIMULINK». На порядок соединения блоков друг с другом также не накладывается никаких огра- ничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK. Для удобства работы пользователя основная библиотека блоков разбита на восемь разделов (см. рис. 4.3), содержимое которых не может изменяться пользователем: О Continuous (непрерывные системы) — блоки для моделирования непрерывных систем; О Discrete (дискретные системы) — блоки для моделирования дискретных систем; X О Functions & Tables (функции и таблицы);
Организация работы с библиотекой SIMULINK 121 О Math (математические блоки); О Nonlinear (нелинейныесистемы) — блоки для моделирования нелинейных систем; О Signals & Systems (сигналы и системы) — блоки для создания подсистем и управ- ления сигналами; О Sinks (получатели) — блоки-«получатели»; Sources (источники) — блоки-«источники»; ЗАМЕЧАНИЕ Читателям, имеющим опыт роботы с предыдущими версиями SIMULINK, может показаться бопее удобной прежняя форма представления структуры библиотеки SIMULINK. В этом случае они могут найти в папке MATLAB\toolbox\simulink\ blocks файл simulink3.mdl и открыть его либо в окне просмотра библиотеки, либо из окна блок-диаграммы любой S-модели. Он содержит визуальное пред- ставление разделов библиотеки в обновленном, но более привычном формате (рис. 4.12). В дальнейшем с библиотекой можно работать таким же образом, как и в предыдущих версиях SIMULINK. Рис. 4.12. Представление библиотеки SIMULINK в «старом» формате Расширение библиотеки — Simulink Extras (расширения SIMULINK) — содержит блоки, относящиеся к компонентам MATLAB, включенным пользователем в рабо- чую конфигурацию пакета. При этом для каждой компоненты создается свой раздел библиотеки. При минимальной рабочей конфигурации, описанной в разделе «Уста- новка» урока 3 «Знакомство с пакетом MATLAB», в Simulink Extras имеется шесть разделов, три из которых являются дополнением к разделам основной библиотеки, а три других имеют самостоятельное значение (рис. 4.13). Это наборы блоков: Transformations (преобразования)— блоки пересчета координат цшкал температу- ры, Flipflops (переключатели) — блоки, моделиругащиеработу триггеров7к-норй*ту типов и Linearization (линейная аппроксимация) — бдрки, реалпзуюптиелни'йную аппроксимацию (см раздел «Библиотека Simulink Extras» в уроке 5 «Дополнитель- ные библиотеки блоков»). Практически все блоки, входящие в состав библиотеки SIMULINK, имеют, по край- ней мере, один параметр настройки. Задавая требуемое значение параметра (или выбирая его из предлагаемого списка), пользователь имеет возможность скорректи- ровать функцию, реализуемую данным блоком. Чтобы открыть окно настройки па- раметров, нужно поместить блок в окно блок-диаграммы и дважды щелкнуть на нем.
122 Урок 4. Библиотека блоков SIMULINK Раздел Sources 123 Рис. 4.13. Разделы библиотеки SIMULINK Extros Окна настройки параметров всех библиотечных блоков имеют идентичную струк- I туру (подобную приведенной на рис. 4.11) и содержат краткую характеристику бло- 4 ка, элементы управления для ввода значений параметров блока и 4 кнопки: ОК — передать SIMULINK установленные значение параметров и закрыть окно 1 настройки; Cancel (отмена) - отменить выполненные установки и закрыть окно настроек; 1 Help (справка) — вызов файла помощи в формате html; J Apply (применить) — передать SIMULINK установленные значения параметров, | не закрывая окно. ] О о о ЗАМЕЧАНИЕ Чтобы запустить модель но исполнение с новыми параметрами, закрывать окна настроек не обязательно. Вернемся к основным разделам библиотеки SIMULINK. Как уже было сказано, их I восемь. Однако рассмотрим мы их не в том порядке, в котором они расположены в | окне просмотра (по алфавиту), а ориентируясь на последовательность этапов созда- 1 ния S-модели: сначала в ней должны появиться блоки, моделирующие входной 1 сигнал (рабочую нагрузку системы), затем — средства наблюдения («смотровые У окна»), и только потом — блоки, описывающие поведение моделируемой системы. Прежде чем перейти к описанию состава и назначения блоков, входящих в каждый Я из разделов, необходимо сделать следующее замечание. | I от аспект визуального моделирования, который рассматривается в данной книге, л далеко не исчерпывает всех возможностей SIMULINK. В частности, многие блоки 1 (а также используемая разработчиками SIMULINK терминология) ориентированы на моделирование систем автоматического управления и регулирования. Поэтому для некоторых блоков будет приведен лишь краткий комментарий, а основное вше мание уделено тем блокам, которые необходимы для реализации подходов, изло- женных в двух первых уроках книги. Раздел Sources Блоки, входящие в раздел Sources (источники), предназначены для описания рабо- чей нагрузки моделируемой системы, а также для формирования сигналов, обеспе- чивающих управление работой S-модели в целом или отдельных ее частей. Все блоки-источники имеют по одному выходу и не имеют входов (рис. 4.14). Simulink Library Browser a S Sinks SoiWCe:: ф ф Band-Limited White Noise Chirp Signal Clock Constant Digital Clock Discrete Pulse Generator From Workspace From File Pulse Generator Ramp Random Number Repeating Sequence Signal Generator Sine Wave Step Uniform Random Number Ф This is the sirnulinkS/Sources' block BE1B Рис. 4.14. Содержимое раздела Sources, представленное в новом (слева) и старом (справа) формате 12>) ЗАМЕЧАНИЕ Терминология, используемая авторами SIMULINK для описания блоков этого и других разделов библиотеки, говорит с там, что в основном имеются в виду электрические сигналы- Тем не менее, физическая интерпретация понятия «сигнал» в каждом конкретном случое различна и определяется в первую очередь физической природой моделируемой системы.
124 Урок 4. Библиотека блоков SIMULINK Итак, в качестве источников сигналов (входных величин) могут использоваться следующие блоки: ® Band-Limited White Noise («белый шум» с ограниченной полосой) — генератор «бе- лого шума» с ограниченной полосой; О Chirp Signal (гармонический сигнал) — источник гармонических колебаний пере- менной частоты; О Clock (часы) — генератор непрерывного временного сигнала; О Constant (константа) — источник постоянной величины (скаляра, вектора или матрицы); О Digital clock (цифровые часы) — источник дискретного временного сигнала; О Discrete Pulse Generator (дискретный импульсный генератор) — генератор диск- ретных импульсных сигналов; О Pulse Generator (импульсный генератор) — генератор импульсных сигналов; О Ramp (возбудитель) — генератор линейно возрастающего (убывающего) сигнала; О Random Number (случайное число) — источник дискретного сигнала, амплитуда которого является случайной величиной, распределенной по нормальному закону; О Repeating Sequence (периодический сигнал) — генератор периодического дискрет- ного сигнала произвольной формы; О Signal Generator (генератор сигнала) — генератор непрерывного сигнала произ- вольной формы; О Step (такт) — источник единичного дискретного сигнала с заданными параметрами; О Sine Wave (генератор гармонических колебаний); О Uniform Random Number (равномерное случайное число) — источник дискретного сигнала, амплитуда которого является равномерно распределенной случайной величиной. Следующие два блока из раздела Sources отличаются от перечисленных тем, что обеспечивают использование в модели различных числовых данных, полученных ранее как с помощью SIMULINK, так и другими средствами MATLAB. О From File (ввод из файла) — ввод в S-модель данных, хранящихся в МАТ-файле; О From Workspace (ввод из рабочей области) — ввод в модель данных непосредственно из рабочей области MATLAB. Структура данных в МАТ-файле представляет собой многомерный массив с пере- менным числом строк, которое определяется числом регистрируемых переменных. Элементы первой строки содержат последовательные значения модельного време- ни, элементы других строк — соответствующие значения переменных. Как и другие библиотечные блоки, блоки-«источники» могут настраиваться пользо- вателем. Рассмотрим особенности настройки тех блоков, которые понадобятся нам в дальнейшем при разработке собственных S-моделей.
Роздел Sources 125 Блок Step обеспечивает формирование единичного управляющего сигнала, который может использоваться в любой точке модели. Блок имеет 4 параметра настройки (рис. 4.15): Q Step time (длительность такта) — определяет длительность сигнала, исходное зна- чение параметра равно 1; О Initial value (начальное значение) — задает значение амплитуды сигнала в началь- ный момент времени, исходное значение равно 0; О Final value (конечное значение) — задает значение амплитуды сигнала по истече- нии шага моделирования, исходное значение этого параметра равно 1; О Sarhple time (эталонное время) — параметр, используемый для согласования по времени данного блока с другими блоками модели, исходное значение параметра равно 0. Рис. 4.15. Окно настройки блока Step Чтобы увидеть, что представляет собой сигнал, создаваемый блоком Step, и как на него влияют значения указанных параметров, воспользуемся уже знакомым вам «смотровым окном». Последовательность действий для достижения поставленной цели такова. 1. В окне просмотра щелкните на кнопке Create a new model (создать модель) панели инструментов. Откроется (или станет активным) пустое «безымянное» (untitled) окно для создания новой блок-диаграммы. 2. В разделе Sources найдите блок Step, нажмите левую кнопку мыши и, не отпуская ее, перетащите контур блока на свободное поле окна untitled. Отпустите кнопку мыши. В окне появится блок Step — первый блок будущей диаграммы. 3. В окне просмотра откройте раздел Sinks (получатели). Найдите в нем блок Scope (индикатор) и перетащите его на свободное поле окна untitled. В окне появится блок Scope.
126 Урок 4. Библиотека блоков SIMULINK 4. Для удобного соединения блоков расположите их так, чтобы вход блока Scope находился напротив выхода блока Step (на любом расстоянии), 5. Подведите указатель мыши к выходу блока Step. Указатель примет форму крес- тика. Нажмите кнопку мыши и, не отпуская ее, переместите указатель к входу блока Scope. Как только крестик станет двойным, отпустите кнопку мыши. Меж- ду блоками образуется линия связи со стрелкой, указывающей направление пе- редачи сигнала (рис. 4.16). 6. Откройте окно Scope, дважды щелкнув на блоке. Теперь можно «оживить» полу- ченную блок-диаграмму, состоящую из двух элементов. Для этого, как и при на- блюдении за «прыгающим мячом», нужно выполнить команду Start (пуск). Сфор- мированный сигнал отображается в окне Scope (рис. 4.17). Из рисунка видно, что при исходных значениях параметров блока Step величину Step time можно интер- претировать как период задержки сигнала. Step Scope Рис. 4.16. Подключение блока Scope Рис. 4.17. Временной диаграмма работы блока Step со стандартными параметрами Замените значение параметра Initial value на 1, а параметра Final value — на 0 и по- вторите моделирование. Форма сигнала изменилась (рис. 4.18). Теперь величина Step time определяет длительность управляющего сигнала. Именно такой подход к использованию блока Step оказывается более удобным при разработке многих S-моделей. Необходимо отметить, что значения всех параметров блока могут задаваться не только в форме констант, но и в виде вычисляемых выражений, в том числе содер- жащих функции. Подробнее этот вопрос обсуждается в разделе « Описание случай- пых факторов» урока 6 «Технология моделирования в среде SIM LJLINK».
Раздел Sources 127 'Рис. 4.18. Временная диаграмма работы блока Step с измененными параметрами Блок Constant, как уже было сказано, обеспечивает формирование постоянного ска- тарного или векторного сигнала. Значение сигнала указывается в поле Constant value (значение константы) окна настроек блока (рис. 4.19) и может быть задано в одном из следующих форматов: Рис. 4.19. Окно постройки блока Constant Э в виде числовой костанты; Э в виде вектора (последовательности чисел, заключенной в квадратные скобки); J в виде матрицы (последовательности векторов, заключенной в квадратные скобки); в виде вычисляемого выражения, в том числе содержащего библиотечные функ- ции MATLAB или функции, написанные пользователем. Установленное значение сигнала отображается внутри блока Constant. Примеры использования перечисленных форматов приведены на рис. 4.20. Немного забегая вперед, отметим, что сигнал, формируемый с помощью блока Constant, при необходимости с помощью блока Display (экран) можно представить в числовой форме или с помощью блока Scope (индикатор) — в графической. В част- ности, на рис. 4.21 показано окно Scope, в котором выведен вектор [1 4 7].
128 Урок 4. Библиотека блоков SIMULINK [14 7] > [[1 4 7] [5 9 2]] > Sin(3)+2 > Рис. 4.20. Примеры значений различных форматов в блоке Constant — вектор (слево), матрица (в центре), вычисляемое выражение (справа) Рис. 4.21. Отображение сигнала, сформированного в блоке Constant, в окне Scope Блок Discrete Pulse Generator находится в разделе Sources. Отыщите его и с помощью двойного щелчка откройте окно настроек блока. Оно позволяет изменять значения пяти параметров (рис. 4.22): О Amplitude (амплитуда сигнала); О Period (период сигнала); Рис. 4.22. Окно настройки блока Discrete Pulse Generator
Роздел Sources 129 О Pulse width (ширина импульса); О Phase delay (задержка сигнала); О Sample time (эталонное время) Ацдагизменения модельного времени^) Значения параметров Period, Pulse width и Phase delay должны задаваться как целое число шагов модельного времени, поэтому выбор значений параметров блока целе- сообразно начинать с выбора величины Sample time. Размер шага можно указать как в форме константы, так и в форме вычисляемого выражения. Если вычисленное зна- чение является дробным, оно округляется до целого. Аналогично может быть задано и значение амплитуды, но в случае дробной величины округление не производится. Блок Random Number обеспечивает формирование сигналов, амплитуда которых яв- ляется случайной величиной, распределенной по нормальному закону с заданными параметрами. Блок имеет четыре параметра настройки (рис. 4.23). Первые два — Mean (среднее значение) и Variance (дисперсия) — являются параметрами нормаль- ного закона (среднее и дисперсия), третий — Initial seed (начальное значение) — задает начальное значение для инициализации генератора последовательности слу- чайных чисел. При фиксированном значении этого параметра генератор всегда вы- рабатывает одну и ту же последовательность случайных чисел. Четвертый параметр (Sample time) используется так же, как и в рассмотренных ранее блоках. Рис. 4.23. Окно настройки блока Random Number Блок Uniform Random Number обеспечивает формирование сигналов, амплитуда ко- торых является случайной величиной, распределенной равномерно в заданном интервале. В блоке имеются такие же параметры настройки Initial seed и Sample time, как и в блоке Random Number. Еще два параметра — Minimum (минимум) и Maximum (макси- мум) — задают диапазон распределения случайной величины.
130 Урок 4. Библиотеке блоков SIMULINK Блок Digital Clock имеет единственный параметр настройки — величину шага измене- ния модельного времени — Sample time (рис. 4.24). Величина шага задается таким же образом, как и в блоке Discrete Pulse Generator. Если величина шага задана выражени- ем, то оно вычисляется только однажды, и полученное значение используется на всем интервале моделирования. Особенность блока Digital Clock состоит в том, что он не только формирует величину шага, но и вычисляет новое значение модельного времени, которое используется для проверки условия окончания моделирования: очередное значение модельного времени вычисляется как сумма предыдущего зна- чения и величины шага моделирования. Данный блок ориентирован па применение в моделях дискретных систем. Рис. 4.24. Окно настройки блока Digital Clack Блок Clock обеспечивает представление текущего значения модельного времени на очередном шаге моделирования и используется при моделировании непрерывных систем. Блок имеет два параметра настройки (рис. 4.25): О Display time (показать текущее время) — если флажок установлен, то внутри бло- ка в числовой форме выводится текущее значение модельного времени; О Decimation (дискретность) — целое число, определяющее периодичность фор- мирования в блоке значения модельного времени; например, если по умолча- нию новое состояние непрерывной системы определяется с шагом 0.2 с, то при Decimation=10 отметки времени в блоке Clock будут формироваться через каж- дые 2 с. Рис. 4.25. Окна настройки блока Clack
Роздел Sources 131 Независимо от установленных параметров, значения времени, формируемые бло- ком, образуют непрерывную последовательность. Рис. 4.26, на котором приведены «показания» блока Scope при шаге модельного времени 2 с, иллюстрирует различия в работе блоков Clock (слева) и Digital Clock (справа). Рис. 4.26. Значения модельного времени, формируемые блоками Clock и Digital Clock Блок From File имеет два параметра настройки: О File name (имя файла) — имя МАТ-файла, из которого будут считываться требу- емые данные; О Sample time — периодичность считывания данных. Если указывается только имя файла, то поиск файла производится в папке, установ- ленной в качестве текущей в окне Path Browser (просмотр файловой системы). При необходимости можно указать полный путь доступа к файлу. После закрытия окна настроек имя файла выводится внутри блока. МАТ-файл, используемый в качестве источника данных, должен содержать матри- цу, состоящую из двух или более строк. Первая строка должна содержать монотонно возрастающие значения модельного времени, другие строки — данные, соответству- ющие этим значениям времени, как показано ниже: Первая строка t. ^2 V" *fin Вторая строка ип U12 UI3— Ulf.n n-я строка 41 4,2 4з- 4(„ Выходной сигнал блока From File имеет размерность (п-1), где п — число строк матри- цы; это связано с тем, что значения времени на выход блока не подаются. Если ис- пользуемый при моделировании шаг времени не совпадает со значениями, записан- ными в первой строке файла, то SIMULINK выполняет линейную интерполяцию данных; аналогично, если первое значение (t,) меньше времени начала моделирова- ния, или последнее значение (tfin) больше времени окончания моделирования, то SIMULINK выпол няет экстраполяцию данных.
132 Урок 4. Библиотека блоков SIMULINK Если в первой строке содержатся два или более совпадающих значений времени, то считываются данные только для первого из них. Немного забегая вперед, отметим, что в разделе Sinks имеется блок То File (запись в файл), который выполняет запись результатов моделирования в МАТ-файл, исполь- зуя описанный выше формат данных. Однако следует иметь в виду, что SIMULINK загружает данные из файла в память один раз, при запуске модели; поэтому невоз- можно в одном и том же сеансе моделирования и записывать данные в МАТ-файл, и считывать их из него. Блок From Workspace, как было сказано ранее, обеспечивает использование в S-модели данных, хранящихся в рабочей области (собственной оперативной памяти) MATLAB. Блок имеет 4 параметра настройки (рис. 4.27): Рис. 4.27. Окно постройки блока From Workspace О Data (данные) — выражение, вычисление которого дает матрицу или структуру данных определенного формата; О Sample time — периодичность считывай! гя данных; О Флажки Interpolate data (интерполяция данных) и Hold final data value (сохранить последнее значение) совместно определяют значение сигнала на выходе блока; возможные установки этих параметров и соответствующее им значение выход- ного сигнала приведены в табл. 4.1. Формат данных, считываемых из рабочей области с помощью блока From Workspace, аналогичен формату МАТ-файла, за исключением того, что значения времени и со- ответствующие им значения параметров расположены не по строкам, а по столбцам. Подробнее форматы представления данных при записи их в рабочую область будут рассмотрены при описании блока То Workspace.
Раздел Sinks 133 Таблица 4.1. Правила формирования выходного сигнала блока From Workspace Флажок Interpolate data Флажок Hold final data value Способ формирования выходного сигнала при ^<М„„ Способ формирования выходного сигнала при *>>«„ Установлен Снят Интерполяция между соседними значениями данных Экстраполяция по последнему значению Установлен Установлен Интерполяция между соседними значениями данных Используется последнее значение в строке Снятл Снят Используется значение, выводившееся на предыдущем шаге Нуль Снят Установлен Используется значение, выводившееся на предыдущем шаге Используется последнее значение в строке Если вектор значений модельного времени содержит два или более совпадающих значения, то на выход блока выдается значение параметра, указанное для последнего из них (то есть с большим порядковым номером). Раздел Sinks Напомним, что раздел Sinks (получатели) библиотеки мы уже открывали, чтобы «достать» из него блок Scope (индикатор). Блоки, собранные в этом разделе, достаточно существенно различаются по функци- ональному назначению (рис. 4.28). (^Simulink Library Brow... В® В = Functions & Т ables ф- Nonlinear Signals & Systems ф о This is the 'simulink3/Sinks’ block Display Scope Stop Simulation To File To Workspace Ф XT Graph Рис. 4.28. Содержимое раздело Sinks, представленное в новом (слева) и в старом (справа) формате
134 Урок 4. Библиотека блоков SIMULINK Условно их можно разделить на три вида, которые перечислены ниже. О Блоки, используемые при моделировании в качестве «смотровых окон»: • блок Scope, который уже упоминался выше; • блок XYGraph (двумерный график) обеспечивает создание двумерных графи- ков в прямоугольной системе координат; • блок Display (экран) предназначен для отображения численных значений ве- личин. О Блоки, обеспечивающие сохранение промежуточных и/или выходных результа- тов моделирования: • блок То File (запись в файл); • блок То Workspace (запись в рабочую область); О Блок управления моделированием — Stop Simulation (остановка моделирования) позволяет прервать моделирование при выполнении тех или иных условий. Блок срабатывает в том случае, если на его вход поступает ненулевой сигнал. Поскольку этот блок не имеет параметров настройки, то мы к нему вернемся только в разделе «Описание случайных факторов» урока 6 «Технология моде- лирования в среде SIMULINK», в котором речь пойдет о средствах управления моделированием. Особенности использования остальных блоков раздела рас- смотрим подробнее уже сейчас. Блок Scope позволяет в процессе моделирования наблюдать динамику изменения интересующих исследователя характеристик системы. Создаваемое с его помощью «смотровое окно» напоминает экран измерительного прибора. Открыть окно Scope (дважды щелкнув на блоке) можно только после того, как блок помещен на поле блок-диаграммы. Размер и пропорции окна можно изменять произвольно, переме- щая его границы мышью. По оси ординат шкалы измерений откладываются значения наблюдаемой величи- ны, по оси абсцисс — значения модельного времени. По умолчанию для оси ординат используется диапазон [-5; 5], для оси модельного времени — [0; 10]. Блок-диаграмма может быть построена таким образом, чтобы на вход блока Scope поступала векторная величина. В этом случае для каждого элемента вектора в окне строится отдельная кривая, отражающая динамику его изменения. Выводимые кри- вые различаются цветом, который устанавливается автоматически. Одновременно в окне Scope может отображаться до 30 кривых. Кроме того, в версии SIMULINK 3.0 пользователь может в одном окне создать несколько осей координат для представле- ния того или другого параметра отдельно от других. Для управления параметрами окна Scope в нем имеется панель инструментов, содер- жащая семь кнопок (рис. 4.29): О Zoom (масштаб) — изменение масштаба осей графика; О Zoom X-axis (масштаб по оси X) — изменение масштаба по оси абсцисс; О Zoom Y-axis (масштаб по оси Y) — изменение масштаба по оси ординат;
Раздел Sinks 135 Масштаб по оси Y Автоматическое масштабирование Рис. 4.29. Панель инструментов блока Scope О Autoscale (автоматическое масштабирование) — автоматическая установка опти- мального масштаба осей; О Save current axes settings (сохранение текущих параметров масштаба) — сохране- ние установленного масштаба осей; Э Properties (свойства) — открытие окна настройки параметров (свойств) блока Scope; О Print (печать) — печать содержимого окна Scope. Первые три кнопки являются альтернативными, то есть в каждый момент времени может быть «нажата» только одна из них. Некоторые настройки могут быть также выполнены с помощью команд контекстно- го меню, которое вызывается нй экран щелчком правой кнопкой мыши (указатель мыши при этом должен находиться внутри координатной сетки). Контекстное меню содержит 4 команды (рис. 4.30): Рис. 4.30. Контекстное меню для установки параметров графика Q Zoom out (отключение масштабирования) — восстановление исходного масштаба осей; О Autoscale (автоматическое масштабирование) — автоматическая установка опти- мального масштаба осей; О Save current axes settings (сохранение текущих параметров масштаба) — сохране- ние установленного масштаба осей;
136 Урок 4. Библиотека блоков SIMULINK О Axes properties (свойства осей) — установка дополнительных параметров графи- ка; по этой команде открывается дополнительное диалоговое окно (рис. 4.31), с помощью которого может быть изменен диапазон значений по оси ординат и за- дана текстовая метка для окна графика; данную команду целесообразно исполь- зовать в тех случаях, когда в окне Scope для каждого отображаемого параметра используется отдельная координатная сетка. Рис. 4.31. Диалоговое окна для изменения диапазона оси Y и создания текстовой метки графика Для изменения масштаба по выбранной оси координат необходимо выполнить опи- санную ниже процедуру. 1. Щелкнуть на соответствующей кнопке изменения масштаба. 2. Подвести указатель мыши к тому участку графика, который должен быть отобра- жен в новом масштабе. 3. Щелкнуть (один раз!). Первый щелчок приводит к четырехкратному увеличению масштаба, каждый последующий дает увеличение масштаба в два раза. При щелчке на кнопке Properties открывается окно свойств блока Scope с двумя вкладками: О General (общие свойства) — параметры управления форматом вывода графиков; О Data history (протоколирование данных) — параметры записи в рабочую область MATLAB отображаемых на графиках данных. В нижней части окна расположены кнопки, аналогичные кнопкам окон настройки параметров других библиотечных блоков: О ОК — передать SIMULINK установленные значения параметров изакрыть окно; О Cancel (отмена) — закрыть окно без применения внесенных изменений; О Apply (применить) — применить внесенные изменения без закрытия окна; О Help (справка) — вызов помощи в формате HTML. Вкладка General содержит следующие элементы интерфейса (рис. 4.32). О Поле Number of axes (число графиков) предназначено для ввода числа подокон (графиков), создаваемых в окне Scope. По умолчанию создается только одно под- окно, и оси Y всех создаваемых графиков являются независимыми по отноше- нию друг к другу, однако для формирования координаты X используются одни и
Роздел Sinks 137 те же значения модельного времени. Значение параметра Number of axes определя- ет число входных портов блока Scope Рис. 4.32. Вкладка General О Поле Time range (временной диапазон) предназначено для ввода граничного зна- чения диапазона по оси времени (оси X). Это значение может либо указываться явно, в единицах модельного времени, либо с помощью ключевого слова auto, в последнем случае граничное значение времени по оси X совпадает с конечным значением модельного времени, установленного для сеанса моделирования. О Раскрывающийся список Tick labels (тактдрьге метки) используется в том случае, если в окне Scope создано несколько графиков. Он позволяет выбрать формат представления оси X: • bottom axis only (только на нижней оси) — значения времени по оси X выво- дятся только для нижнего графика; • all (на всех) — значения времени по оси X выводятся для всех графиков; • попе (нет) — значения по осям X и Y не выводятся. О Раскрывающийся список_5атрйп^(периодичносхЦдредназначен для выбора варг lairraynравления период ичностью отрисовки графи ков.(само значение вво- дится в расположенное рядом поле): • Decimation (дискретность) — значение этого параметра интерпретируется как коэффициент «прореживания» выводимых значений, например, если задать для этого параметра значение 3, то наблюдаемые характеристики отобража- ются в окне Scope только на каждом третьем шаге моделирования; • Sample time (эталонное время> — периодичность определяется величиной шага модельного времени, установленного для сеанса моделирования; если выполняется моделирование с постоянным шагом, то значение параметра Sample time должно совпадать с величиной At.
138 Урок 4. Библиотека блоков SIMULINK О Флажок floating scope (свободный индикатор) позволяет не связывать напря- мую блок Scope с другими блоками. Такой «свободный» блок не имеет ни одного входного порта и обеспечивает отображение сигнала, передаваемого по выбран- ной в блок-схеме линии связи. На рис. 4.33 слева показано окно блока Scope, содержащее два графика, а справа — фрагмент блок-диаграммы, в которой он используется (в поле Number of axes введено значение 2, а в раскрывающемся списке Tick labels выбран вариант bottom axes only). Рис. 4.33. Вывод в окне Scope нескольких грофиков ЗАМЕЧАНИЕ Порометр Somple time имеется во многих библиотечных блоках SIMULINK. Для каждого блоко значение этого параметра устанавливается индивидуальна. Если блок реализует некоторую функцию, то параметр Sample time определя- ет дискретность вычислений. Поэтому для корректной роботы модели необхо- димо согласовывать установку этого параметра для взаимосвязанных блоков. Относительно оси времени блока Scope необходимо сделать дополнительное пояс- нение. Если величина заданного интервала моделирования не превышает значение Time range (и, следовательно, весь процесс «умещается» в окне Scope), то под графиком в строке Time offset: (временной сдвиг) выводится 0. Если же интервал моделирова- ния превышает значение Time range, то в окне отображается только отрезок времени, равный TM-n-( Time range), гдеТи —длительность интервала моделирования, п — целое число. При этом в строке Time offset: выводится величина «скрытого» интервала времени (длиной n-(Time range)). Например, если в поле Time range введено значение 10, а длительность интервала моделирования составляет 16 единиц модельного времени, то в окне Scope будет выведен график моделируемого процесса за последние 6 единиц времени, а строка под графиком будет иметь вид: Time offset: 10 (рис. 4.34).
Раздел Sinks 139 Рис. 4.34. Вывод в акне Scope отрезка времени, превышающего заданный диапазон Вкладка Data history позволяет задать максимальный объем и способ записи отобра- жаемых в окне данных (рис. 4.35). О Объем сохраняемых данных задается установкой флажка Limit rows to last (пре- дельное число строк) и вводом значения в расположенное рядом поле. Если фла- жок снят, то ограничения определяются объемом свободного пространства рабо- чей области MATLAB. О Способ записи задается с помощью флажка Save data to workspace (сохранить дан- ные в рабочей области): если он установлен, то отображаемые в окне Scope дан- ные сохраняются в рабочей области MATLAB в виде матрицы или структуры. О В поле Variable Name (имя переменной) указывается имя матрицы или структуры, в которой должны храниться данные. Значение по умолчанию — Scope Data (данные индикатора). О Раскрывающийся список Save format (формат записи) позволяет выбрать фор- мат записи: • Matrix (матрица) — в .виде матрицы; • Structure (структура) — в виде структуры; • Structure With Time (структурас полем времени) — в виде структуры с сохране- нием значений модельного времени. ЗАМЕЧАНИЕ Структура — эта тип данных, используемый ва многих языках программирова- ния высокого уровня. От матрицы или массива структура отличается тем, что входящие в нее элементы (паля) могут быть разнотипными (целыми, веществен- ными, символьными и т. д.|. Блок XYGraph также относится к «смотровым окнам». Он обеспечивает построение двумерных графиков зависимостей произвольных величин, фигурирующих в мо- дели. Блок имеет два входа, первый из которых предназначен для ввода аргумента, второй — для ввода значений функции этого аргумента.
I4U Урок 4. Библиотека блоков SIMULINK Рис. 4.35. Вкладка Data history На рис. 4.36 показан вид окна XYGraph, содержащего график функции sq rt (t), где t — текущее значение модельного времени. Окно XYGraph открывается автоматически при запуске модели. Рис. 4.36. Внешний вид окна XYGraph Блок XYGraph имеет следующие параметры настройки (рис. 4.37): О диапазоны осей графика (X-min, X-max — для оси абсцисс и Y-min, Y-max — для оси ординат); О шаг модельного времени Sample time, значение по умолчанию которого равно -1; это означает, что величина шага определяется значением одноименного парамет- ра блоков, с которых поступают входные сигналы на блок XYGraph.
Раздел Sinks 141 Рис. 4.37. Окна настройки блока XYGraph Блок Display предназначен для вывода на экран численных значений величин, фигу- рирующих в модели. Блок имеет 4 параметра настройки (рис. 4.38). О Раскрывающийся список Format (формат) позволяет выбрать формат вывода: short (короткий), long (длинный), short_e (короткий с экспонентой), long_e (длинный с экспонентой), bank (денежный). Предлагаемые форматы вывода ана- логичны форматам, используемым в командном окне MATLAB (см. раздел «Ко- манда Preferences» в уроке 3 «Знакомство с пакетом MATLAB»). Рис. 4.38. Окно настройки блока Display
ГЧ2 Урок 4. Библиотека блоков SIMULINK О Поле Decimation (дискретность) — определяет периодичность вывода значений в окне Display. О Флажок Floating display (свободный экран) позволяет выбрать способ использо- вания блока Display в блок-диаграмме. Если флажок установлен, то блок Display используется как «свободный» (то есть без входного порта). Чтобы указать сиг- нал, отображаемый в окне Display, следует выделить соответствующую линию связи, щелкнув на ней левой кнопкой мыши. О Поле Sample Time задает величину шага модельного времени, то есть дискретность вывода данных в окно Display. Заданное по умолчанию значение -1 означает, что величина шага определяется значением одноименного параметра блоков, с кото- рых поступают входные сигналы на блок Display. Блок Display может использоваться для вывода как скалярных, так и векторных дан- ных. Если отображаемая величина является вектором, то исходный формат блока изменяется автоматически. Об изменении формата говорит маленький черный тре- угольник, появляющийся в нижнем правом углу блока. Для каждого элемента век- тора создается свое мини-окно, но чтобы они стали видимыми, необходимо «растя- нуть» рисунок блока. Для этого следует выделить блок, подвести указатель мыши к одному из его углов (указатель при этом примет форму двойной стрелки), нажать кнопку мыши, и, не отпуская ее, растянуть блок. После того как кнопка будет отпуще- на, на экране появятся дополнительные окна с выведенными в них значениями эле- ментов вектора. Если хотя бы один элемент вектора оказался «за кадром», внутри блока Display останется черный треугольник. В этом случае операцию «растягивания» блока следует повторить. Убедитесь в возможностях блока Display самостоятельно, используя в качестве источника сигнала блок Constant (константа). Последовательность действий при этом должна быть почти такой же, как при работе с блоком Scope. 1. Откройте раздел библиотеки Sources (источники) и перетащите из него на сво- бодное поле новой S-модели блок Constant. 2. Из раздела Sinks (получатели) «перетащите» значок блока Display и поместите его рядом с блоком Constant. 3. С помощью мыши соедините блоки Constant и Display между собой. 4. Выполните команду Start (пуск). После завершения работы «модели» в блоке Display появится цифра 1 (рис. 4.39). 1 - - - h L U Constant Display Рис. 4.39. Пример использования блока Display Чтобы получить изображение элементов вектора, откройте окно настроек блока Constant и введите в качестве нового значения любую последовательность чисел, заключенную в квадратные скобки (числа должны быть разделены пробелами или запятыми). После щелчка на кнопке Apply (применить) опять выберите команду Start После завершения работы модели в блоке Display появится упоминавшийся выше
Раздел Sinks 143 черный треугольник. «Растяните» блок и убедитесь, что значения вектора Constant выведены правильно (рис. 4.40). Display Рис. 4.40. Вывод с помощью блока Display векторных величин Блок То File (запись в файл), как уже было сказано, используется в паре с блоком From File (ввод из файла) из раздела Sources (источники). Он обеспечивает запись в М АТ-файл данных, полученных в ходе моделирования. Блок имеет следующие па- раметры настройки (рис. 4.41). О Filename (имя файла) — имя МАТ-файла, в который будут записываться данные (по умолчанию — u ntitled.mat). Может быть указан полный путь доступа к файлу. Имя файла выводится внутри блока в блок-диаграмме. Рис. 4.41. Окно настройки блока Та File О Variable name (имя переменной) — имя переменной, некоторому можно обращать- ся к данным, записанным в файле (для того, например, чтобы просмотреть или изменить их в командном окне MATLAB). По умолчанию используется стандарт- ное имя ans. О Decimation (дискретность) — дискретность записи данных в файл. При вводе зна- чения 1 запись производится на каждом шаге моделирования. Параметр может принимать только целочисленные значения. О Sample Time — величина шага моделирования для данного блока.
44 Урок 4. Библиотеке блоков SIMULINK Блок То Workspace (запись в рабочую область) также имеет «пару» из раздела Sources — блок From Workspace (ввод из рабочей области) и предназначен для сохра- нения данных, полученных в процессе моделирования, в рабочей области MATLAB. Данные сохраняются в виде матрицы или структуры, которые отличаются от струк- туры данных в М АТ-файле тем, что значения сохраняемых величин расположены по строкам, а не по столбцам. Блок имеет 5 параметров настройки (рис. 4.42). Рис. 4.42. Окно постройки блока Та Workspace О Variable name — имя, под которым данные сохраняются в рабочей области (по умолчанию — simout). О Maximum number of rows (максимальное число строк) — предельно допустимое чис- ло шагов моделирования, для которого регистрируются данные (по умолчанию задается константой inf, то есть данные регистрируются на всем интервале моде- лирования). О Decimation — дискретность регистрации данных (имеет тот же смысл, что и одно- именный параметр блока То File). О Sample time — величина шага (дискретность изменения) модельного времени (имеет тот же смысл, что и одноименный параметр блока То File). О Save format — формат, в котором будут записаны в рабочей области сохраняемые данные; формат выбирается с помощью раскрывающегося списка, который содер- жит три варианта: • Matrix (матрица) — в’виде матрицы;
раздел Continuous 145 • Structure (структура) — в виде структуры; • Structure With Time (структура с полем времени) — с сохранением значений модельного времени. При сохранении данных в формате Matrix в рабочей области создается массив значе- ний. в котором число столбцов равно числу наблюдаемых (сохраняемых) парамет- ров моделируемой системы, а число строк зависит от периодичности регистрации параметров и длительности сеанса моделирования; их максимальное количество определяется параметром Maximum number of rows. При выборе формата Structure данные сохраняются в виде структуры, содержащей гри поля: time (векторзначений модельного времени), signals (массив значений наблюдаемых параметров) и blockName (имя блока То Workspace, используемое в модели); вектор time для этого формата не заполняется. формат Structure With Time отличается от предыдущего тем, что обеспечивает запол- нение вектора time. П ри выборе формата сохранения данных следует учитывать, каким образом эти дан- ные будут впоследствии использоваться. Например, если они должны будут загру- жаться в модель с помощью блока From File, тр обязательно следует сохранить и вектор значений модельного времени. Подробнее о сохранении и использовании результа- тов моделирования будет рассказано в разделе «Меню Simulation» урока 6 «Техно- логия моделирования в среде SIMULINK». Раздел Continuous Раздел Continuous (непрерывные системы) содержит блоки, которые можно услов- на разделить на две группы: блоки, непосредственно предназначенные для описания непрерывных систем, и блоки общего назначения, которые могут быть использованы в модели любой системы (рис. 4.43). К первой группе относятся: Э Transfer Fen (передаточная функция); Э State-Space (пространство состояний) — блок формирования состояния сис- темы; □ Zero-Pole (область перехода) — блок, реализующий передаточную функцию, опи- санную с помощью оператора Лапласа; О Derivative (производная) — блок вычисления производной входного сигнала по времени (du/dt). Во вторую группу входят четыре блока: О Integrator (интегратор) — сумматор непрерывного времени; О Memory (регистр) — блок задержки входного сигнала на один шаг модельного вре- мени;
146 Урок 4. Библиотека блоков SIMULINK? (J- Library: simulink3/ConUnuous > du/dt > Integrate» Derivative State-Space Memory k = Ax+0u y= Cx+Du »1) sQ1) Zero-Pole Transfer Fen Variable Transport Delay Рис. 4.43. Содержимое раздело Continuous, представленное в новом (слева) и старом (справа) формате Transport Delay О Transport DeLay (задержка передачи) — блок, реализующий произвольную задерж-| кувходного сигнала; | О Variable Transport Delay (плавающая задержка передачи) — блок, реализующий! динамически изменяемую задержку входного сигнала. | В соответствии с общей концепцией книги, более подробно будут рассмотрены бло-1 ки, относящиеся ко второй группе. I Блок Inte.qratqr производит вычисление «времени существования» входного сигна-| ла и может быть использован для определения временных характеристик моделиру*| емой системы (или отдельных ее подсистем). | Блок имеет следующие параметры настройки (рис. 4.44). О Раскрывающийся список External reset (внешний управляющий сигнал) возводя- ] ет выбрать способ управления: ... 1 • попе (нет) — дополнительный управляющий сигнал не используется; • rising (подъем) — для управления используется возрастающий сигнал; ; • falling (спад) — для управления используется ниспадающий сигнал; • either (любой) — на работу блока влияет любое изменение амплитуды управ- ляющего сигнала. О Раскрывающийся список Initial condition source (источник начального состоя- ния) позволяет выбрать одно из двух значений: • internal (внутренняя) — используется собственная установка начального зна- чения сумматора; • external (внешняя) — установка начального значения производится извне.
Раздел Continuous 147 ЗАМЕЧАНИЕ Если выбранные пользователем значения двух рассмотренных параметров предполагают наличие дополнительных входных сигналов, то на рисунке блока появляются дополнительные входные парты (после щелчка на кнопках ОК или Apply в акне настроек блока). О В поле Initial condition (начальное состояние) значение вводится либо как число- вая константа, либо в виде вычисляемого выражения. Э Флажок Limit output (ограничения выходного значения) определяет, будут ли использоваться оставшиеся 4 параметра настройки: • .. Upper saturation limit (верхнее предельное значение), по умолчанию значение параметра не ограничено (inf); • Lower saturation limit (нижнее предельное значение), по умолчанию значение параметра не ограничено (-inf); • флажок Show saturation port (показать порт насыщения); • флажок Show state port (показать порт состояния); О Absolute tolerance (точность вычислений). Рис. 4.44. Окно настройки блока Integrator Параметры, зависящие от флажка Limit output, используются следующим образом. Если флажок установлен, то при переходе значения сумматора через верхний или
148 Урок 4. Библиотеке блоков SIMULINK нижний предел на дополнительных выходах блока (портах насыщения и состояния) формируется единичный сигнал. Чтобы этот сигнал можно было использовать для управления работой S-модели, флажки Show saturation port и Show state port должны быть установлены (при этом внутри блока появляются их обозначения). Особенность порта состояния состоит в том, что снимаемый с него сигнал может быть использо- ван только для прерывания алгебраического цикла или для согласования состояния подсистем модели. Блок Memory обеспечивает задержку входного сигнала на один шаг модельного времени. Блок имеет два параметра настройки (рис. 4.45). О Initial condition (начальное состояние) — определяет значение амплитуды вход- ного сигнала на момент инициализации блока. В большинстве случаев целесооб- разно принимать это значение равным нулю. Рис. 4.45. Окно настройки блока Memory О флажок Inherit sample rime (наследовать эталонное время) позволяет задать вели- чину шага, на которыйбудё^ройзводиться задержки сигнала: • если флажок снят, то используется минимальный шаг, равный 0.1 единицы модельного времени; • если флажок установлен, то величина шага определяется значением в поле Sample time (эталонное время) блока, предшествующего блоку Memory. Блок Transport Delay обеспечивает задержку сигнала на заданное количество шагов модельного времени, причем не обязательно целое. Настройка блока производится с помощью трех параметров (рис. 4.46). О Time delay (время задержки) — количество шагов модельного времени, на которое задерживается сигнал. Может вводиться либо в числовой форме, либо в форме вычисляемого выражения. О Initial input (начальное значение на входе) — значение амплитуды входного сигнала в момент инициализации блока (по умолчанию равно 0). О Initial buffer size (начальный размер буфера) — объем памяти (в байтах), выделя- емой в рабочей области MATLAB для хранения задержанного сигнала. Значение параметра должно быть кратно 8 (по умолчанию — 1024). Если в процессе моде- лирования размер буфера оказывается недостаточным, блоку автоматически
1’оздел Continuous 149 выделяется дополнительная память. В этом случае по окончании сеанса модели- рования SIMULINK выдает соответствующее сообщение с указанием объема выделенной памяти. Рис. 4.46. Окна настройки блока Transport Delay Блок Variable Transport Delay позволяет задавать управляемую извне величинудадерж- ки. С этой целью блок имеет дополнительный вход. Подаваемый на него сигнал определяет длительность задержки информационного сигнала, поступающего на основной вход блока. Данный блок, как и предыдущий, имеет 3 параметра настройки (рис. 4.47). О Maximum delay (максимальная задержка) — максимальный интервал времени, на который может быть задержан входной сигнал. Если величина задержки, опре- деляемая управляющим сигналом, превышает это значение, то задержка прини- мается равной значению в поле Maximum delay. О Initial input (начальное значение на входе) — значение амплитуды входного сиг- нала в момент инициализации блока (по умолчанию равно 0); □ Buffer size (размер буфера) — объем памяти (в байтах), выделяемой в рабочей области MATLAB для хранения задержанного сигнала; значение параметра дол- жно быть кратно 8 (по умолчанию — 1024). Принцип работы обоих блоков задержки аналогичен и состоит в следующем. Очередное значение входного сигнала и момент его поступления запоминаются в буфере блока. На каждом шаге моделирования на выход блока поступает то значе- ние входного сигнала, которое он имел в момент времени Tm-Td, где Тгп — текушее значение модельного времени, Td — заданный интервал задержки. Следует также учитывать, что для дискретного сигнала экстраполяция его значений не производится. В некоторых случаях это может привести к «усечению» входного сигнала на выхо- де блоков Transport Delay и Variable Transport Delay. Пример такой ситуации иллюст- рирует рис. 4.48 (слева длительность входного сигнала равна 1, а справа — 2). В каче- стве источника сигнала используется блок Step (тактЗ
150 Урок 4. Библиотека блоков SIMULINK Рис. 4.47. Окна настройки блока Variable Transport Delay Рис. 4.48. Изменение формы входного сигнала при некорректном использовании блоков Transport Delay и Variable Transport Delay Раздел Discrete В раздел Discrete (дискретные системы) входят блоки, с помощью которых в модели может быть описано поведение дискретных систем. Напомним, что различают два основных типа таких систем: системы с дискретным временем и системы с дискретны- ми состояниями (см. раздел «Построение концептуальной модели» в уроке 1 «Роль математического моделирования в процессе принятия решений»). Блоки, входя-
Роздел Discrete 151 щие в рассматриваемый раздел библиотеки SIMULINK, обеспечивают моделиро- вание как тех, так и других. Раздел содержит 8 блоков (рис. 4.49): О О о о о Unit Delay (задержка сигнала); Discrete-Time Integrator (дискретный сумматор времени); Zero-Order Hold ^кстраполят^йулёвого порядка); First-Order Hold (экстраполятор первого порядка); Discrete State-Space (дискретное пространство состояний) — блок формирования состояния системы; О Discrete Filter (дискретный фильтр); О Discrete Transfer Fen (дискретная передаточная функция); О Discrete Zero-Pole (дискретная область перехода). Последние три блока обеспечивают различные варианты Z -преобразования входно- госигнала. ‘ — ~~~~ ^Simulink Library Browser H ||| Simulink Continuous Discrete Transfer Fen Discrete Zero-Pole Discrete Filter Discrete State-Space Discrete-Time Integrator First-Order Hold Unit Delay Zero-Order Hold ф-S Functions & Tables • Math This is the 'simulink3/Discrete* block & ф ф Рис. 4.49. Содержимое роздело Discrete, представленное в новом (слево) и старом (справа) формате С точки зрения иллюстрации технологии имитационного моделирования, интерес представляют первые два блока из рассматриваемого раздела. Познакомимся с ними поближе. Блок Unit Delay обеспечиваетзадержку входного сигнала на один шагмодельного времени. Параметры настройки блока представлены ниже (рис. 4.50). О Initial condition (начальное состояние) — значение амплитуды сигнала в момент активизации блока. Может быть задано либо в виде числовой константы, либо в виде вычисляемого выражения.
152 Урок 4. Библиотека блоков SIMULINK Рис. 4.50. Окно настройки блока Unit Deloy О Sample time (эталонное время) — размер шага модельного времени, в течение ко- торого сохраняется значение сигнала, поступившего на вход блока. Как и первый параметр, может задаваться в любой форме, но значение параметра должно быть положительным. Если моделирование выполняется с постоянным шагом, то дан- ный параметр обязательно должен быть равен At. Блок Discrete-Time Integrator выполняет суммирование интервалов времени меуду поступленюши входного сигнала. Блок мсойгг б'Бггь использован для управления логикой работы отдельных компонентов или имитационной модели в целом. В част- ности, суммарная длительность работы некоторой подсистемы может служить ус- ловием «досрочного» окончания моделирования. Параметры настройки блока аналогичны параметрам настройки блока Integrator, рассмотренным ранее, за исключением двух особенностей (рис. 4.51). О С помощью раскрывающегося списка Integrator method (метод интегрирования) можно выбрать один из трех методов: • Forward Euler (прямой метод Эйлера); • Backward Euler (обратный метод Эйлера); • Trapezoidal (метод трапеций). О Вместо поля Absolute tolera псе (точность вычислений) требуется заполнить поле Sample time, которое определяет дискретность суммирования. Раздел Functions & Tables За относительно небольшим размером раздела Functions & Tables (функции и табли- цы), содержимое которого показано на рис. 4.52, скрывается поистине «недюжинная сила», поскольку в его состав входят три наиболее мощных и универсальных блока SIMULINK — Fen (функция), MATLAB Fen (функция MATLAB) и S-function (S-функ- ция).
Раздел Functions & Tables 153 Рис. 4.51. Окно настройки блока Discrete-Time Integrator S-К Simuink • ЕВ- S Continuous ' GB М Discrete Functions & Tables: -Ф Ф ф ф Fen Look-Up T able Look-Up Table [2-D] MATLAB Fen S-Function ф. lb] Math .ffi-S.Noninea...... This is the 'simulink3/Functions S Tables* block Рис. 4.52. Содержимое раздела Functions & Tables, представленное в новом (слева) и старом (справа) формате Блок Frn — это универсалкный «выделительный» блок. В качестве параметра на- стройки блока можно ввести любое вычисляемое выражение, аргументом которого является значение входного сигнала; особенность этого блока состоит в том, что ар-
154 Урак 4. Библиотека блоков SIMULINK гумент выражения должен быть указан явно. Для обозначения входного сигнала ис- пользуется символ и. Если входной сигнал является вектором, то для операций, выполняемых над отдельными его элементами, аргумент также должен быть задан явно. Например, сложение двух элементов входного сигнала должно быть записано втакомвиде: и(1 )+в(2) (рис. 4.53). Рис. 4.53. Окна настройки блока Fen В качестве операндов вычисляемого выражения блока Fen могут также использовать- ся переменные, находящиеся в рабочей области MATLAB. Например, если в рабочей области имеется переменная ans, то корректным будет выражение и (1 )+ans. Вообще же стиль записи выражений заимствован авторами SIMULINK из языка програм- мирования С. Это, в частности, означает, что в составе выражений наряду с указан- ными выше конструкциями могут использоваться следующие компоненты: О операторы отношения (==,! =, >, <, >= и <=); выражение возвращает 1, если отноше- ние истинно (TRUE) и 0, если оно ложно (FALSE); О логические операторы (&&, 11 и ! ); выражение возвращает 1, если отношение ис- тинно (TRUE) и 0, если оно ложно (FALSE). Порядок выполнения операций в выражении определяется приоритетами операто- ров, которые также совпадают с приоритетами операторов в языке С: О самый высокий приоритет имеет оператор скобок (); О унарные операторы + и О оператор возведения в степень; О оператор логического отрицания !; О операторы арифметического умножения и деления * и/; О операторы арифметического сложения и вычитания + и -; О операторы отношения >, с, <= и >=; О операторы отношения = и I = («равно» и «не равно»); О оператор логического умножения && (И); О оператор логического сложения 11 (ИЛИ); Например, если и( 1 )=5, и (2 )=7 и ans=9,To выражение u( 1 )+u(2)<ans возвращает значениеО.
‘'аздел Functions & Tables 155 Внутри блока Fen отображается выражение, вычисляемое блоком. ЗАМЕЧАНИЕ Вычисляемое выражение должно давать только скалярное значение. Эта ограни- чение снимается при использовании блока MATLAB Fen. Блок MATLAB Fen позволяет применить к входному сигналу любую процедуру обра- ботки, реализованную в виде М-файла. Это может быть как библиотечная функция пакета MATLAB, так и подпрограмма, созданная разработчиком S-модели. Б ток имеет три параметра настройки (рис. 4.54). Э MATLAB function (функция MATLAB) — имя М-файла или вычисляемое выраже- ние. При записи выражения остаются справедливыми правила, которые были рассмотрены применительно к блоку Fen, в частности, в качестве операндов мо- гут использоваться переменные из рабочей области MATLAB. Если выражение состоит из одной библиотечной функции MATLAB, выполняемой над входным сигналом, то аргумент функции можно не указывать (например, для вычисления квадратного корня входного значения достаточно ввести имя функции sqrt). Block Parameters: MATLAB Fen Bi Рис. 4.54. Окна настройки блока MATLAB Fen Э Output width (длительность выходного сигнала). Если длительность выходного сигнала совпадает с длительностью входного, то значение данного параметра устанавливается равным -1. Если это не так, то необходимо заранее определить длительность выходного сигналам указать ее в качестве значения параметра. При несоответствии размерности сигнала установленному значению SI М ULINK вы- дает сообщение об ошибке. О Раскрывающийся список Output signal type (тип выходного сигнала) — позволя- ет выбрать числовой формат представления амплитуды выходного сигнала: • real (вещественное) — сигнал интерпретируется как вещественное число; • complex (комплексное) — сигнал интерпретируется как комплексная величина;
156 Урок 4. Библиотека блоков SIMULINK • auto (авто) — тип выходного сигнала совпадает с типом входного сигнала^ если входной сигнал не используется, то тип выходного сигнала определяется] типом входного порта блока, подсоединенного к блоку MATLAB Fen. j- Блок S-function обеспечивает использование в блок-диаграмме так называемый S-функций. ‘ I S-функция — это относительно самостоятельная программа, написанная на языки MATLAB или С, которая имеет определенную структуру и хранится в М-файле илй в МЕХ-файле (МЕХ означает MATLAB Executable file — исполняемый файл MATLAB). Чаще всего S-функции призваны решать следующие задачи: 5 О создание новых блоков, дополняющих библиотеку SIMULINK; ! О включение ранее созданных программ наязыке С в S-модель; j О описание моделируемой системы в виде системы математических уравнений; | О включение в S-модель средств анимации. | Стандартными аргументами S-функции являются: I ОТ — вектор значений модельного времени; | О X — множество состояний моделируемой системы (непрерывное или дискретное)! О II — вектор входных воздействий; ;1 О FLAG — признак, определяющий формат представления результата S-функциш возможные значения которого приведены в табл. 4.2. | Таблица 4.2. Допустимые значения признака FLAG | FLAG Возвращаемое значение Описание 3 0 Текущее значение модельного времени, начальное состояние системы, моделируемой блокам Инициализация блока S-function | 1 Новое состояние системы Используется для непрерывных систем Я 2 Новое состояние системы Используется для дискретных систем | 3 Значение сигнала S-функция возвращает значение сигнала J на выходе моделируемой системы | 4 Новое значение модельного времени Используется при моделировании с переменным шагом 9 Нет Завершение работы блока S-function V S-функция может также иметь произвольное число дополнительных аргументов,’ назначение которых определяется разработчиком. Примеры S-функций, реализованных в виде М-файлов, имеются в папке MATLAB/ toolbox/simulink/blocks; они могут быть использованы в качестве шаблонов для со- здания собственных S-функций. Блок S-function имеет два параметра настройки (рис. 4.55). О S-function name (имя S-функции) — имя S-функции, которое совпадает с именем содержащего ее М-файла. О S-function parameters (параметры S-функции) — список дополнительных аргумен- тов S-функции. Аргументы в списке разделяются запятыми.
Раздел Functions & Tables 157 Block Paiameters: SFunction | Usei-derinable block: Btod'-srr>aj> be written in M. C ot Fcrttan and must - ' contain to S-functionstandaids. t>,u and Пас ®e automatical^ passed to. s the'$-1unctir^l^$tmuM^'<^^a^^e(rietasmdf*be^>ad»ditTlhe. • 'S-fut'chon parar-etots' field. Рис. 4.55. Окно настройки блока S-function Блок Look-up Table (таблица соответствий) обеспечивает возможность табличного описания произвольной функции. Блок имеет два параметра настройки (рис. 4.56). Рис. 4.56. Окно настройки блока LookUp Table О Vector of input values (вектор входных значений) — последовательность чисел, заключенная в квадратные скобки. Может быть задана либо в виде дискрет- ных значений (например, [1 2 4 7]), либо в виде непрерывного диапазона (на- пример, [0:7.4]). При необходимости каждый элемент вектора (и граница диапа- зона) может быть задан в виде вычисляемого выражения, например [sin(3 )+2, tanh(4)]. О Vector of output values (вектор выходных значений) — вектор значений реализуе- мой блоком функции. Обычно задается также в виде последовательности чисел, заключенной в квадратные скобки, однако возможны и другие способы описа- ния. Например, в варианте настройки блока, показанном на рис. 4.56, вектор вы- ходных значений формируется с помощью библиотечной функции tanh.
158 Урок 4. Библиотеке блоков SIMULINK График функции, описанной с помощью параметров настройки блока, отображается ' внутри блока. •< Блок работает следующим образом. Значение сигнала, поступающего на вход блока, J сравнивается с элементами вектора Vector of input values. Если такой элемент суще-*] ствует, то соответствующее ему значение, заданное с помощью параметра Vector ’ of output values, выдается в качестве выходного сигнала. Если входной сигнал нел совпал ни с одним из элементов Vector of input values, то выполняется линейная! интерполяция между двумя ближайшими к нему элементами; если же значение ] входного сигнала выходит за границы заданного диапазона, то производится экст- ] раполяция по двум первым или двум последним элементам вектора Vector of input] values. ] Если входной сигнал является вектором, то выходной сигнал также является векто-J ром той же размерности. На рис. 4.57 приведен пример такой ситуации. Параметры » блока заданы следующим образом: ' О Vector of input values — [-1 0 1 2]; J О Vectorof output values — [-1 -1 2 0]. | Table Display Рис. 4.57. Пример работы блока LookUp Table при наличии векторного входного сигнала i Блок LookUp Table (2-D) (двумерная таблица соответствий) по назначению и принципу! работы аналогичен блоку LookUp Table, за исключением того, что он позволяет опи-1 сать скалярную функцию двух аргументов (или функцию векторного сигнала, со«| стоящего из двух элементов). Вследствие этого данный блок имеет три параметра?! настройки (рис. 4.58). О Row (строка) — вектор значений первого аргумента. Задается таким же образом, 5 как и параметр Vector of input values блока LookUp Table. Единственное ограниче- ; ние — элементы вектора должны быть упорядочены по возрастанию. * О Column (столбец) — вектор значений второго аргумента. Задается аналогично' предыдущему параметру. j О Table (таблица) — таблица значений функции, реализуемой блоком LookU р Table > (2-D)' Задается в виде последовательности чисел (или вычисляемых выражений), заключенной в квадратные скобки. Значения, относящиеся к разным строкам: таблицы, разделяются точкой с запятой. Количество строк должно быть равно , числу элементов вектора Row, а число элементов в строке — числу элементов вектора Column. Значения векторов Row и Column (то есть значения первого и второго аргументов функции) служат входами в таблицу Table. Если значения аргументов, поступаю- щие на вход блока, не совпадают с элементами векторов Row и Column, то для них
Раздел Math 159 выполняется линейная интерполяция по двум соседним значениям, заданным в па- раметрах блока. Правила формирования выходного сигнала блока LookUp Table (2-D) показаны на рис. 4.59. В приведенном примере параметры блока заданы следующим образом: Э Row — [2 4]; С? Column — [1 6]; Э Table-[10 20; 30 40]. Рис. 4.58. Окно постройки блоке LookUp ТоЫе (2-D) Column Row Рис. 4.59. Пример роботы блока LookUp ТоЫе (2-D) Раздел Math !‘аздел Math (математические блоки) содержит блоки, которые реализуютэлемен- 1 арные (алгебраические и тригонометрические) функции, а также операции мате- ' ।атической логики и могут быть использованы в модели любой системы (рис. 4.60). 1 »лок Abs (абсолютное значение) формирует абсолютное значение входного сигнала * >тот блок не имеет параметров настройки).
160 Урок 4. Библиотека блоков SIMULINK Simulink library Browser Dot Product Gain > sin > > min > MinMax ) floor > Sign AND This is the 'sirrnjlmk3/btath’ block Algebraic Constraint Рис. 4.60. Содержимое раздела Moth, представленное в новом (слево) и старом (спрово) формате Real-lmag to Complex Rounding Function V $ Trigonometric Function Magnitude-Angle to Complex Complex to Magnitude-Angie Logical Operator 5e(u) > Пп(и) > Complex to Real-lmag Solve !®V)-0 ZH Functions & Tables - ф Abs - ф Algebraic Constraint Combinatorial Logic Complex to Magnitude-Angle Complex to Real-lmag Dot Product Gain Logical Operator Magnitude-Angle to Complex Math Function Matrix Gain MinMax Product Real-lmag to Complex Relational Operator Rounding Function Sign Slider Gain Sum ф T rrgonometric Function pj Library: simulink3/Math SI Product Math Function Abs Combinatorial Logic Slider Gain Matrix Gain Relational Operator ф - ф : Ф ф > |u| > Блок Trigonometric Function (тригонометрическая функция) обеспечивает преобра; зование входного сигнала с помощью одной из тригонометрических функций; вы! бор требуемой функции производится в окне настройки параметров блока с помо-( щью раскрывающегося списка. 1 Блок Math Function (математическая функция) позволяет использовать для пре- образования входного сигнала элементарные нетригонометрические функций] (вычисление экспоненты, натурального и десятичного логарифмов, возведение В степень, извлечение квадратного корня и т. д.). Нужная функция выбирается с по- мощью раскрывающегося списка. Блок Rounding Function (функция округления) содержит различные функции округ- ления значения амплитуды входного сигнала; выбор конкретного метода округле- ния выполняется также с помощью раскрывающегося списка. Блок MinMax (минимум или максимум) обеспечивает поиск минимального или максимального элемента входного вектора. Цель поиска задается в окне настроек блока. Второй параметр настройки — число входов блока. Для перечисленных выше блоков имя выбранной функции выводится внутри блока.
Раздел Math 161 Блок Sign (знак) выполняет проверку знака входного сигнала и формирует одно из трехзначений: О -1, если входной сигнал меньше 0; О 0, если входной сигнал равен 0; О 1, если входной сигнал больше 0. Следующая группа блоков раздела Math предназначена для работы с комплексными величинами. Блок Complex to Magnitude-Angle (выделение из комплексного числа амплитуды и фазы)"позволяет получить из входной комплексной величины амплитудно-фазовые характеристики сигнала, а блок Magnitude-Angle to Сото1ехХпреобразование амплитуды и фазы в комплексное число) выполняет обратное преобразование. Блок Complex to Real-Image (выделение мнимой или вещественной части комплексного числа) обес- печивает выделение из входного комплексного сигнала его мнимой или веществен- ной части (в зависимости от настройки параметров блока). Противоположную за- дачу можно решить с помощью блока Real-Image to Complex (создание комплексного числа из его мнимой и вещественной части). Блок Sum (сложение) выполняет суммирование входных сигналов. Он может исполь- зоваться в двух режимах: О сложения входных сигналов (в том числе с разными знаками); О суммирования элементов вектора, поступающего на вход блока. Вводя значения в поле List of sings (список знаков), можно управлять режимами работы блока (рис. 4.61). Рис. 4.61. Окно постройки блоко Sum Значения могут задаваться одним из трех способов: О в виде последовательности знаков + и -, причем число знаков определяет число входов блока, а сами знаки — полярности соответствующих входных сигналов;
162 Урок 4. Библиотека блоков SIMULINK при большом количестве слагаемых их целесообразно разбивать на несколько групп, отделяя одну группу от другой символом | (например: ++|-+); О в виде целой положительной константы (большей 1), значение которой равно числу входов блока, а все входы считаются положительными (например, ввод константы 4 аналогичен вводу «списка знаков» в форме ++++). О ввод значения 1 означает вычисление суммы элементов входного вектора (в этом случае внутри блока выводится символ ?). Примеры использования блока Sum для двух вариантов задания параметра List of sings показаны на рис. 4.62 (сверху — значение ++|-+, снизу — значение 1). Вектор Display Рис. 4.62. Примеры использования блока Sum Два других параметра настройки блока имеют следующий смысл: О раскрывающийся список Icon shape (форма значка) позволяет выбрать форму блока: round (окружность), rectangular (прямоугольник); О флажок Saturate on integer overflow (подавлять переполнение для целых) дает воз- можность задать необходимость «урезания» результата сложения, если он пре- вышает диапазон, установленный для целочисленных значений. Блок Product (умножение) позволяет выполнять умножение или деление нескольких входных сигналов (величин). В качестве параметров настройки могут указываться число входов блока, вид выполняемой операции, а также необходимость «урезания» результата умножения, если он превышает диапазон, установленный для целочис- ленных значений (рис. 4.63). Задание значений этих параметров аналогично настройке блока Su m. В качестве опе- ратора умножения используется символ *, а оператора деления — символ /. Если в качестве значения параметра настройки блока ввести значение 1, то будет вычисляться произведение элементов входного вектора (в этом случае внутри бло- ка выводится символ П). Блок Dot product (свертка) обеспечивает скалярное умножение (свертку) двух век- торов, подаваемых на его входы, как показано на рис. 4.64. Перемножаемые векторы должны иметь одинаковую размерность. Блок не имеет параметров настройки.
Раздел Math 163 Рис. 4.63. Окно настройки блока Product Рис. 4.64. Пример использования блока Dot product Блок Gain (умножитель), в полном соответствии со своим названием, выполняет роль умножителя сигнала, поступающего на его вход. Блок имеет два параметра на- стройки (рис. 4.65). О В поле Gain (множитель) можно ввести числовую константу, переменнную или вычисляемое выражение. Если входной сигнал и множитель относятся к разным типам, то SIMULINK пытается преобразовать тип множителя к типу входного сигнала, а когда это сделать не удается, SI MULINK выдает сообщение об ошибке. Значение параметра Gain выводится внутри блока. О Флажок Saturate on integer overflow имеет то же назначение, что и в двух предыду- щих блоках. Рис. 4.65. Окно настройки блока Gain
166 Урок 4. Библиотека блоков SIMULINK Блок Logical Operator (логический оператор) содержит набор основных логических операторов: О AN D (логическое умножение И); О OR (логическое сложение ИЛИ); О NAND(H-HE); О NOR(WIH-HE); О XOR (сложение по модулю 2); О NOT (логическое отрицание). Выбор требуемого оператора, который отображается внутри блока, выполняется с помощью раскрывающегося списка. Другим параметром настройки блока является поле Number of input ports (число входных портов блока), то есть число аргументов логической операции. Вводимое значение должно быть натуральным числом; допустимое количество входов блока практически не ограничено (за исключением унарной операции логического отри- цания, для которой число входов автоматически устанавливается равным 1). Если операнды являются скалярными величинами, то на выходе блока также фор- мируется скалярный сигнал, значение которого определяется результатом опера- ции — 1, если результат операции «истина» (TRUE), и 0, если результат операции «ложь» (FALSE); при выполнении операций любое отличное от нуля значение опе- рандов интерпретируется как «истина». Если операнды являются векторными величинами, то операция выполняется поэле- ментно; в связи с этим векторные операнды должны иметь одинаковую размерность. Результат операции над векторами является вектором той же размерности, но со- держащим только булевы величины (0 и 1). Результатом операции NOT, выполняе- мой над вектором, также является вектор. Блок Relational Operator (оператор отношения) реализует операции отношения над двумя входными сигналами. Конкретный оператор выбирается при настройке пара- метров блока в раскрывающемся списке: >,<,?,?,== (тождественно), != (не равно) и выводится внутри блока. Если операнды являются скалярными величинами, то на выходе блока также фор- мируется скалярный сигнал, значение которого определяется результатом опера- ции — 1, если результат операции «истина» (TRUE), и 0, если результат операции «ложь» (FALSE). Если операнды являются векторными величинами, то операция выполняется поэле- ментно; в связи с этим векторные операнды должны иметь одинаковую размерность. Результат операции над векторами является вектором той же размерности, но со- держащим только булевы величины (0 и 1). В отличие от блока Logical Operator, блок Relational Operator может работать со сме- шанными операндами, один из которых — скаляр, а второй — вектор. В этом случае операция заключается в поочередном сравнении скалярного операнда с элементами вектора. Результатом операции является вектор.
Раздел Math 167 И, наконец, последний блок данного раздела, которому суждено сыграть очень важ- ную роль в уяснении технологии работы с SIMULINK, — б л о tf|Co m b i п аТЬ ri al LogTg^ (комбинаторика). Этот блок обеспечивает преобразование входного сигнала в соответствии с задан- ной таблицей истинности. По своим функциональным возможностям это очень мощный блок. С его помощью можно описать на уровне «вход-выход» логику рабо- ты любого устройства или системы. Единственное ограничение заключается в том, что входные данные и результат должны быть представимы в форме булевых вели- чин. Напомним, что булева величина принимает только два значения: 1 (истина) или 0 (ложь). На самом деле это очень «мягкое» ограничение, так как любое дей- ствие, утверждение или результат можно оценить по двухбалльной шкале: если дей- ствие произошло (или если некоторое утверждение нам нравится) — ставим ему 1, если же нет — оно получает оценку 0. Например, включение настольной лампы можно описать с помощью законов физи- ки, а можно — с помощью булевых величин: О нажал выключатель (1) — лампа зажглась (1); О не нажал выключатель (0) — лампа не зажглась (0). Еще один вариант возможен, если лампа неисправна: нажал выключатель (1) — лам- па не зажглась (0). При таком подходе описываемое устройство рассматривается как «черный ящик», который при поступлении входного сигнала формирует некоторый выходной сигнал. В кибернетике для описания и исследования работы «черных ящиков» создана спе- циальная теория — теория автоматов. Теперь, возвращаясь к блоку Combinatorial Logic, можно сказать, что он представляет собой обобщенную модель конечного де- терминированного автомата. Для такого автомата заранее известны все возможные значения выходного сигнала, набор которых ограничен. Причем каждое выходное значение однозначно соответствует определенному входному воздействию. На вход блока может подаваться как скалярный, так и векторный сигнал. Скаляр в данном случае интерпретируется как одна булева величина, а вектор — как их сово- купность. При этом любое ненулевое значение входного сигнала соответствует зна- чению «истина». Блок имеет единственный параметр настройки — Truth table (таблица истинно- сти), который представляет собой список возможных выходных значений автомата (рис. 4.70). При задании таблицы истинности необходимо соблюдать два основных правила: О число строк таблицы должно быть равно 2", где п — число элементов (размер- ность) входного сигнала; О входы таблицы считаются заданными. Например, если на вход блока Combinatorial Logic подается векторный сигнал, при- чем п=2, то параметр Truth table представляет собой список из четырех элементов, например такой: [01; 01].
168 Урок 4. Библиотека блоков SIMULINK Рис. 4.70. Окно настройки блока Combinotorial Logic Для приведенного примера полная таблица истинности представлена в табл. 4.3. Таблица 4.3. Таблица истинности для блока Combinatorial Logic Входной сигнал 1-й элемент 2-й элемент Выходной сигнал 0 0 0 0 1 1 1 0 1 1 0 1 Таким образом, параметр Truth table описывает только значения выходного сигнала. Разрядность выходного сигнала, а также значение каждого его разряда выбираются пользователем на основе собственных представлений о логике работы создаваемой S-модели. Рассмотрим содержательный пример, иллюстрирующий особенности использова- ния блока. Предположим, что интересующая вас информация может находиться в Интернете на одном из двух Web-узлов (назовем их для определенности Сайт 1 и Сайт 2). Обнаружив искомую информацию, вы загружаете ее на свой компьютер; если ин- формация имеется на обоих узлах, то в качестве источника выступает Сайт 1 (будем считать, что он отличается лучшей организацией данных). Предположим также, что в любом случае вы должны сообщить о результатах поиска своему шефу. Определив для себя линию поведения, вы начинае те действовать как детерминированный авто- мат. Работу такого автомата можно описать с помощью приведенной ниже таблицы истинности (табл. 4.4). Для рассматриваемой ситуации значение параметра Truth table будет выглядеть сле- дующим образом: [001; 011; 101; 101] Полезно еще раз отметить, что любое ненулевое значение сигналав блоке Combinatorial Logic трактуется как «истина». Это относится как к входному, так и к выходному
Роздел Nonlinear 1 69 сигналу. Поэтому при необходимости приведенная выше таблица истинности могла бы выглядеть несколько иначе. Если информация на узле найдена, то дополнительно можно указать ее объем (например, на первом узле — 4 Мбайт, на втором — 2 Мбайт). Тогда в поле Truth table следует ввести: [001; 021; 401; 401] Таблица 4.3. Описание поиска информации в Интернете в виде таблицы истинности Входной сигнал (наличие информации) Выходной сигнол (результат поиска) Сойт 1 Сайт 2 Зогрузко данных с Сайта 1 Зогрузко донных с Сойто 2 Сообщение шефу 0 0 0 0 1 0 1 0 1 1 1. 0 1 0 1 1 1 1 0 1 Сформированный выходной сигнал может быть выведен в какое-либо «смотровое окно» или передан на другие блоки S-модели. Раздел Nonlinear Несмотря на свое название, раздел Nonlinear (нелинейные системы) содержит доста- точно универсальные блоки, которые могут быть использованы при построении мо- делей систем различных типов. Состав раздела показан на рис. 4.71. Simulink Library Browser Math = 3 S • =.— ф Backlash , ; I • Ф Coulomb L Viscous Friction i •••• ф DeadZone ’ ф Manual Switch ’ - Ф Multiport Switch .- ф Quantizer ф Rate Limiter ' - Ф Relay ; г ф Saturation j с ф Switch This is the 'simulink3/Nonlinear' block Nonlinear Coulomb & Viscous Friction Quantizer Relay Multiport Switch Рис. 4.71. Содержимое роздело Nonlineor, представленное в новом (слево) и в старом (спрово) формате
170 Урок 4. Библиотека блоков SIMULINK Блок Dead Zone (пассивная зона) заменяет значение входного сигнала, лежащее в за- данном диапазоне, нулем и имеет два параметра настройки (рис. 4.72). О Start of dead zone (начало пассивной зоны) — нижняя граница диапазона. О End of dead zone (конец пассивной зоны) — верхняя граница диапазона. Если входной сигнал (U) лежит вне заданного диапазона, то выходной сигнал (OUT) формируется по следующему правилу: О OUT=U-Start of dead zone, если входной сигнал меньше (или равен) нижней границе; О OUT=U-End of dead zone, если входной сигнал больше (или равен) верхней границе. Пример использования блока Dead Zone приведен на рис. 4.73. Рис. 4.73. Пример роботы блоко Deod Zone Start of dead zone = -0.5 End of dead zone = 0.5
Раздел Nonlinear 171 Блок Backlash (люфт) по своему назначению близок блоку Dead Zone: он обеспечива- ет «удержание» входного сигнала в некотором заданном диапазоне. Блок имеет два параметра настройки (рис. 4.74). О Deadband width (ширинадиапазона). О Initial output (начальное значение выходного сигнала) — это значение играет роль середины диапазона; например, если Deadband width=2, Initial output=1,TO нижняя граница диапазона устанавливается равной 2, а верхняя — равной 0. Рис. 4.74. Окно настройки блока Backlash Сигнал на выходе блока (OUT) формируется по следующему правилу: О OUT=Initial output, покавходной сигнал (U) не достигнет одной из границ диапазона; О OUT=U+( Deadband width )/2, если U пересекает нижнюю границу; О OUT=U-( Deadband width )/2, если U пересекает верхнюю границу. Пример использования блока Backlash показан на рис. 4.75. Блок Rate Limiter (ограничитель скорости) предназначен для контроля и ограниче- ния скорости изменения (то есть первой производной) входного сигнала. Значение производной ( rate) определяется из следующего соотношения: rate = [U(i) - 0UT(i-1)]/[T(i) - T(i-1)] Здесь U( i) и T( i) — текущие значения входного сигнала и модельного времени, а OUT (i)и Т(1-1) — значения выходного сигнала и модельного времени на предыдущем шаге моделирования. Значение выходного сигнала определяется на основе сравнения величины rate с ее предельными значениями, заданными в окне настройки блока (рис. 4.76). О Если rate больше параметра R, заданного в поле Rising slew rate (увеличение ско- рости), то выходной сигнал вычисляется так: OUT(i) = AT-R + OUT(1-1)
172 Урок 4. Библиотека блоков SIMULINK Рис. 4.75. Пример роботы блока Bocklash Deadband width = 1 Initial output = 0 Рис. 4.76. Окно постройки блока Rote Limiter О Если rate меньше параметра F, заданного в поле Falling slew rate (снижение скоро- сти), то выходной сигнал вычисляется следующим образом: OUT(i) = ДТ-F + 0UT(i-1) О Если rate находится в промежутке между значениями параметров Rising slew rate и Fallirrg slew rate, то выходной сигнал принимается равным входному: OUT(i) = U(i) Блок Saturation (насыщение) — этоещеодин представитель «блоков-ограничителей». Свои функции он реализует с учетом значений двух параметров: О Upper limit (верхний предел); О Lower limit (нижний предел).
Раздел Nonlinear 173 Оба параметра могут быть заданы либо в форме числовых констант, либо в виде вычисляемых выражений. Окно настройки блока и результат его работы показаны на рис. 4.77. Рис. 4.77. Окно ностройки и результот роботы блоке Soturotion Отдельную группу образуют «блоки-переключатели», то есть блоки, управляющие' направлением передачи сигнала. Таких блоков четыре: О Switch (переключатель); О Manual Switch (ручной переключатель); О Multiport Switch (многовходовый переключатель); О Relay (реле). Блок Switch имеет три входа: два информационных (первый и третий) и один управля- ющий (второй). Логика работы блока состоит в следующем. Если амплитуда сигна- ла, поступающего на 2-й вход, не меньше заданного порогового значения, то на выход блока передается сигнал с 1 -го входа, в противном случае — сигнал с 3-го входа. Блок имеет единственный параметр настройки — Threshold (порог). Он может задаваться либо как числовая константа, либо как вычисляемое выражение. Периодичность срабатывания блока Switch определяется значением параметра Sample time (эталон- ное время) блока, подсоединенного к его управляющему входу. На рис. 4.78 показан пример использования блока Switch (значение параметра Threshold равно 5). Необходимо иметь в виду, что при изменении направления передачи сигнала поло- жение «перемычки» внутри блока не изменяется. Блок Manual Switch не имеет параметров настройки и позволяет «вручную» выби- рать один из двух входных портов, сигнал с которого будет передаваться на выход блока. Для перемещения «перемычки», соединяющей выходной порт блока Manual Switch с входным, необходимо дважды щелкнуть на блоке.
174 Урок 4. Библиотека блоков SIMULINK Const ant2 Рис. 4.78. Пример использования блока Switch Блок Multiport Switch обеспечивает передачу на выход сигнала, поступающего на один из информационных входов. Номер коммутируемого входа равен значению сигнала, подаваемого на управляющий вход блока. Если это значение является дробным числом, то оно округляется до целого по стандартным арифметическим правилам. Исключение составляют два случая: если значение управляющего сигна- ла меньше 1, то оно считается равным 1; если значение управляющего сигнала превы- шает число информационных входов, оно принимается равным наибольшему номе- ру (входы нумеруются сверху вниз). Блок имеет один параметр настройки — Number of inputs (число входов), который устанавливает число информационных входов. Значение параметра может вводить- ся в форме числовой константы или в форме вычисляемого выражения. Блок-диаграмма, поясняющая работу блока, приведена на рис. 4.79. Рис. 4.79. Пример использовония блоко Multiport Switch Блок Relay работает по аналогии с обычным реле: если входной сигнал превышает некоторое пороговое значение, то на выходе блока формируется «разрешающий» сигнал. Блок имеет 4 параметра настройки (рис. 4.80). О Switch on point (точка включения) — пороговое значение, при превышении кото- рого происходит «включение» реле. О Switch off point (точка выключения) — уровень сигнала, при котором реле «вы- ключается».
Раздел Signals & Systems Г5 Рис. 4.80. Окно настройки блока Reloy О Output when on (выход при включенном состоянии) — значение амплитуды «раз- решающего» сигнала. О Output when off (выход при выключенном состоянии)—уровень сигнала на выхо- де реле, когда оно находится в состоянии «выключено». Значения всех параметров блока могут вводиться либо в форме числовых констант, либо в форме вычисляемых выражений. Раздел Signals & Systems По составу элементов раздел Signals & Systems (сигналы и системы) — самый боль- шой и, пожалуй, наиболее полезный для имитационного моделирования раздел библиотеки SIMULINK. Он содержит около 30 блоков (рис. 4.81), которые по назначению условно можно разделить на несколько групп. Первую группу образуют блоки, обеспечивающие управление сигналами, использу- емыми в блок-диаграмме. К таким блокам относятся: О In (входной порт) и Out (выходной порт) — обеспечивают обмен данными между подсистемами модели, а также между моделью и рабочей областью MATLAB; О Bus Selector (селектор шины) — выделяет из группы сигналов один заданный сигнал; О Мих (смеситель) — объединяет входные сигналы в один векторный сигнал; О Dem их (разделитель) — реализует функции, противоположные функциям блока Мих;
176 Урок 4. Библиотека блоков SIMULINK Рис. 4.81. Состав раздела Signals & Systems О Selector (селектор) — выделяет из входного вектора заданные элементы; О Merge (поглотитель) — отбирает из входных сигналов один, значение которого было вычислено последним; О Hit Crossing (индикатор пересечения) — позволяет идентифицировать момент времени, когда входной сигнал «пересекает» некоторое значение. Особенности применения каждого из этих блоков (кроме блоков In и Out, которые описаны в разделе «Меню Simulation» урока 6 «Технология моделирования в среде SIMULINK») будут рассмотрены ниже. Во вторую группу входят блоки, предназначенные для реализации механизма под- систем и обеспечивающие модульное построение S-моделей: О SubSystem (подсистема) — представляет собой «заготовку» для создания подси- стемы — достаточно самостоятельной S-модели более низкого уровня, которая, в свою очередь, может содержать подсистемы произвольного уровня вложенности; О Enable (включатель) и Trigger (триггер) — предназначены для управления логикой работы подсистем S-модели;
Роздел Signals & Systems 177 О Goto Tag Visibility (признак видимости блока передачи), From (принять) и Goto (передать) — используются совместно и предназначены для обмена данными между различными компонентами S-модели с учетом доступности (видимости) этих данных; О Data Store Memory (память для данных), Data Store Read (чтение данных) и Data Store Write (запись данных) — также используются совместно и обеспечивают не толь- ко передачу данных, но и их хранение на интервале моделирования; О Function-Call Generator (генератор вызова функций) — обеспечивает запуск под- ключенных к нему подсистем с заданной периодичностью; О Configurable Subsystem (конфигурируемая подсистема) — реализует функции любого выбранного блока из указанной библиотеки. В данном разделе мы рассмотрим только два последних блока, применение осталь- ных будет описано в уроке 7 «Подсистемы», при изложении технологии создания и использования подсистем. В третью группу можно объединить блоки, имеющие вспомогательное значение и предназначенные, в основном, для повышения эффективности отладки создаваемой S-модели. К таким блокам относятся: О Ground (земля) и Terminator (ограничитель) — используются в качестве «заглушек» для тех портов, которые по какой-либо причине оказались не подключенными к другим блокам S-модели (например, на этапе отладки модели); блок Ground используется как «заглушка» для входных портов, а блок Termi nator — для выход- ных; применение указанных блоков позволяет избежать выдачи интерпретато- ром SIMULINK предупреждения о том, что в S-модели имеются неподключен- ные порты; О IC (начальное состояние) — Initial Condition — позволяет устанавливать произ- вольное начальное состояние входного сигнала; длительность пребывания систе- мы в соответствующем состоянии равна длительности шага моделирования; О Width (длительность) — вычисляет длительность сигнала, поступающего на его вход; вычисленное значение выводится непосредственно внутри блока; О Probe (проверка) — предназначен для просмотра основных характеристик сигна- ла (длительность, тип), атакже величины шага моделирования; О Data Type Conversion (приведение типа данных) — обеспечивет приведение типа сигнала к требуемому; О Model Info (информация о модели) — позволяет контролировать информацию, относящуюся к разработке модели (версия, разработчик и т. п.). Из блоков этой группы более подробные пояснения будут даны только по двум по- следним. Рассмотрим особенности применения наиболее важных из перечисленных выше блоков. Блок Bus Selector выделяет из подсоединенной к его входному порту шины требуе- мый сигнал. Сигнал, подаваемый на вход блока, должен быть сформирован либо с помощью блока Мих, либо с помощью другого блока Bus Selector. Настройка парамет-
178 Урок 4. Библиотека блоков SIMULINK ров блока выполняется с помощью диалогового окна, формат которого существенно отличается от окон настройки других блоков (рис. 4.82). Рис. 4.82. Окно настройки блока Bus Selector Окно содержит два списка и связанные с ними кнопки. Оба списка поддерживают множественный выбор, то есть в каждом из них может быть выбрано более одного элемента (выбор выполняется стандартным образом — щелчком на нужной строке, либо с помощью клавиш управления курсором при нажатой клавише Shift или Ctrl). Первый список — Signals in the bus (сигналы в шине) — отображает сигналы, подава- емые на вход блока по подключенной к нему шине. Если входной сигнал не имеет установленной пользователем метки, то ему присваивается стандартная метка Signal с соответствующим порядковым номером. Кнопка Select» (выделить) позволяет копировать сигнал (или несколько сигналов одновременно), выделенный в списке Signals in the bus, во второй список — Selected signals (выделенные сигналы). Выде- ленные сигналы — это сигналы, которые, собственно, и будут передаваться на выход блока. Исходя из числа элементов во втором списке, SIMULINK определяет число выходных портов блока (в исходном состоянии блока их два). Новые выходные порты отображаются возле блока после щелчка на кнопке Apply (применить), распо- ложенной в нижней части окна. После соединения выходных портов блока Bus Selector с последующими блоками модели метки выходных сигналов отображаются
Раздел Signals & Systems 179 возле соответствующих линий связи. Фрагмент блок-диаграммы, иллюстрирующий применение блока Bus Selector, приведен на рис. 4.83. Selector Рис. 4.83. Фрагмент блок-диаграммы, содержащий блок Bus Selector Пользователь может изменить порядок размещения элементов (выходных сигналов) в списке Selected signals, используя кнопки Up (вверх) и Down (вниз), расположенные слева от списка. Кнопка Remove (удалить) позволяет удалить выделенный элемент (сигнал) из этого списка. Изменение расположения сигналов в списке Selected signals приводит к соответствующему автоматическому перераспределению сигналов между выходными портами блока. При этом порядковые номера, используемые в метках сигналов, остаются прежними. Сохраняются также и связи, установленные для данного сигнала; это означает, что блоки, подсоединенные к блоку Bus Selector, «ориентиру- ются» не на номер выходного порта блока, а на подаваемые на эти блоки сигналы; например, если в списке Selected signals сигнал Signal3 сделать первым, то приведен- ный выше фрагмент блок-диаграммы будет выглядеть так, как показано на рис. 4.84. Selector Рис. 4.84. Фрагмент блок-диагроммы после изменения списка Selected signols Под окном списка расположен флажок Muxed output (объединить выходные сигналы выход), позволяющий изменить режим работы блока Bus Selector. Если он установ- лен, то все выходные сигналы объединяются в один векторный, а у блока остается только один выходной порт, соответствующий первому в списке сигналу (для рас- сматриваемого примера — это сигнал Signal3, как показано на рис. 4.85).
180 Урок 4. Библиотека блоков SIMULINK Рис. 4.85. Работо блоко Bus Selector при установленном фложке Muxed output Блок Mux объединяет входные величины в один линейный вектор. При этом вход- ные величины могут быть как скалярными, так и векторными. Размерность резуль- тирующего вектора равна суммарному количеству элементов, поступающих на вход- ные порты блока. Например, если на 1-й вход блока подается матрица размером 2x2, содержащая четыре элемента: [[ 1,4],[6,7]], на 2-й и 3-й входы — константы 2 и 3 соот- ветственного выходной вектор будет выглядеть так: [1 4 6 7 2 3] (рис. 4.86). Рис. 4.86. Пример использовония блоко Мих Блок Мих имеет два параметра настройки (рис. 4.87). О Number of inputs (число входов) — определяет число входных портов блока (вы- ходной порт всегда только один). Значение данного параметра может быть также задано в виде списка меток входных сигналов, например: Вход1, Вход2, ВходЗ. По умолчанию входным сигналам назначаются метки Sig n a IN, где N — номер порта (нумеруются сверху вниз). Если выходной сигнал блока Мих поступает затем на блок Bus Selector, то установленные метки сигналов используются в окне настро- ек этого блока. О Раскрывающийся список Display option (способ отображения) позволяет выб- рать рисунок блока: • bar (полоса) — блок изображается в виде вертикальной черной полосы (как показано на рис. 4.86); • signals (сигналы) — блок изображается в виде прямоугольника (как большин- ство других блоков), в котором выведены метки входных сигналов; • попе (нет) — метки сигналов не выводятся.
Раздел Signals & Systems 181 Рис. 4.87. Окно настройки блоко Мих Внесенные изменения отображаются на блоке после щелчка на кнопке ОК или Apply. Блок Demux выполняет функции, противоположные функциям блока Мих: разделяет входной вектор на заданное число компонент. Данный блок имеет единственный параметр настройки, который называется Number of outputs (число выходов). Его значение может быть задано двумя описанными ниже способами. О С помощью целочисленной константы, непосредственно задающей число выход- ных портов блока. Поскольку соотношение между размерностью входного вектора и числом выходов блока может быть различным, разработчику модели необхо- . димо заранее самому определять размерность выходного вектора. При этом сле- дует учитывать следующие особенности работы блока Demux: • если размерность входного вектора (М) равна значению параметра Number of outputs, то есть числу выходов блока (N), то на всех выходах блока форми- руются скалярные величины — входной вектор просто распадается на отдель- ные элементы; • если размерность входного вектора превышает число выходов блока (M>N), то на первых (п-1) выходах формируются векторы, размерность которых равна целой части отношения М/N, а размерность вектора на последнем выходе равна остатку от деления; • если M<N, то при запуске модели выдается сообщение об ошибке Port width mismatch (несоответствие размерности портов). О С помощью вектора (последовательности целых чисел, заключенной в квадрат- ные скобки). В этом случае число выходных портов блока равно числу элементов вектора, а размерность выходных сигналов определяется следующим образом: • если все элементы вектора N umber of outputs являются положительными чис- лами, то их значение определяет размерность соответствующего выходного сип 1ала; при этом сумма элементов должна быть равна размерности входного вектора, например, параметр [12 2] означает, что блок Demux имеет три вы- ходных порта, сигнал на первом из них является скаляром, а сигналы на вто- ром и третьем — векторами, содержащими по два элемента (подразумевается, что входной сигнал состоит из 5 элементов);
182 Урок 4. Библиотеке блоков SIMULINK • если некоторые элементы вектора Number of outputs равны -1, это означает, что размерность сигналов на соответствующих выходах определяется дина- мически, по «остаточному принципу»; например, параметр [1-13] означает, что блок De ш их имеет три выходных порта, сигнал на первом из них является скаляром, сигнал на третьем содержит три элемента, размерность сигнала на втором определяется как разность ширины входного сигнала и суммы элемен- тов двух других выходных сигналов: N 3=5- (1 +3); • если все элементы вектора Number of outputs равны -1, то размерность сигна- лов на всех выходах определяется динамически, как в том случае, когда значе- ние параметра Number of outputs задано скалярной величиной. При перетаскивании блоков Bus Selector, Mux и Demux из окна библиотеки в поле блок-диаграммы SIMULINK удаляет их названия, которые при необходимости могут быть восстановлены с помощью команды Show Name (показать имена) меню Format (формат) окна блок-диаграммы (подробнее команды форматирования опи- саны в следующем разделе). Блок Selector выбирает во входном векторе и передает на выход только те элементы, номера которых указаны в параметрах настройки блока. Блок имеет два параметра настройки (рис. 4.88). О Elements (элементы) — список номеров элементов входного вектора, подлежа- щих отбору. О Input port width (ширина входного порта) — размерность входного вектора, кото- рый может быть «просеян» с помощью данного блока. Значение этого параметра обязательно должно совпадать с числом элементов входного вектора. Рис. 4.88. Пример установки порометров блоке Selector Если на вход блока подается матрица, то в списке Elements используется сквозная нумерация элементов, причем индекс изменяется построчно. Например, если на вход блока поступает матрица размером 3x4, то ее элементы будут иметь номера с 1 -го по 12-й, причем номера 1 ...3 будут принадлежать элементам первой строки, но- мера 4..6 — элементам 2-й строки и т. д.
Раздел Signols & Systems 183 На рис. 4.89 показана работа блока Selector, выполняющего «просеивание» входного массива, содержащего две строки (в первой — три элемента, во второй — два). На выход блока, в соответствии с его параметрами настройки (см. рис. 4.88), передают- ся только два элемента — первый и четвертый. Selector Рис. 4.89. Пример работы блока Selector Блок Merge выделяет из поступающих на его входы сигналов один, значение которо- го было вычислено последним. Блок имеет два параметра настройки (рис. 4.90). О Number of inputs (количество входов) — определяет число входных сигналов, ко- торое может быть подано на входы блока. Для корректной работы блока все вход- ные сигналы должны иметь одинаковую размерность (хотя при несоблюдении этого правила сообщение об ошибке не выдается). О Initial output (начальное значение выходного сигнала)—задает значение сигнала, которое должно выдаваться на выход блока в момент его инициализации. Если значение параметра не задано, то на выход блока выдается входной сигнал, значе- ние которого было вычислено последним. Рис. 4.90. Окно настройки параметров блока Merge Блок Hit Crossing позволяет идентифицировать момент времени, когда входной сиг- нал «пересекает» некоторое заданное значение: при появлении такой ситуации на выходе блока формируется единичный сигнал. Блок Hit Crossing во многих случаях оказывается весьма удобным средством управления логикой работы S-модели. Он имеет три параметра настройки (рис. 4.91). О Hit crossing offset (порог пересечения) — определяет значение, «пересечение» ко- торого необходимо идентифицировать.
184 Урок 4. Библиотека блоков SIMULINK Рис. 4.91. Окно настройки блока Hit Crossing О Раскрывающийся список Hit crossing direction (направление пересечения) — позволяет указать направление «пересечения», которое интересует разработчика модели: • rising (подъем); • falling (спад); • either (любой). О Флажок Show output port (показать выходной порт) — позволяет выбрать фор- мат блока. При одновременном выполнении условий, задаваемых параметрами Hit crossing offset и Hit crossing direction, на выходе блока формируется единичный импульс. Его длительность определяется значением параметра Sample time (эталонное время) блока, предшествующего в модели блоку Hit crossing. Если этот параметр отсутствует, то еди- ничный сигнал на выходе блока Hit crossing остается до его следующего срабатывания. Блок Function-Call Generator обеспечивает запуск подключенных к нему подсистем с заданной периодичностью. Блок имеет единственный параметр настройки — Sample time, который определяет периодичность инициализации управляемых подсистем (рис. 4.92). Если один блок Function-Call Generator должен управлять запуском нескольких под- систем, то он используется в паре с блоком Demux. В этом случае последовательность инициализации подсистем определяется порядковым номером выходного порта блока Demux, к которому подключена данная подсистема. Например, в блок-диаг- рамме, приведенной на рис. 4.93, первой будет выполняться подсистема Subsystem 1, второй — Subsystem?, и последней — Subsystems. ЗАМЕЧАНИЕ Подсистемы, подключоемые к блоку Function-Call Generator (или к связанному с ним блоку Demux), должны быть определенного типа — function-call subsystem. Такие подсистемы характеризуются двумя формальными признаками: они со- держат блок Trigger, для катарога, в свою очередь, установлен тип function- call. Подробнее о создании управляемых подсистем рассказано в разделе «Управляемые подсистемы» урока 7 «Подсистемы».
Раздел Signols & Systems 185 Рис. 4.92. Окно настройки блока Function-Call Generator SubSystem3 Рис. 4.93. Пример использования блока Function-Call Generator Блок Configurable Subsystem позволяет динамически изменять работу S-модели за счет «переназначения» функций этого блока. Другими словами, данный блок может выполнять функции любого выбранного блока из указанной библиотеки SIMULINK, либо из собственной библиотеки пользователя. В исходном состоянии блок не име- ет ни входных, ни выходных портов, а его окно настройки содержит единственный параметр — Library name (имя бибилиотеки), который позволяет указать раздел биб- лиотеки, блоки которого будут «возлагать свои функции» на блок Configurable Subsystem. Имя раздела библиотеки может указываться двумя способами, в зависимости от того, является ли он частью стандартной библиотеки, или создан пользователем. В первом случае указывается так называемый относительный путь доступа, например Simulink3/Discrete (как показано на рис. 4.94). Первая часть пути (в данном случае Simulink3) — это имя mdl-файла, содержащего основную библиотеку SIMULINK. Его можно увидеть в нижнем поле окна просмотра библиотеки — Simulink Library Brouser, о котором было рассказано в разделе «Начало работы». Вторая часть пути
186 Урок 4. Библиотека блоков SIMULINK (в приведенном примере — Discrete) — это собственно название раздела, которое должно вводиться с учетом символов верхнего и нижнего регистров, а также разде- лителей, имеющихся в названии. - Lontiguraae ъьмуяет'............- This block maybe configured to represi of the top-level block? and subsystems ussr-specfred Simulink Ltbtaty Libtaonjua* — I simulink3/D iscrete / Configurable Subsystem Рис. 4.94. Окно настройки блока Configurable Subsystem Во втором случае в качестве значения параметра Library па те достаточно указать только i имя mdl-файла, который содержит библиотеку, созданную пользователем. Вместе с тем, при работе с пользовательской библиотекой необходимо предварительно сделать текущей папку, в которой расположена данная библиотека. Такая настройка выполня- ется с помощью окна Path Browser (просмотр файловой системы), которое было рас- смотрено в разделе «Команда Set Path» урока 3 «Знакомство с пакетом MATLAB». После ввода параметра Library name и щелчке на кнопке ОК (или Apply) в окне на- стройки блока Configurable Subsystem ему автоматически ставится в соответствие ' первый в списке блок указанного раздела. В разделе Discrete (дискретные системы) таким блоком является блок Discrete Transfer Fen (дискретная передаточная функция). В результате блок Configurable Subsystem заменяется указанным блоком и меняется формат окна настройки параметров блока (чтобы его открыть, следует дважды щел- кнуть на блоке в окне модели). Далее в раскрывающемся списке Block choice (выбор блока) достаточно выбрать требуемый блок и снова щелкнуть на кнопке ОК (или Apply). Новый формат окна сам по себе также является настраиваемым и помимо раскрыва- ющегося списка Block choice содержит параметры выбранного в этом списке блока. На рис. 4.95 показаны два формата окна настройки блока Configurable Subsystem: пер- вый (слева) в исходном состоянии и второй (справа) — после выбора в раскрываю- щемся списке Block choice блока Unit Delay (задержка сигнала). Q>) ЗАМЕЧАНИЕ После выбора конкретного раздела библиотеки и щелчке на кнопке ОК уста* навливается жесткая связь между данным экземпляром блока Configurable Subsystem и выбранным разделом. Изменить раздел можно только с помощью команды set_param, вводимой в командном окне MATLAB. В связи с этим в некоторых случаях (когда может потребоваться быстро сменить раздел) удоб- нее воспользоваться кнопкой Apply. При этом у пользователя остается воз- можность работы с обоими форматами окна настройки блока: с исходным, в котором может вводиться новое имя раздела, и модифицированным, настро- енным на конкретный раздел.
Раздел Signals & Systems 187 Рис. 4.95. Формат окна настройки блока Configurable Subsystem после выбора конкретного блока в разделе Discrete Если блок, выбранный в списке В lock choice, является подсистемой, то в окне настрой- ки блока Configurable Subsystem отображается флажок Open subsystems when selected (открыть подсистему при выборе), показанный на рис. 4.96. Когда этот флажок уста- новлен, то одновременно с открытием окна настройки блока Configurable Subsystem открывается и окно блок-диаграммы подсистемы. Рис. 4.96. Формат окна настройки Configurable Subsystem для блока-падсистемы Блок Data Type Conversion обеспечивает преобразование типа входного сигнала в со- ответствии с параметрами настройки блока. Таких параметров два (рис. 4.97). О Раскрывающийся список Data Туре (тип данных) — позволяет выбрать тип, к ко- торому будет приведен входной сигнал: • auto (авто) — тип выходного сигнала устанавливается автоматически, в соот- ветствии с типом входного порта блока, подключенного к блоку Data Туре Conversion;
188 Урок 4. Библиотека блоков SIMULINK • double (удвоенная точность) — формат данных с плавающей точкой; • single (одинарная точность) —формат данных с плавающей точкой; • 1'п18(цслые8) —целочисленный формат; для хранения значения отводится 8 раз- рядов (1 байт), из которых один используется для представления знака числа; • uint8 (беззнаковые 8) — беззнаковый целочисленный формат; для хранения значения отводится 8 разрядов (1 байт); • intlб (целые 16) — целочисленный формат; для хранения значения отводится 16 разрядов (2 байта), из которых один используется для представления зна- ка числа; • uintl6 (беззнаковые 16) — беззнаковый целочисленный формат; для хране- ния значения отводится 16 разрядов (2 байта); • 1 nt32 (целые 32) — целочисленный формат; для хранения значения отводится 32 разряда (4 байта), из которых один используется для представления знака числа; • uint32 (беззнаковые 32) — беззнаковый целочисленный формат; для хране- ния значения отводится 32 разряда (4 байта); • boolean (булевы) — тип данных, используемый для представления логичес- ких значений (TRUE, FALSE); формат boolean является частным случаем формата uint8. ЗАМЕЧАНИЕ Все перечисленные выше типы данных являются «встроенными» типами MATLAB, та есть они используются при выполнении вычислений на уровне аппаратной части компьютера, а не для описания типов сигналов, фигурирующих в модели. О Флажок Satu rate on integer overflow (подавлять переполнение для целых) — позво- ляет ввести дополнительные ограничения на значение выходного сигнала (этот параметр используется только для целочисленных типов данных, а также для формата auto). Если флажок установлен, то значение, превышающее по абсолют- ной величине диапазон, допустимый для данных выбранного типа, «усекается» до максимально возможного значения, а в командном окне MATLAB выводится соответствующее предупреждение. Если флажок снят, то в случае переполнения значение выходного сигнала не определено (точнее, оно зависит от характерис- тик аппаратной части вашего компьютера). В качестве иллюстрации к изложенному на рис. 4.98 показаны результаты работы блока Data Type Conversion с установленным (сверху) и снятым (снизу) флажком Saturate on integer overflow (формат uint8 поддерживает диапазон значений от 0 до 255 включительно). Необходимо отметить, что для всех блоков, входящих в состав основной библиоте- ки SIMULINK, по умолчанию поддерживается работа с типом данных double. Вмес- те с тем, многие блоки могут работать и с данными других типов, выполняя при не- обходимости их приведение к требуемому типу. В табл. 4.4 приведен список таких блоков с соответствующими пояснениями.
Раздел Signals & Systems 189 Рис. 4.97. Окно настройки блоко Data Type Conversion Conversion Conversion Рис. 4.98. Результаты работы блоко Data Type Conversion Таблица 4.4. Блоки, поддерживающие работу с несколькими типами данных Блок Поддерживаемые типы данных Combinatorial Logic Принимает и выводит данные типа boolean, если разрешен соответствующий режим; иначе выводит сигнол типа double Constant Data Type Conversion Выводит вещественный или комплексный сигнал любого типа Принимает и выводит вещественный или комплексный сигнал любого типа Demux Принимает векторный сигнол смешанного типа (то есть элементы вектора могут относиться к розничным типам данных) Display Enable Принимает вещественный или комплексный сигнал любого типа Передает на входной порт соответствующей подсистемы сигнал типа boolean или double From Тип выходного сигнала определяется параметрами соответствующего блока Goto From Workspace Тип выходного сигнала определяется типам данных, считываемых из рабочей области Gain Принимает вещественный или комплексный сигнал любого типо, зо исключением boolean Goto Ground Принимает вещественный или комплексный сигнал любого типа Выводит нулевой сигнал, тип которого определяется типом сигнало но выходе связонного блоко Hit Crossing Принимает сигнол типа double, выдает сигнал типо boolean, если разрешен соответствующий режим; иначе выводит сигнал типа double (продолжение)
190 Урок 4. Библиотека блоков SIMULINK Таблица 4.4. (продолжение) Блок Поддерживаемые типы данных Integrator На информационные порты принимает и выводит сигнал типа double; на управляющий парт принимает сигнал типо double или boolean Logical Operator Принимает и выводит сигнал типа boolean, если разрешен соответствующий режим; иначе выводит сигнал типа double Manual Switch Принимает вещественный или комплексный сигнал любого типа; все входные сигналы должны быть одного типа Memory Merge Multiport Switch Принимает вещественный или комплексный сигнал любого типа Принимает вещественный или комплексный сигнал любого типа На управляющий вход принимает вещественный сигнал любого типа, кроме boolean; на остальные входы принимает вещественный или комплексный сигнал любого (на одного и того же) типа; тип выходного сигнала совпадает с типом входных сигналов Mux Принимает вещественные или комплексные сигналы любого типа, в там числе смешанные векторные сигналы Product Принимает вещественные или комплексные сигналы любого типа, кроме boolean; все входные сигналы должны быть одного типа Relational Operator Принимает вещественный или комплексный сигнал любого типа, при этом все входные сигналы должны быть одного типа; выводит сигнал типа boolean, если разрешен соответствующий режим; иначе выводит сигнал типа double Scope Selector Принимает вещественный или комплексный сигнал любого типа Принимает вещественный или комплексный сигнал любого типа; тип выходного сигнала определяется типом входного Sum Принимает вещественный или комплексный сигнал любого типа; при этом все входные сигналы должны быть одного типа; тип выходного сигнале определяется типам входных сигналов Switch На информационные порты (1 и 3) принимает и выводит сигналы любого [но одного и тога же| типа; на управляющий порт принимает сигнал типа double или boolean Terminator To Workspace Trigger Принимает вещественный или комплексный сигнал любого типа Принимает вещественный или комплексный сигнал любого типа Передает на входной порт соответствующей подсистемы сигнал типа boolean или double Unit Delay Width Принимает вещественный или комплексный сигнал-любого типо Принимает вещественный или комплексный сигнал любого типа, в том числе смешанный векторный Zero-Order Hold Принимает вещественный или комплексный сигнол любого типа Блок Model Info играет роль своеобразного информационного окна, в котором ото- бражаются динамически обновляемые данные о текущей версии блок-диаграммы (S-модели). Такими данными, в частности, могут быть дата создания, автор, номер версии и т. п. Перечень и форма представления отображаемых данных устанав- ливается с помощью окна настройки параметров блока, формат которого приведен на рис. 4.99. О Поле Editable text (редактируемый текст) отображает перечень регистрируемых данных о модели, а также дополнительные текстовые комментарии. Информа- ция, представленная в этой текстовой области, будет выведена внутри блока Model Info.
Роздел Signals & Systems 191 Рис. 4.99. Окно ностройки блока Model Info О Список Model properties (свойства модели) содержит полный перечень данных о модели, которые могут отображаться с помощью блока Model Info. Для копирова- ния выделенного элемента списка в поле Editable text следует щелкнуть на распо- ложенной справа от списка кнопке со стрелкой. О Список сведений о модели формируется и обновляется с помощью внешнего (по отношению к MATLAB) инструмента управления версиями. Данный список появляется в окне настройки блока Model Info только после выбора конкретного инструмента. Название списка и его содержимое также зависят от выбранного инструмента. Например, на рис. 4.99 такой список называется Properties (свой- ства) и содержит перечень данных, формируемых программой управления вер- сиями Microsoft Visual SurfaceSafe (она входит в состав пакета Microsoft Visual Studio). Копирование элементов списка в поле Editable text выполняется также с помощью расположенной рядом кнопки. О Раскрывающийся список Horizontal text alignment (горизонтальное выравнива- ние текста) позволяет выбрать способ выравнивания информации, отображае- мой в блоке Model Info: по левому краю, по правому краю или по центру. О Если снят флажок Show block frame (показывать рамку блока), то информация выводится как бы непосредственно в поле блок-диаграммы. Такой вариант удобен в тех случаях, когда заранее неизвестна площадь, необходимая для размещения информации. Как было сказано выше, отображаемая блоком Model Info информация, которая сна- чала заносится в поле Editable text, подразделяется на два вида: динамически обнов-
192 Урок 4. Библиотека блоков SIMULINK ляемую и статическую (текстовые комментарии). В частности, строка Model Inf о — это пример текстового комментария, который отображается в исходном состоянии в качестве названия блока. Эту строку можно дополнить, заменить или убрать совсем. Любая статическая информация отображается блоком Model Info точно в таком же виде, как она выглядит в поле Editable text. В отличие от нее, динамически обновляемая информация представляется в поле Editable text ссылками на переменные, которые ее содержат. Ссылка имеет вид %<имя переменному. Например, конструкция %<Created> означает, что в указанной позиции будет выведено содержимое переменной С reated, в которой хранится дата создания S-модели. В качестве примера на рис. 4.100 при- веден фрагмент поля Editable text, а рядом — соответствующий блок Model Info. Рис. 4.100. Отображение статической и динамической информации блоком Model Info Ссылки создаются автоматически при копировании соответствующих пунктов списков в поле Editable text. Значения некоторых переменных также генерируются автоматически (в частности, дата создания модели и номер версии), однако среди них есть такие, значения которых разработчик должен указать сам (например, све- дения о себе). Для работы с такими переменными, а также для указания некоторых дополнительных параметров блока Model Info используется специальное диалоговое окно, которое открывается по команде Model Properties (свойства модели) меню File (файл) окна блок-диаграммы модели. Окно содержит три вкладки: Model Properties (свойства модели), Options (параметры) и History (журнал). На вкладке Model Properties представлены следующие параметры (рис. 4.101). О В строке Model version (версия модели) после первой записи файла на диск ото- бражается номер версии модели. Первая версия имеет по умолчанию номер 1.1. При очередной записи модели на диск вторая цифра номера увеличивается на 1. Изменить формат номера версии можно на вкладке Options, которая описана ниже. О В поле Creator (создатель) можно указать (или изменить) сведения о создателе модели. О В поле Created (дата создания) можно просмотреть (или скорректировать) дату и время создания модели. О В поле Model description (описание модели) можно создать развернутый тек- стовый комментарий к модели (введенный текст сохраняется в переменной Description).
Роздел Signals & Systems 193 Рис. 4.101. Вкладка Model Properties Вкладка Options содержит следующие параметры (рис. 4.102). О Раскрывающийся список Configuration manager (инструмент управления конфи- гурацией) позволяет выбрать внешний инструмент управления версиями (выбор, сделанный в этом списке, влияет на формат окна настройки блока Model Info). • Default (none) (по умолчанию (отсутствует)) — внешняя программа управле- ния версиями не используется (этот вариант установлен по умолчанию); • Microsoft Visual SurfaceSafe; • PVCS; • RCS. Рис. 4.102. Вклодко Options
194 Урок 4. Библиотека блоков SIMULINK О Поле Model version format (формат версии модели) позволяет изменять значение 1 и формат номера версии модели. При сохранении тега %<AutoInc rement: > npupa^rj щение номера версии выпол няется автоматически, как было описано выше. , • О Поле "Modified by" format (формат имени автора последней модификации) предназ-I начено для указания формата вывода имени лица, вносившего последние измет 1ения j в модель. Может быть введена произвольная последовательность символов. При ч сохранении тега %<Auto> соответствующие данные берутся из переменной среды USEO О Поле "Modified date" format (формат даты последней модификации) служит для^ указания формата даты последнего изменения модели. Может быть введена про-J извольная последовательность символов. При сохранении тега %<Aiito> соответ-1 ствующие данные берутся от системного таймера. J Вкладка History позволяет просматривать и корректировать информацию относи-| тельно последних изменений модели (рис. 4.103). 1 О Last modified by (автор последней модификации). О Last modified date (дата последней модификации). О Modified history (журнал изменений) — протокол изменений, вносившихся в мо-, Ц дель (возможно, с дополнительными пояснениями). м О Способ ведения журнала изменений выбирается с помощью раскрывающегося списка Modified history update (обновление журнала изменений), содержащего я два пункта: I • Don't Prompt (без приглашения) — дополнение автоматически генерируемых I комментариев не поддерживается (стандартный комментарий содержит дату 1 и время создания, а также номер версии); j • Prompt For Comments When Save (предлагать ввести комментарий при сохране- j нии) — при сохранении модели предлагается ввести комментарий^ версии.
Общие свойство блоков 195 Если выбран второй пункт, то при очередном сохранении модели открывается диа- логовое окно, с помощью которого стандартный комментарий может быть скоррек- тирован или дополнен (рис. 4.104). Рис. 4.104. Окно комментария к последнему изменению Чтобы созданный комментарий был помещен в поле Modified history навкладке History, необходимо выполнить описанную ниже процедуру. 1. Установить флажок Include "Modified comment" in "Modified history" (включить ком- ментарий в журнал изменений). 2. Щелкнуть на кнопке Save (сохранить). Практика показывает, что описанные выше средства управления версиями, включен- ные в состав SIMULINK 3, существенно повышают технологичность процесса созда- ния сложных S-моделей, состоящих из отдельных компонентов, особенно если в их разработке принимает участие несколько человек. Общие свойства блоков В процессе знакомства с библиотекой SIMULINK вы могли убедиться, что практи- чески каждый блок, входящий в ее состав, имеет собственные параметры настройки, перечень которых определяется назначением блока. Наряду с этим все блоки, включенные в S-модель, снабжены дополнительными атрибутами, относящимися, в основном, к пользовательскому интерфейсу модели (то есть к организации взаимо- действия пользователя с блок-диаграммой). Такими атрибутами являются: О дополнительный текстовый комментарий к блоку; О функция открытия блока, выполняемая при двойном щелчке на блоке; такая функция представляет собой либо программу на языке MATLAB, хранящуюся в одноименном М-файле (например, это может быть одна из библиотечных функ- ций), либо другое допустимое выражение MATLAB (например, 2+2); О перечень параметров, отображаемых внутри блока.
196 Урок 4. Библиотеке блоков SIMULINK Кроме того, для каждого блока может быть задан его приоритет и специальная тек- стовая метка — тег. Установка значений всех перечисленных атрибутов выполняется с помощью диалого- вого окна, которое открывается при выборе команды Block Properties (свойстваблока) в меню Edit (правка) блок-диаграммы (рис. 4.105). Обратите внимание, что в строке заго- ловка окна Block Properties отображается не библиотечное имя блока, а имя, присвоенное ему разработчиком модели (если имя не изменялось, оно совпадает с библиотечным). I Рис. 4.105. Окна установки дополнительных параметров блока Окно Block Properties содержит следующие элементы интерфейса. О Description (описание) — поле ввода дополнительного текстового комментария к блоку. О Priority (приоритет) — поле ввода значения приоритета блока, которым может быть любое целое число (в том числе нуль и отрицательное число). Более высокому приоритету соответствует меньшее по абсолютному значению число. Блок с наи- высшим приоритетом выполняется раньше, чем блоки с более низкими приори- тетами, но не обязательно ранее тех блоков, для которых приоритет не назначен. Приоритет может быть назначен только для не виртуальных блоков (этот термин будет пояснен позже).
Общие свойство блоков 197 О Тад (тег) — поле ввода текстовой метки (тега) блока. О Open function (функция открытия) — поле ввода функции открытия блока. Со- ответствующее выражение MATLAB вводится в том же виде, в котором оно мог- ло бы быть введено в командном окне MATLAB, например, ans+2. О Attributes format string (строка атрибутов форматирования) — поле ввода атри- бутов форматирования. В поле указывается перечень параметров блока, которые должны отображаться рядом с именем блока. Строка атрибутов форматирова- ния представляет собой произвольную последовательность символов и конструк- цию вида %<параметр>, которая в блок-диаграмме заменяется конкретным значени- ем указанного параметра. Например, строка Step time=%<Time> позволяет вывести в окне блок-диаграммы значение параметра Time с сопроводительной надписью Step time=. Если требуется вывести значения нескольких параметров, причем каждого на отдельной строке, то в строке атрибутов форматирования необходи- мо использовать символ конца строки \п. На рис. 4.106 показан пример исполь- зования строки атрибутов форматирования. Рис. 4.106. Пример использования строки атрибутов форматирования ЗАМЕЧАНИЕ Названия параметров блоков, используемые в диалоговых окнах настройки, дале- ко не всегда совпадают с именами переменных, в которых хранятся значения этих параметров. Для получения информации аб именах этих переменных мажна использовать команду де1_рагагп('имя_модели/имя_блока','ОЬ|ес(Рагате1ег5), введя ее в командном окне MATLAB. Виртуальные и невиртуальные блоки Все блоки основной библиотеки SIMULINK подразделяются на две категории: вир- туальные и не виртуальные. Различие между ними состоит в том, что не виртуаль- ные блоки непосредственно участвуют в вычислениях, изменяя значение входных величин, а виртуальные играют вспомогательную роль, обеспечивая, в основном, графическое представление тех или иных аспектов блок-диаграммы. Кроме того, для виртуальных блоков отсутствуют ограничения на тип входных сигналов. Вместе
198 Урок 4. Библиотеке блоков SIMULINK с тем, виртуальные блоки лишены некоторых возможностей, доступных их невир- туальным собратьям (например, для них нельзя задать приоритет). Среди блоков SIMULINK есть и такие, которые в одних случаях ведут себя как виртуальные, а в других — как невиртуальные. Такие блоки называются условно виртуальными! В табл. 4.5Ттриведен список виртуальных и условно виртуальных блоков. Таблица 4.5. Список виртуальных и условна виртуальных блоков Блок Условия виртуальности блока Bus Selector Data Store Memory Demux Enable Port From Goto Goto Tag Visibility Ground Inport Всегда виртуальный - ' Всегда виртуальный Всегда виртуальный Всегда виртуальный Всегда виртуальный Всегда виртуальный Всегда виртуальный Всегда виртуальный Всегда виртуальный, за исключением случаев, когда блок входит в состав управляемой подсистемы и непосредственно связан с блоком Outport Mux Outport Selector Subsystem Terminator Trigger Всегда виртуальный Виртуальный, если находится внутри подсистемы Всегда виртуальный Виртуальный, если подсистема не является управляемой Всегда виртуальный Виртуальный, если не используется era выходной порт Что нового мы узнали? 0 Создание блок-диаграмм в среде SIMULINK основано на использовании технологии «drag-and-drop» — «перетащииоставыхВсоставблок-диаграммымогутбыть включе- ны блоки из любого раздела библиотеки или относящиеся к ее расширениям. 0 Номенклатура блоков, входящих в состав основной библиотеки SIMULINK, обеспечивает возможность моделирования динамических систем всех возмож- ных типов: дискретных, непрерывных, линейных, нелинейных и т. д. 0 Пользователь может выполнять как индивидуальную настройку параметров отдель- ных блоков, так и устанавливать параметры блок-диаграммы в целом, в том чис- ле способ изменения модельного времени и метод расчета состояний системы. 0 В составе SIMULINK имеются средства управления версиями блок-диаграмм, что обеспечивает повышение технологичности процесса разработки, в том числе при коллективной реализации проектов.
О) УРОК Дополнительные библиотеки блоков □ Библиотека Simulink Extras □ Наборы блоков □ Библиотека DSP Blockset
В этом уроке мы рассмотрим блоки из библиотеки Simulink Extras (расширения SIMULINK), которая в окне просмотра библиотеки находится на том же уровне иерархии, что и сама библиотека Simulink. Кроме того, мы познакомимся с допол- нительными наборами блоков, которые отсутствуют в стандартной конфигурации библиотеки, но могут быть добавлены по желанию пользователя и при наличии соответствующей лицензии. Их применение позволяет существенно расширить возможности SIMULINK при моделировании многих типов систем. Более подробное будут рассмотрены блоки из набора DSP Blockset (набор блоков для цифровой обра- ’ ботки сигналов), которые с точки зрения методологии имитационного моделировав ния дискретных систем, о которой в основном идет речь в данной книге, представля- ют наибольший интерес. .;1 Библиотека Simulink Extras Библиотека расширений SIMULINK — Simulink Extras (расширения SIMULINK) — j содержит шесть разделов (ее структура показана на рис. 5.1), которые перечислены ниже. О AdditionalSinks (дополнительные блоки-получатели) —включает дополнительные графические «смотровые окна», четыре из которых обеспечивают визуализации j спектрального анализа сигналов, а два — отображение корреляционных характераi стик сигналов. Для использования двух последних блоков требуется включить в; состав конфигурации пакета набор Signal Processing Toolbox (набор инструментов для обработки сигналов). Рис. 5.1. Структура библиотеки Simulink Extras
Наборы блоков 201 О Additional Linear (дополнительные линейные системы) — это название сохранилось от предыдущей версии SIMULINK. Блоки, входящие в згу часть библиотеки, пред- назначены для расчета характеристик линейных систем автоматического управления. О Transformations (преобразования) — содержит блоки, выполняющие различные преобразования числовых величин: • координат—из прямоугольной системы в полярную л ибо сферическую и обратно; • температуры — из шкалы Фаренгейта в шкалу Цельсия и обратно; • углов — из градусов в радианы и обратно. О Flip Flops (переключатели) — содержит блоки, моделирующие работу основных типов триггеров: D-триггера, S-R-триггера, J-K-триггера. Кроме того, в этот раздел библиотеки включен блок Clock (часы), генерирующий дискретный временной сигнал. Параметром настройки этого блока Является величина периода сигнала. О Li nearization (линейная аппроксимация) — раздел содержит два блока, которые в зависимости от установленных параметров могут быть использованы как при моделировании, так и при решении задач линеаризации. Наборы блоков Дополнительные разделы библиотеки SIMULINK, имеющие общее название Blocksets (наборы блоков), отсутствуют в стандартной конфигурации библиотеки. Однако при установке MATLAB они могут быть добавлены по желанию пользователя и при наличии соответствующей лицензии. Их применение позволяет существенно рас- ширить возможности SIMULINK при моделировании многих типов систем. Таких наборов четыре. О о о о DSP Blockset (набор блоков для цифровой обработки сигналов) — используется при моделировании процессов цифровой обработки сигналов (DSP — Digital Signals Processing). В состав набора также включены блоки, реализующие ряд основных статистических процедур, что позволяет обрабатывать результаты модельных экспериментов. Fixed-Point Blockset (набор блоков для вычислений с фиксированной точкой) — используется при моделировании процессов фильтрации сигналов во временной области. Nonlinear Control Blockset (набор блоков для нелинейных систем управления) — используется при построениимоделей устойчивых нелинейных систем управления. Power System Blockset (набор блоков для систем питания) — используется при моделировании усилительных и исполнительных устройств систем управления. (У) ЗАМЕЧАНИЕ В отличие от предыдущих версий SIMULINK, в которых все дополнительные наборы блоков и инструментов были объединены в разделе Blocksets & Toolboxes (наборы блоков и наборы инструментов), в SIMULINK 3.0 каждый набор офор- млен в виде отдельной библиотеки того же уровня, что и основная библиотека SIMULINK (рис. 5.2).
202 Урок 5. Дополнительные библиотеки блоков Наборы инструментов Наборы блоков Рис. 5.2. Структура библиотеки SIMULINK при установке дополнительных приложений Библиотека DSP Blockset С точки зрения методологии имитационного моделирования дискретных систем, о которой в основном идет речь в данной книге, библиотека DSP Blockset (набор блоков для цифровой обработки сигналов) представляет наибольший интерес. Этот набор к тому же является наиболее мощным среди других наборов блоков. В его состав входит около сотни блоков, которые сгруппированы по своему назначению в несколь- ко разделов. Структура DSP Blockset показана на рис. 5.3. Библиотека обеспечивает решение практически всех типов задач, связанных с циф- ровой обработкой сигналов, в том числе обработку звуковых сигналов и изображе- ний. Включенные в ее состав средства реализуют алгоритмы цифровой фильтрации, спектрального анализа сигналов (на основе дискретного или быстрого преобразова- ний Фурье), корреляционного анализа, а также специальные алгоритмы типа линей- ного предсказания, сжатия информации и т. д. Не ставя перед собой задачу подробно описать состав DSP Blockset, хотелось бы, тем не менее, обратить внимание читателя на некоторые блоки, которые носят наиболее универсальный характер с точки зрения моделирования устройств и систем обра- ботки информации. Накопители Блоки данной категории, которые мы условно обозначили как «накопители», позво- ляют описывать в блок-диаграммах устройства или элементы систем, обеспечиваю- щие накопление и хранение поступающей информации или заявок на обслуживание.
Библиотека DSP Blockset 203 Такие блоки могут быть использованы при моделировании запоминающих устройств вычислительных систем либо при моделировании систем массового обслуживания, относящихся к любой другой предметной области. Все блоки данной категории вклю- чены в подраздел Buffers (накопители) раздела General DSP (основные блоки DSP). Рис. 5.3. Структура библиотеки DSP Blockset Блок Buffer Блок Buffer (накопитель) выполняет «буферизацию» входного сигнала; другими словами, с его помощью входной сигнал разбивается на «отрезки» заданного разме- ра {фреймы). При этом входной сигнал может быть скалярным (дискретной после- довательностью скалярных значений), вектором или матрицей. Работу блока для первого из этих вариантов иллюстрирует рис. 5.4. Слева от блока показан входной сигнал (интервал между значениями равен t), а справа — выходной (интервал меж- ду значениями равен 3-t). Buffer Рис. 5.4. Работа блока Buffer при наличии скалярного входного сигноло Из рисунка видно, что блок Buffer играет роль накопителя (почему, собственно, так и назван), сигнал на выходе которого появляется только после того, как будет сфор-
204 Урок 5. Дополнительные библиотеки блоков мировая очередной фрейм. В результате интервал времени между фреймами увели- чивается по сравнению с исходным интервалом пропорционально размеру фрейма. Блок имеет три параметра настройки (рис. 5.5). О Buffer size (размер накопителя) — число последовательных значений (отсчетов) входного сигнала, образующих фрейм. О О Buffer overlap (перекрытие накопителя) — число элементов предыдущего выход- ного фрейма, повторяющихся в последующем. Initial conditions (начальное состояние) — значение выходного сигнала, форми- руемое на выходе блока на первом шаге моделирования (при tm=O). Параметр может быть задан в виде скаляра, вектора или матрицы. i Рис. 5.5. Окно ностройки блоко Buffer (М=3, L=l) Рис. 5.6. Робото блоко Buffer при наличии векторного входного сигнола
Библиотека DSP Blockset ZU3 Влияние первых двух параметров на формат выходного сигнала (для случая векторного входного сигнала) поясняет рис. 5.6. В приведенном примере параметр Buffer size (на ри- сунке он обозначен символом М) равен 3, а параметр Buffer overlap (обозначен L) равен 1. Если входной вектор содержит N элементов, то при значении параметра Buffer size равном М, каждый выходной фрейм представляет собой матрицу размером MxN; при этом каждый элемент входного вектора интерпретируется как скалярный сигнал, полу- ченный по отдельному каналу (на рисунке «каналы» обозначены символами ch). В том случае, если входной сигнал является матрицей размером шхп, то она преобра- зуется в вектор, состоящий из (шхп) элементов. Блок Unbuffer Блок Unbuffer («антинакопитель») по назначению противоположен блоку Buffer (на- копитель). Он выполняет преобразование векторного или матричного входного сиг- нала в соответствии с установленными параметрами. На рис. 5.7 слева от блока по- казан векторный входной сигнал (интервал между значениями равен t), а справа — скалярный выходной сигнал (интервал между значениями равен t/3). Unbuffer Рис. 5.7. Работа блока Unbuffer при наличии векторного входного сигнала Блок имеет два параметра настройки (рис. 5.8). О Initial Conditions (начальное состояние) — значение выходного сигнала, форми- руемое на выходе блока на первом шаге моделирования (при tm=0). Параметр может быть задан в виде скаляра, вектора или матрицы; О Number of channels (число каналов) — число независимых каналов (элементов) выходного вектора. Если на выходе формируется скалярный сигнал, значение этого параметра должно быть равно 1. Рис. 5.8. Окна настройки блока Unbuffer
200 Урок 5. Дополнительные библиотеки блоков Если на вход блока с интервалом t поступает сигнал, который представляет собой матрицу размером MxN, то на выходе блока с интервалом t/З формируется вектор длиной N, значения элементов которого совпадают созначениямиэлементов очередной строки соответствующей матрицы. Например, на рис. 5.9 показана работа блока, когда входной сигнал является матрицей размером 3x4, а параметр Number of channels равен 4. Значения входного сигнала в разные Выходной сигнал, определяемый моменты времени (интервал t-З) начальным состоянием Значения выходного сигнала (интервал t/3) Рис. 5.9. Робато блока Unbuffer при наличии матричного входного сигнала Блок Rebuffer Блок Rebuffer (преобразователь) можно рассматривать как некую композицию блоков Buffer (накопитель) и Unbuffer («антинакопитель»). Его назначение — изменение (преобразование формата) фреймов входного сигнала в соответствии с установлен- ными параметрами работы блока. На рис. 5.10 приведен пример работы блока, изме- няющего исходный размер фрейма (4) на новый (3). Блок имеет-пять параметров настройки (рис. 5.11). О Buffer size (размер накопителя) — размер выходного фрейма. О Buffer overlap (перекрытие накопителя) — число элементов предыдущего выход- ного фрейма, повторяющихся в последующем. О Initial conditions (начальное состояние) — значение выходного сигнала, форми- руемое на выходе блока на первом шаге моделирования (при tm=O). Параметр может быть задан в виде скаляра, вектора или матрицы.
Библиотека DSP Biocksel Входной вектор (интервал Выходной вектор (интервал между между значениями Т=4) значениями равен (M-L) T/4) Рис. 5.10. Пример использования блока Rebuffer при наличии векторного входного сигноло О Флажок Frame-based inputs (входной сигнал в режиме фрейма) определяет спо- соб интерпретации входного сигнала. О Number of channels (число каналов) — число элементов (независимых каналов) выходного вектора. Значение этого параметра должно устанавливаться с учетом параметра Frame-based inputs и формата входного сигнала. Рис. 5.11. Окно настройки блока Rebuffer Если флажок Frame-based inputs установлен (см. рис. 5.10), обработка входного сиг- нала выполняется по следующим правилам. О Для скалярного сигнала обработка не зависит от состояния флажка, а формат вы- ходного фрейма определяется параметрами Buffer size, Buffer overlap и Initial conditions. О При наличии векторного входного сигнала длиной М все его элементы восприни- маются как единая порция данных, поступающих по отдельному каналу в один и тот же момент времени. В этом случае параметр Number of channels должен уста -
208 Урок 5. Дополнительные библиотеки блоков навливаться в 1, а значение параметра Buffer size может быть больше или меньше размера входного фрейма. О Если входной сигнал представляет собой матрицу размером MxN, то он интерпре- тируется как набор из N фреймов, каждый из которых содержит М элементов, поступающих одновременно по отдельному независимому каналу. В этом случае параметр Number of channels должен быть равен числу столбцов матрицы (N). Выходной фрейм также является матрицей, число строк которой определяет параметр Buffer size, а число столбцов равно числу столбцов входного фрейма. Если флажок Frame-based inputs снят, то результатом обработки векторного входно- го сигнала длиной N является матрица размером MxN, где М определяется значением параметра Buffer size. Каждый из N столбцов выходной матрицы соответствует от- дельному каналу, как показано на рис. 5.12. Рис. 5.12. Пример использования блока Rebuffer при наличии векторного входного сигнала (фложок Frome-bosed inputs снят) Блок Shift Register Блок Shift Register (сдвиговый регистр) преобразует входной сигнал в последо- вательность фреймов заданного размера. Каждый фрейм отличается от предыдуще- го только одним значением, поэтому интервал между выходными фреймами равен интервалу между значениями входного сигнала (рис. 5.13). Таким образом, блок Shift Register эквивалентен блоку Buffer (накопитель) с пара- метрами Buffer size (размер накопителя) равным М и Buffer overlap (перекрытие нако- пителя) равным М-1, за исключением того, что для блока Shift Register поддерживает- ся режим прямой пересылки (direct feed through), то есть текущее значение входного сигнала поступает на выход блока на том же шаге моделирования.
Библиотеке DSP Blockset 2 9 Блок имеет два параметра настройки (рис. 5.14). О Register size (размер регистра) — размер выходного фрейма (или число строк выходной матрицы). О Initial condition (начальное состояние) — значение выходного сигнала, формиру- емое на выходе блока на первом шаге моделирования (при tm=0). Параметр может быть задан в виде скаляра, вектора или матрицы. Ж Ц Ж % ® Ж Shift Register-----------------------------1 (M=3) I Значения входного сигнала Значения выходного сигнала (интервал между значениями t=l) (интервал между значениями t-1) Рис. 5.13. Пример использования блока Shift Register Рис. 5.14. Окно настройки блоко Shift Register Блок Triggered Shift Register Блок Triggered Shift Register (триггерный сдвиговый регистр) преобразует набор из М значений входного сигнала во фрейм соответствующего размера. Сигнал, посту- пающий на первый (информационный) вход блока, принимается только при нали- чии управляющего сигнала на втором («триггерном») входе. Очередное значение входного сигнала добавляется к выходному фрейму на том же шаге моделирования, поэтому новый фрейм «перекрывает» М-1 элемент предыдущего. Между двумя пос- ледовательными срабатываниями триггера блок игнорирует сигнал на информаци- онном входе и сохраняет предшествующее значение выходного сигнала (рис. 5.15). Блок имеет три параметра настройки (рис. 5.16). О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие срабатывания блока: • Rising edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному);
210 Урок 5. Дополнительные библиотеки блоков ч Е а.1 р, Й QJ О Я Л Ч QJ ч а я Рис. 5.15. Пример использования блока Triggered Shift Register Выходной сигнал Рис. 5.16. Окно настройки блока Triggered Shift Register • Falling edge (спад) — при изменении положительного значения управляющего сигнала на нулевое или отрицательное (либо при переходе от нулевого значе- ния к отрицательному); • Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала. О Register size (размер регистра) — размер выходного фрейма (или число строк выходной матрицы). О Initial condition (начальное состояние) — значение выходного сигнала, формиру- емое на выходе блока на первом шаге моделирования (при tm=O). Параметр может быть задан в виде скаляра, вектора или матрицы.
Библиотека DSP Blockset Если входной вектор содержит N элементов, то при значении параметра Register size, равном М, каждый выходной фрейм представляет собой матрицу размером MxN, как показано на рис. 5.17. Векторный Управляющий Выходной сигнал (каждый входной сигнал («триггерный») сигнал фрейм — матрица размером 3x2) к QJ & QJ О К Л (U ч о и Shih Register Triggered Shift Register <M-3) Рис. 5.17. Работа блока Triggered Shift Register при наличии векторного входного сигнала В том случае, если входной сигнал является матрицей размером mxn, она преобразу- ется в вектор, состоящий из (mxn) элементов. Блок Queue Блок Queue (очередь) обеспечивает сохранение значений входного сигнала в регист- ре, имеющем формат FIFO (First In, First Out — первым вошел, первым вышел). Входной сигнал может быть скаляром, вектором или матрицей. Блок работает следующим образом. О Если имеет место событие, возбуждающее порт Push, то блок «втягивает» (pushes') очередное значение входного сигнала, подаваемого на порт In (входной порт), в конец («хвост») очереди. О Если имеет место событие, возбуждающее порт Pop, то блок «выталкивает» (pops) очередной элемент из «головы» очереди на выход (это значение сохраня- ется на выходе блока до наступление очередного события в порту Pop). В соответ- ствии с такой дисциплиной обработки значение, попавшее в очередь первым, всегда ее первым и покидает (рис. 5.18). События типа Clr (очистка), поступающие на одноименный порт, обеспечивают ос- вобождение очереди. Если на управляющие порты блока поступают одновременно два или более событий, то они учитываются в следующем порядке:
212 Урок 5. Дополнительные библиотеки блоков О первым — событие типа CLr; О вторым — событие типа Push; О третьим — событие типа Pop. Заполнение очереди Первым вошел Освобождение Первым вышел тот элемент, очереди который первым вошел Рис. 5.18. Работа блока Queue Блок имеет следующие параметры настройки (рис. 5.19). О Register size (размер регистра) — максимальная длина очереди. О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие срабатывания блока: • Rising edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному); • Falling edge (спад) — при изменении положительного значения управляющего сигнала на нулевое или отрицательное (либо при переходе от нулевого значе- ния к отрицательному); • Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала.
Библиотека DSP Blockset 213 Рис. 5.19. Окно настройки блока Queue О Раскрывающийся список Push onto full register (поместить в заполненный регистр) позволяет выбрать режим работы блока в том случае, когда следует принять в очередь следующее значение, но регистр заполнен: • Ignore (игнорировать) — игнорировать событие и продолжить моделирование; • Warning (предупреждение) — продолжить моделирование, но вывести соответ- ствующее предупреждение в командное окно MATLAB; • Error (ошибка) — вывести сообщение об ошибке в командное окно MATLAB и закончить сеанс моделирования; • Dynamic reallocation (динамическое перераспределение) — динамически изме- нять емкость регистра. О Раскрывающийся список Pop empty register (вытолкнуть из пустого регистра) позволяет выбрать режим работы блока в том случае, когда следует вытолкнуть из очереди очередной элемент, но регистр пуст (пункты списка аналогичны пре- дыдущим, за исключением пункта Dynamic reallocation). О Флажок Empty register output (выходной порт для пустого регистра) определяет возможность использования выходного порта Empty (пустой), сигнал на котором может принимать одно из двух значений: 1, если очередь пуста, и 0 — в противо- положном случае. О Флажок Full register output (выходной порт для заполненного регистра) опреде- ляет возможность использования выходного порта Full (полный), сигнал на кото- ром может принимать одно из двух значений: 1, если регистр заполнен, и 0 — в противоположном случае.
214 Урок 5. Дополнительные библиотеки блоков О Флажок Output number of register entries (выходной порт для числа занятых пози- ций) позволяет показать выходной порт, который предоставляет возможность узнать, сколько элементов можно принять в очередь в данный момент времени. О Флажок Clear input (входной порт для очистки регистра) определяет возможность использования управляющего входного порта CLr, сигнал на котором позволяет очистить очередь. О Флажок Clear output port on reset (очистка выходного порта) позволяет сбросить (обнулить) сигнал на выходе порта Out (выходной порт) при возникновении со- бытия типа Clr. Блок Stack Блок Stack (стек) обеспечивает сохранение значений входного сигнала в регистре, имеющем формат LIFO (Last In, First Out — последним вошел, первым вышел). Входной сигнал может быть скаляром, вектором или матрицей. Блок работает следующим образом. О Если имеет место событие, возбуждающее порт Push, то очередное значение входного сигнала, поступившее на информационный вход блока, помещается на «вершину стека». О Если имеет место событие, возбуждающее порт Pop, то самый верхний элемент «выталкивается» (pops) из стека на выход (это значение сохраняется на выходе блока до наступления очередного события в порту Pop). В соответствии с такой дисциплиной обработки значение, попавшее в стек последним, всегда покидает его первым (рис. 5.20). Последним Заполнение Освобождение Первым вышел тот элемент, вошел стека стека который последним вошел Самый «старый» элемент Рис. 5.20. Робота блока Stack
Библиотека DSP Blockset 215 События типа Clr (очистка), поступающие на одноименный порт, обеспечивают ос- вобождение стека. Если на управляющие порты блока поступают одновременно два или более событий, то они учитываются в следующем порядке: О первым — событие типа Clr; О вторым — событие типа Push; О третьим — событие типа Pop. Блок имеет следующие параметры настройки (рис. 5.21). Рис. 5.21. Окно настройки блока Stack О Stack depth (глубина стека) — максимальная длина стека. О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие срабатывания блока: • Risi ng edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному); • Falling edge (спад) — при изменении положительного значения управляющего сигнала на нулевое или отрицательное (либо при переходе ст нулевого значе- ния к отрицательному); • Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала. О Раскрывающийся список Push full stack (поместить в заполненный стек) опреде- ляет режим работы блока в том случае, когда следует принять в стек очередное значение, но он заполнен:
216 Урак 5. Дополнительные библиотеки блоков • Ignore (игнорировать) — игнорировать событие и продолжить моделирование; • Warning (предупреждение) — продолжить моделирование, но вывести соответ- ствующее предупреждение в командное окно MATLAB; • Error (ошибка) — вывести сообщение об ошибке в командное окно MATLAB и закончить сеанс моделирования; • Dynamic reallocation (динамическое перераспределение) — динамически изме- нять емкость регистра. О Раскрывающийся список Pop empty stack (вытолкнуть из пустого стека) опреде- ляет режим работы блока в том случае, когда следует вытолкнуть из стека оче- редной элемент, но он пуст (пункты списка аналогичны предыдущим, за исключе- нием пункта Dynamic reallocation). О Флажок Empty stack output (выходной порт для пустого стека) определяет воз- можность использования выходного порта Empty (пустой), сигнал на котором может принимать одно из двух значений: 1, если стек пуст, и 0 — в противопо- ложном случае. О Флажок Full stack output (выходной порт для заполненного стека) определяет возможность использования выходного порта Full (полный), сигнал на котором может принимать одно из двух значений: 1, если стек заполнен, и 0 — в противо- положном случае. О Флажок Output number of stack entries (выходной порт для числа занятых пози- ций) позволяет показать выходной порт, который предоставляет возможность узнать, сколько элементов можно поместить в стек в данный момент времени. О Флажок С lea г i n put ( входной порт для очистки регистра) определяет возможность использования управляющего входного порта Clr, сигнал на котором позволяет очистить стек. О Флажок Clear output port on reset (очистка выходного порта) позволяет сбросить (обнулить) сигнал на выходе порта Out ( выходной порт) при возникновении со- бытия типа Clr. Блоки логического управления Название данной категории блоков также достаточно условно и призвано, в какой-то степени, указать на наиболее распространенные варианты их использования в составе блок-диаграмм. Блоки, с помощью которых может быть описана логика работы систе- мы, имеются в нескольких разделах, но ведущую роль здесь играет подраздел Switches and Counters (переключатели и счетчики) раздела General DSP (основные блоки DSP). Для блоков, входящих в другие подразделы, дается соответствующее пояснение. Блок Distributor Блок Distributor (распределитель) накапливает N значений входного сигнала и выдает их одновременно на N каналов. Период выдачи значений выходного сигнала в N раз меньше периода поступления значений входного сигнала. Если входной сигнал —
Библиотека DSP Blockset 217 вектор, то на выходах формируется матрица, каждая строка которой передается на отдельный выход. Блок имеет два параметра настройки (рис. 5.22). О Output vector width (ширина выходного вектора) — число элементов выходного вектора (или число строк выходной матрицы). О Initial conditions (начальное состояние) — значение выходного сигнала на первом шаге моделирования (при tm=0). Рис. 5.22. Окно настройки блока Distributor Блок Multiphase Clock Блок Multiphase Clock (многофазные часы) генерирует N временных сигналов (значе- ние N задается в параметрах настройки блока), каждый из которых смещен по фазе относительно соседнего на одну и ту же величину. Все генерируемые сигналы имеют равную частоту f, измеряемую в герцах (Hz). Величина смещения определяется из соотношения 1/( N-f). Блок имеет следующие параметры настройки (рис. 5.23). О Clock frequency (частота временных сигналов) — частота генерируемых времен- ных сигналов. О Number of phases (количество фаз) — число генерируемых сигналов. О Starting phase (начальная фаза) — номер сигнала, который генерируется первым (для него смещение равно 0), — целое число в интервале от 1 до N. О Number of phase intervals over which clock is active (число интервалов активности временных сигналов) — длительность активного уровня сигнала (см. ниже) оди- накова для всех генерируемых сигналов и измеряется целым числом периодов сигнала (1 /f), значение которого должно лежать в интервале от 1 до N-1. О Active level (активный уровень) — значение амплитуды, которое соответствует наличию сигнала на выходе блока; может иметь одно из двух значений: High (1) или Low (0).
218 Урок 5. Дополнительные библиотеки блоков Рис. 5.23. Окно ностройки блоко Multi phase Clock На рис. 5.24 приведены диаграммы сигналов, формируемых блоком Multiphase Clock при следующих значениях параметров: О Clock frequency — 100; О Number of phases — 5; Сигнал 1 Сигнал 2 Сигнал 3 Сигнал 4 Сигнал 5 Рис. 5.24. Диаграммы сигналов, формируемых блоком Multiphase Clock
Библиотека DSP Blockset 219 О Starting phase — 3; О Number of phase intervals over which clock is active — 1; О Active level — High (1). Обратите внимание, что «внутренняя» нумерация сигналов, определяющая их сме- щение во времени относительно друг друга, выполняется циклически, начиная от сигнала, генерируемого первым. Для приведенного на рисунке примера это означает, что первый номер имеет Сигнал 3, второй номер — Сигнал 4, третий — Сигнал 5, четвер- тый—Сигнал 1, и пятый— Сигнал 2. Блок Sample and Hold Блок Sample and Hold (триггерная задержка) принимает очередное значение входного сигнала, если на управляющем («триггерном») входе имеет место соответствующее разрешающее событие, и задерживает принятое значение до следующего срабатыва- ния триггера. Блок имеет два параметра настройки (рис. 5.25). Рис. 5.25. Окно настройки блока Sample ond Hold О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие срабатывания блока: • Rising edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному); • Falling edge (спад) — при изменении положительного значения управляющего сигнала на нулевое или отрицательное (либо при переходе от нулевого значе- ния к отрицательному); • Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала. О Initial condition (начальное состояние) — значение выходного сигнала до появле- ния первого разрешающего события. Если входной сигнал — вектор, то параметр может быть задан как вектор того же размера или как скаляр, последова тельность
220 Урок 5. Дополнительные библиотеки блоков значений которого воспроизводит элементы входного вектора. Если на вход блока подается матрица размером MxN, то значение параметра задается как вектор, со- держащий MxN элементов, или как скаляр, поочередно принимающий значения элементов матрицы. Блок Edge Detector Блок Edge Detector (детектор перехода через нуль) обнаруживает изменение нулево- го значения входного сигнала на любое ненулевое и в случае обнаружения формиру- ет на выходе единичный сигнал, как показано на рис. 5.26. QJ О К R <и R О К Входной сигнал Выходной сигнал I I (-5) [О] Г-4)......-.............................. ДО] : Г-31 10] Единичный сигнал при переходе через нуль Рис. 5.26. Работа блока Edge Detector Настройка блока может выполняться с помощью двух параметров (рис. 5.27). О Флажок Frame-based inputs (входной сигнал в режиме фрейма) определяет спо- соб интерпретации входного сигнала. О Number of channels (число каналов) — число элементов (независимых каналов) выходного вектора. Значение этого параметра должно устанавливаться с учетом параметра Frame-based inputs и формата входного сигнала. Если флажок FYame-based i nputs не установлен, то входной сигнал воспринимает- ся непосредственно в том формате, в котором он подается на вход блока — как скаляр, вектор или матрица. Если сигнал является вектором или матрицей, то каждый элемент интерпретируется как сигнал, поступивший по отдельному каналу, а обнаружение интересующего события (перехода через нуль) выполняется для каждого канала независимо; размерность выходного сигнала совпадает с размерно- стью входного.
Библиотеке DSP Blockset 221 Если флажок Frame-based inputs установлен, то входной сигнал воспринимается как набор из N фреймов, каждый из которых содержит по М элементов (то есть как мат- рицу MxN, разделенную на N фреймов). При этом предполагается, что все фреймы поступают одновременно по N независимым каналам (рис. 5.28). Рис. 5.27. Окно настройки блока Edge Detector 6x4 Входная матрица 1 Фрейм на .зездгал, по б оиачений • Каждый -- - ’-.Tzt -.Гл i-Wi Рис. 5.28. Формат входного сигнола при установленном фложке Frame-based inputs В этом случае поиск требуемого события производится на уровне фреймов, посту- пающих по одному каналу: единичный выходной сигнал формируется в том случае, если последний элемент предшествующего фрейма равен 0, а первый элемент следу- ющего — нет. Блок Event-Count Comparator Блок Event-Count Comparator (счетчик событий) подсчитывает число ненулевых значений входного сигнала, поступивших на информационный порт Data в тече- ние интервала времени, определяемого сигналом на управляющем входе Int. Когда подсчитанное число становится равным заданному пороговому значению, на вы- ходе блока формируется единичный сигнал (сигнал высокого уровня), как показано на рис- 5.29.
222 Урок 5. Дополнительные библиотеки блоков Информационный Управляющий я к ш р. й CJ о и л ч (U ч о сигнал Запуск счетчика Останов счетчика Перезапуск счетчика и обнуление выходного сигнала Останов счетчика Рис. 5.29. Работа блока Event-Count Comparator Настройка блока выполняется с помощью единственного параметра — Event threshold (событийный порог), который устанавливает пороговое значение числа ненулевых значений входного сигнала. Блок Counter Блок Counter (счетчик) изменяет значение внутреннего счетчика при появлении на входном порте Clk соответствующего управляющего события. Блок имеет следующие параметры настройки (рис. 5.30). О Count direction (направление счета) — направление изменения показаний счет- чика: • Down (в сторону убывания); • Up (в сторону возрастания). О Count event (подсчитываемые события) — тип события, влияющего на значение счетчика. Такими событиями могут быть: • Rising edge (подъем) — изменение отрицательного значения управляющего сигнала на нулевое или положительное (либо переход от нулевого значения к положительному); • Falling edge (спад) — изменение положительного значения управляющего сиг- нала на нулевое или отрицательное (либо переход от нулевого значения к от- рицательному); • Either edge (любой) —- любое из описанных выше изменений входного сигнала;
Библиотека DSP Blockset 223 Рис. 5.30. Окно настройки блока Counter • Nonzero sample (ненулевое значение) — появление любого ненулевого значе- ния сигнала; • Free running (не учитывается) — при выборе этого значения порт CLk не исполь- зуется, и работа блока зависит от значения параметра Sample time (эталонное время); в этом случае дискретность (шаг) изменения показаний счетчика рав- на значению параметра Sample time. О Counter size (размер счетчика) — диапазон, в котором могут изменяться показа- ния счетчика (зависит от выбранной разрядности счетчика) и который может принимать одно из следующих значений: • 8 bits (8 бит) — диапазон значений от 0 до 255 (всего 28 значений); • 16 bits (16 бит) — диапазон значений от 0 до 65 535 (всего 216 значений); • 32 bits (32 бита) — диапазон значений от 0 до 232-1 (всего 232 значений); • User defined (определяется пользователем) — при выборе этого варианта становится доступным поле Maximum count (максимальное значение), в ко- тором задается максимально возможное значение счетчика; в этом случае показания счетчика могут изменяться в диапазоне от 0 до установленного значения.
226 Урок 5. Дополнительные библиотеки блоков Рис. 5.32. Окно постройки блока N-Somple Switch О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие перевода блока в исходное состояние: * Rising edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному); • Falling edge (спад) — при изменении положительного значения управляющего с игнала на нулевое или отрицательное (либо при переходе от нулевого значе- ния к отрицательному); * Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала; О Sample time (эталонное время) — шаг модельного времени Ts, используемый внут- ренним счетчиком блока. Блок переключается с неактивного уровня сигнала на активный через интервал времени, равный Tsx( N+1). Блок Repeat Блок Repeat (повторитель), входящий в подраздел Signal Operations (сигнальные операции) раздела General DSP (основные блоки DSP), воспроизводит входной сиг- нал в течение заданного интервала времени. Нас гройка блока выполняется с помощью пяти параметров (рис. 5.33). О Repetition count (интервал повторения) — количество шагов модельного време- ни (L), в течение которого на выходе блока воспроизводится одно и то же значе- ние входного сигнала. ‘Э Initial conditions (начальное состояние) — значение, формируемое на выходе блока при его инициализации. В «скалярном» режиме, то есть когда флажок Frame-based inputs снят (см. ниже), параметр задается как скаляр или как вектор. В режиме фрейма (флажок Frame-based inputs установлен) параметр может за-
Библиотеке DSP Blockset 227 даваться как вектор или как матрица. Значение данного параметра (или первая строка матрицы в режиме фрейма) воспроизводится на выходе блока в течение первых L шагов модельного времени с момента инициализации блока. Рис. 5.33. Окно настройки блока Repeot О Frame-based inputs (входной сигнал в режиме фрейма) — параметр определяет способ интерпретации входного сигнала. Если флажок установлен, то векторный входной сигнал воспринимается как матрица размером MxN, где N — число фрей- мов, а М — размер каждого фрейма. Предполагается, что каждый фрейм поступает по отдельному каналу (пример интерпретации матрицы размером 6x4 был пока- зан на рис. 5.28). В этом случае каждая строка матрицы воспроизводится на вы- ходе в течение заданного интервала времени. О Number of channels (число каналов) — параметр используется в режиме фрейма и определяет число столбцов (каналов) во входной матрице. О Framing (управление фреймами) — параметр также используется только в режиме фрейма. Он определяет способ регулирования скорости воспроизведения выход- ных фреймов; возможны два варианта: • Maintain input frame size (сохранение размера входного фрейма) — ско- рость воспроизведения фреймов увеличивается за счет пропорционально- го сокращения интервалов времени между элементами выходного фрейма (при L повторениях — в L раз) по сравнению с этими интервалами во входном фрейме; • Maintain input frame rate (сохранение интервалов входного фрейма) — скорость воспроизведения фреймов увеличивается за счет пропорционального увели- чения размера выходного фрейма (при L повторениях — в L раз) по сравнению с числом элементов во входном фрейме.
224 Урок 5. Дополнительные библиотеки блоков О Initial count (начальное значение) — значение счетчика при инициализации ? модели. •( О Раскрывающийся список Output (выходные порты) позволяет выбрать конфигу- рацию выходных портов блока: • Count — внутри блока отображается порт Cnt, на который выдается текущее значение счетчика; • Hit — внутри отображается порт Hit; сигнал на нем равен 0 до тех пор, пока зна- чение счетчика не станет равным величине Hit value; с этого момента сигнал равен 1; • Count and Hit — отображаются оба порта (эта конфигурация используется по умолчанию). О Reset input (вход сброса) — при установке этого флажка разрешается использо- вать дополнительный входной порт Rst. Подача единичного сигнала на этот порт приводит к установке счетчика в исходное состояние. При одновременном по- ступлении сигналов на порты С Ik и Rst сначала происходит сброс счетчика, а затем его значение изменяется на единицу. О Frame-based (входной сигнал в режиме фрейма) — если флажок установлен, блок интерпретирует векторный входной сигнал как фрейм данных, поступающих по одному каналу. В этом случае показания счетчика изменяются в соответствии с числом «триггерных» событий, содержащихся в поступившем фрейме. В отличие от большинства других блоков библиотеки DSP Blackset (набор бло- ков для цифровой обработки сигналов), на вход блока Counter запрещается подавать матрицу. Блок N-Sample Enable Блок N-Sample Enable (включение неактивного сигнала) выдает в течение заданного интервала времени неактивный уровень сигнала (равный 0 или 1, в зависимости от параметров настройки), после чего переключается на активный уровень. Блок имеет следующие параметры настройки (рис. 5.31). О Trigger count (интервал запуска) — число шагов модельного времени (N), в тече- ние которого блок выдает неактивный уровень сигнала. Это значение определя- ется как противоположное значению параметра Active level (см. ниже). О Раскрывающийся список Active level (активный уровень) позволяет выбрать зна- чение, которое будет сформировано на выходе блока по истечении N шагов мо- дельного времени: High(l) или Low(O). Это значение присутствует на выходе бло- ка либо до окончания сеанса моделирования, либо до перевода блока в исходное . состояние с помощью управляющего сигнала, подаваемого на вход Rst. О Reset input (вход сброса) — если данный флажок установлен, то блок может быть «сброшен» в исходное состояние при наступлении соответствующего события.
Библиотека DSP Blockset 225 Рис. 5.31. Окно настройки блоко N-Sample Enable О Раскрывающийся список Trigger type (способ запуска) позволяет выбрать усло- вие перевода блока в исходное состояние: • Rising edge (подъем) — при изменении отрицательного значения управляюще- го сигнала на нулевое или положительное (либо при переходе от нулевого зна- чения к положительному); • Fa Hi ng edge (спад) — при изменении положительного значения управляющего сигнала на нулевое или отрицательное (либо при переходе от нулевого значе- ния к отрицательному); • Either edge (любой) — при любом из описанных выше изменений управляю- щего сигнала. О Sample time (эталонное время) — шаг модельного времени Ts, используемый внут- ренним счетчиком блока. Блок переключается с неактивного уровня сигнала на активный через интервал времени, равный Tsx(N+1). Блок N-Sample Switch Блок N-Sample Switch (переключение неактивного сигнала) пересылает на выход сиг- нал, подключенный к первому информационному входу, в течение N шагов модель- ного времени от начала моделирования (или после переустановки блока в исходное состояние), а начиная с (N+1 )-го шага и до окончания моделирования (или до пере- установки блока в исходное состояние) — сигнал, подключенный ко второму ин- формационному входу. Блок имеет следующие параметры настройки (рис. 5.32). □ Switch count (интервал переключения) — число шагов модельного времени (N), в течение которого блок выдает значение сигнала, подключенного к первому ин- формационному входу. О Reset input (вход сброса) — если данный флажок установлен, то блок может быть «сброшен» в исходное состояние при наступлении соответствующего события.
228 Урок 5. Дополнительные библиотеки блоков Блоки статистической обработки сигналов Хотя основные возможности пакета MATLAB по выполнению статистических проце- дур сосредоточены в библиотеке Statistics Toolbox (набор инструментов статистичес- кого анализа), минимально необходимый «джентльменский набор» таких средств имеется и в составе DSP Blockset (набор блоков для цифровой обработки сигналов). Основное их достоинство заключается в том, что соответствующие блоки могут быть непосредственно включены в состав блок-диаграммы. При этом для каждого из них поддерживается возможность динамической настройки параметров с помощью знакомых вам стандартных средств. Все блоки данной категории включены в под- раздел Statistics (статистика) раздела Math Functions (математические функции). Блок Histogram Блок Histogram (гистограмма) вычисляет гистограмму (частотное распределение) элементов входного векторного сигнала в соответствии с общими правилами постро- ения гистограмм, которые были описаны в разделе « Проверка равномерности» урока 2 «Основы технологии имитационного моделирования». На каждом шаге моделиро- вания сигнал на выходе блока представляет собой вектор, число элементов которого равно числу интервалов гистограммы, а значения элементов отражают частотные характеристики каждого интервала. Пример работы блока показан на рис. 5.34. Входной вектор Выходной вектор Минимальноевначение*—10 Максимальное Ьначение=10 Л&йфйв '.интервалов 5 Ширима интервала - 4 ’ ж • Histogram Рис. 5.34. Пример использовония блоко Histogrom Настройка блока выполняется с помощью следующих параметров (рис. 5.35). О Minimum value of input (минимальное значение входного сигнала) — нижняя гра- ница диапазона входных значений, для которых вычисляется гистограмма. Если во входном векторе имеются элементы, величина которых меньше данного пара- метра, они включаются в первый интервал.
Библиотеке DSP Blockset 229 Рис. 5.35. Окно постройки блоко Histogram О Maximum value of input (максимальное значение входного сигнала) — верхняя гра- ница диапазона входных значений, для которых вычисляется гистограмма. Если во входном векторе имеются элементы, величина которых больше данного пара- метра, они включаются в последний интервал. О Number of bins (число интервалов) — количество интервалов гистограммы. О Флажок Normalized (нормализация) определяет способ вычисления частотных характеристик: если флажок установлен, то вычисляется относительная частота попаданий в каждый интервал (сумма относительных частот равна 1), если фла- жок снят, то определяется абсолютное число попаданий. О Флажок Running histogram (непрерывный расчет гистограммы) определяет «время жизни» гистограммы: если он снят, то на каждом шаге моделирования вычисля- ется новая гистограмма, не учитывающая предыдущие значения входного сигна- ла; если флажок установлен, то при расчете гистограммы учитываются все значе- ния входного сигнала от начала моделирования (либо от момента последней переустановки блока). Во втором случае может быть дополнительно указан спо- соб интерпретации входного сигнала (с помощью параметра Frame-based). О Флажок Reset port (вход сброса) определяет возможность переустановки блока (возврата в исходное состояние). Если флажок установлен, то внутри блока отобра- жается входной порт Rst, предназначенный для приема управляющего сигнала. Та- кой вариант имеет смысл только при установленном флажке Running histogram. О Флажок Frame-based (входной сигнал в режиме фрейма) определяет способ ин- терпретации входного сигнала. Если он установлен, то значения вектора интер- претируются как данные, поступившие по одному каналу в последовательные моменты времени.
230 Урок 5. Дополнительные библиотеки блоков Блок Maximum Блок Maximum (максимум) определяет значение и позицию наибольшего элемента входного вектора, либо максимальное значение, поступившее на вход блока в тече- ние некоторого интервала времени. Блок имеет 4 параметра настройки (рис. 5.36). Рис. 5.36. Окно ностройки блоке Maximum О Раскрывающийся список Mode (режим) позволяет выбрать режим работы блока: * Value (значение) — на выход блока выдается значение максимального элемен- та входного вектора, поступившего на данном шаге моделирования; • Index (индекс) — на выход блока выдается индекс максимального элемента входного вектора, поступившего на данном шаге моделирования; * Value and Index (значение и индекс) — на выход блока выдается значение и индекс максимального элемента; • Running (непрерывный расчет) — на выход блока выдается максимальное зна- чение, поступившее на вход блока с момента начала моделирования (либо от момента последней переустановки блока); в этом режиме может быть дополни- тельно указан способ интерпретации входного сигнала (с помощью параметра Frame-based). О Флажок Reset port (вход сброса) определяет возможность переустановки блока ( возврата в исходное состояние). Если флажок установлен, то внутри блока ото- бражается входной порт Rst, предназначенный для приема управляющего сигна- ла. Такой вариант имеет смысл только при установленном флажке Running; О Флажок Frame-based (входной сигнал в режиме фрейма) определяет способ интер- претации входного сигнала. Если флажок установлен, то векторный входной сигнал воспринимается как матрица размером MxN, где N — число фреймов, а М — размер каждого фрейма. Предполагается, что каждый фрейм поступает по отдельному каналу. Q Number of channels (число каналов) — параметр используется в режиме фрейма и определяет число столбцов (каналов) во входной матрице.
Библиотека DSP Blocksef 231 Блок Minimum Блок Minimum (минимум) определяет значение и позицию наименьшего элемента входного вектора, либо минимальное значение, поступившее на вход блока в тече- ние некоторого интервала времени. Принципы работы и параметра настройки блока аналогичны используемым в блоке Maximum (максимум). Блок Mean Блок Mean (среднее) вычисляет среднее значение элементов входного вектора, либо среднее значение входного сигнала на некотором интервале времени. Блок имеет следующие параметры настройки (рис. 5.37). О Флажок Running mean (непрерывный расчет среднего значения) определяет ре- жим использования блока. Если флажок установлен, то на выходе блока форми- руется среднее значение, вычисляемое за интервал времени с момента начала моделирования (либо от момента последней переустановки блока). В этом ре- жиме может быть дополнительно указан способ интерпретации входного сигнала (с помощью параметра Frame-based). Рис. 5.37. Окно настройки блока Меоп О Флажок Reset port (вход сброса) определяет возможность переустановки блока (возврата в исходное состояние). Если флажок установлен, то внутри блока отображается входной порт Rst, предназначенный для приема управляющего сигнала. Такой вариант имеет смысл только при установленном флажке Running mean. О Флажок Frame-based (входной сигнал в режиме фрейма) определяет способ ин- терпретации входного сигнала. Если флажок установлен, то векторный входной сигнал воспринимается как матрица размером MxN, где N — число фреймов, а М — размер каждого фрейма. Предполагается, что каждый фрейм поступает по отдель-
232 Урок 5. Дополнительные библиотеки блоков ному каналу. Особенности работы блока в скалярном режиме и в режиме фрейма иллюстрируют рис. 5.38 и 5.39 соответственно. О Number of channels (число каналов) — параметр используется в режиме фрейма и определяет число столбцов (каналов) во входной матрице. Рис. 5.38. Работа блока Mean в скалярном режиме Рис. 5.39. Работа блока Меоп в режиме фрейма
Библиотеке DSP Blockset 233 Блок Median Блок Median (медиана) выводит значение центрального (по расположению) элемен- та входного вектора. Поиск требуемого элемента выполняется в соответствии со следующими правилами: О элементы входного вектора упорядочиваются по возрастанию; О если вектор содержит нечетное количество элементов, то блок выдает значение элемента с номером (п+1 )/2, где п — длина вектора; О если вектор содержит четное количество элементов, то на выход блока выдается значение, среднее между элементами с номерами п/2 и п/2+1. Параметров настройки блок не имеет. Блок Sort Блок Sort (сортировка) упорядочивает элементы входного вектора в соответствии с заданными параметрами настройки (рис. 5.40). О Раскрывающийся список Mode (режим) позволяет выбрать режим работы блока: • Value (значение) — на выход блока выдается новый (упорядоченный) вектор; • Index (индекс) — на выход блока выдается вектор индексов входного вектора, расположенных в новом порядке (например, если исходный вектор Х=[ 9 7 5 3], и его требовалось упорядочить по возрастанию, то в данном режиме сигнал на выходе блока будет выглядеть так: [4 3 2 1]); • Value and Index (значение и индекс) — на выход блока выдается как упорядо- ченный вектор значений, так и вектор индексов. Рис. 5.40. Окно постройки блока Sort О Раскрывающийся список Sort order (порядок сортировки) позволяет выбрать способ упорядочивания входного вектора: • Descending (поубыванию); • Ascending (по возрастанию). Блок Standard Deviation Блок Standard Deviation (стандартное отклонение) вычисляет среднеквадратичное отклонение (рассеяние) для входного вектора или для всех значений входного
234 Урок 5. Дополнительные библиотеки блоков сигнала, поступивших на вход блока с момента начала моделирования (или с момен- та последней переустановки блока). Блок имеет 4 параметра настройки (рис. 5.41). О Флажок Running Standard Deviation (непрерывный расчет стандартного отклоне- ния) определяет режим использования блока. Если флажок установлен, то сред- неквадратичное отклонение вычисляется за интервал времени с момента начала моделирования (либо от момента последней переустановки блока). В этом ре- жиме может быть дополнительно указан способ интерпретации входного сигнала (с помощью параметра Frame-based). Рис. 5.41. Окно ностройки блока Stondord Deviation . О Флажок Reset port (вход сброса) определяет возможность переустановки блока (возврата в исходное состояние). Если флажок установлен, то внутри блока отображается входной порт Rst, предназначенный для приема управляющего сигнала. Такой вариант имеет смысл только при установке флажка Running Standard Deviation. О Флажок Frame-based (входной сигнал в режиме фрейма) определяет способ интерпретации входного сигнала. Если флажок установлен, то векторный вход- ной сигнал воспринимается как матрица размером MxN, где N — число фреймов, а М — размер каждого фрейма. Предполагается, что каждый фрейм поступает по отдельному каналу. Особенности работы блока в режиме фрейма иллюст- рирует рис. 5.42. О Number of channels (число каналов) — параметр используется в режиме фрейма и определяет число столбцов (каналов) во входной матрице. Блок Variance Блок Variance (дисперсия) вычисляет дисперсию для входного вектора или для всех значений входного сигнала, поступивших на вход блока с момента начала моделиро- вания (или с момента последней переустановки блока).
Библиотека DSP Blocksef 235 x QJ P. Й (U О И Л я (U ч о к chi Входной сигнал Сигнал (последователь- сброса ность фреймов) I Рис. 5.42. Работа блока Standard Deviation в режиме фрейма Блок имеет те же параметры настройки, что и блок Standard Deviation (стандартное отклонение). На рис. 5.43 показаны особенности работы блока в скалярном режиме (флажок Frame-based (входной сигнал в режиме фрейма) снят). Сигнал сброса Входной сигнал ch2 Выходной сигнал ch2 f fiCJP 12.50J '£.;> .33 7Л03 ч 4.92.63.6/3 f т У' • I?. Рис. 5.43. Робото блока Stondord Deviotion в скалярном режиме [51] Running t Var £12,60. Z.SOf (МзЖ 9.70^ (2К47,: ©.671' 1ЙЭ2 Variance Д21.0Г, Переустановка блока-j3.0t) O.BOJ/ £ 2 П 3 х lb
236 Урок 5. Дополнительные библиотеки блоков На этом мы завершим знакомство с библиотекой блоков SIMULINK. В заключение еще раз отметим, что основная цель приведенного краткого обзора разделов библиотеки — дать читателю представление о потенциальных возможностях SI М ULINK как инструмента визуального моделирования. Особенности организа- ции взаимодействия блоков в рамках одной S-модели или при разработке семей- ства моделей, а также технология подготовки и проведения модельных эксперимен- тов будут рассмотрены в следующих уроках. Что нового мы узнали? 0 Работа с дополнительными разделами библиотеки ничем не отличается от рабо- ты с основной библиотекой SIMULINK, и для индивидуальной настройки бло- ков используется стандартное диалоговое окно. 0 Наиболее мощным, как по составу блоков, так и по реализуемым возможностям, является раздел DSP Blockset (набор блоков для цифровой обработки сигналов), ориентированный на моделирование систем цифровой обработки сигналов. 0 Б составе раздела DSP BLockset имеются блоки статистической обработки парамет- ров моделируемых систем, что позволяет реализовать предварительную обработ- ку исследуемых величин непосредственно в ходе модельного эксперимента.
МУРОК Технология моделирования в среде SIMULINK □ Меню пользователя □ Первая модель □ Описание случайных факторов □ Управление временем
В этом уроке мы рассмотрим основные технологические аспекты создания S-мо- делей. Чтобы справиться с поставленной задачей, потребуется более детальное знакомство с командами меню окна блок-диаграммы. Меню пользователя Если создается новая S-модель (как в нашем случае), то в первую очередь необходимо открыть новое (пустое) окно блок-диаграммы. Это можно сделать либо из команд- ного окна MATLAB, выбрав команду File ► New ► Моде1(файл ► создать ► модель), либо из окна Simulink Library Browser (просмотр библиотеки SIMULINK), щелкнув на соответствующей кнопке панели инструментов. Новое окно блок-диаграммы имеет по умолчанию имя untitled (безымянное), которое может быть изменено при записи файла модели надиск. В строке меню окна блок-диаграммы (в дальнейшем для краткости будем называть его меню пользователя) представлено пять меню: File (файл), Edit (правка), View (вид), Simulation (моделирование) и Format (формат). Меню File В меню File (файл) входят следующие пункты (рис. 6.1). Рис. 6.1. Меню File О Подменю New (создать) обеспечивает доступ к двум командам: • Model (модель) — открыть окно для создания S-модели; • Library (библиотека) — открытьокно для создания новой библиотеки SIMU- LINK. О Команда Open (открыть) обеспечивает доступ к стандартному диалоговому окну открытия файла, с помощью которого можно найти и открыть файл с расширени- ем .mdl.
Меню пользователя 239 О Команда Close (закрыть) закрывает окно блок-диаграммы (и соответствующий mdl-файл). Если в блок-диаграмму вносились изменения, которые не были со- хранены в файле на диске, то перед закрытием окна MATLAB запрашивает под- тверждение на сохранение файла. О Команда Save (сохранить) записывает надиск mdl-файл. Если файл записывает- ся впервые, то при выборе этой команды открывается стандартное диалоговое окно сохранения файла, с помощью которого пользователь может указать новое имя файла (вместо untitled) и целевую папку. Если файл ранее записывался на диск, он сохраняется под прежним именем и в той же папке (без открытия диало- гового окна). О Команда Save as (сохранить как) позволяет сохранить файл под новым именем или в другой папке. При выборе этой команды также открывается стандартное диалоговое окно сохранения файла. ЗАМЕЧАНИЕ При выборе команды Save os (и команды Save при первой золиси) mdl-файл по желанию пользователя может быть сохранен в формате М- или МАТ-файла. Этим разработчику предоставляется возможность корректировать текст програм- мы модели с помощью встроенного отладчика MATLAB. Более подробно соответ- ствующие вопросы рассмотрены в уроке 3 «Знакомство с пакетом МАТ1АВ». О Команда Model Properties (характеристики модели) вызывает компоненту управ- ления версиями S-модели, технология использования которой была рассмотре- на при описании блока Model Info (информация о модели) в разделе «Раздел Signals & Systems» урока 4 «Библ иотека блоков SIMULINK». О Команда Print (печать) обеспечивает вывод на печать блок-диаграммы модели и некоторой дополнительной информации (см. ниже). О Команда Printer Setup (параметры принтера) открывает диалоговое окно для на- стройки параметров страницы, вид которого зависит от установленной модели принтера. О Команда Exit MATLAB (выход из MATLAB) обеспечивает закрытие всех окон и выход из MATLAB. При выборе команды Print открывается диалоговое окно, обеспечивающее настрой- ку параметров печати (рис. 6.2). С точки зрения вывода информации об S-модели основными являются элементы управления, собранные в группе Options (параметры). О Переключатели уровня иерархии позволяют выбрать перечень компонентов S- модели (подсистем), которые будут распечатаны в виде блок-диаграммы: • Current system (текущая система) — печать только активного (текущего) окна блок-диаграммы; • Current system and above (текущая система и выше) — печать текущего окна и всех подсистем ботее высокого уровня, в состав которых входит выбранная подсистема;
240 Урок 6. Технология моделирования в среде SIMULINK Рис. 6.2. Окно установки параметров печати блок-диаграммы • Current system and below (текущая системам ниже) — печать выбранной подси- стемы и блок-диаграмм всех входящих в нее подсистем; • All systems (все системы) — печать блок-диаграмм всех подсистем, входящих в состав S-модели. О Флажок Include Print Log (включая печать журнала) позволяет вывести на печать в текстовой форме список блоков и подсистем, входящих в состав модели. О Флажок Look Under Mask Dialog (открыть маску подсистемы) обеспечивает разре- шение/запрет печати блок-диаграмм маскированных подсистем. О Флажок Expand Unique Library Links (раскрыть связи с личной библиотекой) позволяет разрешить/запретить печать блок-диаграмм подсистем из библиотеки пользователя. При этом для библиотечных блоков (подсистем) блок-диаграмма печатается лишь однажды, сколько бы раз они ни встречались в модели. Два последних флажка становятся доступными только в том случае, если установ- лен переключатель Current system and below пли All systems. Меню Edit Меню Edit (правка) содержит команды, обеспечивающие редактирование (измене- ние) структуры модели. Часть из них традиционна для Windows-приложений, дру- гие относятся к специфическим командам работы с S-моделью (рис. 6.3).
Меню пользователя 241 О Undo (отменить) — отмена предыдущем команды редактирования. В некоторых случаях команда Undo может конкретизироваться, например, после добавления в блок-диаграмму линии связи между блоками она называется Undo Add Line (от- менить добавление линии). Если нельзя отменить предыдущее действие, коман- да Undo заменяется командой Can't Undo (нельзя отменить). Рис. 6.3. Меню Edit О Redo (повторить) — повторное выполнение отмененной (с помощью команды Undo) команды. Эта команда также может видоизменяться, например, Redo Add Line (повторить добавление строки). Если нельзя повторить команду отмены, команда Redo заменяется командой Can't Redo (нельзя повторить). О Cut (вырезать) — удаление одного или нескольких блоков с их переносом в буфер обмена, при этом соответствующие блоки должны быть выделены. Чтобы выде- лить группу блоков, необходимо поместить указатель мыши рядом с одним из них, нажать кнопку мыши (при этом указатель примет форму крестика) и, не от- пуская кнопку, протащить указатель в сторону блоков, подлежащих выделению. Когда все нужные блоки окажутся внутри пунктирного прямоугольника (прямо- угольника выделения), отпустите кнопку мыши. Выделенные блоки, а также ли- нии связи между ними будут помечены маркерами выделения. О Сору (копировать) — копирование одного или нескольких блоков в буфер обме- на. Копируемые блоки должны быть предварительно выделены.
242 Урок 6. Технология моделирования в среде SIMULINK О Paste (вставить) — вставка содержимого буфера обмена в месте расположения курсора. Чтобы задать место расположения курсора, необходимо предварительно щелкнуть в нужной точке окна блок-диаграммы (этой точке будет соответство- вать верхний левый угол вставляемой области). ЗАМЕЧАНИЕ Команды Cut, Сору и Poste окна блок-диогроммы работают через собствен- ный буфер обмено MATLAB, поэтому передочо содержимого собственного буфера MATLAB в другие приложения невозможно. Для этого должны исполь- зоваться другие средства, которые будут рассмотрены позже. О Clear (очистить) — удаление выделенной области (область в буфере обмена не 1 сохраняется, но может быть восстановлена командой Undo). 1 О Select All (выделить все) — выделить все элементы блок-диаграммы. О Copy Model (копировать модель) — запись графического изображения блок-диаг- 1 раммы в буфер обмена Windows для передачи в другие Windows-приложения (в л качестве графического объекта). По умолчанию блок-диаграмма сохраняется в 1 формате WMF (Windows Metafile), который может быть изменен из командного 1 окна MATLAB с помощью команды File ► Preferences (правка ► предпочтения). 1 О Signal Properties (свойства сигнала) — вызов диалогового окна для установки 1 атрибутов сигнала, передаваемого по выделенной линии связи (рис. 6.4). В этом ) окне представлены следующие элементы: • поле Signal Name (имя сигнала) предназначено для ввода имени (текстовой * * метки) сигнала, которое отображается в блок-диаграмме рядом с соответству- t ющей линией связи (см. раздел «Возможные изменения»); • поле Description (описание) позволяет ввести пояснения к данному сигналу; • поле Document Li nk (связь с документом) предназначено для ввода выражения (команды) MATLAB, формирующего ссылку на источник дополнительной информации по данному сигналу; например, команда web( [ ’file://’which (' signal_doc. html') ]) означает, что дополнительная информация о сигнале хранится в файле signal_doc.html, для просмотра которого запускается исполь- зуемый по умолчанию броузер (для исполнения команды требуется щелкнуть на текстовой метке поля, то есть на имени сигнала); • если флажок Displayable (Test Point) (визуализация контрольной точки) уста- новлен, во время моделирования при наличии в линии связи сигнала она «подсвечивается». О Block Properties (свойства блока) — вызов диалогового окна для установки допол- нительных атрибутов выбранного блока (см. раздел «Общие свойства блоков» урока 4 «Библиотека блоков SIMULINK»). О Create Subsystem (создать подсистему) — выделенная часть S-модели (один или несколько блоков) «сворачиваются» в подсистему и заменяются в блок-диаг- рамме одним блоком — подсистемой. Применение данной команды требует оп- ределенной осторожности, поскольку отменить ее невозможно (команда Undo в этом случае бессильна).
Меню пользователя 243 Рис. 6.4. Окно установки атрибутов сигнала О Mask Subsystem (маскировать подсистему) — вызов редактора «маски» подсистемы. Команда доступна, если в блок-диаграмме выделена подсистема. Маскированная подсистема — это подсистема, используемая в модели как один неделимый блок, содержимое которого скрыто под «маской». В качестве маски используется, как правило, диалоговое окно настройки параметров (подобное окнам настройки библиотечных блоков). Если выбранная подсистема уже имеет «маску», то есть является маскированной, команда Mask Subsystem заменяется командой Edit Mask (правка маски). Техника создания маскированных подсистем рассматривается в уроке 7 «Подсистемы». О Look Under Mask (заглянуть под маску) — открытие окна блок-диаграммы маски- рованной подсистемы. Команда доступна только в том случае, если выделенный блок является маскированной подсистемой. О Go То Library Link (перейти к связанной библиотеке) — открытие раздела библио- теки, к которому относится выделенный блок. Команда доступна только в том случае, если блок относится к библиотеке пользователя или разделу Simulink Extras (расширения SIMULINK). О Break Library Link (разорвать связь с библиотекой) — позволяет сделать библио- течный блок «самостоятельным», не связанным с библиотекой, что обеспечивает возможность его редактирования. Данная команда доступна для тех же разделов библиотеки, что и предыдущая. О Unlock Library (разблокировать библиотеку) — доступна только в окне Library (библиотека). После выполнения команды становится возможным редактирова- ние соответствующего раздела, а на месте команды выводится сообщение Library Unlocked (библиотека разблокирована), которое сохраняется до закрытия окна редактируемого раздела.
244 Урок 6. Технология моделирования в среде SIMULINK О Update Diagram (обновить блок-диаграмму) — используется в следующих случаях: • после изменения (редактирования) библиотечных блоков, копии которых используются в модели; • после добавления в конфигурацию MATLAB нового раздела библиотеки, блоки которого используются в открытой модели; • после изменения параметров одного или нескольких блоков модели из ко- мандного окна MATLAB; • после изменения S-функции, используемой в модели (при добавлении или удалении входных и/или выходных портов соответствующего блока). Меню View Команды меню View (вид) предназначены, в основном, для управления форматом окна, а также некоторыми визуальными атрибутами элементов блок-диаграммы (рис. 6.5). О Toolbar (панель инструментов) — показать/скрыть панель инструментов. О Status Ваг (строка состояния) — показать/скрыть строку состояния. О Подменю Model Browser (просмотр модели), также показанное на рис. 6.5, обеспечи- вает доступ к трем командам, выбор каждой из которых ведет к открытию под- окна, отображающего иерархическую структуру модели в виде дерева (рис. 6.6). Щелчок на имени подсистемы позволяет увидеть ее содержимое в окне блок-диа- граммы (если модель не содержит ни одной подсистемы, то дерево будет состоять из одного корня). Подсистемы, содержащие вложенные подсистемы, дополняют- ся в дереве значками свертывания и развертывания (+ и -). Команды подменю Model Browser перечислены ниже: • Show Model Browser (показать подокно просмотра модели) — в подокне ото- бражаются не все блоки модели, а только подсистемы, причем не созданные пользователем и не маскированные; Щ unfilled’ ROB Рис. 6.5. Меню View
Меню пользовотеля 245 • Show Library Links (показать библиотечные связи) — в подокне отображаются подсистемы, созданные пользователем и включенные им в состав собствен- ной библиотеки: • Look Under Mask (заглянуть под маску) — в подокне отображаются маскирован- ные подсистемы. Рис. 6.6. Представление иерорхической структуры модели в отдельном подокне О Подменю Block Data Tips (подсказка по параметрам блока) обеспечивает доступ к командам управления всплывающей подсказкой (tips) для блоков модели (рис. 6.7): • Show Block Data Tips (показывать всплывающие подсказки) — вывод всплыва- ющей подсказки (состав которой задается следующими командами) при ко- роткой остановке указателя мыши на блоке (о том, что соответствующий ре- жим установлен, свидетельствует галочка рядом с именем команды); • Parameter Names and Values (имя и значение параметра) — показывать имена и значения параметров настройки блока; Рис. 6.7. Команды управления всплывающей подсказкой
246 Урок 6, Технология моделирования в среде SIMULINK • Attributes (атрибуты) — показывать содержимое строки атрибутов формати- рования, заданной в окне установки свойств блока (см. раздел «Общие свой- ства блоков» урока 4 «Библиотека блоков SIMULINK»); • Port Widths (ширина порта) — показывать состав и обозначения входных и вы- ходных портов блока; • User Description String (комментарий пользователя) — показывать коммента- рий, введенный в окне установки свойств блока (см. раздел «Общие свойства блоков» урока 4 «Библиотека блоков SIMULINK»). О Show Library Browser (показать окно просмотра библиотеки) — сделать активным окно просмотра библиотеки SIMULINK. О Zoom In (увеличить масштаб) — увеличить масштаб изображения блок-диаграммы. Каждое обращение к команде дает увеличение масштаба в полтора раза (на 50%). О Zoom Out (уменьшить масштаб) — уменьшить масштаб изображения блок-ди- аграммы. Каждое обращение к команде дает уменьшение масштаба в полтора раза. О Fit System to View (подготовить систему для просмотра) — увеличить масштаб отображения выделенного элемента с размещением его в центре окна блок-диа- граммы. Степень увеличения зависит от исходного размера элемента (повторное применение команды дополнительного эффекта не дает). О Normal (100%) (обычный (100%)) — восстановить стандартный масштаб изоб- ражения. Команда отменяет действие любой из трех команд изменения масш- таба. Меню Simulation Несмотря на то, что меню Simulation (моделирование) содержит всего три команды (рис. 6.8), именно они играют основную роль при проведении исследований на модели. Посредством этих команд разработчик получает возможность не только динамиче- ски управлять сеансом моделирования, но и изменять многие важнейшие параметры модели, такие, например, как способ изменения модельного времени и формат пред- ставления результатов моделирования. Ре os? ia < I Simulation Сигнал Step блок=1 Scope ВОВ Рис. 6.8. Меню Simulotion до зопуско модели (слева) и после запуска (справа)
Меню пользователя 247 В исходном состоянии (до запуска модели) меню содержит следующие команды (см. рис. 6.8, слева). О Start (пуск) — запуск модели на исполнение. При запуске модели команда Start заменяется командой Pause (пауза), которая позволяет приостановить сеанс мо- делирования (см. рис. 6.8, справа). О Stop (стоп) — завершить моделирование. Позволяет остановить моделирование досрочно (то есть либо до истечения заданного интервала моделирования, либо до реализации предусмотренных условий окончания сеанса моделирования). Команда становится доступной после запуска модели на исполнение. О Parameters (параметры) — открытие диалогового окна настройки параметров мо- делирования со следующими вкладками: • Solver (расчет) — установка параметров расчета модели; • Workspace I/O (обмен с рабочей областью) — установка параметров обмена данными с рабочей областью MATLAB; • Diagnostics (диагностика) — выбор уровня диагностики. Рассмотрим подробнее средства управления моделью и параметрами сеанса моде- лирования, которые предоставляет исследователю окно Simulation Parameters (пара- метры моделирования). Элементы управления на вкладке Solver собраны в три группы (рис. 6.9). О Simulation time (интервал моделирования) — выбор интервала моделирования посредством указания начального (Start time) и конечного (Stop time) значений модельного времени. Рис. 6.9. Вклодка Solver диалогового окна установки параметров моделирования
248 Урок 6. Технология моделирования в среде SIMULINK О Solver options (параметры расчета) — выбор метода реализации (расчета) модели. О Output options (параметры вывода) — параметры вывода выходных параметров моделируемой системы (при моделировании с переменным шагом). Под выбором метода реализации модели имеется в виду следующее. Имея структу- ру исследуемой системы в виде блок-диаграммы, разработчик может выбирать ме- тод отображения хода моделирования. С помощью двух раскрывающихся списков Туре (тип) система может быть реализована в следующих формах: О с дискретными состояниями и дискретным временем перехода из одного состоя- ния в другое; О с дискретными состояниями и непрерывным временем переходов; О с непрерывными состояниями и дискретным временем переходов; О с непрерывными состояниями и непрерывным временем переходов. Первый список (слева) позволяет выбрать способ изменения модельного времени: О Variable-step (переменный шаг) — моделирование с переменным шагом; О Fixed-step (фиксированный шаг) — моделирование с фиксированным шагом. Как правило, переменный шаг используется для моделирования непрерывных сис- тем, а фиксированный шаг — дискретных. Второй список (справа) позволяет выбрать метод расчета нового состояния систе- мы. Первый вариант (discrete) обеспечивает расчет дискретных состояний системы (и для непрерывного, и для дискретного времени переходов из состояния в состоя- ние). Остальные пункты списка обеспечивают выбор метода расчета нового состоя- ния для непрерывных систем. Эти методы различны для переменного (Variable-step) и для фиксированного (Fixed-step) шага времени, но основаны на единой методике — решении обыкновенных дифференциальных уровней (ODE). Подробное описание каждого из методов расчета состояний системы приведено во встроенной справоч- ной системе MATLAB (раздел matlab\funfun). Ниже двух раскрывающихся списков Туре находится поле, название которого изменя- ется в зависимости от выбранного способа изменения модельного времени. Для фик- сированного шага оно называется Fixed step size (величина фиксированного шага) и позволяет указывать величину шага моделирования. Для переменного шага оно на- зывается Max step size (максимальный шаг) и содержит максимальное значение шага моделирования. По умолчанг по для обоих способов изменения модельного времени величина шага устанавливается в auto (автоматически), что соответствует значе- нию (Тstop-Tstart )/50. Требуемая величина шага может быть введена вместо значе- ния auto либо в форме числовой константы, либо в виде вычисляемого выражения. При моделировашш непрерывных систем с использованием переменного шага необхо- димо указать точность вычислений в полях Relative tolerance (относительная точность) и Absolute tolerance (абсолютная точность). По умолчанию они равны соответственно 10‘3 и auto. Кроме того, для указанного класса систем можно задать начальное значение шага моделирования в поле Initial step size (начальная величина шага). По умолчанию — auto. При моделировании с переменным шагом также можно задавать параметры вывода выходных параметров моделируемой системы (Output options). Соответствующие настройки выполняются с помощью раскрывающегося списка и поля ввода.
Меню пользователя 249 Раскрывающийся список содержит три пункта, особенности использование i кото- рых поясняются ниже. О При выборе первого варианта — Refine output (скорректированный вывод) — можно изменять дискретность регистрации модельного времени и параметров модели, то есть тех величин, которые сохраняются в рабочей области MATLAB с помощью блока То Workspace (запись в рабочую область). Значение дискретности вводится в поле Refine factor (корректирующий множитель). По умолчанию это значение равно 1, означающее, что регистрация производится с шагом AtH=1 (то есть для каждого очередного значения модельного времени: 0,1,2,3 и т. д.). Это максимальный шаг регистрации. Значение Refine factor можно интерпретировать как относительную частоту регистрации: если, например, значение Refine factor равно 2, то AtK=1/2, если 3 — AtH =1/3 и т. д. Параметр Refine factor может прини- мать только целые положительные значения. О Второй вариант — Produce additional output (дополнительный вывод) — обеспе- чивает дополнительную регистрацию параметров модели в заданные моменты времени. Их значения вводятся в поле, которое в этом случае называется Output times (моменты вывода), в виде списка, заключенного в квадратные скобки. При использовании этого варианта базовый шаг регистрации (Atи) равен 1. Значения времени поле Output times могут быть дробными и иметь любую точность. О Третий вариант — Produce specified output only (формировать только заданный вывод) — устанавливает вывод параметров модели только в заданные моменты времени, которые указываются в поле Output times. На рис. 6.10 показана дискретность измерения системы при следующих параметрах вывода: О в раскрывающемся списке Output options выбран пункт Refine output, а в поле Refine factor задано значение 1 (сверху); О в раскрывающемся списке Output options выбран пункт Produce specified output only, а в поле Output times задано значение [6 8] (снизу). Если выбран способ моделирования с постоянным шагом, то под списком Туре вме- сто полей для указания точности вычислений появляется раскрывающийся список Mode (режим), который позволяет выбрать режим исполнения модели (рис. 6.11). О Режим MultiTasking (многозадачный) позволяет обнаруживать несоответствие временных параметров (скорости и дискретности) сигналов, пересылаемых между соседними (то есть соединенными непосредственно) блоками. Этот режим весьма полезен, когда создаваемая модель является прототипом системы реального времени, подсистемы которой представлены в модели параллельно работающи- ми компонентами. Для предотвращения подобных ситуаций могут быть исполь- зованы два блока из основной библиотеки SIMULINK: блок Unit Delay (задержка сигнала) обеспечивает согласование временных параметров сигнала, пересылае- мого из «медленного» выходного порта на «быстрый» входной порт, а блок Zero- Order Hold (экстраполятор нулевого порядка), наоборот, целесообразно поместить между «быстрым» выходным портом и «медленным» входным портом.
250 Урок 6. Технология моделирования в среде SIMULINK Рис. 6.10. Дискретность измерения системы при разных значениях параметров вывода Рис. 6.11. Вкладко Solver при моделировании с постоянным шагом
Меню пользователя 251 О Режим Si ngleTaski ng (однозадачный) используется для тех моделей, в которых недостаточно строгая синхронизация работы отдельных компонент не влияет на конечный результат моделирования. О Режим Auto позволяет SIMULINK автоматически устанавливать режим Multi- Tasking для тех моделей, в которых используются блоки с различными скоростя- ми передачи сигналов, и режим SingleTaski ng для моделей, в которых содержатся блоки, оперирующие одинаковыми скоростями. Вкладка Workspace I/O содержит элементы, позволяющие управлять вводом и выво- дом в рабочую область MATLAB промежуточных данных и результатов моделиро- вания (рис. 6.12). Рис. 6.12. Вкладка Workspoce I/O диалогового окна установки параметров моделирования Элементы управления вкладки собраны в три группы: С) Load from workspace (загрузка из рабочей области); О Save to workspace (записать в рабочую область); О Save options (параметры записи). В первой группе — Load from workspace — содержится две пары взаимосвязанных эле- ментов. О Если флажок Input (входные данные) установлен, то в расположенном справа поле можно ввести формат данных, которые будут считываться из рабочей обла- сти MATLAB (возможные варианты описания формата данных будут рассмотре- ны ниже).
252 Урок 6. Технология моделировония в среде SIMULINK О Установка флажка Initial state (начальное состояние) позволяет ввести в связан- ном с ним поле имя переменной, содержащей параметры начального состояния модели. Эта переменная может быть матрицей или структурой, но в любом случае ее формат должен совпадать с форматом переменной, в которой были сохранены параметры финального состояния модели в предыдущем сеансе моделирования. Такой подход позволяет реализовать «цепочку» модельных экспериментов, в которой результаты предыдущего эксперимента используются в качестве исход- ных данных для проведения следующего (возможно, на другой S-модели). Данные, указанные в полях Input и Initial state, передаются в исполняемую S-модель посредством одного или более блоков In (входной порт), входящего в раздел биб- лиотеки Signals & Systems (сигналы и системы). Параметры настройки блока In перечислены ниже (рис. 6.13). О Port number (номер порта) — номер входного порта модели, который «олицет- воряет» данный блок In. По умолчанию SIMULINK нумерует входные порты модели автоматически, присваивая им целочисленные номера в порядке воз- растания, однако при необходимости разработчик может изменить этот номер (учитывая, что номера портов должны быть уникальными для данного уровня иерархии). Рис. 6.13. Окно настройки блока In О Port width (ширина порта) — размерность входного порта блока. Значение-1 по- зволяет SIMULINK динамически изменять размерность входного порта, исходя из параметров входного сигнала.
Меню пользователя 253 О Sample time (эталонное время) —данный параметр, как и в других блоках, опреде- ляет скорость (или дискретность) изменения значения сигнала на входе блока. Если параметр равен -1, то скорость сигнала «наследуется» от предшествующего блока. О Data type (тип данных) — встроенный тип данных SIMULINK, который устанав- ливается для входного сигнала с помощью раскрывающегося списка. Возможные значения были рассмотрены ранее (см. раздел «Раздел Signals & Systems» в уро- ке 4 «Библиотека блоков SIMULINK»). О Signal type (тип сигнала) — определяет числовой формат представления ампли- туды сигнала. Возможные значения: real (вещественный), complex (комплексный) или auto. О Interpolate data (интерполяция данных) — установка данного флажка означает, что будет выполняться интерполяция (или экстраполяция) значений параметров, считанных из рабочей области. ЗАМЕЧАНИЕ Последние три параметра блока In используются только в том случае, если блок применяется для приема данных в модель самого верхнего уровня (то есть не является входным портом подсистемы). Форма описания данных в полях Input и Initial State зависит как от формата их хра- нения в рабочей области, так и от предполагаемого способа использования в модели. Поэтому, прежде чем изучать остальные параметры вкладки Workspace I/O, рас- смотрим форматы, в которых SIM ULINK позволяет сохранять данные в рабочей области. Формат Matrix. В формате Matrix данные сохраняются отдельно от вектора значе- ний времени получения. Матрица данных (U) имеет размерность MxN, каждый стол- бец которой содержит значения некоторого параметра модели (то есть число столб- цов N матрицы, равно числу параметров, считываемых в модель из рабочей области). Каждый элемент столбца — это значение параметра в соответствующий момент вре- мени, поэтому число строк М матрицы должно совпадать с числом элементов вектора значений времени (t). Элементы вектора времени должны быть упорядочены по возрастанию. При работе с данными в формате Mat rix в поле Input (входные данные) следует вве- сти [t U]. Например, пусть в рабочей области имеется вектор-столбец t, содержащий 5 эле- ментов, и матрица U размером 5x2:
254 Урок 6. Технология моделировония в среде SIMULINK Тогда прием значений из матрицы U в модель можно осуществить двумя способами: О с помощью двух блоков In (входной порт), у которых параметр Port width (шири- на порта) равен 1 (то есть блоки имеют скалярные входные порты), как показано на рис. 6.14 слева; О с помощью одного блока In, у которого параметр Port width равен 2, как показано на рис. 6.14 справа. Рис. 6.14. Ворионты приеме данных из рабочей области Формат Structure with time. В формате Structure with time данные сохраняются в виде’структуры (читатели, знакомые с языком С, должны вспомнить, что означает этот термин), которая содержит два основных поля: time, предназначенное для хра- нения вектора значений времени, и signals, в которое записывается массив значе- ний сохраняемых параметров. При работе с таким форматом в поле Input (входные данные) достаточно указать имя переменной, имеющей тип структура и содержащей данные, которые должны быть загружены в модель из рабочей области. Формат Structure. Формат Structure отличается от формата Structure with time только тем, что вектор значений времени пуст (хотя и присутствует в составе струк- турной переменной в качестве поля time). Данные, считываемые из рабочей области, «привязываются» к модельному времени исполняемой модели. Например, на пер- вом шаге используется первый элемент массива значений, на втором шаге — второй элемент, и т. д. В поле Input (входные данные), как и в предыдущем случае, достаточ- но указать имя переменной, содержащей данные, которые должны быть загружены в модель из рабочей области. Формат Per-Port Structures. При использовании формата Per-Port Structures в рабо- чей области должны присутствовать несколько структурных переменных, содержи- мое каждой из которых будет загружаться в модель по отдельному входному порту. Эти структурные переменные могут иметь различный формат — как St ructu re with time, так и Structure. В поле Input (входные данные) вводится список переменных, например, Datl, Dat2, Dat3. Формат Time Expression. ФорматПте Exoression позволяет динамически вычис- лять значения параметра, подаваемого на входной порт модели (через блок In), как функцию от модельного времени. В качестве такой функции может использоваться любое допустимое выражение MATLAB, например, Sin( t )+2. При вводе этого выра- жения в поле Input оно должно быть заключено в апострофы (одинарные кавычки).
Меню пользователя 255 Теперь вернемся к паре элементов, позволяющих инициировать модель с заданны- ми начальными значениями ее параметров. Для этого должен быть установлен фла- жок Initial state (начальное состояние). Требуемые параметры считываются при запуске модели из вектора-строки xlnitial. Число элементов этой строки (то есть число параметров состояния модели) должно быть равно числу столбцов матрицы, находящейся в рабочей области. Значения элементов строки xlnitial можно ввести в командном окне MATLAB следующим образом: xlnitial = [1, 2, 0.15] В данном примере предполагается, что состояние системы описывается тремя пара- метрами, первый из них в момент запуска модели примет значение, равное 1, вто- рой — равное 2, третий — равное 0.15. При необходимости имя xlnitial, используе- мое по умолчанию, может быть изменено. После знакомства с форматами хранения данных в рабочей области, вернемся к параметрам вкладки Workspace I/O (обмен с рабочей областью) диалогового окна Simulation Parameters (параметры моделирования). В группе Save to workspace (записать в рабочую область) содержится четыре флажка и связанные с ними поля. О Time (время) — позволяет указать имя вектора, в котором будут сохраняться ре- гистрируемые моменты модельного времени (по умолчанию вектор имеет- имя tout). О States (состояния) — при установленном флажке в матрице xout сохраняется теку- щее состояние моделируемой системы. Оно описывается совокупностью значений сигналов на выходах блоков, формирующих (вычисляющих) текущее состояние системы. При моделировании дискретных систем такими блоками являются, в частности, все блоки раздела Discrete (дискретные системы). SIMULINK автома- тически определяет число указанных блоков в модели и на основании этого фор- мирует матрицу xout. Число столбцов в матрице равно числу регистрируемых параметров текущего состояния системы, а число строк — числу актов регистра- ции. При желании разработчик может изменить имя матрицы. О Флажок Output (выходные данные) определяет возможность регистрации допол- нительных параметров модели в ходе моделирования. Если флажок установлен, то в соответствующем поле необходимо указать имя регистрируемого парамет- ра. Чтобы обеспечить запись значений данного параметра в рабочую область MATLAB, в модели должен присутствовать либо блок То Workspace (запись в рабо- чую область), либо блок Out (выходной порт). О Если флажок Final State (конечное состояние) установлен, то в рабочей области сохраняются только те значения параметров, которые были получены на послед- нем шаге моделирования. Они записываются в вектор-строку xFinal, которую можно либо вывести в командном окне MATLAB, либо использовать в качестве исходного состояния системы для последующих сеансов моделирования. Имя xFinal также может быть изменено разработчиком модели.
256 Урок 6. Технология моделирования в среде SIMULINK Упомянутый выше блок Out, как и блок In, входит в состав раздела Signals & Systems (сигналы и системы). Формат, в котором блок записывает в рабочую область сохра- няемые данные, зависит от значения, выбранного в раскрывающемся списке Format (формат) из группы Save options (параметры записи). Вместе с тем, блок имеет соб- ственные параметры настройки (рис. 6.15). О Port number (номер порта) — номер выходного порта модели, соответствующего данному блоку Out. По умолчанию SIMULINK нумерует выходные порты моде- ли, присваивая им целочисленные номера в порядке возрастания, однако при необходимости разработчик может изменить любой номер (учитывая, что номе- ра портов должны быть уникальными для данного уровня иерархии). О Output when disabled (выходной сигнал в отключенном состоянии) — режим фор- мирования сигнала на выходе блока. О Initial output (начальное значение выходного сигнала) — значение сигнала на вы- ходе блока в момент инициализации модели. Рис. 6.15. Окно настройки блока Out Последние два параметра используются только в том случае, когда блок входит в состав подсистемы, поэтому правила их установки будут пояснены в разделе «Е-под- системы» урока 7 «Подсистемы». Вернемся к рассмотрению параметров вкладки Workspace I/O диалогового окна Simulation Parameters. В группе Save options можно задать ограничения на число строк матрицы xout, установив флажок Limit rows to last (максимальное число строк) и введя значение в расположенное рядом поле. Кроме того, можно указать необходи- мость «прореживания» регистрируемых состояний системы, введя соответствую- щее значение в поле Decimation (дискретность). Имеется в виду следующее. Если значение параметра Decimation равно 1, то регистрация производится для всех мо- ментов времени, заданных в группе параметров Output options (параметры вывода)
Меню пользователя 257 на вкладке Solver (расчет). Если же значение параметра Decimation равно 2, то регис- трируется только каждое второе состояние системы, если 3 — только каждое третье, и т. д. В связи с этим необходимо отметить взаимосвязь параметров группы Output options вкладки Solver и группы Save options вкладки Workspace I/O. Объем регист- рируемой информации определяется выбранным сочетанием значений указанных параметров. Например, если в поле Output times (моменты вывода), относящемся к группе Output options, введена строка: [1, 5, 9, 11, 25], а в полях Limit rows to last и Decimation, относящихся к группе Save options, введены соответственно значения 4 й 2, то в матрице xout будут записаны состояния системы в моменты времени t=5 и t=11. Кроме того, уже упоминавшийся раскрывающийся список Format позволяет выбрать формат записи данных в рабочую область: О Matrix (матрица) — данные сохраняются в виде матрицы размером MxN, где N — количество сохраняемых величин (параметров модели), а М — число зарегист- рированных значений каждой из них (вектор значений моментов регистрации в матрице не сохраняется); О Structure with time (структура с полем времени) — данные, а также вектор значе- ний моментов регистрации сохраняются в структурной переменной; О Structure (структура) — в структурной переменной сохраняются только регист- рируемые данные. Независимо от выбранного формата, данные будут сохранены в рабочей области под именем, указанным в поле Output. Перечень и объем данных, записанных в рабочую область, можно увидеть, щелкнув на кнопке Workspace Browser (просмотр рабочей области) в панели инструментов ко- мандного окна MATLAB. В открывшемся окне отображается в виде таблицы пере- чень данных, содержащий их имена, формат и занимаемый объем памяти (в байтах), как показано на рис. 6.16. Рис. 6.16. Окно просмотре рабочей области
258 Урок 6. Технология моделирования в среде SIMULINK Из рисунка видно, что в приведенном примере результаты моделирования были сохранены в структурной переменной dat. Кроме того, в векторе-столбце tout были сохранены моменты времени регистрации записанных значений. Над данными, представленными в окне Workspace Browser, можно выполнить следующие действия (предварительно выделив интересующую переменную): О изменить имя переменной; О загрузить содержимое переменной в графический редактор/отладчик MATLAB, щелкнув на кнопке Open (открыть), хотя данная операция выполняется только для числовых данных и потому для структурных переменных, содержащих сим- вольные поля, недоступна (подробнее о работе с редактором/отладчиком будет рассказано в разделе «Возможные дополнения»); О удалить из рабочей области, щелкнув на кнопке Delete (удалить). Последняя вкладка диалогового окна Simulation Parameters — вкладка Diagnostics (диагностика) — показана на рис. 6.17. Она позволяет изменять номенклатуру ди- агностических сообщений, выводимых SIMULINK в командном окне MATLAB, а также устанавливать дополнительные параметры диагностики блок-диаграммы. Рис. 6.17. Вклодко Diagnostics окно установки параметров моделирования Сообщения об ошибках или проблемных ситуациях, обнаруженных SIMULINK в ходе моделирования и требующих вмешательства разработчика, выводятся в ко- мандном окне MATLAB. Исходный перечень таких ситуаций и вид реакции на них приведен в списке на вкладке Diagnostics. Разработчик не может изменить список событий, но он может указать вид реакции на каждое из них, используя группу пере-
Меню пользователя 259 ключателей Action (процедура). Переключатели становятся доступны, если в списке выделено одно из событий. В группе имеются следующие переключатели: О None(игнорировать); О Warning (предупреждение) — выдатьпредупреждение и продолжить моделирование; О Error (ошибка) — выдать сообщение об ошибке и остановить сеанс моделирования. Выбранный вид реакции отображается в списке рядом с именем события. Всего со- бытий девять: О Algebraic loop—в блок-диаграмме обнаружено «зацикливание» сигнала (сигнал пе- ремещается по замкнутому контуру, пример такой ситуации приведен на рис. 6.18); О Min step size violation— в процессе моделирования с переменным шагом (см. опи- сание вкладки Solver) шаг оказался меньше допустимого (ситуация такого типа не может игнорироваться, то есть переключатель None недоступен); О Unconnected block input—блок имеет неподключенный входной порт (указыва- ется имя и тип блока); О Unconnected block output—блок имеет неподключенный выходной порт (указы- вается имя и тип блока); О Unconnected line —линия связи не подсоединена ни к одному из блоков; О -1 sample time in source — параметр Sample time (эталонное время) имеет значе- ние -1 в блоке-«источнике» (такое значение может устанавливаться только для тех блоков, которые «наследуют» шаг времени от предшествующего блока); О Data overflow — вычисленное значение выходит за границы диапазона, установ- ленного для используемого типа данных; О Unneeded type conversions—явное преобразование типа данных— то есть приме- нение блока Data Type Conversion (приведение типа данных) — не требуется (для события такого типа переключатель Error недоступен); О int32 to float conversion — приведение данных из целочисленного формата int32 в формат с плавающей точкой может привести к некорректному результату. MATLAB ^1 Function MATLAB Fen *CD Outl Рис. 6.18. Пример блок-диаграммы, порождающей предупреждение Algebroic loop Раскрывающийся список Consistency checking (проверка согласованности) позволя- ет выбрать дополнительные средства отладки для модели, содержащей S-функции, основное предназначение которых — убедиться, что включенные в состав блок-ди- аграммы блоки S-Function (S-функция) работают корректно: О Off (отключить) — отключить проверку; О Warning (предупреждение) — при обнаружении несогласованности выдать пре- дупреждение и продолжить моделирование; О Error (ошибка) — при обнаружении несогласованности выдать сообщение об ошиб- ке и прервать моделирование.
260 Урок 6 Технология моделирования в среде SIMULINK Чтобы повысить скорость вычислений, SIMULINK сохраняет значения некоторых величин, полученные на очередном шаге моделирования, в специальном буфере (кэше), для использования их на следующем шаге. Если проверка согласованности разрешена, SIMULINK пересчитывает все значения на каждом шаге и сравнивает их с теми, которые хранятся в кэше. При несовпадении значений SI MU LINK сигнализи- рует об этом в соответствии со значением, выбранном в списке Consistency checking. Поскольку такая проверка может замедлять моделирование (почти в полтора раза), то обычно ее отключают; тем не менее, она может оказаться весьма полезной в тех случаях, когда при использовании S-функции результаты моделирования не соот- ветствуют ожидаемым. Установка флажка Disable zero crossing detection (игнорировать пересечение нулево- го уровня) запрещает реакцию на пересечение сигналом нулевого уровня (в тех бло- ках, режим работы которых зависит от этого события). У становка данного парамет- 1 ра не влияет на работу блока Hit Crossing (индикатор пересечения). Флажок Disable optimized block I/O storage (запретить оптимизацию операций ввода/ ’ вывода) позволяет управлять распределением буферной памяти SIMULINK. Если он .! снят, то все блоки, выполняющие операции ввода/вывода данных в рабочей облас- ти, используют общую область памяти. Если флажок установлен, то каждому блоку 1 выделяется отдельный буфер. Раздельное использование памяти ведет к увеличе- . нию ее расходования, поэтому такой режим следует рекомендовать только на этапе 1 отладки модели. В частности, следует запретить использование общей памяти в двух случаях: 1 О при отладке S-функций, реализованных на языке С в виде МЕХ-файлов; О при использовании блоков Scope (индикатор) и Display (экран) в «свободном» режиме (см. раздел «Раздел Sinks» в уроке 4 «Библиотека блоков SIMULINK»). Флажок Relax boolean type checking (смягчить контроль типа boolean) позволяет использовать данные типа dou ble в блоках, для которых по умолчанию поддержива- ется только тип boolean. На рис. 6.19 приведен пример блок-диаграммы, в которой блок Logical Operator (логический оператор) будет работать корректно только при установленном флажке Relax boolean type checking. Constant! Operator Рис. 6.19. Роботе блок-диогреммы при установленном флажке Relax boolean type checking Необходимо отметить, что в моделях, созданных с помощью SIMULINK 3, подоб- ные проблемы устраняются автоматически, и флажок Relax boolean type checking не- '<• обходим для корректной работы S-моделей, разработанных с использованием пре- | дыдущих версий SIMULINK (2.x).
Меню пользователя 261 Завершая обсуждение вопросов, связанных с управлением диагностикой S-модр- лей, отметим наличие в SIMULINK средств визуализации обнаруженных ошибок. Информация о наличии ошибки, а также дополнительные сведения, полезные для ее устранения, предоставляются пользователю одновременно двумя способами: О путем открытия специального диалогового окна Simulation Diagnostics (диагнос- тика моделирования); О визуальной идентификацией вызвавших ошибку блоков непосредственно в окне блок-диаграммы. Например, на рис. 6.20 показаны «последствия» ошибки в модели, приводившейся на рис. 6.19, обусловленные снятием флажка Relax boolean type checking. Рис. 6.20. Визуализация результатов диагностики блок-диаграммы Окно Simulation Diagnostics содержит два горизонтальных подокна. В верхнем ото- бражается список обнаруженных ошибок и сведения об их источнике, а в нижнем подокне выводится более подробное описание ошибки и возможные способы ее ус- транения. Данная информация изменяется в зависимости от того, какая строка вы- делена в списке ошибок. Список ошибок, представленный в форме таблицы, позволяет получить следующие сведения: О Message (сообщение) — сообщение о типе ошибки (например, некорректное ис- пользование блока — block error, логическая ошибка — 1од,ит. д.); О Source (источник) — имя элемента модели, вызвавшего ошибку; О Fullpath (полный путь) — местоположение элемента модели, вызвавшего ошибку (описывается как полный путь доступа к нему); О Summary (описание) — краткая характеристика ошибки; О Reported by (компонент источника) — компонент, к которому относится ошибка (име- ется в виду, что в модели могут присутствовать блоки или иные элементы, относя- щиеся кдругим компонентам MATLAB, например, Stateflow, Real-Time Workshop и т. д.).
262 Урок 6. Технология моделирования в среде SIMULINK Расположенная в нижней части окна кнопка Open (открыть) позволяет активи- зировать (или открыть) окно, содержащее источник ошибки, либо предоставля- ющее о нем дополнительные сведения. Например, если источником ошибки явля- ется подсистема, то будет открыто окно блок-диаграммы этой подсистемы, если же источником ошибки является блок, то открывается окно настройки параметров блока. Меню Format В меню Format (формат) собраны команды, позволяющие изменить внешнее пред- ставление (оформление) блок-диаграммы. По предназначению команды разделены на четыре группы (рис. 6.21). Рис. 6.21. Меню Formot Первую группу образуют команды, действие которых распространяется на выделен- ный блок (или группу блоков): О Font (шрифт) — выбор шрифта для текстовой информации, выводимой внутри блока, и для метки (имени) блока; О Flip Name (сменить положение имени) — изменить положение имени блока (над или под блоком); О Hide Name/Show Name (скрыть/показатьимя); О Flip Block (развернуть блок) — развернуть блок на 180°;
Меню пользовотеля 263 О Rotate Block (повернуть блок) — повернуть блок относительно вертикальной оси на 90° (по часовой стрелке); О Show/Hide Drop Shadow (показать/скрыть «тень»). Ко второй группе отнесена единственная команда — Hide/Show Port Labels (скрыть/ показать метки портов). Данная команда применима только к подсистемам, содер- жащим блоки In (входной порт) и Out (выходной порт). Если такие блоки имеются в подсистеме, то их метки по умолчанию выводятся на рисунке блока-подсистемы. Третью группу образуют подменю с командами изменения цветовой палитры блок- диаграммы: О Foreground Color (основной цвет) — выбор цвета контура и символов для выделен- ного блока(группы блоков); О Ba ckgrou n d Color ( цвет фона) — выбор цвета фона для выделенного блока (группы блоков); О Screen Color (цвет экрана) — выбор цвета для фона всей блок-диаграммы. Команды четвертой группы позволяют изменять некоторые параметры линий связи блок-диаграммы: О Sample Time Colors (индикация эталонного времени) — блоки, работа которых зави- сит от величины шага модельного времени, а также соединяющие их линии связи при выполнении данной команды выделяются на блок-диаграмме красным цветом; О Wide Vector Lines (расширение векторных линий связи) — линии связи, по кото- рым передаются векторные величины, становятся толще; О Vector Line Widths (ширина векторных линий связи) — для «векторных» линий связи выводится в цифровой форме размерность передаваемого сигнала (то есть число элементов вектора); О Port Data Types (тип порта) — рядом с линиями связи отображаются наименова- ния типов данных, установленных для портов, с которыми они соединены. На рис. 6.22 слева показан результат применения команд Wide Vector Lines и Vector Line Widths, а справа — команды Port Data Types. Constant! Constant! Рис. 6.22. Визуализоция «векторных» линий связи Разумеется, рассмотренные параметры управления форматом вывода линий связи полезны не только с точки зрения оформления создаваемой блок-диаграммы. Основное их назначение — помощь разработчику S-модели на этапе ее отладки. В связи с этим необходимо отметить, что одной из весьма распространенных ошибок
264 Урок 6. Технология моделирования в среде SIMULINK при построении S-модели, выявляемых SIMULINK, является несоответствие раз- мерности входных и выходных портов соседних блоков. В случае обнаружения такой ошибки SIMULINK принудительно выводит на блок-диаграмме размерность векторных сигналов. Первая модель Возможность использования технологии drag-and-drop («перетащи и оставь») — одно из основных достоинств практически всех Windows-приложений. Смысл ее заключается в том, что пользователь может «перетаскивать» выделенный объект из одного окна в другое. При этом окна могут принадлежать как одному, так и разным приложениям. Реализация технологии drag-and-drop возможна только благодаря особенностям платформы Windows: многозадачности и наличию графического пользовательского интерфейса. Хотя в последнее время интерфейс такого типа все чаще обозначают тремя буквами — GUI ( Graphics User I nterface), не так давно вместо них использова- лась более благозвучная аббревиатура — WIMP. Она образована начальными бук- вами четырех английских слов: Windows (окна), Icons (значки), Mouse (мышь) и Pop- up (всплывающее меню). Эти термины и соответствующие им объекты составляют основу любого многооконного графического интерфейса. Какая же связь между понятием WIMP-интерфейса и разработкой моделей с помощью SI М ULIN К? Самая непосредственная: для визуального программирования необходи- мо наличие как минимум двух открытых окон. При первоначальном запуске SIM U- LINK такими окнами, например, являются окно просмотра библиотеки (Simulink Library Browser) и пустое окно блок-диаграммы модели (untitled). После этих предварительных замечаний вернемся к условиям задачи, рассмотрен- ной при знакомстве с блоком Combinatorial Logic (комбинаторика) из раздела Math (математические блоки) основной библиотеки SIMULINK. Напомним, речь шла об описании поведения человека (конечного детерминированного автомата) при поис- ке информации в Интернете (см. описание табл. 4.4 в разделе «Раздел Math» уро- ка 4 «Библиотека блоков SIMULINK»). Итак, приступим к созданию модели. Откройте указанный раздел библиотеки и отыщите в нем нужный блок. Поместите указатель на значок или имя блока, нажмите кнопку мыши и, не отпуская ее, отбук- сируйте изображение блока в окно untitled. Отпустите кнопку мыши. В здание буду- щей S-модели положен первый «кирпич». Поскольку размер «постройки» заранее неизвестен, целесообразно разместить его в центре окна блок-диаграммы. Если сра- зу этого сделать не удалось, перетащите блок в нужное место с помощью мыши. На следующем шаге можно добавить в модель элементы, соответствующие двум другим объектам рассматриваемой задачи — Web-узлам, которые мы обозначили как Сайт 1 и Сайт 2. Будем считать, что за время поиска содержимое узлов не обнов- ляется (остается постоянным). Поэтому каждый из них в модели будет представлен
Первая модель 265 блоком Constant (константа) из раздела Sources (источники) библиотеки. Откройте этот раздел, найдите нужный блок и отбуксируйте его в левую часть окна блок-диа- граммы. Чтобы поместить в блок-диаграмму второй блок Constant, есть три пути: О повторить еще раз операцию перетаскивания блока из раздела библиотеки; О воспользоваться командами Сору (копировать) и Paste (вставить) меню Edit (правка); О использовать дополнительные преимущества перетаскивания. Пойдем по третьему пути. Поместите указатель мыши на блок Constant в блок-диаграмме создаваемой модели и нажмите левую кнопку мыши. Справа от указателя появится белый крестик. Не отпуская кнопки мыши, переместите указатель в ту точку диаграммы, куда нуж- но вставить второй блок Constant. Отпустив кнопку мыши, вы увидите его. Обрати- те внимание, что имя (метка) этого блока несколько изменилась: он называется Constantl. Объясняется это тем, что каждый блок, включенный в блок-диаграмму, должен иметь уникальное имя. Если бы в модели использовалось пять блоков Constant, то последний из них получил бы имя Constants Аналогичным образом именуются все блоки, используемые в модели. Чтобы создаваемая модель более наглядно отражала существо рассматриваемой задачи, заменим метки блоков новыми. Начнем с блока Combinatorial Logic. Щелкни- те на имени блока. Имя блока окажется заключенным в прямоугольную рамку, а ука- затель примет форму вертикальной мерцающей черты (то есть превратится в кур- сор). Используя клавиатуру, удалите стандартное имя блока и замените его именем Посетитель. Щелкните вне текстовой области. Рамка исчезнет. Выполните аналогич- ные действия с блоками Constant и Constantl (замените их названия именами Сайт1 и Сайт2 соответственно). ЗАМЕЧАНИЕ Все блоки в блок-диогромме обязательно должны иметь имя — либо предло- женное SIMULINK, либо нозноченное розработчиком модели; поэтому нельзя сделоть блок «безымянным», используя клавишу Del или Bockspoce. Имя блока можно только «скрыть» с помощью команды Hide Nome (скрыть имя) меню Formot (формат). Вернемся к созданию модели. Блок Combinatorial Logic имеет ту особенность, что на его вход может поступать только один сигнал. А Посетитель должен получить ин- формацию о состоянии обоих узлов. Как быть? Необходимо объединить два сигна- ла в один. Эту задачу можно решить с помощью блока Мих (смеситель) из раздела Signals & Systems (сигналы и системы). Найдите его и поместите в блок-диаграмме слева от блока Посетитель. Теперь можно соединить блоки, помещенные в поле блок-диаграммы, в соответ- ствии с логикой их взаимодействия: сигналы с выходов блоков Сайт1 и Сайт2 долж- ны поступать на входы блока Мих, а объединенный сигнал с его выхода — передавать- ся на вход блока Посетитель. Для более удобного соединения блоков Сайт1 и Сайт2 с
266 Урок 6. Технология моделировония в среде SIMULINK блоком Мих целесообразно немного «растянуть» последний по вертикали. Выделите указанный блок, подведите указатель к одному из его углов и «потяните» изображе- ние в вертикальном направлении. После соединения блоков модель будет выглядеть приблизительно так, как показано на рис. 6.23. Сайт? Рис. 6.23. Блок-диогроммо первой модели Однако проводить эксперимент с полученной моделью пока рано: О во-первых, мы не описали логику поведения Посетителя для различных значе- ний входного сигнала; О во-вторых, в модели отсутствуют средства, позволяющие увидеть результаты моделирования. Сначала изменим таблицу истинности блока Посетитель. Откройте окно настроек параметров блока (двойным щелчком на блоке). В соответствии с оговоренными ранее правилами поведения Посетителя, параметр Truth table (таблица истинности), как показано на рис. 6.24, должен быть задан следующим образом: [О 0 1; 0 1 1; 1 0 1; 1 0 1] Напомним, что значения входного сигнала в явном виде в таблице истинности не приводятся, задается только значение выходного сигнала. Рис. 6.24. Зодоние тоблицы истинности Для отображения результатов работы модели используем блок Display (экран) из раздела Si nks (получатели). Отыщите указанный блок и поместите в окно блок-диаг- раммы, правее блока Посетитель. Соедините вход блока Display с выходом блока Посе- титель (рис. 6.25).
Первой модель 267 Сайт2 Рис. 6.25. Включение в блок-диогромму блоко Disploy Создание модели завершено. Конечно, ее внешний вид и форму представления ре- зультатов можно улучшить, но этим мы займемся немного позже. Сейчас давайте убедимся в работоспособности полученной модели. Значения констант Сайт1 и Сайт2 оставим равными 0 (то есть будем считать, что ни тот, ни другой узел требуемую информацию не содержит). Используя команду Simulation ► Start (моделирование ► пуск) или соответствующую кнопку панели инструментов, запустите модель на исполнение. Поскольку модель весьма проста, сеанс моделирования заканчивается очень быстро, о чем свидетельствует характер- ный звуковой «щелчок» компьютера. Кроме того, в правом нижнем углу блока Display должен появиться небольшой черный треугольник. Напомним, он служит признаком того, что выходной сигнал является векторной величиной. В рассматри- ваемом примере выходной вектор состоит из трех элементов (в соответствии с за- данной таблицей истинности). Чтобы увидеть значения всех элементов вектора, не- обходимо «растянуть» блок Display по вертикали. Для этого блок следует выделить, подвести указатель к одному из его нижних углов и, нажав кнопку мыши, перемес- тить указатель вниз. Когда значения всех трех элементов станут видимыми, отпус- тите кнопку мыши. Как и следовало ожидать, элементы вектора равны соответствен- но 0,0,1 (рис. 6.26). Рис. 6.26. Представление результатов роботы модели с помощью блоко Display В созданной нами модели практически все блоки использовались с параметрами, установленными по умолчанию. То же самое можно сказать и о параметрах модели в целом. В двух следующих разделах речь пойдет о том, каким образом можно скор- ректировать параметры модели, чтобы они наиболее полно отвечали как интересам исследования, так и эстетическим пристрастиям разработчика. Возможные изменения Прежде всего, необходимо сохранить созданную модель (она нам еще понадобится), записав файл с блок-диаграммой на жесткий или гибкий диск.
268 Урок 6. Технология моделирования в среде SIMULINK Воспользуйтесь для этого командой File ► Save as (файл ► сохранить как). Выберите папку, в которую будет записываться файл, и введите какое-нибудь имя для него, более содержательное, чем untitled, например, Choice (выбор). В соответствии с установленными по умолчанию параметрами, расчет созданной нами модели выполнялся с переменным шагом в течение 10 единиц времени. Вместе с тем, исходя из условий задачи, результат становится известен уже на первом шаге моделирования. Чтобы избавить SIMULINK от лишней работы, необходимо изме- нить параметры сеанса моделирования. В окне блок-диаграммы модели откройте меню Simulation (моделирование) и выбе- рите команду Parameters (параметры). В открывшемся диалоговом окне перейдите на вкладку Solver (расчет) и в первом (слева) раскрывающемся списке Туре (тип) вместо выбранного по умолчанию значения Variable-step (переменный шаг) выберите вариант Fixed-step (фиксированный шаг). При этом во втором (справа) раскрываю- щемся списке автоматически будет выбран вариант discrete (дискретный), опреде- ляющий метод расчета состояний. Далее в поле Fixed step size (величина фиксиро- ванного шага) установите величину шага моделирования равной 1. И, наконец, еще один параметр, который должен быть скорректирован — это длительность интерва- ла моделирования. Измените значение в поле Stop time (конечное время) с 10 на 1. В результате окно Simulation parameters (параметры моделирования) должно выгля- деть так, как показано на рис. 6.27. Рис. 6.27. Окно установки парометров модели Choice Чтобы установленные параметры вступили в силу, щелкните на кнопке ОК или Apply (применить) в нижней части окна.
Первой модель 269 Теперь вернемся к блок-диаграмме модели Choice и подготовим ее для проведения сеанса моделирования с новыми параметрами. Подготовка будет заключаться в из- менении значений констант Сай г 1 и Сайт2. Предположим, что объем интересующих Посетителя сведений на первом узле составляет 4 Мбайт, а на втором — 2 Мбайт. Чтобы внести указанные изменения в модель, необходимо для каждого из блоков Са йт выполнить одну и ту же последовательность действий. 1. Откройте окно параметров настройки блока (дважды щелкнув на блоке). 2. Замените 0 соответствующим значением (4 или 2); 3. Инициализируйте внесенные в модель изменения (щелкнув на кнопке ОК или Apply). После этого запустите модель на исполнение и понаблюдайте за индикатором изме- нения модельного времени в строке состояния окна блок-диаграммы. У спели? Если нет, значит вы все сделали правильно. Результат моделирования должен совпасть с тем, который показан на рис. 6.28. Рис. 6.28. Результот моделирования после внесения изменений в модель С любой моделью тем удобнее и приятнее работать, чем больше она содержит различ- ных текстовых комментариев. Причем, чем сложнее модель, тем больше должно быть пояснений по ее использованию. Созданная нами модель Choice к сложным явно не относится, тем не менее, снабдим ее дополнительной текстовой информацией. Начнем с заголовка. Лучше всего поместить его там, где обычно находятся все заголов- ки — в верхней части окна. Если в вашем варианте модели места там недостаточно, выполните следующие подготовительные действия. Выберите команду Edit ► Select All (правка ► выделить все). В результате ее выполнения все элементы блок-диаграм- мы (и блоки, и линии связи) окажутся выделенными. Подведите указатель мыши к любому из элементов модели и нажмите левую кнопку мыши. Не отпуская ее, пере- местите указатель вниз. Вы увидите, что контуры блоков диаграммы также будут перемещаться. Когда они займут нужное положение, отпустите кнопку мыши. После этого диаграмма будет воспроизведена на новом месте.
270 Урок 6. Технология моделирования в среде SIMULINK Дважды щелкните в той точке окна, где, по вашему мнению, должен находиться центр заголовка. В окне появятся прямоугольная выделяющая рамка и курсор, обозна- чающий позицию ввода первого символа. Введите с клавиатуры заголовок, который, на ваш взгляд, отображал бы назначение модели (например, «Исследование конечного автомата» или «Выбор узла»). Закончив ввод, щелкните вне текстовой области. По умолчанию для ввода текста используется шрифт с размером символов 10 пикселов, что для заголовка явно недостаточно. Чтобы изменить размер шрифта, щелкните в текстовой области (можно дважды). После этого выберите команду Format ► Font (формат ► шрифт). Используя открывающееся диалоговое окно, выберите для заго- ловка подходящие шрифт, начертание и размер шрифта. Если после этого возникнет необходимость изменить местоположение заголовка, перетащите текстовую область мышью в нужном направлении так же, как вы перетаскивали блоки. Аналогичным образом можно создать текстовые комментарии в любой точке окна блок-диаграммы (рис. 6.29). Рис. 6.29. Дополнение блок-диогроммы текстовыми комментариями Наглядность блок-диаграмм, содержащих большое число блоков, во многом зави- сит от выбора формы и расположения всех элементов диаграммы, в том числе от конфигурации линий связи. Ниже описаны некоторые основные приемы их редак- тирования. Так как в нашей модели используются векторные сигналы, целесообразно отразить этот факт визуально, воспользовавшись командой Format ► Wide Vector Lines (фор- мат ► расширение векторных линий связи). После ее применения линии связи меж- ду блоками Мих, Посетитель и Display станут вдвое толще других. Теперь поговорим о способах изменения конфигурации линий связи. Прежде всего, необходимо отметить, что при связывании блоков (то есть при создании новой ли- нии связи) SIMULINK самостоятельно пытается подобрать наиболее удачную кон- фигурацию линии. Тем не менее, если предложенный вариант вас не устраивает, вы можете скорректировать линию связи вручную. С этой целью ее сначала требуется выделить (щелчком на любом участке линии). На выделенной линии связи «изломы» отмечаются маркерами. Чтобы изменить форму линии, необходимо установить указатель мыши на маркер (указатель превра- тится в белую окружность), нажать левую кнопку мыши и, не отпуская ее, перемес-
Первая модель 271 тить указатель в нужном направлении. Таким образом, можно изменить длину пря- мых участков линии, либо вообще убрать лишние «изломы». Чтобы изменить положение прямых отрезков, можно использовать другой способ. Установите указатель на редактируемый отрезок и нажмите кнопку мыши — указа- тель примет форму черно-белого ромба. Не отпуская кнопки мыши, переместите указатель в нужном направлении (горизонтальном или вертикальном). При создании новой линии связи или при перемещении связанных блоков SIMU- LINK старается выбрать для линий связи кратчайший маршрут. Если вы хотите самостоятельно указать маршрут связывания блоков, можно поступить следующим образом. Подведите указатель к выходному порту блока, который вы хотите связать с одним из последующих блоков модели. Указатель примет форму черного крестика. Нажми- те кнопку мыши и, не отпуская ее, переместите указатель. За ним потянется контур будущей линии связи. Чтобы изменить направление движения, отпустите, затем вновь нажмите кнопку мыши и продолжите движение в нужном направлении. Обратите внимание: перемещаемый конец линии связи оканчивается тонкой стрел- кой. После того как траектория будет нарисована, входной порт присоединяемого блока нужно состыковать с упомянутой стрелкой. Если стыковка прошла успешно, стрелка примет уже знакомую вам форму. Если один из отрезков линии связи должен быть расположен под углом (отличным от прямого), то при его рисовании следует нажать клавишу Shift и отпустить ее толь- ко после того, как рисование этого отрезка будет завершено. Один и тот же блок может быть соединен по выходу с двумя (или более) блоками. Чтобы создать дополнительную линию связи, необходимо выполнить следующие действия. 1. Соедините блок с одним из блоков, на которые должен передаваться сигнал (создан- ную линию связи будем считать основной). 2. Подведите указатель к входному порту не подсоединенного блока, нажмите кнопку мыши и, не отпуская ее, протащите контур новой линии связи до пересечения с основной. Когда указатель примет форму двойного крестика, отпустите кнопку мыши. В результате на основной линии связи появится точка соединения. Если создается более одной дополнительной линии связи, то их можно замыкать как на уже созданную точку соединения, так и на любую другую точку основной или дополнительной линии связи. Может также быть создана дополнительная линия связи, начинающаяся в произволь- ной точке поля блок-диаграммы. Для рисования такой линии необходимо проделать следующую процедуру. 1. Выберите начальную точку линии, установив в ней указатель мыши. 2. Нажмите клавишу Ctrl, затем — левую кнопку мыши и, не отпуская их, протяните контур создаваемой линии до пересечения с основной линией связи. Вместо одновременного нажатия клавиши Ctrl и кнопки мыши можно получить тот же результат с помощью правой кнопки мыши.
272 Урок 6. Технология моделировония в среде SIMULINK При необходимости точка соединения может быть перемещена вдоль линии связи на другое место. Для этого следует просто перетащить точку соединения мышью. Выходящие из нее линии связи будут перерисованы автоматически. Графические возможности SIMULINK при создании линий связи иллюстрирует рис. 6.30. Рис. 6.30. Иллюстроция трофических возможностей SIMULINK Важным достоинством графического редактора SIMULINK является также его спо- собность «вставлять» новый блок непосредственно в существующую линию связи. Предположим, что при создании нашей первой модели мы забыли поместить между блоками Михи Display блок Combinatorial Logic. Чтобы исправить ошибку, не требует- ся удалять линию, связывающую блоки Мих и Display. Достаточно просто поместить на нее забытый блок. На рис. 6.31 сверху показан процесс перетаскивания блока По- сетитель2, а снизу — его окончание. Сайт4 Рис. 6.31. Вставка блока в существующую линию связи
Первая модель 273 Отдельного рассмотрения требует такое понятие, как метка сигнала (signal label). Она представляет собой произвольную последовательность символов и может состоять даже из нескольких слов. Основное отличие метки сигнала от имени блока состоит в том, что программа способна автоматически воспроизводить метку сигнала в любой точке блок-диаграммы, где присутствует помеченный сигнал. Это относится и к таким ситуациям, когда сигнал пересылается с одного уровня иерархии модели на другой. Например, если помеченный сигнал сформирован в блок-диаграмме само- го верхнего уровня, а затем используется в нескольких вложенных подсистемах, то SIMULINK по желанию разработчика может воспроизвести метку сигнала в каждой из них. Метка сигнала может быть создана двумя способами. О Непосредственно в блок-диаграмме. В этом случае требуется дважды щелкнуть на соответствующей линии связи; в результате рядом с ней появится выделяющая рамка, похожая на рамку обычного текстового поля. После этого останется только ввести с клавиатуры подходящее имя и щелкнуть за пределами поля метки. Имей- те в виду, если при попытке создать метку сигнала вы щелкните дважды не на линии связи, а рядом с ней, то будет создано обычное текстовое поле. Чтобы убе- диться в том, что этого не произошло, переместите отрезок линии связи, возле которого находится метка: если она также переместилась — вы все сделали пра- вильно. О С помощью диалогового окна Signal Properties (свойства сигнала). Напомним, что оно открывается при выборе одноименной команды в меню Edit (правка) окна блок-диаграммы (предварительно линия связи должна быть выделена). В этом случае метку сигнала следует ввести в поле Signal name (имя сигнала) и щелкнуть на кнопке ОК или Apply (применить). Введенное имя сигнала появится в блок- диаграмме рядом с выделенной линией связи. На рис. 6.32 приведен пример создания метки для выходного сигнала блока Посетител ь нашей первой модели (показан также результат перемещения метки вместе с лини- ей связи). Display Самг2 Рис. 6.32. Пример создония метки сигноло После создания метки с ней может быть выполнен ряд манипуляций, направленных на улучшение зрительного восприятия блок-диаграммы, в частности: О чтобы установить новые атрибуты шрифта, следует выделить линию связи, вы- брать команду Edit ► Font;
274 Урок 6. Технология моделировония в среде SIMULINK О чтобы изменить местоположения метки, воспользуйтесь приемами перетаскива- ния обычного текстового поля, с той лишь разницей, что область перемещения : метки ограничена пространством возле линии связи; : О чтобы повторить метку на нескольких участках линии связи (это имеет смысл, если линия связи имеет большую протяженность и/или сложную конфигура- цию), создайте копии метки, перетаскивая ее при нажатой клавише Ctrl; О чтобы удалить метку, достаточно удалить все ее символы, используя клавишу Del или Backspace (при этом будут удалены также все ее копии, и, кроме того, будет очищено поле Signal name в окне Signal Properties); О чтобы удалить только копию метки, щелчком выделите копию при нажатой кла- више Shift, а затем нажмите клавишу Del. Выше было сказано, что SIM ULIN К обеспечивает возможность автоматического воспроизведения метки сигнала в любой точке блок-диаграммы, где присутствует помеченный сигнал. Как использовать эту возможность при создании подсистем, будет рассказано в ходе следующего урока. Сейчас рассмотрим другой вариант при- менения этой возможности. В качестве иллюстрации опять воспользуемся моделью Choice. Допустим, мы хотим «заставить» SIMULINK автоматически создать метку сигнала на выходе блока Мих. Как вы помните, это векторный сигнал, содержащий две компоненты: сигнал с блока Сайт1 и сигнал с блока Сайт2. Для решения поставлен- ной задачи необходимо выполнить следующую процедуру. 1. Присвойте метки двум указанным сигналам, например Инф1 и Инф2. 2. Для выходного сигнала блока Мих создайте метку, состоящую из единственного символа — открывающей угловой скобки <. Результат этих двух шагов показан на рис. 6.33 сверху. 3. Выберите команду Edit ► Update Diagram (правка ► обновить блок-диаграмму). В результате модель будет выглядеть так, как показано на рис. 6.33 снизу. Сайгё Сайг2 Рис. 6.33. Пример автоматической генерации метки сигнала
Первая модель 275 Если бы сигнал с выхода блока Мих использовался в каких-либо других компонен- тах модели и был там помечен символом <, вместо него везде генерировалась бы метка<Инф1, Инф2>. Разумеется, к возможным изменениям созданной блок-диаграммы относятся также изменения цветовой гаммы и геометрических размеров входящих в нее блоков, до- бавление «теней» и т. д. Особенности использования соответствующих команд чи- тателю предлагается опробовать самостоятельно. Возможные добавления В данном разделе речь пойдет уже не столько об изменении внешних атрибутов блок-диаграммы, сколько о возможных способах повышения технологичности мо- дельного эксперимента. Весьма существенным недостатком созданной нами модели является то, что она не позволяет сохранять результаты, полученные в ходе очередного сеанса моделирова- ния. Этот недостаток можно устранить с помощью следующих блоков: О Out (выходной порт); О То Workspace (запись в рабочую область); О То File (запись в файл); О Scope (индикатор). Краткая характеристика трех последних блоков была дана при описании раздела Si n ks (получатели) библиотеки SIMULINK (см. раздел «Раздел Sinks» в уроке 4 «Биб- лиотека блоков SIMULINK»). Напомним, что блок То Workspace обеспечивает сохра- нение выходных и промежуточных результатов моделирования в рабочей области MATLAB, а блок То File — в файле на жестком или гибком диске. Рассмотрим особенности использования этих блоков применительно к модели Choice. Начнем с блока То Workspace. Откройте раздел Si n ks, найдите указанный блок и отбуксируйте его в блок-диаграм- му модели. Подсоедините блок к линии связи, идущей от блока Посетитель к блоку Display (экран) и, сохраняя русскоязычное направление в создании модели, смените имя блока То Workspace на Запись (рис. 6.34). Рис. 6.34. Сохранение результатов моделирования с помощью блока То Workspace
276 Урок 6. Технология моделирования в среде SIMULINK Теперь скорректируем параметры блока. Откройте окно настроек. Первый пара- метр — Variable name (имя переменной) — на работу блока не влияет и определяет только имя, под которым будет сохранена соответствующая величина (по умолча- нию simoiit). Имена переменных, сохраняемыхв рабочей области, должны содержать только латинские символы. Поэтому в отношении первого параметра ограничимся тем, что сократим исходное имя до Sim. При щелчке на кнопке Apply (применить) внесенное изменение отображается внутри блока в блок-диаграмме модели. Кроме того, изменим формат сохраняемых данных. Выберите в раскрывающемся списке Save format (формат записи) вариант Matrix (матрица) и щелкните на кнопке ОК, чтобы закрыть окно настроек. Остальные параметры блока пока корректировать не будем. Запустите модель на исполнение. По окончании сеанса моделирования откройте командное окно MATLAB. В ак- тивной строке (то есть в строке, содержащей приглашение » и курсор), набе- рите имя переменной Sim и нажмите клавишу Enter. В качестве ответа MATLAB выведет в окно содержимое матрицы Sim, имеющей размер 2x3, как показано на рис. 6.35. Рис. 6.35. Вывод результатов моделировония в комондном окне MATLAB Число элементов в строке (3) равно размерности выходного вектора, а число строк (2) определяется периодичностью регистрации результатов моделирования. Напом- ним, что перед вторым экспериментом на модели мы установили следующие пара- метры моделирования: ввели значение 1 в поля Stop time (конечное время) и Fixed step size (величина фиксированного шага). В результате регистрация данных выполняется дважды: на первом шаге модели- рования (когда модельное время равно 0) и на втором, последнем шаге (когда модельное время равно 1). В нашем случае и такой объем данных является из- быточным, так как состояние модели, вычисленное на первом шаге, остается не- изменным на всем интервале моделирования. Другими словами, вполне достаточ-
Первой модель 277 но, чтобы матрица Sim содержала всего одну строку. Этого можно добиться двумя способами: О задать нулевую длительность интервала моделирования, выбрав команду Simu- lation ► Parameters (моделирование ► параметры) и на вкладке Solver (расчет) от- крывшегося диалогового окна установив значение Stop time, равное нулю; О в окне настройки блока То Workspace установить параметр Maximum number of rows {максимальное число строк) равным 1. Во многих случаях требуется сохранять в рабочей области параметры, относящиеся к двум состояниям модели: начальному и конечному. Для дискретной системы, по- добной той, которая рассматривается в нашем примере, это можно выполнить не- сколькими способами: О задать величину шага модельного времени Fixed step size, равную длительности интервала моделирования; О задать шаг моделирования для блока То Workspace, установив параметр Sample time (эталонное время) в окне настроек блока равным интервалу моделирования; О задать максимальное число строк матрицы, сохраняемой в рабочей области, ус- тановив параметр Maximum number of rows блока To Workspace равным 2; О задать требуемую дискретность записи данных в рабочую область, установив со- ответствующее значение параметра Decimation (дискретность) блока То Workspace. Как было сказано выше, перечень и объем данных, сохраняемых в рабочей области, можно увидеть в окне просмотра рабочей области, вызвав его командой Show Workspace (показать рабочую область) меню File (файл) командного окна MATLAB или использовав соответствующую кнопку на панели инструментов этого окна (рис. 6.36). Рис. 6.36. Содержимое рабочей облости после сохрон« -.,я результатов моделирования
278 Урок 6. Технология моделирования в среде SIMULINK Наряду с матрицей Sim в рабочей области присутствует также вектор моментов вре- мени регистрации — tout. Его наличие объясняется тем, что на вкладке Workspace I/O Я (обмен с рабочей областью) окна параметров моделирования по умолчанию уста- Я новлен флажок Time (время). Я Кнопка Open (открыть) позволяет загрузить данные из рабочей области в редактор/ д отладчик MATLAB в виде электронной таблицы, содержимое которой может кор- Л ректироваться пользователем и затем вновь сохраняться в рабочей области. При Я работе с данными интерфейс редактора/отладчика реализован в виде рабочей кни- я ги, каждая страница которой отведена для представления отдельной переменной из Я рабочей области (рис. 6.37). Это позволяет загрузить в редактор/отладчик несколь- Я ко переменных и организовать их совместную обработку. il Выделенный элемент Размер Ярлычки листов Индексы выделенного матрицы редактора/отладчика элемента матрицы >.37. Просмотр донных из робочей облости с помощью редокторо/отлодчико Рис. 6. Теперь изменим формат сохраняемых данных и посмотрим, как это на них повлияет. В окне настройки блока То Workspace выберите в раскрывающемся списке Save format (формат записи) вариант Structure with time {структура с полем времени), по- скольку данные должны сохраняться в структурной переменной вместе с вектором моментов регистрации. Выполните сеанс моделирования и посмотрите содержимое переменной Sim в командном окне MATLAB, а также состав данных, записанных в рабочую область. Наиболее вероятный вариант того, что вы увидите, приведен на рис. 6.38. 279 Первая модель Данные из рабочей области, необходимые для последующей работы (независи- мо от их формата), можно сохранить в М АТ-файле с помощью команды File ► Save Workspace As (файл ► сохранить рабочую область как) в командном окне MATLAB. Чтобы разобраться с особенностями применения блока То File, заменим в модели Choice блок То Workspace блоком То File. С этой целью выполните следующие дей- ствия. 1. Выделите в блок-диаграмме блок За п ись и нажмите клавишу Del. 2. В разделе Sinks отыщите блок То File и отбуксируйте его в окно блок-диаграммы модели. к 3. Пристыкуйте блок То Fi 1е к свободному концу линии связи, оставшейся от блока Запись (рис. 6.39). ? 5: V Рис. 6.39. Применение блоко To File для сохронения результатов Применение блока То File имеет следующие особенности: О при записи данных в файл они не дублируются в рабочей области MATLAB^ по- этому для просмотра и редактирования сохраненных данных их предварительно необходимо загрузить в рабочую область с. помощью команды File ► Load workspace (файл ► загрузить рабочую область) командного окна MATLAB;
280 Урок 6. Технология моделирования в среде SIMULINK О при использовании блока То Workspace формат, в котором сохраняются данные, определяется значением, выбранным в раскрывающемся списке Save format, в то время как при использовании блока То Fi le данные всегда сохраняются в формате Matrix; О формат Mat rix, в котором сохраняются данные, несколько отличается от структу- ры матрицы, создаваемой при использовании блока То Workspace: в первой строке матрицы записаны значения моментов времени регистрации данных, а остальные строки содержат значения регистрируемых величин (например, для рассматри- ваемой модели сохраняемая в файле матрица имеет размер 4x2, как показано на рис. 6.40). Моменты регистрации Значения выходного сигнала Рис. 6.40. Структуре мотрицы данных при использовании блоко То File Вы можете изменять объем регистрируемых данных, используя практически те же средства, что и при работе с блоком То Workspace: О увеличивая шаг моделирования Fixed step size на вкладке Solver в окне парамет- ров моделирования; О изменяя значения параметров Decimation и Sample Time блока То File. До сих пор речь шла о сохранении результатов одного сеанса моделирования. Но, как вы знаете, для оценки поведения системы бывает полезно (и даже необходимо) иметь результаты всей серии модельных экспериментов. MATLAB позволяет накап- ливать в рабочей области данные по нескольким экспериментам для их дальнейшей обработки и/или записи в файл. Рассмотрим технологию накопления данных по серии экспериментов применитель- но к модели Choice. Поставим себе целью получить и зарегистрировать результаты моделирования для всех возможных сочетаний значений констант Сайт1 и Сайт2 (то есть, используя терминологию первых двух уроков книги, проведем полный фак- торный эксперимент). Поскольку каждая из констант может принимать одно из
Первой модель 281 двух значений (Сайт1 — 0 или 4, а Сайт2 — 0 или 2), то общее число экспериментов будет равно 22-4. Итак, приступим к реализации плана эксперимента. Замените в блок-диаграмме блок То File на блок То Workspace. Установите параметры моделирования и блока То Workspace таким образом, чтобы значение выходного век- тора регистрировалось в матрице Sim только один раз. Кроме того, в окне Simulation Parameters на вкладке Workspace I/O в группе Save to workspace снимите флажок Time (это избавит SIMULINK от записи в рабочую область лишней информации). Для начальных значений констант Сайт1=0 и Сайт2=0 выполните эксперимент. После его окончания откройте окно рабочей области и убедитесь, что регистрация прошла успешно. Перед следующим запуском модели внесите в нее следующие изменения: О установите новое значение для одной из констант (например, Сайт1=4); О замените имя матрицы регистрации Sim на Sim1 (в окне настроек блока То Work- space). Изменяя аналогичным образом значения констант и имя матрицы регистрации, вы- полните два оставшихся эксперимента. После окончания последнего эксперимента вновь откройте окно рабочей области; оно должно выглядеть так, как показано на рис. 6.41. double array double array double array double array Siml Sim2 Sim3 НПВ )>[ Workspace Browser Рис. 6.41. Накопление результатов моделирования в робочей области MATLAB Итак, в рабочей области сохранены результаты всех четырех экспериментов. Каким образом их можно использовать? О Во-первых, каждую из полученных записей можно просмотреть в командном окне MATLAB или в окне редактора/отладчика. Если один из экспериментов оказался неудачным (например, вы забыли изменить значения констант), его ре-
282 Урок 6. Технология моделирования в среде SIMULINK зультат можно удалить из рабочей области (подробное описание редактора/от- ладчика вы найдете в разделе «Создание сценариев анализа данных» урока 8 «Взаимодействие SIMULINK с другими компонентами MATLAB»). О Во-вторых, все содержимое рабочей области можно сохранить в одном МАТ- файле с помощью команды Save Workspace As и затем использовать при проведе- нии последующих сеансов моделирования. О В-третьих, можно выполнить статистическую обработку результатов моделиро- вания (о том, как это сделать, будет рассказано в разделе «Обработка и анализ результатов моделирования» урока 8 «Взаимодействие SIMULINK с другими компонентами MATLAB»). На любом этапе моделирования содержимое М АТ-файла может быть вновь загру- жено в рабочую область с помощью команды Load Workspace и подвергнуто требуе- мой обработке. В частности, результаты двух или более экспериментов могут быть объединены в одну матрицу с помощью операции присваивания, выполняемой в командном окне MATLAB. Ниже приведен пример объединения данных по второму и третьему экс- периментам в новой матрице sim4: sim4 = [sim2, sim3] Новая переменная также будет записана в рабочую область и может быть сохранена в МАТ-файле вместо исходных записей sim2 и sim3. Еще один вариант сохранения результатов моделирования предоставляет блок Scope. Напомним, что данный блок является одним из вариантов «смотровых окон» и обеспечивает отображение динамики изменения параметров модели в графичес- кой форме. Параметры настройки блока и некоторые особенности его использова- ния были рассмотрены ранее (см. описание блока Scope в разделе «Раздел Sinks» урока 4 «Библиотека блоков SIMULINK»). Сейчас остановимся только на одной из них, связанной с регистрацией данных. Поместите блок Scope в блок-диаграмму модели Choice и соедините его с выходом блока Посетитель вместо блока То Workspace (как показано на рис. 6.42). Рис. 6.42. Сохранение результатов моделирования с помощью блока Scope
Первая модель 283 Откройте окно блока Scope (двойным щелчком на блоке). Обратите внимание: пределы измерения по оси времени (по оси абсцисс) совпадают с интервалом мо- делирования, установленным для модели Choice (от 0 до 1). Запустите модель на ис- полнение. В окне Scope появятся прямые, соответствующие значениям элементов выходного вектора. По умолчанию данные, выводимые в окне Scope, в рабочей области не сохраняются. Чтобы изменить установки, щелкните на кнопке Properties (свойства) панели инст- рументов. На вкладке Data history (протоколирование данных) открывшегося диа- логового окна установите флажок Save data to workspace (сохранить данные в рабочей области). При этом станет доступным поле Variable name (имя переменной), в кото- ром задается имя переменной для сохранения данных в рабочей области. Его можно либо оставить без изменения (ScopeData), либо выбрать по своему усмотрению (на- пример, просто Data). Кроме того, имеется возможность выбрать формат сохраняе- мых данных. Остановимся на уже использовавшемся формате Matrix. И, наконец, ограничим до минимума, как и раньше, количество строк сохраняемой матрицы Data, введя в поле Limit rows to last значение 1). В результате вкладка Data history дол- жна выглядеть так, как показано на рис. 6.43. Рис. 6.43. Установка параметров сохранения результатов моделирования Щелкните на кнопке Apply и повторите сеанс моделирования. Теперь данные, выво- димые в окне Scope, будут сохранены в рабочей области в числовой форме. Про- смотреть их можно стандартным образом: в командном окне MATLAB введите имя, под которым данные были сохранены, и нажмите клавишу Enter. Полученный массив данных представляет собой матрицу размером 1x4. Число строк матрицы (1) соот- ветствует значению параметра Limit rows to last. Число столбцов (4) на 1 превышает размерность выходного сигнала, поскольку первый столбец используется для хране- ния моментов времени регистрации (рис. 6.44). Управлять объемом регистрируемых данных можно также с помощью раскрываю- щегося списка и поля Sampling (периодичность) на вкладке General (общие свойства),
284 Урок 6. Технология моделирования в среде SIMULINK изменяя периодичность регистрации данных (Decimation) и величину шага регист- рации (Sample time). При этом необходимо учитывать, что в матрице будутзаписаны только результаты первых «поместившихся» измерений. Момент регистрации Значения выходного сигнала Рис. 6.44. Формат результатов моделирования, сохраненных с помощью блока Scape Существенным достоинством применения блока Scope для сохранения результатов моделирования является то, что формат матрицы ScopeData совпадает с форматом данных, используемых в блоке From Workspace (ввод из рабочей области). Вспомнив о блоке From Workspace, мы тем самым перешли к обсуждению вопросов, связанных с использованием результатов моделирования. Во многих реальных задачах результаты, полученные в текущем сеансе моделиро- вания, используются в качестве исходных данных в последующих сеансах, либо во взаимодействующих S-моделях. С этой целью могут использоваться блоки From Workspace и From File (ввод из файла), входящие в раздел Sources (источники), а так- же блок In (входной порт) из раздела Signals & Systems (сигналы и системы). Все они выполняют автоматическую загрузку данных из рабочей области MATLAB в испол- няемую S-модель. С целью иллюстрации применения одного из них — блока From Workspace —несколь- ко доработаем модель Choice. Сначала дадим содержательную трактовку последующего развития событий в рас- сматриваемой ситуации. Предположим, что Посетитель посылает сообщение свое- му шефу I ie сразу, а через некоторое время, необходимое для загрузки на компьютер найденной информации. Соответственно, объем занятого дискового пространства при этом увеличивается на величину записанной порции данных. Для описания та- кой ситуации скорректируем параметры настройки блока П осетител ь, отразив в таб- лице истинности возможный объем найденной информации: Truth table =[001; 021; 401; 401]
Первая модель 285 Кроме того, построим дополнительную S-модель, назначение которой будет состо- ять в выполнении следующих действий. 1. Загрузка из рабочей области результаты работы модели Ch oice. 2. Выбор узла, информация с которого будет записана на компьютер Посетителя. 3. Увеличение объема занятого дискового пространства на величину записанной порции данных. 4. Задержка сигнала, имитирующего сообщение, на заданный интервал времени. Для реализации перечисленных действий создаваемая модель (назовем ее Send, от английского слова sending — пересылка) должна содержать следующие блоки: О From Workspace из раздела Signals & Systems, выполняющий считывание данных из рабочей области; О Demux (разделитель) из раздела Continuous (непрерывные системы), обеспечи- вающий разделение входного векторного сигнала на составляющие его компо- ненты; О Switch (переключатель) из раздела Nonlinear (нелинейные системы) и Relational Operator (оператор отношения) из раздела Math (математические блоки), позво- ляющие выбрать узел, с которого будет загружаться информация; О Sum (сложение) из раздела Math, вычисляющий объем занятого дискового про- странства; О Transport Delay (задержка передачи) из раздела Continuous, обеспечивающий за- держку имитирующего сообщение сигнала на заданный интервал времени; О Display (экран) из раздела Sinks (получатели), который позволит увидеть резуль- тат работы модели. Чтобы построить модель Send, необходимо выполнить уже знакомую вам последо- вательность действий. 1. Открыть новое (пустое) окно блок-диаграммы untitled, либо выбрав команд)' File ► New ► Model (файл ► создать ► модель), либо нажав соответствующую кноп- ку панели инструментов. 2. Перетащить из библиотеки SIMULINK перечисленные выше блоки. 3. Соединить блоки в соответствии с логикой работы модели. Блок-диаграмма модели должна выглядеть примерно так, как показано на рис. 6.45. Если внешний вид модели вас удовлетворяет, сохраните ее в файле на диске, при- своив ему какое-либо осмысленное имя (например, предложенное автором — Send). Теперь займемся внутренними параметрами блоков, включенных в состав модели. Начнем с блока From Workspace. Он должен считывать из рабочей области MATLAB значение выходного сигнала модели Choice, записанного туда с помощью блока Scope. Согласование форматов общих данных — весьма тонкий и ответственный момент, поэтому остановимся на нем несколько подробнее. * Для работы модели Send в качестве исходных данных необходимо и достаточно иметь I конечный результат работы модели Choice. Другими словами, упоминавшаяся ранее
286 Урок 6. Технология моделирования в среде SIMULINK матрица Data должна содержать единственную строку, соответствующую значению. выходного сигнала на момент окончания интервала моделирования. Напомним, что для этого параметр Limit rows to last блока Scope должен быть равен 1. Чтобы матрица Data стала доступна блоку From Workspace, необходимо указать ее имя в качестве пара- метра блока. Когда это будет выполнено, имя Data появится внутри блока. Рис. 6.45. Блок-диаграмма модели, использующей данные из рабочей области MATLAB Следующие два блока, для которых требуется настройка и которые работают в данной модели совместно, — это Switch и Relational Operator. Оператор отношения позволяет выяснить, на каком из узлов содержится больший объем информации, а блок Switch обеспечивает пересылку соответствующего сигнала на вход блока Sum. Используемый оператор отношения выбирается в раскрывающемся списке в окне параметров настройки блока и отображается внутри блока, В поле Threshold (порог) окна настройки блока Switch, определяющем порог срабатывания блока, установле- но значение 1. Это означает, что если объем информации в блоке Сайт! больше, чем в блоке Сайт2, то на вход блока Sum поступает сигнал с первого информационного входа блока Switch; в противном случае пересылается сигнал с второго информаци- онного входа, равный объему информации в блоке Сайт2. Чтобы пояснить, почему блок Sum в нашей модели выглядит не совсем так, как его библиотечный прототип, мы просто приведем окно настройки блока (рис. 6.46). Для определенности второе слагаемое блока равно 10 (не очень реалистичное предположение о том, что на жест- ком диске компьютера Посетителя было занято всего 10 Мбайт). И, наконец, последний блок, который, вероятно, нуждается в пояснении, — это блок Transport Delay. Этот блок задерживает сигнал, поступающий на его вход, на один шаг модельного времени. По истечении данного интервала на выход блока выдается зна- чение, имитирующее сообщение шефу (третий элемент векторного сигнала, считан- ного из рабочей области). Остальные блоки в настройке не нуждаются. Правда, пока не известна величина шага моделирования. Неизвестны также длительность интервала моделирования, способ изменения модельного времени и используемый метод расчета состояний
Первая модель 287 .модели Send. Можно, конечно, предположить, какие значения получат указанные параметры по умолчанию. Но в данном случае лучше проявить (и закрепить) полу- ченные ранее знания и навыки и установить самим требуемые значения параметров моделирования. Рис. 6.46. Окно настройки блока Sum для модели Send Итак, открываем окно настройки параметров модели Send, выбрав команду Simu- lation ► Parameters. На вкладке Solver устанавливаем следующие параметры: О в поле Stop time (конечное время) — значение 10; О в первом раскрывающемся списке Туре (тип) — пункт Fixed-step (фиксирован- ный шаг); О в поле Fixed step size (величина фиксированного шага) — значение 1. Внеся соответствующие изменения, щелкните на кнопке Apply (или ОК). Теперь можно приступать к моделированию. Запустите на исполнение сначала мо- дель Choice, затем — Send. Сравните значения, выведенные в окнах блока Display мо- дели Choice с «показаниями» блоков Display модели Send. Если они совпадают, вы все сделали правильно. Правда, задержку сообщения шефу визуально заметить практи- чески невозможно. Чтобы убедиться в том, что блок Transport Delay справляется со своей задачей, дополним модель Send смотровым окном в виде блока Scope. Помес- тите его в поле блок-диаграммы и откройте окно Scope (двойным щелчком на бло- ке). Поскольку хотелось бы сравнить моменты формирования сигналов на входах блоков Display и Display2, мы преобразуем библиотечный вариант блока в его двух- входовой аналог. Для этого на панели инструментов блока щелкните на кнопке Properties и на вкладке Сепега1открывшегося диалогового окна введите в поле Number of axes (число графиков) значение 2. Щелкните на кнопке ОК и подключите входы блока Scope к выходу блока Sum (параллельно с блоком Display) и к выходу блока Transport Delay (параллельно с блоком Display2), как показано на рис. 6.47.
288 Урок 6. Технология моделирования в среде SIMULINK Рис. 6.47. Включение в блак-диаграмму блока Scope Теперь запустите модель Send на исполнение. График, выведенный в окне Scope ] (рис. 6.48), подтверждает корректную работу модели. 1 Рис. 6.48. Временная диаграмма работы модели Send Подводя итоги изложенному в данном разделе, можно сформулировать общую схе- му разработки моделей в среде SIMULINK: 1. Описать на содержательном уровне логику поведения исследуемой системы. 2. Определить перечень блоков, соответствующих основным компонентам системы, а также дополнительных блоков, необходимых для расчета выбранного показате- ля эффективности. 3. Поместить в окно блок-диаграммы требуемые блоки и соединить их между со- бой в соответствии с логикой работы модели.
Описание случайных факторов 2ВУ 4. Выполнить настройку и согласование параметров блоков. 5. Установить требуемые значения параметров моделирования для модели в целом. 6. Дополнить (обязательно!) блок-диаграмму модели необходимыми текстовыми комментариями. 7. Сохранить блок-диаграмму модели в файле на диске (до первого запуска модели на исполнение). 8. Выполнить сеанс моделирования. По окончании последнего шага может оказаться, что вы чего-то не ушли или сделали не совсем то, что хотели (или совсем нс то). В связи с этим уместно еще раз на- помнить, что моделирование — процесс творческий. Чтобы разработанная модель удовлетворяла предъявляемым к пей требованиям как по формальным, так и по субъективным критериям, можетоказаты я необходимым неоднократное выполне- ние одного или даже нескольких шагов приведенной выше схемы. Описание случайных факторов Имитационное моделирование в равной степени пригодно как для решения детер- минированных задач, так и для исследования ситуаций, зависящих от случайных факторов. В двух первых уроках обсуждались методы учета случайных факторов при разработке моделей систем различных типов. Настало время поговорить о том, насколько средства SIMULINK обеспечивают реализацию этих методов. При создании моделей с помощью универсальных языков программирования аппарат- ный или программный датчик случайных чисел — единственный инструмент разра- ботчика для моделирования всех видов случайных факторов: случайных событий, случайных величин и случайных процессов. У того, кто использует SIMULINK, арсенал значительно шире. Если же и этих средств SIMULINK оказывается недостаточ- но, в модель могут быть включены инструменты, входящие в состав ядра MATLAB или других компонент пакета. Моделирование случайных событий Как вы помните, случайное событие А считается наступившим, если сформирован- ное датчиком случайное число f попало в диапазон [0; РА],где Р,. — вероятность дан- ного события. Следовательно, модель должна содержать компоненты, обеспечивающие выполне- ние трех действий: О генерацию случайного числа г; О сравнение г с Рд; О идентификацию момента возникновения события А. В S-модели указанные действия можно реализовать несколькими способами. Пер- вый из них основан на совместном использовании блоков Uniform Random Number
290 Урок 6. Технология моделирования в среде SIMULINK (равномерное случайное число) из раздела Sources (источники) и Relational Operator (оператор отношения) из раздела Math (математические блоки). ’ П обы первый из названных блоков генерировал случайные числа, равномерно рас- пределенные на интервале [0; 1], необходимо произвести соответствующую уста- новку его параметров: О в поле Minimum (минимум) ввести значение 0 (нижняя граница диапазона); Э в поле Maximum (максимум) ввести значение 1 (верхняя граница). Третий параметр — Sample time (эталонное время) — в данном случае позволяет за- давать количество случайных чисел, которые будут сформированы блоком в тече- ние интервала моделирования: при Sample time, равном 0, новое случайное число ге- нерируется через каждые 0.02 единицы модельного времени; при Sample ti me, равном интервалу моделирования, генерируется только одно случайное число. На рис. 6.49 ириведеп при.мер блок-диаграммы, позволяющей моделировать появление случай- ного события А при РА=0.4. Рис. 6.49. Моделирование случайного события с заданной вероятностью наступления Особенностью блока Uniform Random Number является то, что он в каждом сеансе мо- делирования генерирует одну и ту же последовательность случайных чисел. Для изменения генерируемой последовательности необходимо вручную изменить зна- чение его параметра Initial seed (начальное значение). При проведении большого числа повторных экспериментов с целью накопления статистических данных это не очень удобно. Поэтому для моделирования случайных событий можно воспользо- ваться генераторами случайных чисел, входящими в состав компоненты MATLAB, которая называется Statistics Toolbox (набор инструментов статистического анали- за). Прежде чем мы рассмотрим применение генераторов случайных чисел для ре- шения указанной задачи, несколько слов о Statistics Toolbox. ' ацный набор инструментов доступен только при включении в рабочую конфигура- I! 1 по пакет a MATLAB. Если это не было сделано при начальной установке пакета, его можно добавить, выполнив повторно частичную установку. Statistics Toolbox, как и другие подобные приложения MATLAB, представляет собой набор специализиро- ванных функций, реализованных в виде М-файлов. Его особенностью является то, -п о г >локи не включаются в библиотеку SIMULINK. Поэтому в процессе моделиро- вания г тат иетпческие функции следует использовать одним из двух способов: О выполнят ь б командном окне MATLAB; ' > Включать в вычисляемое выражение в тех блоках S-модели, в которых разреше- но использование М-функций.
Описание случайных факторов 291 Функции, входящие в Statistics Toolbox, разбиты на несколько категорий: парамет- рические распределения, средства планирования эксперимента, генераторы случайных чисел и другие. Информация по ним приведена во встроенной справочной системе MATLAB (раздел toolbox\stats). Наиболее важные с точки зрения имитационного эксперимента функции будут рассмотрены в уроке 8 «Взаимодействие SIM U LINK с другими компонентами MATLAB». Сейчас остановимся на использовании функ- ций, относящихся к категории Random Number Generators (генераторы случайных чи- сел). Всего таких генераторов более 20, каждый из них обеспечивает формирование значений случайной величины, распределенной по определенному закону с задавае- мыми параметрами. Генератор непрерывной случайной величины, равномерно рас- пределенной в заданном интервале, называется unit rnd. Обращение к данной функ- ции имеет вид: unifrnd (А, В, М, N) Здесь А, В — границы диапазона распределения, а параметры М и N задают размер гене- рируемой матрицы случайных чисел. При моделировании случайного события эта функция может быть указана в качестве параметра настройки следующих блоков: О MATLAB Fen (функция MATLAB) из раздела Functions & Tables (функции и таблицы); О Fen (функция) из того же раздела; О Constant (константа) из раздела Sources (источники). На рис. 6.50 приведен пример блок-диаграммы, обеспечивающей моделирование случайного события с помощью блока Fen; ниже показано окно настройки блока, содержащее обращение к генератору unifrnd. Рис. 6.50. Моделировоние случойного события с помощью блоко Fen
292 Урок 6. Технология моделирования в среде SIMULINK В каждом сеансе моделирования генератор формирует новое случайное число. В этом можно убедиться с помощью дополнительного блока Display (экран), включенного в блок-диаграмму. В качестве иллюстрации к применению блока Constant для моделирования случай- ных событий воспользуемся все той же моделью Choice. Будем считать, что наличие информации на любом из двух узлов — событие случайное. Чтобы внести «элемент случайности» в модель, заменим значения констант Сайт1 и Сайт2 обращениями к генератору unit rnd с параметрами 0 и 1. Кроме того, предположим, что наличие и отсутствие информации на каждом узле — равновероятные события (то есть веро- ятность их составляет 0.5). Внешний вид блок-диаграммы для рассмотренной поста- новки задачи показан на рис. 6.51. Рис. 6.51. Моделирование присутствия информации на Web-узлах как случайных событий Теперь в каждом отдельном сеансе моделирования исход рассматриваемой ситуа- ции действительно является случайным. Появление случайного события можно интерпретировать еще одним способом: со- бытие произошло, если некоторое связанное с ним число (признак) пересекло опре- деленную границу или попало в заданный интервал. Первый вариант может быть реализован с помощью блока Hit Crossing (индикатор пересечения) из раздела Signals & Systems (сигналы и системы), а второй — с помо- щью двух таких блоков. На рис. 6.52 показан вариант блок-диаграммы, которая обеспечивает регистрацию моментов превышения случайным числом заданного порогового значения. Для блока Hit Crossing установлены следующие значения параметров: О в поле Hit crossing offset (порог пересечения) введено значение 2 (пороговое зна- чение); О в раскрывающемся списке Hit crossing direction (направление пересечения) вы- бран вариант rising (подъем), то есть нас интересует превышение порога. Ос гал ьные блоки выполняют следующие функции: О MATLAB Fen — генерирует последовательность случайных чисел, равномерно рас- пределенных на интервале [0; 7 [;
Описание случайных факторов 293 Crossing Integrator Рис. 6.52. Моделирование случайных событий с помощью блока Hit Crossing О Discrete-Time Integrator (дискретный сумматор времени) — подсчитывает число реализаций интересующего нас события; О Display (экран) — выводит результат подсчета; О Scope (индикатор) — позволяет наблюдать за работой блока Hit Crossing. Временная диаграмма, приведенная на рис. 6.53, иллюстрирует работу блока Hit Crossing в динамике. Рис. 6.53. Временной диаграмма роботы модели Hit Crossing На рис. 6.54 представлена блок-диаграмма, которая позволяет подсчитать число по- паданий некоторого признака в интервал [2; 5]. Работа блок-диаграммы основанана использовании двух блоков Hit Crossing. Первый из них имеет параметры Hit crossing offset — 5 и Hit crossing direction — falling (спад), для второго значения этих парамет- ров равны соответственно 2. и rising.
294 Урок 6. Технология моделирования в среде SIMULINK Hit Crossing! Рис. 6.54. Моделирование попадония случайной величины в заданный интервал В модели дополнительно используется блок Logical Operator (логический оператор), когорый реализует функцию логического сложения. Остальные блоки используют- ся гак же. как в предыдущей блок-диаграмме. Генерация случайных величин с заданными параметрами : ^пользование случайных величин является наиболее универсальным и потому наиболее распространенным способом учета в модели случайных факторов, прису- щих реальным системам или процессам. Примерами случайных величин могут слу- жить: интервал времени до появления очередного клиента, длительность проведе- ния технического обслуживания автомобиля, объем данных, считываемых из оперативной памяти ЭВМ, и т. д. Если закон распределения случайной величины известен, то она может быть достаточно адекватно представлена в имитационной мидели. В двух первых уроках книги были рассмотрены методы, используемые для моделирования различных законов распределения случайных величин при разра- ботке модели на одном из универсальных языков программирования. При создании модели средствами MATLAB процедура отображения в ней случайных величин су- щественно упрощается. Разработчику достаточно иметь представление о том, какие генераторы случайных чисел входят в состав набора инструментов Statistics Toolbox (набор инструментов статистического анализа). В предыдущем разделе уже было сказано, что таких генераторов более 20. Технология использования в S-модели л юбого из них одинакова и состоит в выполнении следующих действий. 1 . Откройте встроенную справочную систему MATLAB (раздел toolbox\stats). 2 . В списке Random Number Generators (генераторы случайных чисел) выберите функ- цию-генератор, соответствующую требуемому закону распределения. 3 . Двойным щелчком на выбранной строке откройте страницу справочника, содер- жащую описание дачного генератора; при этом в верхнем левом поле окна будет выведено название генератора. Выделите его с помощью мыши и скопируйте в буфер обмена (используя комбинацию клавиш Ctr+C). 4 В блок-диаграмме выделите блок, в котором будет использоваться генератор, и открой те окно его настроек. 5 Вставьте из буфера обмена название генератора (сочетание клавиш Ctrl+V). 6 Введи те требуемые значения параметров «запуска» генератора.
Описание случайных факторов 295 Конечно, при наличии достаточного опыта в разработке S-моделей, содержащих ге- нераторы случайных величин, справочную систему MATLAB можно не использо- вать, имя требуемого генератора вводить вручную. Однако в этом случае существует опасность ошибиться хотя бы в одном символе, что приведет к ошибке в модели и необходимости ее коррекции и повторного запуска. А если в создаваемой модели генератор используется в нескольких блоках? В качестве примера использования генератора случайных чисел рассмотрим S-модел ь, содержащую случайную величину, распределенную по нормальному закону. Соглас- но теории вероятности, большинство случайных явлений и процессов, зависящих от многих одновременно действующих факторов, подчиняются именно этому закону. Пусть имеется вычислительная система, содержащая два дисковых накопителя раз- личной емкости: 2.1 Гбайт (назовем его HD1) и 4.3 Гбайт (HD2). Данные поступают на каждый из накопителей от своего источника. Объем очередной «порции» информа- ции является случайной величиной, распределенной по нормальному закону. Для первого источника закон распределения случайных величин имеет параметры m1=70, v 1 =5; для второго источника — т2= 120, v2= 10. Требуется сравнить эффектив- ность применения накопителей. В качестве показателя эффективности выберем ко- эффициент использования дискового пространства — Ки. Эта величина может быть рассчитана как отношение объема памяти, использованного на интервале моделиро- вания, к полной емкости накопителя. Блок-диаграмма S-модели, позволяющей решить поставленную задачу, показана на рис. 6.55. 'К Оценка загруженности накопителей! ... " < '• Модель работы HD1 ... Jmatlab 1 Lq Function Г датчикСЧ - - ' , л- '' I ' V. -V- у' -* U/2100 У z-1 I у. . . DiscrBte-Timff Гсп Integrator ’ "ajwhoi 0339?] Ш Медель работы HD2 MATLAB А Function irtrrKOH <- i)iScrete-Tinie t;, mte0rator1 > U/4300 Значение Ku дляНО2 . j (127751Г Fcnt 1: ' т — S1 » Рис. 6.55. Блок-диаграмма модели работы накопителей Из рисунка видно, что блок-диаграмма состоит из двух достаточно самостоятель- ных частей. Каждая из них моделирует работу одного из накопителей. Поскольку
296 Урок 6. Технология моделирования в среде SIMULINK обе части модели по структуре полностью идентичны, поясним назначение входя- щих в них блоков применительно к первой, моделирующей работу накопителя Н D1. О Блок MATLAB Fen (функция MATLAB) играет роль источника данных (в терминах двух первых уроков книги — это модель рабочей нагрузки накопителя). В каче- стве параметра настройки блока указано имя генератора нормального распреде- ления с соответствующими аргументами: normrnd(70, 5). О Блок Di sc rete-Ti me Integrator (дискретный сумматор времени) выполняет сумми- рование данных, поступающих от источника в накопитель. Все параметры имеют значения, установленные по умолчанию. О Блок Fen (функция) обеспечивает расчет значения Ки (вычисляемое выражение выводится внутри блока) для текущего значения модельного времени. О Блок Display (экран) выводит на экран вычисленное значение Ки. По истечении интервала моделирования оно представляет собой итоговую оценку данного по- казателя для накопителя HD1. Перед запуском модели на исполнение целесообразно установить способ изменения модельного времени, выбрав в первом раскрывающемся списке Туре (тип) на вклад- ке Solver (расчет) диалогового окна Simulation parameters (параметры моделирования) вариант Fixed-step (фиксированный шаг). Кроме того, желательно запретить выдачу предупреждений о неподключенных портах блоков. Для этого на вкладке Diagnostics (диагностика) выделите событие Unconnected block output и установите переключа- тель None (игнорировать). Обратите внимание, что SIMULINK имитирует одновременную работу обеих час- тей модели в полном соответствии с технологией реализации квазипараллельных процессов, рассмотренной в двух первых уроках книги (более подробно управление потоками событий в S-моделях рассматривается в следующем разделе). Благодаря этому по окончании сеанса моделирования в окнах Display будут выведены значения Ки для обоих накопителей практически одновременно. правление временем Задача корректного управления модельным временем, то есть «временем жизни» моделируемой системы, возлагается на разработчика независимо от того, какие ин- струменты создания модели он использует. Принципиальное отличие SIMULINK от универсальных средств программирования состоит в том, что логическая струк- тура S-модели не зависит от способа управления модельным временем. Более того, исследователь может выбирать способ изменения модельного времени для каждого сеанса моделирования индивидуально. Тем не менее, и при использовании SIMULINK модельное время остается «спинным мозгом», согласующим работу всех компонент S-модели. Поэтому при подготовке каждого модельного эксперимента должны быть получены ответы на три вопроса. О Какой способ изменения (приращения) времени целесообразно использовать (с постоянным или переменным шагом)?
Управление временем 297 О С какой дискретностью следует изменять модельное время? О Какое событие будет служить признаком окончания эксперимента? После того как вы ответите себе на каждый из этих вопросов, следует подумать о том, как воплотить намеченное в жизнь, используя средства SIMULINK. Именно об этом идет речь далее. Выбор шага моделирования В разделе «Управление модельным временем» урока 2 «Основы технологии имита- ционного моделирования» была дана сравнительная характеристика двух основных способов изменения модельного времени — с постоянным шагом и по особым состо- яниям. С точки зрения разработчиков SIMULINK ведущую роль при выборе одного из двух методов играет тип моделируемой системы: для непрерывных систем (с непре- рывной сменой состояний) по умолчанию используется переменный шаг приращения времени, а для дискретных систем следует устанавливать постоянный (фиксиро- ванный) шаг. Такой подход не всегда оправдывает себя, поскольку при моделирова- нии непрерывных систем бывает удобнее определять очередное состояние системы как функцию времени, изменяющегося с заданной дискретностью. И, наоборот, при моделировании дискретных систем величина очередного приращения времени зачастую определяется прогнозируемым моментом изменения состояния системы; причем смена состояний происходит, как правило, нерегулярно. Поэтому полезно знать, каким образом при разработке моделей дискретных систем можно заставить модельное время изменяться по особым состояниям. С целью пояснения сказанного вернемся к примеру с накопителями. В разрабаты- ваемой модели оценки загрузки накопителей фактор времени непосредственно не учитывался: была задана только длительность интервала моделирования, равная 10 единицам модельного времени. 11о умолчанию предполагалось, что данные поступа- ют на каждый из накопителей через интервалы времени, определяемые дискретнос- тью изменения модельного времени (ЛГ=О. 2). Вместе с тем, распределение входных воздействий во времени — важнейшая характеристика рабочей нагрузки системы. Какие же средства SIMULINK позволяют управлять величиной шага моделирова- ния при изменении модельного времени по особым состояниям? В первую очередь, это «связка» из двух уже знакомых вам блоков MATLAB Fen (функ- ция MATLAB) и Discrete-Time Integrator (дискретный сумматор времени). Блок MATLAB Fen обеспечивает формирование отрезков времени, длина которых распреде- лена по заданному закону, а блок Discrete-Time Integrator выполняет суммирование этих отрезков, то есть «продвижение» модельного времени. Таким образом, с помо- щью этих двух блоков можно реализовать механизм изменения модельного време- ни по особым состояниям для таких S-моделей, в которых условием наступления очередного события является истечение некоторого промежутка времени. В рассматриваемом примере таким событием является поступление на вход систе- мы очередного сообщения, интервал времени между соседними сообщениями явля- ется случайной величиной, распределенной по.заданному закону. Пока для просто-
298 Урок 6. Технология моделирования в среде SIMULINK ты будем считать, что запись информации на накопители происходит мгновенно, и величина приращения модельного времени определяется только промежутком вре- мени до появления очередной порции информации. С учетом внесенных дополнений модель работы накопителя будет выглядеть так, как показано на рис. 6.56 (для второго накопителя блок-диаграмма строится анало- гичным образом). Модель работы накопителя MATLAB g 's Function | ДатчикЦЧ | MATLAB Й Function ♦ -► UC100 Discrete-lime: Integrator * Генераюр 0jscrete.Time интервал» ^^„4 Значение Ки 1 для Н01 1еедшре модельное время j 93.89 | | scope 0.33341 Ftrt; Рис. 6.56. Изменение модельного времени по особым состояниям Обратите внимание на следующее весьма важное обстоятельство: при указан- ной реализации механизма изменения модельного времени собственный таймер SIMULINK играет роль «тактового генератора» и не определяет непосредственно длительность интервала моделирования. При таком подходе для визуального конт- роля за изменением модельного времени по-прежнему пригоден блок Scope (инди- катор). В этом случае на его вход следует подавать сигнал с блока Discrete-Time Integrator, значения которого будут отображаться в окне Scope как функция от номе- ра шага моделирования. Соответственно, длительность интервала моделирования будет равна последнему значению сигнала на выходе блока Discrete-Time Integrator. Пусть, например, параметр Stop time (конечное время) по-прежнему будет равен 10, а интервалы времени между поступлениями порций информации распределены по нормальному закону с параметрами т=10; v=4. Тогда длительность интервала модели- рования работы накопителей составит в среднем 90 с (рис. 6.57), Для моделирования непрерывных систем, как вы помните, более удобным являет- ся изменение модельного времени с постоянным шагом. Чтобы реализовать этот механизм в создаваемой модели, вполне достаточно стандартных средств управле- ния экспериментом, имеющихся в диалоговом окне Simulation Parameters (парамет- ры моделирования). Хотя эти средства уже упоминались ранее, полезно рассмотреть их применение на конкретном примере, в качестве которого используем ситуацию, приведенную в разделе «Изменение времени по особым состояниям» урока 2 «Основы технологии имитационного моделирования». Речь шла о том, что некий
Управление временем 299 самолет движется прямолинейно и с постоянной скоростью, а следящий за ним диспетчер должен ввести информацию о самолете до того, как он пересечет задан- ный рубеж. Рис. 6.57. Отображение модельного времени в блоке Scope Блок-диаграмма модели, описывающей данную ситуацию, изображена на рис. 6.58. w I Наблюдение за самолетом Прочено км 0.25 Inti Z-1 Скоромь самолета ' ’Jr’ >. Полет самолета ® Работа диспетчера ® •Г г—- т z-i 12.51 50] сообщения Рис. 6.58. Пример моделирования с постоянным шагом Скорое» 9$, f Вендена синвшшв 1-успел Ввести , сообщение Назначение блоков, входящих в модель, указано в самой диаграмме. Остается толь- ко добавить, что блок Inti вычисляет расстояние, пройденное самолетом, а блок Int2 — количество введенных диспетчером символов.
300 Урок 6 Технология моделирования в среде SIMULINK Для определенности будем считать, что фигурирующие в модели величины имеют следующие значения: О скорость самолета — 900 км/ч; О расстояние до рубежа — 12.5 км; О скорость ввода информации — 1 символ в секунду; О длина текста — 50 символов. Прежде чем установить параметры моделирования, мы должны проделать следую- щую процедуру. 1. Привести скорость полета самолета и работу' оператора к единому масштабу времени. 2. Выбрать величину шага приращения модельного времени. 3. Определить приемлемую длительность интервала моделирования. Первый пункт выполнить проще всего: выражаем скорость самолета в км/с и полу- чаем 0.25 км/с. Выполнение второго пункта требует сопоставления скоростей двух процессов; сравнив скорости, выберем Аг=1 с. Для выполнения третьего пункта так- же вполне достаточно выполнить одно-два арифметических действия. Конечно, простота рассматриваемого примера вызывает сильное желание посчитать все вручную, но нас в данном случае интересует не столько результат, сколько про- цесс создания модели. Итак, вводим следующие параметры моделирования: О в поле Stop time (конечное время) — значение 50; О в списке Туре (тип) — вариант Fixed-step (фиксированный шаг); О в поле Fixed step size (величина фиксированного шага) — значение 2. Последний параметр требует дополнительного пояснения: для всех блоков, имею- щих параметр Sample time (эталонное время), он также должен быть равен 2. Выполнив сеанс моделирования, получаем ответ на поставленный ранее вопрос: дис- петчер успеет (хотя и с трудом) ввести требуемую информацию. Соответствие результата моделирования ручным расчетам говорит о том. что создан- ная модель работает корректно. Казалось бы, при неизменных исходных данных такой результат должен получаться всегда. 11о не следует забывать о той роли, которую играет выбор шага моделирова- ния (то есть величины At). Установите значение Fixed step size равное 3 и повторите моделирование. Теперь диспетчер «не успевает.» ввести сообщение, сколько бы раз вы ни повторяли эксперимент. Управление окончанием сеанса моделирования Еще при знакомстве с S-моделями, включенными разработчиками MATLAB в со- став демонстрационных файлов, мы отметили наличие нескольких способов управ- ления окончанием моделирования. Наиболее простой из них состоит в указании длительности интервала моделирова- ния. При таком подходе сеанс моделирования завершается при достижении модель-
Управление временем 301 ным временем значения, заданного параметром Stop time (конечное время). Текущее состояние модели (или моделируемой системы) в данном случае не учитывается. С целью расширения возможностей исследователя по управлению модельным экспе- риментом в состав библиотеки SIMULINK включен блок Stop Simulation (остановка моделирования) из раздела Sinks (получатели). С его помощью можно увязывать окончание сеанса моделирования с выполнением тех или иных условий. Такими условиями, в частности, могут быть: О переход моделируемой системы в определенное состояние; О завершение выполнения какой-либо операции (системой в целом пли одной из ее подсистем); О достижение показателем эффективности заданного значения. Условия окончания сеанса моделирования должны быть заданы в S-модели таким образом, чтобы при их наступлении на вход блока Stop Simulation поступал ненуле- вой сигнал (если сигнал векторный, то хотя бы один его элемент должен быть отли- чен от нуля). На рис. 6.59 показан вариант моделирования работы накопителей HD1 и HD2 с использо- ванием блока Stop Simulation. Условием окончания сеанса моделирования является исчерпание емкости хотя бы одного из накопителей (если накопитель заполнен, то Ки>1). Поскольку в рассматриваемом примере накопители заполняются достаточно медленно, целесообразно установить iштервал моделирования существенно больше заданного по умолчанию (скажем, значение параметра Stop time равное 50). Вы можете убедиться в «досрочном» завершении сеанса моделирования, просмотрев вектор зна- чений времени tout, сохраняемый в рабочей области MATLAB (флажок Time (вре- мя) на вкладке Workspace I/O (обмен с рабочей областью) должен быть установлен). Модель р i , Модель НР1 : / J Function Ь Т; * z , ДагчикСЧ Discrete-Time /- ’’ \ ' 1 integrate! ' # ' ' » * ? • z < Модель HD2 ' накопителем Значение Ки ? дляНМ Integrator 1 Рис. 6.59. Пример использования блока Stop Simulation
302 Урок 6. Технология моделирования в среде SIMULINK При моделировании сложных систем бывает необходимо задать несколько различ- ных условий окончания эксперимента. В таких случаях в состав S-модели может включаться несколько блоков Stop Simulation, каждый из которых связан со своим признаком завершения сеанса. Пусть, например, при моделировании работы нако- пителя сеанс должен завершаться не только при исчерпании его емкости, но и при генерации сообщения, размер которого превышает заданный порог. Соответствую- щая блок-диаграмма показана на рис. 6.60. Рис. 6.60. Применение блоке Stop Simulation при наличии нескольких условий Для идентификации указанных событий используются блоки Hit Crossing (индика- тор пересечения), назначение которых поясняют их имена. Для визуализации при- чины окончания сеанса блоки Stop Simulation связаны с блоками Display (экран). Как вы, вероятно, догадались, значение «1», выводимое в блоке Display, указывает на со- ответствующую причину завершения моделирования. Синхронизация параллельных процессов В приведенных выше примерах присутствовали только асинхронные параллельные процесс ы, то есть такие, которые не влияют друг на друга. «Привязку» таких процес- сов к единой оси модельного времени SIM ULINK выполняет самостоятельно, осво- бождая от соответствующих проблем разработчика. Другое дело, когда имеют место синхронные параллельные процессы, состояние каждого из которых зависит от те- кущего состояния другого. При согласовании таких процессов должна учитываться специфика решаемой задачи, и без помощи разработчика SIMULINK здесь уже обойтись не может. Для корректного управления модельным временем в таких моделях необходимо следовать описанной ниже процедуре. 1. Ус гановить, какой из взаимодействующих процессов является подчиненным по отношению к другому. z Он рсделить, могут лив подчиненном процессе происходить события, не связан- ные с изменением состояния управляющего процесса.
Управление временем 303 3. Обеспечить приращение модельного времени на интервал времени до ближай- шего события в управляющем процессе. 4. Контролировать условия окончания сеанса моделирования. В качестве иллюстрации к сказанному вновь воспользуемся моделью работы нако- пителя. Очевидно, что запись сообщения на диск может начаться только при усло- вии его поступления, поэтому процесс записи является подчиненным по отношению к процессу приема сообщений в систему. Если интервал между сообщениями значи- тельно больше длительности операции записи, то продвижение модельного времени будет определяться только событиями управляющего процесса (поступлением сооб- щений). Блок-диаграмма такой системы не будет ничем отличаться от приведенной ранее на рис. 6.56. Если же интервал между сообщениями соизмерим с длительностью записи сообщения, то необходимо отразить в модели дополнительное условие: «обслу- живание» нового сообщения не может начаться до тех пор, пока не завершится запись предыдущего. При такой постановке задачи оба процесса становятся равноправны- ми с точки зрения влияния на значение модельного времени. Соответственно, очеред- ной шаг модельного времени в этом случае вычисляется как сумма двух временных интервалов: промежутка до нового сообщения и длительности операции записи. Очередную модификацию модели иллюстрирует рис. 6.61. Предполагается, что вре- мя, необходимое для записи очередного сообщения, является случайной величиной, распределенной равномерно в интервале [3; 7] единиц времени. Сообщения посту- пают через случайные промежутки времени, величина которых подчинена нормаль- ному закону с параметрами m=40, v=5. Как было уже сказано, для формирования текущего значения модельного времени удобнее всего использовать блок Discrete-Time Integrator (дискретный сумматор вре- мени). Однако он имеет только один информационный вход. Поэтому при наличии в модели нескольких типов событий, влияющих на изменение модельного времени, соответствующие им интервалы времени должны предварительно суммироваться. Наиболее подходящий для этого блок — это блок Sum (сложение), число входов которого можно изменять. UJ2100 Геиераюр MATLAB Function Генеракцз интервалов Исчерпание , емкости НЙопшвяя Модельное время MATLAB Function Модель работы накопителя : ' < ДЛЯНР1 ^028] й 81 3 “A’LAB г . Function Рис. 6.61. Управление модельным временем при наличии двух синхронных процессов
304 '.'рок 6 Технолсиия модепировония в среде SIMULINK Для отображения в модели временных параметров процесса записи сообщений в модель введены два блока MATLAB Fen (функция MATLAB), которые на диаграмме обозначены как Генератор длительности записи и Генератор интервалов. Блоки Sum и Discrete-Time Integrator обеспечивают продвижение модельного времени на соответ- ствующую величину. Как и в предыдущем варианте модели, собственный таймер SIMULINK в данном с лучае играет роль «тактового генератора». Для наблюдения за изменением модель- ного времени и влияющими на него процессами в блок-диаграмму был дополни- тельно включен блок Scope (индикатор), имеющий три входных порта. Полученные с его помощью временные диаграммы показаны на рис. 6.62. Рис. 6.62. Временные диаграммы роботы модели еще раз подчеркнем, что в окне Модельное время текущее значение модельного вре- мени отмечается на оси ординат, а на оси абсцисс указаны «номера тактов» работы модели (их можно трактовать как номера сообщений, поступающих от источника). Разумеется, в реальной системе процессы поступления сообщений и их записи на накопитель являются синхронными, так как очередное сообщение может начать за- писываться только после его поступления от источника. В модели такая строгая син- хронизация не обеспечивается: мы не можем утверждать, что сначала SIMULINK добавляетк модельному времени отрезок, соответствующий интервалу до ноступ-
''провление временем 305 ;ения очередного сообщения, и только после этого изменяет модельное время на । штельность записи. Нам известно только то, что обе эти величины добавляются к екущему значению модельного времени в каждом такте моделирования (то есть 1я каждого очередного сообщения). Пока этого вполне достаточно. Хотя в составе I MU LINK имеются средства синхронизации событий, но они относятся к меха- шзму использования подсистем и будут рассмотрены в следующем уроке. ейчас же мы вернемся на некоторое время к первоначальной формулировке зада- , ,i оценки работы двух накопителей. Обратите внимание, что оба они работают од- новременно и совершенно независимо друг от друга, то есть асинхронно. В начале анного раздела было отмечено, что SIMULINKсамостоятельно обеспечивает при- вязку таких процессов к единой оси времени. Однако это справедливо только для ех моделей, в которых и для управления сеансом моделирования используется соб- твенный таймер SIМ U LINK. Если же этот таймер играет роль «тактового генерато- ра», как это было в двух последних примерах, то в блок-диаграмму следует вклю- . ить дополнительные средства контроля времени. Iапример, предположим, что сеанс моделирования должен быть остановлен по ис- ечении 300 единиц модельного времени («внешнего» по отношению к таймеру JMULINK). В этом случае в качестве средств продвижения времени может быть ппользованата же пара блоков — Sum и Discrete-Time Integrator. Однако только этих •вух блоков уже недостаточно. Дело в том, что если просто суммировать затраты времени на работу Н D1 с затратами времени на работу Н D2, то это приведет к двойно- му учету времени (ведь накопители работают одновременно!). В подобных ситуациях целесообразно использовать следующий способ продвиже- шя модельного времени. будем исходить из того, что процесс обслуживания каждого сообщения состоит из гвух составляющих: 3 ожидания поступления сообщения (в течение времени tox); Э записи сообщения па носитель (за время гз). i огда Н D1 обслужит очередное сообщение за время T1=tox1+t3l, а накопитель HD2 — ;а время T2=tox2+l32. Еще одно важное допущение состоит в том, что начало обслуживания очередного сообщения каждым накопителем совпадает с очередным тактом работы модели, за- (аваемым таймером SIMULINK. Тогда продвижение модельного времени в каждом такте будет определяться боль- :чей из величин Т1 и Т2: см = tM + max{T1, Т2} Блок-диаграмма, соответствующая описанному подходу, показана на рис. 6.63 (поскольку способ вычисления коэффициента использования накопителей Ки при этом не изменяется, соответствующие блоки в данном варианте диаграммы не показаны).
306 Урок 6. Технология моделирования в среде SIMULINI Рис. 6.63. Управление окончанием моделирования при наличии двух параллельных процессов''* Блоки, используемые в модели для управления временем, выполняют следующш функции: О Sumi— вычисляет значение Т1 для очередного такта моделирования (то есть дЛг очередного сообщения); О Sum2 — вычисляет значение Т2; л О Su m3 — обеспечивает сравнение величин Т1 и Т2; О Switch (переключатель) — пересылает на вход блока Discrete-Time Integrator боль- шую из величин Т1 и Т2; О Discrete-Time Integrator — вычисляет новое значение модельного времени. Что нового мы узнали? 0 При создании и коррекции блок-диаграммы могут использоваться как стан- дартные для Windows-приложений операции редактирования (вырезать, копи- ровать, вставить), так и собственные возможности графического редактора SIMULINK. 0 Средства управления сеансом моделирования позволяют выбирать длитель- ность интервала моделирования, дискретность изменения модельного времени, метод и точность расчета параметров модели, а также уровень диагностирования создаваемой модели. 0 Промежуточные и конечные результаты моделирования могут сохраняться в ра- бочей области MATLAB либо в файле на диске. Существует возможность после-
Что нового мы узнали? 307 дующего использования результатов эксперимента в качестве исходных данных для последующих прогонов модели. 0 С помощью блоков MATLAB Fen (функция MATLAB) и Fen (функция) в блок- диаграмме может быть использована практически любая библиотечная функция пакета MATLAB. 0 Моделирование случайных факторов может быть реализовано либо собствен- ными средствами SIMULINK, либо посредством включения в блок-диаграмму функций набора инструментов Statistics Toolbox (набор инструментов статисти- ческого анализа). 0 Для изменения модельного времени по особым состояниям при моделировании дискретных систем собственный таймер SIMULINK используется в качестве «тактового генератора», а продвижение времени выполняют блоки Fen и Discrete- Time Integrator (дискретный сумматор времени).
УРОК Подсистемы □ Создание подсистем □ Управляемые подсистемы О Маскирование подсистем П Создание справочных подсистем □ Разработка собственной библиотеки блоков □ Отладчик блок-диаграмм
Как любил повторять незабвенный Козьма Прутков, нельзя объять необъятное. Но это утверждение справедливо только в том случае, если вы пытаетесь совер- шить указанный поступок «голыми руками». Чтобы необъятное перестало быть та- ковым, разработчики SIMULINK создали механизм подсистем. Он основан в пер- вую очередь на использовании блока Subsystem (подсистема), входящего в раздел Signals & Systems (сигналы и системы) библиотеки. С его помощью любая сложная система представляется в виде совокупности взаимодействующих компонент, внут- ренняя структура которых при необходимости может быть скрыта. Основными достоинствами механизма подсистем являются: О повышение наглядности блок-диаграмм моделей сложных систем; □ возможность использования механизма синхронизации параллельно функцио- нирующих подсистем; О повышение технологичности разработки и модификации S-моделей; О возможность включения в блок-диаграмму собственной «встроенной» справоч- ной системы, в том числе содержащей демонстрационные средства. О том, как реализовать и использовать каждое из перечисленных достоинств, будет рассказано в следующих разделах. Создание подсистем Знакомство с технологией использования подсистем начнем с обсуждения способов их создания. Таких способов два: О с помощью команды Create Subsystem (создать подсистему), входящей в меню Edit (правка) окна блок-диаграммы; О путем копирования блока Subsystem (подсистема) из раздела библиотеки Signals & Systems (сигналы и системы) в окно блок-диаграммы. ЗАМЕЧАНИЕ Разумеется, для создания копии или нового варианта существующей падсис- темы могут быть использованы стандартные средства копирования, примени- мые к любому блоку S-модели. Но пока речь идет о создании навой, «пустой» подсистемы. Команда Create Subsystem Команда Create Subsystem (создать подсистему) применяется к группе блоков или ко всей блок-диаграмме, находящейся в активном окне S-модели. Чтобы команда стала доступной, соответствующие блоки должны быть выделены (если в подси- стему «сворачивается» вся блок-диаграмма, то удобнее воспользоваться коман- дой Select all (выделить все)). Недостатком команды Create Subsystem, как уже отме-
310 Урок 7. Подсистемы чалось, является то, что ее действие нельзя отменить. Это требует определенной осторожности. ' Применение данной команды продемонстрируем на примере последнего вариан- ’ та блок-диаграммы работы накопителей, изображенной в предыдущем уроке на j рис. 6.63. Выделите на диаграмме три блока, относящиеся к работе накопителя Н D1: Генератор 1 интервалов, Генератор длительности записи и Sumi. После этого откройте меню Edit и (правка) и выберите команду Create Subsystem. Блок-диаграмма примет вид, пока- ' занный на рис. 7.1. 1 Рис. 7.1. Создание подсистемы с помощью команды Create Subsystem '] Из рисунка видно, что блок Subsystem (подсистема) существенно отличается от сво- 1 его библиотечного варианта. *' На появившемся в модели блоке обозначены два входных порта подсистемы (In 1 и In2) и один выходной (Outl), которые отсутствовали в исходном фрагменте блок- я диаграммы. В связи с этим давайте заглянем «вовнутрь» созданной подсистемы, л Это можно выполнить двумя способами: О дважды щелкнув на изображении подсистемы; j О выбрав команду View ► Model Browser ► Show Model Browser (вид ► просмотр моде- ’ ли ► показать подокно просмотра модели) и затем щелкнув в подокне просмотра •] модели на имени подсистемы. В обоих случаях для представления подсистемы открывается окно просмотра, пред- -'у ставляющее собой стандартное окно блок-диаграммы, дополненное деревом струк- туры модели (рис. 7.2). j
Создание подсистем 311 Рис. 7.2. Представление подсистемы в окне просмотра модели Блок-диаграмма подсистемы, вероятно, несколько отличается от того, что вы ожи- дали увидеть: наряду с тремя исходными блоками подсистема теперь содержит три новых — Ini, In2 и Outl. Именно их присутствие в составе подсистемы и повлияло на изменение ее изображения. Интерфейс подсистем Блоки In (входной порт) и Out (выходной порт) входят в раздел Signals & Systems (сигналы и системы) библиотеки и предназначены в первую очередь для обеспече- ния связи подсистемы с «внешним миром». Как следует из названия, блоки типа In выполняют прием входных сигналов, поступающих в подсистему, а блоки типа Out — выдачу результатов ее работы на другие блоки (в том числе подсистемы) мо- дели, либо их сохранение в рабочей области MATLAB. Количество блоков In и Out, включаемых в состав подсистемы, не ограничено и определяется только логикой работы создаваемой модели. Эти блоки, как и блоки других типов, могут иметь в диаграмме произвольные имена, назначаемые разработ- чиком в соответствии с их содержательным смыслом. Эти имена выводятся внутри подсистемы вместо стандартных обозначений In и Out, что, естественно, значитель- но повышает наглядность блок-диаграммы. Чтобы убедиться в этом, замените в окне подсистемы обозначение выходного порта Outl именем Т1 и перейдите на верхний уровень блок-диаграммы (щелкнув в подокне иерархии на имени S-модели). ЗАМЕЧАНИЕ Блоки In SIMULINK включает в .подсистему талька потому, что входные пар- ты блоков MATLAB Fen (функция MATLAB) интерпретируются как входы подсис- темы. Поскольку в модели эти порты не задействованы, блоки In можно безбо- лезненно удалить.
312 Урок 7. Подсистемы Внесенные изменения показываются на изображении подсистемы (рис. 7.3). Блок Subsystem Второй способ создания подсистемы основан на копировании библиотечного блока Subsystem (подсистема) в окно блок-диаграммы. При этом целесообразно придер- живаться следующей последовательности действий. 1. Отбуксируйте копию блока Subsystem в окно редактируемой блок-диаграммы (верхнего уровня или другой подсистемы). 2. Дважды щелкните на изображении новой подсистемы; в результате откроется пустое окно, аналогичное по структуре стандартному окну блок-диаграммы. 3. Выделите с помощью мыши в окне основной блок-диаграммы те блоки, которые должны войти в подсистему, затем перетащите выделенные блоки в окно подси- стемы, как показано на рис. 7.4. 4. Если скопированный в окно подсистемы фрагмент более не нужен в основной блок-диаграмме, то его следует удалить либо с помощью клавиши Del, либо с по- мощью команд редактирования. Последние два шага можно объединить, воспользовавшись командами Edit ► Cut (правка ► копировать) и Edit ► Paste (правка ► вставить) либо комбинациями кла- виш Ctrl+X и Ctrl+V. На рис. 7.4 описанная выше технология проиллюстрирована применительно к под- системе, аналогичной созданной ранее с помощью команды Create Subsystem (создать подсистему) для накопителя HD1. Однако при «ручном» копировании созданная подсистема остается неподключенной к другим компонентам блок-диаграммы. Поэтому работу по ее созданию требуется продолжить. В первую очередь необходимо
Создание подсистем 313 включить в ее состав блоки In (входной порт) и Out (выходной порт), скопировав их либо из библиотеки, либо из ранее созданной подсистемы (в рассматриваемом при- мере нужен только блок Out). После этого закройте окно новой подсистемы (теперь опа стала похожа на свою предшественницу), переместите блок Subsysteml в нуж- ную позицию и подсоедините к входному порту блока Sum3. Рис. 7.4. Создание подсистемы на основе библиотечного блока Subsystem Результат выполнения перечисленных действий показан на рис. 7.5. Рис. 7.5. Вид блок-диаграммы после создания второй подсистемы
314 Урок 7. Подсистемы Несколько слов об окне блок-диаграммы подсистемы. Внешне оно ничем не отлича- ется от окна основной модели, и его строка меню содержит те же меню. Более того, область действия команд меню распространяется на всю S-модель, в которую вхо- дит данная подсистема. В частности, команда Save (сохранить) меню File (файл) 2 обеспечивает запись на диск всей блок-диаграммы модели, включая подсистему, а команда Start (пуск) запускает на исполнение основную модель. Исключение состав- ляют только некоторые команды меню Format (формат), которые изменяют визуаль- ные атрибуты блок-диаграммы подсистемы. Например, команда выбора цвета залив- ки окна — Screen Color (цвет экрана) — изменяет только цвет данного окна. После этих не очень существенных замечаний вернемся к блокам In и Out. Ранее была ’ рассмотрена технология их применения в блок-Д1 гаграмме верхнего уровня для обме- ' на данными с рабочей областью MATLAB (см. раздел «Меню Simulation» в уроке 6 . «Технология моделирования в среде SIMULINK»). При использовании блоков In и Out внутри подсистемы появляется ряд особенностей, которые заслуживают внимания. Начнем с блока In. При его включении в состав подсистемы следует учитывать еле- 1 дующие правила. О При копировании блока в подсистему из блок-диаграммы верхнего уровня или из другой подсистемы для него сохраняется прежнее значение параметра Port number (номер порта), если оно не конфликтует с номерами блоков In, уже имею- щихся в подсистеме (номера блоков должны быть упорядочены в возрастающем ’ порядке с шагом 1). Несоблюдение этого условия при запуске модели вызовет сообщение об ошибке со стороны SIMULINK. Рис. 7.6. Изменение конфигураций линий связи при изменении значений параметра Port number
Создание подсистем 315 О Если вы измените значение параметра Port number блока In, который уже был подключен к какому-либо внешнему блоку, то это изменение не приведет к изме- нению маршрута передачи сигнала, но может повлечь автоматическое изменение конфигурации линий связи. Указанную ситуацию иллюстрирует рис. 7.6, на ко- тором сверху показана исходная конфигурация линий связи, а снизу — конфигу- рация линий связи после изменения значений параметров Port number. О Если номер нового входного порта подсистемы (блока In) превосходит номер старшего из имеющихся портов более чем на 1, SIMU LINK автоматически фор- мирует «недостающие» порты на изображении подсистемы (на рис. 7.7 таких портов 3 — со второго по четвертый). При этом следует иметь в виду, что создан- ные порты являются виртуальными (для них не создаются соответствующие блоки In). И хотя графически к такому порту может быть подсоединен блок, при запуске модели SIMULINK выдаст сообщение об ошибке «Входной порт с номе- ром таким-то отсутствует», как показано на рис. 7.8. Подключение к виртуальному порту, вызвавшее ошибку Рис. 7.7. Создание виртуальных входных портов подсистемы Рис. 7.8. Некорректное использование виртуальных входных портов
316 Урок 7. Подсистемы Блок Out также имеет три параметра настройки, причем два последних, как было сказано при первоначальном описании блока, доступны только при включении блока в состав управляемой подсистемы (речь о них пойдет в следующем разделе). Пара- метр Port n umber используется таким же образом, как и одноименный параметр блока In.; Имеется в виду следующее. SIMULINK автоматически упорядочивает номера выходных портов подсистемы при наличии в ней нескольких блоков Out. При этом блоку с наибольшим порядко- вым номером (определяемым параметром Port number) соответствует самый нижний выходной порт подсистемы, как показано на рис. 7.9. Рис. 7.9. Взаимное соответствие номеров блоков Out и выходных портов подсистемы В случае «насильного» изменения разработчиком нумерации блоков Out, подклю- ченных к блокам верхнего уровня, SIMULINK восстанавливает прежние маршруты пересылки сигналов, изменяя при этом конфигурацию линий связи (рис. 7.10). Рис. 7.10. Изменение конфигуроции линий связи при изменении номеров блоков Out
Создание подсистем 317 Если в подсистему включены блоки Out, номера которых отличаются более чем на 1, SIMULINK создает для недостающих номеров виртуальные выходные порты; при запуске модели на исполнение это приведет к возникновению ошибки. (^>) ЗАМЕЧАНИЕ Если блок Out входит в состав подсистемы, он не может быть использован для записи данных в рабочую область MATLAB. При всех достоинствах блоков In и Out они представляют собой самое слабое средство взаимосвязи подсистемы с другими компонентами модели, поскольку обеспечива- ют обмен информацией только между подсистемой и ее ближайшими «соседями». Значительно более широкие возможности по пересылке данных между компонента- ми модели предоставляют блоки Goto (передать), From (принять) и Goto Tag Visibility (признак видимости блока передачи), также входящие в раздел Signals & Systems (сигналы и системы). Блок Goto, который в данном случае представляет собой «передатчик», является основным среди них, поскольку определяет имя и область видимости пересылаемых данных. Для техчитателей, которые знакомы с программированием на одномиз универсальных языков, термин «область видимости» в пояснениях не нуждается. Для остальных же скажем, что область видимости переменной (или каких-либо данных) определяет перечень тех компонент модели, в которых переменная доступна для использования. Имя передаваемых данных и область их видимости указывается разработчиком моде- ли с помощью окна настройки параметров блока Goto. Таких параметров два (рис. 7.11). О Тад (тег) — имя (метка) передаваемых данных. Представляет собой любую последо- вательность латинских букв, цифр и символов «подчеркивания», причем на первой позиции обязательно должна стоять буква. Длина имени практически не ограни- чена, но SIMULINK различает только первые 32 символа (по правилам языка С). Рис. 7.11. Окно настройки блока Goto
318 Урок 7. Подсистемы О Tag visibility (признак видимости) — область видимости передаваемых данных; значение параметра устанавливается с помощью раскрывающегося списка, кото- рый содержит три пункта: • local (локально) — переменная является локальной, то есть область ее види- мости ограничена подсистемой, в которой находится данный блок Goto; • scoped (внутри) — область видимости переменной дополнительно распрост- раняется на все подсистемы более низких уровней иерархии, входящие в со- став данной подсистемы; • global (глобально) — переменная является глобальной, то есть она доступна в любой компоненте (подсистеме) S-модели. Установленные параметры отображаются внутри блока: имя передаваемой перемен- ной выводится либо в квадратных скобках (при локальной области видимости), либо в фигурных скобках (при внутренней области видимости), либо вообще без скобок (при глобальной области видимости). Один блок Goto может передавать значение переменной на произвольное число бло- ков From, однако последний может быть связан только с одним блоком Goto. Блок From, который в данном случае представляет собой «приемник», обеспечивает прием данных от соответствующего блока Goto. Соответствие определяется по име- ни переменной, которое является единственным параметром настройки этого блока (рис. 7.12). Имя переменной, как и для блока Goto, выводится внутри блока. jolc Ысс!. then a Goto Тag Visibility Ысс! must lity of the tag. After 'Update Diagram', the block i ;ag name [local tags are enclosed in brackets. ’ »6 enclosed in braces.UJ Block Paianieteis: From Рис. 7.12. Окно настройки параметров блока From Как было сказано выше, взаимоотношения между блоками Goto и From определяют- ся в первую очередь значением параметра Tag visibility блока Goto. Однако существу- ет еще одно условие, необходимое для корректной работы модели. Если один из этих блоков входит в состав управляемой подсистемы, то другой блок должен быть или в той же подсистеме, или в подсистеме более низкого уровня иерархии (но не в другой управляемой подсистеме). Тем не менее, если блок Goto подключен к выходу функционального блока, формирующего состояние моделируемой системы, сигнал может быть послан в блок From, расположенный в другой управляемой подсистеме.
Создание подсистем 319 Блок Goto Tag Visibility необходимо включать в состав модели только в том случае, если для передаваемых данных установлена внутренняя (параметр scoped) область видимости. Блок помещается в те подсистемы, на которые распространяется область видимости передаваемых данных. Другими словами, он играет роль, аналогичную роли предупреждающего дорожного знака. Этот блок не имеет ни входных, ни вы- ходных портов и не участвует в преобразовании данных. Его единственным парамет- ром настройки является имя передаваемой переменной, которое выводится внутри блока. Один из возможных вариантов использования блоков Goto и From в модели работы накопителей показан на рис. 7.13. Рис. 7.13. Пример использования блоков Goto и From В данном случае они обеспечивают передачу величины Т1 (длительности обслужи- вания очередного сообщения накопителя HD1) из подсистемы Subsystem на входы блоков Sum3 и Switch. Те из читателей, кто занимался программированием, знают, что каждая переменная в программе характеризуется не только областью видимости, но и временем жизни. Некоторые переменные «живут» на протяжении всего времени выполнения про- граммы, другие «появляются на свет» только при запуске какой-либо подпрограм- мы и «умирают» при завершении ее работы. С этой точки зрения блоки S-модели можно рассматривать как подпрограммы, а обрабатываемые в них данные (сигналы) остаются «живы» до тех пор, пока перехо- дят от одного блока к другому. Другими словами, время жизни сигнала в S-модели определяется длиной той цепочки блоков, по которой он распространяется. Это ут- верждение справедливо и для тех данных, которые передаются с помощью блоков Goto и From.
320 Урок 7. Подсистемы. Однако в составе SIMULINK есть блоки, которые способны «продлить жизнь» лю бому сигналу (переменной) до окончания сеанса моделирования. Это блоки Dat Store Memory (память для данных), Data Store Read (чтение данных) и Data Store Writ (запись данных). Они используются только все вместе, поскольку отсутствие в моде ли любого из них делает ненужным присутствие двух других. Но наиболее важну» роль играет блок Data Store Memory, поскольку он определяет имя, формат и облает видимости сохраняемых данных. Блок имеет два параметра настройки (рис. 7.14). О Data store name (имя сохраняемых данных); О Initialvalue (начальноезначение). Рис. 7.14. Окно настройки параметров блока Data Store Memory Правила для записи имени сохраняемых данных те же, что и для записи имени пере- менной в блоке Goto. С помощью параметра Initial value задается не только начальное значение, но и фор- мат сохраняемых данных. Например, если его значение установлено так: [[24] [37]], то это означает, что сохраняемая переменная представляет собой масс ив размернос- тью 2x2. Этот формат должен обязательно учитываться при использовании блоков Data Store Write и Data Store Read. Область видимости сохраняемой переменной определяется тем, где расположен блок Data Store Memory. Если он помещен в блок-диаграмме самого верхнего уровня, то сохраняемые данные доступны в любой компоненте S-модели. Если же он нахо- дится внутри одной из подсистем, то область видимости сохраняемых данных огра- ничивается этой подсистемой и входящими в нее подсистемами более низких уров- ней иерархии (если таковые имеются). Окна настройки параметров блоков Data Store Write и Data Store Read идентичны и со- держат по два параметра (рис. 7.15). О Data store па те — его значение должно совпадал, с именем, указанным в окне на- стройки блока Data Store Memory. О Sa m pie ti me (эталонное время) — величина шага моделирования для данного блока.
Создание подсистем 321 Рис. 7.15. Окно настройки параметров блока Data Store Write Количество экземпляров блоков Data Store Read и Data Store Write, относящихся к од- ному и тому же блоку Data Store Memory, может быть любым. Однако при этом послед- ний не контролирует согласованность записи и считывания сохраняемых данных в различных точках блок-диаграммы. Ответственность за такое согласование возла- гается на разработчика модели. Следует заметить, что недостаточно внимательное отношение к этому вопросу может привести к неожиданным и весьма неприятным последствиям. На рис. 7.16 приведен пример некорректного использования блока Data Store Write. Некорректность заключается в том, что под одним и тем же именем (А) сохраняются две разные величины — Т1 (время обслуживания очередного сообщения накопите- лем HD1) и Т2 (то же время, но для HD2). Ч Рис. 7.16. Пример некорректного использования блока Data Store Write В данном случае способность SIMULINK к квази параллельной обработке событий может привести к ошибочному результату, поскольку неизвестно, какая именно из двух величин будет записана под именем А.
322 Урок 7. Подсистемы Управляемые подсистемы Управляемая подсистема (conditionally executed subsystem) — это такая подсистема, активизация которой происходит только при наличии некоторого внешнего управ- ляющего события (или сигнала). Механизм управляемых подсистем обеспечивает эффективное и простое решение проблемы синхронизации параллельных процессов. Этот механизм реализован в SIMULINK на основе двух блоков, входящих в раздел Signals & Systems (сигналы и системы): Enable (включатель) и Trigger (триггер). Функ- ции последнего в данном случае .лучше всего иллюстрирует жаргонное слово «пускач». Оба блока могут использоваться только внутри Подсистем, поэтому если вы попыта- етесь вставить любой из них в поле основной блок-диаграммы, SIMULINK не по- зволит этого сделать и выдаст поясняющее сообщение. Соответственно, формальным признаком управляемой подсистемы является нали- чие в ее составе хотя бы одного из блоков Enable и Trigger. Логика работы управляе- мой подсистемы зависит от того, какой именно блок входит в ее состав. В модели могут использоваться управляемые подсистемы трех основных типов: О содержащие блок Enable (в дальнейшем будем называть их Е-подсистемами)-, О содержащие блок Trigger (назовем их Т-подсистемамй)-, О содержащие оба управляющих блока (ЕТ-подсистемы). Е-подсистемы Рисунок такой подсистемы содержит тот же символ, что и сам блок Enable (включа- тель). Кроме того, при включении этого блока в состав подсистемы ей автоматичес- ки добавляется управляющий входной порт, обозначение которого также выводит- ся на рисунке. Е-подсистема запускается в том случае, если управляющий входной сигнал имеет положительное значение. Если управляющий сигнал может изменять полярность, то Е-подсистема начинает работу на том шаге моделирования, когда сигнал переходит нулевое значение в положительном направлении и работает до тех пор, пока он оста- ется положительным. Если управляющий сигнал — вектор, то Е-подсистема запус- кается в том случае, когда хотя бы один его элемент — не нуль. Разработчик модели может в определенном смысле корректировать логику работы Е-подсистемы, изменяя параметры настройки блока Enable. Таких параметров два (рис. 7.17). О Раскрывающийся список States when enabli ng (состояние при запуске) определя- ет состояние подсистемы в момент очередного запуска: « held (сохранение) — использовать предыдущее состояние; * reset (сброс) — использовать начальное (исходное) состояние подсистемы. О При установленном флажке Show output port (показать выходной порт) блок Enable имеет выходной порт, сигнал с которого может быть использован для уп- равления блоками, входящими в состав подсистемы.
Управляемые подсистемы 323 Рис. 7.17. Окно настройки блока Enable Применение блока Enable поясним, воспользовавшись уже знакомой вам моделью работы накопителя. Будем считать, что накопитель может начать записывать очеред- пое.сообщение только после того, как закончится запись предыдущего. Другими сло- вами, изменение занятой емкости накопителя происходит только в том случае, если интервал времени до появления очередного сообщения 11ревышает длительность за- писи предыдущего. Соответствующая блок-диаграмма показана на рис. 7.18. Рис. 7.18. Пример роботы Е-подсистемы В данном варианте модели назначение трех блоков MATLAB Fen (функция MATLAB) осталось прежним: они используются в качестве генераторов соответствующих случайных величин. Блок Memory (регистр) нужен для того, чтобы обеспечить сравнение промежутка времени до очередного сообщения с длительностью записи предыдущего (поступившего на шаг раньше). При этом iтредгюлагается, что за время записи сообщения в системе не может появиться более одного нового (выполнение этого условия обеспечивается за счет подбора значений параметров распределении соответствующих случайных величин). Состав подсистемы показан на том же ри- сунке. По сути, она содержит единственный функциональный блок — Discrete-Time Integrator (дискретный сумматор времени), который вычисляет занятую емкость
324 Урок 7. Подсистемы накопителя. В соответствии с логикой работы модели, увеличение занятой емкости происходит только при положительном запасе времени. В противном случае очеред- ное поступившее сообщение «теряется» и его запись не производится. На рис. 7.19 приведены временные диаграммы работы Е-подсистемы и подсистемы, в которой контроль временных параметров не производится. Рис. 7.19. Временные диограммы работы Е-подсистемы и подсистемы без контроля времени ЗАМЕЧАНИЕ В рассмотренном примере параметр States when enabling блоко Enoble обяза- тельно должен иметь значение held, иноче величине занятой емкости нако- пителя будет вычисляться з оно во при каждом запуске подсистемы. Е-подсистема может содержать любой блок, формирующий непрерывный или дис- кретный сигнал. Дискретные блоки в Е-подсистеме выполняются только, когда под- система активизирована, и только если их параметр Sample time (эталонное время) соответствует шагу моделирования, установленному в окне настройки модели, по- скольку при работе Е-подсистемы и модели используется общий таймер. Хотя Е-подсистема не выполняется при отсутствии разрешающего сигнала, сигнал с ее выхода по-прежнему может быть передан на другие блоки модели. Для этого в Е-подсистему должен быть включен блок Out (выходной порт). Для такого блока становятся доступны параметры настройки Output when disabled (выходной сигнал в отключенном состоянии) и Initial output (начальное значение выходного сигнала), как показано на рис. 7.20. Первый из них позволяет выбрать значение выходного сигнала на тот период време- ни, когда подсистема находится в «отключенном» состоянии. Выбор производится с помощью раскрывающегося списка, который содержит те же пункты, что и параметр настройки блока Enable: О held — выходной сигнал соответствует последнему (текущему) состоянию под- системы; О reset — выходной сигнал соответствует начальному (исходному) состоянию под- системы.
Управляемые подсистемы 325 Рис. 7.20. Порометры настройки блока Out, входящего в Е-подсистему Другой параметр — Initial output — определяет значение сигнала на выходе Е-подси- стемы в момент ее первого запуска. Т-подсистемы Работа Т-подсистем, управляемых с помощью блока Trigger (триггер), несколько от- личается от рассмотренной выше. Основное отличие состоит в том, что Т-подсисте- ма работает только на том шаге моделирования, на котором произошло изменение полярности входного сигнала. Другое отличие заключается в том, что Т-подсистема не возвращается в исходное состояние; ее текущее состояние сохраняется до очеред- ного запуска. Поэтому для блока Out, входящего в Т-подсистему, параметр Output when disabled (выходной сигнал в отключенном состоянии) не используется. Рисунок Т-подсистемы содержит символ блока Trigger, однако возможны три раз- личные модификации его изображения, которые зависят от значения параметра Trigger type (тип триггера) блока. Выбор значения этого параметра производится в окне настроек блока с помощью раскрывающегося списка (рис. 7.21). Список содержит четыре пункта: О rising (подъем) — подсистема активизируется при изменении полярности управ- ляющего сигнала в положительном направлении (либо при переходе от нулевого значения к положительному); О falling (спад) — запуск подсистемы происходит при изменении полярности сиг- нала в отрицательном направлении; О either (любой) — запуск подсистемы разрешен при любом изменении полярнос- ти управляющего сигнала; О function-call (вызов функции) — запуск системы определяется логикой работы заданной S-функции.
326 Урок 7. Подсистемы U ш И |Ю rising falling either function-call Рис. 7.21. Окна настройки блока Trigger Вторым параметром настройки блока Trigger является флажок Show output port (показать выходной порт), который используется аналогично одноименному пара- метру блока Enable (включатель). В отличие от Е-подсистем, Т-подсистемы всегда сохраняют последнее значение вы- ходного сигнала до следующего запуска. Кроме того, при запуске Т-подсистемы ни- когда не восстанавливается ее предыдущее состояние; состояния всех входящих в нее дискретных блоков также сохраняются между управляющими событиями. Т-подсистемы, как и Е-подсистемы, могут содержать любые блоки из библиотеки SIMULINK. Однако налагаются некоторые ограничения на использование тех бло- ков, которые имеют параметр Sample time (эталонное время): его значение должно быть установлено равным -1, которое указывает, что дискретность изменения вре- мени «наследуется» от предшествующего блока. Кроме того, если в составе Т-подси- стемы имеются блоки, одним из параметров настройки которых является флажок Inherit sample time (наследовать эталонное время), то он должен быть установлен. На рис. 7.22 показана простейшая Т-подсистема, ана следующем рисунке (рис. 7.23) — временные диаграммы ее работы в различных режимах. Рис. 7.22. Пример Т-подсистемы
Управляемые подсистемы 327 Рис. 7.23. Временные диаграммы роботы Т-подсистемы ЕТ-подсистемы Третий тип управляемой подсистемы — это ЕТ-подсистема, то есть подсистема, со- держащая как блок Enable (включатель), так и блок Trigger (триггер). На ее изображе- нии выводятся символы обоих блоков, и она имеет два управляющих входных пор- та. Правило запуска такой подсистемы состоит в следующем. Если на некотором шаге моделирования происходит изменение полярности «триггерного» сигнала, то SIMULINK проверяет значение сигнала на втором управляющем входе. Если оно больше нуля, то подсистема запускается и работает в течение данного шага модели- рования. Если оба управляющих сигнала — векторы, подсистема выполняется в том случае, если, по крайней мере, один элемент каждого вектора отличен от нуля. Пользователь может управлять логикой запуска ЕТ-подсистемы, изменяя парамет- ры настройки блоков Enable и Trigger. На рис. 7.24 показана блок-диаграмма, содержащая ЕТ-подсистему, а также графи- ки (справа) изменения управляющих сигналов (trigger и enable) и сигнала на выходе подсистемы.
328 Урок 7. Подсистемы j Trigger Enable Пример роботы ЕТ-подсистемы Outl Constant Рис. 7.24. Выходной сигнал подсистемы зависит в первую очередь от параметров настройки двух блоков, включенных в ее состав: Trigger и Out (выходной порт). В данном случае они имеют следующие значения: МИ О Trigger type (тип триггера) — rising (подъем); р О Output when disabled (выходной сигнал в отключенном состоянии) — reset (сброс); ® О Initial output (начальное значение выходного сигнала) — 0. Параметр States when enabling (состояние при запуске) блока Enable имеет меньший Ж приоритет, чем параметр Output when disabled блока Out, и потому его значение не & влияет на выходной сигнал подсистемы. Наличие двух управляющих входов в ЕТ-подсистеме позволяет описывать в моде- s ли достаточно сложные правила ее запуска. Маскирование подсистем j Маскированная подсистема (masked subsystem) — это такая подсистема, структуру которой нельзя увидеть непосредственно на блок-диаграмме. Кроме того, она имеет соб- « ственпое диалоговое окно настройки параметров и, как прав! 1ло, собственный рисунок. 'Й Другими словами, маскированная подсистема — это аналог библиотечного блока 'Т SIMULINK. Маскированные подсистемы обладают следующими достоинствами: J О значительно расширяются интерактивные возможности пользова теля но управ- 1 лению параметрами S-модели; 1
Маскирование подсистем 329 □ возможно создание более понятного интерфейса за счет введения необходимых комментариев как к подсистеме в целом, так и к отдельным параметрам; Э обеспечивается повышение наглядности блок-диаграммы; Э повышается защищенность S-модели от неумышленной модификации (а в неко- торых случаях — и от умышленной). Создание маскированной подсистемы предполагает выполнение следующей после- довательности действий. 1. Описание параметров подсистемы. 2. Определение способов изменения значений параметров. 3. Разработку собственного изображения подсистемы. 4. Создание необходимых комментариев (справки) по использованию подсистемы. Редактор маски Все перечисленные выше этапы выполняются с помощью специальной компоненты SIMULINK — редактора маски (mask editor). Для запуска редактора маски необхо- димо выбрать в меню Edit (правка) окна блок-диаграммы команду Mask Subsystem (маскировать подсистему). Предварительно в блок-диаграмме S-модели должна быть выделена та подсистема, для которой вы собираетесь создать маску. При запуске редактора маски открывается диалоговое окно, содержащее три вклад- ки: Icon (значок), Initialization (инициализация), Documentation (документация). Первая из них предназначена для создания рисунка (значка) подсистемы, вторая обеспечивает формирование диалогового окна настройки параметров подсистемы, а третья позволяет добавлять в диалоговое окно подсистемы необходимые коммен- тарии, а также средства вызова дополнительной справочной информации. В нижней части окна редактора маски расположено пять кнопок, которые являются общими для всех трех вкладок: О ОК — позволяет применить к маскируемой подсистеме установки, заданные на открытой вкладке (либо сделанные ранее на других вкладках) и закрыть окно редактора маски; О Cancel (отмена) — обеспечивает восстановление предыдущих значений парамет- ров маски и закрывает окно редактора маски; О Unmask (снять маску) — позволяет «демаскировать» подсистему, при этом окно редактора маски закрывается, а параметры «снятой» маски запоминаются SIMU- LINK и могут быть восстановлены с помощью команды Edit ► Mask Subsystem (со- ответствующая подсистема должна быть выделена); после закрытия S-модели информация о маске теряется; О Help (справка) — открывает раздел документации в формате html, описывающий технологию маскирования подсистем; О Apply (применить) — позволяет применить к маскируемой подсистеме установ- ленные значения параметров маски (без закрытия окна редактора маски).
330 Урок 7. Подсистемы Рассмотрим средства, которые предоставляет в распоряжение пользователя редак- тор маски. Начнем с вкладки Initialization (рис. 7.25). Рис. 7.25. Вкладка Initialization окна редактора маски Она содержит следующие элементы. О 11оле Mask type (тип маски) предназначено для указания типа (названия) созда- ваемой маскированной подсистемы. Это аналог типа блока из библиотеки — Constant (константа). Sum (сложение) и т. д. Допускается использовать русско- язычные названия. О Список параметров настройки подсистемы. Каждая строка списка условно раз- делена на три поля, идентифицируемые заголовками: • Prom pt (подсказка) — комментарий к параметру; • Туре (тип) — тип параметра (вычисляемый, выбираемый из списка и т. д.); • Variable (переменная) — имя переменной, в которой будет храниться текущее значение параметра. О Для работы со списком служат расположенные слева от него четыре кнопки: • Add (добавить) — добавить в список элемент (строку); • Delete (удалить) — удалить элемент (строку) из списка;
Маскирование подсистем 331 • 11р(вверх) —переместить элемент списка на одну строку вверх; • Down (вниз) — переместить элемент на одну строку вниз. При открытии окна редактора маски доступна только первая из этих кнопок. Для использования трех других кнопок необходимо предварительно выделить стро- ку в списке (если список не пуст), щелкнув на ней мышью. Очередность парамет- ров в списке определяет их положение в диалоговом окне настройки. Список может содержать не более 14 параметров. О Поле Prompt (подсказка) служит для ввода пояснения к параметру (например, «Коэффициент усиления», «Первое слагаемое» и т. д.). Допускается использо- вать русскоязычные названия. Текст, введенный в этом поле, отображается в од- ноименном поле активной (выделенной) строки списка параметров. О Поле Variable (переменная) предназначено для ввода имени переменной, в кото- рой будет храниться значение соответствующего параметра. Имя переменной Может состоять только из латинских букв и цифр, в остальном выбор имени может быть произвольным. Содержимое этого поля отображается в одноимен- ном поле активной (выделенной) строки списка параметров. О Раскрывающийся список Control type (тип элемента управления) позволяет ука- зать тип элемента интерфейса, с помощью которого будет устанавливаться значе- ние данного параметра: • Edit (поле ввода); ® Checkbox (флажок); ® Popup (раскрывающийся список). Вариант, выбранный в этом списке, отображается в поле Туре активной (выделен- ной) строки списка параметров. О Раскрывающийся список Assignment (назначение) предназначен для выбора типа параметра: « Evaluate (вычисляемый) — то есть имеющий численное значение; • Literal (символьный) — воспринимается SIMULINK как строка символов. О Поле Popup strings (строки списка) служит для ввода элементов раскрывающе- гося списка, используемого для выбора значений соответствующего параметра. Поле становится доступным, когда в списке Control type выбран вариант Popup. Вводимые строки (элементы списка) должны быть разделены вертикальной чер- той (рис. 7.26). О Поле Initialization commands (команды инициализации) предназначено для ввода списка команд инициализации маски. Команды инициализации оперируют с переменными, находящимися в рабочей области маскированной подсистемы (mask workspace). Они представляют собой обычные команды MATLAB и могут содержать М-функции и операторы MATLAB. Другими словами, поле Initialization commands можно считать аналогом командного окна MATLAB, область действия которого ограничена рабочей областью маскиро- ванной подсистемы.
332 Урок 7. Подсистемы Пункты списка Способ выбора значений Prompt: f КсоФФициент Ufeste-'f^ A_i" , ,;;' СогЗД(уре: (popup^ Т[ ~ 5" АЙ$у«й«Ь Evaluate '.ЦУУ '_‘Эда_______ Пункты списка Способ выбора значений Рис. 7.26. Создание раскрывающегося списка для окна настройки параметров подсистемы Рабочая область маскированной подсистемы является, по сути, локальной рабочей областью исполняемой подсистемы. Она создается в следующих случаях: О если маска подсистемы содержит команды инициализации; О если при описании маски заданы параметры настройки подсистемы. Переменные, содержащиеся в рабочей области маскированной подсистемы, доступны всем блокам, входящим в ее состав. Другими словами, при создании маски можно опре- делять параметры, которые должны иметь одинаковое значение для всех блоков, входя- щих в состав маскированной подсистемы (например, дискретность шага моделирования). SIMULINK может выполнять команды инициализации в следующих случаях: О при открытии окна блок-диаграммы модели; О при запуске модели на исполнение; О при обновлении блок-диаграммы по команде Update Diagram (обновить блок-диа- грамму); О при вращении блока маскированной подсистемы (в этом случае команды иници- ализации обеспечивают перерисовку рисунка с учетом угла поворота); О для автоматического изменения рисунка, зависящего от параметров блока. Описание параметров подсистемы Поясним технологию создания собственного окна настройки параметров на приме- ре подсистемы, изображенной на рис. 7.27 (справа показана блок-диаграмма, в со- став которой она включена). С ее помощью выполняются следующие действия: посредством блока Hit Crossing (индикатор пересечения) входной сигнал сравнивается с некоторым пороговым значением и, если порог превышен, то на выход подсистемы выдается число, которое задается блоком Constant (константа).
Маскировоние подсистем 333 Рис. 7.27. Маскируемая подсистема (исходное состояние) Щелкните на изображении маскируемой подсистемы (один раз!), откройте меню Edit (правка) и выберите в нем команду Mask Subsystem (маскировать подсистему). В окне редактора маски перейдите на вкладку Initialization (инициализация). Созда- ние маски начнем с того, что выберем общее имя для подсистем такого типа, напри- мер Умножитель. Введите его в поле Mask type (тип маски) и щелкните на кнопке Apply (применить). Следующим шагом в создании маски является описание параметров настройки под- системы. Пусть таких параметров будет два: значение порога, задаваемого в блоке Hit Crossing, и значение, выдаваемое на выход подсистемы при превышении порога. Для описания первого из них необходимо выполнить следующую процедуру. 1. Щелкнуть на кнопке Add (добавить), чтобы внести первый элемент в список пара- метров. 2. В поле Prompt (подсказка) ввести слово Порог (пояснение к параметру). После нажатия клавиши Enter оно отображается в списке параметров. 3. В поле Vaoab-e (переменная) ввести произвольное имя переменной, в которой будет храниться значение данного параметра, например ро год. Чтобы внести его в список параметров, следует еще раз нажать клавишу Enter. 4. В раскрывающемся списке Control type (тип элемента управления) оставить ва- риант Edit (поле ввода), который выбран по умолчанию. 5. В раскрывающемся списке Assignment (назначение) также оставить выбранное по умолчанию значение Evaluate (вычисляемый). 6. Щелкнуть на кнопке Apply (применить). С этого момента подсистема стала маскированной — она получила свою «маску» в виде диалогового окна настроек. Чтобы ее увидеть, необходимо дважды щелкнуть на изображении подсистемы в окне блок-диаграммы. Как видите (рис. 7.28), формат маскг i полностью совпадает с форматом окна настрой- ки любого библиотечного блока SIMU LINK: она содержит название подсистемы, ее
334 Урок 7. Подсистемы параметр и кнопки управления, назначение которых совпадает с назначением анало- гичных кнопок в окне настроек библиотечных блоков. Рис. 7.28. Моско подсистемы после описания первого параметра Диалоговое окно позволяет ввести значение параметра Порог, однако если это сде- лать и запустить модель, SIMU LINK выдаст сообщение об ошибке. Дело в том, что программа пока «не знает», каким образом параметр Порог связан с соответствую- щим параметром блока Hit Crossing (и связан ли вообще). Для установления такой связи как раз и используется переменная ро год, относящаяся к параметру Порог. Связь между параметрами маскированной подсистемы и параметрами блоков, вхо- дящих в ее состав, реализуется через упоминавшуюся уже рабочую область подсис- темы (mask workspace). Схематично эта связь показана на рис. 7.29. Рис. 7.29. Взоимосвязь порометров подсистемы и входящих в нее блоков Таким образом, чтобы увязать параметр Порог с параметром настройки блока Hit Crossing, необходимо ввести в поле параметра Hit Crossing offset (порог пересечения) имя переменной ро год. Чтобы изменить значение параметра блока, входящего в маскированную подсисте- му, требуется «заглянуть ей под маску» (то есть открыть окно блок-диаграммы под- системы). Это можно сделать с помощью команды Look Under Mask (заглянуть под маску) меню Edit (правка). Продолжим создание маски для подсистемы Умножитель. Для описания второго па- раметра требуется выполнить следующие действия. 1. Щелкнуть на кнопке Add для добавления второй строки в список параметров. 2. В поле Prompt ввести слово Коэффициент.
Маскирование подсистем 335 3. В поле Variable указать имя переменной, например к. 4. Значения полей Control type и Assignment следует оставить без изменения. Параметр Коэффициент, как и Порог, необходимо связать с соответствующим блоком подсистемы (теперь это блок Коэффициент). Чтобы создать связь, требуется ввести в окне настройки этого блока имя переменной к. После завершения описания обоих параметров диалоговое окно настройки парамет- ров подсистемы должно выглядеть так, как показано на рис. 7.30. Рис. 7.30. Окончотельный вид диологавого окна настройки параметров подсистемы Создание значка подсистемы Второй составляющей маски маскируемой подсистемы является ее индивидуаль- ное изображение (значок), которое позволит быстро отыскать подсистему в любой, сколь угодно сложной, блок-диаграмме. Вкладка Icon (значок) содержит следующие средства создания изображения для маскируемой подсистемы (рис. 7.31). О Поле Drawing commands (команды рисования) предназначено для ввода команд, создающих графическое изображение. О Раскрывающийся список Icon frame (рамка значка) позволяет выбрать способ вывода прямоугольной рамки значка: « Visible (видима) — рамка выводится; • Invisible (невидима) — рамка не выводится. О Раскрывающийся список Icon transparency (прозрачность значка) определяет степень прозрачности нового рисунка: « Opaque (не прозрачно) — новое изображение скрывает стандартное; « Transparent (прозрачно) — новое изображение «прозрачно», и таким образом новое и стандартное изображения выводятся одновременно (например, если маскируемая подсистема имеет входной и выходной порты, то их имена бу- дут «просвечивать» через новое изображение).
336 Урок 7. Подсистемы Рис. 7.31. Вкладка Icon окна редоктора маски О Раскрывающийся список Icon rotation (вращение значка) позволяет выбрать, будет ли поворачиваться изображение при повороте блока подсистемы: • Rotates (подвижно) — изображение отображается с учетом поворота блока; • Fixed (неподвижно) — изображение не корректируется. О Раскрывающийся список Drawing coordinates (координаты рисования) обеспечи- вает выбор системы координат для вывода изображения: * Autoscale (автоматическое масштабирование) — автоматическая установка масштаба осей (при использовании этого варианта размер значка изменяется пропорционально изменению размеров блока); • Normalized (нормализовано) — для вывода значка устанавливается постоян- ный масштаб, при котором нижний левый угол рамки значка (контура блока) имеет координаты (0; 0), а правый верхний угол — координаты (1; 1); соответ- ственно при выводе графика на значке значения координат х и у должны нахо- диться в пределах [0; 1]; при изменении размеров блока размер значка изме- няется автоматически; • Pixel (пиксел) — значения координат х и у для выводимого графика должны быть указаны в пикселах; при изменении размеров блока значок не масштабиру- ется, поэтому чтобы обеспечить ее автоматическое масштабирование, необ- ходимо в командах «рисования» указывать дополнительные параметры: теку- щую высоту и ширину блока.
Маскировоние подсистем 337 Теперь подробнее о том, какие именно «команды рисования» могут быть введены в поле Drawing Commands. Для вывода текста на значке может использоваться одна из трех команд: О disp( текст') — вывод указанного текста в центре значка; О text(x, у, 'текст') —вывод указанного текста, начиная с позиции, задаваемой координатами х и у; О fprintf ( текст') —вывод форматированного текста по центру значка. Во всех трех командах выводимый текст может быть указан не непосредственно, а через имя переменной, в которой хранятся символьные данные. Например, команда disp может быть использована для вывода в значке слова Подсистема двумя способами: disp("Подсистема") disp(variable) Здесь variable — имя переменной, в которую предварительно был записан выводи- мый текст. Эта переменная должна храниться в рабочей области подсистемы, а ее значение может быть задано в поле Initialization commands (команды инициализа- ции) на вкладке Initialization (инициализация), например так: уаг1аЬ1е="Подсистема" Если выводимый в значке текст должен быть размещен в виде нескольких строк, то конец каждой строки обозначается символами \п. Например, чтобы вывести надпись Маски рованная подсистема на двух строках, команда disp должна выглядеть следую- щим образом: disp("Маскированная\пподсистема") Для вывода графиков на значке могут быть использованы стандартные средства MATLAB, то есть библиотечные функции рисования графиков. Наиболее универ- сальной из них является функция plot, которая в простейшем случае имеет формат plot (х, у), где х и у — векторы, содержащие равное число элементов. При создании значка аргументы функции должны храниться в рабочей области подсистемы. Их значения могут либо вычисляться с помощью команд, указанных в поле Initialization Commands, либо задаваться в виде констант, например: х=[0 1 2 3]; у=[1 4 1 4] Если на значке требуется отобразить полином, реализуемый с помощью данной под- системы, исподьзуется функция dpoly с соответствующими параметрами. SIMULINK позволяет также создавать значки с изображениями, нарисованными «вручную». Такой значок создается с помощью специального редактора значков (iconedit). Для его запуска необходимо в командном окне MATLAB ввести команду iconedit. Если данная команда вводится без параметров, MATLAB запрашивает дополни- тельную информацию: название окна блок-диаграммы, в котором находится редак- тируемый блок (Name of block window) и имя блока, под которым он используется в диаграмме (Name of Mock).
338 Урок 7. Подсистемы Эти данные можно указать и непосредственно при вводе команды iconedit. Напри- мер, для маскируемой нами подсистемы она будет выглядеть так: iconedit('Maska', 'Subsystem') ЗАМЕЧАНИЕ Для корректной работы редактора значков редактируемый mdl-файл обязатель- на должен находиться в активной (текущей) папке (current directory). Соответ- ствующая настройка производится с помощью команды Set Path (задать путь) меню File (фойл) командного окна MATLAB (см. раздел «Команда Set Path» в ураке 3 «Знакомства с пакетом MATLAB»). При запуске редактора значков открывается окно, содержащее координатную сетку и визир, перемещаемый с помощью мыши (рис. 7.32, слева). Щелчок мышью приво- дит к появлению точки в указанной позиции. Очередная точка соединяется с преды- дущей прямой линией. •' Рис. 7.32. Окно редоктора значков и «нарисованный» значок При работе с редактором значков используются следующие команды, вводимые с клавиатуры: О d—удаление последней точки; On— создание новой точки, не связанной с предыдущей; О q - выход из редактора с автоматическим обновлением рисунка блока. На рис. 7.32 справа показан пример простейшего значка, созданного с помощью ре- дактора значков. Этот значок, на взгляд автора, очень наглядно поясняет назначение маскируемой подсистемы. После закрытия окна редактора значков в поле Drawing Commands редактора маски выводится команда plot с параметрами, соответствующими созданному изображе-
Маскирование подсистем 339 нию (рис. 7.33). Эта информация дублируется и в командном окне MATLAB. При необходимости ее можно скопировать в буфер обмена и использовать для создания аналогичного изображения для какого-либо другого значка. Рис. 7.33. Содержимое поля Drawing commands и новый значок подсистемы Поскольку функциональные возможности редактора значков весьма ограничены, MATLAB предоставляет в распоряжение разработчиков значительно более мощные средства. Речь идет о совместном использовании двух команд — imread и image. Команда imread обеспечивает считывание изображения, записанного в указанном графическом файле. В простейшем случае формат команды имеет вид: imread ('имя файла','тип файла') Здесь имя файла — это полное имя графического файла (с расширением), файл обяза- тельно должен находиться в текущей папке или в одной из папок, включенных в спи- сок MATLAB Path (путь) окна Path Browser (просмотр файловой системы); тип фай- ла — это стандартное сокращенное обозначение типа графического файла, которое в большинстве случаев фактически дублирует его расширение. Параметр тип файла может иметь одно из следующих значений: О j pg (или jpeg) — для файлов типа Joint Photographic Experts Group; О tif (или tiff) — для файлов типа Tagged Image File Format; если в одном файле хранится несколько изображений, команда imread считывает первое из них; для
340 Урок 7. Подсистемы считывания требуемого изображения необходимо указать его порядковый номер в качестве третьего параметра команды (например, imread(' risunok. tit', ' t if', 3); команда обеспечивает работу cl-, 8-, и 24-разрядными форматами tif-файлов, в том числе с файлами с поразрядным сжатием, а также с файлами, содержащими 16-разрядное представление градаций серого цвета; О bmp — для файлов типа Windows Bitmap; команда обеспечивает работу с 1-,8-,4- и 24-разрядными форматами bmp-файлов (за исключением сжатых), а также с 4- и 8-разрядными RLE-форматами; О png — для файлов типа Portable Network Graphics; команда обеспечивает работу со всеми форматами png-файлов, в том числе с файлами, содержащими 1-, 2-, 4-, 8- и 16-разрядное представление градаций серого; О hdf — для файлов типа Hierarchical Data Format; команда обеспечивает работу с 8-разрядными растровыми изображениями; О рсх — для файлов типа Windows Paintbrush; команда обеспечивает работу с 1-, 8- и 24-разрядными форматами; О xwd — для файлов типа Window Dump. Команда image выводит на экран изображение, указанное в качестве ее параметра. Таким параметром может быть результат выполнения команды imread, которая была рассмотрена выше. Таким образом, чтобы на рисунке маскируемой подсистемы вывести изображение, хранящееся в графическом файле, в поле Drawing commands следует ввести команду: image(imread ('имя файла','тип файла')) Здесь имя файла — имя графического файла, содержащего изображение, которое будет выведено на рисунке подсистемы. Изложенное поясним на примере. Предположим, что мы решили заменить создан- ный ранее для подсистемы Умножитель значок в виде знака умножения на какой-либо другой, менее красноречивый, но более милый нашему сердцу образ. В этом случае нам придется выполнить следующую последовательность действий. 1. Создайте с помощью настоящего графического редактора (или выберите из име- ющейся коллекции) новый рисунок, формат которого отвечает требованиям ко- манды imread. Для определенности примем, что это bmp-файл, содержащий рису- нок в 24-разрядном формате, созданный с помощью редактора MS Paint. 2. Сохраните (или скопируйте) рисунок в текущую папку (лучше всего сделать те- кущей ту папку, в которой хранится блок-диаграмма с маскируемой подсисте- мой). Пусть это будет папка Work, а файл с рисунком назовем Maska.bmp. 3. В поле Drawing commands вместо команды plot введите команду image(imread ('Maska, bmp', ' bmp')). 4. Щелкните на кнопке Apply (применить), чтобы внесенные изменения вступили в силу. Все. На этом работа по обновлению значка закончена. Ее результаты показаны на рис. 7.34.
Маскирование подсистем 341 Рис. 7.34. Создание значка подсистемы на основе внешнего трофического файла Имея под рукой значок собственного изготовления, мы можем пояснить с его помо- щью назначение параметров Icon frame и Icon rotation. На рис. 7.35 сверху показан значок подсистемы при выборе в раскрывающемся списке Icon frame значения Visible (слева) и Invisible (справа), а снизу — при выборе в раскрывающемся списке Icon rotation значения Fixed (слева) и Rotates (справа). SubSystem SubSystem Рис. 7.35. Использование дополнительных параметров при рисовании значка подсистемы Средства поддержки пользователя Вкладка 0оситеп1аВоп (документация) редактора маски обеспечивает дополнение окна настройки параметров маскированной подсистемы необходимыми комментария-
342 Урок 7. Подсистемы ми, а также создание справочной информации в формате html, вызываемой при щел- чке на кнопке Help (справка) в том же окне настройки. На вкладке имеются два поля. О Block description (описание блока) — предназначено для ввода пояснения к мас- кируемой подсистеме (это пояснение будет отображаться в окне настройки пара- метров подсистемы). Форматирование вводимого в этом поле текста выполня- ется автоматически. О Block help (справка блока) — обеспечивает ввод информации, которая впослед- ствии при щелчке на кнопке Help может быть просмотрена в окне броузера, ус- тановленного на вашем компьютере (например, Internet Explorer или Netscape Communicator). На рис. 7.36 приведен пример заполнения вкладки Documentation и соответствую- щее изменение окна настройки подсистемы, а на рис. 7.37 показано, как выглядит справочная «страница» в окне броузера. ............ Ma'k.type * Г"г ножите_ль. Э Подсистема выполняет сравнение входного сигнала с уровнем, задаваемым параметром "Порог" и при его превышении выдает значение, указанное в поле "Коэффициент" ’Ц Маскированная подсистема создана ii иллюстрации изложенного в данном | к Mask Editor Maska/SubSystem Block Parameters: Subsystem Рис. 7.36. Пример ввода справочной информации на вкладке Documentation редактора маски При необходимости в поле Block help вместо «статичного» текста могут содержаться другие средства помощи пользователю: О адрес Web-узла, на котором можно найти дополнительные сведения, адрес элек- тронной почты или другие источники, идентифицируемые по URL (Uniform Resource Locator — универсальный указатель ресурса);
Создание справочных подсистем 343 ж [Help Desk] Рис. 7.37. Вывод справочной информации о маскированной подсистеме в окне броузеро Help Text for Умножитель Маскированная подсистема создана исключительно с целью иллюстрации изложенного в данном подразделе О команда web, запускающая броузер, установленный на вашем компьютере; О команда eval, которая обеспечивает интерпретацию строк как исполняемых ко- манд MATLAB; например, команда eval ('! Word Book, doc') приводит к запуску редактора MS Word и открытию файла Book.doc. Созданная маска может быть впоследствии изменена с помощью того же редактора маски. Его вызов в этом случае производится по команде Edit Mask (правка маски), заменяющей при выделении маскированной подсистемы команду Mask Subsystem (маскировать подсистему). Создание справочных подсистем При описании процедуры создания маскированных подсистем мы исходили из того, что такая подсистема играет роль некоторой функциональной компоненты блок-диаг- раммы. Однако такой подход не исчерпывает все возможные варианты использования маскированных подсистем. Еще один достаточно важный аспект их применения — создание средств помощи пользователю, точнее — своеобразного справочника, вхо- дящего непосредственно в состав блок-диаграммы. Чтобы воспользоваться таким справочником, достаточно дважды щелкнуть на значке подсистемы. Именно такой подход был реализован авторами модели прыгающего мяча, с которой мы начинали знакомство с SIMULINK (рис. 7.38).
344 Урок 7. Подсистемы Маскированные подсистемы, используемые для вызова справки Рис. 7.38. Использовоние москировонных подсистем в качестве справочников В данной модели маскированные подсистемы иллюстрируют два возможных спосо- ба реализации справочника: первый — на основе стандартной функции открытия блока, второй — одной из не стандартных функций. Применение стандартной функции открытия При использовании стандартной функции открытия блока двойной щелчок на значке подсистемы приводит к открытию окна блок-диаграммы. В этом окне может находить- ся л ибо только текстовое поле, содержащее справочную информацию, либо вдобавок к нему подсистемы следующего уровня иерархии. Данный способ хорош тем, что позволяет создавать вложенные «страницы», как, например, показано на рис. 7.39. Для реализации такой справочной системы необходимо выполнить описанную ниже процедуру. 1. Поместить в окно блок-диаграммы, для которой создается справочник, блок Subsystem (подсистема). 2. Выделить блок и выбрать команду Edit ► Mask Subsystem (правка ► маскировать подсистему). 3. Используя вкладку Icon (значок) редактора маски, создать рисунок, поясняющий назначение подсистемы. Лучше всего просто вывести на блоке подсистемы соот- ветствующую надпись, воспользовавшись для этого командой di sp (' текст'). 4. Открыть окно подсистемы-справочника и ввести необходимую справочную ин- формацию.
Создание справочных подсистем 345 ^untitled " ' Г7*' unhtfedZAkkum Данная блок диаграмма предсгавляег собой Ж Е-сетевую модель мулыш^ограммной вычислительной системы X-1 с квантованием времени; в модели используются две макропозиции: ' "Аккумулятор” и "Генератор" Подробнее о макропозиции "Г енератор" Подробнее о макропозиции "Аккумулятор" Макропозиция "Аккумулятор" обеспечивает поглощение транзактов, процесс обслуживания которых завершен. Е-сеть, реализующая функции "Аккумулятора", приведена ниже Рис. 7.39. Пример иерархического справочнике, использующего стандартную функцию открытия подсистемы 5. Если справочник должен содержать вложенные подразделы («страницы»), поме- стите в его окно дополнительные блоки Subsystem и для каждого из них повтори- те описанную последовательность действий. Применение нестандартной функции открытия Второй способ предполагает использование в качестве функции открытия блока Subsystem (подсистема) какой-либо другой, отличной от стандартной, функции. В этом случае двойной щелчок на значке подсистемы приводит к выполнению за- / Information dmulmk Info fen system bounce i You can select and move any block on a Simulink black _______________ With any Simulink system, you can start the Simulation by selecting “Start” from the "Simulation” menu. Once you I have started, you can always terminate a Isimulation by I selecting "Stop” from the same menu. Some ^simulations may | reach their pre-set stop time and terminate lautomatically. ! You can set the simulation stop time, step size, land other | simulation parameters by editing the f Parameters" dialog I box underthe "Simulation" menu. Рис. 7.40. Пример справочника, созданного с помощью редактора графического интерфейса
346 Урак 7. Подсистемы данной функции. Такой функцией может быть, например, какая-либо программа на языке MATLAB (М-файл), либо функция запуска некоторой вспомогательной (или демонстрационной) S-модели. Функция открытия указывается в качестве дополни- тельного свойства блока в поле Open function (открыть функцию) диалогового окна Block Properties (свойства блока). Например, в упомянутой выше модели прыгающе- го мяча такой функцией является simcad, которая открывает диалоговое окно, содер- жащее краткое описание работы с SIMULINK (рис. 7.40). Подобное окно может быть создано с помощью редактора графического интерфейса пользователя (GUI Developer/Editor), о котором упоминалось в разделе «Настройка графического ин- терфейса» урока 3 «Знакомство с пакетом MATLAB». Наличие в составе SIMULINK механизма маскирования делает его, как сейчас принято говорить, «открытой системой», то есть доступной для доработки и расширения са- мим пользователем в соответствии с его потребностями. Именно этот механизм ле- жит в основе создания пользователями SIMULINK собственных библиотек блоков. Разработка собственной библиотеки блоков Как это ни парадоксально, основной недостаток любой универсальной системы зак- лючается в ее универсальности. В том смысле, что для решения конкретной задачи требуется определенная настройка такой системы. Если пользователь вынужден выполнять настройку многократно, то универсальность используемой системы начинает вызывать у него отрицательные эмоции. Именно поэтому наиболее попу- лярными являются так называемые «открытые» системы, то есть такие, которые позволяют: О во-первых, изменять характеристики (инструментальные средства) системы в достаточно широких пределах; О во-вторых, сохранять внесенные изменения до тех пор, пока они остаются необ- ходимы. Возможность создания собственной библиотеки блоков — одно из проявлений «от- крытости» SIMULINK. Важную роль в реализации этой возможности играет меха- низм маскирования подсистем, хотя в простейшем случае созданная пользователем библиотека может содержать один или несколько стандартных блоков SIMU LINK, наиболее часто используемых в работе; при этом для каждого из них могут быть ус- тановлены требуемые значения параметров. Окно библиотеки С точки зрения пользовательского интерфейса, окно Library (библиотека) представ- ляет собой обычное окно, пр формату аналогичное окну блок-диаграммы. Основное отличие — в строке меню отсутствует меню Simulation (моделирование), что иллю-
Разработка собственной библиотеки блоков 347 стрирует рис. 7.41. Кроме того, в правой части строки состояния вместо способа рас- чета модели отображается состояние библиотеки. Возможных состояний два: О Unlocked (разблокирована) — библиотека открыта (в смысле доступна) и может редактироваться; О Locked (заблокирована) — библиотека закрыта (заперта) и, соответственно, не- доступна для изменения. Для вновь создаваемой библиотеки по умолчанию устанавливается состояние Unlocked. Рис. 7.41. Формат окна собственной библиотеки пользователя Как было сказано выше, простейший вариант собственной библиотеки — это неко- торое подмножество библиотеки SIMULINK, в которое входят наиболее часто ис- пользуемые вами блоки. Для создания такой библиотеки необходимо выполнить описанную ниже процедуру. 1. В окне любой блок-диаграммы выберите команду File ► New ► Library (файл ► создать ► библиотека). 2. В открывшееся пустое окно поместите (в удобном порядке) требуемые блоки. 3. Выделите в окне новой библиотеки все блоки и в меню Edit (правка) выберите команду Break Library Link (разорвать связь с библиотекой). В результате ее вы- полнения копии библиотечных блоков становятся «собственностью» новой биб- лиотеки (и ее создателя), а это, в свою очередь, приводит к трем важным послед- ствиям: • становится доступной команда Look Under Mask (заглянуть под маску) в меню Edit (правка), позволяющая корректировать блок-диаграмму («содержимое») соответствующих блоков; • становится доступной команда Edit Mask (правка маски) в том же меню, позво- ляющая изменять маску блоков, включенных в библиотеку; • блоки S-моделей, создаваемых с помощью новой библиотеки, «связываются» только с ней.
348 Урак 7. Подсистемы 4. Сохраните созданную библиотеку на диске с помощью команды File ► Save as (файл ► сохранить как). Библиотеки блоков, как и S-модели, сохраняются в фай- лах с расширением .mdL ЗАМЕЧАНИЕ Блоки, входящие в состов основной библиотеки SIMULINK, делятся но две вида: «базовые» и «производные». «Базовые» блоки включены в виде программ- ного кода в состав ядра SIMULINK и их редоктирование практически невоз- можно без применения «хакерских» средств; команда Break Library Link для этих блоков неприменима. «Производные» блоки представляют собой маски- рованные подсистемы и могут быть изменены описанным выше способом. При последующих открытиях окна новой библиотеки (как и для всех других биб- лиотек SIMULINK) становится доступной команда Unlock Library (разблокировать библиотеку) меню Edit (правка). В результате ее выполнения библиотека становит- ся доступной для редактирования (исключения имеющихся блоков и добавления новых, изменения форматов блоков и т. д.). При «открытии» библиотеки на месте команды выводится сообщение Library Unlocked (библиотека разблокирована). В та- ком состоянии она остается до тех пор, пока не будет закрыто окно соответствующе- го mdl-файла. Коррекция связи с библиотекой Следует иметь в виду, что при копировании любого библиотечного блока в S-мо- дель создается связь (ссылка) между копией и оригиналом. Благодаря этому любое изменение оригинала ведет к изменению всех его копий. Соответствующая кор- рекция копий производится при открытии файла модели, либо когда пользователь выбирает команду Update Diagram (обновить блок-диаграмму) в меню Edit (правка). Кроме того, необходимо учитывать, что в SIMULINK реализована связь «по име- ни», поэтому изменение имени библиотечного блока (имеется в виду имя типа, задаваемое в редакторе маски) приведет к тому, что все копии этого блока ста- нут «незаконными», и при попытке запуска модели на исполнение SIMULINK выдаст сообщение об ошибке. Копии, страдающие таким недостатком, изобража- ются в блок-диаграмме пунктирными линиями красного цвета и имеют стандартное обозначение — Bad Link (некорректная связь), как показано на рис. 7.42. Подобная ситуация может возникнуть и в том случае, если SIMULINK не найдет библиоте- ку, на которую ссылается блок-копия, ни в текущей папке, ни в одной из папок MATLAB. Таким образом, если вы решили каким-то образом изменить содержимое библио- теки, необходимо предусмотреть возможные негативные последствия. Многих из них можно избежать, воспользовавшись упоминавшейся выше командой Break Library Link (разорвать связь с библиотекой), которая разрывает связь между копией и блоком-оригиналом.
Разработка собственной библиотеки блоков 349 Рис. 7.42. Коррекция блок-диаграммы при изменении состава библиотеки Если все-таки по тем или иным причинам корректные связи между блоком-ориги- налом и его копиями нарушены, следует выполнить одно из следующих действий: О удалить копию, помеченную как Bad Link, и повторно скопировать библиотечный блок в модель; О добавить папку, содержащую необходимую библиотеку, в список MATLAB Path (путь) окна Path Browser (просмотр файловой системы), и выполнить коман- ду Update Diagram (обновитьблок-диаграмму); О дважды щелкнуть на значке «плохой» копии, в открывшемся диалоговом окне скор- ректировать путь к библиотеке и щелкнуть на кнопке Apply (применить) или ОК. Диалоговое окно, о котором сказано в последнем пункте, показано на рис. 7.43 (его содержимое соответствует примеру, приведенному на рис. 7.42). Окно содер- жит два поля: О Source block (блок-источник) — путь доступа к библиотечному блоку-источнику; О Source type (тип блока) — тип блока-источника (для маскированных подсистем определяется значением параметра Mask type (тип маски), устанавливаемого в редакторе маски).
350 Урок 7. Подсистемы Рис. 7.43. Диологовое окна для коррекции связи между копией и оригиналом библиотечного блоко Создание разделов библиотеки Пользователям предоставлена возможность создания «структурированных» биб- лиотек, то есть библиотек, состоящих из нескольких разделов (подобно основной библиотеке SIMULINK). Раздел библиотеки создается на основе блока Subsystem (подсистема). Как и при созда- нии обычных подсистем, имеется два способа формирования раздела библиотеки: О с помощью команды Create Subsystem (создать подсистему) — для этого в окне библиотеки должно быть выделено не менее двух блоков; О путем копирования в окно библиотеки блока Subsystem из раздела Signals & Systems (сигналы и системы). В обоих случаях вновь созданной подсистеме автоматически присваивается статус «библиотеки», о чем говорит соответствующий заголовок ее окна. В связи с этим имеется определенная «двойственность» при работе с разделами библиотеки: О с одной стороны, с ними можно выполнять те же процедуры, что и с основной библиотекой (пополнять, «открывать» и т. д.); О с другой стороны, к разделу библиотеки применимы практически все операции маскирования, рассмотренные в предыдущем разделе; в частности, вы можете создать для нее значок, отражающий содержимое данного раздела библиотеки. Рис. 7.44. Пример собственной библиотеки пользователя, содержащей два раздело
Отладчик блак-диаграмм 351 Созданный раздел может быть скопирован (или перемещен) в любую «открытую» библиотеку. В качестве иллюстрации к изложенному на рис. 7.44 показана библиотека, состоя- щая из двух разделов, в которых содержатся некоторые элементы графического представления Е-сети. Отладчик блок-диаграмм В логике и продуманности технических решений разработчикам SIMULINK не от- кажешь: если имеются визуальные средства построения моделей, то должны суще- ствовать и аналогичные средства отладки этих моделей. Именно таким средством является отладчик блок-диаграмм Simulink Debugger. Эта программа не создает собственного диалогового окна, а использует для работы командное окно MATLAB и окно отлаживаемой блок-диаграммы. Командное окно предназначено для ввода пользователем команд отладчика и вывода текстовых сообще- ний, а в окне блок-диаграммы визуально отображается процесс работы отладчика. Запуск отладчика Для запуска отладчика в командном окне следует ввести следующую команду: sidebug '<имя модели>" При выполнении команды запуска отладчика открывается окно блок-диаграммы указанной модели. В блок-диаграмме «подсвечивается» блок, который является активным на первом шаге моделирования (при tM=0). Соответствующая информация выводится в тек- стовой форме в командном окне, после этого отладчик переводит модель в режим паузы и сам переходит в состояние ожидания следующей команды. Например, при отладке модели работы накопителей на первом шаге «подсвечивает- ся» блок Генератор длительности записи, входящий в первую подсистему (окно подси- стемы при этом также открывается, рис. 7.45), а в командном окне выводится следу- ющее сообщение: [Tm=0 ] **Start** of system ’HDD' outputs (sidebug @0:0 "HDD/Subsystem/Генератор длительности записи'): В режиме паузы вы можете обратиться за помощью к справочной системе MATLAB, просмотреть данные в рабочей области (если они там есть), выполнить любую ко- манду MATLAB, либо ввести одну из команд отладчика. Многие команды отладчика используюттак называемый индексблока. Он представляет собой номер блока внутри S-модели и отображается в команде отладчика в форме s: b, где s — номер S-модели (целое число), а b — номер блока в модели (также целое число). Список индексов блоков можно получить с помощью команды slist. Данная коман- да не имеет параметров и применяется к активной S-модели. Результат ее работы выводится в командном окне MATLAB (рис. 7.46).
352 Урок 7. Подсистемы «Подсвеченный» блок Bhod • ЙЕ! ЕЯ Subsystem Goto Subsystem 1 Data Store Read модель рабе ты накопителем Daw Store Memory F]HDD/Subsystein I енерагор длительное»* записи MATLAB Function Генератор интервалов Rifs! IS Data Store Write Рис. 7.45. Вид блок-диаграммы при запуске отладчика i — Sorted list for 'HDD1 [25 blocks, 19 nonvirtual blocks, directFeed=O[ I 0:0 'HDD/Subsystem/Генератор длительности записи* (MATLABFcn, tid=1) ; 0:1 'HDD/Subsystem/Генератор интервалов* [MATLABFcn, tid=1 J 0:2 ‘HDD/Subsystem/Sumr (Sum, tid=1| J 0:3 'HDD/Subsystem/Data Store Write’ (DataStoreWrite to A, tid=1) i 0:4 'HDD/SubSysteml/Генератор длительности записи!'(MATLABFcn, tid=1J : 0:5 'HDD/SubSysteml/Генератор интервалов!' (MATLABFcn, tid=1] ’ 0:6 *HDD/SubSystem1/Sum2' (Sum, tid=1J • j 0:7 'HDD/SubSysteml/Data Store Write' [DataStoreWrite to A, tid=1J I . 0:8 'HDD/Subsystem/Data Store Read' (DataStoreRead from A, tid=O) j 0:9 'HDD/SubSysteml/Data Store Read'(DataStoreRead from A, tid=O] j 0:10 ‘HDD/Discrete-Time Integrator!' (Discreteintegrator, tid=1J I . 0:11 'HDD/Интервал моделирования'(Constant, tid=1) i 0:12 'HDD/Relational Operator* (RelationalOperator, tid=1j 0:13 ‘HDD/Stop Simulation! ‘ (Stop. tid=1J I 0:14 'HDD/Sum3'(Sum. tid=1j 0:15 'HDD/Switch' [Switch, tid=1 J 0:16 'HDD/SubSysteml/Модельное время'(Display, tid=Oj : 0:17 ‘HDD/Модельное время'[Display, tid=1) ; 0:18 'HDD/Subsystem/Модельное время'(Display, tid=OJ ry (sidebug @0:0'HDD/Subsystem/Генерагор длительности записи'):] til Рис. 7.46. Список блоков S-модели, формируемый с помощью команды slist
Отладчик блок-диаграмм 353 Режимы работы отладчика Simulink Debugger позволяет проследить работу модели «шаг за шагом». В качестве таких «шагов» можно определить переход сигнала к следующему блоку, изменение модельного времени или работа модели до очередной точки останова (breakpoint). Выбор типа «шага» определяется командой отладчика, которая может быть введена в режиме паузы: О step — продвижение сигнала на один блок; О next — продвижение на один шаг модельного времени; О continue — работа модели до следующей точки останова; О run — работа модели до окончания заданного интервала моделирования (игнори- руя точки останова); О stop—завершение сеанса отладки. Рассмотрим подробнее особенности использования каждой из приведенных выше команд управления работой отладчика. Команда step При использовании этой команды отладчик выполняет текущий («подсвеченный») блок модели, приостанавливает ее работу и подготавливает к выполнению следую- щий блок. Если этот блок является подсистемой, то отладчик открывает ее блок- диаграмму и выделяет тот блок, с которого начинается работа подсистемы. После выполнения блока отладчик выводит в командное окно значение входного (обозначается символом U) и выходного (обозначается символом Y) сигналов для выполненного блока и переходит в состояние ожидания следующей команды. Пе- ременные U и Y выводятся с индексами, соответствующими порядковым номерам входных и выходных портов блока. Например, выполнив команду step для модели работы накопителей, получим следу- ющий результат (рис. 7.47). Если выполненный блок был последним для заданного интервала моделирования, то отладчик выбирает в качестве очередного первый блок модели, предоставляя возможность повторить сеанс моделирования. Чтобы обратить внимание пользова- теля на окончание предыдущего сеанса, в командном окне выводится также новое («обнуленное») значение модельного времени. При использовании команды step у пользователя имеется возможность выбора «мелких» (ключ mino г) или «крупных» (ключ maj о г) шагов изменения модельного времени. Для выбора метода следует ввести в командном окне один из этих ключей. Команда next При использовании команды next отладчик «проводит» сигнал через все блоки, которые должны быть выполнены на очередном шаге моделирования. Команду next целесообразно применять в тех случаях, когда разработчика интересует изменение
Урок 7 Подсистемы 354 состояния модели при изменении модельного времени. Если очередной шаг являет- ся последним в данном сеансе моделирования, то отладчик делает активным первый блок модели и приостанавливает ее выполнение. После этого можно либо продол- жить отладку, либо выполнить любую другую команду MATLAB. Значения входного и выходного Очередной сигналов предыдущего блока выполняемый блок Рис. 7.47. Результат выполнения команды step Отладка на основе точек останова Данный метод отладки является наиболее универсальным, поскольку точка остано- ва может быть установлена практически в любом месте диаграммы модели. Между двумя точками останова моделирование выполняется без прерываний; для продол- f жения моделирования с последней точки останова используется команда continue. Отладчик позволяет устанавливать два типа точек останова: безусловные и условные. 1 Прерывание в безусловной точке останова происходит всякий раз, когда моделирова- я > ние достигает блока или значения модельного времени, для которых она задана. Пре- -т рывание в условной точке останова происходит в том случае, если возникли усло- вия, установленные для этой точки останова. Нельзя установить точку останова на виртуальном блоке. Виртуальный блок это блок, имеющий чисто графические функции: он отображает группирование или отношение подчиненности между функциональными блоками модели. При попытке установить точку остоново но таком блоке отладчик выдает предупрежде- ние. Список не виртуальных блоков можно получить с помощью команды slist. - Для указания отладчику положения и типа точек останова используются следую- щие команды. О break <gcb|s:b> — прерывание при входевблок. Блок, для которого устанавлива- ч етсяточкаостанова,можетбытьзаданлибоспомощьюиндекса(Ьгеак s:Ь),либо 1
Отладчик блок-диаграмм 355 визуально (для этого следует выделить блок в блок-диаграмме и ввести в команд- ном окне команду break gcb). О bafter <gcb | s: b> — прерывание при выходе из блока. Как и предыдущая команда, может быть использована в одном из двух форматов: • baf te г s: b — для указания блока с помощью индекса; • baf te г gcb — при визуальном выборе блока. О tb reak <t> — прерывание моделирования на заданном шаге. Моделирование пре- рывается, как только текущее значение модельного времени становится больше (или равным) величины t. Например, если введена команда tb reak 7, то при мо- делировании с непрерывным временем останов произойдет для tM=7.02. Удалить «блочные» точки останова позволяет следующая команда: clear <gcb|s:b> Эта команда также может использоваться в двух вариантах: «текстовом» и «визу- альном». О xbreak — команда заставляет отладчик остановить моделирование, когда в моде- ли используется переменный шаг (параметр Variable-step) и встречается состоя- ние, требующее ограничить величину шага. О zcb reak — команда позволяет остановить моделирование, когда встречается не- предусмотренное пересечение сигналом нулевого уровня. При обнаружении та- кой ситуации отладчик выводит в командное окно значение модельного времени и индекс блока, атакже «тип пересечения» — rising (подъем) или falling (спад). Управление выводом информации о процессе ггладки Получение дополнительной отладочной информации обеспечивается следующими командами. О probe — вывод значений сигнала на входах и выходах блоков, выполняемых в течение очередного шага отладки. Для вывода информации о конкретном блоке может использоваться в форме probe <s: b>. Команда probe допустима в любом режиме отладки (по блокам, по модельному времени и по точкам останова). О disp <gcb | s: b> —вывод значений сигнала на входе и выходе указанного блока при прерывании сеанса моделирования. Действие команды может быть отменено командой undisp<gcb | s: b>. О t race <gcb | s: b> — выполняет те же действия, что и команда disp, но без прерыва- ния моделирования. Ее действие отменяется командой untrace <gcb | s: b>. О states — вывод информации о текущем состоянии модели. В дополнение к отладочной информации, отладчик позволяет получать некоторые сведения о структуре модели и входящих в нее блоках.
356 Урок 7. Подсистемы Основным средством для этого служит уже упоминавшаяся команда slist. Кроме нее могут быть использованы и другие команды: О bshow <s: b> — показать на блок-диаграмме блок, имеющий указанный индекс; О zclist — вывод списка блоков, при выполнении которых может произойти «не- предусмотренное» изменение полярности сигнала. Команда status позволяет получить информацию о самом отладчике; она обес- печивает вывод заданных режимов отладки, а также перечень установленных кон- трольных точек. Что нового мы узнали? И Механизм подсистем позволяет представить любую сложную систему в виде совокупности взаимодействующих компонент, внутренняя структура которых при необходимости может быть скрыта. И Команда Create Subsystem (создать подсистему) упрощает разработку подсистемы, однако ее применение требует определенной осторожности, поскольку ее действие нельзя отменить. И Механизм управляемых подсистем обеспечивает эффективное и простое реше- ние проблемы синхронизации параллельных процессов. Способ синхронизации существенно зависит от типа подсистемы. И С помощью редактора маски для подсистемы могут быть установлен перечень настраиваемых параметров и создан индивидуальный значок. Маскированные подсистемы служат основой для разработки собственных проблемно-ориентиро- ванных библиотек. И Одним из вариантов использования подсистем являются справочные подсисте- мы. Их применение в сложной или демонстрационной блок-диаграмме является мощным средством поддержки пользователя. И Для выявления и устранения логических ошибок, допущенных при разработке модели, может применяться визуальный отладчик блок-диаграмм.
а урок Взаимодействие SIMULINK с другими компонентами MATLAB □ Планирование экспериментов и обработка результатов моделирования □ STATEFLOW — инструмент событийного моделирования □ Работа в Мастерской реального времени
При всей широте функциональных возможностей библиотеки SIMULINK она, тем не менее, является компонентой пакета MATLAB и способна работать толь- ко под его «руководством». Это с одной стороны. С другой стороны, один из недо-» статков большинства математических пакетов — неотделимость (или, точнее, неот J деляемость) создаваемых с их помощью документов от среды разработки. MATLAB вполне мог бы оказаться в числе таких пакетов, если бы в состав SIMU LINK не вхо- дил один очень своеобразный инструмент. И даже не инструмент, а целая мастере-^ кая — Мастерская реального времени (Real-Time Workshop). Эта среда разработки^ обеспечивает создание на основе блок-диаграмм SIMULINK программного обеспе- чения, предназначенного для управления реальными аппаратными средствами в ре- альном масштабе времени. Еще один достаточно уникальный инструмент, доступный пользователям только, через SIMULINK, — библиотека Stateflow (событийное моделирование), которая снабжена собственным графическим интерфейсом, а созданные с ее помощью моде- ли могут включаться в виде блоков в состав блок-диаграмм SIMULINK. И, наконец, нельзя еще раз не вспомнить о библиотеке Statistics Toolbox (набор инструментов статистического анализа), без которой очень сложно получить и обработать статистические данные, но которая, в свою очередь, прекрасно рабо- тает через командное окно MATLAB и совершенно не нуждается в «услугах» SI- MULINK. Схему взаимодействия между названными инструментами иллюстрирует рис. 8.1. Рис. 8.1. Схемо взаимодействия между SIMULINK и другими компонентами MATLAB Более близкое знакомство с ними начнем с последнего из названных — Statistics Toolbox.
Планирование экспериментов и обработка результатов моделирования 359 Планирование экспериментов и обработка результатов моделирования Функции, обеспечивающие выполнение простейших процедур анализа данных, включены разработчиками MATLAB в состав ядра (раздел datafun). Некоторые допол- нительные возможности в этом отношении предоставляет набор блоков DSP В lockset (набор блоков для цифровой обработки сигналов), о котором шла речь в разделе «Библиотека DSP Blockset» урока 5 «Дополнительные библиотеки блоков». Но все же в полной мере «ощутить власть» над данными позволяет только библиотека Statistics Toolbox (набор инструментов статистического анализа). Входящие в ее состав М-функции разбиты на следующие категории: О Probability Distributions (распределение вероятности); О Parameter Estimation (оценкапараметров); О Descriptive Statistics (описательная статистика); О Linear Models (линейные модели); О Nonlinear Models (нелинейныемодели); О Cluster Analysis (кластерный анализ); О Random NumberGenerators (генераторы случайных чисел); О Hypothesis Tests (проверка гипотез); О Multivariate Statistics (многомерная статистка); О Statistical Plots (статистические графики); О Statistical Process Control (управление статистическими процессами); О Design of Experiments (планирование экспериментов). Всего же данный раздел содержит более 200 функций, обеспечивающих проведение статистических экспериментов, а также обработку и анализ данных. Мы рассмот- рим только те из них, с помощью которых может быть реализована технология под- готовки и анализа результатов модельных экспериментов, описанная в двух первых уроках книги. Планирование экспериментов В состав раздела Design of Experiments (планирование экспериментов) входят функ- ции, обеспечивающие разработку всех трех основных видов стратегического плана эксперимента, рассмотренных в разделе «Стратегическое планирование имитацион- ного эксперимента» урока 2 «Основы технологии имитационного моделирования»: О полного факторного эксперимента (ПФЭ) О частичного факторного эксперимента (ЧФЭ) О дробного факторного эксперимента (ДФЭ).
360 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Для разработки первого из них предназначена функция с соответствующим назва- , нием — fullfact. В качестве ее параметров необходимо указать число уровней каж- дого фактора, участвующего в эксперименте. Например, если факторы А и В имеют по 3 уровня, а фактор С — 2 уровня, то обраще- I ние к функции fullfact выглядит так: г fullfact ([3, 3, 2]) : Введя указанную конструкцию в командном окне MATLAB, можно получить спи- ? сок всех возможных комбинаций уровней факторов. Список выводится в команд- 1 ном окне, а также сохраняется в рабочей области в переменной ans (рис. 8.2). Он S может быть использован в качестве подсказки либо в текущем сеансе работы с Ж MATLAB, либо записан в отдельный МАТ-файл для последующего применения. ,ж Сочетание уровней факторов у. для четвертого эксперимента А я. Рис. 8.2. Формировоние плана полного факторного эксперимента Поскольку MATLAB использует переменную ans в качестве рабочей, целесообразно предварительно переписать план экспериментав переменную с другим именем, например plan=ans. После этого можно поочередно вызывать строки плана из рабочей области, используя операции индексирования. Для приведенного выше списка факторов содер- жимое седьмой строки можно считать в командное окно, введя команду pl ап (7, 1:3). Выполнив эксперимент для очередного сочетания факторов, можно удалить соот- ветствующую строку плана, используя редактор/отладчик MATLAB. Для формирования плана дробного факторного эксперимента используется функ- ция f f 2п. Параметром функции является число факторов. Результат ее выполнения представляет собой список возможных сочетаний уровней факторов; в списке зна- чение 0 соответствует нижнему уровню фактора, а 1 — верхнему уровню.
Планирование экспериментов и обработка результатов моделирования 361 Например, команда f f 2n (3) обеспечивает вывод в командное окно списка, показан- ного на рис. 8.3. Рис. 8.3. Формирование плане дробного факторного эксперимента При выборе метода планирования частичного факторного эксперимента разработчики MATLAB отдали предпочтение так называемым D-оптимальным планам. D-опти- мальный план обладает той особенностью, что он обеспечивает минимизацию вза- имного влияния факторов, участвующих в эксперименте. В MATLAB предусмот- рена возможность генерации нескольких вариантов D-оптимального плана, каждый из которых реализуется соответствующей М-функцией. Мы рассмотрим способ формирования одного из видов ЧФЭ, приведенных в разде- ле «Стратегическое планирование имитационного эксперимента» урока 2 «Основы технологии имитационного моделирования». Речь идет о рандомизированном пла- не. И хотя он не гарантирует высокой информативности эксперимента, тем не менее, во многих случаях такой вид планирования оказывается весьма полезным. Для получения рандомизированного плана может быть использована функция un id rod, представляющая собой генератор дискретной случайной величины, равномерно рас- пределенной на интервале [ 1; N ]. В общем случае она используется с тремя параметрами: unidrnd(N, k, т) Здесь N — верхняя граница интервала распределения, а к и m задают число строк и столбцов генерируемой случайной матрицы. При генерации плана эксперимента эти величины интерпретируются следующим образом: ON— число уровней факторов, участвующих в эксперименте (предполагается, что все факторы имеют одинаковое число уровней, равное N); О к — выбранное пользователем число экспериментов (различных сочетаний уров- ней факторов); От— число факторов.
362 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Например, выполнение команды unidгnd(4, 5, 3) приводит к формированию плана эксперимента, показанного на рис. 8.4. Сочетание уровней факторов в первом эксперименте Рис. 8.4. Формирование рандомизированного плоно эксперимента В данном примере общее число экспериментов, задаваемое параметром т, равно 5. Наглядность и технологичность процесса планирования экспериментов могут быть повышены путем создания специальных диалоговых окон, позволяющих выбрать вид эксперимента, число уровней факторов, способ использования плана экспери- мента и т. д. На рис. 8.5 приведен пример нескольких диалоговых окон, предназна- ченных для процедуры планирования экспериментов. Разработка подобных окон не требует большого опыта программирования и выполняется с помощью компоненты Guide, вызываемой из командного окна MATLAB командой File ► Show GUI Layout Tool (файл ► показать инструмент компоновки интерфейса). Рис. 8.5. Пример графического интерфейса для процедуры планирования экспериментов
Планирование экспериментов и обработка результатов моделирования 363 Обработка и анализ результатов моделирования Напомним, что в результате проведения серии модельных экспериментов исследо- ватель получает совокупность статистических данных (выборку), на основании ко- торых с помощью соответствующих статистических процедур могут быть получены ответы на следующие вопросы. О Зависит ли значение наблюдаемой переменной (показателя эффективности) от того или иного фактора, отображенного в модели (или группы факторов)? О Можно ли описать существующую зависимость с помощью некоторого аналити- ческого соотношения? О Можно ли считать наблюдаемую переменную случайной величиной, распреде- ленной по некоторому закону? О Имеет ли место взаимное влияние двух или более факторов? Кроме того, на этапе оценки качества разработанной имитационной модели анализ полученных результатов позволяет определить, в какой степени модель обладает требуемыми целевыми свойствами (адекватностью, устойчивостью, чувствитель- ностью). Ответ на каждый из этих вопросов может быть поДучен с помощью инструментов статистического анализа пакета MATLAB. Подбор параметров распределения наблюдаемой переменной Подбор (или оценка) параметров закона распределения наблюдаемой переменной, пожалуй, наиболее простая с математической точки зрения процедура. Особенно в том случае, если в распоряжении исследователя имеются средства визуализации полученных статистических данных. MATLAB такие средства предоставляет. Для решения поставленной задачи в общем случае необходимо выполнить два дей- ствия. 1. Построить шстограмму относительных частот наблюдаемой переменной. 2. Подобрать вид функции распределения, в наибольшей степени отвечающий по- лученным экспериментальным данным. Методика построения гистограммы «вручную» была подробно описана в разделе «Подбор параметров распределений» урока 2 «Основы технологии имитационного моделирования». Для получения того же результата в MATLAB достаточно ввести две команды: п = hist(y) bar(n./length(y)) Первая из них разбивает весь диапазон значений наблюдаемой переменной у на 10 равных интервалов и записывает в матрицу п число элементов, попавших в каждый
364 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB интервал. При необходимости диапазон значений у можно разбить на произвольное число интервалов т, введя команду n=h 1st (у, т). С помощью второй команды вычисляется относительная частота попаданий в каж- дый интервал (length(y) — функция вычисления объема выборки у) и выводится графическое представление полученной гистограммы (рис. 8.6). Рис. 8.6. Гисгагроммо относительных частот, построенная с помощью MATLAB Для подбора одного из стандартных распределений, наиболее близкого к построен- ной гистограмме, целесообразно воспользоваться командой disttool. При ее выполнении открывается диалоговое окно, обеспечивающее выбор и настрой- ку параметров стандартных распределений (рис. 8.7). Окно содержит следующие элементы: О поле вывода графика выбранной функции распределения (cdf) или соответству- ющей плотности распределения вероятности (pdf), в котором отображается ви- зир, обеспечивающий точное определение значений координат; О рас крывающийся список для выбора функции распределения; О раскрывающийся список для выбора типа функции (cdf или pdf);
Планирование экспериментов и обработка результатов моделирования 365 О ползунки для изменения значений параметров распределений (количество пол- зунков и их вид изменяются в зависимости от вида распределения); О поля ввода/отображения координат точек графика и параметров распреде- ления. Для отыскания подходящего вида распределения следует выбрать в раскрывающем- ся списке функцию pdf и, используя собственные знания особенностей различных распределений, выбрать то из них, которое, на ваш взгляд, более других похоже на гистограмму относительных частот, построенную по экспериментальным данным. При этом необходимо учитывать, что вид графика существенно зависит от числен- ных значений параметров функции распределения. Рис. 8.7. Диалоговое окно, используемое при подборе параметров распределений В двух первых уроках книги уже говорилось о том, что во многих случаях распреде- ление наблюдаемой переменной оказывается близким к нормальному. Если такое предположение имеет место, то его можно проверить, используя дополнительные средства MATLAB: функция no rmplot (у) выводит график вероятности распределе- ния случайной величины у (рис. 8.8). Чем лучше экспериментальные данные (обозначенные на графике символами +) согласуются с нормальным распределением, тем лучше они аппроксимируются пря- мой линией.
366 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.8. Графический анализ экспериментальных данных Проверка статистических гипотез После визуального сравнения эмпирического распределения с теоретическим вы имеете полное право выдвинуть соответствующую статистическую гипотезу. Функция ztest обеспечивает проверку гипотезы о том, что наблюдаемая переменная распределена по нормальному закону с математическим ожиданием, равным М. Величи- на среднеквадратического отклонения случайной величины полагается известной. Функция может возвратить одно из двух значений: О 0 — гипотезу следует принять; О 1 — гипотезу следует отвергнуть. В качестве дополнительной информации функция ztest формирует величину SIG, которая отражает степень достоверности гипотезы Но: чем меньше SIG, тем больше доверия гипотезе Нс. Аналогичную задачу позволяет решить и функция ttest, в основе работы которой лежит расчет t-статистики. В качестве дополнительной информации функция ttest выдает p-значение и величину доверительного интервала. Понятие «р-значение» (p-vaiue) широко используется в зарубежной литературе по математической стати- стике и нашло свое отражение практически во всех программных пакетах статисти- ческого анализа данных. P-значение представляет собой условную вероятность того,
Планирование экспериментов и обработка результатов моделирования 367 что используемый статистический критерий примет некоторое значение в предпо- ложении, что гипотеза Но верна. Еслир-значение оказывается меньше уровня значи- мости а, то гипотеза Но отвергается. Пусть, например, в течение двух месяцев (марта и апреля) происходили колебания цен на видеокарты к компьютерам. В том и другом месяце цены регистрировались 7 раз и были получены следующие данные: mart = [16 22 14 25 18 25] april = [18 25 14 28 20 23] Требуется проверить гипотезу о том, что средняя цена в течение двух месяцев не изменилась. Для решения поставленной задачи вначале необходимо вычислить среднюю цену за март месяц: price = mean(mart) Величину price используем при обращении к функции ttest (уровень значимости а по умолчанию равен 0.05): [Н, SIG] = ttest(april, price) В результате работы функции получаем: Н = 0 SIG = 0.5815 Это означает, что выдвинутую гипотезу следует принять, однако степень ее досто- верности не очень велика. Графическую интерпретацию статистических характеристик двух выборок (mart и april) можно получить с помощью функции boxplot(y). Параметр у представляет собой матрицу, столбцы которой содержат значения исследуемых выборок. Чтобы получить такую матрицу, в командном окне MATLAB следует ввести следующую последовательность команд. 1. mart = mart' —транспонирование вектора mart. 2. april = april' — транспонированиевектораapril. 3. y=[mart, april]—объединение вектор-столбцов в одну матрицу. Результат выполнения функции boxplot (у) для рассматриваемого примера показан на рис. 8.9. Средства дисперсионного анализа данных В составе библиотеки Statistics Toolbox (набор инструментов статистического ана- лиза) имеются две функции, обеспечивающие проведение однофакторного и двух- факторного дисперсионного анализа: anoval и anova2. Название функций представ- ляет собой общепринятое сокращение англоязычного термина Analysis of Variance (дисперсионный анализ).
368 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.9. Сравнение статистических характеристик двух выборок Для проведения однофакторного дисперсионного анализа достаточно ввести ко- манду anova 1 (у), где у — матрица, содержащая результаты наблюдений. Число столб- цов матрицы должно быть равно числу уровней фактора, влияние которого оцени- вается. Элементы каждого столбца представляют собой значения наблюдаемой переменной (показателя эффективности), полученные при данном уровне фактора. Выполнение функции anoval приводит к открытию двух окон: первое из них содер- жит таблицу результатов дисперсионного анализа, второе — их графическую интер- претацию. В качестве иллюстрации применения функции anova 1 вернемся к примеру с анали- зом цен на видеокарты. Предположим, что в качестве исследуемого фактора высту- пает среднемесячная температура воздуха t; в марте она имеет уровень 1, в апреле — уровень 2. Тогда векторы mart и арril можно рассматривать как значения цены, по- лученные для двух уровней фактора t. Гипотеза На состоит в том, что цена не зависит от температуры воздуха t. Объединив векторы mart и april в одну матрицу у и выполнив команду anoval(у), получим на экране два окна, упомянутые ранее (рис. 8.10). В таблице ANOVA Table (таблица дисперсионного анализа) представлены следующие величины: О SS — сумма квадратов; О df — число степеней свободы (degrees of freedom);
Планирование экспериментов и обработка результатов моделирования 369 Рис. 8.10. Графическое представление результатов дисперсионного онолизо О MS — средний квадрат (SS/'df); OF— значение F-статистики. На основании сравнения вычисленного значения F-статистпки с критическим зна- чением (взятым из справочника), можно сделать вывод о том, что гипотезу Но следу- ет принять, то есть стоимость видеокарт действительно не зависит от температуры воздуха. Средства корреляционного и регрессионного анализа Как вы, вероятно, помните, процедура корреляционного анализа начинается с пост- роения диаграммы рассеяния, позволяющей отразить общий характер зависимости наблюдаемой переменной от исследуемого фактора. При работе с MATLAB диаграмму рассеяния можно получить, используя функцию plot(x, у). Чтобы выводимый график выглядел как совокупность не связанных между собой точек, следует задать дополнительный параметр функции (формат гра- фика), который представляет собой последовательность специальных символов, заключенных в апострофы. Первый символ задает цвет вывода точек, второй — спо- соб их представления. Например, формат ' Ь+' означает, что значения переменной у будут представлены на графике в виде символов + синего цвета (b — от английского blue — синий). Реализацию процедуры корреляционного и регрессионного анализа средствами MATLAB рассмотрим на фоне неоднократно использовавшегося в уроке 6 «Техно-
370 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB логия моделирования в среде SIMULINK» примера моделирования работы жест- ких дисков (HD). Наблюдаемой переменной является коэффициент использова- ния диска К, а исследуемым фактором — длина сообщения 1. Шаг 1 — построение диаграммы рассеяния: plot(l, К, Ь+) Результат показан на рис. 8.11. Рис. 8.11. Диагромма россеяния, полученная с помощью команды plot Диаграмма рассеяния говорит о том, что между переменными К и 1 существует ли- нейная зависимость. Шаг 2 — вычисление численного значения коэффициента корреляции. Для выполнения этого шага в среде MATLAB используется фун кция со г г coef(х), где х — матрица, столбцы которой содержат значения величин К и 1. Для рассматривае- мого примера коэффициент корреляции равен 1. ШагЗ — построение регрессионной модели. Для выполнения этого шага удобнее всего воспользоваться командой polytool (1, К). Эта команда выводит диалоговое окно, с помощью которого можно оценить и при необходимости скорректировать полученную регрессионную модель. Окно содержит следующие элементы (рис. 8.12).
Планирование экспериментов и обработка результатов моделирования 371 О Поле отображения данных и графика регрессионной модели. Оно содержит ви- зир, с помощь которого для заданного значения независимой переменной может быть получено «прогнозируемое» значение зависимой переменной. Если пост- роенная регрессионная модель не очень точна, то здесь же дополнительно отобра- жаются границы доверительного интервала, характеризующего точность модели (такая ситуация показана на рис. 8.13). Рис. 8.12. Диалоговое окно для построения регрессионной модели О Раскрывающийся список Degree (степень) для выбора степени полинома уравне- ния регрессии. О Поля х values (значение х) и у values (значение у) соответственно для вывода/ установки и для вывода значений независимой и зависимой переменных. О Поле вывода численного значения ширины доверительного интервала. О Раскрывающийся список Export (экспорт) для выбора величин, которые будут сохранены в рабочей области MATLAB: » Parameters (параметры) — параметры регрессионной модели; • Prediction (прогноз) — прогнозируемое значение зависимой переменной; « Residuals (остаток) — «остатки», характеризующие точность модели; • АН (все) — сохранение всех величин, отображаемых в окне.
372 Урок а Взаимодеисчие SIMULiNK с другими компонентами MATLAB Рис. 8.13. Отображение доверительного интервала Создание сценариев анализа данных Мы уже неоднократно говорили о том, что имитационный эксперимент не заканчи- вается в момент окончания прогона модели. Полученные данные обязательно долж- ны бы гь соответствующим образом обработаны При этом обработка предполагает, как правило, выполнение определенной последовательности статистических проце- дур. Для семейст ва бл11зки\ во струк гуре п назначению моделей эта последователь- ность различается незначительно, а для одной и той же модели обработка и анализ результатов моделирования и вовсе проводится по неизменному сценарию. MATLAB распо лагает механизмом позволяющим создавать и сохранять устойчи- вые сценарии в виде специальных М-файлов, которые так и называются — файлы сценариев (Script files), пли просто М-еценарии. М-сценарий представляет собой последовательность команд (или инструкций) М Al LAB, разделенных точкой с запятой (если они записаны в одной строке). При- мер простейшего М-сценария показан на рис. 8.14. Имя (название) М-спепария определяется именем М-файла, в котором он записан. В свою очередь, имя этою М-файла ни герпре тируется MATLAB как команда, которая может быть исполнена из командного окна или включена в состав другого сценария.
Планирование экспериментов и обработка результатов моделирования 373 Комментарий Команда запуска S-модели Команда построения графика Рис. 8.14. Пример простейшего М-сценория Для запуска М-сценария из командного окна может быть использована специальная команда Run Script (выполнить сценарий) меню File (файл). Выбор этой команды приводит к открытию дополнительного диалогового окна (рис. 8.15), которое позво- ляет либо непосредственно ввести имя сценария с клавиатуры, либо отыскать его, щелкнув на кнопке Browse (обзор). Рис. 8.15. Зопуск М-сценория с помощью команды Run Script Из приведенного выше примера M-сценария видно, что для его создания совершен- но не требуется опыт в программировании. Вместе с тем, при написании М-сценари- ев следует учитывать следующее: О М-сценарий не имеет входных параметров (аргументов); О М-сценарий может содержать любые М-фупкции и операторы MATLAB; О входящие в сценарий М-функции и операторы могут оперировать с данными, находящимися в рабочей области MATLAB. Основным инструментом разработки как М-сценариев, так и М-функций является редактор/отладчик (Editor/Debugger) MATLAB, хотя для этих целей может быть использован любой текстовый редактор. Несомненным достоинством редактора/отладчика является наличие весьма разви- тых (в том числе графических) средств отладки создаваемых М-файлов.
374 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Для запуска редактора/отладчика можно использовать: О команду File ► New ► М-61е(файл ► создать > М-файл) в командном окне MATLAB — если создается новый М-файл; О команду File ► Open (файл ► открыть) в командном окне MATLAB — если вы хо- тите выполнить редактирование и отладку существующего М-файла; О команду EditCMMB файла>, введя ее непосредственно в командном окне MATLAB; если подлежащий редактированию файл не находится в активной (текущей) папке, то следует указать полный путь доступа; при вводе команды Edit без указания имени файла редактор/отладчик автоматически создает новый (пустой) файл. Если команда Open позволяет открывать файлы только двух типов — М-файлы и MDL-файлы, то с помощью команды edit можно открывать файлы практически любого типа, в том числе текстовые, созданные, например, с помощью текстового редактора Блокнот. С точки зрения пользовательского интерфейса, редактор/отладчик реализован как многодокументное приложение (MDI). Это, в частности, означает, что в его роди- тельском (основном) окне может быть открыто одновременно несколько М-файлов. Окно редактора/отладчика содержит следующие элементы (рис. 8.16). О Строка меню со следующими меню: • File (файл) — команды работы с файлами (открыть, создать, сохранить и т. д.); • Edit (правка) — команды редактирования текста, а также команда поиска; • View (вид) — команды изменения формата окна редактора/отладчика, а также две команды отладки: Evaluate Selection (вычислить выражение в выделенном фрагменте) и Auto Indent Selection (проверить синтаксисе выделенном фрагменте); Рис. 8.16. Окно редокторо/отлодчико
Планирование экспериментов и обработка результатов моделирования 375 • Debug (отладка) — команды управления процессом отладки; • Tools (инструменты) — команды установки дополнительных параметров рабо- ты редактора/отладчика; • Window (окно) команды размещения окон редактируемых файлов; • Help (справка) — вывод информации о редакторе/отладчике (номер версии, дата создания и т. д.). О Панель инструментов, на которую выведены кнопки инициализации основных команд из различных меню. О Раскрывающийся список Stack (стек), обеспечивающий выбор просматриваемой области памяти. О Строка состояния, в которой выводятся: информация о состоянии редактора/ отладчика, пояснения к командам меню, номер редактируемой строки, астроно- мическое время. Для улучшения визуального восприятия текста М-файла различные его компонен- ты имеют в окне редактора/отладчика разный цвет: О комментарий — зеленый; О ключевые слова MATLAB — синий; О остальные конструкции — черный. Поскольку круг наших интересов ограничивается созданием М-сценариев, то в дан- ном разделе будут описаны лишь относящиеся к этой задаче функциональные воз- можности редактора/отладчика. Прежде всего необходимо пояснить назначение основных команд управления про- цессом отладки, представленных кнопками на панели инструментов (рис. 8.17): О Set/Clear Breakpoint (установить/снять точку останова); О Clear All Breakpoints (снять все точки останова); Установить/снять точку останова Шаг с вызовом функции Продолжить | Выйти из режима отладки Единичный шаг Снять все точки останова Рис. 8.17. Кнопки комонд упровления отлодкой О Step In (шаг с вызовом функции) — выполнить текущую строку М-файла и, если она содержит вызов функции, то загрузить ее; О Single Step (единичный шаг) — выполнить текущую строку М-файла; О Continue (продолжить) — продолжить выполнение М-файла, пока он незакончит- ся, либо пока не встретится очередная точка останова; О Quit Debugging (выйти из режима отладки).
376 Урок 8 Взаимодействие SIMULINK с другими компонентами MATLAB Порядок использования перечисленных команд рассмотрим на примере создания и отладки сценария, обеспечивающего построение гистограммы относительных частот. Чтобы запретить дублирование исполняемых команд сценария в командном окне MATLAB, следует начать его с команды echo off. В учебных целях гистограмму будем строить для вектора у, создание которого вклю- чено в показанный выше М-сценарий; дополнительно рассчитаем среднее значение элементов вектора у. С учетом внесенных дополнений текст М-сценария будет выглядеть примерно так, как показано на рис. 8.18. |У MATLAB EiUu/Oehujjoi [Му_Н>-.Сш - CANATLABH11\woik\My_Hist.m] Рис. 8.18. Текст М-сценория Сохраним его на диске под именем My Hist С этого момента это имя становится командой, которую можно вводить в командном окне MATLAB. Отладку созданного сценария начнем с установки точек останова. Пусть их будет две: в седьмой строке (M=mean (у)) и в девятой (ba г(n./length(у)). Чтобы установить точ ку остан ова, достаточно щелки уть сначала на требуемой строке, а затем — на соот- ветствующей кнопке панели инструментов. Установленные точки останова отобра- жаются в виде красных кружков слева от выбранной строки (рис. 8.19). Ооратите внимание: пока доступны только две первые из шести кнопок управления отладкой. Чтобы перейти в режим отладки, необходимо ввести в командном окне команду Му_ Н г st. В результате отладчик запускает М-сцснарий, выполняет его до первой точ- ки останова и переходит в режим ожидания. При этом в окне отладчика происходят следующие изменения (рис. 8.20): О в строке, содержащей церву к» точку останова, появляется желтая стрелка, указы- вающая место прерывания:
Плониравание экспериментов и обработка результатов моделирования 377 Рис. 8.19. Расстановка точек останова О становятся доступны все кнопки управления процессом отладки; О становится доступным список Stack, который содержит два пункта: • My_Hist — имя рабочей области М-сценария; • Base Workspace (базовая рабочая область) — имя основной рабочей области MATLAB. Рис. 8.20. Состояние окно редокторо/отлодчико в режиме отлодки
378 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Для всех М-сценариев их локальная рабочая область совпадает с рабочей областью MATLAB (в отличие от М-функций). В общем случае выбранная в списке Stack рабочая область определяет перечень перемен- ных, которые доступны для просмотра. Чтобы получить значение интересующей пере- J менной, необходимо выделить мышью ее имя в тексте М-файла и в меню View выбрать команду Evaluate Selection. Значение переменной выводится в командном окне М ATLAB. Последовательный анализ значений переменных позволяет выявлять логические 3 ошибки, допущенные при разработке М-файлов. Синтаксические же ошибки (не- < правильную запись конструкций языка MATLAB) отладчик обнаруживает сам еще i до включения режима отладки. Попробуйте, например, добавить в 4-й строке лиш- нюю скобку и после этого установить в ней точку останова. Отладчик заблокирует ; установку точки останова и выдаст диагностическое сообщение. J Весьма полезным является пошаговый режим работы отладчика с вызовом функ- > ций (с помощью кнопки Step In), который позволяет «заглянуть внутрь» М-функ- ции, используемой в составленном сценарии. Чтобы проверить «бдительность» редактора/отладчика, в 9-й строке заменим век- .1 торное деление (. /) скалярным (/). Внесенное изменение должно привести к ошиб- : ке в работе функции bar. Введите в командном окне команду My_Hist, а после преры- ! вания на точке останова щелкните на кнопке Step In. Отладчик не только обнаружит * ошибку, но и укажет строку в функции Ьа г, где она произошла (рис. 8.21). Рис. 8.21. Робото отладчике в режиме Step In После того как М-сценарий (или M-функция) отлажен, он может быть сохранен на диске не только как М-файл, но и в виде так называемого псевдокода (P-code) с 1 юмощью команды рсос!е<имя файлах P-файлы не подвергаются повторному синтакси- ческому анализу при использовании, что позволяет повысить скорость их выполнен! !Я.
Планирование экспериментов и обработка результатов моделирования 379 В заключение коротко рассмотрим некоторые возможности, которые предоставле- ны пользователю для настройки параметров работы редактора/отладчика. Для про- ведения такой настройки служат команды меню Toots. Начнем с того, что пользователь имеет право изменять состав команд этого меню. В частности, первая команда меню — Run (выполнить) — включена разработчиками MATLAB в качестве примера команды, созданной средствами редактора/отладчи- ка. Она сохраняет на диске все открытые М-файлы и запускает редактируемый файл на исполнение. Пользователь может удалить эту команду из меню, переопределить ее, либо заменить собственной командой. Указанные действия выполняются с помощью специального диалогового окна, кото- рое открывается при выборе «настоящей» команды — Customize (настройка). Окно содержит следующие элементы интерфейса (рис. 8.22). О Tools Menu Contens (содержимое меню Tools) — список команд, добавленных пользователем в меню Tools. О Menu Text (ввод меню) — поле для ввода или редактирования названия пункта меню (то есть имени добавляемой команды). Рис. 8.22. Диалоговое окна нострайки меню Tools О MATLAB Expression (выражение MATLAB) — поле для ввода или редактирования/; инструкции (или вычисляемого выражения MATLAB), связанной с данным пу$£ ктом меню. Например, для варианта, приведенного на рис. 8.22, выбор команду*'- Run приведет к вычислению выражения 2+2. Результат вычислений выводите»,., командном окне MATLAB. Wg О Кнопки Add (добавить), Remove (удалить), Move Up (переместить вверх), Mow® Down (переместить вниз) обеспечивают выполнение соответствующих операций . над элементами списка Tools Menu Contens. Команда Options (параметры) предназначена для установки параметров, относящихся непосредственно к работе редактора/отладчика. Установки выполняются с помощью диалогового окна, содержащего две вкладки: General (общие) и Editor (редактор).
380 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Ha вкладке Сепега1пользователь может установить следующие параметры (рис. 8.23). О Флажок Show worksheet-style tabs (показывать ярлычки листов в стиле электронных таблиц) позволяет использовать ярлычки листов (в стиле электронных таблиц Excel) для переключения между окнами редактируемых файлов. При снятом флаж- ке окна редактируемых файлов выводятся без ярлычков листов (рис. 8.24). О Флажок Show DataTips (показывать всплывающие подсказки) позволяет показы- вать всплывающие подсказки для используемых в М-файле переменных. Рис. 8.23. Вкладка General диалогового окна настройки параметров редактора/отлодчика О Флажок Automatically reload externally modified files (автоматически перезагружать модифицированные файлы) позволяет автоматически перезагружать файлы, которые изменялись вне редактора/отладчика. Если флажок снят, редактор вы- дает запрос о необходимости перезагрузки файла. О Флажок Disable overtype mode (Insert key) (запретить режим вставки (с использова- нием клавиши Insert)) позволяет запретить режим вставки символов, который вводится нажатием клавиши Insert, при редактировании текста файла (по умол- чанию используется режим добавления символов). О Флажок Append "m" to file name on Save As (добавлять расширение .m к имени фай- ла для команды Save As) позволяет автоматически добавлять расширение .т к имени файла в диалоговом окне, которое открывается при выборе команды Save As (сохранить как). О Флажок Print in color (печать в цвете) позволяет печатать текст М-файла с учетом цветового выделения программных конструкций (флажок имеет смысл устанав- ливать только при наличии цветного принтера).
Планирование экспериментов и обрабо,ка результатов моделирования 381 О В поле Recently used file list (список недавно открывавшихся файлов) можно за- дать размер списка недавно открывавшихся файлов, который отображается в меню File. Рис. 8.24. Изменение формото окна фойла (справа) при снятии флажка Show worksheet-style tabs Ha вкладке Editor пользователь может установить перечисленные ниже параметры (рис. 8.25). О В группе M-file syntax-based formatting (средства визуализации синтаксиса М-фай- ла) доступны следующие параметры: • флажок Syntax highlighting (подсветка синтаксиса) позволяет разрешить цве- товое выделение программных конструкций; Рис. 8.25. Вкладка Editor диалогового окна настройки параметров редакторо/стладчико
382 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB • флажок Auto indent on return (автоматическая установка отступов) позволяет автоматически устанавливать отступы при добавлении новых строк программ- ного кода, относящихся к следующему уровню вложенности (при нажатии клавиши Enter); • в поле Auto indent size (размер отступа) можно ввести величину отступа (в символах) строки следующего уровня вложенности относительно преды- дущего уровня; • флажок Emacs-style tab key auto indenting (использовать клавишу Tab для от- ступов) позволяет заменить клавиши, используемые по умолчанию для зада- ния отступов текста (Ctrl+I), на клавишу Tab. О В группе Bracket and quote matching (соответствие скобок и кавычек) доступны следующие параметры: • флажок Bracket Matching (соответствие скобок) позволяет разрешить провер- ку парности круглых, квадратных и фигурных скобок; • флажок Quote Matching (соответствие кавычек) позволяет разрешить провер- ку парности кавычек; • в поле Search distance (область проверки) вводится максимальная величина фрагмента файла (в строках), на протяжении которого должна выполняться проверка; • в поле Show match for (показывать соответствие в течение) вводится значение длительности индикации (в секундах) проверяемых пар скобок или кавычек. О В группе Tab key settings (параметры клавиши Tab) доступны следующие параметры: • переключатель a tab character (символ табуляции) позволяет использовать для вставки пробелов клавишу Tab; • переключатель spaces (пробелы) запрещает использовать для вставки пробе- лов клавишу Tab; • в поле Tab size (размер табуляции) можно ввести количество символов про- бела, которое будет вставлено в строку программного кода при нажатии кла- виши Tab. При выборе плана модельных экспериментов важную роль i гграет длг цельность каждо- го эксперимента (с точки зреш гя затрат мани юного времени), а также длительность обработки его результатов. В связи с этим необходимо остановиться на средствах профилирования, имеющихся в составе пакета MATLAB. Под профилированием понимается измерение временных характеристик М-функции или М-сценария. Запуск профилировщика выполняется из командного окна MATLAB с помощью команды profile on. Перечень и объем регистрируемой информации, а также форма ее представления зависит от заданных пользователем параметров команды: О -DETAIL <level> — определяет уровень детализации регистрируемых временных характеристик; возможны следующие варианты: • -detail mmex — регистрируется длительность выполнения М-функций, под- функций (M-subfunction) и МЕХ-функций, используемых в М-файле (в том числе вызываемых неявно); данный режим используется по умолчанию;
Планирование экспериментов и обработка результатов моделирования 383 • -detail builtin — дополнительно регистрируется длительность выполнения встроенных функций; • -detail ope rato г — кроме указанных характеристик записывается также дли- тельность выполнения встроенных операторов (типа +); О -HISTORY — регистрируется последовательность вызовов функций. Для управления процессом профилирования могут быть также использованы сле- дующие форматы команды: О profile of f — приостановить работу профилировщика; О profile resume — перезапустить профилировщик с сохранением накопленных ра- нее статистических данных; О profile clear—удалить накопленную статистику; О profile report — вывести отчет о работе профилировщика, который создается в формате html (во временном файле) и выводится на экран с помощью установ- ленного на компьютере броузера (при выводе отчета работа профилировщика приостанавливается); О profile plot—вывести конфигурацию М-файла в графической форме. Поясним процесс профилирования М-файла на примере исследования созданного нами сценария My_Hist. Для получения соответствующей информации в командном окне необходимо ввес- ти такую последовательность команд: profile on My_Hist profile report profile plot Отчет о результатах профилирования сценария содержит две «страницы», на пер- вой из которых Summary (итог) представлена обобщенная информация о работе М- файла, а на второй Function Details (подробно о функциях) — более подробные дан- ные о выполнении используемых в нем М-функций. На странице Summary, в частности, выводятся (рис. 8.26): О дата и время создания отчета; О Total recorded time (общее время записи) — длительность работы профилиров- щика; О Number of M-functions (число М-функций) — количество М-функций, использу- емых при выполнении сценария; О Number of M-subfunctions (число М-подфункций); О Number of MEX-functions (число МЕХ-функций); О Clock precision (точность измерения времени) — точность измерения временных характеристик;
384 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.26. Страница Summary отчета о результатах прафилиравания сценария О Function List (список функций) — список используемых функций и подфунк- ций, который, в свою очередь, позволяет получить о каждой из них следующие сведения: • Time (время) — суммарное время работы при исполнении сценария и относи- тельный «вклад» этой функции в общую длительность сценария; • Calls (вызовы) — число вызовов функции; • Time/call (время/вызов) — затраты времени на один вызов; • Self time (собственное время) — суммарные затраты времени на организащпо вызовов функции (загрузка, интерпретация и другие «непроизводительные» затраты); в этом отношении очень показательны данные по функции gcf, кото- рая обеспечивает управление графическими окнами — затраты собственно на работу функции практически равны нулю, зато обращения к ней составляют почти треть от времени работы сценария; • Location (маршрут) — путь доступа к файлу, содержащему функцию. На рис. 8.27 приведен состав информации, отображаемой на странице Function Details, применительно к сценарию Му Нist, который в данном случае воспринима-
Планирование экспериментов и обработка результатов моделирования 385 ется и описывается профилировщиком как М-функция (по остальным функциям из списка Function List приводятся аналогичные сведения). Рис. 8.27. Состав информоции но странице Function Details В отличие от страницы Summary, здесь указана взаимосвязь данной функции с други- ми: вызвавшая ее функция — Parent functions (родительские функции), которые для сценария отсутствуют, и, наоборот, функции, непосредственно вызываемые ею — Child functions (дочерние функции). Еще более интересная информация приведена ниже — это распределение времени между строками сценария. Обратите внимание, что собственно прогон модели (вы- полнение инструкции sim(' Nakop’ ),строка6) требует меньше времени, чем последу- ющее построение гистограммы. Команда profile plot, о которой было сказано выше, позволяет представить конфи- гурацию сценария My_Hist в более наглядной графической форме (рис. 8.28).
386 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.28. Графическое представление конфигурации М-сценария STATEFLOW — инструмент событийного моделирования В предыдущих уроках неоднократно подчеркивалось, что основное предназначение SIMULINK — описание динамических систем, поведение которых можно предста- вить как функцию времени. В связи с этим SIMULINK удобнее всего использовать при разработке моделей на основе процессов (или работ) и транзактов. Для реализа- ции событийного подхода к описанию моделируемой системы в состав блок-диа- граммы может быть включена так называемая диаграмма смены состояний (stateflow chart), созданная с помощью специальной компоненты MATLAB, которая так и на- зывается — STATEFLOW. Организация взаимодействия между SIMULINK и STATEFLOW STATEFLOW представляет собой инструмент графического конструирования сце- нариев поведения различных систем. Используя предоставляемые интерактивные средства, разработчик может описывать поведение исследуемой системы как цепоч-
STATEFLOW — инструмент событийного моделирования 387 ку правил «если — то». Теоретической основой построения и исследования моде- лей в среде STATEFLOW является теория конечных автоматов. Модели, разрабатываемые в STATEFLOW, могут использоваться как самосто- ятельно, так и в интеграции с другими компонентами MATLAB, в первую очередь — как особые подсистемы в блок-диаграммах SIMULINK. На основе STATEFLOW- моделей (SF-моделей) может быть сгенерирован исполняемый программный код. При создании STATEFLOW разработчики ориентировались на возможность при- менения этого инструмента в следующих предметных областях: О разработка встраиваемых систем (в том числе для авиационной техники и авто- мобилестроения); О проектирование периферийного компьютерного оборудования и программируе- мых логических контроллеров; О разработка графического пользовательского интерфейса программных систем. STATEFLOW содержит следующие основные компоненты: О графический редактор диаграмм SF-моделей; О средства анализа SF-моделей (STATEFLOW Explorer); О навигатор (STATEFLOW Finder), обеспечивающий поиск в SF-моделей требуе- мых объектов (событий, состояний, данных и т. д.); О генератор кода, который преобразует SF-модель в промежуточный код, исполь- зуемый для работы с RTW; О отладчик SF-моделей. SF-модель представляет собой объединение графических (состояния, переходы, соединения) и не графических (события, данные, результаты) объектов. Каждая SF- модель представлена в Simulink-диаграмме в виде отдельного блока. Совокупность всех SF-блоков, включенных в состав модели, образует так называемую State flow- машину. Существует взаимно однозначное соответствие между Simulink-моделью и State- flow-машиной. Каждая Stateflow-машина имеет собственную иерархию объектов. Stateflow-маши- на является самым верхним уровнем в этой иерархии. Остальные уровни иерархии образуются входящими в Stateflow-машину графическими и не графическими объектами (рис. 8.29). Технология совместного использования SIMULINK и STATEFLOW может быть весьма гибкой и определяется в первую очередь спецификой решаемой задачи. В некоторых случаях удобнее сначала разработать (или скорректировать имеющую- ся) SF-модель и затем на ее основе построить блок-диаграмму; иногда наоборот — сначала создается блок-диаграмма, и только после этого один или несколько ее блоков заменяются соответствующими SF-моделями. Второй подход удобнее в тех случаях, когда в состав блок-диаграммы входят блоки Combinatorial Logic (комбинаторика), отражающие, как вы помните, логику работы конечного автомата в <|юр.ме таблицы истинности.
388 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB ' SF-диаграмма Состояние Рис. 8.29. Связь между моделью SIMULINK и SF-диограммой Модель SIMULINK —► —► БЛОК1 * БЛОК 2 SF-машина Если требуется более детальное моделирование поведения конечного автомата, то соответствующий блок Combinatorial Logic заменяется SF-моделью, описывающей процесс смены состояний автомата. Такая технология обеспечивает разработку моде- ли по принципу нисходящего проектирования: сначала определяется общая струк- тура модели, а затем отдельные ее компоненты уточняются и детализируются. f Основные объекты SF-диаграммы При включении STATEFLOW в рабочую конфигурацию MATLAB библиотека SIMULINK дополняется разделом Stateflow (событийное моделирование), содержа- щим единственную компоненту (рис. 8.30, слева) — блок Chart (диаграмма), который может быть помещен в окно блок-диаграммы. Однако если вы откроете непосред- ственно в окне просмотра файл библиотеки STATEFLOW (с именем sflib.mdl), то увидите, что она содержит еще и подраздел Examples (примеры), в который разра- ботчики включили примеры SF-диаграмм, созданных с помощью STATEFLOW (рис. 8.30, справа).
STATEFLOW — инструмент событийного моделирования 389 Browser This is the *sflib‘ library Simulink • : - ф Chart & H Simulink Extras Stateflow Chart (Double click to open the Stateflow Examples Library) Рис. 8.30. Библиотека Stateflow Воспользуемся одним из примеров, чтобы получить общее представление об SF- диаграмме; S-модель, в состав которой она входит, приведена на рис. 8.31. Рис. 8.31. S-модель, содержащая диаграмму STATEFLOW Из рисунка видно, что SF-диаграмма может быть связана с другими блоками S-моде- ли как по информации, так и по управлению. Связь по управлению осуществляется посредством обмена событиями, а для передачи данных используются информаци- онные порты. Описание интерфейса SF-блока выполняется с помощью графическо- го редактора STATEFLOW. Чтобы открыть окно SF-диаграммы, которое в тоже время является и окном графи- ческого редактора STATEFLOW, достаточно дважды щелкнуть на блоке Chart (кото- рый в данном случае имеет имя Carousell). Это окно содержит меню, рабочее поле и панель инструментов для создания SF-модели (рис. 8.32). Именно с описания инструментов мы и начнем знакомство с элементами SF-диа- граммы.
390 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.32. Окна графического редактора STATEFLOW Кнопки панели инструментов обеспечивают создание только графических объектов диаграммы. Чтобы соответствующий объект появился в поле диаграммы, необходи- мо сначала щелкнуть на кнопке, а затем — в поле диаграммы. На рис. 8.33 показано визуальное представление объектов, создаваемых с помощью панели инструментов. Состояние (State) Признак состояния с памятью (History Junction) Состояние- родитель Состояние с памятью Переход (Transition) Признак альтернативы (Connective Junction) Рис. 8.33. Визуольное представление графических объектов SF-диаграммы
STATEFLOW инструмент событийного моделирования 391 Состояния Совокупность состояний (states) описывает поведение событийно-управляемой системы. Является ли состояние в данный момент активным или нет, зависит от динамики связанных с ним событий и условий. Каждое состояние имеет состояние-родителя. Для SF-диаграммы, состоящей йз единственного состояш гя, род! гтелем является сама SF-диаграмма (называемая так- же корневой диаграммой). Вы можете поместить состояние внутрь другого состоя- ния, которое в этом случае будет интерпретироваться как состояние более высокого уровня. Состояния имеют метки, которые могут определять операции, связанные с этим со- стоянием. Примерами операций являются: вход, задержка, выход и т. д. STATEFLO W поддерживает два типа состояний: параллельные или одновременные (AND) и взаимоисключающие (OR). Признак состояния с памятью Признак состояния с памятью (history junction) предоставляет возможность опре* делить направление перехода в новое состояние на основе информации о «про+Л| шлом» системы. Если состояние верхнего уровня (superstate) имеет такой признак ЙЯ содержит вложенные (substate) взаимоисключающие состояния, то переход выпол*й няется в то из них, в которое система переходила в последний раз. Признак состояв ния с памятью относится только к тому уровню иерархии, на котором он представ- лен визуально. ' я Переходы Переход (transition) является графическим объектом, который, в большинстве слу- чаев, связывает один объект с другим. Один конец перехода подключается к исход- ному объекту (объекту-источнику), а другой — к объекту-приемнику. Метка пере- хода описывает условия, при которых система перемещается из одного состояния в другое. Переход выполняется только в том случае, если произошло событие, сделав- шее условие истинным. Различают особый вид переходов — переход по умолчанию (default transition). Пере- ходы такого типа определяют, какое из взаимоисключающих состояний (OR) дол- жно стать активным, когда имеется неоднозначность между двумя или более OR- состояниями на одном уровне иерархии. Признак альтернативы Признак альтернативы (Connective Junction) — это графический объект, который упрощает визуальное представление SF-диаграммы и облегчает генерацию эффек- тивного кода. Признак альтернативы позволяют описать альтернативные пути пере- хода системы из одного состояния в другое.
392 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Наряду с графическими объектами, которые создаются с помощью панели инстру- ментов, SF-диаграмма должна быть дополнена другими объектами, необходимыми для описания поведения системы. Рассмотрим основные из них. События События (events) управляют выполнением SF-диаграммы. Появление события изменяет статут связанных с ним состояний диаграммы, а также может запустить переход или действие, которое должно при этом выполняться. События распрос- траняются сверху вниз по иерархии диаграммы, начиная от события-родителя (parent event). События являются не графическими объектами и поэтому не представлены непос- редственно на диаграмме, однако косвенно событие может быть визуализировано с помощью метки перехода, связанного с этим событием, как показано на рис. 8.34. Рис. 8.34. Использование метки перехода для визуализации события События могут создаваться на любом уровне иерархии. События имеют свойства, например, область видимости. По установленной для него области видимости собы- тие может быть: О локальным (видимым только в данной SF-диаграмме); О входным (передаваемым в SF-диаграмму из содержащей ее S-модели); О выходным (передаваемым из SF-диаграммы в содержащую ее S-модель); О экспортируемым (передаваемым из SF-диаграммы и S-модели во внешнюю про- грамму); О импортируемым (передаваемым в SF-диаграмму и S-модель из внешнего источ- ника). Все события, которые используются в SF-диаграмме, должны быть определены. События могут создаваться и модифицироваться либо с помощью обозревателя Stateflow (Stateflow Explorer), либо непосредственно в окне графического редакто- ра посредством подменю Event (событие) меню Add (добавить). При выборе в этом подменю требуемой команды открывается диалоговое окно, в котором указываются имя события, его область видимости, комментарии к нему, а также параметры отлад- ки (рис. 8.35).
STATEFLOW — инструмент событийного моделирования 393 Рис. 8.35. Диалоговые окна для создания и модификации событий Данные Данные (data) используются для работы в SF-диаграмме с числовыми значениями, не графическими объектами и не могут быть представлены непосредственно в диаграмме. Данные могут создаваться на любом уровне иерархии. Данные имеют свойства, например, область видимости. По установленной для них области видимости дан- ные Moiyr быть: О локальными (видимыми только в данной SF-диаграмме); О входными (передаваемыми в SF-диаграмму из содержащей ее S-модели); О выходными (передаваемыми из SF-диаграммы в содержащую ее S-модель); О временными (промежуточными)-, О сохраняемыми (сохраняемыми в рабочей области MATLAB); О константами-, О экспортируемыми (передаваемыми из SF-диаграммы и S-модели во внешнюю программу); О импортируемыми (передаваемыми в SF-диаграмму и S-модель из внешнего ис- точника). Объект типа Data может быть создан и модиф!щирован либо с помощью обозревателя Stateflow, либо непосредственно в окне графического редактора с помощью подменю Data (данные) меню Add (добавить). При выборе в этом подменю требуемой команды открывается диалоговое окно, в котором указываются имя данных, их область види- мости, необходимые комментарии, а также параметры отладки (рис. 8.36).
394 Урак 8. Взаимодействие SIMULINK с другими компонентами MATLAB Начальное значение 1 Описание массива Рис. 8.36. Диалоговые окна для создания и модификации данных %?’ Условия Условие (condition) представляет собой булево выражение, определяющее условия срабатывания перехода; переход выполняется, если заданное выражение имеет зна- чение «истина» (1). Визуально в SF-диаграмме условие может быть представлено как описание перехода, заключенное в квадратные скобки (рис. 8.37). Рис. 8.37. Пример описания условия J' •Чч. i vial
STATEFLOW — инструмент событийного моделирования 395 Процедуры Процедуры (actions) являются не графическими объектами SF-диаграммы. Проце- дура может выполняться как при переходе из одного состояния в другое, так и при нахождении системы в определенном активном состоянии. Описание процедуры выполняется с помощью специального языка процедур (action language). Процедура может быть представлена как вызов функции, порождение определенного события, присвоение нового значения переменной и т. п. Stateflow поддерживает две модели конечных автоматов — модель Мура (Moore) и модель Мили (Mealy). В модели Мили процедуры связываются с переходами, а в модели Мура они связываются с состояниями. Исходя из этого, Stateflow поддер- живает как процедуры переходов, так и процедуры состояний. С каждым переходом может быть связана процедура условия и процедура перехода, как показано на рис. 8.38. Процедура условия Pcwer...on switch_off ( С1 ] Процедура перехода eleC-Off}1/ Рис. 8.38. Описоние процедур, связонных с переходом С состоянием могут быть связаны процедуры Вход (Ent гу), Задержка (Du ring), Вы- ход (Exit) и Порождение события (On имя_события). Например, для приведенного на рис. 8.39 состояния Power_on заданы процедуры всех перечисленных типов (в виде соответствующих функций). Метка состояния системы -^Power_orv _ “entry: ent_action(); during: dur„..action(); exit: exit._action(); __on Switchoff: on_action(); \) Описание связанных с состоянием процедур Рис. 8.39. Описание процедур, связанных с состоянием системы
396 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Технология создания SF-диаграмм Для иллюстрации процесса создания собственной SF-диаграммы еще раз вернемся к модели Choice (выбор), активно использовавшейся нами в уроке 6 «Технология моделирования в среде SIMULINK». Определив первоначальную структуру моде- ли, мы можем уточнить логику поведения Посетителя, описав ее (логику) с помо- щью SF-модели. С этой целью заменим блок Combinatorial Logic (комбинаторика) блоком Chait (диа- грамма), взятым из библиотеки STATEFLOW. В исходном состоянии блок Chart не имеет входных и выходных портов (рис. 8.40). / Рис. 8.40. Исходное состояние блок-диогроммы при включении в нее блоко Chart Поэтому сначала необходимо описать его интерфейс (правила и средства взаимо- действия) с блок-диаграммой S-модели. Описание заключается в указании вход- ных и выходных портов, а также типа управления блоком Chart со стороны S-модели. SF-диаграмма может быть связана с другими блоками S-модели как по инфор- мации, так и по управлению. Связь по управлению осуществляется посредством обмена событиями, а для передачи данных используются информационные порты. Описание интерфейса блока Chart выполняется с помощью графического редактора STATEFLOW. Чтобы открыть окно редактора, достаточно дважды щелкнуть на бло- ке Chart. Для описания интерфейса с SIMULINK необходимо открыть меню Add (до- бавить). Если создается информационный порт, то следует раскрыть подменю Data (данные) и выбрать в нем требуемый тип порта (рис. 8.41). В соответствии с логикой работы модели Choice, блок должен иметь два информаци- онных порта: один входной и один выходной. Поэтому в меню Data требуется снача- ла выбрать команду Input from Simulink (принятьиз Simulink), азатем — команду Output
STATEFLOW — инструмент событийного моделирования 397 to Simulink (передать в Simulink). В обоих случаях будет открыто уже знакомое вам диалоговое окно, с помощью которого могут быть определены имя передавае- мых данных, их формат, диапазон значений и т. д. В рассматриваемом примере для всех параметров (кроме имени) можно сохранить значения, установленные по умолчанию. Рис. 8.41. Команды создания информационных портов блока Chart За один сеанс работы с окном Data может быть создан только один входной или вы- ходной порт. Поскольку данные не являются графическими объектами, то в окне редактора STATEFLOW ничего не изменяется. Однако созданные объекты можно увидеть с помощью обозревателя Stateflow (рис. 8.42), выбрав команду Explore (обо- зреватель) меню Tools (инструменты). Рис. 8.42. Представление созданных данных в акне обозревателя Stateflow Кроме того, входной и выходной порты, соответствующие пересылаемым данным, отображаются внутри блока Chart в блок-диаграмме Choice, что позволяет соединить его с другими блоками модели (рис. 8.43).
398 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.43. Блок-диаграмма после включения в нее блока Chart Пример SF-модели, описывающей в общем виде логику работы Посетителя, приве- ден на рис. 8.44. Рис. 8.44. Пример SF-модели Средства отладки SF-моделей С точки зрения программной реализации, SF-модель представляет собой S-функ- цию. И хотя технология визуальной разработки позволяет избежать значительной части синтаксических ошибок, перед запуском модели полезно убедиться в их пол-
STATEFLOW — инструмент событийного моделирования 399 ном отсутствии. Такая проверка выполняется при выборе команды Parse (синтакси- ческий разбор), входящей в меню Tools (инструменты) графического редактора. По окончании синтаксического контроля на экран выводится диалоговое окно, знако- мое вам по описанию средств диагностики SIMULINK. Если ошибки отсутствуют, то диагностическое сообщение состоит из единственного слова — Done (выполнено). В противном случае в окне выводятся сведения об источнике и характере обнару- женных ошибок (рис. 8.45). Диагностическое сообщение Источник ошибки Рис. 8.45. Окна с результатами синтаксического контроля SF-диаграммы Читатели, имеющие опыт программирования, знают, что отсутствие в программе синтаксических ошибок еще не является гарантией ее правильной работы, посколь- ку программа может содержать более серьезные ошибки — логические. Для обнару- жения таких ошибок в составе STATEFLOW имеются средства отладки, которые позволяют проследить логику выполнения SF-диаграммы по шагам; при этом для повышения наглядности ее работы может использоваться анимация. На этапе отладки возможен автономный запуск SF-модели, который производится командой Start (пуск) меню Simulation (моделирование) графического редактора STATEFLOW. Перед выполнением этой команды целесообразно проверить значения параметров модели. Они устанавливаются с помощью диалогового окна (рис. 8.46), открываемого при выборе команды Chart Properties (свойства диаграммы), входящей в меню File (файл) графического редактора. Окно содержит следующие элементы. О Name (имя) — имя SF-диаграммы. Представляет собой статическую текстовую область, которая реализована как гиперссылка: щелчок мышью на ней приводит к активизации окна SF-диаграммы.
400 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.46. Окна установки параметров SF-диаграммы О Simulink Subsystem (подсистема Simulink) — имя S-модёли, в состав которой вхо- дит SF-диаграмма. Представляет собой статическую текстовую область, которая реализована как гиперссылка: щелчок мышью на ней приводит к активизации окна блок-диаграммы. О Parent (родитель) — имя SF-диаграммы более высокого уровня («родителя») или Stateflow-машины. Представляет собой статическую текстовую область, ко- торая реализована как гиперссылка: щелчок мышью на ней приводит к открытию диалогового окна настройки параметров соответствующей SF-диаграммы. О Раскрывающийся список Update method (метод коррекции) позволяет выбрать способ управления работой SF-диаграммы: • Triggered or Inherited (переключение или наследование) — метод используется в тех случаях, когда SF-диаграмма управляется событиями или данными, по- ступающими из S-модели; если вы определяете входные события для диа- граммы, то она будет активизироваться каждый раз, когда на триггерный порт диаграммы поступает управляющий сигнал; если же определены только вход- ные данные (входные события отсутствуют), то периодичность активизации диаграммы будет определяться интенсивностью поступления данных; при от- сутствии информационных и «событийных» связей с SIMULINK периодич- ность выполнения диаграммы равна величине шага моделирования, установ- ленного для S-модели; • Sampled (эталон) — периодичность активизации SF-диаграммы задается как значение параметра Sample time (эталонное время) соответствующего блока; SIMULINK генерирует управляющие события через равные интервалы вре- мени, соответствующие значению этого параметра; при использовании этого
STATEFLOW — инструмент событийного моделирования 401 метода следует учитывать, что другие блоки в S-модели могут иметь иное значение параметра Sample time; при выборе данного варианта управления ста- новится доступно для редактирования расположенное справа от списка поле Sample Time, в которое следует ввести значение этого параметра; • Continuous (непрерывно) — блок SF-диаграммы активизируется на каждом шаге моделирования, величина которого определяется параметрами S-модели. О Флажок Use Strong Data Typing with Simulink I/O (использовать только типы данных Simulink) позволяет запретить или разрешить использование данных, сохранен- ных SIMU LINK в рабочей области MATLAB. О Флажок Execute (enter) Chart At Initialization (выполнить диаграмму при иници- ализации) позволяет запретить или разрешить исполнение SF-диаграммы при запуске S-модели. О Флажок Debugger breakpoint (точка останова отладчика) позволяет использовать при отладке в качестве точки останова момент инициализации SF-диаграммы. О Флажок Editor (редактор) позволяет запретить любую модификацию SF-диа- граммы. Для автономного запуска SF-диаграммы необходимо выполнить следующие действия. 1. Открыть окно SF-диаграммы. 2. Выбрать команду Open Simulation Target (открыть объект моделирования) в меню Tools (инструменты) графического редактора. 3. В открывшемся диалоговом окне Simulation Target Builder (построитель целевого программного кода модели) щелкнуть мышью на кнопке Coder Options (парамет- ры генератора кода) и в дополнительном окне (рис. 8.47) проверить, установлен ли флажок Enable Debugging/Animation (разрешить анимацию при отладке). ГшдЙЫато: jiunlSnu**SfuncSijn] Г IntbuBientationAJebugging option IfJ ЕпЙлоГ»1л.ЗДГ^.А<,' .Лг " ГЙЬег Code< Option* r— Г HoEcho ' •' • I- Ko Oder Warning". Г bt'CotaGwiemeJCotiiwwM, Г EnabtaC-tkeWOperationr. < Г UMttcwiJZca.twrulafed кДегО^йоп*' | I Coder Command l*c t>' - || Staleflow T argel incremental) / Statellow Simulation Taiget Bulkier «А Stateflow Simulation Codet Options Рис. 8.47. Окна установки параметров SF-диаграммы
402 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB - S 4. В меню Tools графического редактора выбрать команду Debug (отладка) и в открыв- шемся окне Stateflow Debugging (отладчик Stateflow), показанном на рис. 8.48, проверить, установлен ли переключатель Enable (разрешить) в группе Animation (анимация). 5. В окне Stateflow Debugging щелкнуть на кнопке Start (пуск). Теперь вернемся к окну Simulation Target Builder и поясним его назначение. Это окно ’ имеет непосредственное отношение к компоненте STATEFLOW, которая называет- ся Stateflow Coder и обеспечивает генерацию так называемого целевого программного н кода (target). Особенность целевого кода состоит в том, что он представляет собой ,£ независимую программу, которая может исполняться без участия ST ATEFLOW. р С помощью Stateflow Coder может быть создан программный код как для автономной SF-диаграммы, так и для Stateflow-машины, входящей в состав S-модели. Stateflow Coder совместно с SIMULINK позволяет получить следующие типы целе- - вого программного кода. О Код модели (simulation target). Скомпилированный из SF-диаграммы программ- ный код представляет собой S-функцию (МЕХ-файл), которая вызывается из, блок-диаграммы SIMULINK при выполнении сеанса моделирования. Данный' вариант используется по умолчанию. О Переносимый код (stand-alone target). Формируемый код является исполняемой программой, при генерации которой может быть указан тип компьютера (целе- вой машины), на котором должна выполняться Stateflow-модель. Программный
Работа в Мастерской реального времени 403 код может создаваться и для таких компьютеров, система команд которых не содержит операций с плавающей точкой (что характерно для встраиваемых уп- равляющих систем). Генерацию кода выполняет Stateflow Coder. Для выполне- ния созданного кода не требуется SIMULINK. О Код реального времени (RTW target). Формируемый код является исполняемой программой, реализующей Simulink-модель, которая может содержать любые блоки. Код реального времени может выполняться на компьютерах, не имеющих команд с плавающей точкой. Для построения кода реального времени кроме Stateflow Coder требуется еще и Мастерская реального времени (Real-Time Workshop — RTW), о которой будет рассказано в следующем разделе. Завершая обзор основных возможностей STATEFLOW следует отметить, что пользо- вателю предоставлено право создавать собственные библиотеки SF-диаграмм. Stateflow-библиотека представляет собой частный случай библиотеки SIMULINK, которая содержит блоки, созданные с помощью STATEFLOW (хотя в ее состав мо- гут быть включены также и другие блоки SIMULINK). Stateflow-библиотека создается так же, как и любая другая библиотека SIMULINK: выберите команду File ► New ► Library (файл ► создать ► библиотеку) в окне блок-ди- аграммы, а затем создайте или скопируйте блоки SF-диаграмм в окно библиотеки. Чтобы включить SF-диаграмму из библиотеки в ту или иную модель, скопируйте или перетащите соответствующий блок из библиотеки в окно создаваемой модели. При этом SIMULINK создаст для копии ссылку на библиотечный блок. Это позво- лит корректировать все модели, содержащие данный блок, обновляя только библио- течный экземпляр. Работа в Мастерской реального времени Организация взаимодействия SIMULINK и RTW Мастерскаяреального времени (Real-Time Workshop — RTW) — это инструменталь- ные средства разработки программного обеспечения для самого широкого класса аппаратных средств, работающих в реальном масштабе времени: датчиков, контрол- леров, систем автоматического управления и регулирования и т. д. Основные функциональные возможности RTW перечислены ниже. О Способность генерировать программный код из любой блок-диаграммы SIMULINK. Единственное ограничение связано с блоками MATLAB Fen (функция MATLAB) и S-function (S-функция), которые должны быть предварительно преобразованы в МЕХ-файлы. О Использование расширяемой библиотеки драйверов устройств. О Автоматический и полностью настраиваемый процесс разработки программного обеспечения. О Объединение компонентов, работающих под управлением различных операци- онных систем.
404 Урок 8. Взоимодействие SIMULINK с другими компонентами MATLAB О Генерация программного кода практически для любого стандартизованного (соответствующего требованиям ANSI) компилятора языка С, в том числе для Microsoft Visual C/C++, Watcom C/C++ и UNIX-версий. С помощью RTW могут решаться следующие типы задач. О Разработка программного обеспечения управляющих систем реального времени. Вы можете с помощью MATLAB и SIMULINK определить логическую структу- ру такой системы и затем сгенерировать программный код прямо из блок-диа- граммы. Полученная программа может быть скомпилирована и загружена непо- средственно в целевые аппаратные средства. О Создание алгоритмов обработки сигналов в реальном времени. Вы можете раз- работать алгоритм средствами MATLAB и SIMULINK, сгенерировать программ- ный код и настроить его на конкретные аппаратные средства. О Создание комплексных моделирующих стендов (КИМС), включающих как SIMULINK-модели, так и реальноеоборудование. С помощью таких стендов может исследоваться поведение реальных систем в тех или иных условиях, оцениваться их надежность и производительность при различных значениях рабочей нагрузки. О Интерактивная настройка параметров систем в реальном времени. Вы можете использовать SIMULINK как связующее звено между исследователем (разработ- чиком) и программным обеспечением, исполняемом в реальном времени. Это позволяет изменять параметры системы без повторного перезапуска программ- ного обеспечения. О Генерация переносимого С-кода для экспорта в другие имитационные програм- мы и пакеты моделирования. О Повышение скорости проведения модельных экспериментов. Процесс создания независимого программного кода в RTW полностью автоматизи- рован и основан на последовательном выполнении пользователем действий, реали- зуемых с помощью соответствующих диалоговых окон. Работа в RTW состоит из трех основных шагов, которые управляются М-файлом make_rtw.m. 1. Генерация кода модели. 2. Генерация объектного файла (файла объектного кода), который может модифи- цироваться по желанию пользователя в соответствии с конкретной решаемой задачей. 3. Выполнение утилиты make с модифицированным по заказу пользователя объект- ным файлом. Для последующего изложения нам потребуются несколько терминов, используемых разработчиками программного обеспечения реального времени. О Хостп-компьютпер (host computer) или просто хост — это компьютер, используе- мый для разработки программного обеспечения.
Работа в Мастерской реального времени 405 О Целевое оборудование (target) — аппаратура, для которой создается программное обеспечение, а также собственно реализующие его вычислительные средства (микропроцессоры, контроллеры и т. д.). О Целевое программное обеспечение (target software) — программное обеспечение (реального времени), исполняемое на целевом оборудовании. Общая схема создания приложений с помощью RTW показана на рис. 8.49. Шаблон^4 make-файла i system.tmf ! S-модель и шаблон объектного файла, созданные пользователем Автоматическая генерация ---- кода с учетом настроек пользователя Генерация make-файла Файл make_rtw.m С-код \ make-файл \ модели | modetmk model.c model.h model_export.h ; modeLcrm model.reg Исполняемая программа Рис. 8.49. Общая схема создания программного кода с помощью RTW Поясним основные компоненты RTW и особенности их применения. На первом шаге с помощью утилиты Build формируется описание блок-диаграммы в формате ASCII. Это описание используется как промежуточное представление блок-диаграммы и содержит, в частности, такие сведения, как значения параметров модели, размерность векторных сигналов, дискретность изменения модельного вре- мени и т. п. Данная информация сохраняется в языково-независимом формате в файле с расширением .rtw.
406 Урок 8. Взоимодействие SIMULINK с другими компонентоми MATLAB На следующем шаге компилятор TLC (Target Language Compiler) считывает rtw- файл и с помощью TLC-программы, которая представляет собой набор «целевых файлов» (файлов с расширением .tic), создает описание S-модели на языке С. TLC-программа определяет, каким образом из промежуточного представления блок-диаграммы будет сформирован «целевой код». Она содержит: О «точку входа» в программу, так называемый главный или системный целевой файл (system target file); О набор библиотечных функций, которые TLC-программа использует при преоб- разовании rtw-файла в генерируемый код; О набор целевых файлов блоков, которые определяют, каким образом каждый блок S-модели будет преобразован в целевой код. Компилятор TLC создает на основе исходной S-модели 5 файлов: О modeLc — файл «точки входа» в программу; О modelh — заголовочный файл, который описывает связи между блоками модели; О model_export. h — заголовочный файл, содержащий информацию об экспортиру- емых сигналах и параметрах модели; О modeLprm — файл параметров блоков S-модели; О modeLreg — файл описания параметров модельного времени S-модели. Утилита Маке используется для создания программного кода, выполняемого в реаль- ном времени. Она производит компиляцию и связывание перечисленных выше файлов и формирует исполняемый файл (с расширением .ехе). Предварительно утилита Маке создает на основе файла шаблона system.tmf объектный файл system.mk. Пользователь может управлять работой утилиты Маке, модифицируя исходный шаблон по своему усмотрению. Имеющиеся в составе RTW файлы шаблонов пере- числены в табл. 8.1. Таблица 8.1. Шаблоны для создания программного кода Тип создаваемого программного кода Используемый компилятор Файл шаблона Исполняемый кад реального времени для PC MS Visual C/C++ grt_vc.tmf Исполняемый кад реального времени для PC Borland C/C++ grt_bc.tmf Исполняемый код реального времени для PC Watcom С grt_watc.tmf Программный код реального времени для UNIX Любой стандартизованный (ANSI) С-компилятор, поддерживаемый вашей UNIX-системай grt_unix.tmf На данном этапе к генерируемому коду добавляются коды S-функций, если они со- держатся в блок-диаграмме SIMULINK. Вы уже встречались с понятием S-функции при знакомстве с библиотекой SIМ U LINK: в разделе Signals & Systems (сигналы и системы) имеется блок, который так и называет-
Робота в Мастерской реального времени 407 ся — S-function (S-функция). Напомним, что S-функция — это достаточно самосто- ятельная программа, описывающая поведение некоторой системы или ее отдельной компоненты. S-функция может быть написана на языке С, Фортран или MATLAB. Если S-функция написана на языке С или Фортран, то она предварительно компи- лируется и преобразуется в МЕХ-файл. Эти действия выполняет специальная ути- лита тех, входящая в состав интерфейса прикладных программ (Application Program Interface — API) пакета MATLAB. Созданный МЕХ-файл динамически связывает- ся с другими компонентами модели, когда это необходимо. При создании программного кода с помощью RTW пользователь может выбрать один из двух способов включения в него S-функции: О непосредственное внедрение, при котором S-функция становится встраиваемой (inlining); О с помощью механизма API (используется по умолчанию). Выбор метода выполняется с помощью соответствующих параметров настройки RTW, которые будут рассмотрены немного позже. Вернемся к процессу генерации RTW-кода. Созданный утилитой Маке исполняемый программный код может быть загружен в те аппаратные средства, для которых он 3 разрабатывался. При запуске SIMULINK во внешнем режиме (см. следующий раз- а дел) возможна окончательная настройка параметров созданного программного $ обеспечения непосредственно в процессе его работы. '%• Такова общая схема использования Мастерской реального времени. Теперь обсудим некоторые технические детали, без знания которых работа с RTW t - может вызвать затруднения. ' Прежде всего следует, видимо, уточнить, что для работы с RTW данная компонента должна быть включена в рабочую конфигурацию пакета MATLAB. Если это выполнено, то в строку меню окна блок-диаграммы добавляется еще одно меню — Tools (инструменты). Оно содержит две команды (рис. 8.50). О RTW Build (построить RTW) — запуск утилиты Build. О RTW Options (параметры RTW) — установка параметров для работы с RTW. При выборе этой команды открывается окно настройки параметров модели, в кото- ром появляется новая вкладка — Real-Time Workshop (Мастерская реального вре- мени), показанная на рис. 8.51. Указанное диалоговое окно может быть также открыто с помощью команды Parameters (параметры) меню Simulation (моделирование). Такое совмещение выполнено не случайно, поскольку, приступая к работе с RTW, необходимо еще раз проверить корректность установки параметров моделирования: О начальное и конечное значения времени для интервала моделирования; О способ изменения модельного времени (должен быть установлен вариант с фик- сированным шагом); О параметры сохранения результатов моделирования в рабочей области MATLAB-
408 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB Рис. 8.50. Состав меню Tools при работе с RTW Рис. 8.51. Вкладка установки параметров для работы с RTW Последний пункт требует некоторого пояснения. Дело в том, что при исполнении программного кода, созданного с помощью RT W, регистрация данных выполняется так же, как при исполнении обычной S-модели. При этом создается стандартный
Робота в Мастерской реального времени 409 МАТ-файл, содержащий все переменные рабочей области MATLAB. Единственное отличие состоит в том, что к именам переменных добавляется префикс rt_. Это по- зволяет, кроме всего прочего, сравнить результаты «обычного» модельного экспери- мента с результатами, получерными с помощью RTW-кода. При включении RTW в рабочую конфигурацию MATLAB происходит также изме- нение состава команд меню Simulation: в нем появляются команды установки режи- ма работы SIMULINK (рис. 8.52): О Normal (обычный режим) — установлен по умолчанию; О External (внешний режим) — используется при совместной работе SIMULINK с RTW-кодом. Рис. 8.52. Состав меню Simulation при работе с RTW Теперь вернемся к рис. 8.51 и рассмотрим назначение и порядок установки пара- метров работы RTW. Для определенности будем считать, что необходимо создать RTW-код для S-модели Choice (выбор), описывающей поведение конечного авто- мата по имени Посетитель. Окно установки параметров RTW содержит следующие элементы управления. О В поле System target file (системный целевой файл) указывается имя tlc-файла, используемого при создании RTW-кода (по умолчанию это файл grt.tlc). Выбор tlc-файла зависит от типа создаваемого программного кода и от вида целевого оборудования. Со списком tlc-файлов и их предназначением можно ознако- миться, воспользовавшись расположенной справа кнопкой Browse (обзор), при щелчке на которой открывается соответствующее диалоговое окно (рис. 8.53). ’ Выбор в списке tlc-файла и щелчок на кнопке ОК приводит к тому, что RTW ав-
410 Урок 8. Взоимодействие SIMULINK с другими компонентами MATLAB тематически устанавливает системный целевой файл, файл шаблона и команду make, необходимые для создания программного кода; их имена отображаются в соответствующих текстовых полях вкладки. i System Target File Browser: Choice | 'г"'.1'' " T drt.tlt ICS(««) Ire'. Tibe Гн .jet T , ; Vj eit-tlc ЕнЪеаЙёа-С Feal-Tiae' Tihtget..;' ::4 4» ’ «rt.vlt______________v - al t Co tLoJfectfeketile^onlY £<n tfte t «Get-? -'§' grt.tic Generic Real-Time Target Tornado Wlndcwa ReaJ-T3ise Tartet yrt.tia,;: ~ grr_eallc<. tlf jrc_aullot. tic osek_ie<..tie J xt_a3a_sii».’:tic г ' - Hl . rtusScn.Uc tornado» tit: uirijiatc.tld Й visual C/C++ Project Baxetile «only tor the "grt" target Generic Feal-Tiae Target uich dynamic ьеьрху allocation Visual C/C++ Project Kikefile «illy fc,t Ae?:"grr jmalloc^tatget U i > Utfl H-i i *» 1 > » +1 l t t Simulation‘Target **** *1 Target^ mt ’ 4 Ana K.xtilasking Fea» Tx-< Target fol (ЖАТ • Рис. 8.53. Окно просмотра tlc-фойлав О Флажок Inli ne parameters (параметры встраивания) определяет способ представле- ния параметров S-модели в создаваемом RTW-коде. Если флажок установлен, то вместо имен переменных непосредственно подставляются их значения. Кроме того, в данном режиме во всех блоках S-модели используется единая величина шага модельного времени, то есть параметра Sample time (эталонное время), что повышает корректность работы создаваемого RTW-кода. Если флажок установ- лен, становится доступна кнопка Tunable Parameters (подстраиваемые параметры), которая обеспечивает открытие диалогового окна, позволяющего изменить ста- тус «неизменяемых» параметров модели (рис. 8.54). Те из них, которые будут помещены в список Variable Name (имя переменной), становятся настраиваемыми. Кроме того, для каждой из них может быть указан класс хранения. О Флажок Retain .rtw file (сохраняты4\у-файл) позволяет сохранить надиске (в теку- щей папке) промежуточное описание S-модели в виде одноименного rtw-файла. О Кнопка Options (параметры) обеспечивает открытие диалогового окна, предназ- наченного для установки дополнительных параметров работы RTW. Формат этого окна зависит от выбранного tlc-файла. На рис. 8.55 приведен вариант, соот- ветствующий файлу grt.tlc. Для большинства tlc-файлов возможна установка следующих параметров:
Работо в Мастерской реального времени 411 • в поле Loop rolling threshold (порог прокрутки цикла) вводится положитель- ное целое число; если в генерируемой программе имеется циклически повто- ряющийся участок, число итераций для которого превышает заданный порог, то этот участок автоматически сворачивается в инструкцию цикла for; Рис. 8.55. Диалоговое окно установки дополнительных параметров работы RTW
i $ 412 Урок 8. Взоимодействие SIMULINK с другими компонентоми MATLAB • установка флажка Verbose builds (описание процесса разработки) обеспечива- ет вывод в командном окне MATLAB сообщений о выполнении этапов генера- ции программного кода; • флажок Inline invariant signals (встраиваемые неизменяемые сигналы) опре- деляет, будут ли неизменяемые сигналы встраиваться в генерируемый про- граммный код как константы (флажок доступен только в том случае, если в предыдущем окне установлен флажок Inline parameters). О Флажок Generate code only (только генерировать код) позволяет отказаться от создания объектных и исполняемых файлов: если данный флажок уста- новлен, то работа RTW завершается генерацией файлов на языке С (для рас- сматриваемой модели это файлы choice.c, choice.h, choice_export.h, choice.reg и choice, prm); О Поле Template makefile (шаблон объектного файла) доступно для редактирования, только если установлен флажок Generate code only. Оно предоставляет возмож- ность указать требуемый шаблон для создания объектного файла. О Поле Make command (команда make) предназначено для ввода варианта команды make, соответствующего особенностям создаваемого программного кода. Здесь же могут быть указаны дополнительные параметры команды; например, команда make_rtw OPTS="-DMULTITASKING" разрешает использование многозадачности при формировании программного кода. О Кнопка Build (построить) обеспечивает запуск процесса создания RTW-кода в соответствии с установленными параметрами; чтобы они вступили в силу, тре- буется щелкнуть на кнопке Apply (применить). Если параметры работы RTW были установлены ранее или используются по умолчанию, то запуск RTW может быть произведен по команде RTW Build меню Tools. О Кнопка Stateflow options (параметры Stateflow) позволяет открыть диалоговое окно настройки параметров генерации RTW-кода для тех моделей, в которых используются SF-диаграммы, созданные с помощью Stateflow. Э>) ЗАМЕЧАНИЕ С целью обеспечения корректной работы утилиты Маке с файлами шаблонов и используемым компилятором языка С, необходимо убедиться в том, что, во- первых, определена переменноя окружения MsDevDir, и во-вторых, файл утили- ты находится в активной (текущей) папке. После того как будет сформирован исполняемый (с расширением .ехе) файл исход- ной модели, он может быть запущен на исполнение из командного окна MATLAB с помощью команды! choice; символ «!» означает обращение к операционной системе, установленной на вашем компьютере (другими словами, на время выполнения про- граммы choice MATLAB передает управление операционной системе). По завершении работы программы choice.exe ее результаты можно загрузить в рабо- чую область MATLAB из одноименного МАТ-файла по команде Load choice.
Работа в Мастерской реального времени 413 Работа SIMULINK во внешнем режиме Внешний режим обеспечивает возможность динамической настройки параметров сгенерированного RTW-кода в процессе его исполнения. Наблюдение за исполнением RTW-кода и регистрация результатов осуществляется на основе механизма API (Application Program Interface — интерфейс прикладных программ), предоставляемого операционной системой компьютера. Таким образом, во внешнем режиме на базе MATLAB создается как бы новая среда разработки программного кода, получившая название среда быстрого макетирования (rapid prototyping program framework). При работе в этой среде пользователь имеет возможность модифицировать параметры блоков исходной S-мсдели, изменять перечень входных и выходных параметров модели без перекомпиляции RTW-кода. Взаимодействие программ в этой среде разработки основано на использовании кли- ент-серверной модели вычислений, в которой SIMULINK — клиент, посылающий запросы серверу (внешней программе), чтобы установить новые значения того или иного параметра модели. Структурная организация среды быстрого макетирования делает ее расширяемой системой и позволяет использовать различные протоколы взаимодействия между ее компонентами. Суть работы SIMULINK во внешнем режиме состоит в следующем. После запуска RTW-кода SIMULINK устанавливает начальные значения парамет- ров блоков и выполняет команду обновления блок-диаграммы, после чего перехо- дит в состояние ожидания и остается в нем до тех пор, пока вы не измените параметры блок-диаграммы, либо пока не поступит сообщение от внешней программы. После этого новые значения параметров пересылаются в исполняемую внешнюю програм- му. Значения параметров передаются как ар1ументы МЕХ-файла, который динами- чески вызывается SIMULINK. МЕХ-файл содержит код, реализующий одну сторо- '< ну канала взаимодействия процессов (interprocess communication — IPC). Этот канал, соединяет Simulink-процесс (в рамках которого выполняется МЕХ-файл) с процес- - сом, выполняющим внешнюю программу. МЕХ-файл передает новые значения пара- метров через этот канал во внешнюю программу, которая записывает новые значения параметров в структурную переменную SimSt ruct (структура данных, содержащая -р все данные, имеющие отношение к коду модели). Эти два взаимодействующих процесса могут быть удаленными (выполняться на < разных вычислительных средствах), в этом случае для передачи данных использует- ся протокол связи, или локальными и применять для обмена данными общую память. Рис. 8.56 иллюстрирует работу SIMULINK во внешнем режиме. В общем случае при работе во внешнем режиме нельзя изменять параметры, опреде- ляющие структуру S-модели, в том числе: О число состояний, входов и выходов любого блока: О величину шага модельного времени; О алгоритм интегрирования (расчета состояний) для непрерывных систем;
414 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB О имена модели или любого ее блока; * О параметры блоков Fen (функция). Simulink-процесс Внешний процесс IPC Code Сервер IPC Code Программа реального времени External I'"exFunction Interface МЕХ-файл Канал обмена Рис. 8.56. Робота SIMULINK во внешнем режиме Для перевода SIMULINK во внешний режим необходимо выполнить описанные ниже действия. 1. Выбрать команду External (внешний режим) в меню Simulation (моделирование). 2. Открыть окно Simulation Parameters (параметры моделирования) и перейти на вкладку Solver (расчет), где сделать следующее: • в первом раскрывающемся списке Туре (тип) выбрать вариа! .т fixed-step (фик- сированный шаг); • в поле Fixed step size (величина фиксированного шага) ввести значение 0.01; • очистить поле Stop Time (конечное время), чтобы его значение было установ- лено автоматически; • в поле Deci m ati on (дискретность) ввести значение 1. 3. На вкладке Workspace I/O (обмен с рабочей областью) установить флажки Time (время) и Output (выходные данные). 4. На вкладке Real-Time Workshop (Мастерская реального времени) щелкнуть на кнопке Browse (обзор) и найти файл grttlc (используемый по умолчанию при генерации кода для РС- и UNIX-платформ). 5. Щелкнуть на кнопке Options (параметры) и в окне Code Generation Options (пара- метры генерации кода) установить флажок External mode (внешний режим). «
Робота в Мастерской реального времени 415 ВНИМАНИЕ При работе во внешнем режиме флажок Inline parameters (порометры встраи- вания! на вкладке Real-Time Workshop обязательно должен быть снят, поскольку в этом режиме встраивание кода не поддерживается. Установка параметров работы RTW во внешнем режиме производится с помо- щью нескольких взаимосвязанных диалоговых окон. Чтобы открыть первое из них («корневое»), необходимо в меню Tools (инструменты) окна блок-диаграммы вы- брать команду External Mode Control Panel (панель управления внешним режимом). Окно содержит следующие элементы (рис. 8.57). О Флажок batch download (пакетная загрузка параметров) определяет способ пере- дачи новых значений параметров во внешнюю программу. Если флажок установ- лен, то передача производится только после щелчка на расположенной ниже кнопке Download (загрузить). В противном случае новые значения параметров пе- редаются во внешнюю программу сразу после внесения изменений в блок-диа- грамму. О Кнопка Connect (подключить) инициирует одноименную команду, которая обес- £ печивает логическое подключение хост-компьютера к целевому оборудованию^- Рис, 8.57. Окно настройки параметров RTW ва внешнем режиме О Кнопка Start real-time code (запуск кода реального времени) предназначена для запуска внешней программы, работающей в реальном масштабе времени. О Кнопка Arm trigger (установка триггера) обеспечивает управление регистрацией данных. О Кнопка Target Interface (интерфейс целевого оборудования) открывает диалого- вое окно External Target Interface (внешний интерфейс целевого оборудования), которое позволяет сконфигурировать каналы обмена данными между внешней программой и SIMULINK.
416 Урок 8. Взоимодействие SIMULINK с другими компонентоми MATLAB О Кнопка Signal & triggering (сигналы и управляющие события) открывает диалого- вое окно External Signal & Triggering (внешние сигналы и управляющие события), предназначенное для описания параметров сигналов, которые должны исследо- ваться в ходе моделирования. Соответствующие установки в этом окне должны быть выполнены до начала выполнения программы в реальном времени. О Кнопка Data archiving (архивация данных) открывает диалоговое окно External Data Archiving (внешняя архивация данных), в котором устанавливаются парамет- ры регистрации данных, полученных в процессе работы. Ниже приведена краткая характеристика трех названных диалоговых окон, исполь- зуемых при работе во внешнем режиме. Окно External Target Interface содержит два поля (рис. 8.58): О MEX-file for externalinterface (МЕХ-файл для внешнего интерфейса) — имя исполь- зуемого МЕХ-файла; О MEX-file arguments (аргументы МЕХ-файла) — аргументы, определяющие порядок использования МЕХ-файла (например, номер порта сервера, сетевое имя целе- вого оборудования и т. д.). Рис. 8.58. Диалоговое окна External Target Interface Окно External Signal & Triggering содержит следующие элементы (рис. 8.59). О В список Signal Selection (выборка сигнала) автоматически вносятся все блоки Scope (индикатор), используемые в блок-диаграмме. Блоки Scope, выделенные в этом списке, будут активны при работе модели во внешнем режиме. Чтобы выде- лить элемент в списке, можно либо дважды щелкнуть на его имени, либо щелк- нуть один раз и установить расположенный справа от списка переключатель on (выделен). Выделенные элементы отмечаются символом X в начале строки. Чтобы выделить сразу все элементы списка, или наоборот снять выделение, можно исполь- зовать кнопки Select all (выделить все) и Clear all (очистить все) соответственно; О Кнопка Trigger signal (управляющий сигнал) позволяет указать в списке сигнал, который будет определять, когда следует отображать данные в блоке Scope. В каче- стве такого сигнала может использоваться только такой, который указан в списке Trigger signal, расположенном в группе элементов управления Trigger (триггер). Управ- ляющий («триггерный») сигнал помечается в списке Signal Selection символом Т.
Работа в Мастерской реального времени 417 Рис. 8.59. Диалоговое окно External Signal & Triggering О В группе Trigger (триггер) представлены элементы управления, обеспечивающие задание условий «срабатывания триггера», то есть условий начала и окончания регистрации данных (см. ниже). Прежде чем описывать элементы, содержащиеся в окне External Data Arc hi vi ng, пояс- ним технологию регистрации данных во внешнем режиме. Для этого, в свою очередь, необходимо рассмотреть организацию хранения данных в обычном режиме, когда архивизация не используется. Режим записи данных выбирается в раскрывающем- ся списке Mode (режим), также расположенном в группе элементов управления Trigger (триггер): Q one-shot (пошаговый); О normal (обычный). В пошаговом режиме, после того как управляющее событие произошло, каждый блок Scope записывает свои данные в рабочую область так же, как он делал бы это по окончании сеанса моделирования. При повторном «срабатывании триггера» суще- ствующие данные рабочей области будут переписаны. В обычном режиме триггер автоматически переустанавливается после каждого уп- равляющего события. Следовательно, нормальный режим можно рассматривать как последовательность пошаговых записей. Каждая запись в этой серии, за исключени- ем последней, называется промежуточнымрезулътатом. Поскольку триггер может «сработать» в любое время, запись промежуточных результатов приводит к непред- сказуемой перезаписи переменных в рабочей области. В связи с этим при использо- вании режима регистрации данных, установленного по умолчанию, в рабочей обла- сти имеет смысл сохранять только результаты последней записи. Если же вы знаете, что между двумя соседними «срабатываниями триггера» времени будет достаточно
418 Урок 8. Взаимодействие SIMULINK с другими компонентами MATLAB для просмотра промежуточных результатов, то вы можете разрешить запись проме- жуточных результатов, установив в диалоговом окне External Data Archiving (рис. 8.60) флажок Write to intermediate results to workspace (запись промежуточных результатов в рабочую область). Имейте в виду, что это не защищает данные в рабочей области от перезаписи при последующем «срабатывании триггера». Рис. 8.60. Диалоговое окна Externol Doto Archiving Используя диалоговое окно External Data Archiving, вы можете обеспечить автомати- ческую запись регистрируемых данных (включая промежуточные результаты), на диск. Окно содержит следующие параметры. О Флажок Enable archiving (разрешитьархивацию)разрешаетзаписьданныхпоадресу, указанному в полях Directory (папка) и File (файл). О Флажок Increment directory when trigger armed (увеличить номер папки при срабаты- вании триггера) позволяет автоматически модифицировать имя папки при каж- дом срабатывании триггера. Папки нумеруются по возрастанию с шагом 1, напри- мер di rl, dir2HT. д. О Флажок Increment file after one-shot (увеличить номер файла после очередной записи) используется аналогично предыдущему параметру — очередная порция данных сохраняется в новом файле с модифицированным именем: file 1, fi 1е2 и т. д. Имейте в виду, что это правило выполняется только при установке обычного режима сохранения. О Флажок Append file suffix to variable names (добавить номер файла к имени перемен- ной) предназначен для выбора имен сохраняемых данных: если флажок снят, то во всех файлах с автоматически измененными именами используются переменные с идентичными именами; если же флажок установлен, то в каждом новом файле создается переменная с модифицированным именем. Модификация выполняет- ся так же, как и для файлов — к имени переменной добавляется суффикс, отли- чающийся от предыдущего на 1, например Dat 1, Dat2 и т. д. Более подробное описание работы SIMULINK во внешнем режиме предполагает знание читателем сетевых протоколов (в частности, TCP/IP) и механизма их ис-
Что нового мы узнали? 419 пользования в локальных вычислительных сетях. В связи с этим технические дета- ли реализации внешнего режима в данной книге не рассматриваются. Завершая описание технологии использования Мастерской реального времени, не- обходимо отметить, что в ее состав может быть включена дополнительная компо- нента — RTW Ada Coder, которая обеспечивает формирование программного кода на языке Ada. RTW Ada Coder содержит средства автоматической генерации про- грамм в соответствии со стандартом Ada95. Программный код формируется непо- средственно из Simulink-моделей и может выполняться в реальном времени в целом ряде сред. При этом работа пользователя строится на основе графического интер- фейса, аналогичного рассмотренному выше. то нового мы узнали? 0 Для реализации полного технологического цикла подготовки и обработки резуль- татов модельного эксперимента целесообразно использовать SIMULINK совме стно с набором инструментов Statistics Toolbox (набор инструментов статисти ческого анализа). 0 Основные процедуры статистической обработки и анализа данных (проверк; статистических гипотез, дисперсионный, корреляционный и регрессионный ана лиз) реализованы в наборе Statistics Toolbox на основе графического пользова тельского интерфейса. 0 Последовательность процедур обработки и анализа данных может быть реализо вана в виде М-сценария. Разработка и отладка сценария выполняются с помо щью редактора/отладчика MATLAB. 0 Для описания логики поведения элементов исследуемой системы может прим4 няться аппарат конечных автоматов. Соответствующие компоненты реализую? ся в виде SF-диаграмм с помощью графического редактора потоковых диаграМ! STATEFLOW. 0 На основе блок-диаграммы может быть сгенерирован программный код на одно! из языков высокого уровня С или Ада. Генерация кода выполняется в интеракти! ном режиме средствами специализированной компоненты RTW. При соответ ствующей настройке ее параметров может быть сгенерирован аппаратно-ориег тированный программный код, предназначенный для использования в система реального времени.
Алфавитный указатель A—Z алгебраический корень, 164 анализ Acrobat Reader, 106 Delphi, 102 drag-and-drop, 264 Е-подсистема, 322 Е-сеть, 60 ЕТ-подсистема, 322, 327 F-критерий, 81 F-переход, 61 J-переход, 61 М-сценарий, 372 М-файл, 90, 156, 372, 382 М-функция, 373, 382 MacOS, 91 МАТ-файл, 90, 124 Mdl-файл, 90 МЕХ-файл, 156, 407 МЕХ-функция, 382 Microsoft Internet Explorer, 105 Netscape Communicator, 105 S-модель, 110, 156, 190, 238 S-функция, 156, 407 SF-модель, 387 Stateflow-машина, 387 t-критерий, 80 Т-переход, 61 Т-подсистема, 322, 325 UNIX, 91 Visual Basic, 102 Visual C++, 102 Windows, 91 Х-переход, 61 Y-переход, 62 SF-моделей, 387 корреляционный, 84, 369 регрессионный, 86, 369 результатов моделирования, 363 аналитическая модель, 32 аналитическое моделирование, 24 асинхронный параллельный процесс, 53 Б балансировка модели, 78 белый шум, 124 Бернулли, 32 библиотека DSP Blockset, 202 Simulink, 90, 110 Simulink Extras, ИЗ, 121, 200 Stateflow, ИЗ, 358, 386 Statistics Toolbox, 228, 358, 367 биномиальное распределение, 44 блок Abs, 159 Algebraic Constraint, 164 Backlash, 171 Buffer, 203 Bus Selector, 177 Chart, 396 Clock, 130 Combinatorial Logic, 167, 264, 265, 387, 396 Complex to Magnitude-Angle, 161 Complex to Real-Image, 161 Configurable Subsystem, 185 A Constant, 127, 265, 292, 332 Counter, 222 абсолютная шкала, 19 абсолютное значение, 159 автоматическая имитационная модель, 37 адаптивное поведение, 12 аксиоматические методы, 20 активность, 39 Data Store Memory, 320 Read, 320 Write, 320 Data Type Conversion, 187 Dead Zone, 170 Demux, 181
Алфавитный указатель 421 блок (продолжение) Digital Clock, 130 Discrete Pulse Generator, 128 Discrete-Time Integrator, 152, 296, 297, 303, 323 Display, 127, 141, 266, 275, 287, 292, 296, 302 Distributor, 216 Dot product, 162 Edge Detector, 220 Enable, 322, 326 Event-Count Comparator, 221 Fen, 153, 296 From, 317 File, 131, 284 Workspace, 132. 284, 285 Function-Call Generator, 184 Gain, 163 Goto, 317 Tag Visibility, 317 Histogram, 228 Hit Crossing, 183, 292, 302, 332 In, 254, 284, 311 Integrator, 146 Logical Operator, 166, 294 Look-up Table, 157 (2D), 158 Magnitude-Angle to Complex, 161 Manual Switch, 173 Math Function, 160 MATLAB Fen, 155, 296, 297, 304, 323 Matrix Gain, 164 Maximum, 230 Mean, 231 Median, 233 Memory, 148, 323 Merge, 183 Minimum, 231 MinMax, 160 Model Info, 190 Multiphase Clock, 217 Multiport Switch, 174 Mux, 180, 265, 275 N-Sample Enable, 224 N-Sample Switch, 225 Out, 256, 311, 324 Product, 162 Queue, 211 Random Number, 129 Rate Limiter, 171 Real-Image to Complex, 161 Rebuffer, 206 Relational Operator, 166, 286, 290 Relay, 174 Repeat, 226 Rounding Function, 160 S-function, 156, 407 блок (продолжение) Sample and Hold, 219 Saturation, 172 Scope, 127, 134, 282, 285, 287, 298,- 304, 417 Selector, 182 Shift Register, 208 Sign, 161 Slider Gain, 164 Sort, 233 Stack, 214 Standard Deviation, 233 Step, 125 Stop Simulation, 301 Subsystem, 309, 312, 350 Sum, 161, 286, 303 Switch, 173, 286, 306 To File, 132, 143, 279 To Workspace, 132, 144, 275 Transport Delay, 148, 286, 287 Trigger, 322, 325 Triggered Shift Register, 209 Trigonometric Function, 160 Unbuffer, 205 Uniform Random Number, 129, 289 Unit Delay, 151 Variable Transport Delay, 149 Variance, 234 XYGraph, 139 блоки виртуальные, 197 вспомогательные, 177 для нескольких типов данных, 188 информационные, 117 логического управления, 216 математические, 159 накопители, 202 не виртуальные, 197 общего назначения, 145 общие свойства, 195 ограничители, 172 описания непрерывных систем, 145 переключатели, 173 подсистем, 176 смотровые, 117 сохранения результатов, 134 статистической обработки сигналов, 228 управления сигналами, 175 f условно-виртуальные, 198 функциональные, 117 В ввод из рабочей области, 124, 284 из файла, 124, 284 вектор, 182
422 Алфавитный указатель вероятностная гарантия, 20 вероятность наступления события, 20 отказа, 43 взаимное исключение, 54 взаимодействие процессов, 413 виды параллельных процессов, 53 визуальное моделирование. 90, 110 виртуальные блоки, 197 включатель, 176, 322, 326 включение неактивного сигнала, 224 возбудитель, 124 время изменение по особым состояниям, 50 с постоянным шагом, 48 машинное, 47 модельное, 36, 46 реальное, 47 системное, 47 эталонное, 148 ВС (вычислительная система), 28 встраивание, 410 входной порт, 175, 284, 311 выбор метода моделирования, 53 выборка, 32 случайная, 68 стратифицированная, 72 выходной порт, 175, 311, 324 вычислительная система, 28 выявление предпочтений ЛПР, 18 Г гармонический сигнал, 124 генератор вызова функций, 177 гармонических колебаний, 124 импульсный, 124 кода, 387 линейно возрастающего сигнала, 124 непрерывного сигнала, 124 периодического дискретного сигнала, 124 случайных чисел, 41, 359 гипотеза, 78 гистограмма блок, 228 относительных частот, 41, 79, 364 графический интерфейс, 102 д данные временные, 393 входные, 393 выходные, 393 данные (продолжение) импортируемые, 393 локальные, 393 постоянные, 393 промежуточные, 393 сохраняемые, 393 экспортируемые, 393 движение системы, 26 двумерный график, 134 декомпозиция системы, 29 детектор перехода через нуль, 220 детерминированная система, 27 диаграмма, 396 параллельных процессов, 56 рассеяния, 85 смены состояний, 386 диалоговая имитационная модель, 37 динамика системы, 38 дискретная область перехода, 151 передаточная функция, 151 система, 120, 150 дискретное пространство состояний, 151 дискретный импульсный генератор, 124 сумматор времени, 151, 303, 323 фильтр, 151 дисперсионный анализ многофакторный, 83 однофакторный, 82 дисперсия блок, 234 воспроизводимости эксперимента, 65 длительность, 177 доверительный интервал, 68 ДФЭ (дробный факторный эксперимент), 67, 359 3 задача динамическая, 17 статическая, 17 задержка передачи, 146 сигнала, 151 запись в рабочую область, 134 в файл, 134 данных, 177 заявка на обслуживание, 40 земля, 177 знак, 161 значок, 335
Алфавитный указатель 423 И идентификация факторов, 66 изменение модельного времени, 36 измерение предпочтений, 18 ИМ (имитационная модель), 32, 35, 36 автоматическая, 37 активности, 36 диалоговая, 37 качество, 73 классификация, 34 область применения, 34 определение, 35 подбор параметров распределений, 78 процессы, 36 работы, 36 события, 36 транзакты, 36 имитационное моделирование, 24, 32 имитационный эксперимент, 32 импульсный генератор, 124 индекс блока, 351 индикатор блок, 298, 304 пересечения, 176, 292, 332 свободный, 138 скорости, 117 степени завершенности сеанса моделирования, 115 инструмент визуального моделирования, 110 интегратор, 145 интенсивность возникновения событий, 50 интервал варьирования, 65 Интернет, 89 информация о модели, 177 исследование операции, 10 исход операции, 10 К калибровка модели, 77 канал взаимодействия процессов, 413 качество модели адекватность, 74 устойчивость, 75 чувствительность, 76 КИМС (комплексный моделирующий стенд), 404 классификация имитационных моделей, 34 принятия решений, 15 кластерный анализ, 359 кнопка Always Тор, 112 Autoscale, 135 Clear All Breakpoints, 375 Continue, 375 Copy, 93 Create a new model, 111 Cut, 93 Find Block, 112 Help Window, 93 Library Browser, 114 New M-file, 93 New Model, 114 Open M-file, 93 Model, 114 model, 112 Paste, 93 Path Browser, 93 Print, 135 Model, 114 Properties, 135 Quit Debugging, 375 Redo, 114 Save current axes settings, 135 Save Model, 114 Set/Clear Breakpoint, 375 Simulink Library Browser, 93 Single Step, 375 Start/Pause, 114 Step In, 375 Stop, 114 Undo, 93 Workspace Browser, 93 Zoom, 134 X-axis, 134 Y-axis, 134 код модели, 402 переносимый, 402 реального времени, 403 Колмогоров, 81 команда Data Input from Simulink, 396 Output to Simulink, 397 Edit Break Library Link, 347 Clear Session, 96 Copy, 265 Create Subsystem, 309 Cut, 312 Edit, 265 Font, 273 Look Under Mask, 334 Mask Subsystem, 329, 344 Paste, 312 Select All, 269
424 Алфавитный указатель команда (продолжение) Unlock Library, 348 Update Diagram, 274, 348 File Chart Properties, 399 Load Workspace, 279 New, 110, 238, 285, 347, 374, 403 Open, 374 Preferences, 99 Run Script, 373 Save as, 268, 348 Save Workspace As, 279 Set Path, 96 Show Graphics Property Editor, 103 Show GUI Layout Tool, 103, 362 Show Workspace, 277 Format Font, 270 Screen Color, 314 Wide Vector Lines, 270 Help Help Window, 106 Simulation External, 414 Parameters, 268, 277, 287 Start, 267, 399 Tools Customize, 379 Debug, 402 Explore, 397 External Mode Control Panel, 415 Open Simulation Target, 401 Options, 379 Parse, 399 RTW Build, 407 RTW Options, 407 Run, 379 View Model Browser, 310 команды вывода на печать, 94 для работы с рабочей областью, 94 с файлами, 94 настройки системы, 94, 96 комбинаторика, 167, 264, 387, 396 комплексный моделирующий стенд, 404 константа, 124, 265, 332 конфигурируемая подсистема, 177 концептуальная модель, 25 концепция адаптивного поведения, 12 оптимальности, 12 пригодности, 12 рационального поведения, 12 корреляционный анализ, 84, 369 коэффициент корреляции, 84 регрессии, 86 критерий Колмогорова—Смирнова, 81 пригодности, 20 согласия Пирсона, 81 Уилкоксона, 76 эффективности, 12 Л латинский квадрат, 67 план, 67 линейные модели, 359 логический оператор, 166 ЛПР (лицо, принимающее решение), 10, 12 люфт, 171 м макропозиция аккумулятор, 63 генератор, 62 очередь, 62 максимум, 230 маскированная подсистема, 328 Мастерская реального времени, 115, 358, 403 математическая модель, 14 математические блоки, 159 функции, 160 математическое ожидание, 21 матрица, 144, 257 матричная лаборатория, 89 матричный умножитель, 164 машинное время, 47 МДА (многофакторный дисперсионный анализ), 83 медиана, 233 меню Add, 393 Edit, 92, 240 File, 92, 238 Format, 114, 262 Help, 92 Path, 98 Simulation, 114, 246 Tools, 99 View, 92, 244 Window, 92 метка сигнала, 273
Алфавитный указатель 425 метод генерации случайных чисел, 40 главного показателя, 22 затраты/эффект, 21 интерпретации, 44 комбинаций, 41 композиций, 45 Монте-Карло, 32 наименьших квадратов, 84, 86 нелинейных преобразований, 45 обобщенного показателя, 21 повторения, 70 подинтервалов, 70 понижения дисперсии активный, 70 косвенный, 70 пассивный, 70 последовательных сравнений, 44 постоянного шага, 48 стратифицированной выборки, 72 табличный, 45 трапеций, 152 целевого программирования, 21 циклов, 71 Эйлера обратный, 152 прямой, 152 метрическая шкала, 19 Мили, 395 минимум, 231 МНК (метод наименьших квадратов), 84, 86 многовходовый переключатель, 173 многомерная статистка, 359 многофазные часы, 217 многофакторный дисперсионный анализ, 83 множественная линейная регрессия, 86 моделирование, 13 аналитическое, 24 визуальное, 90, 110 имитационное, 24, 32 конечная цель, 36 математическое, 23 параллельных процессов, 53 по особым состояниям, 36, 50 принцип, 23 результат, 72 с постоянным шагом, 36, 48 сеанс, 37 случайных величин, 44 случайных событий, 43 случайных факторов, 40 теория, 22 технология, 23 этапы, 23 моделируемая система, 33 модель аналитическая, 32 имитационная, 32 калибровка, 77 концептуальная, 25 математическая, 14 Мили, 395 Мура, 395 предпочтений ЛПР, 18 прогон, 33 рабочей нагрузки, 28 сетевая, 58 физическая, 13 модельное время, 36, 46 МОЖ (математическое ожидание), 21 Монте-Карло, 32 мощность множества состояний, 26 Мур, 395 н набор блоков DSP Blockset, 200, 201, 359 Fixed-Point Blockset, 201 Flip Flops, 121 Linearization, 121 Nonlinear Control Blockset, 201 Power System Blockset, 201 Transformations, 121 инструментов ' Signal Processing Toolbox, 200 Statistics Toolbox, 91, 228, 290, 294 специализированных функций, 290 целевых файлов, 406 накопитель, 203 настраиваемый умножитель, 164 настройка блоков, 120 графического интерфейса, 102 системы, 96 насыщение, 172 начальное состояние, 177 не виртуальные блоки, 197 независимый параллельный процесс, 54 нелинейная система, 121, 169 нелинейные модели, 359 неопределенность не стохастическая, 17 поведенческая, 17 природная, 17 стохастическая, 17 непрерывная система, 120, 145 непрерывное множество состояний, 26 номинальная шкала, 19 нормальное распределение, 45
426 Алфавитный указатель О область видимости переменной, 317 применения имитационных моделей, 34 обмен сообщениями, 54 обработка результатов моделирования, 363 обратный метод Эйлера, 152 ограничитель блок, 177 скорости, 171 однофакторный дисперсионный анализ, 82 оператор отношения, 166, 290 операция возможные исходы, 16 исследование, 10 исход, 10 показатель эффективности, 10 рабочая нагрузка, 27 результат, 18 субъект, 10 описательная статистика, 359 оптимальность, 12 оптимизация модели, 78 основа принятия решения, 10 отладка SF-моделей, 398 отладчик блок-диаграмм, 351 оценка безопасности сети, 60 живости переходов сети, 60 параметров, 359 эффективности стратегий, 14 оценочные сети, 60 очередь, 211 п пакет MATLAB графический интерфейс, 102 история, 89 общие сведения, 89 предпочтения, 100 установка, 91 ядро, 91 ярлык, 91 память для данных, 177 панель инструментов библиотеки, 111 блок-диаграммы, 114 индикатора, 134 командного окна, 92 редактора/отладчика, 375 параллельный процесс асинхронный, 53 временная диаграмма, 56 моделирование, 53 параллельный процесс (продолжение) независимый, 54 подчиненный, 54 синхронный, 53 парето-оптималыюсть, 22 пассивная зона, 170 передаточная функция, 145 переключатель, 173, 306 переключение неактивного сигнала, 225 переносимый код, 402 переходы, 391 периодический сигнал, 124 Петри, 58 Пирсон, 81 плавающая задержка передачи, 146 план латинский. 67 рандомизированный, 67 планирование эксперимента раздел, 359 стратегическое, 65 тактическое, 65, 68 цель, 63 поведение системы адаптивное, 12 описание, 38 поведенческая неопределенность, 17 повторитель, 226 поглотитель, 176 подбор параметров, 363 подраздел Buffers, 203 Signal Operations, 226 Statistics, 228 Switches and Counters, 216 подсистема, 176, 309, 312 подчиненный параллельный процесс, 54 показатель среднего результата, 20 эффективности, 10, И, 363 адаптивное поведение, 12 векторный, 16, 18 вероятностная гарантия, 20 вероятность наступления события, 20 виды, 19 выбор, 16 критерий пригодности, 20 оптимальность, 12 пригодность, 12 расчет значений, 25 скалярный, 15, 18 показательное распределение, 45 полный факторный эксперимент, 66, 359 порядковая шкала, 19 ПП (параллельный процесс), 53 ПР (принятие решений), 16 преобразователь, 206
Алфавитный указатель 427 приведение типа данных, 177 пригодность, 12 признак альтернативы, 391 видимости блока передачи, 177, 317 состояния с памятью, 391 пример Advanced Products, 115 Complex models, 115 New in Simulink 2, 115 New in Simulink 3, 115 Simple models, 115 принцип агрегирования, 23 информационной достаточности, 23 множественности моделей, 23 моделирования, 23, 35 осуществимости, 23 параметризации, 23 принятие решения, 9 аксиоматические методы, 20 выявление предпочтений, 18 групповое, 15 динамические задачи, 17 измерение предпочтений, 18 индивидуальное, 15 классификация задач, 15 модель предпочтений, 18 предпочтения, 17 решающее правило, 20 свойство направленности, 18 полноты, 18 статические задачи, 17 условия неопределенности, 16 определенности, 16 эвристические методы, 20 природная неопределенность, 17 проблема достижимости, 60 проблемная ситуация, 17 проверка, 177 независимости, 42 равномерности, 41 статистических гипотез, 366 стохастичности, 41 прогон модели, 33 производная, 145 просмотр библиотеки, 110, 114, 200 модели, 310 рабочей области, 257 файловой системы, 97, 339 пространство состояний, 145 профилирование, 382 профилировщик, 383 процедура перехода, 395 условия, 395 процесс динамические характеристики, 39 определение, 39 параллельный, 53 принятия решений, 9 статические характеристики, 39 прямой метод Эйлера, 152 ПСВ (простая случайная выборка), 69 Пуассон, 32 ПФЭ (полный факторный эксперимент), 66, 359 ПЭ (показатель эффективности), И Р работа, 39 рабочая нагрузка, 28 описание, 27 представительность, 28 системная независимость, 28 совместимость, 28 управляемость, 28 рабочая область, 331 равномерное случайное число, 124, 290 раздел Blocksets & Toolboxes, 201 Cluster Analysis, 359 Continuous, 120, 145 Descriptive Statistics, 359 Design of Experiments, 359 Discrete, 120, 150 Functions & Tables, 120, 152 General DSP, 203, 216, 226 Hypothesis Tests, 359 Linear Models, 359 Math, 121, 159, 264, 290 Math Functions, 228 Multivariate Statistics, 359 Nonlinear, 121, 169 Nonlinear Models, 359 Parameter Estimation, 359 7 Probability Distributions, 359 Random Number Generators, 359 Signals & Systems, 121, 175, 256, 265, 284, 292, 309, 311, 350, 406 Sinks, 121, 132, 133, 266, 275, 301 Sources, 121, 123, 128, 265, 284, 290 Stateflow, 388 Statistical Plots, 359 Statistical Process Control, 359 разделитель, 175 разметка сети Петри, 59 ранговая шкала, 19 рандомизированный план, 67, 361 распределение вероятности, 359 нормальное, 45 показательное, 45
428 Алфавитный указатель распределение (продолжение) Стьюдента, 80 Фишера, 81 распределитель, 216 рассеяние, 233 реальное время, 47 регистр, 145, 323 регрессионный анализ, 86, 369 редактор графического интерфейса пользователя, 346 диаграмм SF-моделей, 387 маски, 329 отладчик, 374 режимы работы отладчика блок- диаграмм, 353 результат операции, 18 реле, 173, 174 ресурсы временные, 10 людские, 10 материальные, 10 решающее правило, 20 решение основа принятия, 10 схема принятия, 9 управляющее, 9 PH (рабочая нагрузка), 28 ручной переключатель, 173 С свертка, 162- свойства блоков, 195 свойство направленности, 18 полноты, 18 сдвиговый регистр, 208 сеанс моделирования, 37 селектор блок, 176 шины, 175 сетевая модель, 58 сеть оценочная, 60 Петри, 58 синтаксический разбор, 399 синхронизация параллельных процессов, 302 процессов, 54 работы компонент модели, 47 синхронный параллельный процесс, 53 система вычислительная, 28 движение, 26 декомпозиция, 29 детерминированная, 27 система (продолжение) динамика, 38 динамическая, 26 дискретная, 120, 150 комбинированная, 9 моделируемая, 33 настройка, 96 нелинейная, 121, 169 непрерывная, 120, 145 организационная, 9 питания, 201 поведение, 38 предпочтений ЛПР, 18 с дискретным временем переходов, 27 с дискретными состояниями, 26 с непрерывным временем переходов, 27 смешанная, 9 событийно-управляемая, 391 справочная, 105 стохастическая, 27 техническая, 9 транзактная, 55 управления, 201 число моделируемых состояний, 29 системное время, 47 системный целевой файл, 406 сложение, 161, 303 случайная величина, 32 выборка, 68 случайное событие, 43 число, 40 случайный фактор, 40 смеситель, 175, 265 Смирнов, 81 событие, 392 входное, 392 выходное, 392 дисциплина обслуживания, 38 изменение состояния, 38 импортируемое, 392 локальное, 392 определение, 38 порядок обработки, 38 следования, 38 условия возникновения, 38 экспортируемое, 392 событийно-управляемая система, 391 событийное моделирование, 358, 388 создание SF-диаграмм, 396 библиотеки блоков, 346 значка подсистемы, 335
Алфавитный указатель создание (продолжение) комплексных моделирующих стендов, 404 подсистем, 309 разделов библиотеки, 350 справочной подсистемы, 343 сценария анализа данных, 372 сообщения об ошибках, 259 сортировка, 233 состояния. 391 список будущих событий, 56 прерываний, 56 текущих событий, 56 справочная система, 105 справочник по функциям MATLAB, 106 среда быстрого макетирования, 413 среднее, 231 средства помощи пользователю, 104 стандартное отклонение, 233 статистика, 228 статистическая гипотеза, 78 статистические графики, 359 статистический эксперимент, 32 стек, 214 стохастическая неопределенность, 17 система, 27 стратегическое планирование эксперимента, 65 стратегия допустимая, 10 оценка эффективности, И парето-оптимальная, 22 сравнение, 13 стратификация, 29 строка заголовка, 92 меню библиотеки, 110 блок-диаграммы, 114, 238 индикатора, 134 командного окна, 92 редактора/отладчика, 374 состояния, 115 структура, 257 библиотеки Simulink, 113 как тип данных, 145 с полем времени, 145, 257 Стьюдент, 80 субъект операции, 10 схема классификации имитационных моделей, 37 принятия решений, 9 сценарий анализа данных, 372 счетчик блок, 222 событий, 221 т таблица истинности, 167, 266 табличный метод, 45 такт, 124 тактическое планирование эксперимента, 65, 68 тег, 317 теорема Бернулли, 32 Пуассона, 32 Чебышева, 32 теория вероятностей, 32 имитационного моделирования, 86 моделирования, 22 отношений, 11 принятия решений, 10 точка останова, 353 '»’ транзакт, 36, 56 алгоритм обработки, 40 определение, 40 J ресурсы системы, 40 ,. , транзактная система, 55 ‘ триггер, 176, 322, 325 . V- триггерная задержка, 219 триггерный сдвиговый регистр, 209 тригонометрические функции, 160 У д': . ' Уилкоксон, 76 I, умножение, 162 умножитель, 163 матричный, 164 настраиваемый, 164 управление внешним режимом, 415 временем, 296 выводом информации об отладке, 35 модельным временем, 46 сеансом моделирования, 300 сигналами, 175 /5 статистическими процессами, 359^ управляемая подсистема, 322 ( управляющее решение, 9 условия, 394 неопределенности, 16 определенности, 16 условно виртуальные блоки, 198 устойчивость модели, 75
430 Алфавитный указатель Ф факторное пространство, 64 факторы взаимосвязь, 82 влияние, 82 вторичные, 66 выбор уровней, 66 идентификация, 66 первичные, 66 физическая модель, 13 Фишер, 81 формат FIFO, 211 HTML, 105 LIFO, 214 Matrix, 253 PDF, 105 Per-Port Structures, 254 Structure, 254 Structure with time, 254 Time Expression, 254 фрейм, 203 функция, 152 математическая, 160 округления, 160 тригонометрическая, 160 X хост-компьютер, 404 ц цвет вывода точек, 369 текста, 375 экрана, 314 целевое оборудование, 405 программное обеспечение, 405 целевой программный код, 402 целевые свойства адекватность, 74 устойчивость, 74 чувствительность, 74 центр плана, 65 цифровая обработка сигналов, 201 цифровые часы, 124 ч частичный факторный эксперимент, 67, 359 частотное распределение, 228 Чебышев, 32 чтение данных, 177 ЧФЭ (частичный факторный эксперимент), 67, 359 ш шкала абсолютная, 19 измерений, 18 интервалов, 19 метрическая, 19 наименований, 19 номинальная, 19 отношений, 19 порядковая, 19 ранговая, 19 э эвристические методы, 20 экран, 266, 275 эксперимент дробный факторный, 67 имитационный, 32 полный факторный, 66 статистический, 32 стратегическое планирование, 65 тактическое планирование, 68 частичный факторный, 67 экстремальный, 37 экстраполятор нулевого порядка, 151 первого порядка, 151 экстремальный эксперимент, 37 элементарные функции, 159 эталонное время, 148, 290, 326, 410 эффективность критерий, 12 показатель, 12 Я ядро системы, 91 язык моделирования, 55 программирования, 89 процедур, 395 процессно-ориентированный, 55 реального времени, 55
Книжный клуб «Профессионал» существует уже больше года. Он объеди- няет энтузиастов своего дела, для которых девиз «От знаний — к опыту, от опыта — к мастерству» никогда не потеряет своей актуальности. Издательский Дом «Питер» выпускает литературу, адресованную тем, кто серьезно занимается компьютерной техникой и программированием, медици- ной и психологией, экономикой и предпринимательством. И новичок, и опытный специалист найдут здесь книги, необходимые для работы, учебы и профессиональ- ного роста. Для вступления в клуб достаточно заказать книги на сумму не менее 500 рублей в течение любого времени. ДЛЯ ЧЛЕНОВ КЛУБА: • Члены клуба получают бесплатно ежеквартальный альманах «Книжный клуб “Профессионал”» с информацией о новинках издательства. • Члены клуба должны выкупать каждые три месяца книги на сумму не менее 250 рублей. • Члены клуба получают СКИДКУ 10 % на всю приобретаемую литературу. Вы можете заказать бесплатный альманах профессиональной литературы Издательского дома «Питер». ПЗДАТЕЛЬСКПП ДОМ