主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ブロックパラメーター値の調整と試行

モデルの作成時に,转移Fcnブロックの係数などのブロックパラメーターを試して,使用するブロックを決定することができます。さまざまなパラメーター値でモデルをシミュレートし,シミュレーション出力を取得して確認することができます。

シミュレーション中にほとんどの数値ブロックパラメーターの値を変更することができます。影響を確認するために,シミュレーション出力をリアルタイムで可視化できます。この手法を使うと,アルゴリズムを開発する際にパラメーター値をすばやくテストできます。以下を視覚的に行うことができます。

  • 制御パラメーターの調整と最適化。

  • モデルパラメーターのキャリブレーション。

  • さまざまな条件下での制御のロバスト性のテスト。

シミュレーションを開始すると,最初に仿金宝app真软件®によってモデルブロック線図が更新されます。大規模モデルの場合,この操作には時間がかかることがあります。モデルブロック線図を繰り返し更新せずにパラメーター値をテストするには,1回のシミュレーションの実行中にパラメーター値を調整します。

あるいは,モデルブロック線図の更新を回避するには,高速リスタートを使用します。高速リスタートの詳細については,高速リスタートのご利用の前にを参照してください。

シミュレーション出力をリアルタイムで視覚的に解析できない場合や,多くのシミュレーションを実行しなければならない場合は,パラメーター値をプログラムでスイープする方法の使用を検討してください。シミュレーション出力データを取得して解析を後で実行できます。詳細については,ブロックパラメーター値の最適化,推定およびスイープを参照してください。

ブロックパラメーター値へのアクセスと設定の基本的な情報については,ブロックパラメーター値の設定を参照してください。

シミュレーション実行間のブロックパラメーター値の反復調整

この例では,シミュレーションの実行ごとにブロックパラメーター値を変更してモデルのプロトタイプを作成する方法を説明します。パラメーター値を試してシミュレーション結果を確認することで,使用するブロックとモデルの作成方法を決定できます。

モデル例sldemo_fuelsysは,ガソリンエンジンの燃料供給システムを表しています。モデル内のサブシステムfeedforward_fuel_rateは,エンジンで消費される燃料と空気の理想的(化学量論的)な混合比を表す定数14.6を使用して,エンジンの燃料需要を計算します。サブシステム内の2つのブロックは,この数値を使用してパラメーターの値を設定します。

たとえば,理想空燃比の設計値を14.6から17.5に変更して,燃料需要への影響を確認するとします。設計値をモデルに格納するには,ブロックダイアログボックスで値を変更します。あるいは,わかりやすい名前を付けた変数に値を格納することもできます。これにより,値を2つのブロックで再利用できます。

ブロックダイアログボックスで値を変更してシミュレーション出力の変化を確認するには,次の手順に従います。

  1. モデル例を開きます。

    sldemo_fuelsys

  2. シミュレーションを高速化するために,モデルのシミュレーション時間を2000から50に変更します。

  3. モデルで范围ブロックのダイアログボックスを開きます。

  4. モデルのシミュレーションを実行します。范围ダイアログボックスでウィンドウのサイズを変更して,すべてのシミュレーション結果を表示します。

    スコープ表示に,シミュレーション全体を通して燃料信号がおよそ0.91.6の間で振動していることが示されます。air_fuel_ratio信号は,オーバーシュートなしですぐに15まで上昇します。

  5. モデルで,モデルデータエディターを開きます。[モデル化)タブで[モデルデータエディター]をクリックします。モデルデータエディターで,[パラメーター]タブを確認します。

  6. モデルまたはコマンドプロンプトで,ターゲットサブシステムに移動します。

    open_system (...“sldemo_fuelsys / fuel_rate_control fuel_calc / feedforward_fuel_rate '

  7. モデルデータエディターで(价值)列を使用して,丰富的というラベルの付いた常数ブロックの(定值)价值)パラメーターを1 / (14.6 * 0.8)から1 / (17.5 * 0.8)に変更します。

  8. 同様に,正常的というラベルの付いたブロックの[定数値]パラメーターを1/14.6から1/17.5に変更します。

  9. モデルのシミュレーションを実行します。

    スコープ表示に,信号の応答が変化したことが示されます。

ブロックダイアログボックスのリテラル値を数値変数に置き換えるには,次の手順に従います。

  1. モデルデータエディターを使用して,正常的常数ブロックの値を1 /混合物に設定します。

  2. 丰富的ブロックの値を1 /(混合* 0.8)に設定します。

  3. 丰富的の値の編集中は,1 /(混合* 0.8)の隣にあるアクションボタンをクリックし,[作成]を選択します。

  4. (新規データの作成)ダイアログボックスで,[値]17.5に設定して[作成]をクリックします。

    17.5をもつ数値変数混合物がベースワークスペースに表示されます。シミュレーションの実行ごとに,ブロックダイアログボックスでパラメーター値を変更する代わりに,ベースワークスペースで混合物の値を変更することができます。

