2012-02-29 10 views
2

pidコントローラがs-functionブロックに接続されているSimulinkファイルを実行しようとしています。S-Functionを使用したSimulinkのパフォーマンス

私は比例、積分、微分であるpidの3つの値パラメータを設定すると、プロセス全体を実行するには時間がかかります。なぜこれが起こったのですか?

私のPIDダイアグラムのダイアログボックスでは、ポール値の場合、一定の振幅振動に対応する値に等しくなります。

積分については、Kcu/Tiに等しい。 Tiは最終的な周期(Pu)/ 2であり、最終的には導関数であり、等価tu Kcu * Tdであり、TdはPu/8であり、

である。これは、チーグラー・ニコルズ法を指す。私の質問は、なぜこのファイルを実行するのに時間がかかりすぎるのかということです。

答えて

3

MATLAB S-関数は、MATLABインタープリタで実行されるため、処理速度が遅くなります。 Simulinkブロックを使用するか、 "Embedded MATLAB Function"(R2011a以前)または "MATLAB Function"(R2011a +)ブロックを使用して実装することを検討してください。

GuySethのシミュレーションのパフォーマンスについての情報をお読みください。

+0

便利なコメントと興味深いリンク。ありがとう! +1 –

1

@NzbuuはMatlabのS関数についてです。

しかし、私はここの問題が他の場所にあると思います:@Syarinaは、コントローラの比例係数をの後にSimulinkシミュレーションが遅くなると言っていますか??プラントだけをシミュレートすると、この場合はS-functionが実行速度に大きな違いがありますか?実際にそうなら、私はPIDコントローラがODEシステムを作ると仮定しますstiff。これは、ODEシステムのさまざまな状態が実際には異なるダイナミクスを持っていることを意味します。非常に速いものもあれば、非常に遅いものもあります。剛性方程式に適していないode-solverを使うと、シミュレーションがずっと遅くなることがわかります(実際に収束すれば運が得られます)。

私の提案は、ソルバーを変更しようとしています。例えばode15sです。

+0

はいsir.thank you.before私はode15に変更した後、私はode45.thenを使用して、より速く実行しています。 – rina

関連する問題