プラントのModelica(OpenModelica、jModelica)とコントローラのC/C++ルーチンを使用した制御システム設計のためのループでのソフトウェア実装方法。どのようなアプローチが示唆できますか? 私は外部のC関数が助けになると思っていましたが、参照透過性プロパティに従う、つまり同じ入力に対して同じ値を返す(内部状態を持たない)ような制限があるようです。Modelicaを使用したループモードのソフトウェア
答えて
この場合、外部C関数の呼び出しに関する問題は適用されません。 Modelicaが連続式に関数を使用することを、同じ引数に対して同じ値を返さなければならないように制限するのは事実です。そのような場合、状態を関数に渡して新しい状態を返す方法を見つける必要があります(この "純度"要件を満たすには)。これは明らかにCコードとはかなり面倒です(状態を渡し、すべての状態変数(おそらくグローバル変数)にコードを実行し、すべての状態変数の値を抽出して返す必要があります)。
幸運なことに、これについて心配する必要はありません。理由は、あなたの関数がwhen節の中から呼び出されるだけでよいからです。 when節(例えば、サンプル(...)関数を使用)を使ってwhen節を起動している場合、関数が毎回呼び出されることが保証されていることは間違いありません。
は基本的に、あなたのセットアップはこのようなものになるだろう:あなたは時間を渡すことができ、このように
algorithm
when sample(0, sample_rate) then
u := controllerEvaluation(x, y, t);
end when;
、必要な状態で、x、および入力、Y(またはu、あなたの視点に応じて)、コントローラーにコントローラーコマンドを戻します。
この文脈では、when節はあなたのスケジューラの表現であり、(例えば、歯車エンコーダや他の非同期割り込みのような)状態イベントを含まないため、シミュレータは、これらすべての機能呼び出しは、それらを繰り返す必要がありません。
マイケルをあなたの解決に感謝します!私はそれを試してみましょう! – aliko
Modelica言語仕様では、 'sample()'が毎回関数を1回呼び出すとは保証されていません。システム方程式のODE表現の場合がそうである可能性が高いが、システム方程式のDAE表現については必ずしも保証されていない。 正しい実装では、Modelica言語仕様3.3のcloked/synchronous機能のサンプル演算子を使用します。 – DelmeDelmi
- 1. WCFを使用したLAN用の仮想化ソフトウェアの使用
- 2. gymとDymola/Modelicaを併用したバージョン管理
- 3. Modelicaのランダム関数
- 4. ユニットテストModelicaコンポーネントライブラリ?
- 5. MRTG SNMP4Jを使用した同様のソフトウェア?
- 6. APIを使用したWindows Server 2008のウイルス対策ソフトウェア
- 7. Javaを使用したソフトウェアのプログラミング設定
- 8. Microsoft Lightswitchを使用した給与計算ソフトウェアの設計
- 9. ソナー私は、以下のソフトウェアを使用していたデータベース
- 10. Modelica assert(条件、メッセージ、レベル= AssertionLevel.warning); Modelica仕様の
- 11. バーチャルマシンを使用した新しいソフトウェア配布方法
- 12. Webアプリケーションのソフトウェア使用ドキュメントツール
- 13. ASP.NETメンバーシップを使用したASP.NET MVC Forumソフトウェア?
- 14. Modelica(SystemModeler)でホワイトノイズを生成
- 15. リバースエンジニアリング用ソフトウェアまたはフレームワーク
- 16. C#のソフトウェア使用状況分析
- 17. Vimeo.comはどのフォーラム/速報ソフトウェアを使用しますか?
- 18. Modelica Modelロバストネスの問題:ODE-Jacobianのモデル評価に失敗しました
- 19. Modelicaのイベントのないオン/オフ制御
- 20. Modelica - min属性を設定する
- 21. Modelica Issue Trackerの投稿が迷惑メールとして拒否されました
- 22. wmiを使用してリモートホストからソフトウェアをインストールする
- 23. Ubuntu - dpkgを使用してソフトウェア情報を取得する -
- 24. LWJGL(裸)はソフトウェアまたはハードウェアレンダリングを使用していますか?
- 25. 人工ニューラルネットワークまたは「生物」ニューラルネットワークライブラリ/ソフトウェアを使用していますか?
- 26. フリーランサーは「個人使用のための無料」ソフトウェアまたはサービスを使用できますか?
- 27. なぜバグ追跡ソフトウェアを使用しますか?
- 28. Gitを使用して、カスタマイズしたソフトウェアに更新パッチを適用することはできますか?
- 29. Modelica外部関数:C対C99
- 30. プロ用Javaソフトウェアをパッケージ化
コントローラのスケジューラをどのように実装する予定ですか?これは一定時間間隔(たとえば16msごと)にスケジュールされたコントローラか、または工場内の状態イベントによって非同期に呼び出されるコントローラですか?または、コントローラが連続的に実行されている(つまり、連続的な数学モデル)ことに注意してください。 私はあなたがしたいことがModelicaで達成できることを確信しています。しかし、私はあなたが心に持っているものを正確に理解する必要があります。 –
マイケル・レスポンスありがとう!はい、私はコントローラのルーチンをregulearの間隔で実行したいです。また、そのルーチンにはmodelicaのプロセス変数が提供され、modelicaのモデルに影響を与える制御アクション(信号)が出力される必要があります。 – aliko