シミュレーション中のブロックパラメーター値の調整

この例では,シミュレーション中にブロックパラメーター値を変更し,その影響を確認する方法を説明します。この手法を使うと,シミュレーションの実行ごとにモデルブロック線図を更新せずに,モデルを対話形式でテストしてデバッグすることができます。

モデル例sldemo_fuelsysには,スロットルコマンドを表す常数ブロック节流命令が含まれています。シミュレーション中にコマンドを大きくし,その影響を確認するには,次の手順に従います。

  1. モデル例を開きます。

    sldemo_fuelsys

  2. モデルで范围ブロックのダイアログボックスを開きます。

  3. シミュレーションを開始します。

    このモデルは2000秒をシミュレートするように構成されています。シミュレーション中に,燃料信号とair_fuel_ratio信号の値がスコープグラフにリアルタイムで表示されます。

  4. モデルで,ステータスバーがおよそ1000(1000秒)を示したら,[一時停止]ボタンをクリックしてシミュレーションを一時停止します。

  5. スコープ表示の(燃料)グラフに,一時停止する前のシミュレーション出力がプロットされます。

  6. モデルの[モデル化)タブで[モデルデータエディター]をクリックします。

  7. モデルデータエディターで,[パラメーター]タブを選択します。

  8. モデルで,节流命令ブロックを選択します。

  9. モデルデータエディターで,rep_seq_y行を選択します。rep_seq_t行を一緒に選択していないことを確認してください。

  10. rep_seq_y行で,(价值)列の値を(10 20)から(10 30)に変更します。

  11. [ステップを進める]ボタンをクリックしてシミュレーションをステップ単位で進めます。このボタンを約15回,つまりスコープ表示の(燃料)グラフに変化が現れるまでクリックします。

    信号燃料のプロットは,スロットルコマンドの増加に対応した燃料需要の急激な増加を示します。

  12. モデルで[続行]ボタンをクリックしてシミュレーションを再開します。

    スコープ表示に,残りのシミュレーション全体における燃料需要の周期的な大幅な増加と,空燃比の周期的な減少が示されます。

シミュレーション中にワークスペース変数の値を変更した後は,モデルブロック線図を更新しなければなりません。モデルブロック線図の更新の詳細については,ブロック線図の更新とシミュレーションの実行を参照してください。

パラメーターの調整と試行の準備

  • ワークスペース変数を使用してブロックパラメーター値を設定します。

    常数ブロックの[定数値]パラメーターなどのブロックパラメーターの値にアクセスするには,モデル内のブロックに移動してブロックダイアログボックスを開くか,モデルエクスプローラーを使用してブロックを検索するか,コマンドプロンプトで関数set_paramを使用しなければなりません。

    代わりに,ワークスペース変数を作成してブロックパラメーター値を設定すると,コマンドプロンプト,MATLAB®ワークスペースブラウザーまたはモデルエクスプローラーを使用して変数の値を変更できます。また,変数を作成すると,複数のブロックパラメーターに同じ値を設定できます。変数の値を変更すると,すべてのターゲットブロックパラメーターで新しい値が使用されるようになります。ブロックパラメーター値へのアクセスと設定の詳細については,ブロックパラメーター値の設定を参照してください。

  • シミュレーション出力を可視化します。

    ブロックパラメーター値を調整しながらシミュレーション出力をリアルタイムで確認するには,范围ブロックなどのモデル内のブロックを使用します。また,シミュレーション実行の終了時にシミュレーション出力を取得して,シミュレーションデータインスペクターにデータを表示することもできます。詳細については,シミュレーションデータの可視化方法の決定を参照してください。

  • シミュレーション中に調整するブロックパラメーターの値の範囲を指定してください。

    別のユーザーがモデルを使用してパラメーターを調整することを想定している場合は,使用可能な調整値を範囲の指定によって制御できます。また,調整するすべての固定小数点ブロックパラメーターの値の範囲を指定することもお勧めします。ブロックパラメーター値の範囲を指定するには,ブロックパラメーターの最小値と最大値の指定を参照してください。

  • シミュレーションの実行時間とペースを制御します。

    シミュレーションがあまりにも高速に実行されて,ブロックパラメーター値を調整できない場合があります。また,特定のシミュレーション時間でパラメーター値を変更する場合は,シミュレーションのペースを制御する方法を習得しなければなりません。シミュレーションを特定の期間実行するか永続的に実行するように構成し,必要に応じてシミュレーションを一時停止したり進めたりすることができます。詳細については,対話によるモデルのシミュレーションおよびプログラムによるシミュレーションの実行を参照してください。

