оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации
Свободно распространяемое бесплатное ПО компьютерного моделирования

Система моделирования динамических систем Simulink

Редактор дифференциальных уравнений DEE

И.В.Черных

  1. Редактор дифференциальных уравнений DEE
  2. Использование Simulink LTI-Viewer для анализа динамических систем
  3. Основные команды MATLAB для управления Simulink-моделью
  4. Отладчик Simulink моделей
  5. Повышение скорости и точности расчетов
  6. Обзор набора инструментов Simulink Performance Tools

Simulink содержит специальный блок – Differential Equation Editor (редактор дифференциальных уравнений). С помощью этого блока можно задавать системы дифференциальных уравнений в явной форме Коши и выполнять их решение. Вызов редактора выполняется вводом команды dee в окне MATLAB.

Использование редактора рассмотрим на примере расчета переходных процессов в последовательном колебательном контуре. Задача заключается в нахождении тока протекающего в электрической цепи и напряжения на конденсаторе C после замыкания ключа. Схема цепи показана на рис. 10.1. Начальные условия полагаем нулевыми (ток в цепи отсутствует, и конденсатор не заряжен).

Рис.10.1. Расчетная электрическая схема

Предварительно составляем систему дифференциальных уравнений, описывающую электрическую цепь:

,

,

где i – ток в цепи, - напряжение на конденсаторе

Записываем данную систему уравнений в явной форме Коши:

,

.

Вводим “машинные” переменные:

В итоге система уравнений примет вид:

,

Введение “машинных” переменных, связано с тем, что редактор дифференциальных уравнений требует задавать в виде векторов входные воздействия (u) и переменные состояния (х) и имена этих векторов жестко заданы.

