Ю.С. Слепокуров
MATLAB 5. АНАЛИЗ ТЕХНИЧЕСКИХ СИСТЕМ Учебное пособие
2001 МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИ...
173 downloads
958 Views
3MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Ю.С. Слепокуров
MATLAB 5. АНАЛИЗ ТЕХНИЧЕСКИХ СИСТЕМ Учебное пособие
2001 МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Воронежский государственный технический университет
Ю.С. Слепокуров
MATLAB 5. АНАЛИЗ ТЕХНИЧЕСКИХ СИСТЕМ Учебное пособие
2001
УДК 681.142.2 Слепокуров Ю.С. MATLAB 5. Анализ технических систем. Воронеж: Изд-во ВГТУ, 2001. 167 с. В учебном пособии изложены основные операторы системы инженерных и научных расчетов MATLAB, которые позволяют производить сложные математические и инженерные расчеты с получением результатов в графическом виде, а также операторы пакета Symbolic Toolbox, реализующие символьные вычисления. Приведено описание принципов работы с пакетом визуального моделирования SIMULINK, дано краткое описание библиотек стандартных блоков. Рассмотрен базовый набор операторов пакета Control System Toolbox, знание которых позволит произвести грамотный анализ динамических и частотных свойств технических систем любой сложности. Предназначено для студентов специальности 210300 «Роботы и робототехнические системы», изучающих курсы «Информатика», «Основы моделирования и САПР» и «Теория автоматического управления». Будет полезна студентам других специальностей, в программе обучения которых имеются подобные дисциплины. Ил. 45. Библиогр.: 6 назв. Научный редактор док. техн. наук, профессор А.И. Шиянов Рецензенты: кафедра электротехники воронежского государственного аграрного университета, зав. кафедрой канд. техн. наук В.В. Картавцев государственного аграрного университета; В. М. Попов Печатается по решению редакционно-издательского совета Воронежского государственного технического университета © Слепокуров Ю.С.., 2001 © Оформление. Издательство Воронежского государственного технического университета, 2001
ПРЕДИСЛОВИЕ Это учебное пособие предназначено для тех, кто занимается решением проблем и задач, связанных, прежде всего, с теорией автоматического управления. Язык, используемый в системе MATLAB, можно сравнить с языком BASIC по простоте его применения и принципу непосредственного исполнения (интерпретации). Ориентация MATLAB на работу с массивами делает его удобным и естественным инструментом обработки экспериментальных данных. Наличие системы SIMULINK, предназначенной для построения математических моделей объектов в виде структур, и специальных функций для анализа и синтеза этих моделей позволяет легко и просто использовать MATLAB в качестве лабораторного инструмента при изучении таких курсов, как теория автоматического управления, моделирование роботов и РТК, проектирование роботов и РТК и др. Разумеется, далеко не все возможности системы MATLAB описаны в данном пособии. То же следует сказать и о рассмотренных встроенных пакетах: SIMULINK, Control System Toolbox, Symbolic Toolbox. Это связано с тем, что MATLAB является системой, ориентированной на широкий круг научных задач, возникающих в физике, химии, и других прикладных сферах. Здесь же представлен тот круг операторов и функций, которые автор определил в качестве необходимого минимума для освоения системы MATLAB, надеясь, что это поможет студентам в решении широкого круга задач, возникающих при изучении ряда дисциплин, а также в ходе дипломного проектирования. Автор будет благодарен всем, кто выскажет свои замечания по содержанию пособия и пожелания по его дальнейшему расширению и совершенствованию.
ВВЕДЕНИЕ Система MATLAB разработана фирмой The MathWorks, Inc. ( США, г. Нейтик, шт. Массачусетс) и является интерактивной системой для выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных. Система использует математический сопроцессор и допускает возможность обращения к программам, написанным на языках FORTRAN, C и C++. Система поддерживает выполнение операций с векторами, матрицами и массивами данных, алгебраическими полиномами, реализует решение нелинейных уравнений, задач оптимизации, интегрирование в квадратурах, решение дифференциальных и разностных уравнений, построение различных видов графиков, трехмерных поверхностей и линий уровня. В системе реализована удобная операционная среда, которая позволяет формулировать проблемы и получать решения в привычной для пользователя математической форме, не прибегая к рутинному программированию. Основным объектом системы MATLAB является прямоугольный числовой массив, допускающий комплексные элементы и ввод матриц без явного указания их размеров. Система позволяет решать многие вычислительные задачи за значительно более короткое время, чем то, которое потребовалось бы для написания соответствующих программ на языках программирования BASIC, PASCAL или С. Написанная на языке С система MATLAB – это в полной мере интегрированная система, которая включает графику, программируемые макроопределения, реализацию стандарта IEEE-арифметики, быстродействующий интерпретатор. Система MATLAB используется более чем в 70 ведущих институтах мира, в том числе, Стэндфордском, Калифорнийском, Кембриджском (Англия), Эйндховенском техническом университете (Нидерланды), университете Киото (Япония); Массачусетском, Калифорнийском, Хельсинкском технологических институтах; научно-исследовательских центрах – НАСА, а также в таких крупных промышленных компаниях, как Aerospace Corporation, Boeing Aerospace, General Dynamics Corporation, IBM Corporation, Lockheed, Siemens AG и др. В настоящее время существует две основных версии системы MATLAB – 5.2 и 5.3. Обе Версии ориентированы на рабочие станции и поддерживают в среде Windows операционные системы Windows 95, Windows 98 и Windows NT. Операционная среда системы MATLAB 5 − это множество интерфейсов, которые поддерживают связь этой системы с внешним миром. Это диалог с пользователем через командную строку или графический интерфейс, просмотр рабочей области и путей доступа, редактор и отладчик М-файлов, работа с файлами и оболочкой DOS, экспорт и импорт данных, интерактивный доступ к справочной информации, динамическое взаимодействие с внешними системами Microsoft Word. Excel Microsoft Word, Excel и др.
Реализуются эти интерфейсы через командное окно, инструментальную панель, системы просмотра рабочей области и путей доступа, редактор/отладчик М-файлов, специальные меню и т. п. Базовые программные средства системы MATLAB: Control System Toolbox. Набор алгоритмов MATLAB для моделирования, анализа и проектирования систем автоматического управления. Функции пакета включают наиболее традиционные методы передаточных функций и современные методы пространства состояний. С помощью пакета можно моделировать и анализировать как непрерывные, так и дискретные системы; Frequency Domain System Identification. Пакет предоставляет специализированные средства для идентификации линейных динамических систем по их временному или частотному отклику. Частотные методы направлены на идентификацию непрерывных систем, что является мощным дополнением к традиционной дискретной методике. Методы пакета могут быть применены к таким задачам, как моделирование электрических, механических и акустических систем; Fuzzy Logic Toolbox. Обладает простым и хорошо продуманным интерфейсом, позволяющим легко проектировать и диагностировать нечеткие модели. Обеспечивается поддержка современных методов нечеткой кластеризации и адаптивные нечеткие нейронные сети. Графические средства пакета позволяют интерактивно отслеживать особенности поведения системы; Higher-Order Spectral Analysis Toolbox. Пакет содержит специальные алгоритмы для анализа сигналов с использованием моментов высшего порядка. Предоставляет широкие возможности для анализа негауссовых сигналов; Image Processing Toolbox. Широкий спектр средств для цифровой обработки и анализа изображений; LMI Control Toolbox. Пакет обеспечивает интегрированную среду для постановки и решения задач линейного программирования; Model Predictive Control Toolbox. Полный набор средств для реализации стратегии предиктивного управления. Эта стратегия была разработана для решения практических задач управления сложными многоканальными процессами при наличии ограничений на переменные состояния и управления. Методы предиктивного управления используются в химической промышленности и для управления другими непрерывными процессами; µ-Analysis and Synthesis Toolbox. Пакет содержит функции для проектирования устойчивых систем управления. Использует оптимизацию в равномерной норме и сингулярный параметр µ;
NAG® Foundation Toolbox. Содержит более 240 функций, охватывающих оптимизацию, ОДУ и уравнения в частных производных, квадратуры и статистику; Neural Network Toolbox. Пакет для работы с нейронными сетями. Обеспечивает поддержку проектирования, обучения и моделирования множества известных сетевых парадигм, от базовых моделей персептрона до самых современных ассоциативных и самоорганизующихся сетей; Communications Toolbox. Полный набор возможностей для разработки, анализа и тестирования моделей цифровых и аналоговых систем и устройств связи и передачи информации. Пакет содержит более 100 функций и примерно 150 блоков SIMULINK для разработки и моделирования таких систем, как устройства радиосвязи, модемы и устройства для хранения информации; Optimization Toolbox. Пакет включает программы широко известных методов минимизации и максимизации линейных и нелинейных функций. Эти программы могут быть использованы для решения сложных задач оптимизации стоимости, надежности и качества для различных приложений; Partial Differential Equation Toolbox. Содержит средства для исследования и решения нестационарных дифференциальных уравнений второго порядка в частных производных. В пакете используется метод конечных элементов; Robust Control Toolbox. Пакет включает в себя средства для проектирования и анализа многопараметрических систем управления, устойчивость которых имеет существенное значение. Среди таких систем могут быть системы с модельными ошибками, динамика которых известна не полностью, или параметры которых могут изменяться в ходе моделирования. Алгоритмы пакета позволяют выполнять сложные вычисления, принимая во внимание изменения множества параметров; QFT Control Design Toolbox (Quantitative feedback theory). Пакет содержит функции для создания робастных систем с обратной связью. QFT – это инженерный метод, использующий частотное представление моделей для удовлетворения различных требований к качеству при наличии неопределенных характеристик у объекта. В основе метода лежит наблюдение, что обратная связь необходима в тех случаях, когда некоторые характеристики объекта неопределенны или на его вход подаются неизвестные возмущения; Signal Processing Toolbox. Пакет обеспечивает широкие возможности по созданию программ обработки сигналов для научных и технических приложений. В пакете используется разнообразная техника фильтрации и новейшие алгоритмы спектрального анализа;
Spline Toolbox. Используется для представления экспериментальных функций на больших интервалах, где аппроксимация единым полиномом невозможна; Symbolic Math Toolboxes. Пакет включает в себя вычислительное ядро системы Maple V Release 4 и позволяет пользоваться символьной математикой и вычислениями с плавающей точкой; System Identification Toolbox. Содержит инструменты для создания математических моделей динамических систем на основе наблюдаемых входных/выходных данных. Пакет снабжен графическим интерфейсом, помогающим организовать данные и создавать модели; SIMULINK. Это интерактивная среда для моделирования и анализа широкого класса динамических систем. Представляет пользователю графический интерфейс для конструирования моделей из стандартных блоков при помощи технологии “drag-and-drop”. Обширная библиотека блоков позволяет быстро моделировать различные системы без написания специальных программ; MATLAB Compiler. С помощью этого пакета можно генерировать оптимизированный С и С++ код для М-файлов. Транслируя код MATLAB на С и С++ компилятор существенно ускоряет работу приложения; MATLAB C Math Library. Библиотека предоставляет пользователю набор объектных модулей MATLAB для выполнения наиболее употребительных математических алгоритмов для численных расчетов и процедур для анализа данных. Пользователь может применять эту библиотеку совместно с MATLAB Compiler для создания процедур MATLAB, работающих в каких-либо внешних приложениях; MATLAB C++ Math Library. Эта библиотека позволяет вставлять мощные подпрограммы численных расчетов MATLAB в приложения, написанный на С++. Предназначена для создания автономных приложений, которые требуют использования мощных математических функций MATLAB; Excel Link. Программное средство для создания интерфейса связи с популярными табличными процессорами класса Excel 5.0 и выше, созданными фирмой Microsoft Inc. для офисных комплексов Microsoft Office. Обеспечивается простая связь между MATLAB и Excel, двухсторонний обмен данными, просмотр, редактирование и обработка данных из среды MATLAB в Excel, подготовка Excel-приложений и др.
1. КОМАНДЫ БАЗОВОЙ СИСТЕМЫ 1.1. Командное окно системы MATLAB После запуска программы MATLAB открывается командное окно. Инструментальная панель командного окна системы МАТ1АВ позволяет обеспечить простой доступ к операциям над М-файлами (рис. 1.1).
Рис. 1.1 Эти операции включают: создание нового М-файла (New File); открытие существующего М-файла (Open File); удаление фрагмента (Cut); копирование фрагмента (Copy); вставку фрагмента (Paste); отмену последней выполненной операции (Undo); просмотр рабочей области (Workspace Browser); просмотр путей доступа (Path Browser); создание новой модели Simulink текущую помощь (Help). 1.2. Управление переменными и рабочей средой
who, whos
Вывод списков текущих переменных
Рабочая область системы MATLAB - это область памяти, в которой размещены переменные системы. Содержимое этой области можно просмотреть из командной строки с помощью команд who и whos. Команда who выводит только имена переменных, а команда whos - информацию о размерах массивов и типе переменной, а также, в отдельной строке, информацию об общем количестве элементов в рабочей области и объеме используемой памяти. Команды who global и whos global выводят списки глобальных переменных рабочей области. Рассмотрим в качестве примера пять массивов различного типа:
А - трехмерный массив чисел удвоенной точности; В - массив разреженной структуры; С - массив ячеек; S – массив символов; patient - массив записей. whos Name Size Bytes Class A double array 4×3×2 192 В 212 sparse array 4×4 С cell array 4×3×2 2400 S 128 char array 4×16 patient 1×2 В40 struct array Grand total is 194 elements using 3772 bytes Специальное средство просмотра Workspace Browser обеспечивает представление команды whos в виде графического интерфейса.
save, load
Загрузка и сохранение рабочей области
Команды save и load позволяют в любой момент времени сохранить содержимое рабочей области или загрузить новые данные в процессе сеанса работы, С помощью этих команд можно также осуществлять экспорт и импорт ASCII-фаилов. Сохранение переменных рабочей области. Команда save позволяет сохранить содержимое рабочей области в двоичном МАТ-файле, который можно в дальнейшем вызвать командой load. Команда save также доступна в качестве опции Save Workspace меню File. Спецификация формата файла. Для того чтобы управлять форматами файлов, следует в команде save в дополнение к имени файла и списку переменных следующие флаги: флаг -mat -ascii -ascii -double -ascii -double -tabs -v4 -append
Пояснение Двоичный МАТ-файл (по умолчанию) ASCII-формат (8 цифр) ASCII-формат (16 цифр) Формат с разделителями и метками табуляции Формат версии MATLAB 4 Добавить данные к существующему МАТ-файлу
При использовании флага v4 можно сохранить только те данные, которые совместимы с данными, используемыми в версии MATLAB 4; это означает, что
сохранить такие типы данных, как массивы записей, ячеек, многомерные массивы или объекты, нельзя. Когда содержимое рабочей области сохраняется в ASCIl-формате, то рекомендуется единовременно сохранять только одну переменную. Если сохраняется более одной переменной, то система MATLAB создаст файл ASCII-файл, который нельзя будет в дальнейшем загрузить в MATLAB. Загрузка рабочей области. Команда load позволяет загрузить МАТфайл, который был ранее сохранен с помощью команды save. При загрузке МАТ-файла новые значения одноименных переменных замещают старые. Если МАТ-файл имеет расширение, отличающееся от -mat, то необходимо использовать флаг -mat; в противном случае MATLAB будет считать форматом файла ASCII-формат. Загрузка файлов данных в ASCIl-формате. Команда load позволяет выполнять импорт файлов данных в ASCIl-формате; она преобразовывает содержимое файла в переменную с именем файла, только без расширения. Например, применение команды load tides.dat создает в рабочей области системы MATLAB переменную с именем tides. Если исходный файл в ASCIIформате имеет m строк с n значениями в каждой строке, то результатом будет массив чисел размера m×n.
clear
Освобождение области памяти
Синтаксис: clear − удаляет все переменные из рабочей области; clear Х − удаляет переменную или функцию с именем Х из рабочей области. Если Х глобальная переменная, то команда удаляет переменную Х из текущей рабочей области, но оставляет ее доступной для любой функции, где эта переменная объявлена глобальной; clear function − удаляет из рабочей области все используемые М-функции; clear all − удаляет переменные, функции и группы МЕХ-файлов; clear global − удаляет все глобальные переменные.
раск
Дефрагментация рабочей области памяти
Команда pack выполняет сборку “мусора”, то есть сохраняет все переменные на диске, очищает память и затем вновь загружает переменные с диска. Необходимость использования этой команды возникает при продолжительной работе в системе, когда в результате фрагментации памяти затрудняется работа с переменными большой длины.
clc
Очистка командного окна
Команда clc очищает командное окно и возвращает курсор в левый верхний угол экрана. 1.3. Импорт и экспорт данных Существует много приемов для перемещения данных между системой MATLAB и другими приложениями. В большинстве случаев при работе с данными системы MATLAB можно просто использовать команды чтения и записи файлов. Для более сложных наборов данных можно создать собственные программы на языке С. Импортирование данных в систему MATLAB. Существует несколько способов для передачи данных из других приложений в систему MATLAB. Выбор способа зависит от объема и формата данных. Ввод данных в виде списка. Если количество данных невелико, то их можно просто напечатал», помещая в квадратные скобки. Этот метод неудобен при большом количестве данных, поскольку их невозможно редактировать. Формирование данных в М-файле. Используя текстовый редактор, можно сформировать М-файл, в котором данные представлены как список элементов. По существу, это тот же первый способ, но он имеет то преимущество, что позволяет с помощью редактора корректировать данные. Достаточно после исправления перезапустить М-файл, чтобы ввести исправленные данные. Загрузка данных из ASCII-файла. ASCII-файлы накапливают данные в 7-разрядном коде без контроля по четности. Каждая строка содержит одинаковое количество значений, разделенных пробелами, и завершается символом возврата каретки. Эти файлы можно редактировать, используя обычный текстовый редактор. Их можно читать непосредственно в системе MATLAB, используя функцию load. При этом создается переменная, имя которой совпадает с именем файла. Можно воспользоваться функций dimread, чтобы указать другой тип разделителя. Чтение данных с использованием функций ввода/вывода. Применение функций ввода/вывода, а также функций fopen и fread, полезно при загрузке файлов данных из других приложений, использующих специальные форматы данных. Использование специальных средств для чтения файлов. Для чтения файлов, записанных в специальных форматах, и системе MATLAB имеются следующие специализированные функции: Функция Назначение dimread Чтение ASCII-файлов whiread Чтение электронных таблиц в формате WK1 imread Чтение изображения из графического файла wavread Чтение звукового файла с расширением .wav Экспортирование данных из системы MАТLАВ. Существует несколько способов для передачи данных из системы MATLAB в другие приложения.
Использование команды diary. При работе с массивами небольших размеров можно применять команду diary, чтобы создать файл дневника, который включает команды MATLAB, используемые в течение сеанса работы, а также позволяет просмотреть на экране необходимые данные. Записи дневника могут быть полезны для вложения в документы или отчеты. В дальнейшем можно применять текстовый редактор для редактирования дневника. Сохранение данных в формате ASCII. Команда save с опцией -ascii позволяет записать данные в этом формате, причем, используя команду dimwrite, можно задать другой тип разделителя. Использование специальных средств для записи файлов. Для записи файлов в специальных форматах, определяемых приложениями, в системе MATLAB имеются следующие специализированные функции: Функция dimwrile wk1write imwrite auwrite
Назначение
Запись данных в ASCII-файл Запись данных в электронную таблицу а формате WK1 Запись изображения в графический файл Запись данных в звуковой файл с расширением .au (формат фирмы SUN Microsystems) wavwrite Запись данных в звуковой файл с расширением .wav (формат фирмы Microsoft) 1.4. Операторы, константы, служебные переменные
Язык MATLAB – это язык операторов. Операторы, вводимые пользователем в командной строке, исполняются системой MATLAB в режиме интерпретации. Операторы имеют две формы записи: с явным присваиванием: переменная = выражение; с неявным присваиванием: выражение. Операторы состоят из специальных символов, имен функций и переменных, а также числовых констант и могут оканчиваться запятой или точкой с запятой, которые управляют выводом результата на экран. Для изменения стандартного порядка выполнения операций используются круглые скобки (квадратные скобки используются для задания элементов массива переменных). Результат вычисления выражения присваивается заданной переменной в левой части от знака равенства для дальнейшего использования и, если после выражения не стоит точка с запятой, выводится на экран. При записи нескольких операторов в одной строке следует использовать разделители.
При использовании операторов с неявным присваиванием система MATLAB автоматически создает переменную с именем ans и присваивает ей значение результата. Переменная ans сохраняет значение результата выполнения только последнего оператора с неявным присваиванием. Длина буфера командной строки ограничена 256 символами. Если оператор настолько сложен, что полностью не помещается на одной строке, то следует ввести несколько точек (не менее двух), нажать клавишу ENTER и продолжить ввод оператора в следующей строке. Вычисления в системе MATLAB ведутся в поле вещественных и комплексных чисел с двойной точностью. Операторы системы MATLAB делятся на 3 категории: арифметические операторы позволяют конструировать арифметические выражения и выполнять числовые вычисления; операторы отношения - позволяют сравнивать числовые операнды; логические операторы – позволяют строить логические выражения. Логические операторы имеют самый низкий приоритет относительно операторов отношения и арифметических операторов.
+-*/\^‘
Арифметические операторы
При работе с массивом чисел установлены следующие уровни приоритета среди арифметических операций: уровень 1: Поэлементное транспонирование (.’), поэлементное возведение в степень (.^), эрмитово сопряженное транспонирование матрицы (‘), возведение матрицы в степень (^); уровень 2: Унарное сложение (+), унарное вычитание (-); уровень 3: Умножение массивов (.*), правое деление (./), левое деление массивов (.\), умножение матриц (*), решение систем линейных уравнений - операция (/), операция (\); уровень 4: сложение (+), вычитание (-); уровень 5: оператор формирования массивов (:). Внутри каждого уровня операторы имеют равный приоритет и вычисляются в порядке следования слева направо. Заданный по умолчанию порядок следования может быть изменен с помощью круглых скобок. Арифметические операторы системы MATLAB работают, как правило, с массивами одинаковых размеров. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением единственного случая, когда один из них - скаляр. Если один из операндов скалярный, а другой нет. в системе MATLAB принято, что скаляр расширяется до размеров
второго операнда и заданная операция применяется к каждому элементу. Такая операция называется расширением скаляра.
< >= ~= = =
Операторы отношения
В системе MATLAB определено 6 следующих операторов отношения: < >= == ~=
меньше; меньше иди равно; больше; больше или равно; равно тождественно; не равно.
Операторы отношения выполняют поэлементное сравнение двух массивов равных размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В этом случае MATLAB сравнивает скаляр с .каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0. Операторы отношения, как правило, применяются для изменения последовательности выполнения операторов программы. Поэтому они чаще всего используются в теле операторов if, for, while, switch. Операторы отношения всегда выполняются поэлементно. Операции сравнения = используют для сравнения только действительной части комплексных чисел; операции = =, ~= осуществляют сравнение как действительных, так и мнимых частей.
& | ~
Логические операции
В состав логических операторов системы MATLAB входят следующие операторы: & И; | ИЛИ; ~ НЕ. Логические операторы реализуют поэлементное сравнение массивов одинаковых размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В последнем случае MATLAB сравнивает скаляр с каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0. Каждому логическому оператору соответствует некоторый набор условий, которые определяют результат логического выражения:
Логическое выражение с оператором AND (&) является истинным, если оба операнда истинны. Если элементами логического выражения являются числа, то выражение истинно, если оба операнда отличны от нуля. Логическое выражение с оператором OR (|) является истинным, если один из операндов или оба операнда логически истинны. Выражение ложно, только если оба операнда логически ложны. Если элементами логического выражения являются числа, то выражение ложно, если оба операнда равны нулю. Логическое выражение с оператором NOT (~) строит отрицание. Результат логически ложен, если операнд истинен, и истинен, если операнд ложен. Если элементами логического выражения являются числа, то любой операнд, отличный от нуля, становится нулем, и любой нулевой операнд становится единицей.
xor, all, any, isnan, isinf
Логические функции
В дополнение к логическим операторам в состав системы MATLAB включен ряд логических функций: хоr(а, b) − реализует операцию ИСКЛЮЧИТЕЛЬНОЕ ИЛИ. Выражение, содержащее ИСКЛЮЧИТЕЛЬНОЕ ИЛИ истинно, если один из операндов имеет значение TRUE, а другой - FALSE. Для числовых выражений функция возвращает 1, если один из операндов отличен от нуля, а другой – 0; all − возвращает 1, если все элементы вектора истинны или отличны от нуля; any − возвращает 1, если хотя бы один из элементов аргумента отличен от нуля; иначе возвращается 0. В случае обработки массивов функция any является столбцовоориентированной; isnan и isinf − возвращают 1 если аргументом функции являются переменные, имеющие значения соответственно в NaN и Inf; isfinite − истинна только для величин, которые не имеют значений inf или NaN (т.е. истинна для всех числовых значений аргумента). Допустимо использование функций И, ИЛИ и НЕ в явном виде : and, or, not. Аргументами логических операторов могут быть числа и строки, при этом за 1 принимается любое числовое значение, отличное от 0. Полный список логических функций системы MATLAB содержится в каталоге ops.
[] () = ‘ . , ; : % !
Специальные символы
[]
Квадратные скобки
()
Круглые скобки
=
Знак присваивания
‘
Транспонировани Транспонирование, сопровождаемое е матриц комплексным сопряжением для комплексных матриц Разделитель Десятичная точка; поэлементное выполнение операций над точка массивом данных Переход по дереву каталогов на один уровень вверх Признак продолжения строки Разделитель – Указание индексов элемента вектора, запятая матрицы, массива; отделение операторов языка MATLAB Разделитель – Отделение строк матриц или массивов; подавление вывода на экран результатов точка с запятой вычислений Разделитель – Заголовок цикла for; двоеточие формирование векторов, выделение строк, столбцов подблоков массива Указатель Указатель логического конца строки. Следующий за ним текст игнорируется (является комментарием) Указатель Является указателем ввода команды DOS
. .. … , ; : % !
Формирование векторов и матриц; указание последовательности выходных параметров при обращении к функциям, возвращающим более одного параметра Указание порядка выполнения операций в арифметических выражениях; указание индексов элемента вектора, матрицы, массива; указание последовательности входных параметров функции Знак присваивания в арифметических выражениях
i или j
Мнимая единица
Константам i и j первоначально присваивается значение, равное sqrt(-1). Они используются для ввода комплексных чисел. Числа 3+2i, 3+2*i, 3+2j представляют одно и тоже комплексное число.
inf
Бесконечность
Inf – специальная переменная, позволяющая фиксировать переполнение разрядной сетки ЭВМ. Этот механизм очень редко предоставляется пользователю для работы, однако в системе MATLAB это обеспечено благодаря возможностям арифметического сопроцессора. Например, при выполнении деления на нуль машина выдаст сообщение Warning: Divide by zero ans = Inf.
NaN
Нечисловое значение
NaN – специальная переменная, принятая в стандарте IEEE-арифметики, которая позволяет фиксировать результат, не представимый в виде числа. Следующие операции имеют результат в виде переменной NaN: умножение вида 0*Inf; деление вида 0/0 и Inf/Inf; сложение и вычитание бесконечностей, например (+Inf) – (-Inf); вычисление функций остатка rem(x, y) для y = 0 или x = Inf; любые арифметические операции с переменной NaN.
pi
Число π (3.1415926535897…) Константа, рассчитываемая по одной из формул: pi = 4*atan(1) = imag(log(-1)) = 3.1415926535897…
eps
Машинная точность
Переменная eps определяет относительную точность операций с плавающей точкой, которая часто используется для оценки сходимости итерационных методов. Машинная точность eps – это наименьшее число, для которого на данной ЭВМ выполняется соотношение 1.0 + eps > 1.0. Стандартное значение этой переменной составляет 2.220446e-016. Пользователь имеет право назначить этой специальной переменной любое значение, включая 0.
realmax, realmin
Наименьшее и наибольшее положительные числа с плавающей точкой
realmax – наибольшее число с плавающей точкой для данного компьютера; любое большее значение соответствует переменной Inf. realmin – наименьшее нормализованное положительное число с плавающей точкой для данного компьютера. Стандартные значения этих констант соответственно равны: Realmax = 1.797693134862316е+308; Realmin = 2.225073858507202е-308.
find
Поиск индексов и значений элементов массива по заданному условию
Функция find определяет индексы элементов массива, которые удовлетворяют заданному логическому условию. Как правило, она используется с целью создания шаблонов для сравнения и образования массивов индексов. В наиболее употребительной форме функция к = find(x ) возвращает вектор индексов тех элементов, которые удовлетворяют заданному условию, А = magic(4) А= 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 k = find(A > 8); A(k) = 100 100 2 3 5 100 100 100 7 6 4 100 100
100 8 100 1
Функция вида [i, j] = find(x) позволяет получить индексы ненулевых элементов прямоугольного массива. Функция вида [i, j. s] = find(x) возвращает, кроме того, и их значения в виде вектора s.
1. 5. Элементарные математические функции Элементарные математические функции, пожалуй, наиболее известный класс функций системы MATLAB. Поэтому, не останавливаясь подробно на их описании, представим перечень имеющихся функций. sin sinh asin asinh cos cosh acos acosh tan tanh atan atan2 atanh sec sech asec asech csc csch acsc acsch cot coth acot acoth log log10 log2 pow2 sqrt abs angle conjugate imag real fix floor
синус гиперболический синус арксинус гиперболический арксинус косинус гиперболический косинус арккосинус гиперболический арккосинус тангенс гиперболический тангенс арктангенс арктангенс вещественных частей двух векторов гиперболический арктангенс секанс гиперболический секанс арксеканс гиперболический арксеканс косеканс гиперболический косеканс арккосеканс гиперболический арккосеканс котангенс гиперболический котангенс арккотангенс гиперболический арккотангенс натуральный логарифм логарифм по основанию 10 логарифм по основанию 2 2 в степени аргумента функции корень квадратный модуль аргумента (в том числе и комплексного) значение фазы комплексного аргумента комлексно-сопряженное значение комплексного аргумента мнимая часть комплексного аргумента действительная часть комплексного аргумента округление аргумента в сторону “0” округление аргумента в сторону − ∞
ceil round mod rem sign
округление аргумента в сторону + ∞ округление аргумента до ближайшего целого значения остаток от деления “знаковый” остаток от деления знак аргумента
1.6. Ввод и преобразование матричных переменных Поскольку MATLAB – матрично-ориентированная система, то необходимо отметить, как она выполняет основные операции над векторами и матрицами. Прежде всего необходимо отметить, что вектор рассматривается как вырожденная в одну строку или один столбец матрица. Обычная переменная – это матрица размером 1×1. Например, если задано Х = 1, то это значит, что Х есть вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения надо перечислить в квадратных скобках, разделяя пробелами: N = [1 2 3]. Задание матрицы требует указания различных строк. Для различения строк используется знак “ ; ” (точка с запятой): M = [1 2 3; 4 5 6; 7 8 9]. Матрицу можно ввести и следующим образом: F = [1 2 3 4 5 6 7 8 9]. Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции. Для указания отдельного элемента вектора или матрицы используются выражения вида V(i) или M(i, j). Матрицы можно расширять, используя матрицы малых размеров как элементы матрицы больших размеров: R = [10 11 12]; Y = [F; R] Y= 1 2 3 4 5 6 7 8 9 10 11 12 Для добавления новой страницы того же размера можно воспользоваться следующей командой:
» Y(:,:,2)=[14 15 16;17 18 19;20 21 22;23 24 25] Y(:,:,1) = 1 2 3 4 5 6 7 8 9 10 11 12 Y(:,:,2) = 14 15 16 17 18 19 20 21 22 23 24 25 Для удаления строк, столбцов или вообще размерности массива необходимо присвоить выбранному элементу значение пустого вектора [ ]. Например, для удаления первой страницы трехмерного массива Y можно воспользоваться командой »Y(:,:,1)=[] Y= 14 17 20 23
15 16 18 19 21 22 24 25 Возможно задание векторов и матриц с комплексными переменными. Помимо поэлементного ввода векторов и матриц возможна генерация векторов и матриц специального типа. Например, вектор с целочисленными элементами можно задать в виде: X = 1: 5;. Знак двоеточие указывает, что элементы вектора будут принимать значения 1, 2, 3, 4, 5. Можно задать вектор с другим, в том числе и нецелочисленным шагом приращения: X = 0 : 0.25 : 2;. Начальное, шаг и конечное значение элементов можно задавать с помощью арифметических выражений. При работе с матрицами и векторами можно использовать двоеточие для выделения определенной последовательности элементов и создания новых векторов или матриц: А = [1 2 3; 4 5 6]; B = A(:) B= 1 2
3 4 5 6 A(:) = 10 : 15 A= 10 12 14 11 13 15 В этих примерах создан новый вектор В и изменена матрица А. Следующие примеры иллюстрируют операции вырезки из матрицы: А =[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20] A= 1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
A (1 : 3, 3) ans = 3 8 13 A(2 : 4, 2 : 5) ans = 7 12 17
8 13 18
9 14 19
10 15 20
5 10 15 20
Транспонирование вектора означает, что строка элементов становится столбцом: V = [1 2 3] V= 12 3 V’ ans = 1 2 3 Для создания многомерных массивов удобно использовать следующие функции: ones (n1, n2, … , nn) − создание массива с единичными элементами; zeros (n1, n2, … , nn) − создание массива с нулевыми элементами;
Хорошим примером на применение матричных операций является решение системы линейных уравнений. Пусть требуется решить систему уравнений: X + 2Y = 11 2X + 3Y = 18 Введем матрицу коэффициентов А и вектор правой части системы уравнений В: А = [1 2; 2 3] ans = 1 2 2 3 B = [11; 18] ans = 11 18 A\B ans = 3 4. 1.7. Управление последовательностью выполнения операторов Существует 4 основных оператора управления последовательностью исполнения инструкций: оператор условия if в сочетании с операторами else и elseif выполняет группу инструкций в соответствии с некоторыми логическими условиями; оператор переключения switch в сочетании с операторами case и otherwise выполняет различные группы инструкций в зависимости от значения некоторого логического условия; оператор условия while выполняет группу инструкций неопределенное число раз в соответствии с некоторым логическим условием завершения; оператор цикла for выполняет группу инструкции фиксированное число раз. Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления.
if …else … elseif … end Синтаксис: if логическое выражение инструкции end
Оператор условия if
логическое выражение инструкции else инструкции end
if
логическое
выражение инструкции elseif логическое выражение инструкции else инструкции end
Оператор условия if ... end вычисляет некоторое логическое выражение и выполняет соответствующую группу инструкций в зависимости от значения этого выражения. Если логическое выражение истинно, то MATLAB выполнит все инструкции между if и end, а затем продолжит выполнение программы в строке после end. Если условие ложно, то MATLAB пропустит все утверждения между if и end и продолжит выполнение в строке после end. Если логическое условие включает переменную, не являющуюся скаляром, то утверждение будет истинным, если все элементы отличны от нуля. Операторы if ... else ... end и if ... elseif ... end создают дополнительные ветвления внутри тела оператора if: оператор else не содержит логического условия. Инструкции, связанные с ним, выполняются, если предшествующий оператор if (и, возможно, elseif) ложен; оператор elseif содержит логическое условие, которое вычисляется, если предшествующий оператор if (и, возможно, elseif) ложен. Инструкции, связанные с оператором elseif, выполняются, если соответствующее логическое условие истинно. Оператор elseif может многократно использоваться внутри оператора условия if.
switch … case … otherwise .. end
Оператор переключения
Синтаксис: switch case инструкции % выполняются когда = case инструкции % выполняются когда =
… otherwise инструкции % выполняются если не совпало ни с одним из значений end Оператор переключения switch выполняет ветвления, в зависимости от значений некоторой переменной или выражения. Оператор переключения включает: заголовок switch, за которым следует вычисляемое выражение (скаляр или строка); произвольное количество групп case. Заголовки групп состоят из слова case, за которым следует возможное значение выражения, расположенное на одной строке. Последующие строки содержат инструкции, которые выполняются для данного значения выражения. Выполнение продолжается до тех пор, пока не встретится следующий оператор case или оператор otherwise. На этом выполнение блока switch завершается; группа otherwise. Заголовок включает только слово otherwise, начиная со следующей строки размещаются инструкции, которые выполняются, если значение выражения оказалось не обработанным ни одной из групп case. Выполнение завершается оператором end; оператор end - является последним в блоке переключателя. Оператор переключения switch работает, сравнивая значение вычисленного выражения со значениями групп case. Для числовых выражений оператор case выполняется, если = =. Для строковых выражений оператор case истинен, если strcmp(значение, выражение) истинно. Оператор switch может использовать множественное условие в единственной группе case посредством включения выражения case, если выражение для этого условия записано в виде массива ячеек: switch var case 1 disp(‘1’) case (2, 3, 4) disp(‘2 или 3 или 4’) case 5 disp(‘5’) end;
while … end
Оператор с неопределенным числом операций
Синтаксис: while инструкции end
Оператор цикла с неопределенным числом операций while ... end многократно выполняет инструкцию или группу инструкций, пока управляющее выражение истинно. Если выражение использует массив, то все его элементы должны быть истинны, чтобы продолжить выполнение. Чтобы привести матрицу к скалярному значению, следует использовать функции any и all. Выход из while-цикла может быть реализован с помощью оператора break. Если в операторе while управляющее условие является пустым массивом, то такое условие ложно, то есть оператор вида while A, SI, end никогда не выполнит инструкции SI. если А - пустой массив. Пример: Этот цикл с неопределенным числом операций находит первое целое число п, для которого n! записывается числом, содержащим 100 знаков: n = 1; while prod(1:n) < 1e100 n = n + 1; end
for … end
Оператор цикла с определенным числом операций
Синтаксис: for значение>:: инструкции end
=
0, w = [w; v(1)]; I = find(abs(v - v(I)) < 1e-6); v(l) =[];I=[]; end Для того чтобы прочитать комментарий к функции, следует воспользоваться командой helр. Пример: Отклик системы на команду help rmovel. % RMOVEL удаляет из вектора v совпадающие элементы. % Вызов функции: % w = rmovel(v) % Используемые функции: % MATLAB: length, find % ППП SNAE: нет % Входные переменные: % v - исходный вектор. % Выходные переменные: % w - вектор, не содержащий одинаковых элементов.
Интерпретация текстовых срок
eval Синтаксис: eval (' < выражение>') х = eval('< выражение>')
Функция eval(t) означает, что текст, содержащийся в символьной переменной t = ‘< выражение>’, будет восприниматься как команда, оператор или часть выражения. х = eval(t) − присваивает результат вычислений переменной х. Пример: Следующий фрагмент программы показывает, каким образом с помощью команды load можно загрузить 10 последовательно пронумерованных файлов с именами mydata.i: fname = 'mydata'; for 1=1:10 eval(['load ', fname.int2str(i)]) end Здесь int2str - функция для преобразования числового значения в строковое, записанная в файле int2str.m.
Пример: Образовать последовательность магических матриц размера от 1 до 12 с именами Ml, M2, ..., М12. for n= 1:12 eval(['M'num2str(n)'=magic(n)']) end
feval
Вычисление функции
Синтаксис: feval('', х1, ..., хn) [у 1,.... yk] = feval('’, х1, ..., хn) Функция feval('', х1, ..., хn) передает аргументы (х1, .... хn) вызываемой функции. Функция [у 1,.... yk] = feval('’, х1, ..., хn) возвращает множество выходных переменных (у1, ..., yk). Обычно функция feval применяется для вычисления функций, которые являются внешними, а их значение требуется перевычислять на каждом шаге в теле другой процедуры, например при интегрировании систем ОДУ или минимизации функции. Пример: Интегрирование дифференциального уравнения Ван дер Поля. Функция вычисления правой части уравнения Ван дер Поля оформляется в виде внешней функции вида function xdot = vdpol(t, x) xdot=[x(1) . * (1 - x(2) .^ 2) - x(2); x(1)] Для интегрирования системы ОДУ методом Рунге - Кутта предназначена функция ode23, в теле которой присутствуют следующие операторы, которые используют функцию vdpol, передаваемую в качестве входного аргумента tpfun процедуры ode23: s1 = feval(ypfun, t, у); s1 = s1(:); s2 = feval(ypfun, t + h, у + h * s1); s2 = s2(:); s3 = feval(ypfun, t + h/2, у + h * (s1+s2)/4); s3 = s3(:): Тогда для интегрирования уравнения Ван дер Поля требуется следующий вызов функции ode23: t0 = 0; tf = 20; % Задание интервала времени интегрирования хО = [0 0.25]'; % Задание начальных условий [t, x] = ode23('vdpol', t0, tf, хО);
global
Определение глобальных переменных
Синтаксис: global имя1 имя 2... Функция global имя1 имя2 имяЗ определяет переменные с именами имя1, имя2, имяЗ как глобальные. При использовании глобальных переменных следует соблюдать осторожность, поскольку их значения могут измениться при выполнении некоторой М-функции. Как правило, каждая М-функция использует локальные переменные, которые изолированы от переменных других функций и переменных Мсценария. Однако если несколько функций и головная программа объявляют некоторую переменную глобальной, то в этом случае все модули используют одну и ту же переменную, которая должна иметь опцию global. Обычно для имен локальных переменных используют длинные названия и заглавные буквы.
nargin, nargout
Определение количества аргументов функции
Синтаксис: n = nargin n = nargout Функции nargin и nargout позволяют определить количество входных и выходных переменных функции в процессе ее выполнения. Пример: В приведенном фрагменте процедуры fplot показано, как можно учесть необязательные входные и выходные переменные: function [хО, уО] = fplot(fnamre, lims, npts, angi, subdiv) % FPLOT Построение графика функции % FPLOT(fnamre, lims, npts, angi, subdiv) % Первые два аргумента являются обязательными; % остальные - необязательные. % FPLOT(...) строит график; % [х, у] = FPLOT(...) возвращает массивы значений аргумента и функции if nargin < 5, subdiv = 20; end if nargin < 4, angi = 10; end if nargin < 3, npts = 25; end if nargout = 0 plot(x, y) else x0 = x;
y0 = y; end
Ввод информации пользователя
input Синтаксис: x = input(‘’) x = input(‘’, ‘s’)
x = input(‘’) − выводит на экран строку с приглашением и ожидает ввода выражения, допустимого в MATLAB (арифметическое выражение или имя встроенной функции). Если функция имеет несколько входных параметров, то выходной переменной x присваивается только первое значение. x = input(‘’, ‘s’) − возвращает строку, которая введена пользователем.
Приостановка выполнения М-файла
pause Синтаксис: pause pause(n)
Функция pause приводит к паузе в работе системы и ожиданию нажатия любой клавиши для продолжения. pause(n) − приостанавливает работу системы на n секунд.
2. SIMULINK - ИНСТРУМЕНТ ВИЗУАЛЬНОГО МОДЕЛИРОВАНИЯ 2. 1. Общая характеристика. Демонстрация возможностей Разработка моделей средствами SIMULINK (в дальнейшем S-моделей) основана на использовании технологии Drag-and-Drop (Перетащи и Оставь). В качестве «кирпичиков» для построения S-модели используются модули (или блоки), хранящиеся в библиотеке SIMULINK. SIMULINK хорош тем, что, с одной стороны, обеспечивает пользователю доступ ко всем основным возможностям пакета MATLAB, а с другой − является достаточно самостоятельной его компонентой, в том смысле, что при работе с ним не обязательно иметь навыки в использовании других инструментов, входящих в состав пакета.
Блоки, включаемые в создаваемую модель, могут быть связаны друг с другом, как по информации, так и по управлению. Тип связи зависит от типа блока и логики работы модели. Данные, которыми обмениваются блоки, могут быть скалярными величинами, векторами или матрицами произвольной размерности. Любая S-модель может иметь иерархическую структуру, то есть состоять из моделей более низкого уровня, причем число уровней иерархии практически не ограничено. Наряду с другими параметрами моделирования пользователь может задавать способ изменения модельного времени (с постоянным или переменным шагом), а также условия окончания моделирования. В ходе моделирования имеется возможность наблюдать за процессами, происходящими в системе. Для этого используются специальные «смотровые окна», входящие в состав библиотеки SIMULINK. Интересующие пользователя характеристики системы могут быть представлены как в числовой, так и в графической форме. Кроме того, существует возможность включения в состав модели средств анимации. Еще одно важное достоинство SIM ULINK заключается в том, что он является открытой системой: состав библиотеки может быть пополнен пользователем за счет разработки собственных блоков. Запуск SIMULINK можно произвести либо нажав соответствующую кнопку на панели меню командного окна, либо выбрав команду New Model в разделе File главного меню. При запуске SIMULINK открываются два окна: пустое окно untitled (заготовка для создания новой S-модели); окно Library: simulink, содержащее перечень основных разделов библиотеки SIMULINK. Оба окна имеют сходную структуру и содержат строку меню, панель инструментов, строки состояния (только MATLAB 5. 2) и рабочее поле. Меню содержит следующие разделы: File — команды работы с mdl-файлами, Edit — команды редактирования блок-диаграммы и опции для работы с библиотекой, View — команды изменения формата окна (показать/убрать панель инструментов и строку состояния); Simulation — команды управления моделированием, Format — команды редактирования формата (т. е. внешнего облика) блоков диаграммы и блок-диаграммы в целом. На панель инструментов выведены следующие команды меню (рис. 2. 1):
1
2
3
4
5
6
7
8
9
10
11
Рис. 2.1 где
1 — открыть новое (пустое) окно блок-диаграммы; 2 — открыть существующий mdl-файл; 3 — сохранить mdl-файл на диске; 4 — вывод на печать блок-диаграммы; 5... 7 — команды редактирования блок-диаграммы (вырезать, копировать, вставить); 8 — отменить предыдущую операцию редактирования; 9 — восстановить предыдущую операцию редактирования; 10 — запуск модели на исполнение (команда Start); после запуска модели на изображении кнопки выводится символ || и ей соответствует уже команда Pause (приостановить моделирование); 11 — закончить моделирование (команда Stop); кнопка становится доступной по истечении интервала моделирования и после выполнения команды Pause. Если в состав рабочей конфигурации MATLAB включено приложение Real-Time Workshop, то меню дополняется разделом Tools, содержащим средства работы с ним. Для версий MATLAB 5. 0 и 5. 1 единственным отличием окна библиотеки от окна блок-диаграммы является то, что в первом недоступен раздел меню Simulation. В MATLAB 5. 2 существует еще одно различие: в нижней части окна блок-диаграммы имеется строка состояния модели. Она содержит следующие поля (слева направо): текстовое поле состояния SIMULINK; может иметь значение Ready (Готов) или Running (Выполнение); кроме того, при «нажатой» кнопке панели инструментов в этом поле выводится ее назначение; индикатор степени завершенности сеанса моделирования («включается» при запуске модели); поле текущего значения модельного времени (выводится также только после запуска модели); используемый алгоритм расчета состояний модели. Применение команд меню, не выведенных на панель инструментов, будет рассмотрено немного позже. Сейчас остановимся на описании основных возможностей SIMULINK.
Что же представляет собой S-модель? Чтобы составить о ней первое, пока весьма общее, впечатление, воспользуемся одним из примеров, включенных авторами MATLAB в раздел Simple Models (Простые модели). Выберите этот раздел в левом списке окна MATLAB Demos, как следует из комментария, появляющегося при этом в окне справа, примеры из данного раздела помогут уяснить основные концепции SIMULINK, и если вы не были ранее с ним знакомы, начинать нужно именно отсюда. В списке примеров выберите модель Tracking а bouncing ball, позволяющую получить траекторию прыгающего мяча «Нажмите» кнопку с надписью Run Tracking a bouncing. На экране появятся два окна. Первое из них содержит блок-диаграмму модели с комментариями (рис. 2.2), другое представляет собой пример одного из «смотровых окон», обеспечивающих наблюдение за поведением моделируемой системы Это окно называется Scope и по виду напоминает экран электронного измерительного прибора.
Рис. 2.2 До начала моделирования на нем ничего нет, кроме измерительной шкалы и кнопок панели управления. С точки зрения структуры S-модели такое «смотровое окно» – один из блоков диаграммы. Как управлять его параметрами, будет сказано немного позже. Вернемся к окну, содержащему блок-диаграмму модели. Она представляет собой набор блоков, соединенных между собой линиями связи. Направление движения информационных и управляющих сигналов на диаграмме обозначено стрелками. Любая линия связи может иметь
произвольное число ответвлений, начало каждого из которых обозначается точкой. Число входов и выходов блока определяется его типом и значениями параметров настройки блока. Для обеспечения наглядности диаграммы входящие в нее блоки не только различаются графическим представлением, но и снабжаются (при необходимости) индивидуальными именами, которые выбираются пользователем. На выбор имени не накладывается никаких ограничений, оно может представлять собой даже целую фразу. Все блоки, входящие в блок-диаграмму, можно условно разделить на две группы: функциональные блоки и «смотровые окна». В состав рассматриваемой S-модели входят два «смотровых окна» типа Scope. Одно из них уже упоминалось выше. Оно называется Bouncing Ball Display (Демонстрация прыгающего мяча) и открывается автоматически при открытии файла модели. Второе «смотровое окно» представлено на диаграмме блоком Velocity Scope (Индикатор скорости). Чтобы его открыть, нужно дважды щелкнуть ЛКМ на изображении блока. До начала моделирования это окно, так же, как и первое, пусто. Остальные блоки модели являются функциональными. Двойной щелчок ЛКМ на любом из них приводит к тому, что открывается окно настройки параметров блока. Пока будем считать, что значения параметров, заданные разработчиками модели, нас устраивают. Следующий этап знакомства с S-моделью состоит в попытке провести с ней модельный эксперимент (то есть заставить ее работать). Предварительно расположите все три окна модели (два окна Scope и блок-диаграмму) на экране так, чтобы они не перекрывали друг друга (при необходимости можно изменить размер каждого из них). Сделайте активным окно с блок-диаграммой и запустите модель с помощью кнопки Start, расположенной на панели инструментов окна. После начала моделирования траектория движения прыгающего мяча отображается в «смотровом окне» Bouncing Ball, а изменение его скорости - в окне Velocity Scope. Не дожидаясь, пока мяч перестанет «прыгать», выполните команду Pause («нажав» соответствующую кнопку на панели инструментов). При этом моделирование приостанавливается (мяч «зависает» в окне). Во время паузы на исполнение может быть запущена другая модель или выполнены какие-либо действия в командном окне MATLAB. При повторном «нажатии» все той же кнопки (теперь она соответствует команде Continue – продолжить) мяч продолжит движение. Модель закончит работу, когда мяч остановится (его скорость будет равна нулю). В рассматриваемом примере условием окончания моделирования является наступление определенного события - остановка мяча. Но условием окончания модельного эксперимента может служить также истечение
заданного интервала моделирования. SIMULINK позволяет использовать и такую возможность. Давайте попробуем ею воспользоваться. При заданных параметрах модели (упругости мяча и начальной скорости полета) мяч перестает прыгать через 20 с. Этот отрезок времени совпадает в исходной модели с интервалом моделирования, длительность которого отображается на горизонтальной шкале окон Scope. Изменим параметры движения мяча, оставив прежним интервал моделирования. Найдите на блок-диаграмме элемент в форме треугольника с именем Elasticity. Он позволяет задавать значение коэффициента упругости мяча. Текущее значение этого коэффициента, равное - 0.8, выводится внутри изображения блока. Очевидно, чем более упругий мяч нам попадется, тем дольше он будет прыгать. В данной модели увеличению упругости мяча соответствует увеличение абсолютного значения коэффициента Elasticity. Замените -0.8 на -0.9. Для этого щелкните дважды ЛКМ на изображении блока. В открывающемся окне настроек произведите соответствующие изменения (рис. 2.3).
Рис. 2.3 «Нажмите» последовательно кнопки Apply (Применить) и Close (Закрыть). Окно настроек закроется, новое значение коэффициента будет выведено на изображении блока. Запустите модель на исполнение командой Start. Для наблюдения за мячом опять воспользуемся окнами Scope. По истечении 20 с мяч еще полон энергии (кинетической), но... Время моделирования истекло, и работа модели остановлена. Это подтверждает и короткий звуковой сигнал, издаваемый компьютером. На этом первое знакомство с S-моделью можно закончить и перейти к более детальному описанию возможностей SIMULINK. Закройте окно с блок-диаграммой модели (без сохранения внесенных изменений). При этом «смотровые окна» закрываются автоматически. Окно MATLAB Demo также закройте, оставив на экране окно Library: Simulink, содержащее перечень основных разделов библиотеки.
2. 2. Библиотека модулей (блоков) Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию. Для любого блока можно получать требуемое число копий и использовать каждую из них автономно. Более того, практически для всех блоков существует возможность индивидуальной настройки: пользователь может изменить как внутренние параметры блоков (например, количество входов), так и внешнее оформление (размер, цвет, имя и т. д.). На порядок соединения блоков друг с другом также не накладывается никаких ограничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK. Для удобства работы пользователя библиотека блоков разбита на семь разделов. Шесть из них являются базовыми и не могут изменяться пользователем (за исключением внешнего оформления): Sources (Источники), Sinks (Получатели), Discrete (Дискретные элементы), Linear (Линейные элементы), Nonlinear (Нелинейные элементы), Connections (Соединения). Седьмой раздел - Blocksets&Toolboxes (Наборы блоков и инструменты) содержит блоки, относящиеся к компонентам MATLAB, включенным пользователем в рабочую конфигурацию пакета (рис. 2.4.). При этом для каждой компоненты создается свой подраздел библиотеки. При минимальной рабочей конфигурации в разделе Blocksets&Toolboxes имеется только один подраздел SIMULINK Extras (Дополнение к SIMULINK). Этот подраздел, в свою очередь, разбит на шесть частей, три из которых являются дополнением к одноименным основным разделам библиотеки, а три других имеют самостоятельное значение. Это наборы блоков Transformations (блоки пересчета координат и шкал температуры), Flip-Flops (блоки, соответствующие основным типам триггеров) и Linearization (содержит единственный блок, реализующий функцию линейной аппроксимации). Чтобы открыть интересующий раздел библиотеки, достаточно дважды щелкнуть на нем ЛКМ. Каждый блок, входящий в библиотеку SIMULINK, имеет по крайней мере один параметр настройки. Задавая требуемое значение параметра (или выбирая его из предлагаемого меню), пользователь имеет возможность скорректировать функцию, реализуемую данным блоком. Чтобы открыть окно настройки параметров, нужно дважды щелкнуть ЛКМ на изображении блока.
Однако возможность изменять значения параметров появляется только после того, как блок будет помещен в окно блок-диаграммы. LTI CommTbx library
Controls Toolbox
DSP
DSP Blockset
Fixed-Point Blockset
SIMULINK Fuzzy
SF
NCD MPC Blocks
System ID Blocks
NCD Blockset Neural Network Power System Blockset Blockset
Simulink Extras
Stateflow
Рис. 2.4 Окна настройки параметров всех библиотечных блоков имеют идентичную структуру и содержат краткую характеристику блока, поля ввода (или выбора) значений параметров блока и 4 кнопки: Apply – применить; Revert – вернуть предыдущее значение параметров; Help – вызов файла помощи в формате html; Close – закрыть окно настроек. Измененные значения параметров вступают в силу после «нажатия» кнопки Apply. Чтобы запустить модель на исполнение с новыми параметрами, закрывать окно настроек не обязательно. Вернемся к основным разделам библиотеки SIMULINK. Как уже было сказано, их шесть. 2.2.1. Раздел Sources (Источники) В окне Library: Simulink найдите раздел Sources и откройте его, дважды щелкнув на его изображении ЛКМ. Блоки, входящие в этот раздел, предназначены для формирования сигналов, обеспечивающих управление работой S-модели в целом или отдельных ее частей. Все блоки-источники имеют по одному выходу и не имеют входов (рис. 2.5). Замечание. Терминология, используемая авторами SIMULINK для описания блоков этого и других разделов библиотеки, говорит о том, что в основном имеются в виду электрические сигналы. Тем не менее, физическая интерпретация понятия «сигнал» в каждом конкретном случае различна и определяется в первую очередь физической природой моделируемой системы.
1 Constant Итак, в качестве источников сигналов Signal Step Generator (входных величин) могут использоваться следующие блоки: Constant − формирует постоянную Ramp Sine Wave Repeating Sequence величину (скаляр, вектор или матрицу); Signal Generator − создает непрерывный сигнал произвольной формы; Discrete Pulse Pulse Chirp Signal Generator Generator Step – генерирует единичный 12:34 дискретный сигнал с заданными параметрами; Clock Digital Clock Ramp – создает линейно возрастающий (убывающий) сигнал; untitled.mat [T,U] Sine Wave – генератор гармонических From File From колебаний; Workspace Discrete Pulse Generator – генератор дискретных импульсных сигналов; Uniform Random Band-Limited Chirp Signal – генератор Random Number White Noise Number гармонических колебаний переменной частоты; Рис. 2.5 Clock – источник непрерывного временного сигнала; Digital clock – формирует дискретный временной сигнал; Random Number – источник дискретного сигнала, амплитуда которого является случайной величиной, распределенной по нормальному закону;
Uniform Random Number – источник дискретного сигнала, амплитуда которого является равномерно распределенной случайной величиной; Band-Limited White Noise – генератор «белого шума» с ограниченной полосой. Следующие два блока из раздела “Источники” отличаются от перечисленных тем, что обеспечивают использование в модели различных числовых данных, полученных ранее как с помощью SIMULINK, так и другими средствами MATLAB. Первый из них – From File – предназначен для ввода в S-модель данных, хранящихся в МАТ-файле. Второй – From Workspace – обеспечивает ввод в модель данных непосредственно из рабочей области MATLAB. Структура данных в МАТ-файле представляет собой многомерный массив с переменным числом строк, которое определяется числом регистрируемых переменных. Элементы первой строки содержат последовательные значения модельного времени, элементы в других строках – соответствующие им значения переменных.
Как и другие библиотечные блоки, блоки – «источники» могут настраиваться пользователем (за исключением блока Clock, работа которого основана на использовании аппаратного таймера компьютера). Рассмотрим особенности настройки тех блоков, которые понадобятся нам в дальнейшем при разработке собственных S-моделей. Блок Step. Он обеспечивает формирование единичного управляющего сигнала, который может использоваться в любой точке модели. Блок имеет 3 параметра настойки (рис. 2.6): Step time (Шаг времени) – определяет длительность сигнала, исходное значение параметра равно 1. Initial value (Начальное значение) – задает значение амплитуды сигнала в начальный момент времени, исходное значение – 0. Final value (Конечное значение) – задает значение амплитуды сигнала по истечении шага моделирования, исходное значение этого параметра равно 1.
Рис. 2.6 Чтобы увидеть, что представляет собой сигнал, создаваемый блоком Step, и как на него влияют значения указанных параметров, воспользуемся уже знакомым нам окном Scope. Последовательность действий для достижения поставленной цели такова. 1. В разделе File командного окна MATLAB выберите последовательность команд New –> Model. Откроется (или станет активным) пустое окно для создания новой блок-диаграммы. 2. В разделе библиотеки Источники (он открыт) найдите блок Step, нажмите ЛКМ и, не отпуская ее, перетащите контур блока на свободное поле окна untitled. Отпустите ЛКМ. В окне появится блок Step – первый блок будущей диаграммы. 3. В окне библиотеки SIMULINK откройте раздел Sinks (Получатели), дважды щелкнув на его изображении ЛКМ. Найдите в нем блок Scope и, нажав
ЛКМ, перетащите его контур на свободное поле окна untitled. Отпустите ЛКМ. В окне появится блок Scope. 4. Для удобного соединения блоков расположите их так, чтобы вход блока Scope находился напротив выхода блока Step (на любом расстоянии). 5. Подведите курсор мыши к выходу блока Step. Курсор примет форму крестика. Нажмите ЛКМ и, не отпуская ее, переместите курсор к входу блока Scope. Как только крестик станет двойным, отпустите кнопку мыши. Между блоками образуется линия связи со стрелкой, указывающей направление передачи сигнала (рис. 2.7).
Step
Scope
Рис. 2.7 6. Откройте окно Scope, дважды щелкнув на нем ЛКМ. Теперь можно «оживить» полученную блок-диаграмму, состоящую из двух элементов. Для этого, как и при наблюдении за «прыгающим мячом», нужно выполнить команду Start. Сформированный сигнал отображается в окне Scope (рис. 2.8). Из рисунка видно, что при исходных значениях параметров блока Step величину Step time можно интерпретировать как период задержки сигнала.
Рис. 2.8 Замените значение параметра Initial value на «1», а параметра Final value – на «О» и повторите моделирование. Форма сигнала изменилась (рис. 2.9). Теперь величина Step time определяет длительность управляющего сигнала. Именно такой подход к использованию блока Step оказывается более удобным при разработке многих S-моделей.
Рис. 2.9 Необходимо отметить, что значения всех трех параметров блока могут задаваться не только в форме констант, но и в виде вычисляемых выражений, в том числе содержащих функции. Блок Discrete Pulse Generator. Отыщите его в разделе Источники и с помощью двойного щелчка откройте окно настроек блока. Оно позволяет изменять значения пяти параметров (рис. 2.10): амплитуды сигнала (Amplitude); величины периода сигнала (Period), ширины импульса (Pulse width), величины задержки сигнала (Phase delay), шаг изменения модельного времени (Sample time).
Рис. 2.10 Значения параметров 2... 4 должны задаваться как целое число шагов модельного времени (number of samples). Поэтому выбор значений параметров блока целесообразно начинать с выбора величины Sample time. Размер шага можно указать как в форме константы, так и в форме вычисляемого выражения.
Если вычисленное значение является дробным, оно округляется до целого. Аналогично может быть задано и значение амплитуды, но в случае дробной величины округление не производится. Блок Random Number обеспечивает формирование сигналов, амплитуда которых является случайной величиной, распределенной по нормальному закону с заданными параметрами. Блок имеет четыре параметра настройки. Первые два – Mean и Variance – являются параметрами нормального закона (среднее и дисперсия), третий – Initial seed – задает начальное значение для инициализации генератора последовательности случайных чисел. При фиксированном значении этого параметра генератор всегда вырабатывает одну и ту же последовательность СЧ. Четвертый параметр (Sample time) используется так же, как и в рассмотренных ранее блоках. Блок Uniform Random Number обеспечивает формирование сигналов, амплитуда которых является случайной величиной, распределенной равномерно в заданном интервале. В блоке имеются такие же параметры настройки Initial feed и Sample time, как и в Random Number. Еще два параметра (Minimum и Maximum) задают диапазон распределения СВ. Блок Digital Clock. Этот блок имеет единственный параметр настройки – величину шага изменения модельного времени (Sample time). Величина шага задается таким же образом, как и в блоке Discrete Pulse Generator. Если величина шага задана выражением, то оно вычисляется только однажды, и полученное значение используется на всем интервале моделирования. Особенность блока Digital Clock состоит в том, что он не только формирует величину шага, но и вычисляет новое значение модельного времени, которое используется для проверки условия окончания моделирования. Очередное значение модельного времени вычисляется как сумма предыдущего значения и величины шага моделирования. Блок From File имеет в качестве параметра настройки имя МАТ-файла, из которого будут считываться требуемые данные. Если указывается только имя файла, то поиск файла производится в открытой папке. При необходимости можно указать полный путь доступа к файлу. После закрытия окна настроек имя файла выводится на изображении блока. Немного забегая вперед отметим, что в разделе библиотеки Получатели имеется блок То File, который выполняет запись результатов моделирования в МАТ-файл. Блок From Workspace, как было сказано ранее, обеспечивает использование в S-модели данных, хранящихся в рабочей области (собственной оперативной памяти) MATLAB. Блок имеет один составной параметр настройки, который представляет собой упорядоченный список используемых данных, заключенный в квадратные скобки (рис. 2. 11).
Рис. 2.11 Список должен содержать не менее двух элементов, первым из которых является вектор значений модельного времени с именем tout. Остальные элементы списка представляют собой векторы значений вводимых из рабочей области величин. Длина каждого из этих векторов должна быть равна длине вектора tout. Как правило, в качестве элементов списка данных используются величины, помещенные в рабочую область MATLAB с помощью блока То Workspace, входящего в раздел библиотеки Sinks (Получатели). 2.2.2. Раздел Sinks (Получатели) Напомним, что раздел библиотеки Sinks мы уже открывали, чтобы «достать» из него блок Scope. Блоки, собранные в этом разделе, достаточно существенно различаются по функциональному предназначению (рис. 2.12). Scope XY Graph Условно их можно разделить на три вида: 0 1) блоки, используемые при моделировании в Display качестве «смотровых окон». К ним относятся: блок Scope, который уже упоминался untitled.mat simout выше; To File To Workspace блок XYGraph, обеспечивающий создание STOP двумерных графиков в прямоугольной системе Stop Simulation координат; блок Display, предназначенный для Рис. 2.12 отображения численных значений величин; 2) блоки, обеспечивающие сохранение промежуточных и/или выходных результатов моделирования: блок То File; блок То Workspace; 3) блок управления моделированием – Stop Simulation, который позволяет прервать моделирование при выполнении тех или иных условий.
Блок срабатывает в том случае, если на его вход поступает ненулевой сигнал и не имеет параметров настройки. Блок Scope. Напомним, что этот блок позволяет в процессе моделирования наблюдать динамику изменения интересующих исследователя характеристик системы. Создаваемое с его помощью «смотровое окно» напоминает экран измерительного прибора. Открыть окно Scope можно только после того, как блок помещен на поле блок-диаграммы (щелкнув дважды на его изображении ЛКМ). Размер и пропорции окна можно изменять произвольно, используя курсор мыши. По оси ординат шкалы измерений откладываются значения наблюдаемой величины, по оси абсцисс – значения модельного времени. По умолчанию для оси ординат используется диапазон [-5; 5], а для оси модельного времени - [0; 10]. Блок-диаграмма может быть построена таким образом, чтобы на вход блока Scope поступала векторная величина. В этом случае для каждого элемента вектора в окне строится отдельная кривая, отражающая динамику его изменения. Выводимые кривые различаются цветом, который устанавливается автоматически. Одновременно в окне Scope может отображаться до 30 кривых. Для управления параметрами окна Scope в нем имеется панель меню, содержащая семь кнопок (рис. 2.13): 1
2
3
4
5
6
7
Рис. 2.13 где 1 – изменение масштаба осей графика; 2 – изменение масштаба по оси абсцисс; 3 – изменение масштаба по оси ординат; 4 – автоматическая установка оптимального масштаба осей; 5 – сохранение установленного масштаба осей; 6 – вызов диалогового окна настройки параметров блока Scope; 7 – печать содержимого окна Scope. Кнопки 1... 3 являются альтернативными, т. е. в каждый момент времени может быть «нажата» только одна из них. Для изменения масштаба по выбранной оси координат необходимо: «нажать» соответствующую кнопку изменения масштаба; подвести курсор мыши к тому участку графика, который должен быть отображен в новом масштабе; нажать (один раз!) ЛКМ. Первое нажатие ЛКМ приводит к четырехкратному увеличению масштаба, каждое последующее дает увеличение масштаба в два раза.
При «нажатии» кнопки 6 открывается окно Properties: Scope, содержащее две вкладки: Axes (оси), позволяющая устанавливать параметры осей графика; Setting (установки), предназначенная для ввода значений дополнительных параметров блока Scope. В нижней части окна расположены кнопки, аналогичные кнопкам окон настройки параметров других библиотечных блоков: Apply (Применить); Revert (Вернуть исходные значения); Help (Вызов помощи в формате HTML); Close (Закрыть окно). На вкладке Axes имеются поле Default limits (Диапазоны осей) и флажок Hide tick label (Скрыть обозначение осей). В поле Default limits устанавливаются верхняя ( Y max) и нижняя (Y min) границы оси ординат, а также наибольшее отображаемое значение модельного времени на оси абсцисс (Time range). Относительно оси времени необходимо сделать дополнительное пояснение. Если величина заданного интервала моделирования не превышает значение Time range (и, следовательно, весь процесс «умещается» в окне Scope), то под графиком в строке Time offset: выводится 0. Если же интервал моделирования превышает значение Time range, то в окне отображается только отрезок времени, равный Тм-п (Time range), где Tм – длительность интервала моделирования, n – целое число. При этом в строке Time offset выводится величина «скрытого» интервала времени (длиной n x (Time range)). Например, если значение Time range равно 7, а длительность интервала моделирования составляет 16 единиц времени, то в окне Scope будет выведен график моделируемого процесса за последние 2 единицы времени, а строка под графиком будет иметь вид: Time offset: 14. Флажок Hide tick label позволяет изменить форму вывода графика в окне Scope. Если он установлен, то оси графика не отображаются, и график занимает всю рабочую область окна. Чтобы установленные значения параметров вступили в силу, необходимо «нажать» кнопку Apply, расположенную в нижней части окна Properties. На вкладке Setting имеются следующие поля: 1. Поле General обеспечивает выбор дискретности измерения отображаемых величин (характеристик системы и модельного времени). Установка дискретности измерения характеристик системы и времени выполняется раздельно. Выбор производится с помощью выпадающего меню, содержащего два пункта: 2. Decimation – установка дискретности измерения характеристик системы; 3. Sample time – установка дискретности измерения модельного времени. Для ввода требуемых значений используется строка редактирования, расположенная справа от меню.
По умолчанию для измеряемых характеристик дискретность равна 1, а для модельного времени – нулю. Это означает, что значение наблюдаемой характеристики измеряется на каждом шаге моделирования, а модельное время считается непрерывным. Если параметр Decimation установить равным, например, 3, то значение исследуемой характеристики будет определяться только 1 раз в течение трех шагов моделирования. Параметр Decimation может принимать только целочисленные значения. Дискретность измерения модельного времени – это фактически величина шага моделирования. По умолчанию она равна 0, 02. Для дискретных систем величина шага может быть задана либо в виде положительной константы, либо в форме вычисляемого выражения. Дискретность изменения модельного времени определяет момент окончания вывода данных в окно Scope: если очередной интервал заканчивается за пределами окна, то данные для него не выводятся. Замечание. Параметр Sample time имеется практически во всех библиотечных блоках SIMULINK. Для каждого блока значение этого параметра устанавливается индивидуально. Если блок реализует некоторую функцию, то параметр Sample time определяет дискретность вычислений. Поэтому для корректной работы модели необходимо согласовывать установку параметра для взаимосвязанных блоков. 2. Поле Data history позволяет задавать максимальный объем и способ хранения отображаемых в окне данных. Объем сохраняемых данных (Limit rows to last) вводится в строке редактирования. Способ хранения указывается с помощью флажка Save data to workspace: если он установлен, то отображаемые в окне Scope данные сохраняются в рабочей области MATLAB в виде матрицы, аналогичной по структуре МАТ-файлу. Имя матрицы указывается в строке редактирования (по умолчанию – ScopeData) 3. Флажок Floating Scope предназначен для изменения способа использования блока Scope в блок-диаграмме. При установленном флажке Scope отображается как блок без входа, и если он был связан по входу с другими блоками, то эти связи «обрываются». Блок XYGraph. Этот блок также относится к «смотровым окнам». Он представляет собой упрощенный вариант блока Scope и обеспечивает построение графиков зависимостей произвольных величин, фигурирующих в модели. Блок имеет два входа, первый из которых предназначен для ввода аргумента, второй – для ввода значений функции этого аргумента. На рис. 2.14 показан внешний вид окна XYGraph, содержащего график функции sqrt (t), где t – текущее значение модельного времени. Окно XYGraph открывается автоматически при запуске модели. Оно имеет собственное меню, содержащее 4 раздела: • раздел File включает стандартные команды работы с файлами, а также опции вывода графиков на печать;
• раздел Edit содержит единственную доступную команду – Copy Figure, которая позволяет копировать содержимое окна XYGraph в буфер обмена; • содержание разделов Window и Help совпадает с содержанием одноименных разделов меню командного окна MATLAB.
Рис. 2.14 Блок XYGraph имеет следующие параметры настройки: диапазоны осей графика (X-min, Х-тах - для оси абсцисс и Y-min, Ymax - для оси ординат); шаг модельного времени (Sample time), по умолчанию его значение равно -1. Это означает, что величина шага совпадает с установленной для модели в целом (либо со значением одноименного параметра предшествующего блока). Блок Display. Oн предназначен для вывода на экран численных значений величин, фигурирующих в модели. Блок имеет 4 параметра настройки. Первый – Format – задает формат вывода; формат выбирается с помощью выпадающего меню, содержащего 5 пунктов: short, long, short_e, long_e, bank. Предлагаемые форматы вывода аналогичны форматам, используемым в командном окне MATLAB. Следующие два параметра используются так же, как и одноименные параметры блока Scope: Decimation – определяет периодичность вывода значений в окне Display; Переключатель Floating display позволяет указывать способ использования блока Display в блок-диаграмме; Поле Sample Time задает величину шага модельного времени, т. е. дискретность вывода данных в окно Display. Блок Display может использоваться для вывода как скалярных, так и векторных данных. Если отображаемая величина является вектором, то
исходный формат блока изменяется автоматически. Об изменении формата говорит маленький черный треугольник, появляющийся в нижнем правом углу блока. Для каждого элемента вектора создается свое мини-окно, но чтобы они стали видимы, необходимо «растянуть» изображение блока. Для этого следует выделить блок, подвести курсор мыши к одному из его углов (курсор при этом примет форму двойной стрелки), нажать ЛКМ, и, не отпуская ее, растянуть изображение блока. После того как ЛКМ будет отпущена, на экране появятся дополнительные окна с выведенными в них значениями элементов вектора. Если хотя бы один элемент вектора остался «за кадром», на изображении блока Display по-прежнему присутствует черный треугольник. В этом случае операцию «растягивания» блока следует повторить. Убедитесь в возможностях блока Display самостоятельно, используя в качестве источника сигнала блок Constant. Последовательность действий при этом должна быть почти такой же, как при знакомстве с блоком Scope: откройте раздел библиотеки Sources (Источники) и перенесите из него на свободное поле новой S-модели блок Constant; из раздела Sinks (Получатели) «перетащите» изображение блока Display и поместите его рядом с Constant; перемещая курсор от выхода Constant к выходу Display, соедините их между собой; выполните команду Start. После завершения работы «модели» в окне Display появится цифра «1». Чтобы получить изображение элементов вектора, откройте окно настроек блока Constant и введите в качестве нового значения любую последовательность чисел, заключенную в квадратные скобки (числа должны быть разделены пробелами или запятыми). После «нажатия» кнопки Apply (применить) опять выберите команду Start. После завершения работы модели на изображении блока Display появится упоминавшийся выше черный треугольничек. «Растяните» блок и убедитесь, что значения вектора Constant выведены правильно (рис. 2.15).
Рис. 2.15 Блок То File. Как уже было сказано, этот блок используется в паре с блоком From File из раздела Sources. Он обеспечивает запись в МАТ-файл данных, полученных в ходе моделирования. Блок имеет следующие параметры настройки (рис. 2.16):
Рис. 2.16 File в который будут записываться данные (может быть указан полный путь доступа к файлу, по умолчанию – untitled. mat); имя файла выводится на изображении блока в блок-диаграмме; Variable name – имя переменной, по которому можно обращаться к данным, записанным в файле (для того, например, чтобы просмотреть или изменить их в командном окне MATLAB); по умолчанию используется стандартное имя ans; Decimation – дискретность записи данных в файл; при Decimation=1 запись производится на каждом шаге моделирования; параметр может принимать только целочисленные значения; Sample Time – величина шага моделирования для данного блока. Блок То Workspace. Он также имеет «пару» из раздела Sources — блок From Workspace и предназначен для сохранения данных, полученных в процессе моделирования, в рабочей области MATLAB. Данные сохраняются в виде матрицы, структура которой отличается от структуры данных в МАТфайле тем, что: значения сохраняемых величин расположены по строкам, а не по столбцам; не регистрируются значения модельного времени (значение модельного времени регистрируется специальной переменной tout, при установке соответствующего флага в параметрах моделирования). Блок имеет 4 параметра настройки: Variable name − имя, под которым данные сохраняются в рабочей области (по умолчанию − Simout); Maximum number of rows (Максимальное количество строк) − предельно допустимое число шагов моделирования, для которого регистрируются данные
(по умолчанию задается константой inf, то есть регистрируются на всем интервале моделирования); Decimation − дискретность регистрации данных; Sample time − величина шага (дискретность изменения) модельного времени. Два последних параметра имеют тот же смысл, что и одноименные параметры блока To File. 2.2.3. Раздел Discrete (Дискретные элементы) В этот раздел входят блоки, с помощью которых в модели может быть описано поведение дискретных систем. Напомним, что различают два основных типа таких систем: системы с дискретным временем и системы с дискретными состояниями. Блоки, входящие в рассматриваемый раздел библиотеки SIMULINK, обеспечивают моделирование как тех, так и других. Раздел содержит 8 блоков (рис. 2 17): 1. Unit Delay − блок задержки сигнала; 2. Discrete-Time Integrator − дискретный сумматор (счетчик) времен; 3. Zero-Order Hold − экстраполятор нулевого порядка; 4. First-Order Hold − экстраполятор первого порядка; 5. Discrete State-Space − блок формирования состояния системы. Блоки, обеспечивающие Z-преобразование входного сигнала; 6. Discrete Filter; 7. Discrete Transfer Fcn; 8. Discrete Zero-Pole.
Рис. 2.17
С точки зрения иллюстрации технологии имитационного моделирования интерес представляют первые два блока из рассматриваемого раздела. Познакомимся с ними поближе.
Блок Unit Delay обеспечивает задержку входного сигнала на заданное число периодов (шагов модельного времени). Параметрами настройки для этого блока являются: 1. Начальное значение сигнала (Initial condition) — значение амплитуды сигнала в момент активизации блока; оно может быть задано либо в виде числовой константы, либо в виде вычисляемого выражения. 2. Величина задержки (Sample time) − определяет число шагов модельного времени, в течение которого сохраняется значение сигнала,
поступившего на вход блока; как и первый параметр, может задаваться в любой форме, но значение параметра должно быть положительным. Блок Discrete-Time Integrator выполняет суммирование интервалов времени между поступлениями входного сигнала. Блок может быть использован для управления логикой работы отдельных компонентов ИМ или модели в целом. В частности, суммарная длительность работы некоторой подсистемы может служить условием «досрочного» окончания моделирования. Блок имеет следующие параметры настройки (рис. 2.18): используемый метод интегрирования (Integrator method); с помощью выпадающего меню пользователь может выбрать один из трех методов: прямой метод Эйлера; обратный метод Эйлера; метод трапеций; подключение дополнительного управляющего сигнала (External reset); использование внешней установки начального значения входного сигнала (Initial condition source). Выбор значений двух последних параметров также производится с помощью «выпадающих» меню. Параметр External reset может принимать следующие значения: none − дополнительный управляющий сигнал не используется; РИС. 2.18 rising - для управления используется возрастающий сигнал; falling − для управления используется ниспадающий сигнал; either − на работу блока влияет любое изменение амплитуды управляющего сигнала. Параметр Initial condition source принимает одно из двух значений: internal − используется собственная установка начального значения сумматора; external − установка начального значения производится извне. Если выбранные пользователем значения двух рассматриваемых параметров предполагают наличие дополнительных входных сигналов, то на графическом изображении блока появляются дополнительные входные порты (после нажатия кнопки Apply в окне настроек блока);
начальное состояние сумматора (Initial condition); значение вводится в строке редактирования либо как числовая константа, либо в виде вычисляемого выражения; флажок Limit output (Ограничение выходного значения сумматора) определяет, будут ли использоваться следующие ниже 4 параметра настройки; верхнее предельное значение времени ( Upper saturation limit); по умолчанию − не ограничено (inf); нижнее предельное значение времени (Lower saturation limit); по умолчанию параметр имеет значение -inf; флажок показать порт насыщения (Show saturation port); флажок показать порт состояния (Show state port). Параметры 5... 9 используются следующим образом. Если флажок Limit output установлен, то при переходе значения сумматора через верхний или нижний предел на дополнительных выходах блока (saturation port и state port) формируется единичный сигнал. Чтобы этот сигнал можно было использовать для управления работой Sмодели, флажки Show saturation port и Show state port должны быть включены (при этом на графическом изображении блока появляются обозначения портов). Особенность порта state port состоит в том, что снимаемый с него сигнал может быть использован только для прерывания алгебраического цикла или для согласования состояния подсистем модели. 2.2.4. Раздел Linear (Линейные элементы) Раздел содержит блоки, которые можно условно разделить на две группы: блоки, непосредственно предназначенные для описания линейных непрерывных систем, и блоки общего назначения, которые могут быть использованы в модели любой системы (рис. 2.19). К первой группе относятся: 1. Gain − «линейный усилитель» (умножитель). 2. Transfer Fcn − «передаточное звено». 3. State-Space − блок формирования состояния системы. 4. Zero-Pole. 5. Derivative − блок вычисления производной входного сигнала по времени (du/dt). 6. Dot Product − блок вычисления свертки (скалярного произведения) двух входных сигналов. 7. Matrix Gain − матричный усилитель (умножитель) входного сигнала. Во вторую группу входят три блока: 1. Integrator − сумматор непрерывного времени. 2. Sum − блок суммирования входных сигналов.
3. Slider Gain − блок изменения коэффициента усиления. В соответствии с общей концепцией книги более подробно будут рассмотрены блоки, относящиеся ко второй группе. Блок Integrator производит вычисление «времени существования» входного сигнала, и, подобно блоку Discrete-Time Integrator, может быть использован для определения временных характеристик моделируемой системы (или отдельных ее подсистем). Параметры настройки блока полностью идентичны параметрам настройки блока DiscreteTime Integrator, рассмотренным ранее. Некоторое отличие имеет лишь последний из них: вместо дискретности суммирования в данном случае требуется указать точность вычислений (Absolute tolerance). Блок Sum может использоваться в двух режимах: • сложения входных сигналов (в том числе с разными знаками); Рис. 2.19 • суммирования элементов вектора, поступающего на вход блока. Для управления режимами работы блока используется один параметр − List of signs (Список знаков). Значения этого параметра могут задаваться тремя способами: в виде последовательности знаков “+” и “-”; при этом число знаков определяет число входов блока, а сам знак − полярность входного сигнала; в виде целой положительной константы (больше 1); ее значение равно числу входов блока, а все входы считаются положительными; в виде символа “1”, который указывает на использование блока во втором режиме. Блок Slider Gain является одним из элементов взаимодействия пользователя с моделью в процессе моделирования. В активном состоянии блок представляет собой диалоговое окно, обеспечивающее установку значения некоторого параметра модели с помощью «ползункового» регулятора (рис. 2.20). Блок Slider Gain становится активным после того, как будет помещен в окно блок-диаграммы создаваемой модели. Чтобы открыть окно с регулятором, необходимо дважды щелкнуть на изображении блока ЛКМ. Окно Slider Gain имеет три поля ввода: для указания нижнего уровня параметра (Low), верхнего уровня (High) и текущего значения.
Рис. 2.20 2.2.5. Раздел Nonlinear (Нелинейные элементы) По составу элементов это самый большой и, пожалуй, наиболее полезный для имитационного моделирования раздел библиотеки SIMULINK. Он содержит 30 блоков, которые условно можно разделить по назначению на несколько групп (рис. 2.21). Первую группу образуют блоки, реализующие элементарные математические функции: 1. Блок Abs − формирует абсолютное значение входного сигнала (этот блок не имеет параметров настройки); 2. Блок Trigonometric Function обеспечивает преобразование входного сигнала с помощью одной из тригонометрических функций; выбор требуемой функции производится в окне настройки параметров блока с помощью «выпадающего» меню (оно становится доступным только после перемещения блока в поле блокдиаграммы); 3. Блок Math Function позволяет Рис. 2.21 использовать для преобразования входного сигнала элементарные нетригонометрические функции (вычисление экспоненты, натурального и десятичного логарифмов, возведение в степень, извлечение квадратного корня и т. д.). Нужная функция выбирается с помощью «выпадающего» меню; 4. Блок Rounding Function содержит различные функции округления значения амплитуды входного сигнала; выбор конкретного метода округления выполняется также с помощью «выпадающего» меню;
5. Блок MinMax обеспечивает поиск минимального или максимального элемента входного вектора. Цель поиска задается в окне настроек блока. Второй параметр настройки − число входов блока. Для блоков 2... 5 имя выбранной функции выводится на графическом изображении блока; 6. Блок Fcn − это универсальный «вычислительный» блок; в качестве параметра настройки блока можно ввести любое вычисляемое выражение, аргументом которого является значение входного сигнала; особенность этого блока состоит в том, что аргумент выражения должен быть указан явно. Для обозначения входного сигнала используется символ и. Если входной сигнал является вектором, то для операций, выполняемых над отдельными его элементами, аргумент также должен быть задан явно. Например, сложение двух элементов входного сигнала должно быть записано в таком виде: u (1)+ u (2); Замечание. Вычисляемое выражение должно давать только скалярное значение. Это ограничение снимается при использовании блока MATLAB Fcn. 7. Блок MATLAB Fcn позволяет применить к входному сигналу любую подпрограмму обработки, реализованную в виде М-файла. Это может быть как библиотечная функция пакета MATLAB, так и подпрограмма, созданная разработчиком S-модели. В первом случае использование блока MATLAB Fcn аналогично использованию блока Fcn. Вычисляемое выражение вводится в окне настроек блока в строке MATLAB function. Если оно содержит только обращение к библиотечной функции, то ее аргумент можно явно не указывать. Например, для вычисления квадратного корня входного значения достаточно ввести имя функции sqrt. Другой, более существенной, особенностью блока MATLAB Fcn является наличие второго параметра настройки − Output width (Ширина выходного сигнала). Это означает, что результатом работы блока может быть не только скаляр, но и вектор. Число его элементов должно быть равно значению параметра Output width; 8. Блок Product позволяет выполнять умножение или деление нескольких входных сигналов (величин). В качестве параметров настройки могут указываться число входов блока и вид выполняемой операции. Задание значений этих параметров аналогично настройке блока Sum из раздела Линейные элементы. В качестве знака операции умножения используется символ «*», а для указания операции деления − символ «/». Если в качестве значения параметра настройки блока ввести «1», то будет вычисляться произведение элементов входного вектора (в этом случае на изображении блока выводится символ Р). Вторую группу образуют блоки, обеспечивающие логическую обработку входного сигнала. Наиболее важными и полезными из них являются следующие: 1. Блок Logical Operator содержит набор основных логических операций: AND (операция логического умножения «И»), OR (логическое сложение
«ИЛИ»), NAND («И-НЕ»), NOR («ИЛИ-НЕ»), XOR (сложение по модулю 2), NOT (операция логического отрицания). Выбор требуемой функции выполняется с помощью «выпадающего» меню; имя функции отображается на иконке блока. Другим параметром настройки блока является число аргументов логической операции, то есть число входных портов блока (Number of input ports). Его значение вводится в строке редактирования и должно быть натуральным числом. Максимально допустимое число входов блока практически не ограничено; 2. Блок Relational Operator реализует операции отношения над двумя входными сигналами: >, ,