仪表板ブロックを使用した対話形式の調整

仪表板ライブラリのブロックをモデルに追加して,ブロックパラメーター値を調整することができます。仪表板ブロックを使用すると,産業用制御装置の外観を再現したノブ,スイッチおよび表示情報を操作して,他のブロックのパラメーター値を調整し,シミュレーション出力をリアルタイムで確認することができます。仪表板ブロックは,モデル内でターゲットブロックパラメーターを特定せずに操作できます。詳細については,仪表板のブロックを使用したモデルの調整と可視化を参照してください。

シミュレーション中に調整可能なブロックパラメーター

“調整不可能なブロックパラメーター”とは,シミュレーション中に値を変更できないパラメーターです。たとえば,[サンプル時間]ブロックパラメーターは調整できません。パラメーターが調整不可能な場合は,ブロックダイアログボックスで値を変更したりワークスペース変数の値を変更したりして,シミュレーション中にその値を変更することはできません。

調整不可能なブロックパラメーターには次のようなものがあります。

  • サンプル時間。

  • 总和ブロックの入力数など,ブロックの外観や構造を制御するパラメーター。

  • ブロックの実行順序を制御できる優先順位。

  • 离散时间积分器ブロックの[積分手法]パラメーターなど,ブロックアルゴリズムを制御するパラメーター。