После получения системы дифференциальных уравнений с использованием “машинных” переменных, необходимо запустить редактор командой dee в окне MATLAB. Затем нужно поместить блок редактора в окно с создаваемой моделью, открыть окно редактора и ввести систему дифференциальных уравнений, начальные условия, а также алгебраические уравнения для расчета выходных сигналов (в рассматриваемой задаче выходные переменные равны переменным состояния). Также необходимо указать размерность вектора входного сигнала (# of inputs). Схема модели и окно редактора показаны на рис. 10.2. Там же приведены и результаты расчета.

Рис. 10.2. Модель, использующая редактор дифференциальных уравнений

[Скачать пример]

Значения постоянных коэффициентов системы уравнений можно задавать не только как числовые константы, но и использовать переменные рабочей области MATLAB.

[Скачать пример]

Достоинством редактора DEE является также то, коэффициенты дифференциального уравнения могут быть переменными и задаваться также как и входные сигналы (через входной порт). В качестве примера на рис. 10.3 показан вариант предыдущей модели, в котором величина сопротивления увеличивается в 10 раза в процессе расчета. В системе дифференциальных уравнений сопротивление записано как входной сигнал u(2).

Рис. 10.3 Второй вариант модели

[Скачать пример]

11. Использование Simulink LTI-Viewer для анализа динамических систем

Инструмент Simulink LTI-Viewer входит в состав пакета прикладных программ Control System Toolbox и предназначен для анализа линейных стационарных систем. С помощью данного инструмента можно легко построить частотные характеристики исследуемой системы, получить ее отклики на единичные ступенчатое и импульсное воздействия, найти нули и полюса системы и т.д.

Краткий алгоритм работы с Simulink LTI-Viewer приведен ниже.

11.1. Работа с Simulink LTI-Viewer

1. Выполнить команду Tools\Linear Analysis... окна Simulink-модели.

В результате выполнения команды откроется окно Model_Inputs_and_Outputs как это показано на рис. 11.1, а также пустое окно Simulink LTI-Viewer .

Рис. 11.1 Исследуемая модель и окно Model_Inputs_and_Outputs инструмента Simulink LTI-Viewer

2. Установить блок Input Point на входе и блок Output Point на выходе исследуемой системы, как это показано на рис. 11.2.

Рис. 11.2 Исследуемая модель с установленными блоками

Input Point и Output Point

3. В окне LTI Viewer выполнить команду Simulink\Get Linearized Model.

Данная команда выполняет линеаризацию модели и строит реакцию системы на единичное ступенчатое воздействие. Результат выполнения данного пункта показан на рис. 11.3

Рис. 11.3 Реакция системы на единичное ступенчатое воздействие.

Если система имеет несколько входов и выходов и для всех них установлены блоки Input Point и Output Point, то на графике будет отображено несколько окон показывающих реакцию на каждом выходе при воздействии на каждый вход.

5. Для получения остальных характеристик системы необходимо выполнить команду Edit\Plot Configuration... в окне LTI Viewer. В результате выполнения этой команды откроется окно Plot Configuration, показанное на рис. 11.4.

Рис. 11.4 Окно Plot Configuration

В открывшемся окне можно выбрать число отображаемых графиков (панель Select a response plot configuration) и вид отображаемых графиков (панель Response type). Для построения доступны следующие графики (диаграммы):

step – Реакция на единичное ступенчатое воздействие.

impulse – Реакция на единичное импульсное воздействие.

bode – Логарифмические амплитудная и фазовая частотные характеристики.

bode mag – Логарифмическая амплитудная частотная характеристика.

nyquist – Диаграмма Найквиста.

nichols – Годограф Николса.

sigma – Сингулярные числа.

pole/zero – Нули и полюса системы.

На рис. 11.5 приведен пример окна Simulink LTI-Viewer с несколькими различными характеристиками исследуемой системы.

Рис. 11.5 Окно Simulink LTI-Viewer с несколькими графиками.

Настройку внешнего вида графиков можно выполнить с помощью команды Edit\Line Styles… (установка вида и цвета линий, вида маркеров).

[Скачать пример]

11.2. Настройка Simulink LTI-Viewer

С помощью команды Edit\Viewer Preferences… выполняются следующие виды настройки:

1. Установка единиц измерения (вкладка Units). Вид окна при настройке единиц измерения показан на рис. 11.6.

Рис. 11.6 Вкладка Units

Вкладка Units окна позволяет задать единицы измерения частоты (рад/c или Гц), уровня (dB или абсолютные единицы), фазы (градусы или радианы), а также установить вид шкалы частоты (логарифмический или линейный).

2. Установка стиля графиков (вкладка Style). На данной вкладке можно выполнить настройку шрифтов окна Simulink LTI-Viewer (панель Fonts), выбрать цвет осей графиков (панель Colors), а также задать нанесение линий сетки на графики (флажок Show grids). Внешний вид вкладки Style показан на рис. 11.7.

Рис. 11.7 Вкладка Style

3. Установка параметров расчета переходного процесса (вкладка Characteristics). Данная вкладка позволяет задать параметры установленные "по умолчанию" для вычисления времени нарастания и времени переходного процесса. По умолчанию Simulink LTI-Viewer вычисляет время переходного процесса как время, когда переходная функция входит в 2% зону и больше не выходит из нее (параметр Show setting time within). Также можно изменить параметры для вычисления времени переходного процесса (Show rise time from). На данной вкладке имеется также флажок Unwrap phase, установка которого позволяет избежать отображения разрывов в фазо-частотной характеристике, связанных с областью определения функции arctg, вычисляющей фазовый сдвиг. Внешний вид вкладки Characteristics показан на рис. 11.8.

Рис. 11.7 Вкладка Characteristics

4. Установка интервалов времени и частоты (вкладка Parameters). На данной вкладке задается временной интервал для расчета переходного процесса (панель Time Vector), а также интервал частот для расчета частотных характеристик (панель Frequency Vector). Внешний вид вкладки Parameters показан на рис. 11.8.

Рис. 11.8. Вкладка Parameters

Векторы времени и частоты можно вычислять в автоматическом режиме (Generate automatically), ввести конкретное значение для времени окончания расчета (Define stop time) или диапазон значений по частоте (Define range), либо задать непосредственно вектор значений времени или частоты (Define vector).

11.3. Экспорт модели

Команда File/Export позволяет выполнить экспорт модели в виде матриц уравнений пространства состояния в рабочую область MATLAB или в файл. При выполнении этой команды открывается окно диалога (см. рис. 11.9) в котором необходимо выбрать вариант экспорта.

Рис. 11.9. Окно диалога при экспорте модели.

В случае экспорта в рабочую область MATLAB в ней появляется структура с именем имя_модели_1 (при последующих операциях экспорта имя_модели_2, имя_модели_3 и т.д.). Для рассматриваемой модели с именем EX_S_LTI_V.mdl имя структуры будет EX_S_LTI_V_1 . Для просмотра значений матриц уравнений пространства состояния необходимо ввести в командной строке MATLAB имя структуры и нажать клавишу Enter на клавиатуре. В командном окне появится распечатка значений матриц:

>> EX_S_LTI_V_1 % Ввод с клавиатуры (символы >> не вводятся)

a =
       EX_S_LTI_V/T  EX_S_LTI_V/T  EX_S_LTI_V/T
 EX_S_LTI_V/T    -0.5    -1     -10
 EX_S_LTI_V/T     1     0     0
 EX_S_LTI_V/T     0     1     -10

b = 
       Input Point
 EX_S_LTI_V/T    1
 EX_S_LTI_V/T    0
 EX_S_LTI_V/T    0

c = 
       EX_S_LTI_V/T  EX_S_LTI_V/T  EX_S_LTI_V/T
 Output Point     0     1     0

d = 
       Input Point
 Output Point      0

Continuous-time model.

Для работы с матрицами удобно извлечь их из структуры командами вида:

A = имя_структуры.a
B = имя_структуры.b
C = имя_структуры.c
D = имя_структуры.d

Применительно к рассматриваемой модели эти команды будут выглядеть следующим образом:

>> A=EX_S_LTI_V_1.a      % Ввод с клавиатуры (символы >> не вводятся)
A =
 -0.5000 -1.0000  -10.0000
  1.0000      0      0
     0   1.0000  -10.0000

>> B=EX_S_LTI_V_1.b      % Ввод с клавиатуры (символы >> не вводятся)
B =
  1.0000
     0
     0

>> C=EX_S_LTI_V_1.c      % Ввод с клавиатуры (символы >> не вводятся)
C =
     0  1.0000     0

>> D=EX_S_LTI_V_1.d      % Ввод с клавиатуры (символы >> не вводятся)
D =
     0

Сформированные в рабочей области матрицы A, B, C и D могут использоваться для дальнейших преобразований (создание LTI-объектов, переход к передаточным функциям, переход к дискретным моделям и т.д.).

12. Основные команды MATLAB для управления Simulink-моделью

При разработке графического интерфейса пользователя, создании S-функций и т.п. задач требующих управления конфигурацией, параметрами и работой Simulink-модели допускается использовать специальные команды (функции) языка MATLAB. С помощью таких команд можно открывать и закрывать модель, запускать модель на расчет, добавлять и убирать блоки, изменять параметры блоков и осуществлять иные операции с моделью.

12.1. add_block

Назначение: Добавление нового блока в модель

Синтаксис:

add_block('src', 'dest')

Команда добавляет блок, полный путь которого задан параметром 'src', в модель в соответствии с путем назначения 'dest'.

add_block('src', 'dest', 'parameter1', value1, ...)

Команда добавляет блок, полный путь которого задан параметром 'src', в модель в соответствии с путем назначения 'dest' и устанавливает значения параметров блока.

Пример 1:

Команда add_block('built-in/Gain', 'EX_add_block/Gain') добавляет в модель EX_add_block.mdl усилитель Gain из встроенной библиотеки.

Пример 2:

Команда add_block('EX_add_block / In1', 'EX_add_block/My_Subsystem / In1')

копирует блок входного порта In1 из модели EX_add_block.mdl в подсистему My_Subsystem той же самой модели.

Пример 3:

Команда add_block('built-in/Constant', 'EX_add_block/Constant','Value','150') добавляет в модель EX_add_block.mdl блок Constant и устанавливает параметр Value этого блока равным 150.

[Скачать пример]

12.2. add_line

Назначение: Добавление новой линии связи в модель

Синтаксис:

h = add_line('sys','oport','iport')

Команда добавляет новую линию связи в модели sys от выходного порта oport ко входному порту iport. Параметры oport и iport задают полные пути блоков.

h = add_line('sys','oport','iport', 'autorouting','on')

Команда аналогична предыдущей. Дополнительный параметр autorouting (автоматическая трассировка), значение которого равно on, обеспечивает создание линии без пересечения пиктограмм блоков. По “умолчанию” значение этого параметра равно off.

h = add_line('sys', points)

Команда добавляет новую линию связи в модели sys в соответствии с координатами, заданными матрицей points. Началом системы координат окна модели считается левый верхний угол окна.

Пример 1:

Команда add_line('EX_add_line','Step/1','Sum/2') добавляет новую линию связи в модели EX_add_line.mdl между выходом блока Step (блок имеет один выход) и вторым входом блока Sum.

Пример 2:

Команда add_line('EX_add_line','Step1/1','Sum/2','autorouting','on') добавляет новую линию связи в модели EX_add_line.mdl между выходом блока Step1 и вторым входом блока Sum, при включенном режиме автотрассировки.

Пример 3:

Команда add_line('EX_add_line',[20 55; 40 10; 60 60]) добавляет новую линию связи в модели EX_add_line.mdl в соответствии с координатами, заданными матрицей [20 55;40 10;60 60]) .

