Пакетное вычисление статических рабочих точек с повторным использованием сгенерированного кода MATLAB

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

Если вы новичок в написании скриптов, в интерактивном режиме сконфигурируйте поиск рабочих точек с помощью Steady State Manager или Model Linearizer.

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

После вычисления рабочей точки сгенерируйте скрипт MATLAB. Для этого в:

  • В Steady State Manager на вкладке Specification нажмите Trim и выберите Script.

  • В Linear Analysis в диалоговом окне «Обрезка модели» нажмите кнопку Generate MATLAB Script.

Для получения дополнительной информации о генерации скриптов см. «Генерация кода MATLAB для строения рабочей точки».

Сгенерированный скрипт откроется в РЕДАКТОРА MATLAB окне. Затем можно изменить скрипт, чтобы обрезать модель в нескольких рабочих точках.

Этот пример демонстрирует обрезку партии с помощью magball Simulink® модель.

  1. Откройте модель.

    open_system('magball')
  2. Чтобы открыть Steady State Manager, в окне модели Simulink, в галерее Apps, нажмите Steady State Manager.

  3. На вкладке Steady State нажмите Trim Specification.

  4. В spec1 документе в столбце Known выберите состояние magball/Magnetic Ball Plant/height.

  5. Сгенерируйте код MATLAB обрезки. На вкладке Specification нажмите Trim и выберите Script.

  6. В окне РЕДАКТОР MATLAB измените скрипт, чтобы обрезать модель в нескольких рабочих точках.

    1. Удалите ненужные комментарии из сгенерированного скрипта.

    2. Задайте переменную высоты, height, со значениями, в которых можно вычислить рабочие точки.

    3. Добавление 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 значения.

См. также

Приложения

Функции

Похожие темы