И.В.Черных. Simulink. И. В. Черных. "Simulink Инструмент моделирования динамических систем"
Скачать 3.7 Mb.
|
Часть команд приведенных в таблице требуют указания индекса блока (см. п. 13.1.4). При использовании таких команд вместо имени блока можно указывать команду gcb (получить путь текущего блока), предварительно выделив нужный блок в окне модели. Пример командного окна MATLAB в процессе отладки модели показан на рис. 13.10. Рис. 13.10. Командное окно MATLAB в процессе отладки модели 14. Повышение скорости и точности расчетов На точность и скорость расчета модели в Simulink можно воздействовать многими способами, включая структуру модели и ее параметры. Решающие модули Simulink работают точно и эффективно и с параметрами заданными для них “по умолчанию”. Однако для некоторых моделей можно добиться лучших результатов по скорости и точности, если задать более точно параметры решателя дифференциальных уравнений. Также, если предполагаемое поведение модели известно, то можно используя эту информацию повысить скорость и точность расчетов. 14.1. Повышение скорости расчета Малая скорость моделирования может иметь много причин. Среди них можно выделить основные: Модель содержит блок MATLAB Fcn. При использовании блока MATLAB Fcn в модели Simulink на каждом расчетном шаге обращается к интерпретатору языка MATLAB для выполнения расчетов в данном блоке. Вместо блока MATLAB Fcn , если это возможно, следует использовать блоки Fcn или Math Function. Модель включает S-функцию, написанную на языке MATLAB. В этом случае также происходит обращение к интерпретатору языка MATLAB на каждом расчетном шаге. Вместо MATLAB S-функции более предпочтительным было бы использование S-функций написанных на языках C или Fortran и откомпилированных в исполняемый машинный код в виде динамической библиотеки. Модель включает блок памяти Memory. Использование блока памяти заставляет решающие модули с переменным порядком (ode15s и ode113) выполнять снижение порядка до первого на каждом расчетном шаге. Максимальный размер шага (Max step size) слишком мал. Если этот параметр был изменен, то следует попробовать выполнить моделирование снова, установив этот параметр равным auto. Задана слишком высокая точность расчетов. Обычно значение абсолютной погрешности (Relative tolerance) заданное равным 0.1% достаточно для большинства расчетов. При слишком малых значениях этого параметра шаг расчета может оказаться также достаточно малым, что приведет к замедлению расчетов. Задан слишком большой интервал расчета по времени. Как правило, при моделировании динамических систем переходные процессы представляют больший интерес, нежели установившийся режим. По достижении установившегося режима расчет можно прекратить, поскольку далее никаких изменений в состоянии модели не будет. Желательно заранее оценить предполагаемое время расчета исходя из знаний о моделируемом объекте. Модель может оказаться жесткой, а используемый решатель не предназначен для моделирования жестких систем. Следует попробовать использовать методы ode15s или ode23tb и сравнить время расчета при решении этими методами. В модели используются блоки, шаг дискретизации которых (Sample time) не является кратным. В этом случае Simulink уменьшает шаг расчета до такого значения, чтобы он был кратен шагу дискретизации каждого блока. Например, если шаг дискретизации одного блок равен 0.5, а другого – 0.7, то Simulink установит максимальное значение шага расчета равное 0.1 . Модель содержит алгебраический контур. Алгебраические контуры рассчитываются в Simulink с помощью итерационной процедуры на каждом шаге расчета, что замедляет общее время расчета. Модель имеет блок Random Number, который передает свой выходной сигнал на вход интегратора (блок Integrator). Предпочтительнее использовать блок Band-Limited White Noise block из библиотеки Sources. Модель включает большое число блоков Scope. Блоки требуют значительного объема памяти для хранения отображаемых данных, что может привести к использованию компьютером виртуальной (дисковой) памяти и существенному замедлению расчетов. В блоках Scope параметр Limit data points to last задан значительно меньшим, чем фактическое число расчетных шагов (либо флажок этого параметра снят). В этом случае, при превышении числом шагов значения параметра Limit data points to last, для отображения каждой новой расчетной точки будет выполняться процедура выделения памяти, что существенно замедляет скорость расчета. Рекомендуется заранее установить параметр Limit data points to last большим, чем фактическое число расчетных шагов. Имеет смысл также задать параметр Decimation (прореживание) большим 1, чтобы сократить число хранимых блоком Scope данных. Скорость расчета можно также повысить в несколько раз, используя ускоренный (Accelerator) режим расчета. Это можно сделать с помощью меню Tools или панели инструментов. В ускоренном режиме расчета предварительно проводится трансляция модели в исполнительный код (dll-файл), а затем уже проводится сам расчет. Некоторые дополнительные затраты времени на трансляцию с лихвой окупаются ускорением расчета модели. Однако при изменении структуры модели процедура трансляции будет повторена. К сожалению, ускоренный режим расчета не может быть использован в моделях имеющих алгебраические контуры. Существенный выигрыш по времени может дать использование дискретных моделей вместо непрерывных. Наиболее существенным же с точки зрения скорости вычислений может оказаться правильный выбор уровня детализации модели. К примеру, если выполняется моделирование системы электроснабжения города, вряд ли стоит моделировать каждый потребитель электрической энергии: электрический двигатель, чайник, сварочный аппарат и т.п. Вполне достаточным будет создание обобщенных моделей электрических потребителей на уровне заводского цеха, жилого дома, трамвайного парка и т.п. 14.2. Повышение точности расчета Чтобы проверить достаточно ли точно выполняется моделирование, следует провести сравнительные расчеты с разными значениями параметра Relative tolerance (относительная погрешность). К примеру, можно провести расчет с заданным “по умолчанию” значением этого параметра – 1e-3 и с меньшим (1e-4) значением. Если результаты расчетов отличаются незначительно, то можно полагать, что найденное решение является верным. Если решения значительно отличаются в начальной стадии, то следует задать в явном виде достаточно малый начальный шаг расчета (Initial step size). Если решение оказывается неустойчивым, то это может быть вызвано следующими причинами: Моделируемая система сама является неустойчивой. Используется метод ode15s. Следует ограничить порядок величиной 2 или использовать метод ode23s. Если решение кажется не точным: Следует задать в явном виде параметр Absolute tolerance (абсолютная погрешность) и выполнить ряд расчетов, уменьшая величину этого параметра. Если уменьшение абсолютной погрешности точность расчетов не улучшается, следует уменьшить относительную погрешность (что приведет уменьшению шага расчета) либо в явном виде задавать достаточно малую величину максимального шага расчета. 15. Обзор набора инструментов Simulink Performance Tools Simulink Performance Tools включает четыре приложения, которые расширяют возможности Simulink и существенно увеличивают производительность программы. Использование этих инструментов может значительно повысить скорость процесса моделирования. Пользователь получает инструмент для сравнения разных вариантов модели, а также для быстрого тестирования модели. Набор инструментов содержит: Simulink Accelerator, ускоряющий моделирование, благодаря использованию скомпилированного кода вместо того, чтобы запускать модель в режиме интерпретатора. Simulink Model Profiler, собирающий данные о производительности в ходе выполнения модели и генерирующий отчет со списком информации о времени выполнения для каждой составляющей в детальной и обобщенной формах. Simulink Model Coverage, помогающий улучшить модель и определить области повышенного риска в моделях Simulink и Stateflow. Приложение генерирует детальный HTML отчет, показывающий какие блоки, состояния и условия были выполнены в ходе имитации. Simulink Model Differencing, позволяющий сравнить две модели Simulink и генерирующий графическое изображение различий. 15.1. Simulink Accelerator Simulink Accelerator использует технологию генерации кода и пользовательский компилятор языка C для создания выполняемого файла (dll-файла), который заменяет интерактивный код, обычно используемый программой Simulink (в состав программы Simulink входит собственный компилятор lcc). Simulink Accelerator обеспечивает: Имитацию приблизительно в 2 – 10 раз более быструю, чем в нормальном (не ускоренном режиме). Степень повышения производительности связана с размером и сложностью модели. Увеличение размера или сложности обычно приводит к увеличению степени производительности. Тесную интеграцию с наборами блоков Simulink. Simulink Accelerator полностью совместим с наборами блоков Simulink. В частности, с Fixed-Point Blockset, Power System Blockset и DSP Blockset. Поддержку отладчика Simulink. Процесс отладки больших и сложных моделей значительно ускоряется. Доступ из программ. Контроль за выполнением модели может быть осуществлен из командной строки MATLAB или из m-файлов. Для перехода в ускоренный режим расчета необходимо в меню Simulation выбрать пункт Accelerator. После запуска модели на расчет будет произведена компиляция модели и выполнен расчет. При повторных запусках, если структура модели не менялась, компиляция выполнятся не будет, а будет сразу производиться расчет. При изменении параметров блоков повторная компиляция также не производится. Для возврата в обычный режим расчета следует меню Simulation выбрать пункт Normal. При использовании ускоренного режима расчета следует иметь в виду, что модели, имеющие замкнутые алгебраические контуры, не могут быть рассчитаны в этом режиме. 15.2. Simulink Model Profiling Simulink Model Profiling собирает данные о производительности в процессе выполнения модели и затем генерирует отчет, называемый профилем имитации на основании собранных данных. Этот отчет состоит из двух HTML-файлов: обобщающий файл и детальный файл. Обобщающий файл аккумулирует временную информацию и выводит ее в список, упорядоченный по временам выполнения для каждого метода. Детальный файл показывает, как много времени использует Simulink выполняя каждый метод, требующийся для моделирования, включая производные и основные методы. Для выполнения профилирования необходимо выполнить команду Profiler в меню Tools и запустить модель на расчет. По завершении расчета будет открыт файл отчета в окне справочной системы. Гиперссылки в отчете позволяют просмотреть детальную информацию для каждого метода. В результате пользователь может легко локализовать области модели, которые требуют наибольшего времени выполнения и быстро определить, где необходимо сконцентрировать усилия по оптимизации. На рис. 15.1 приведен пример модели и фрагмент отчета профилирования для нее. Рис. 15.1 Пример модели и отчета профилирования. [Скачатьпример] 15.3. Simulink Model Coverage При разработке больших моделей, имеющих сложную логику переключения путей по которым распространяются сигналы, пользователь может столкнуться с проблемой тестирования модели. В ходе тестирования пользователь обычно пытается разработать тест, который охватывал бы все возможные пути, чтобы быть уверенным, что модель полностью проверена. Simulink Model Coverage помогает проверить эффективность подобных проверочных тестов. Используя Simulink Model Coverage, пользователь может интерпретировать поведение модели внутри индивидуальных блоков Simulink и объектов Stateflow, определить степень выполнения имитации (за счет вычисления количества выполнений каждого из блоков), а также идентифицировать избыточность или недостаточность частей модели. Для определения полноты тестирования модели возможна комбинация данных, полученных из разных имитаций. Simulink Model Coverage обеспечивает: Охват блоков Simulink и объектов Stateflow. Генерацию HTML документа, который представляет собой полный отчет по выполнению частей модели. Сохранение и загрузку данных охвата между сеансами имитации. Поддержку интерфейса для ввода команд, который автоматизирует выполнение имитаций и сбор данных. Simulink Model Coverage позволит получить необходимый уровень тестирования разработки и определить количество тестов, необходимых для полной проверки. Анализ набора тестов в ходе разработки существенно уменьшает риск дефектов конструкции на поздних стадиях создания модели. Для использования Simulink Model Coverage необходимо задать параметры отчета с помощью пункта Coverage Setting меню Tools. После выполнения моделирования будет открыт файл отчета в окне справочной системы. На рис. 15.2 приведена схема модели и отчет, полученный я помощью Simulink Model Coverage. Из рисунка видно, что при данных параметрах схемы выполняется тестирования только 50% модели. Для полной проверки модели необходимо, чтобы сигнал, подаваемый на управляющий вход ключа менял свою полярность. Рис. 15.2 Пример модели и отчета, полученного с помощью Simulink Model Coverage [Скачатьпример] 15.4. Simulink Model Differencing Simulink Model Differencing сравнивает две Simulink-модели и генерирует графическое изображение различий между ними. На данном изображении выделяются одинаковые блоки моделей, имеющие различные атрибуты (красным цветом) и блоки, которые присутствуют только в одной из двух моделей (синим цветом). Пользователь может настроить изображение, чтобы просмотреть только блоки с графическими различиями, только блоки с неграфическими отличиями или блоки с любыми отличиями. Для выполнения сравнения моделей необходимо выполнить команду Model differences\Merge/Compare two models из меню Tools окна первой модели и в процессе диалога выбрать файл второй модели. Возможно также выполнить сравнение текущего состояния модели и ее последней записи на диске. На рис. 15.3 показан пример сравнения моделей. Рис. 15.3. Cравнение моделей с помощью Simulink Model Differencing [Скачатьпример] 16. Simulink-функции 16.1. Введение Simulink-функции (S-функции, S-functions) являются описанием блока на одном из языков программирования: MATLAB, C, C++, Ada, или Fortran. Набор стандартных блоков Simulink, достаточно обширен, однако в практике моделирования встречаются ситуации, когда нужного блока нет, либо структурное моделирование делает модель слишком сложной. В этом случае необходимо использовать технологию S-функций для создания нужного блока. С помощью языков программирования пользователь может создать описание сколь угодно сложного блока и подключить его к Simulink-модели, при этом с точки зрения взаимодействия пользователя с моделью, блок на основе S-функции ничем не отличается от стандартного библиотечного блока Simulink. Создаваемые блоки могут быть непрерывными, дискретными или гибридными. S-функции, созданные на C, C++, Ada или Fortran компилируются в исполняемые (*.dll) файлы, за счет чего обеспечивается повышенная скорость выполнения таких блоков. Такие S-функции обладают еще и дополнительными возможностями, которые включают работу с разными типами данных (целыми, действительными и комплексными числами различной степени точности), использование матриц в качестве входных и выходных переменных (MATLAB S-функции могут оперировать только векторами в качестве входных и выходных переменных), а также больший набор внутренних функций (сallback-методов). Чаще всего S-функции используются при создании новых библиотечных блоков, блоков, обеспечивающих взаимодействие Simulink с аппаратными средствами компьютера, при создании блоков на основе математических уравнений, блоков реализующих анимационные возможности MATLAB, а также при подключении к модели Simulink существующего программного кода языков высокого уровня. 16.1. Блок S-function |