問題タブ [dymola]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1077 参照

inheritance - Modelica - モデルの拡張でデフォルトの Medium を変更する (Dymola)

新しい値が「ドキュメント」タブに表示されるように、拡張モデルのデフォルトのメディアを変更したいと思います。例えば:

残念ながら、モデル C のドキュメントに、Medium のデフォルト値が PartialMedium であると記載されている理由や、この動作を変更する方法がわかりません! モデルを再定義しようとすると、同じことが起こります。

(1 つの例は、Modelica.Fluid.Pipes.DynamicPipe から継承されたクラスで、Medium パッケージまたは HeatTransfer モデルと FlowModel モデルに異なるデフォルト値を設定します)

モデル (C) でこれらの値を定義する必要があります。これは、約 80 本のパイプで加熱回路をモデル化しようとしており、これらの値を何度も定義したくないためです。

どういうわけかドキュメントをクリーンアップすることは可能ですか?

よろしくお願いします!

0 投票する
2 に答える
323 参照

dymola - Dymola でのリアルタイム最適化

Dymola の最適化ライブラリを使用したことがある人は、明示的なプラント構成方程式を CriteriaFunction に入力しなくても RealtimeOptimization 関数を利用できたのでしょうか? 具体的には、モデルの状態の一部を基準関数として使用しようとしていますがy[1] := mymodel.state;、状態を引用符で囲んでも付けずに入力しても、Dymola は関数を拒否します。どんな考えでも非常に役に立ちます。ありがとうございました。

0 投票する
1 に答える
2445 参照

modelica - Modelicaでのシミュレーション中に前の時間ステップから値を決定する方法は?

Modelicaでのシミュレーション中に前の時間ステップから値を決定するにはどうすればよいですか? 私はそれから値をQ=m*c*(Ts2-Ts1-Tr)抽出する必要がある方程式を持っています。 Ts2Ts1

  • Ts2- は時間ステップ 2 からの値です
  • Ts1- 前の時間ステップからの値です
  • Tsは入力信号であり、時間内に変動があります。各ステップには異なる値があります。私の場合、タイム ステップは 1 秒です。その他の値は固定です。

式変数に設定できますtimeか? 例えば:

それとも、このモデル内に入力する必要がありますか?

よろしくティモフィー

0 投票する
2 に答える
1495 参照

dymola - dymola を使用して 64 ビット dll で FMU を生成するにはどうすればよいですか?

を使用して64-bit-dllでfmu-fileを生成する必要があります。 条件は次のとおりです を使用していますが、fmu-file32 ビット dll です。インターネットを検索したところ、フラグ Advanced.CompileWith64=2 を設定する必要があることがわかりました。しかし問題は、Advanced.CompileWith64=2 を設定する場所が見つからないことです。 Advanced.CompileWith64 の値を設定できる場所を知っている人はいますか?


0 投票する
3 に答える
334 参照

controls - Dymola を使用したコントロールの実装

Modelica/Dymola でビルトイン コントロール アルゴリズム (LQR) を実装する際に問題が発生しています。私が抱えていた問題を示す、より単純なモデルを作成しました。

基本的に、LQR を外部で呼び出し、タイム ステップごとに変化するエントリ (Ctest という名前) を含む行列を渡します。この Ctest は、findC という名前の外部関数によっても検出されます。

面白いことに、Ctest = 0 にすると Dymola は問題なく動作しますが、if ループで Ctest = 0 にすると、次のような多くのエラーが表示されます。 .dare 変数 AT は次元 ":" で宣言されました。これは dsmodel.c ではまだサポートされておらず、モデルで呼び出された場合、関数は失敗します。

たとえば、次のコードで 3 つの異なるケースを実行しました。2.代わりに、C が 0 のままの if ループを作成すると、モデルはシミュレートされません。以下の if ループをコピーしてコメントアウトしました。3. ケース 1 のように findC を保持し、「Real tether_l = 151.61;」のコメントを外すだけで、ケース 2 と同じエラーが発生します。

どんな助けでも大歓迎です!

関数 findK

関数 findC

どうもありがとう!:)

0 投票する
2 に答える
1403 参照

modelica - Modelica コードのデバッグ

モデリカのコードを「デバッグ」する方法はあるのだろうか。つまり、コードを 1 行ずつデバッグすると、変数がどのように変化するかがわかります。

modelica のコードが C に変換されていることは知っています。何らかの形でそれを行う可能性があるかどうかを知りたいだけです。ある場合、シミュレーション環境のいずれかにとって大きな改善になると思います。ありがとう。

ハイ

0 投票する
1 に答える
839 参照

modelica - modelica の数値チャタリング

Dymola で興味深い現象に遭遇しました。原因は私のモデルにあるのではないかと思いますが、どのようなことが原因なのかはわかりません。誰かが私にこれについて少しヒントを与えることができれば、非常に感謝しています.

私の問題は、結果をプロットすると、エラーが許容範囲内にあるかどうかをテストするブロックが、非常に大きな頻度でイベントを生成し続ける、特定の時間にシミュレーションが「停止」することです (実行中ですが、非常に遅い)。

「許容範囲内」ブロックからさかのぼると、3 つのシグナルを持つ標準ライブラリの「エラー ブロック」です。

u1 - センサーデータ、u2 - 基準値、y - 出力信号[u1-u2=y]

(残念ながら、評判が悪いため、プロットをアップロードできません)

これらのシグナルの「テール」(実行を停止した場所)を(何度も)ズームインしたときに見つけたものは次のとおりです。

error.y信号の場合: 非常に小さい (1e-10) が、errorTolerance ターゲットの周囲で高頻度のチャタリングが見られますが、シミュレーションの実行が非常に遅くなり始めたテールでのみです。鋸歯状信号のように動作します。

u1 (センサー データ) 信号の場合: 信号 error.y と同じスケールに拡大しましたが、チャタリングは見られません。

u2 (リファレンス)信号の場合:常時一定

エラーブロックは単純なマイナス計算でしかないのに、どうしてこのようなチャタリングを誘発するのでしょうか。ありがとう!

ハイ