[Скачать пример]

12.3. add_param

Назначение: Добавление нового параметра в модель.

Синтаксис:

Команда add_param('sys', ,value1, ,value2,...) добавляет в модель sys новые параметры parameter1, parameter2…и присваивает им значения value1, ,value2,... Новые параметры доступны командам get_param, set_param и ничем не отличаются от стандартных параметров Simulink-модели. Имена параметров не чувствительны к регистру символов. Значения параметров чувствительны к регистру символов.

Пример 1:

Команда add_param('EX_add_param','data','01 december 2002','time','21.00') добавляет в модель EX_add_param.mdl новые параметры data и time и присваивает им значения '01 december 2002' и '21.00', соответственно.

[Скачать пример]

12.4. bdclose

Назначение: Команда закрывает Simulink-модель (все модели) без сохранения изменений.

Синтаксис:

bdclose

Команда закрывает активную модель.

bdclose('sys')

Команда закрывает модель sys.

bdclose('all')

Команда закрывает все открытые модели.

Пример:

Команда  bdclose('my_model') закрывает модель my_model.mdl .

12.5. bdroot

Назначение: Возвращает имя модели (подсистемы верхнего уровня).

Синтаксис:

bdroot

Команда возвращает имя активной модели.

bdroot('obj')

Команда возвращает имя модели содержащей объект obj.

Пример:

Команда bdroot(gcb) возвращает имя модели содержащей выделенный в данный момент блок.

