ドキュメンテション

最新のリリスでは,このペジがまだ翻訳されていません。このペジの最新版は英語でご覧になれます。

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

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

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

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

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

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

シミュレションを開始すると,最初にSi金宝appmulink®によってモデルブロック線図が更新されます。大規模モデルの場合,この操作には時間がかかることがあります。モデルブロック線図を繰り返し更新せずにパラメーター値をテストするには,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. タゲットサブシステムに移動します。

    open_system (“sldemo_fuelsys / fuel_rate_control fuel_calc / feedforward_fuel_rate '

  6. 丰富的というラベルの付いた常数ブロックのブロックパラメーターのダイアログボックスを開きます。

  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. 节流命令というラベルの付いたブロックのブロックダ邮箱アログボックスを開きます。[出力値]パラメタの値を(10 20)から(10 30)に変更して(好的)をクリックします。

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

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

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

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

シミュレション中に以下を行った後は,モデルブロック線図を更新しなければなりません。

  • ワクスペス変数の値の変更。

  • 関数set_paramを使用したブロックパラメタの値の変更。

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

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

  • ワクスペス変数を使用してブロックパラメタ値を設定することを検討してください。

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

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

  • シミュレション出力を可視化する方法を習得してください。

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

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

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

  • シミュレションの実行時間とペスを制御する方法を習得してください。

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

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

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

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

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

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

  • サンプル時間。

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

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

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

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

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

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

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

    2. コマンドプロンプトで,関数get_paramを使用してブロックダ邮箱アログボックスのパラメ邮箱タ邮箱に関する情報を返します。この関数は,ブロックダ。

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

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

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

      paramInfo。SampleTime
      ans =提示:'采样时间:'类型:'字符串' Enum:{}属性:{'read-write' 'read-only-if-compiled' 'don -eval'}

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

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

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

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

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

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

    変数の定義の場所を特定するには、その変数を使用しているブロックダ以及アログボックスを開きます。ブロックパラメタ値を右クリックして[変数の探索]を選択します。モデルエクスプローラーなどのダイアログボックスが開き,該当するワークスペースにある変数の定義が表示されます。変数をモデルで使用する方法の詳細にいては,“記号の関連付け”を参照してください。

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

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

  • シミュレションの実行中にモデルブロック線図を更新します。

    次の場合は,シミュレーションの実行中にブロックパラメーター値を調整した後,モデルブロック線図を更新しなければなりません。

    • ワクスペス変数を使用して1以上のブロックパラメ。その変数の値を変更した後は,モデルブロック線図を更新します。

    • 関数set_paramを使用してパラメタ値を変更する場合。

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

他のアプリケションでの調整可能性に関する考慮事項

ラピッドアクセラレタシミュレション

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

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

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

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

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

Stateflowチャト

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

参考

関連する例

この情報は役に立ましたか?