Интерфейс командной строки отладчика Simulink моделей
Интерфейс командной строки дает пользователю доступ ко всем возможностям отладчика.
Запуск отладчика в режиме командной строки возможен с помощью команды, задаваемой в рабочем окне MATLAB:
sldebug('My_model'), где My_model –имя отлаживаемой модели.
Для работы с отладчиком требуется вводить команды в главном окне MATLAB. Список команд приведен в Таблице 13.1.
Таблица 13.1
Команда | Краткая форма | Повтор | Назначение |
step | s | да | Переход к следующему блоку |
next | n | да | Переход к следующему временному шагу |
disp [s:b | gcb] | d | да | Показ входных и выходных сигналов блока при остановке |
undisp <s:b | gcb> | und | да | Удаление блока из списка отображаемых |
trace <s:b | gcb> | tr | да | Показ входных и выходных сигналов блока во время выполнения |
untrace <s:b | gcb> | unt | да | Удаление блока из списка трассировки |
probe [s:b | gcb] | p | нет | Показ входных и выходных сигналов указанного блока |
break <s:b | gcb> | b | нет | Вставка точки остановки при входе в блок |
bafter <s:b | gcb> | ba | нет | Вставка точки остановки при выходе из блока |
bshow s:b | bs | нет | Показ указанного с помощью индекса блока |
clear <s:b | gcb> | cl | нет | Удаление точки останова |
zcbreak | zcb | нет | Прерывание при обнаружении скачкообразного перехода сигналом нулевого уровня (непредусмотренное пересечение нуля) |
zclist | zcl | нет | Список блоков дающих непредусмотренное пересечение нуля |
xbreak | x | нет | Прерывание при переменном шаге расчета в состоянии требующем ограничения шага расчета |
tbreak [t] | tb | нет | Установка/удаление остановки в указанный момент времени |
nanbreak | na | нет | Установка/удаление остановки при обнаружении не числового (NaN, Inf) значения |
continue | c | да | Продолжение моделирования |
run | r | нет | Окончание режима отладки и продолжение расчета в обычном режиме |
stop | sto | нет | Остановка моделирования |
quit | q | нет | Прерывание моделирования |
status [all] | stat | нет | Показ параметров отладчика |
states | state | нет | Показ текущих значений переменных состояния |
systems | sys | нет | Показ списка невиртуальных подсистем |
slist | sli | нет | Список невиртуальных блоков |
minor | m | нет | Режим отладки с использованием внутренних (малых) шагов |
ishow | i | нет | Включение/выключение режима показа информации об интегрирующих блоках |
emode | e | нет | Вывод информации о текущем режиме моделирования (обычный или ускоренный) |
probe level {all} | io | нет | Установить уровень подробности показа сигналов блоков (все либо только входные и выходные) | |
atrace level | at | нет | Установка уровня отображения информации при трассировке алгебраических контуров (0 –ничего, 4 - все) |
ashow <gcb | s:b> | as | нет | Показ алгебраического контура, содержащего указанный блок |
ashow s#n | as | нет | Показ алгебраического контура с номером nв подсистеме (модели) s |
ashow clear | as | нет | Отменить показ алгебраического контура |
Часть команд приведенных в таблице требуют указания индекса блока (см. п. 13.1.4). При использовании таких команд вместо имени блока можно указывать команду gcb(получить путь текущего блока), предварительно выделив нужный блок в окне модели.
Пример командного окна MATLAB в процессе отладки модели показан на рис. 13.10.
Рис. 13.10. Командное окно MATLAB в процессе отладки модели
14. Повышение скорости и точности расчетов
На точность и скорость расчета модели в Simulink можно воздействовать многими способами, включая структуру модели и ее параметры. Решающие модули Simulink работают точно и эффективно и с параметрами заданными для них “по умолчанию”. Однако для некоторых моделей можно добиться лучших результатов по скорости и точности, если задать более точно параметры решателя дифференциальных уравнений. Также, если предполагаемое поведение модели известно, то можно используя эту информацию повысить скорость и точность расчетов.
Повышение скорости расчета
Малая скорость моделирования может иметь много причин. Среди них можно выделить основные:
- Модель содержит блок 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-файл), а затем уже проводится сам расчет. Некоторые дополнительные затраты времени на трансляцию с лихвой окупаются ускорением расчета модели. Однако при изменении структуры модели процедура трансляции будет повторена. К сожалению, ускоренный режим расчета не может быть использован в моделях имеющих алгебраические контуры.
Существенный выигрыш по времени может дать использование дискретных моделей вместо непрерывных.
Наиболее существенным же с точки зрения скорости вычислений может оказаться правильный выбор уровня детализации модели. К примеру, если выполняется моделирование системы электроснабжения города, вряд ли стоит моделировать каждый потребитель электрической энергии: электрический двигатель, чайник, сварочный аппарат и т.п. Вполне достаточным будет создание обобщенных моделей электрических потребителей на уровне заводского цеха, жилого дома, трамвайного парка и т.п.
Повышение точности расчета
Чтобы проверить достаточно ли точно выполняется моделирование, следует провести сравнительные расчеты с разными значениями параметра 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 и генерирующий графическое изображение различий.
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.
При использовании ускоренного режима расчета следует иметь в виду, что модели, имеющие замкнутые алгебраические контуры, не могут быть рассчитаны в этом режиме.
Simulink Model Profiling
Simulink Model Profiling собирает данные о производительности в процессе выполнения модели и затем генерирует отчет, называемый профилем имитации на основании собранных данных. Этот отчет состоит из двух HTML-файлов: обобщающий файл и детальный файл. Обобщающий файл аккумулирует временную информацию и выводит ее в список, упорядоченный по временам выполнения для каждого метода. Детальный файл показывает, как много времени использует Simulink выполняя каждый метод, требующийся для моделирования, включая производные и основные методы.
Для выполнения профилирования необходимо выполнить команду Profiler в меню Tools и запустить модель на расчет. По завершении расчета будет открыт файл отчета в окне справочной системы. Гиперссылки в отчете позволяют просмотреть детальную информацию для каждого метода. В результате пользователь может легко локализовать области модели, которые требуют наибольшего времени выполнения и быстро определить, где необходимо сконцентрировать усилия по оптимизации. На рис. 15.1 приведен пример модели и фрагмент отчета профилирования для нее.
Рис. 15.1 Пример модели и отчета профилирования.
[Скачать пример]
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
[Скачать пример]
Simulink Model Differencing
Simulink Model Differencing сравнивает две Simulink-модели и генерирует графическое изображение различий между ними. На данном изображении выделяются одинаковые блоки моделей, имеющие различные атрибуты (красным цветом) и блоки, которые присутствуют только в одной из двух моделей (синим цветом). Пользователь может настроить изображение, чтобы просмотреть только блоки с графическими различиями, только блоки с неграфическими отличиями или блоки с любыми отличиями. Для выполнения сравнения моделей необходимо выполнить команду Model differences\Merge/Compare two modelsиз меню Tools окна первой модели и в процессе диалога выбрать файл второй модели. Возможно также выполнить сравнение текущего состояния модели и ее последней записи на диске.
На рис. 15.3 показан пример сравнения моделей.
Рис. 15.3. Cравнение моделей с помощью Simulink Model Differencing