[Скачать пример]

12.6. close_system

Назначение: Команда закрывает модель с возможностью сохранения изменений.

Синтаксис:

close_system

Команда закрывает модель или подсистему. Если модель или подсистема были изменены, то на экран будет выведено окно с вопросом о сохранении изменений.

close_system('sys')

Команда закрывает модель или подсистему с указанным именем sys.

close_system('sys', saveflag)

Команда закрывает модель или подсистему и, в зависимости, от параметра saveflag выполняет или не выполняет сохранение изменений. В случае, если параметр saveflag равен 0 изменения не сохраняются. Если же значение данного параметра равно 1, то внесенные в модель или подсистему изменения сохраняются.

close_system('sys', 'newname')

Команда сохраняет модель sys под новым именем newname.

close_system('blk')

Команда закрывает окно диалога блока, полный путь которого задан параметром blk, или вызывает CloseFcn функцию, если данная функция для блока определена.

Пример 1:

Команда close_system('my_model', 'new_model') сохраняет модель my_model.mdl под новым именем new_model.mdl .

Пример 2:

Команда close_system('my_model', 1) сохраняет модель my_model.mdl со всеми изменениями.

12.7. delete_block

Назначение: Удаление блока из модели.

Синтаксис:

delete_block('blk')

Команда удаляет блок в соответствии с параметром blk, задающим полный путь к блоку.

Пример 1:

Команда delete_block('EX_delete_block/My_Subsystem/In1') удаляет входной порт In1 из подсистемы My_Subsystem модели EX_delete_block.mdl .

[Скачать пример]

12.8. delete_line

Назначение: Удаление линии связи

Синтаксис:

delete_line('sys', 'oport', 'iport')

Команда удаляет линию связи в модели sys от выходного порта oport ко входному порту iport. Параметры oport и iport задают полные пути блоков.

delete_line('sys', [x y])

Команда удаляет линию связи, которой принадлежит точка с координатами [x y].

Пример 1:

Команда delete_line('EX_delete_line', 'Step/1', 'Sum/2') удаляет линию связи в модели EX_delete_line.mdl между выходом блока Step (блок имеет один выход) и вторым входом блока Sum.

Пример 2:

Команда delete_line('EX_delete_line',[20 55]) удаляет линию связи, которой принадлежит точка с координатами [20 55].

[Скачать пример]

12.9. delete_param

Назначение: Удаление параметра модели, добавленного командой add_param .

Синтаксис:

delete_param('sys','parameter1','parameter2',...)

Команда удаляет из модели sys параметры parameter1, parameter2…, добавленные ранее командой add_param .

Пример:

Команда delete_param('EX_delete_param', 'data', 'time') удаляет из модели EX_delete_param.mdl параметры data и time , добавленные ранее командой add_param .

[Скачать пример]

12.10. gcb

Назначение: Получение пути текущего блока.

Синтаксис:

gcb

Команда возвращает полный путь текущего блока.

gcb('sys')

Команда возвращает полный путь текущего блока в модели sys.

Под текущим блоком понимается выделенный в окне модели блок, блок который выполняется в данный момент времени под управлением S-функции, блок callback-функция которого выполняется в данный момент времени или маскированный блок для которого выполняется функция инициализации.

Команду удобно использовать при получении пути блока для команд get_param и set_param.

Пример:

Команда get_param(gcb,'Gain') для текущего блока Gain возвращает значение параметра Gain.

12.11. gcs

Назначение: Получение пути текущей модели.

Синтаксис и правила использования команды аналогичны команде gcb.

12.12. find_system

Назначение: Поиск моделей (подсистем), блоков, линий, портов и текстовых описаний.

Синтаксис:

find_system (sys, 'c1', cv1, 'c2', cv2,...'p1', v1, 'p2', v2,...)

Команда выполняет поиск моделей (подсистем), блоков, линий, портов и их описаний, полный путь которых задан параметром sys, с использованием ограничений, заданных параметрами c1, c2 и имеющих значения параметров v1, v2 .

Виды ограничений приведены в Таблице 12.1.

Таблица 12.1

Ограничение

Значение

Описание

'SearchDepth'

scalar

Устанавливает глубину поиска (0 – только для открытых систем, 1 – для блоков и подсистем верхнего уровня, 2 – для системы верхнего уровня и ее дочерних подсистем, и т.д.) Значение по умолчанию all – все уровни.

'LookUnderMasks'

'none'

Пропуск маскированных блоков.

{'graphical'}

Поиск внутри маскированных блоков, не имеющих окон диалога и рабочей области маски. Этот параметр используется “по умолчанию”.

'functional'

Поиск внутри маскированных блоков, не имеющих окон диалога.

'all'

Поиск внутри всех маскированных блоков.

'FollowLinks'

'on'| {'off'}

Если параметр имеет значение 'on', то отслеживаются связи с библиотечными блоками. Значение по умолчанию 'off' .

'FindAll'

'on'| {'off'}

