0

Real-timeWorkshopを使用してSimulinkでリアルタイムシミュレーションを実行しようとしています。ターゲットはgrtです(rtwinを試しましたが、シミュレーションでコンパイルできません)。シミュレーションをリアルタイムで実行して、シミュレーションの1秒がリアルタイムの1秒続くようにする必要があります。Grtはリアルタイムを無視し、可能な限り短い時間でシミュレーションを終了します。それを同期する方法はありますか?

http://www.mathworks.com/matlabcentral/fileexchange/3175を試しましたが、動作しませんでした(コンパイルされません)。

提案ありがとうございます。

4

1 に答える 1

0

それは不可能のようです。WinApiのSleep(time in ms)関数とtime.hのclock関数を使用して実行を遅くすることができました。これは、サンプルレートが低い場合に非常によく見えます。ただし、サンプルレートを上げると、スリープ関数のスリープ時間が長すぎてエラーが発生し、シミュレーションの1秒が実世界で1秒以上続きました。

アイデアは、反復の1期間が続くべきである、たとえば200msであると言うことでした。次に、clock関数を使用してコードの1回の反復が実行されるのにかかる時間を計測します。次に、Sleep(200 --u)を呼び出します。ここで、uは反復の長さです。問題は、Sleep関数がプロセスをスリープさせ、引数で指示したときではなく、必要なときにウェイクアップすることです。

私はこれが解決策ではないことを知っていますが、誰かが私と同じ問題に直面した場合にこの行き止まりの解決策を試さないように、これを投稿してください。rtwinのシミュレーションを書き直す必要がありましたが、正常に動作するようになりました。

別のアイデアは、どういうわけか割り込みを使用することですが、それは非常に複雑で、問題を起こす価値がないと思います。

于 2012-07-19T13:51:56.157 に答える