Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_balashov.docx
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
479 Кб
Скачать
☆

25.Задание и получение параметров процедур ответных вызовов. Задание параметров процедур ответных вызовов

Команда

set_param (object, parameter, value)

служит для задания параметров процедур ответных вызовов.

object – строковая переменная, содержащая имя модели или путь к блоку. В том случае, если ответный вызов связан с каким-либо свойством модели, параметр object должен представлять собой имя модели.

Пример

object='car_mod'

object='car_mod/Controller/Gain_l'

parameter – строковая переменная, содержащая наименование параметра процедуры ответного вызова, взятое из таблицы 5 или 6;

value – строковая переменная, содержащая значение параметра процедуры ответного вызова (имя функции, которая совпадает с именем М-файла).

Пример: Использование М-функции для организации ответного вызова

Рассмотрим модель системы Simulink, показанную на рисунке. Значение константы для блока Constant установлено равным In_val. Требуется, чтобы система MATLAB запросила у пользователя значение переменной In_val при загрузке файла данной модели.

Рисунок 1 – Модель с использованием простейшей функции ответного вызова

Процедура ответного вызова включает выражение:

In_val=input('Enter the value: ');

Сохраним данное выражение в М-файле с именем initm_l.m.

Для использования данной функции ответного вызова так, чтобы она выполнялась каждый раз при открытии файла модели, загрузим файл модели и введем следующее выражение в командной строке системы MATLAB:

set_param('model_name’ , 'PreLoadFcn1', 'initm_l' );

Далее сохраним файл и закроем окно модели. При следующей загрузке файла модели в командной строке системы MATLAB появится строка:

> Enter the value:

Введенное значение будет присвоено переменной In_val.

26.Команды построения моделей. Команды построения моделей

Система Simulink поддерживает несколько команд системы MATLAB, предназначенных для создания и редактирования моделей. Эти команды позволяют создавать и сохранять новые модели, добавлять и удалять блоки и линии связи, устанавливать и редактировать значения параметров блоков.

Таблица 4 – Команды системы S1MULINK, применяемые в процедурах ответных вызовов

Команда Описание

bdroot (object) Возвращает имя модели Simulink, соответствующее параметру object. Данный параметр представляет собой строковую переменную, содержащую полный путь Simulink к блоку или подсистеме.

gcb Возвращает полный путь Simulink к текущему блоку

gcs Возвращает полный путь Simulink к текущей системе или подсистеме

get_param(obj, param) Возвращает текущее значение параметра, соответствующего системе, подсистеме или блоку

set_param(obj ,param, value) Устанавливает значение параметра, соответствующего указанной системе, подсистеме или блоку

Задание значений параметров

Команда set_param предназначена для задания значений параметров моделей и блоков. Ряд параметров для указанного объекта (система, подсистема, блок) могут быть заданы при помощи однократного применения команды set_param. Например, следующая команда позволяет присвоить параметру Gain значение '10':

set_param(gcb, 'Gain', '10');

В последнем выражении параметру Gain присваивается значение в виде строкового выражения '10', а не в виде числа. Для того чтобы параметру Gain присвоить значение вектора [10 20 30], необходимо использовать следующую команду:

set_param(gcb, 'Gain', '[10 20 30]');

Команда set_param может выполняться в процессе моделирования. Если при помощи графического интерфейса пользователя изменить значение параметра Gain блока Gain, то коэффициент усиления изменится немедленно, что позволяет осуществлять изменение данного параметра в процессе моделирования.

Извлечение значений параметров

Команда get_param подобна рассмотренной выше команде set_param, однако, может возвращать значение только одного параметра. При использовании команды get_param для чтения численного значения параметра возвращаемое функцией значение описывается типом данных «массив символов».

g = get_param(gcb, 'Gain') g = [10 20 30]

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

gv = str2num(g) gv=10 20 30

Параметр SimulationCommand

Параметру SimulationCommand могут быть присвоены следующие значения: start, stop, pause, continue. Установка значений параметра SimulationCommand эквивалентна выбору соответствующей команды меню Simulation окна модели.

set_param('model', 'SimulationCommand1, 'Start')

27.Использование локальных переменных и параметра UserData при работе с ответными вызовами. Проблемы программирования

Существует ряд проблем программирования, возникающих при разработке функций ответных вызовов в виде М-файлов. Использование имен блоков и подсистем:

Не рекомендуется использовать имена блоков и подсистем в явном виде в функциях ответных вызовов в виде М-файлов. Вместо этого следует применять команды gcb и gcs, а полученные значения присваивать переменным системы MATLAB.

Текущая система и текущий блок

Команды gcb и gcs могут быть использованы только в процедурах ответных вызовов Simulink. Использование этих команд в процедурах ответных вызовов, связанных с управлением графическим интерфейсом пользователя, не гарантирует, что данный блок или модель системы являются текущими. Например, команда gcb возвращает полный путь системы Simulink к блоку, который был последним выделен при помощи мыши, даже если этот блок находится в другом открытом окне модели системы Simulink.

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

Локальные переменные

Для организации ответных вызовов рекомендуется отдавать предпочтение М-функциям, которые, как правило, используют локальные переменные. Объявление в функциях одной или нескольких глобальных переменных может привести к возникновению ошибок, т. к. операция присвоения значения переменной возможна из любых функций.

Для задания данных, определенных пользователем, рекомендуется присваивать указанные значения параметру UserData или вводить значения в диалоговом окне маскированного блока.

Каждый блок Simulink имеет параметр UserData, которому можно присваивать значение любой переменной. Этот параметр не сохраняется вместе с моделью, поэтому он не может быть использован для хранения исходных данных. Параметр UserData доступен для блока системы Simulink лишь в течение того времени, пока окно модели открыто, поэтому удобен для хранения текущих значений параметров. Команда

set_param(gcb, 'UserData', value);

присваивает параметру UserData блока значение value. Функция

value=get_param(block, 'UserData');

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

Ввод параметров диалоговых окон маскированных блоков является альтернативой задания параметра UserData. Переменные, определенные таким образом, доступны как функциям ответного вызова, так и любым блокам маскированной подсистемы. Значения переменных, связанных с каждым полем диалогового окна, обрабатываются как параметры маскированного блока (подсистемы), и могут быть установлены с помощью команды set_param, а извлечены при помощи команды get_param. Значения этих параметров должны вводиться в полях диалогового окна как строковые выражения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]