Если параметр имеет значение 'on', то поиск распространяется на линии, порты и текстовые описания в пределах текущей модели. Значение по умолчанию 'off' .

'CaseSensitive'

{'on'}| 'off'

Поиск с учетом регистра символов (при поиске строковых параметров). Значение по умолчанию 'on' .

'RegExp'

'on'| {'off'}

Если параметр имеет значение 'on', то допускается проводить поиск с использованием шаблонов. Значение по умолчанию 'off' .

В таблице значения используемых “по умолчанию” параметров приведены в фигурных скобках.

Пример 1:

Команда find_system возвращает массив ячеек содержащих имена всех открытых подсистем и блоков.

Пример 2:

Команда find_system('type', 'block_diagram') возвращает массив ячеек содержащих имена всех открытых моделей.

Пример 3:

Команда find_system('my_model','SearchDepth',2,'BlockType','Product') выполняет поиск блоков умножения Product в модели my_model.mdl и в ее вложенных подсистемах.

Пример 4:

Команда find_system('my_model', 'BlockType', 'Constant','Value', '100') выполняет поиск блоков Constant у которых значение параметра Value равно 100.

Для поиска с использованием шаблонов можно применять специальные символы приведенные в таблице Таблица 12.2

Таблица 12.2

Символ

Описание

.

Заменяет любой символ. Например, шаблону 'a.' соответствуют выражения 'aa', 'ab', 'ac' и т.п.

*

Заменяет любую последовательность символов (включая пустую). Например, шаблону 'a*' соответствуют выражения 'a', 'ab', 'abc' и т.п. Шаблону '.*' соответствует любая строка, в том числе и пустая.

+

Заменяет любое количество предшествующих символов. Например, шаблону 'ab+' соответствуют выражения 'ab', 'abb', 'abbb' и т.п

^

Отмечает начало последовательности символов. Например, шаблону '^a' соответствует любая строка начинающаяся на символ 'a'.

$

Отмечает последний символ строки символов. Например, шаблону '$a' соответствует любая строка, оканчивающаяся на символ 'a'.

\

Предписывает считать следующий символ обычным текстовым символом. Например, шаблон '\\' соответствует строке содержащей символ '\'.

[ ]

Определяет набор символов в выражении поиска. Например, шаблон 'f[oa]r' соответствует выражениям 'for' и 'far'.

Символ (-) задает диапазон символов. Например, шаблон '[a-zA-Z1-9]' соответствует любому алфавитно-цифровому символу.

Символ (^) определяет исключаемые символы при поиске. Например, шаблон 'f[^i]r' соответствует строкам 'far' and 'for', но не соответствует строке 'fir'.

\w

Задает поиск строк, содержащих только алфавитно-цифровые символы. Например, шаблон '^\w' соответствует строке 'mu', но не соответствует строке '&mu'.

\d

Задает поиск строк, содержащих только цифровые символы. Например, шаблон '\d+’ задает поиск любого целого числа.

\D

Задает поиск строк, не содержащих цифровые символы (аналог шаблона [^0-9]).

\s

Задает пробел в выражении поиска (аналог шаблона [ \t\r\n\f]).

\S

Исключает пробелы из выражения поиска (аналог шаблона [^ \t\r\n\f]).

\<WORD\>

Задает поиск слова (последовательности символов отделенных с обеих сторон пробелами). Например, шаблону '\<to\>' соответствует слово 'to', но не соответствует слово 'today'.

Пример5:

Команда find_system('my_model', 'regexp', 'on', 'blocktype', 'port') задает поиск входных и выходных портов в модели my_model.mdl.

12.13. get_param

Назначение: Получение значения параметров модели или блока.

Синтаксис:

get_param('obj', 'parameter')

Команда возвращает значение параметра parameter, для объекта, полный путь которого задан выражением obj.

Пример 1:

Команда get_param('EX_get_param/Constant','Value') определяет значение параметра Value блока Constant модели EX_get_param.mdl .

Пример 2:

Команда get_param('EX_get_param/Constant', 'ObjectParameters') определяет все атрибуты блока Constant модели EX_get_param.mdl .

Пример 3:

Команда get_param('EX_get_param/Constant', 'DialogParameters') определяет параметры задаваемые в окне диалога блока Constant модели EX_get_param.mdl .

Пример 4:

Команда get_param('EX_get_param', 'MaxStep') определяет значение параметра MaxStep (максимальный шаг расчета) модели EX_get_param.mdl .

[Скачать пример]

12.14. new_system

Назначение: Создание новой модели.

Синтаксис:

new_system('sys')

Команда создает новую модель sys . При этом окно модели не открывается. Для открытия окна следует использовать команду open_system('sys') .

Пример:

Команда new_system('my_model') создает модель my_model.mdl .

12.15. open_system

Назначение: Команда открывает окно модели, подсистемы, окно диалога блока.

Синтаксис:

open_system('sys')

Команда открывает модель sys.mdl .

open_system('blk')

Команда открывает окно диалога блока blk модели sys.mdl .

open_system('sys/Subsystem','force')