ブロックパラメーターがシミュレーション中に調整可能かどうかを判断するには,次のいずれかの方法を使用します。

  • シミュレーションを開始してブロックダイアログボックスを開きます。シミュレーション中にターゲットブロックパラメーターの値がグレーになっている場合は,パラメーターを調整できません。

  • コマンドプロンプトで,パラメーターがフラグ读写およびread-only-if-compiledで表現されているかどうかを確認します。

    1. モデル内のブロックを選択します。

    2. コマンドプロンプトで,関数get_paramを使用してブロックダイアログボックスのパラメーターに関する情報を返します。この関数は,ブロックダイアログボックスのパラメーターごとにフィールドをもつ構造体を返します。

      paramInfo = get_param (gcb),“DialogParameters”);

      あるいは,モデル内のブロックを特定して選択するのではなく,华东桐柏“myModel / mySubsystem / myBlock”などのブロックパスに置き換えることもできます。

    3. ターゲットブロックパラメーターに関する情報を表示します。たとえば,ブロックの[サンプル時間]パラメーターに関する情報を表示するには,構造体でもあるフィールドSampleTimeの値を表示します。

      paramInfo。SampleTime
      类型:' string' Enum:{}属性:{'read-write' 'read-only if-compiled' ' 'dont-eval'}

    4. 文字ベクトルの细胞配列を値にもつ構造体の属性フィールドを検査します。细胞配列にフラグ读写が表示されている場合は,パラメーター値を変更できます。ただし、细胞配列にフラグread-only-if-compiledも表示されている場合は,シミュレーション中にパラメーター値を変更することはできません。

マスクを使用してブロックおよびサブシステムのカスタムインターフェイスを作成する場合は,個々のマスクパラメーターの調整可能性を制御できます。モデル引数を使用して参照モデルをパラメーター化する場合は,各模型ブロックで各モデル引数の値を調整できます。

シミュレーション出力に変化がない理由

パラメーター値を変更してもシミュレーションの出力に変化がない場合は,次のトラブルシューティング方法を使用します。

  • ワークスペース変数の定義の場所を特定します。

    ワークスペース変数を使用してブロックパラメーター値を設定している場合は,変数の定義がある場所を特定します。たとえば,モデルワークスペースで定義した変数myvar#を使用してモデルでブロックパラメーター値を設定している場合は,ベースワークスペースにあるmyvar#という名前の変数の値を変更してパラメーター値を変更することはできません。モデルワークスペースにある変数の定義にアクセスしなければなりません。

    変数の定義を特定するには,変数を使用するブロックパラメーターの値の編集中に,近くのアクションボタンをクリックし,[探索]を選択します。モデルエクスプローラーなどのダイアログボックスが開き,該当するワークスペースにある変数の定義が表示されます。変数をモデルで使用する方法の詳細については,記号の解釈を参照してください。

  • シミュレーション中に調整する固定小数点パラメーターの値の範囲を指定します。

    調整するブロックパラメーターで,最高精度のスケーリングをもつ固定小数点データ型が使用される場合は,パラメーターの最小値と最大値を指定して,仿金宝app真软件で適切なスケーリングを計算して適用できるようにします。値の範囲を指定しない場合は,使用する調整値を含まないスケーリングが仿金宝app真软件によって適用される可能性があります。値の範囲を指定するには,ブロックパラメーターの最小値と最大値の指定を参照してください。

  • シミュレーションの実行中にモデルブロック線図を更新します。ワークスペース変数を使用して1つ以上のブロックパラメーターの値を設定している場合は,シミュレーション中に変数の値を変更した後,モデルブロック線図を更新しなければなりません。

    モデルブロック線図を更新する方法の詳細については,ブロック線図の更新とシミュレーションの実行を参照してください。

その他のモデル化の目的に関する調整可能性の考慮事項と制限

参照モデル

模型ブロックを使用する場合,次のパラメーター調整可能性の制限が適用されます。

  • 模型ブロックのシミュレーションモードをアクセラレータモードに設定する場合,あるいはアクセラレータモードで親モデルをシミュレートする場合,シミュレーション中に参照モデルのブロックパラメーターを調整することはできません。ただし,参照モデルがベースワークスペースまたはデータディクショナリ内の変数を使用してパラメーター値を設定する場合,変数の値を調整することができます。

  • モデルワークスペースのMATLAB変数または金宝app仿真软件。参数オブジェクトを使用して,モデル内のブロックパラメーターの値を設定するとします。模型ブロックを使用してこのモデルを参照する場合,次のようになります。

    • 模型ブロックのシミュレーションモードをアクセラレータモードに設定するか,あるいはアクセラレータモードで親モデルをシミュレートすると,シミュレーション中に変数またはオブジェクトの値を変更できません。

    • 親モデルをアクセラレータモードでシミュレートする場合,シミュレーションの実行間で変数またはオブジェクトの値を変更すると,仿金宝app真软件によってコードが再生成されます。

    • また,追加の模型ブロックを使用して親モデル内でモデルを複数回参照する場合,各模型ブロックで異なるシミュレーションモードを選択できます。少なくとも1つのブロックが通常のシミュレーションモードを使用し,他のすべてのブロックが異なるシミュレーションモードを使用する場合,シミュレーション中に変数またはオブジェクトの値を変更できません。また,高速リスタートをオンにした親モデルをシミュレートするときは,高速リスタートシミュレーションの実行間で変数やオブジェクトの値を変更することはできません。

    回避策として,変数またはオブジェクトをベースワークスペースまたはデータディクショナリに移動します。

アクセラレータとSIL /公益诉讼シミュレーション

こうした調整可能性の制限はアクセラレータ,ラピッドアクセラレータ,SIL,および公益诉讼シミュレーションに適用されます。

  • モデルワークスペースのMATLAB変数または金宝app仿真软件。参数オブジェクトを使用して,モデル内のブロックパラメーターの値を設定するとします。関数sim卡を使用してモデルをラピッドアクセラレータモードでシミュレートし,RapidAcceleratorUpToDateCheckペア引数を“关闭”に設定する場合,RapidAcceleratorParameterSetsペア引数を使用して変数またはオブジェクトに異なる値を指定することはできません。金宝appSimulink.BlockDiagram.buildRapidAcceleratorTargetによって返された構造体には,変数またはオブジェクトに関する情報は含まれません。

  • ブロックパラメーターの値がワークスペース変数を参照している場合,ラピッドアクセラレータシミュレーション中に関数set_paramを使用するなどしてブロックパラメーター値を変更することはできません。代わりに,参照されている変数の値を調整できます。

    または,パラメーターセットを使用してラピッドアクセラレータシミュレーション間で実行時パラメーターを調整します。詳細については,実行時パラメーターの調整を参照してください。

アクセラレータシミュレーション中のパラメーターの調整可能性の詳細については,実行時パラメーターの調整ラピッドアクセラレータモードでのparforのsim卡を参照してください。SILおよび公益诉讼シミュレーション中のパラメーターの調整可能性の詳細については,可调参数和SIL/PIL(嵌入式编码)を参照してください。

高速リスタート

高速リスタートを使用する際のパラメーターの調整可能性の詳細については,高速リスタートのご利用の前にを参照してください。

外部プログラムのコード生成とシミュレーション

シミュレーション中は調整可能なパラメーターが,生成されたコードに調整不可能なインラインパラメーターとして現れる可能性があります。SIL,公益诉讼またはエクスターナルモードのシミュレーションを使用して外部プログラムをシミュレートする場合,シミュレーション中およびシミュレーション実行間のパラメーターの調整可能性はコード生成の設定によって決まります。

生成されたコードでパラメーターの調整可能性を制御するには,コンフィギュレーションパラメーター(既定のパラメーター動作)を使用して,モデルに対してコード生成の設定を調整します。個々のMATLAB変数,金宝app仿真软件。参数オブジェクト,およびその他のパラメーターオブジェクトの設定も調整できます。詳細については,生成コード内の変数の保持(金宝app仿真软件编码器)を参照してください。

Stateflowチャート

シミュレーション中にデータを変更してStateflowチャートをデバッグするには,Stateflowチャートのデバッグ(Stateflow)を参照してください。

参考

関連するトピック