Main Content

生成された MATLAB コードを再利用した定常状態の操作点のバッチ計算

この例では、生成された MATLAB® コードを使用してモデルの定常状態の操作点をバッチ計算する方法を説明します。モデルをこれらの操作点でシミュレートし、あるいは線形化して、モデルの動作の変化を調べることができます。

スクリプトの作成に慣れていない場合は、定常状態マネージャーまたはモデル線形化器を使用して対話形式で操作点探索を設定します。

バッチ平衡化用のコードを生成する前に、仕様の 1 インスタンスを満たす操作点をまず計算します。操作点の計算の詳細については、次を参照してください。

操作点を計算した後、MATLAB スクリプトを生成します。以下を行います。

  • 定常状態マネージャー[仕様] タブで [平衡化] をクリックし、[スクリプト] を選択。

  • 線形解析の [モデルの平衡化] ダイアログ ボックスで、[MATLAB スクリプトの生成] をクリック。

スクリプトの生成の詳細については、操作点を構成するための MATLAB コードの生成を参照してください。

生成されたスクリプトが MATLAB エディター ウィンドウで開きます。ここで、複数の操作点でモデルを平衡化するようにスクリプトを修正できます。

この例では、magball Simulink® モデルを使用したバッチ平衡化を示します。

  1. モデルを開きます。

    open_system('magball')
  2. 定常状態マネージャーを開くには、Simulink モデル ウィンドウの [アプリ] ギャラリーで [定常状態マネージャー] をクリックします。

  3. [定常状態] タブで [仕様の平衡化] をクリックします。

  4. [spec1] ドキュメントの [既知] 列で、[magball/Magnetic Ball Plant/height] の状態を選択します。

  5. 平衡化の MATLAB コードを生成します。[仕様] タブで [平衡化] をクリックし、[スクリプト] を選択します。

  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 の値それぞれに対応する操作点が含まれます。

参考

アプリ

関数

関連するトピック