Команда открывает маскированную подсистему Subsystem модели sys.mdl . Команда аналогична пункту меню Look Under Mask.

Пример 1:

Команда open_system('my_model') открывает модель my_model.mdl .

Пример 2:

Команда open_system('my_model/Constant') открывает окно диалога блока Constant модели my_model.mdl .

Пример 3:

Команда open_system('my_model/Subsystem') открывает окно маскированной подсистемы Subsystem модели my_model.mdl .

12.16. replace_block

Назначение: Команда выполняет замену одного блока на другой.

Синтаксис:

replace_block('sys', 'blk1', 'blk2', 'noprompt')

Команда заменяет все блоки типа blk1 на блоки blk2 модели sys без запроса на подтверждение операции. Если blk2 не является библиотечным блоком, то требуется указать полный путь к блоку.

replace_block('sys', 'Parameter', 'value', 'blk', ...)

Команда заменяет все блоки, параметр которых Parameter равен value на блоки blk модели sys .

Пример 1:

Команда replace_block('EX_replace_block', 'Step', 'Inport', 'noprompt') заменяет в модели EX_replace_block.mdl блок Step на блок Inport без запроса на подтверждение операции.

Пример 2:

Команда replace_block('EX_replace_block', 'Value','100','Gain', 'noprompt') заменяет в модели EX_replace_block.mdl блоки, параметр которых равен 100 на блоки Gain без запроса на подтверждение операции.

[Скачать пример]

12.17. save_system

Назначение: Сохранение файла модели.

Синтаксис:

save_system

Сохранение открытой модели под текущим именем.

save_system('sys')

Сохранение модели sys под текущим именем.

save_system('sys', 'newname')

Сохранение модели sys под новым именем newname.

Пример 1:

Команда save_system('my_model') сохраняет модель в файле my_model.mdl .

Пример 2:

