Назначение: Команда закрывает модель с возможностью сохранения изменений.
Команда закрывает модель или подсистему. Если модель или подсистема были изменены, то на экран будет выведено окно с вопросомо сохранении изменений.
Команда закрывает модель или подсистему с указанным именем sys.
Команда закрывает модель или подсистему и, в зависимости, от параметра saveflag выполняет или не выполняет сохранение изменений. В случае, если параметр saveflag равен 0 изменения не сохраняются. Если же значение данного параметра равно 1, то внесенные в модель или подсистему изменения сохраняются.
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 со всеми изменениями.
Назначение: Удаление блока из модели.
Синтаксис:
delete_block('blk')
Команда удаляет блок в соответствии с параметром blk, задающим полный путь к блоку.
Пример 1:
Команда delete_block('EX_delete_block/My_Subsystem/In1') удаляет входной порт In1 из подсистемы My_Subsystem модели EX_delete_block.mdl .
Назначение: Удаление параметра модели, добавленного командой 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 .
Назначение: Получение пути текущего блока.
Синтаксис:
gcb
Команда возвращает полный путь текущего блока.
gcb('sys')
Команда возвращает полный путь текущего блока в модели
sys.
Под текущим блоком понимается выделенный в окне модели блок, блок который выполняется в данный момент времени под управлением S-функции, блок callback-функция которого выполняется в данный момент времени или маскированный блок для которого выполняется функция инициализации.
Команду удобно использовать при получении пути блока для команд get_param и set_param.
Пример. Команда get_param(gcb,'Gain') для текущего блока Gain возвращает значение параметра Gain.
Команда gcs
Назначение: Получение пути текущей модели.
Синтаксис и правила использования команды аналогичны команде gcb.
Назначение: Получение значения параметров модели или блока.
Синтаксис:
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 .
Назначение: Создание новой модели.
Синтаксис:
new_system('sys')
Команда создает новую модель sys . При этом окно модели не открывается. Для открытия окна следует использовать команду open_system('sys') .
Пример: Команда new_system('my_model') создает модель my_model.mdl .
Назначение: Команда открывает окно модели, подсистемы, окно диалога блока.
Синтаксис:
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 .
Назначение: Команда выполняет замену одного блока на другой.
Синтаксис:
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 без запроса на подтверждение операции.
Назначение: Сохранение файла модели.
Синтаксис:
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 .
Назначение: Установка параметров модели или блока.
Синтаксис:
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/TransferFcn', '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 } .
Из приведенного фрагмента хорошо видно, какие фактические имена имеют параметры данного блока.
Команда simulink
Назначение: Команда открывает окно библиотеки блоков simulink.
Синтаксис:
simulink.
Для отображения на пиктограмме передаточной функции используются следующие команды:
dpoly(num, den) – Отображение дробно-рациональной передаточной функции (num – вектор коэффициентов числителя, den – вектор коэффициентов знаменателя). Оператор Лапласа будет отображен с помощью символа s;
dpoly(num, den, 'character') -Отображение дробно рациональной передаточной функции. Оператор Лапласа будет отображен с помощью символа character;
dpoly(num, den, 'z') Отображение дискретной дробно рациональной передаточной функции;
dpoly(num, den, 'z-') -Отображение дискретной дробно рациональной передаточной функции от обратного аргумента;
droots(z, p, k) -Отображение Zpk-формы передаточной функции. Для рассматриваемого выражения может быть добавлен четвертый аргумент в виде 'z' или 'z-' для отображения дискретных передаточных функций. Примеры маскированных подсистем с различными вариантами отображения передаточных функций показаны на рисунке 9.10.8.
Механизм маскирования подсистем позволяет оформить подсистему как полноценный библиотечный блок, т.е. снабдить подсистему собственным окном параметров, пиктограммой, справочной системой и т.п.
Маскирование подсистем дает пользователю следующие преимущества:
Расширяет возможности пользователя по управлению параметрами модели.
Позволяет создавать более понятный интерфейс подсистемы.
Повышает наглядность блок-диаграммы.
Расширяет возможности построения сложных моделей.
Повышает защищенность модели от несанкционированной модификации.
Для выполнения маскирования имеющейся подсистемы необходимо предварительно выполнить следующие действия:
Определить какие параметры подсистемы должны задаваться пользователем в будущем окне параметров. Задать эти параметры в подсистеме с помощью идентификаторов (имен).
Определить каким образом параметр должен задаваться в окне диалога (с помощью строки ввода, выбором из раскрывающегося списка или установкой флажка).
Разработать эскиз пиктограммы блока.
Создать комментарии (справку) по использованию подсистемы.
Маскирование подсистемы выполняется с помощью Mask Editor (редактор маски). Для запуска редактора маски необходимо выделить маскируемую подсистему и выполнить команду Mask Subsystem… из меню Edit. Можно также воспользоваться контекстным меню. После запуска Mask Editor на экран будет выведено окно редактора (рисунок 9.10.1), имеющее 3 вкладки: Icon (Пиктограмма), Initialization (Инициализация), Documentation (Документация). Первая из вкладок обеспечивает создание пиктограммы подсистемы, вторая – дает возможность создать окно диалога для ввода параметров и третья – позволяет ввести описание блока и создать его справку.
В верхней части всех вкладок имеется поле Mask Type, с помощью которого можно задать имя блока.
В нижней части окна имеется 5 кнопок управления редактором:
OK – Сохранить внесенные изменения и закрыть окно.
Cancel – Отменить внесенные изменения и закрыть окно.
Unmask – Снять маску с подсистемы. До закрытия файла модели маску можно восстановить, воспользовавшись командой Edit Mask… из меню Edit.
Help – Открыть окно справки редактора маски.
Apply – Сохранить внесенные изменения без закрытия окна редактора. Повторный вызов редактора маски для уже маскированной
подсистемы осуществляется командой Edit Mask… из меню Edit (или аналогичной командой из контекстного меню).
После того как маскирование системы будет выполнено, двойной щелчок на ее изображении будет открывать окно параметров подсистемы, а не окно модели. Открыть саму подсистему (окно модели) для редактирования или просмотра можно командой Look under mask из меню Edit или контекстного меню.
С помощью команды Edit\Viewer Preferences… выполняются следующие виды настройки:
Установка единиц измерения (вкладка Units).
Вид окна при настройке единиц измерения показан на рисунке 11.6. Вкладка Units окна позволяет задать единицы измерения частоты (рад/c или Гц), уровня (dB или абсолютные единицы), фазы (градусы или радианы), а также установить вид шкалы частоты (логарифмический или линейный).
Установка стиля графиков (вкладка Style).
На данной вкладке можно выполнить настройку шрифтов окна Simulink LTI-Viewer (панель Fonts), выбрать цвет осей графиков (панель Colors), а также задать нанесение линий сетки на графики (флажок Show grids).
Внешний вид вкладки Style показан на рисунке 11.7.
Установка параметров расчета переходного процесса (вкладка Characteristics).
Данная вкладка позволяет задать параметры установленные "по умолчанию" для вычисления времени нарастания и времени переходного процесса. По умолчанию Simulink LTI-Viewer вычисляет время переходного процесса как время, когда переходная функция входит в 2% зону и больше не выходит из нее (параметр Show setting time within). Также можно изменить параметры для вычисления времени переходного процесса (Show rise time from).
На данной вкладке имеется также флажок Unwrap phase, установка которого позволяет избежать отображения разрывов в фазочастотной характеристике, связанных собластью определения функции arctg, вычисляющей фазовый сдвиг. Внешний вид вкладки Characteristics показан на рисунке 11.8.
Установка интервалов времени и частоты (вкладка Parameters).
На данной вкладке задается временной интервал для расчета переходного процесса (панель Time Vector), а также интервал частот для расчета частотных характеристик (панель Frequency Vector). Внешний вид вкладки Parameters показан на рисунке 11.9.
Векторы времени и частоты можно вычислять в автоматическом режиме (Generate automatically), ввести конкретное значение для времени окончания расчета (Define stop time) или диапазон значений по частоте (Define range), либо задать непосредственно вектор значений времени или частоты (Define vector).
Действительно ли нам нужен VHDL
Обзор набора инструментов
Simulink Performance Tools включает четыре приложения, которые расширяют возможности Simulink и существенно увеличивают производительность программы. Использование этих инструментов может значительно повысить скорость процесса моделирования. Пользователь получает инструмент для сравнения разных вариантов модели, а также для быстрого тестирования модели.
Набор инструментов содержит:
Simulink Accelerator, ускоряющий моделирование, благодаря использованию скомпилированного кода вместо того, чтобы запускать модель в режимеинтерпретатора.
Simulink Model Profiler, собирающий данные о производительности в ходе выполнения модели и генерирующий отчет со списком информации о времени выполнения для каждой составляющей в детальной и обобщенной формах.
Simulink Model Coverage, помогающий улучшить модель и определить области повышенного рисунка в моделях Simulink и Stateflow. Приложение генерирует детальный HTML отчет, показывающий какие блоки, состояния и условия были выполнены в ходе имитации.
Simulink Model Differencing, позволяющий сравнить две модели Simulink и генерирующий графическое изображение различий.
Основные команды MATLAB для управления Simulink-моделью
При разработке графического интерфейса пользователя, создании S-функций и т.п. задач требующих управления конфигурацией, параметрами и работой Simulink-модели допускается использовать специальные команды (функции) языка MATLAB. С помощью таких команд можно открывать и закрывать модель, запускать модель на расчет, добавлять и убирать блоки, изменять параметры блоков и осуществлять иные операции с моделью.
Отладчик Simulink моделей
Отладчик Simulink является инструментом для поиска и диагностирования ошибок в моделях Simulink. Он дает возможность точно определить проблемы, выполняя моделирование постепенно с отображением значений входных и выходных сигналов любого из интересующих блоков модели. Simulink-отладчик имеет и графический, и интерфейс пользователя командной строки. Графический интерфейс позволяет наиболее удобно использовать основные возможности отладчика. Интерфейс командной строки дает способ обращаться ко всем возможностям отладчика. Пользователь, как правило, работает с графическим интерфейсом отладчика и обращается к интерфейсу командной строки по мере необходимости.
Панель инструментов
Общий вид панели инструментов показан на рисунке 13.2.
Эта панель имеет следующие кнопки:
Next Block – Переход к следующему блоку. С помощью данной кнопки осуществляется режим отладки с остановкой моделирования после каждого выполненного блока.
Next Time Step – Переход к следующему временному шагу. С помощью данной кнопки выполняется режим отладки с остановкой моделирования после каждого выполненного временного шага.
Start/Continue – Начало/Продолжение отладки. Нажатие данной кнопки после запуска отладчика приводит к началу процесса моделирования и остановке его перед первым исполняемым блоком. Данная кнопка служит также для продолжения процесса отладки при установленных точках прерывания (остановки). Если точки прерывания установлены в модели, то нажатие данной кнопки позволяет продолжить моделирование и, затем, остановить его в заданной точке прерывания. Повторное нажатие кнопки возобновляет процесс моделирования и вызывает остановку на следующей точке прерывания. Если на текущем временном шагевсе точки прерывания пройдены, то происходит переход наследующий временной шаг и остановка впервой точке прерывания на новом временном шаге.
Stop – Остановка отладки.
Break before selected block – Установка точки прерывания перед выделенным блоком. Точка прерывания не может быть установлена для виртуального блока, т.е. такого блока, чья функция является исключительно графической. На рисунке 13.1 таким блоком является мультиплексор Mux. Список не виртуальных блоков можно посмотреть на вкладке Execution Order окна отладчика или вывести его командой slist при работе с отладчиком в режиме командной строки. При попытке установить контрольную точку для виртуального блока отладчик выведет на экран предупреждающее сообщение. Для установки точки
прерывания достаточно выделить блок в окне модели и, затем, нажать данную кнопку. Название блока немедленно появится в окне
Break/Display points отладчика, как это показано на рисунке 13.3.
Display I/ O of selected block with executed – Отображать значения входных и выходных сигналов. Данная кнопка позволяет установить режим просмотра входных и выходных сигналов какого-либо не виртуального блока.
Режим может быть установлен как для блока, для которого установлена точка прерывания, так и для блока для которого контрольная точка не установлена. Значения входных и выходных сигналов отображаются на вкладке Outputs окна отладчика. Входные сигналы отображаются идентификаторами U1, U2, U3 ит.д., а выходные – Y1, Y2, Y3 ит.д. Дополнительно здесь же отображаются значения переменных состояния – CSTATE (смотри рисунок 13.3).
Display current I/O of selected block – Показать значения входных и выходных сигналов для выделенного блока. Данной кнопкой удобно пользоваться, когда необходимо просмотреть значения сигналов какого-либо блока в момент остановки. Например, если для модели на рисунке 13.1 установлена точка прерывания перед выполнением блока Transfer Fcn и остановка моделирования в этой точке произошла, то просмотреть значения сигналов сумматора можно выделив этот блок в окне модели и нажав кнопку
Help – Вызов справки по отладчику.
Панель задания точек прерывания по условию Break on conditions
Панель (рисунок 13.5) содержит список условий, при наступлении которых расчет должен быть остановлен.
Список включает в себя:
Zero crossings – Переход сигнала через нулевой уровень при его скачкообразном изменении. На рисунке 13.6 показан пример модели, в которой имеет место такая ситуация. На рисунке хорошо видно, что в момент времени t = 5 с происходит скачкообразное изменение сигнала с пересечением нулевого уровня.
Step size limited by state – Состояние ограничивающее шаг расчета. Опция заставляет отладчик останавливать моделирование, когда модель использует решатель с переменным шагом и решатель сталкивается с состоянием требующим ограничения размера шага расчета. Эта опция полезна при отладке моделей, требующих, как кажется, чрезмерно много расчетных шагов.
Minor time steps – режим отладки с использованием внутренних (малых) шагов. При выполнении расчетов Simulink может уменьшать заданный шаг расчета для достижения нужной точности. Для того, чтобы увидеть и эти малые (внутренние) шаги необходимо установить опцию Minor time steps.
NaN values – Не числовое значение. Расчет будет прерван, когда вычисленное значение бесконечно или лежит вне диапазона значений, которые могут быть представлены компьютером, выполняющим моделирование (слишком малые или слишком большие значения). Эта опция полезна для точного определения вычислительных погрешностей в модели Simulink.
Break at time – Остановка в заданный момент времени. Параметр позволяет задать время до которого модель рассчитывается в обычном режиме. По достижении заданного времени расчет будет остановлен. Далее расчет необходимо возобновить с использованием возможностей отладчика. Данный режим удобен, если ошибка возникает не в начале интервала моделирования, а в какой-либо более поздний момент. В этом случае можно установить время остановки непосредственно перед появлением ошибки, а затем продолжить расчет в пошаговом режиме.
Повышение скорости и точности расчетов
На точность и скорость расчета модели в 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 (абсолютная погрешность) и выполнить ряд расчетов, уменьшая величину этого параметра.
Если уменьшение абсолютной погрешности точность расчетов не улучшается, следует уменьшить относительную погрешность (что приведет уменьшению шага расчета) либо в явном виде задавать достаточно малую величину максимального шага расчета.
Редактор дифференциальных уравнений DEE
Simulink содержит специальный блок – Differential Equation Editor (редактор дифференциальных уравнений). С помощью этого блока можно задавать системы дифференциальных уравнений в явной форме Коши и выполнять их решение. Вызов редактора выполняется вводом команды dee в окне MATLAB.
Использование редактора рассмотрим на примере расчета переходных процессов в последовательном колебательном контуре. Задача заключается в нахождении тока протекающего в электрической цепи и напряжения на конденсаторе C после замыкания ключа. Начальные условия полагаем нулевыми (ток в цепи отсутствует, и конденсатор не заряжен).
Предварительно составляем систему дифференциальных уравнений, описывающую электрическую цепь:
di e = L + R ⋅ i + udt c duci = C dt
где i – ток в цепи,
uc -напряжение на конденсаторе.
Записываем данную систему уравнений в явной форме Коши:
di e − R ⋅ i − uc = dt L duc 1 =⋅ i dt C
Вводим “машинные” переменные: i→ x(1), uc→ x(2), e→u(1) .
В итоге система уравнений примет вид: dx(1) u(1) − R ⋅ x(1) − x(2)
Введение “машинных” переменных, связано с тем, что редактор дифференциальных уравнений требует задавать в виде векторов входные воздействия (u) и переменные состояния (х) и имена этих векторов жестко заданы.
После получения системы дифференциальных уравнений с использованием “машинных” переменных, необходимо запустить редактор командой dee в окне MATLAB. Затем нужно поместить блок редактора в окно с создаваемой моделью, открыть окно редактора и ввести систему дифференциальных уравнений, начальные условия, а также алгебраические уравнения для расчета выходных сигналов (в рассматриваемой задаче выходные переменные равны переменным состояния). Также необходимо указать размерность вектора входного сигнала (# of inputs). Схема модели и окно редактора показаны на рисунке 10.2. Там же приведены и результаты расчета.
Значения постоянных коэффициентов системы уравнений можно задавать не только как числовые константы, но и использовать переменные рабочей области MATLAB.
Достоинством редактора DEE является также то, коэффициенты дифференциального уравнения могут быть переменными и задаваться также как и входные сигналы (через входной порт). В качестве примера на рисунке 10.3 показан вариант предыдущей модели, в котором величина сопротивления увеличивается в 10 раза в процессе расчета. В системе дифференциальных уравнений сопротивление записано как входной сигнал u(2).
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 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% модели. Для полной проверки модели необходимо, чтобы сигнал, подаваемый на управляющий вход ключа менял свою полярность.
Simulink Model Differencing
Simulink Model Differencing сравнивает две Simulink-модели и генерирует графическое изображение различий между ними. На данном изображении выделяются одинаковые блоки моделей, имеющие различные атрибуты (красным цветом) и блоки, которые присутствуют только в одной из двух моделей (синим цветом). Пользователь может настроить изображение, чтобы просмотреть только блоки с графическими различиями, только блоки с неграфическими отличиями или блоки с любыми отличиями. Для выполнения сравнения моделей необходимо выполнить команду Model differences\Merge/Compare two models из меню Tools окна первой модели и в процессе диалога выбрать файл второй модели. Возможно также выполнить сравнение текущего состояния модели и ее последней записи на диске.
На рисунке 15.3 показан пример сравнения моделей.
Simulink Model Profiling
Simulink Model Profiling собирает данные о производительности в процессе выполнения модели и затем генерирует отчет, называемый профилем имитации на основании собранных данных. Этот отчет состоит из двух HTML-файлов: обобщающий файл и детальный файл. Обобщающий файл аккумулирует временную информацию и выводит ее в список, упорядоченный по временам выполнения для каждого метода. Детальный файл показывает, как много времени использует Simulink выполняя каждый метод, требующийся для моделирования, включая производные и основные методы.
Для выполнения профилирования необходимо выполнить команду Profiler в меню Tools и запустить модель на расчет. По завершении расчета будет открыт файл отчета в окне справочной системы. Гиперссылки в отчете позволяют просмотреть детальную информацию для каждого метода. В результате пользователь может легко локализовать области модели, которые требуют наибольшего времени выполнения и быстро определить, где необходимо сконцентрировать усилия по оптимизации.
Система меню обозревателя библиотек программы Simulink
File (Файл) — Работа с файлами библиотек.
Edit (Редактирование) — Добавление блоков и их поиск.
View (Вид) — Управление показом элементов интерфейса.
Help (Справка) — Вызов справочной системы.
Команда
|
Назначение
|
Меню File (Файл)
|
New
|
Открыть окно новой блок-диаграммы
|
|
Model (Ctrl-N)
|
Открыть окно для создания Simulink модели.
|
Library
|
Открыть окно для создания новой библиотеки Simulink.
|
Open … (Ctrl - O)
|
Открыть существующий mdl-файл. При выборе данного пункта открывается окно диалога, с помощью которого можно отыскать и открыть требуемый файл модели.
|
Close (Ctrl – W)
|
Закрыть окно модели (и соответствующий mdl-файл). В том случае, если модель изменялась, то перед закрытием окна MATLAB запросит подтверждение на закрытие файла.
|
Preferences…
|
Настройка Simulink. Задает параметры создаваемых моделей.
|
Меню Edit (Редактирование)
|
Add to the current model
|
Добавить выделенный блок в текущую модель.
|
Find block...
|
Найти блок с заданным именем. Команда выводит окно с запросом имени блока.
|
|
|
|
|
Find next block...
|
Найти следующий блок с заданным именем. Эту же операцию выполняет и команда Find next в окне задания слова для поиска.
|
Меню View (Вид)
|
Toolbar
|
Вывод/скрытие панели инструментов.
|
Status bar
|
Вывод/скрытие строки состояния.
|
Description
|
Вывод/скрытие окна сообщений.
|
Stay оn top
|
Установка статуса окна обозревателя библиотек “поверх всех окон”.
|
Collapse entire Browser
|
Закрытие текущего раздела библиотеки.
|
Expand entire Browser
|
Раскрытие текущего раздела библиотеки.
|
Large icons
|
Отображение пиктограмм блоков в увеличенном размере.
|
Small icons
|
Отображение пиктограмм блоков в уменьшенном размере.
|
Show Parameters for selected block
|
Вывод окна установки параметров отмеченного блока.
|
Help (Справка)
|
Help on the selected block
|
Справка по выделенному блоку.
|
Simulink help
|
Вывод окна справочной системы Simulink.
|
Tip of the day
|
Полезные советы каждый день.
|
Система меню окна модели
File (Файл) — Работа с файлами моделей.
Edit (Редактирование) — Изменение модели и поиск блоков.
View (Вид) — Управление показом элементов интерфейса.
Simulation (Моделирование) — Задание настроек для моделирования и управление процессом расчета.
Format (Форматирование) — Изменение внешнего вида блоков и модели в целом.
Tools (Инструментальные средства) — Применение специальных средств для работы с моделью (отладчик, линейный анализ и т.п.)
Help (Справка) — Вывод окон справочной системы.
Команда
|
Назначение
|
Меню File (Файл)
|
New
|
Открыть окно новой блок-диаграммы
|
|
Model (Ctrl-N)
|
Открыть окно для создания Simulink-модели.
|
Library
|
Открыть окно для создания новой библиотеки Simulink.
|
Open … (Ctrl - O)
|
Открыть существующий mdl-файл. При выборе данного пункта открывается стандартная диалоговая панель файловой системы Windows, с помощью которой можно найти и открыть требуемый файл модели.
|
Close (Ctrl – W)
|
Закрыть окно блок-диаграммы (и соответствующий mdl-файл). В том случае, если в блок-диаграмму вносились изменения, которые не были сохранены в файле на диске, то перед закрытием окна MATLAB запрашивает подтверждение на закрытие файла.
|
Save (Ctrl – S)
|
Сохранить (записать на диск) mdl-файл; если данный файл записывается впервые, то при выборе этой команды открывается стандартная диалоговая панель, с помощью которой пользователь может указать новое имя файла (вместо untitled) и каталог, в котором будет производиться запись; если же файл уже записывался на диск ранее, то при выполнении команды Save он будет сохранен под прежним именем и в том же каталоге (без открытия диалоговой панели).
|
Save as...
|
Команда позволяет сохранить файл под новым именем или в другом каталоге; для ее выполнения также используется стандартная диалоговая панель Windows.
|
Source Control...
|
Управление источниками сигналов.
|
|
Check in...
|
Проверка входа. Позволяет ввести расширенное текстовое описание источника.
|
Check out
|
Проверка выхода. Позволяет ввести расширенное текстовое описание источника.
|
Undo Check out
|
Отмена проверки выхода.
|
Preferences
|
Команда выводит окно настроек пакета Simulink (окно Preferences) с открытой панелью General > Source control, что позволяет выбрать схему управления источниками.
|
Model Properties
|
Команда вызова компоненты управления версиями Simulink-модели.
|
Print (Ctrl – P)
|
Команда обеспечивает вывод на печать блокдиаграмму модели и некоторую дополнительную информацию по ней. При выполнении этой команды открывается диалоговое окно, обеспечивающее настройку параметров печати
|
Print setup
|
Команда настройки параметров вывода на печать. Установка параметров выполняется с помощью стандартной диалоговой панели Windows
|
Exit MATLAB
|
Завершение работы с системой Matlab.
|
Меню Edit (Редактирование)
|
|
|
|
|
Undo
|
Отменить предыдущую команду редактирования. В некоторых случаях команда Undo может уточняться, например, после добавления в блок-диаграмму линии связи между блоками она называется Undo Add Line (Отменить добавление линии). Если нельзя отменить предыдущее действие, то команда Undo заменяется сообщением Can't Undo.
|
Redo
|
Отменить выполнение команды Undo. Эта команда также может видоизменяться (например, Redo Add Line), либо сообщать о невозможности отмены (Can't Redo).
|
Cut
|
Вырезать (переместить в буфер обмена) один или несколько блоков. Соответствующие блоки должны быть выделены.
|
Copy
|
Копировать один или несколько блоков. Копируемые блоки должны быть предварительно выбраны. Данная команда используется совместно с командой Paste.
|
Paste
|
Вставить копируемый или удаленный в буфер обмена участок модели. Для того чтобы указать позицию вставки, необходимо предварительно щелкнуть в соответствующей точке окна блок-диаграммы (этой точке будет соответствовать верхний левый угол вставляемой области).
|
Clear
|
Очистить (удалить) выделенную область. Область в буфере обмена не сохраняется, но может быть восстановлена с помощью команды Undo.
|
Select All (Ctrl - A)
|
Выделить все элементы блок-диаграммы.
|
Copy Model to Clipboard
|
Копировать модель в буфер обмена. Запись графического изображения блок-диаграммы в буфер обмена Windows для передачи в другие Windows приложения в качестве графического объекта.
|
Find … (Ctrl F)
|
Поиск объекта в модели
|
Block Parameters…
|
Вызов диалогового окна для установки параметров выбранного блока.
|
Block Properties…
|
Вызов диалогового окна для установки дополнительных атрибутов выбранного блока.
|
Signal
Properties
|
Вызов окна диалога окна для установки атрибутов
сигнала, передаваемого по выбранной линии связи. Окно содержит следующие элементы: • текстовое поле Signal Name (Имя сигнала), предназначенное для ввода имени (текстового атрибута) сигнала; метка отображается в блок-диаграмме рядом с соответствующей линией связи, • текстовое поле Description (Описание), позволяющее вводить пояснения к данному сигналу, • текстовое поле Document Link (Связь с документом), в котором вводится выражение (команда) MATLAB, формирующее ссылку на источник дополнительной информации по данному сигналу, • флажок Simulink Global (Test Point) (Визуализация контрольной точки). Если он установлен, то во время моделирования соответствующая линия связи “подсвечивается” при наличии в ней сигнала.
|
Create
Subsystem
(Ctrl - G)
|
Создать подсистему. По этой команде выбранная
часть модели (один или несколько блоков) “сворачи
ваются” в подсистему, и заменяются в блокдиаграмме одним блоком — Subsystem..
|
Mask
Subsystem…
(Ctrl – M)
|
Маскировать подсистему. Команда обеспечивает вы
зов редактора “маски” подсистемы. Команда становится доступна, если в модели выделена подсистема (блок типа Subsystem). Маскированная подсистема — это подсистема, используемая в модели как один неделимый блок, содержимое которого скрыто под “маской”, с помощью которой осуществляется задание параметров подсистемы. Если выделенная подсистема уже имеет “маску”, т. е. является маскированной, то команда Mask Subsystem принимает вид Edit Mask.
|
Look Under
Mask
(Ctrl - U)
|
Заглянуть под маску. Команда открывает окно блок
диаграммы маскированной подсистемы. Команда доступна только в том случае, если выбранный блок является маскированной подсистемой
|
Link options
|
Настойка связей блока
|
|
Go To Library Link
|
Перейти к связанной библиотеке. Команда открывает раздел библиотеки, к которому относится выделенный блок; доступна только в том случае, если блок взят из библиотеки пользователя или из раздела Simulink Extras.
|
|
Disable Link
|
Разорвать связь с библиотекой. Команда позволяет сделать библиотечный блок "независимым", не связанным с библиотекой, что дает возможность его редактирования. Данная команда работает для тех же разделов библиотеки, что и предыдущая.
|
Unlock
|
Разблокировать библиотеку. Команда доступна толь
|
Library
|
ко в окне библиотеки (Library). После ее выполнения становится возможным редактирование соответствующего раздела, при этом на месте команды выводится признак Library Unlocked (Библиотека разблокирована), который сохраняется до закрытия окна редактируемого раздела.
|
Update Diagram (Ctrl - D)
|
Обновить окно модели. Команду необходимо использовать в следующих случаях: • после изменения библиотечных блоков, копии которых используются в модели; • после добавления в конфигурацию MATLAB нового раздела библиотеки, блоки из которого используются в открытой модели; • после изменения параметров одного или нескольких блоков модели из командного окна MATLAB; • после изменения S-функции, используемой в модели (при добавлении или удалении входных и/или выходных портов соответствующего блока).
|
Меню View (Вид)
|
Go to Parent
|
Переход из подсистемы в систему высшего уровня иерархии (“родительскую систему”). Команда доступна только, если открыта подсистема.
|
Toolbar
|
Показать/скрыть панель инструментов
|
Теория Электропривода
тут
Statusbar
|
Показать/скрыть строку состояния
|
Model Browser Options
|
Параметры обозревателя модели.
|
|
Model Browser
|
Вызов обозревателя модели
|
|
Show Library Links
|
Показывать в окне обозревателя библиотечные подсистемы, то есть подсистемы, созданные пользователем и включенные им в состав собственной библиотеки. При выборе этой команды окно блок диаграммы модели дополняется подокном, отображающим ее иерархическую структуру в виде дерева
|
|
Show Masked Subsystems
|
Показывать в окне обозревателя маскированные подсистемы.
|
Block Data Tips Options
|
Справка по параметрам блока. Содержит команды управления всплывающей подсказкой (tips) для блоков модели. О том, что соответствующий режим установлен, свидетельствует маркер в виде птички. Подсказка появляется на экране, если задержать на некоторое время указатель мыши над пиктограммой блока.
|
|
Block name
|
Показывать название блока
|
|
Parameter names and values
|
Показывать имена и значения параметров настройки блока.
|
|
User description string
|
Показывать описание блока заданное пользователем с помощью команды Edit/Block Properties…
|
Show Library Browser
|
Показывать окно обозревателя библиотек блоков.
|
Zoom In
|
Увеличить масштаб. Увеличить масштаб изображения блок-диаграммы; каждое обращение к команде дает увеличение масштаба в полтора раза (на 50%).
|
Zoom Out
|
Уменьшить масштаб. Уменьшить масштаб изображения блок-диаграммы; каждое обращение к команде дает уменьшение масштаба в полтора раза.
|
Fit system to
view
|
Подготовить систему для просмотра. Увеличить масштаб изображения выбранного элемента блок диаграммы. Команда обеспечивает N-кратное увеличение (кратность увеличения зависит от исходного размера элемента), и позиционирует элемент по центру окна блок-диаграммы. Повторное применение дополнительного эффекта не дает.
|
Normal (100%)
|
Восстановить стандартный масштаб изображения.
|
Меню Simulation (Моделирование)
|
Start
|
Начать моделирование. При запуске модели команда Start заменяется командой Pause, которая позволяет приостановить сеанс моделирования. Кроме того, становится доступной команда Stop, расположенная ниже. При прерывании моделирования с помощью команды Pause она заменяется альтернативной командой — Continue.
|
Stop
|
Завершить моделирование. Позволяет остановить моделирование досрочно, то есть либо до истечения заданного интервала моделирования, либо до реализации предусмотренных условий окончания сеанса моделирования. Команда становится доступной после запуска модели на исполнение
|
Simulation parameters ...
|
По данной команде открывается диалоговое окно настроек параметров моделирования.
|
Normal
|
Обычный (не ускоренный) режим расчета. Команда доступна, если установлено приложение Simulink Performance Tool.
|
Accelerator
|
Ускоренный режим расчета. Команда доступна, если установлено приложение Simulink Performance Tool. В этом режиме, после запуска модели на исполнение, создается исполняемый файл модели в виде динамической библиотеки (файл с расширением dll). В результате скорость расчета возрастает в несколько раз. Ускоренный режим расчета не поддерживается для моделей имеющих замкнутые алгебраические контуры.
|
Меню Format (Форматирование)
|
Font...
|
Выбор шрифта для текстовой информации, отображаемой блоком.
|
Text Alignment
|
Выравнивание текста. Задает способ расположения текста в текстовой области.
|
Flip Name
|
Изменить положение имени блока (над или под изображением блока).
|
Hide Name/ Show Name
|
Скрыть/показать имя блока.
|
Flip Block
|
Развернуть изображение блока относительно вертикальной оси симметрии на 180°.
|
Rotate Block
|
Повернуть изображение блока относительно вертикальной оси симметрии на 90° (по часовой стрелке).
|
Show/Hide Drop Shadow
|
Показать/скрыть “тень” блока.
|
Hide/Show Port Labels
|
Скрыть/показать метки портов блока. Данная команда применима только к блокам-подсистемам (Subsystem), содержащим внутренние входные или выходные порты, то есть блоки In и Out. Если такие блоки имеются в подсистеме, то их метки по умолчанию выводятся на пиктограмме блока-подсистемы.
|
Foreground Color
|
Основной цвет. Выбор цвета контура и символов на пиктограмме выбранного блока (группы блоков).
|
Background Color
|
Цвет фона. Выбор цвета фона пиктограммы выбранного блока (группы блоков).
|
Screen Color
|
Выбор цвета фона блок-диаграммы.
|
Library Link Display
|
Отображение связей с библиотеками.
|
Sample Time Colors
|
Подсветка блоков, управляемых параметром Sample time. Блоки, работа которых зависит от величины шага модельного времени, а также соединяющие их линии связи при выполнении данной команды выделяются на блок-диаграмме красным цветом.
|
Wide nonscalar lines
|
Широкие линии связи для не скалярных величин. Линии связи, по которым передаются векторные и матричные величины, выводятся более “жирными”.
|
Signal dimensions
|
Размерность векторных и матричных линий связи. Для векторных или матричных линий связи выводится в цифровой форме размерность передаваемого сигнала, то есть число элементов вектора.
|
Port Data Types
|
Тип порта. Рядом с линиями связи отображаются наименования типов данных, установленных для портов, с которыми они соединены.
|
Storage class
|
Класс памяти.
|
Execution order
|
Вывод порядкового номера блока в последовательности выполнения расчета.
|
Tools (Инструментальные средства)
|
Data explorer…
|
Обозреватель данных. Позволяет просмотреть значения переменных находящихся в рабочей области MATLAB.
|
Simulink debugger…
|
Отладчик моделей. Позволяет в пошаговом режиме протестировать модель.
|
Data Class Designer…
|
Инструмент создания классов данных.
|
Model differences…
|
Сравнение моделей.
|
|
Merge/Compare two models…
|
Объединить/Сравнить две модели.
|
Compare to last saved model…
|
Сравнить текущее состояние модели с вариантом который был сохранен на диске в последний раз.
|
Profiler
|
Создание отчета о процессе моделирования. Команда должна быть выполнена до начала процесса моделирования. По окончании моделирования создается и выводится на экран отчет в котором можно просмотреть временные затраты при выполнении расчета.
|
Coverage Setting…
|
Открытие окна настроек отчета по моделированию.
|
Linear Analysis…
|
Исследование линейных стационарных систем. Команда доступна, если установлен инструмент Control System Toolbox (Приложение к MATLAB для исследования и разработки систем управления).
|
Help (Справка)
|
Simulink help
|
Справка по работе с программой Simulink.
|
Blocks
|
Справка по выделенному блоку или библиотеке блоков в целом.
|
Shortcuts
|
Справка по управлению программой Simulink с помощью нажатия комбинаций клавиш.
|
S-functions
|
Справка по созданию S-функций.
|
Demos
|
Запуск системы демонстрационных примеров.
|
About Simulink
|
Вывод окна с номером версии Simulink.
|
Создание автоматически обновляемых пиктограмм
Создание автоматически обновляемой пиктограммы рассмотрим на примере функционального генератора (рисунок 9.10.2). Генератор может вырабатывать сигнал трех видов: треугольный, прямоугольный и синусоидальный. Вполне логично было бы создать такую пиктограмму, на которой отображалась бы форма выбранного на текущий момент сигнала. Это достаточно легко сделать, поскольку за выбор формы сигнала в рабочей области маски отвечает переменная Wave_form.
Числовое значение этой переменной равное 1 соответствует треугольному сигналу на выходе генератора, значение равное 2 соответствует прямоугольному сигналу, и 3 – синусоидальному.
Реализация поставленной задачи обеспечивается указанными ниже командами, которые необходимо ввести в графе Initialization commands редактора маски:
switch Wave_form
case 1 % треугольный сигнал
x=[-6.28 -4.71 -1.57 1.57 4.71 6.28 ]; y=[0 1 -11 -1 0]; case 2 % прямоугольный сигнал
x=[-6.28 -6.28 -3.14 -3.14 0 0 3.14 3.14 6.28 6.28 ];
y=[0 1 1 -1 -1 1 1 -1 -10]; case 3 % синусоидальный сигнал
x=(-314*2:314*2)/100;
y=sin(x); end;
Примечание:
Здесь и в дальнейшем в текстах на языке MATLAB включены комментарии на русском языке, которые необходимо удалить при составлении выражений в среде MATLAB.
В зависимости от значения переменной Wave_form векторам x и y пРисунокваиваются разные значения, благодаря чему команда построения графика plot(x,y); , указанная в графе Drawing commands строит разные графики.
Пример, показывающий все три варианта пиктограммы генератора, представлен на рисунке 9.10.11.
В примере, дополнительно, строятся осикоординат спомощью следующих команд:
plot([-6.28 -6.28],[1.2 -1.2]); plot([-6.28 8],[0 0]);
Также в графе графе Drawing commands введена команда, рисующая одну точку в левом нижнем углу пиктограммы:
plot([-10,-10],[-1.2 -1.2]);
С помощью этой команды достигается относительное смещение графиков вправо. Таким образом в левой части пиктограммы появляется дополнительное свободное место для отображения меток входных портов (управление портами маскированной подсистемы будет рассмотрено позже).
Создание динамически обновляемых окон диалога
Динамически обновляемое окно диалога это такое окно, внешний вид которого изменяется в зависимости от значения параметров заданных в самом окне. Например, для рассматриваемого в данной главе функционального генератора, в случае выбора внешних источников сигналов задания на частоту или амплитуду, графы, в которые вводятся значения частоты и амплитуды, могут отсутствовать или быть не активными.
Для создания такого окна необходимо:
Выделить блок и ввести в командном окне MATLAB следующее выражение:
set_param(gcb, 'MaskSelfModifiable', 'on') .
После чего модель необходимо сохранить. Данная команда дает разрешение на самомодификацию окна.
Ввести вкомандном окне команду вида:
set_param(gcb,'MaskCallbacks',{'parm1_callback', ‘’,'parm3_callback'}); ,
где в фигурных скобках указываются функции обрабатывающие событие изменения параметра.
В данном примере функция parm1_callback обрабатывает событие при изменении первого параметра, а функция parm3_callback обрабатывает событие при изменении третьего параметра. В том случае, если для какого-либо параметра такая обработка не нужна, функция не записывается, но два апострофа для данного параметра (пустая функция) все равно должны указываться. В данном примере обработка события для второго параметра отсутствует. Сама функция может быть любым допустимым выражением на языке MATLAB.
Применительно к рассматриваемому функциональному генераторуэта команда выглядит следующим образом:
set_param(gcb,'MaskCallbacks',{'call_back_freq','','', 'call_back_magn',''}); .
Функция call_back_freq обрабатывает событие при установке или снятии флажка параметра Internal source of frequency signal (тип источника сигнала задания на частоту, переменная Internal_freq), а функция call_back_magn обрабатывает событие при установке или снятии флажка параметра Internal source of magnitude signal (тип источника сигнала задания на амплитуду, переменная Internal_magn). После этого модель необходимо сохранить.
Разработать функции обработки.
Для рассматриваемого примера функция call_back_freq (файл call_back_freq.m) выглядит следующим образом:
Freq_param=get_param(gcb,'Internal_freq'); %
Присвоение переменной Freq_param значения % параметра Internal_freq (тип источника % сигнала задания на частоту: внутренний или % внешний).
Параметр Internal_freq является % вторым в списке параметров окна диалога. if strcmp(Freq_param,'on');
% Если значение переменной Freq_param есть 'on' % (внутренний источник сигнала задания на частоту), то enable={'on','on','on','on','on'}; % всем элементам вектора enable присваиваются % значения равные 'on' (все параметры окна диалога % должны быть активны).
else;
% Если значение переменной Freq_param не равно 'on' % (внешний источник сигнала задания на частоту), то enable={'on','off','on','on','on'}; % второму элементу вектора enable пРисунокваивается % значение 'off' (второй параметр должен быть не % активным).
end;
% Завершение конструкции if … else set_param(gcb,'MaskEnables',enable);
% Присвоение параметру маскированной подсистемы % MaskEnables значения вектора enable. % Параметр MaskEnables устанавливает режим % активности параметров окна диалога маскированной % подсистемы.
Функция проверяет значение параметра Internal_freq. Если значение этого параметра есть 'on', то вектор enable имеет все элементы равные 'on', если же значение параметра Internal_freq равно 'off' (используется внешний источник сигнала задания на частоту), то второй элемент вектора enable имеет значение 'off' и функция set_param(gcb,'MaskEnables',enable); сделает не активной графу для ввода второго параметра (частота внутреннего источника).
Функция call_back_magn (файл call_back_magn.m) выглядит следующим образом:
Magn_param=get_param(gcb,'Internal_magn');
% Присвоение переменной Magn_param % значениЯ параметра Internal_magn (тип % источника сигнала задания на амплитуду: % внутренний или внешний). % Параметр Internal_magn является пятым % в списке параметров окна диалога.
if strcmp(Magn_param,'on');
% Если значение переменной Magn_param есть 'on' % (внутренний источник сигнала задания на амплитуду),
visible={'on','on','on','on','on'}; % то всем элементам вектора visible присваиваются % значения равные 'on' (все параметры окна диалога % должны быть видимы).
else;
% Если значение переменной Magn_param не равно 'on' % (внешний источник сигнала задания на на амплитуду), то visible={'on','on','on','on','off'}; % пятому элементу вектора visible присваивается % значение 'off' (пятый параметр окна диалога должен % быть невидимым).
end; % Завершение конструкции if ... else set_param(gcb,'MaskVisibilities',visible);
% Присвоение параметру маскированной подсистемы % MaskVisibilities значения вектора visible.
% Параметр MaskVisibilities устанавливает режим % видимости параметров окна диалога маскированной % подсистемы.
Функция проверяет значение параметра Internal_magn. Если значение этого параметра есть 'on', то вектор visible имеет все элементы равные 'on', если же значение параметра Internal_magn равно 'off' (используется внешний источник сигнала задания на амплитуду), то пятый элемент вектора visible имеет значение 'off' и функция set_param(gcb,'MaskVisibilities',visible); сделает не отображаемой графу для ввода пятого параметра (амплитуда внутреннего источника).
Для правильной работы такого окна диалога необходимо чтобы файл модели и файлы функций обработки находились в одной папке, и данная папка являлась рабочей. Согласно документации по Simulink текст callback-функций можно записывать также явным образом в вызове функции set_param.
Внешний вид окна диалога генератора для случая использования внешних источников сигналов задания на частоту и амплитуду показан на рисунке 9.10.14.
При разработке динамически изменяемых окон диалога можно также переопределять с помощью функции set_param следующие параметры маскированной подсистемы:
MaskType – Название блока.
MaskDescription – Описание маскированной подсистемы.
MaskPromptString – Названия параметров, задаваемые в окне диалога.
MaskValueString – Значения параметров, задаваемые в окне диалога.
Создание окна параметров
Окно параметров создается с помощью вкладки Initialization (Инициализация) редактора маски.
Для создания поля ввода параметра с его описанием необходимо выполнить следующие действия:
Нажать кнопку Add (Добавить).
Ввести описание параметра в поле Prompt (Подсказка). В качестве описания параметра обычно используется его название в виде текста, например, “Gain”, “Constant value” ит.п.
Указать идентификатор параметра в поле Variable (Переменная). Естественно, что это должен быть один из тех идентификаторов, который использовался при задании параметров блоков внутри подсистемы (хотя это не обязательно, поскольку параметр может быть использован и для модификации самого окна диалога). Все переменные, идентификаторы которых заданы на вкладке Initialization, помещаются в Mask Workspace – локальную рабочую область маски и являются доступными только внутри подсистемы.
Выбрать тип элемента интерфейса задающего параметр из списка Control Type:
Edit – Редактируемое поле ввода.
Checkbox – Флажок.
Popup – Раскрывающийся список. В этом случае вграфе Popup Strings (Элементысписка) необходимо ввести элементы списка, разделенные символом вертикальной черты. Например, выражение alpha|beta|gamma задаст список из трех элементов: alpha,beta и gamma.
Выбрать формат параметра из списка Assiggment:
Evaluate – Вычисляемый. Выбирается, если параметр должен иметь числовое значение. В данное поле можно будет ввести выражение в соответствии с правилами языка MATLAB. Формат Evaluate позволяет также использовать числовую форму значения переменной в том случае, если тип элемента интерфейса выбран в виде флажка или раскрывающегося списка. Так, например, для раскрывающегося списка alpha|beta|gamma значение связанной со списком переменной будет равно 1, если в списке выбрано alpha, 2 – если в списке выбрано beta, и 3 – если всписке выбрано gamma. Для элемента интерфейса Checkbox вычисляемые значения будут равны 1 (при установленном флажке) и 0 (при снятом флажке).
Literal – Текстовый. Выбирается, если параметр должен быть строкой символов.
Ввести команды инициализации в графе Initialization commands. Команды инициализации представляют собой обычные команды на языке MATLAB и могут включать операторы и m-функции. Такие команды задают переменные, которые будут находиться в рабочей области маскированной подсистемы. Эти переменные доступны внутриподсистемы и могут быть использованы в качестве параметров блоков входящих в состав подсистемы, а также для создания пиктограммы подсистемы.
Команды инициализации выполняются в следующих случаях:
При открытии окна модели.
При запуске модели на выполнение.
При выполнении команды Edit/Update diagram.
При вращении блока маскированной подсистемы (в этом случае команды инициализации обеспечивают перерисовку пиктограммы).
При автоматическом изменении пиктограммы, зависящей от параметров блока.
В качестве примера маскированной подсистемы рассмотрим функциональный генератор. Схема модели генератора показана на рисунке 9.10.2.
Модель генератора обладает следующими возможностями:
Значения амплитуды и частоты сигнала могут задаваться либо как параметры генератора в его окне диалога, либо от внешних источников через входные порты.
Форма выходного сигнала генератора (треугольник, прямоугольник или синусоида) задается в окне диалога.
Вид окна диалога, созданного с помощью редактора маски показан на рисунке 9.10.3.
Название параметра, идентификатор связанной с ним переменной, тип элемента интерфейса и формат параметра приведены в ниже лежащей таблице.
Prompt
|
Variable
|
Control Type
|
Assiggment
|
Назначение
|
Internal source of frequency signal
|
Internal_freq
|
Checkbox
|
Evaluate
|
Задает тип источника сигнала задания на частоту: внутренний или внешний.
|
Frequency (Hz)
|
Freq
|
Edit
|
Evaluate
|
Задает величину задания на частоту внутреннего источника
|
Wave form
|
Wave_form
|
Popup
|
Evaluate
|
Задает форму выходного сигнала: треугольник, прямоугольник или синусоида
|
Internal source of magnitude signal
|
Internal_magn
|
Checkbox
|
Evaluate
|
Задает тип источника сигнала задания на амплитуду: внутренний или внешний.
|
Magnitude
|
Magn
|
Edit
|
Evaluate
|
Задает величину задания на амплитуду внутреннего источника
|
Окно редактора маски с открытой вкладкой Initialization, в котором создано окно параметров генератора, показано на рисунке
9.10.4.
Выбор типа источников задания на частоту (внутренний или внешний) осуществляется с помощью блока Selector1 (смотри рисунок 9.10.2). Для этого значение параметра Elements блока Selector1 задано как [(Internal_freq+1)]. Таким образом, если флажок параметра Internal source of frequency signal установлен, то числовое значение переменной Internal_freq равно 1 и на выход селектора проходит сигнал от внутреннего источника, если же флажок снят, то на выход селектора проходит сигнал от входного порта системы (т.е. от внешнего по отношению к генератору источника). Аналогичным образом с помощью переменной Internal_magn выполняется выбор источника сигнала задания на амплитуду.
Выбор формы выходного сигнала выполняется также с помощью блока Selector. Треугольный, прямоугольный и синусоидальный сигналы объединяются в вектор с помощью блока Mux, а затем в зависимости от числового значения переменной Wave_form, блок Selector выполняет выбор нужного элемента входного вектора.
Значение параметра Elements блока Selector задано как [Wave_form]. Таким образом, если, например, параметр генератора Wave form имеет значение Sine, то числовое значение переменной Wave_form равно 3, и, следовательно, на выход селектора проходит третий элемент входного вектора, т.е. синусоидальный сигнал.
Создание пиктограммы подсистемы
Пиктограмма подсистемы создается с помощью вкладки Icon (Пиктограмма) редактора маски. Окно редактора маски с открытой вкладкой Icon показано на рисунке 9.10.5.
Вкладка содержит следующие элементы:
Drawing commands – Область ввода команд рисования. Команды рисования являются выражениями допустимыми в языке MATLAB.
Icon frame – Список позволяющий выбрать способ отображения рамки пиктограммы:
Visible – Рамка видна.
Invisible – Рамка не видна.
Icon transparency - Список позволяющий установить прозрачность пиктограммы:
Opaque – Пиктограмма не прозрачна.
Transparent– Пиктограмма прозрачна.
Icon rotation -Список позволяющий задать возможность вращения пиктограммы:
Fixed – Положение пиктограммы фиксировано.
Rotates – Пиктограмма может вращаться вместе с блоком.
Drawing coordinates – Список, задающий условия масштабирования пиктограммы:
Autoscale – Автоматическое масштабирование. Рисунок занимает максимально возможную площадь внутри пиктограммы.
Normalized – Нормализованное масштабирование. Координаты левого нижнего угла пиктограммы (0,0), координаты правого верхнего угла (1,1).
Pixel – Координаты Рисунка задаются в пикселах.
Команды вывода текста
Для вывода текста могут использоваться следующие команды:
disp('text') или disp(variablename) – Вывод текста 'text' или значения символьной переменной variablename в центре пиктограммы.
text(x, y, 'text') или text(x, y, variablename) – Вывод текста 'text' или значения символьной переменной variablename начиная с позиции, заданной координатами x и y.
text(x, y, 'text', 'horizontalAlignment', halign,'verticalAlignment', valign)- Вывод текста 'text' в позиции заданной координатами x и y и с указанием способов выравнивания относительно этой позиции по вертикали или горизонтали. Параметр halign может принимать значения: 'left', 'right' или 'center'. Параметр valign может принимать значения: 'base', 'bottom' или 'middle'.
fprintf('text') или fprintf('format', variablename) – Форматированный вывод (по правилам языка C) текста 'text' или значения символьной переменной variablename в центре пиктограммы.
port_label(port_type, port_number, label) – Вывод на пиктограмме метки порта. Например, выражение port_label('input', 1, 'a') выводит на пиктограмме метку a первого входного порта.
Для вывода текста в несколько строк допускается использование сочетания символов \n для перехода на новую строку.
Примеры маскированных подсистем с различными вариантами текстовых надписей даны на рисунке 9.10.6. Значения текстовых переменных заданы на вкладке Initialization в графе Initialization commands.

Электричество
Создание справки маскированной подсистемы
Для создания описания и справки маскированной подсистемы служит вкладка Documentation (Документация). Вкладка Documentation содержит две графы: Block description (Описание блока) и Block Help (Справка по блоку). Внешний вид редактора маски с открытой вкладкой Documentation показан нарисунке 9.10.12.
Текст, введенный в графу Block description, отображается в верхней части окна диалога и предназначен для краткого описания блока. В графу Block Help вносятся команды обеспечивающие загрузку файлов справки, созданных пользователем, в справочную систему при нажатии клавиши Help в окне параметров. Эти команды описаны в документации по Simulink. Наиболее удобным форматом файла справки является htm (html) – формат. Вызов справочного htmфайла осуществляется командой вида: web(['file:///' which('helpfile.htm')]); , где helpfile.htm – имя файла справки.
Для правильной работы справочной системы необходимо, чтобы файл справки находился в той же папке, что и файл модели, и данная папка являлась рабочей. Допускается также вместе с именем файла указывать его полный путь.
Пример окна справки подсистемы показан на рисунке 9.10.13.
Рисунок 9.10.13.Пример окна справки подсистемы
Список контрольных точек Break/Display points
Окно списка контрольных точек (рисунок 13.4) содержит список блоков, для которых установлены контрольные точки (графа Blocks), а также свойства этих точек указанные с помощью флажков. Пользователь снимая или устанавливая флажки может изменять свойства контрольной точки, а именно: задавать/убирать точку прерывания на входе блока (графа


).
Удалить контрольную точку можно выделив ее в списке, и нажав кнопку Remove selected point (убрать выделенную точку).
Subsystem – подсистемы
Подсистема это фрагмент Simulink-модели, оформленный в виде отдельного блока. Использование подсистем при составлении модели имеет следующие положительные стороны:
Уменьшает количество одновременно отображаемых блоков на экране, что облегчает восприятие модели (в идеале модель полностью должна отображаться на экране монитора).
Позволяет создавать и отлаживать фрагменты модели по отдельности, что повышает технологичность создания модели.
Позволяет создавать собственные библиотеки.
Дает возможность синхронизации параллельно работающих подсистем.
Позволяет включать в модель собственные справочные средства.
Дает возможность связывать подсистему с каким-либо mфайлом, обеспечивая запуск этого файла при открытии подсистемы (нестандартное открытие подсистемы). Использование подсистем и механизма их блоков позволяет
создавать блоки, не уступающие стандартным по своему оформлению (собственное окно параметров блока, пиктограмма, справка ит.п.).
Количество подсистем в модели не ограничено, кроме того подсистемы могут включать в себя другие подсистемы. Уровень вложенности подсистем друг в друга также не ограничен.
Связь подсистемы с моделью (или подсистемой верхнего уровня иерархии) выполняется с помощью входных (блок Inport библиотеки Sources) и выходных (блок Outport библиотеки Sinks) портов. Добавление в подсистему входного или выходного порта приводит к появлению на изображении подсистемы метки порта, с помощью которой внешние сигналы передаются внутрь подсистемы или выводятся в основную модель. Переименование блоков Inport или Outport позволяет изменить метки портов, отображаемые на пиктограмме подсистемы со стандартных (In и Out) на те, которые нужны пользователю.
Подсистемы могут быть виртуальными (Subsystem) и монолитными (Atomic Subsystem). Отличие этих видов подсистем заключается в порядке выполнения блоков во время расчета. Если подсистема является виртуальной, то Simulink игнорирует наличие границ отделяющих такую подсистему от модели при определении порядка расчета блоков. Иными словами в виртуальной системе сначала могут быть рассчитаны выходные сигналы нескольких блоков, затем выполнен расчет блоков в основной модели, а затем вновь выполнен расчет блоков входящих в подсистему. Монолитная подсистема считается единым (неделимым) блоком и Simulink выполняет расчет всех блоков в такой подсистеме, не переключаясь на расчеты других блоков в основной модели. Изображение монолитной подсистемы имеет более толстую рамку по сравнению с виртуальной подсистемой.
Подсистемы могут быть также управляемыми или неуправляемыми. Управляемые подсистемы всегда являются монолитными. Управляемые подсистемы имеют дополнительные (управляющие) входы, на которые поступают сигналы активизирующие данную подсистему. Управляющие входы расположены сверху или снизу подсистемы. Когда управляемая подсистема активизирована – она выполняет вычисления. В том случае если управляемая подсистема пассивна, то она не выполняет вычисления, а значения сигналов на ее выходах определяются настройками выходных портов.
Для создания в модели подсистемы можно воспользоваться двумя способами:
Скопировать нужную подсистему из библиотеки Subsystem в модель.
Выделить с помощью мыши нужный фрагмент модели и выполнить команду Create Subsystem из меню Edit окна модели. Выделенный фрагмент будет помещен в подсистему, а входы и выходы подсистемы будут снабжены соответствующими портами. Данный способ позволяет создать виртуальную неуправляемую подсистему. В дальнейшем, если это необходимо, можно сделать подсистему монолитной, изменив ее параметры, или управляемой, добавив управляющий элемент из нужной подсистемы находящейся в библиотеке. Отменить группировку блоков в подсистему можно командой Undo.
Рисунок 9.9. 1 иллюстрирует процесс создания подсистемы вторым способом. На рисунке 9.9.2 показан результат этого процесса. В примере использована модель управляемого функционального генератора.
Управление портами маскированной подсистемы
В предыдущем параграфе рассматривалась методика создания динамически обновляемых окон диалога. В приведенном примере задание на амплитуду или частоту генератора сигналов может задаваться как параметр окна диалога блока, либо поступать от внешнего источника через входной порт подсистемы. При этом внешний вид блока, когда внешние источники не задействованы, оказывается точно таким же, как и при их использовании. Это неудобно, поскольку внешний вид блока (наличие на пиктограмме входных портов) вводит в заблуждение относительно фактических источников сигналов задания. Выходом из создавшейся ситуации является создание callback функций убирающих или восстанавливающих входные порты в подсистеме. Основная идея при этом заключается в том, чтобы в случае, если внешний источник не используется – заменить входной порт подсистемы на блок Ground, а если внешний источник используется – выполнить обратную замену. Такие замены легко выполняются с помощью команд управления Simulink-моделью (команды подробно рассмотрены в документации на Simulink). Для повышения наглядности пиктограммы генератора стандартные названия входных портов In1 и In2 заменены на M (входной порт для сигнала задания на амплитуду) и F (входной порт сигнала задания на частоту). Пиктограмма генератора и его схема показаны на рисунке 9.10.15.
Первая часть функции call_back_freq управляет окном диалога, и аналогична приведенной в предыдущем параграфе. Вторая часть – управляет первым входным портом подсистемы. Вторая часть функции содержит также команды проверяющие правильность нумерации портов и восстанавливающие ее, если нумерация портов нарушена.
На рисунке 9.10. 16 приведена модель генератора для случая, когда источник задания на амплитуду сигнала является внутренним, а источник задания на частоту – внешним.
На рисунке видно, что при выборе внутреннего источника сигнала задания на амплитуду (флажок Internal source of magnitude signal установлен) соответствующий входной порт на пиктограмме отсутствует, а в самой модели генератора входной порт M заменен блоком Ground. При этом задание на амплитуду сигнала поступает от блока Constant2 внутри подсистемы, а задание на частоту выходного сигнала – от внешнего источника через входной порт с меткой F.
Управляемая фронтом сигнала подсистема Triggered Subsystem
Подсистема Triggered Subsystem (в дальнейшем Tподсистема) включается фронтом (перепадом уровня) управляющего сигнала и выполняет вычисления только на том шаге моделирования, где произошло это изменение. Если входной сигнал векторный, то подсистема активизируется, если хотя бы в одном элементе изменяется уровень сигнала. Возврат T-подсистемы в исходное состояние не производится (подсистема сохраняет последнее значение до следующего запуска), поэтому параметр States when enabling выходных портов имеет значение held, и недоступен для изменения.
В T-подсистеме могут использоваться блоки, для которых модельное время является наследуемым параметром от предыдущего блока (например, Gain или Logical Operator), а также дискретные блоки, для которых параметр sample time имеет значение –1 (минус один).
Свойства T-подсистемы определяются параметрами блока Trigger, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже.
Параметры:
Trigger type – Тип триггера. Выбирается из списка:
rising – Активизация подсистемы положительным фронтом.
falling – Активизация подсистемы отрицательным фронтом.
either – Активизация подсистемы как положительным, так и отрицательным фронтом.
function-call – Активизация подсистемы определяется логикой работы заданной S-функции.
Show output port (флажок) – Показать выходной порт.
Управляемая подсистема For Iterator Subsystem
Управляемая подсистема For Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений должно быть известно заранее и может задаваться внешним источником сигнала или с помощью параметра блока. Основные свойства подсистемы задает итерационный блок For Iterator. Блок является аналогом оператора цикла For языка программирования C. Блока For может находиться в любом месте подсистемы. Его параметры перечислены ниже.
Параметры:
States when starting – Состояние подсистемы при следующем запуске. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использоватьначальное (исходное) состояние.
Source of number of iterations (флажок) – Источник задающий количество итераций.
internal – Внутренний.
external – Внешний.
Number of iterations – Количество итераций. Параметр доступен, если выбран внутренний источник числа итераций.
Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.
Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double.
На рисунке 9.9.9 показан пример использования For Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Количество итераций задается внешним источником и равно 20.
С-код, соответствующий алгоритму работы For Iterator Subsystem в приведенном примере выглядит следующим образом:
sum = 0; iterations = 20; sum_increment = 10; for (i = 0; i < iterations; i ++) { sum = sum + sum_increment; }
Управляемая подсистема While Iterator Subsystem
Управляемая подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее не известно. Цикл прекращается, если значение логического сигнала на управляющем входе подсистемы станет равно FALSE. Основные свойства подсистемы задает итерационный блок While Iterator. Блок является аналогом оператора цикла while (do-while) языка программирования C.
Свойства While Iterator Subsystem определяются параметрами блока While Iterator. Его параметры перечислены ниже.
Параметры:
Maximum number of iterations – Максимальное количество итераций. Если значение параметра равно -1 (минус один), то количество итераций не ограничивается.
While loop type (флажок) – Тип цикла. Выбирается из списка:
while – Цикл while.
do-while – Цикл do-while.
States when starting – Состояние подсистемы системы при следующем запуске. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использоватьначальное (исходное) состояние.
Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.
Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double. Входной порт IC позволяет задать начальное значение сигнала прекращающего выполнение цикла while. При использовании цикла do-while подсистема будет выполнена хотя бы один раз (поскольку проверка условия в этом случае производится в конце цикла).
На рисунке 9.9.10 показан пример использования While Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Выполнение цикла прекращается, когда величина суммы достигнет значения 100.
С-код, соответствующий алгоритму работы While Iterator Subsystem вприведенном примере выглядит следующим образом:
sum= 0; IC = 1; iteration_number = 0; cond = IC; while (cond != 0) { iteration_number = iteration_number + 1; sum = sum + sum_increment; if (sum > 100 OR iterations > max_iterations) cond = 0;
Управляемая по условию подсистема Action Subsystem
Подсистема предназначена для работы под управлением блоков If или Switch Case. В первом случае она называется If Action Subsystem, а во втором Switch Case Action Subsystem. Параметры подсистемы определяются настройками ее выходных портов, а также настройкой блока Action Port, наличие которого в подсистеме и превращает ее в Action Subsystem.
Блок имеет один параметр настройки:
States when execution is resumed – Состояние подсистемы системы при следующем возобновлении работы. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использовать начальное (исходное) состояние.
Рассматриваемый параметр оказывает такое же действие на поведение подсистемы как параметр States when enabling блока Enable.
Управляемая S-функцией подсистема Function-call subsystem
Function-call subsystem (в дальнейшем FC-подсистема) является T-подсистемой, предназначенной для использования совместно с S-функцией написанной на языке C. Используя специальные средства, можно обеспечить выполнение подсистемы во время выполнения S-функции. На время выполнения FC-подсистемы работа S-функции останавливается, а по окончании выполнения FC-подсистемы работа S-функции возобновляется. Таким образом, FC-подсистема обеспечивает создание S-функций, запускающих подсистемы составленные из Simulink-блоков. Механизм создания таких S-функций описан в документации Simulink, посвященной созданию S-функций.
Для работы с FC-подсистемой можно использовать также Function-Call Generator и средства пакета событийного моделирования Stateflow.
Управляемая уровнем и фронтом сигнала подсистема Enabled and Triggered Subsystem
Подсистема Enabled and Triggered Subsystem (в дальнейшем ET-подсистема) включается фронтом сигнала поступающего на Tвход системы при наличии положительного сигнала на E-входе системы. Так же как и Triggered Subsystem эта подсистема выполняет вычисления только на том шаге моделирования, где произошло изменение управляющего сигнала на T-входе. Параметр States when enabling блока Enable не оказывает влияния на работу ETподсистемы.
Оба управляющих сигнала могут быть векторными.
Пример ET-подсистемы дан на рисунке 9.9.6.

.
Управляемая уровнем сигнала подсистема Enabled Subsystem
Подсистема Enabled Subsystem (в дальнейшем Eподсистема) активизируется при наличии положительного сигнала на управляющем входе. Если входной сигнал векторный, то подсистема активизируется, если хотя бы один элемент принимает положительное значение. Величина выходного сигнала в том случае, если система заблокирована, определяется настройками выходных портов подсистемы (блоки Outport). В том случае если параметр Output when disabled (вид сигнала на выходе подсистемы) выходного порта имеет значение held, то выходной сигнал подсистемы равен последнему рассчитанному ею значению, если же этот параметр имеет значение reset, то выходной сигнал подсистемы равен значению задаваемому параметром Initial output (начальное значение).
Свойства E-подсистемы определяются параметрами блока Enable, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже.
Параметры:
States when enabling – Состояние при запуске. Параметр задает состояние подсистемы при каждом запуске. Выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использовать начальное (исходное) состояние.
Show output port (флажок) – Показать выходной порт. При установленном флажке на пиктограмме блока Enable появляется дополнительный выходной порт, сигнал с которого может быть использован для управления блоками внутри подсистемы. На рисунке 9.9.3 показан пример модели с подсистемой и
схема этой подсистемы. В примере параметр States when enabling блока Enable имеет значение held. Параметр Output when disabled первого выходного порта подсистемы имеет значение reset, а второго – held. Как видно из временных диаграмм при выключении подсистемы сигнал первого выходного порта равен начальному значению (нулю), а сигнал второго выходного порта равен последнему рассчитанному значению в момент активности подсистемы.
Пример на рисунке 9.9. 4 отличается от предыдущего настройкой блока Enable подсистемы. В данном примере параметр States when enabling блока Enable имеет значение reset. На временных диаграммах видно, что при выключении подсистемы происходит ее сброс до начального состояния.
Виртуальная и монолитная подсистемы Subsystem и Atomic Subsystem
Доступ к окну параметров подсистемы осуществляется через меню Edit командой Block Parameters…
Параметры:
Show port labels – Показать метки портов.
Treat as atomic unit (флажок) – Считать подсистему монолитной. Таким образом, блоки виртуальной и монолитной подсистем – это один и тот же блок, отличающийся значением данного параметра.
Access – Доступность подсистемы для изменений. Выбирается из списка:
ReadWrite – Пользователь может открывать и изменять подсистему.
ReadOnly – Пользователь может открывать подсистему только для просмотра.
NoReadOrWrite – Пользователь не может открывать и изменять подсистему.
Name of error callback function – Имя функции используемой для обработки ошибок возникающих в данной подсистеме. Остальные параметры подсистемы доступны при разработке приложений с использованием Real-Time Workshop и рассмотрены в документации на это приложение.
Находящийся в библиотеке блок Subsystem (или Atomic Subsystem) содержит входной и выходной порты и линию связи между ними. После того как блок подсистемы скопирован из библиотеки в модель, он становится доступным для редактирования.
Инновации: Менеджмент - Моделирование - Софт