В этом примере показано, как пакетно вычислить статические рабочие точки для модели, используя сгенерированный MATLAB® код. Можно либо моделировать, либо линеаризировать модель в этих рабочих точках и изучить изменение поведения модели.
Если вы новичок в написании скриптов, в интерактивном режиме сконфигурируйте поиск рабочих точек с помощью Steady State Manager или Model Linearizer.
Перед генерацией кода для обрезки пакета сначала вычислите рабочую точку, чтобы соответствовать образцу ваших спецификаций. Для получения дополнительной информации об вычислении рабочих точек в:
Steady State Manager см. «Вычисление рабочих точек из спецификаций с использованием Steady State Manager».
Model Linearizer см. «Вычисление рабочих точек из спецификаций с использованием Model Linearizer».
После вычисления рабочей точки сгенерируйте скрипт MATLAB. Для этого в:
В Steady State Manager на вкладке Specification нажмите Trim
и выберите Script.
В Linear Analysis в диалоговом окне «Обрезка модели» нажмите кнопку Generate MATLAB Script.
Для получения дополнительной информации о генерации скриптов см. «Генерация кода MATLAB для строения рабочей точки».
Сгенерированный скрипт откроется в РЕДАКТОРА MATLAB окне. Затем можно изменить скрипт, чтобы обрезать модель в нескольких рабочих точках.
Этот пример демонстрирует обрезку партии с помощью magball
Simulink® модель.
Откройте модель.
open_system('magball')
Чтобы открыть Steady State Manager, в окне модели Simulink, в галерее Apps, нажмите Steady State Manager.
На вкладке Steady State нажмите Trim Specification.
В spec1 документе в столбце Known выберите состояние magball/Magnetic Ball Plant/height.
Сгенерируйте код MATLAB обрезки. На вкладке Specification нажмите Trim
и выберите Script.
В окне РЕДАКТОР MATLAB измените скрипт, чтобы обрезать модель в нескольких рабочих точках.
Удалите ненужные комментарии из сгенерированного скрипта.
Задайте переменную высоты, height
, со значениями, в которых можно вычислить рабочие точки.
Добавление for
цикл вокруг кода поиска рабочей точки, чтобы вычислить установившуюся рабочую точку для каждого height
значение. В цикле, перед вызовом findop
, обновляйте базовую высоту мяча, заданную блоком Desired Height.
Ваш скрипт должен выглядеть аналогично следующему коду.
%% Specify the model name model = 'magball'; %% Create the operating point specification object. opspec = operspec(model); %% Set the constraints on the states in the model. % State (5) - magball/Magnetic Ball Plant/height % - Default model initial conditions are used to initialize optimization. opspec.States(5).Known = true; %% Create the options opt = findopOptions('DisplayReport','iter'); %% Specify ball heights at which to compute operating points height = [0.05;0.1;0.15]; %% Loop over height values to find the corresponding operating points for i = 1:length(height) % Set the ball height in the specification. opspec.States(5).x = height(i); % Update the model ball haight reference parameter. set_param('magball/Desired Height','Value',num2str(height(i))) % Trim the model [op(i),opreport(i)] = findop(model,opspec,opt); end
Запустив этот скрипт, op
содержит рабочие точки, соответствующие каждому из заданных height
значения.