2

simulink プロジェクトをスピードアップしようとしていますが、アクセラレータ シミュレーション モードを使用したいと考えています。

私のプロジェクトの目的は、循環プロセスを制御することであり、次のように構成されています。

  • すべてのパラメーターと、パラメーター推定によるフィードフォワード制御が実装されている matlab-script。また、反復ごとに simulink モデルのシミュレーションを開始します。
  • 動的システムとフィードフォワード制御 (基本的にはルックアップ テーブル) がフィードバック制御と共に実装されている simulink モデル。すべてのブロックのパラメーターは、スクリプトによって生成されたワークスペース変数/構造体によって設定されます。

フィードフォワード制御変数が計算され、各シミュレーション パスの後にシミュレートされたデータからパラメーターが推定されます。その後、モデルが再びシミュレートされます。モデルは反復中に変更されていませんが、それでもサイクルごとにコンパイルされています。最初から:このソリューションはアクセラレータ モードを使用するのに適していますか?

私はこれらの提案された手順に従って、反復ごとにビルドされる理由を判断しようとしました: mathworks

Accelerator-Mode で実行すると (この関数のドキュメントを参照すると、シミュレーション用にコンパイルされるようになりました)、反復ごとにコンパイルされる理由を再現できません。

csdet1.ContentsChecksum.Value ~= csdet2.ContentsChecksum.Value

は true ですが、提案されたコードでは詳細が見つかりません。

csdet1.InterfaceChecksum.Value ~= csdet2.InterfaceChecksum.Value

も真であり、提案されたコードの出力は

UserDefinedTypesChecksum

異なります。これはどういう意味で、どうすれば解決できますか?

副作用: モデルを Simulink で開き、Normal-Mode を選択して Simulink.BlockDiagram.getChecksum() を実行すると、次のエラーが発生します。

このチャート chartname に継続的な更新が指定されています。これは RTW ではサポートされていません。"

しかし、このチャートは Stateflow チャートではなく、Matlab-Function ブロックですか?!

4

0 に答える 0