2017-12-06 20 views
1

私は、入力と出力をyとするサインブロックを含む単純なFMUファイルを持っています。この場合、uは時間に等しく設定されます。私のC++コードでは、FMILibraryからFMIライブラリをロードして、入力にpi(3.14として)の新しい値を与えたい点まで、すべての必要なステップを実行しました。だから私は行った:変更中のFMI変数/関数

fmistatus = fmi2_import_set_real(fmu, &uRef, 1, &pi); 
while (timeCurrent < timeEnd){ 
    fmistatus = fmi2_import_do_step(fmu, timeCurrent , stepSize, fmi2_true); 
    timeCurrent += stepSize; 
} 

私はそれを新しい価値を与えようとしたが、時間はまだ設定されていた。私は何か見落としてますか?

PS。 FMIライブラリ関数の詳細な説明はどこにありますか?現在、私は入力出力の説明のみを見つけることができますか、何かをもう一度見逃しました。

更新:数回の試行を経て、私は式u =時間を再定義しようとしていたため、この問題が発生している可能性があります。言い換えれば、私はopenmodelicaのRealInputブロックに私の変数を変更するとすべてうまくいく。では、ある方程式を本当に再定義したいのですが?私は何をしなければならないのですか?

+0

FMIでは、変数の値を「置き換える」ことはできませんか? –

+1

おそらく関連:https://stackoverflow.com/questions/37571451/parameters-sometimes-not-editable-in-dymola-simulation-tab-and-fmu – matth

+0

これは似ていますが、私の場合はパラメータではなくむしろ変化しています方程式。すなわち、u =時間をu = 3.14に変更する。 –

答えて

1

FMIでは変数を設定できません。特に結合方程式を持つ変数ではありません。Modelicaモデルには「u = time;」と仮定します。 「u =時間」を持つ代わりに、方程式のない最上位の入力を追加する必要があります(エクスポートされたFMIが入力としてそれを持つように)。そしてそれをサインブロックに接続します。

詳細: 協調シミュレーションFMIの場合、設定できる制限はFMI2仕様のセクション4.2.4の状態図にあります。

fmi2DoStepの間では、因果性= "入力"または因果性= "パラメータ"と変動性= "調整可能"を持つReal変数のみを設定できます。

統合を開始する前に、他の変数にも設定できますが、これは初期化の推測値であり、「u =時間」の式を上書きしないでください。

関連する問題