Команда save_system('my_model,'new_model') сохраняет модель в файле new_model.mdl .

12.18. set_param

Назначение: Установка параметров модели или блока.

Синтаксис:

set_param('obj', 'parameter1', value1, 'parameter2', value2, ...)

Команда выполняет присваивание новых значений value1, value2… параметрам parameter1, parameter2… модели (блока) obj . Имена параметров не чувствительны к регистру символов. Значения параметров чувствительны к регистру символов.

Пример 1:

Команда set_param('EX_set_param', 'Solver', 'ode15s', 'StopTime', '100') устанавливает метод решения (параметр Solver) ode15s и время окончания расчета (параметр StopTime) 100 для модели EX_set_param.mdl .

Пример 2:

Команда set_param('EX_set_param/Step', 'After', '1.5') устанавливает параметр Final Value блока Step модели EX_set_param.mdl равным 1.5.

Пример 3:

Команда set_param('EX_set_param/Transfer Fcn', 'Numerator', '[5 7 9]','Denominator', '[2 3 0]') устанавливает параметры блока Transfer Fcn , таким образом, чтобы получить передаточную функцию следующего вида:

[Скачать пример]

Команда может использоваться для изменения параметров модели или блока в процессе расчета. Однако не все параметры блоков могут быть изменены в этом случае. Например, нельзя изменить в процессе расчета размерности входных и выходных портов подсистемы или блока. Параметры блоков библиотеки Power System Blockset также нельзя изменять в процессе расчета. Следует иметь в виду еще и то, что иногда название параметра, данное в окне диалога, отличается от фактического названия параметра (имени переменной, которой присваивается значение параметра). Так, например, для блока Step, фактическое имя параметра Initial Value есть Before, а фактическое имя параметра Final Value есть After. Для выяснения фактических имен параметров можно открыть файл модели в каком-либо текстовом редакторе и просмотреть секцию, в которой описан данный блок. Ниже приведен пример текстового описания блока Step в файле модели:

Block {
BlockType Step
Name "Step"
Position [125, 75, 155, 105]
Time "0.1"
Before "10"
After "20"
SampleTime "0"
VectorParams1D on
}
.

Из приведенного фрагмента хорошо видно, какие фактические имена имеют параметры данного блока.

12.19. simulink

Назначение: Команда открывает окно библиотеки блоков simulink.

Синтаксис:

simulink

13. Отладчик Simulink моделей

Отладчик Simulink является инструментом для поиска и диагностирования ошибок в моделях Simulink. Он дает возможность точно определить проблемы, выполняя моделирование постепенно с отображением значений входных и выходных сигналов любого из интересующих блоков модели. Simulink-отладчик имеет и графический, и интерфейс пользователя командной строки. Графический интерфейс позволяет наиболее удобно использовать основные возможности отладчика. Интерфейс командной строки дает способ обращаться ко всем возможностям отладчика. Пользователь, как правило, работает с графическим интерфейсом отладчика и обращается к интерфейсу командной строки по мере необходимости.

13.1. Графический интерфейс отладчика Simulink моделей

Запуск графического интерфейса отладчика возможен одним из двух способов:

1. С помощью команды меню Tools/Debugger окна Simulink модели.
2. С помощью кнопки панели инструментов окна Simulink модели.

После запуска отладчика на экране появится его окно (см. рис. 13.1).

Рис. 13.1 Окно отладчика Simulink модели.

[Скачать пример]

Окно отладчика содержит следующие элементы:

13.1.1. Панель инструментов

Общий вид панели инструментов показан на рис. 13.2.

Рис. 13.2 Панель инструментов отладчика

Эта панель имеет следующие кнопки:

  1. Next Block – Переход к следующему блоку. С помощью данной кнопки осуществляется режим отладки с остановкой моделирования после каждого выполненного блока.
  2. Next Time Step – Переход к следующему временному шагу. С помощью данной кнопки выполняется режим отладки с остановкой моделирования после каждого выполненного временного шага.
  3. Start/Continue – Начало/Продолжение отладки. Нажатие данной кнопки после запуска отладчика приводит к началу процесса моделирования и остановке его перед первым исполняемым блоком. Данная кнопка служит также для продолжения процесса отладки при установленных точках прерывания (остановки). Если точки прерывания установлены в модели, то нажатие данной кнопки позволяет продолжить моделирование и, затем, остановить его в заданной точке прерывания. Повторное нажатие кнопки возобновляет процесс моделирования и вызывает остановку на следующей точке прерывания. Если на текущем временном шаге все точки прерывания пройдены, то происходит переход на следующий временной шаг и остановка в первой точке прерывания на новом временном шаге.
  4. Stop – Остановка отладки.
  5. Break before selected block – Установка точки прерывания перед выделенным блоком. Точка прерывания не может быть установлена для виртуального блока, т.е. такого блока, чья функция является исключительно графической. На рис. 13.1 таким блоком является мультиплексор Mux. Список невиртуальных блоков можно посмотреть на вкладке Execution Order окна отладчика или вывести его командой slist при работе с отладчиком в режиме командной строки. При попытке установить контрольную точку для виртуального блока отладчик выведет на экран предупреждающее сообщение.
  6. Для установки точки прерывания достаточно выделить блок в окне модели и, затем, нажать данную кнопку. Название блока немедленно появится в окне Break/Display points отладчика, как это показано на рис. 13.3.

    Рис. 13.3 Окно отладчика с установленной точкой прерывания для блока Transfer Fcn

  7. Display I/O of selected block with executed – Отображать значения входных и выходных сигналов. Данная кнопка позволяет установить режим просмотра входных и выходных сигналов какого-либо невиртуального блока. Режим может быть установлен как для блока, для которого установлена точка прерывания, так и для блока для которого контрольная точка не установлена. Значения входных и выходных сигналов отображаются на вкладке Outputs окна отладчика. Входные сигналы отображаются идентификаторами U1, U2, U3 и т.д., а выходные – Y1, Y2, Y3 и т.д. Дополнительно здесь же отображаются значения переменных состояния – CSTATE (см. рис. 13.3).
  8. Display current I/O of selected block – Показать значения входных и выходных сигналов для выделенного блока. Данной кнопкой удобно пользоваться, когда необходимо просмотреть значения сигналов какого-либо блока в момент остановки. Например, если для модели на рис. 13.1 установлена точка прерывания перед выполнением блока Transfer Fcn и остановка моделирования в этой точке произошла, то просмотреть значения сигналов сумматора можно выделив этот блок в окне модели и нажав кнопку отладчика.
  9. Help – Вызов справки по отладчику.

13.1.2. Список контрольных точек Break/Display points

Окно списка контрольных точек (рис. 13.4) содержит список блоков, для которых установлены контрольные точки (графа Blocks), а также свойства этих точек указанные с помощью флажков. Пользователь снимая или устанавливая флажки может изменять свойства контрольной точки, а именно: задавать/убирать точку прерывания на входе блока (графа  ) или включать/выключать режим отображения значений сигналов блока (графа  ).

Удалить контрольную точку можно выделив ее в списке, и нажав кнопку Remove selected point (убрать выделенную точку).

Рис. 13.4 Окно списка контрольных точек Break/Display points

13.1.3. Панель задания точек прерывания по условию Break on conditions

Панель (рис. 13.5) содержит список условий, при наступлении которых расчет должен быть остановлен.

Рис. 13.5 Список условий прерывания расчетов

Список включает в себя:

  1. Zero crossings – Переход сигнала через нулевой уровень при его скачкообразном изменении. На рис. рис. 13.6 показан пример модели, в которой имеет место такая ситуация. На рисунке хорошо видно, что в момент времени t = 5 с происходит скачкообразное изменение сигнала с пересечением нулевого уровня.
  2. Рис. 13.6 Пример модели с изменением полярности сигнала

    [Скачать пример]

  3. Step size limited by state – Состояние ограничивающее шаг расчета. Опция заставляет отладчик останавливать моделирование, когда модель использует решатель с переменным шагом и решатель сталкивается с состоянием требующим ограничения размера шага расчета. Эта опция полезна при отладке моделей, требующих, как кажется, чрезмерно много расчетных шагов.
  4. Minor time steps – режим отладки с использованием внутренних (малых) шагов. При выполнении расчетов Simulink может уменьшать заданный шаг расчета для достижения нужной точности. Для того, чтобы увидеть и эти малые (внутренние) шаги необходимо установить опцию Minor time steps.
  5. NaN values – Не числовое значение. Расчет будет прерван, когда вычисленное значение бесконечно или лежит вне диапазона значений, которые могут быть представлены компьютером, выполняющим моделирование (слишком малые или слишком большие значения). Эта опция полезна для точного определения вычислительных погрешностей в модели Simulink.
  6. Break at time – Остановка в заданный момент времени. Параметр позволяет задать время до которого модель рассчитывается в обычном режиме. По достижении заданного времени расчет будет остановлен. Далее расчет необходимо возобновить с использованием возможностей отладчика. Данный режим удобен, если ошибка возникает не в начале интервала моделирования, а в какой-либо более поздний момент. В этом случае можно установить время остановки непосредственно перед появлением ошибки, а затем продолжить расчет в пошаговом режиме.

13.1.4. Главное окно отладчика

Главное окно содержит три вкладки:

  1. Outputs – Отображение результатов работы в режиме отладки. На данной вкладке (рис. 13.7) отображается текущее модельное время Tm (или Ti для внутренних шагов), индекс контролируемого блока в виде @s:b, где s – номер модели (подсистемы), b – номер блока, а также имя блока с указанием полного пути к блоку. На этой же вкладке выводятся значения входных (U) и выходных (Y) сигналов блока, если соответствующая опция установлена.
  2. Рис. 13.7 Вкладка Outputs главного окна отладчика

  3. Execution Order – Порядок выполнения. На вкладке отображается список невиртуальных блоков в порядке их выполнения. Блоки, расположенные в начале списка выполняются раньше, чем блоки, расположенные в конце списка. На рис. 13.8 показан пример данной вкладки для модели, изображенной на рис. 13.1.
  4. Рис. 13.8 Вкладка Execution Order главного окна отладчика

  5. Status – Статус отладчика. На данной вкладке (рис. 13.9) отображается информация о настройках и текущем состоянии отладчика: значение текущего временного шага, количество точек прерывания, информация об установке точек прерывания по условию и т.п.

Рис. 13.9 Вкладка Status главного окна отладчика

Таким образом, запустив отладчик в графическом режиме, пользователь может провести пошаговую (по блокам или по временным шагам) отладку модели, установив при необходимости нужные контрольные точки.

13.2 Интерфейс командной строки отладчика 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 работают точно и эффективно и с параметрами заданными для них “по умолчанию”. Однако для некоторых моделей можно добиться лучших результатов по скорости и точности, если задать более точно параметры решателя дифференциальных уравнений. Также, если предполагаемое поведение модели известно, то можно используя эту информацию повысить скорость и точность расчетов.

14.1. Повышение скорости расчета

Малая скорость моделирования может иметь много причин. Среди них можно выделить основные:

Скорость расчета можно также повысить в несколько раз, используя ускоренный (Accelerator) режим расчета. Это можно сделать с помощью меню Tools или панели инструментов. В ускоренном режиме расчета предварительно проводится трансляция модели в исполнительный код (dll-файл), а затем уже проводится сам расчет. Некоторые дополнительные затраты времени на трансляцию с лихвой окупаются ускорением расчета модели. Однако при изменении структуры модели процедура трансляции будет повторена. К сожалению, ускоренный режим расчета не может быть использован в моделях имеющих алгебраические контуры.

Существенный выигрыш по времени может дать использование дискретных моделей вместо непрерывных.

Наиболее существенным же с точки зрения скорости вычислений может оказаться правильный выбор уровня детализации модели. К примеру, если выполняется моделирование системы электроснабжения города, вряд ли стоит моделировать каждый потребитель электрической энергии: электрический двигатель, чайник, сварочный аппарат и т.п. Вполне достаточным будет создание обобщенных моделей электрических потребителей на уровне заводского цеха, жилого дома, трамвайного парка и т.п.

14.2. Повышение точности расчета

Чтобы проверить достаточно ли точно выполняется моделирование, следует провести сравнительные расчеты с разными значениями параметра Relative tolerance (относительная погрешность). К примеру, можно провести расчет с заданным “по умолчанию” значением этого параметра – 1e-3 и с меньшим (1e-4) значением. Если результаты расчетов отличаются незначительно, то можно полагать, что найденное решение является верным. Если решения значительно отличаются в начальной стадии, то следует задать в явном виде достаточно малый начальный шаг расчета (Initial step size).

Если решение оказывается неустойчивым, то это может быть вызвано следующими причинами:

Если решение кажется не точным:

Свободно распространяемое бесплатное ПО компьютерного моделирования
оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Знаете ли Вы, что векторное программирование - это (1) раздел математики, исследующий методы решения задач векторного программирования; (2) формализм, используемый для представления знаний о структуре моделируемых объектов в форме задачи векторного программирования.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution