主要内容

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

コシミュレーションの実行と数値補償

金宝app®は,ローカルソルバーをもつコンポーネント間のコシミュレーションをサポートするか,外部シミュレーションツールを含めます。たとえば,コシミュレーションには,金宝app仿真软件とサードパーティ製のツールまたはカスタムコードの間にコシミュレーションゲートウェイとして実装されるs函数を含めることができます。コシミュレーションコンポーネントは仿真金宝app软件にインポートされるコシミュレーションモードの功能模型单元(FMU)であることがあります。

実行タイミング

金宝app仿真软件シミュレーションでは,ソルバーステップサイズは,各周期的な離散型ブロックのサンプル時間の整数の約数でなければなりません。つまり,コシミュレーションコンポーネントがその独自のサンプル時間を定義する場合,仿金宝app真软件はそれらのタイムステップでコンポーネントと通信しなければなりません。コシミュレーションには,タイムステップが内部的に決定され,仿金宝app真软件に既知ではないコンポーネントを含めることができます。金宝app仿真软件で利用可能な情報は,FMUブロックの通信ステップサイズパラメーターまたはs函数実装のサンプル時間の定義を介するブロックサンプル時間のみです。ブロックのサンプル時間は,金宝app仿真软件がコシミュレーションコンポーネントと通信しなければならないタイムステップを決定します。ソルバーステップサイズが自動ではない場合,通信ステップサイズはソルバーステップサイズの整数倍でなければなりません。

コシミュレーションコンポーネントがローカルソルバーを内部的に使用する場合,ブロックの通信ステップサイズを決定する際に,このローカルソルバーも考慮される必要があります。ローカルソルバーのステップサイズは仿真软金宝app件に公開されず,通信ステップサイズを正しく設定するには実装の知識が必要です。非互換性の可能性がある場合のコシミュレーションの動作も,この内部ソルバーの実装により異なります。

数値補償

通常,コシミュレーション信号は,コシミュレーションにより離散化された連続的な物理量を表します。C墨西哥人s函数やコシミュレーションFMUブロックなどのコシミュレーションコンポーネント間のデータ交換では,信号遅延による数値誤差が発生することがあります。数値補償を使用して,独自のソルバーを使用するコンポーネントを伴うシミュレーションの数値的動作を改善します。モデルアドバイザーには,コシミュレーションコンポーネントを検出し,数値補償を指示するチェックが含まれます。

数値補償の前提条件

金宝app仿真软件は,コシミュレーションコンポーネント間のコシミュレーション信号について,数値補償を自動的に実行します。金宝app仿真软件は,宛先ブロックの入力時に数値補償を実行します。信号は,そのソース端子と接続先端子が以下の条件を満たす場合,数値補償の条件を自動的に満たします。

  • 信号のソース端子は以下の要件を満たしていなければなりません。

    • 功能

      • 出力端子のデータ型が双であること

      • 出力端子のサンプル時間が周期的かつ離散であること

      • 出力端子の実数/複素数が実数であること

      • 端子に対してssSetOutputPortIsContinuousQuantity ()真正的に設定されていること

    • FMU

      • 出力端子のデータ型が双であること

      • FMUがコシミュレーションモードであること

      • ブロックのサンプル時間が周期的かつ離散であること

      • 出力端子がmodelDescription.xml可变性=“连续”を使用して変数にマッピングされていること

  • 信号の接続先端子は以下の要件を満たしていなければなりません。

    • 功能

      • 入力端子のデータ型が双であること

      • 入力端子のサンプル時間が周期的かつ離散であること

      • 入力端子の実数/複素数が実数であること

      • この端子に対してssSetInputPortIsContinuousQuantity ()真正的に設定されていること

      • この端子に対してssSetInputPortDirectFeedThrough ()に設定されていること

    • FMU

      • 入力端子のデータ型が双であること

      • FMUがコシミュレーションモードであること

      • ブロックのサンプル時間が周期的かつ離散であること

      • 入力端子がmodelDescription.xml可变性=“连续”を使用して変数にマッピングされていること

数値補償の対象とするコシミュレーション信号を特定する例については,slexCoSimTripleMassSpringExampleモデルを参照してください。

ダイアログを使用した数値補償オプションの管理

金宝app仿真软件で数値補償が可能な信号が検出されると,対応する入力端子がアイコンでマークされます。

以下のモデルには,数値補償が可能なコシミュレーション信号が含まれます。

  1. モデルを開きます。

    slexCoSimTripleMassSpringExample

  2. ブロック線図を更新します。金宝app仿真软件で数値補償が可能な信号が検出され,対応する端子がアイコンでマークされます。

  3. 補償精度に関するパラメーターを調整します。アイコンを右クリックして[コシミュレーション信号補償の構成)を選択し,次の計算パラメーターを調整します。

    • 外挿法——このメソッドは,それまでのタイムステップで生成されたシミュレーション信号値に外挿を使用することにより,現在のシミュレーションタイムステップに対して補償された信号値を計算します。外挿は3種類から選択できます。

      • [線形]は既定の設定です。前の2つのタイムステップで生成された信号値を使用して,シミュレーションの現在のタイムステップで使用する信号値を線形的に推定します。

      • [2 次]は,前の3つのタイムステップの信号値を使用して,データを2次多項式に当てはめます。

      • [3 次]は,前の4つのタイムステップの信号値を使用して,データを3次多項式に当てはめます。

      シミュレーションを開始したばかりで前の信号値の数が十分にないときは,次数の低い外挿法が自動的に使用されます。外挿法の次数が高ければ高いほど、過去の信号値をより多く使用して現在の信号値を予測するため、予測精度を向上できます。ただし、次数の高い外挿法では、数値的に安定した結果が得られないことがあります[1]。最適な外挿法は,信号の特性によって異なります。

    • 信号補正係数——このメソッドは,過去のシミュレーション結果と過去に推定された信号値に基づいて,外挿された信号値をさらに調整します。補正係数は01の間で選択できます。ここで,0は外挿された信号値に調整を行わないことを意味します。補正係数の既定の設定は1です。任意のタイムステップにおける任意の外挿された信号について,信号補正係数を大きくすればするほど,外挿された信号が調整される度合いが高まります。

    数値補償の効果が低い場合,アイコンを左クリックしてこれを無効にします。無効のとき,アイコンは赤い斜線付きで表示されます。

コマンドラインからの数値補償オプションの管理

自動補償ができない場合は,CoSimSignalCompensationModeプロパティを使用して数値補償を手動で有効にできます。

CoSimSignalCompensationModeプロパティには以下の値があります。

アイコン 設定 動作

“汽车”

自動数値補償を有効にします。端子に数値補償の対象となる信号があるかどうか仿金宝app真软件が検出できるようになります。

“Auto_Off”

自動数値補償を無効にします。アイコンは赤い斜線付きで表示されます。

“总是”

信号が数値補償の対象でなかったとしても,端子を強制的に数値補償対応とみなします。この設定にすると補償を連続として宣言せずに追加できます。

“Always_Off”

端子への数値補償対応の強制を無効にします。

たとえば,前のモデルからの1番目の入力端子について数値補償を無効にするには,以下のようにします。

  1. 数値補償の対象として選択する端子が含まれるブロックを選択します。たとえば,現在選択されているブロック华东桐柏のすべての端子ハンドルを取得します。

    p = get_param(gcb, 'PortHandles')

    この関数は,現在選択されているブロックのすべての端子を返します。以下に例を示します。

    p = struct with fields: Inport: [22.0001 20.0001] Outport: [23.0001 25.0001] Enable: [] Trigger: [] State: [] LConn: [] RConn: [] Ifaction: [] Reset: []
  2. 1番目の端子について数値補償を無効にするには,以下のようにします。

    set_param (p.Inport(1),“CoSimSignalCompensationMode”、“Auto_Off”)

    関連する端子が赤い斜線付きで表示されます。

信号補償のパラメーターをコマンドラインから設定することもできます。最初の手順で,再度端子ハンドルを取得します。

p = get_param(块,“PortHandles”

CoSimSignalCompensationConfigパラメーターを次の形式で使用して,補償パラメーターを設定します。

set_param (p。轮廓尺寸,“CoSimSignalCompensationConfig””{< CompensationParam >: < ParamValue >}”

補償パラメーターの名前と可能な値を次の表に示します。

補償パラメーター パラメーター名 パラメーター値
ExtrapolationMethod 外挿法 “LinearExtrapolation”“QuadraticExtrapolation”,または“CubicExtrapolation”
CompensationCoefficient 補正係数 01の間のスカラー

たとえば,次の端子の外挿方法を設定します。

set_param(p. import, 'CoSimSignalCompensationConfig', '{"ExtrapolationMethod":"LinearExtrapolation"}'))

外挿方法と補償係数の両方を設定します。

set_param (p。轮廓尺寸,“CoSimSignalCompensationConfig”,'{"ExtrapolationMethod":"QuadraticExtrapolation", "CompensationCoefficient":"0.7"}' ))

参照

[1]龙格,卡尔。《数学与物理学》,《数学与物理学》第46卷,1901年,224-243页。

参考

|||||

関連するトピック