2011-02-09 74 views
0

ちょっと、私のモデルでPreLoadFcnを使用すると、たぶん非常に単純な問題があります。Simulinkのコールバックの問題

シミュレーションを開始する前にモデルにmファイルをロードしてもらいたいのですが(これはpreloadfcnのためのものです)

だから私は、ファイルに追加 - >モデルのプロパティ - >コールバック - > PreLoadFcnライン

run('./init.m') 

このファイルに設定されたいくつかの変数があります。私のモデルはそれらの変数を参照し、例外をスローします。単に「Start simulation」をクリックするだけで、モデルを見つけることができません。これはコールバックがやっているべきことをしていないことを私に示しています...

ファイル 'init.m'は、シミュレーションファイルと同じディレクトリにあります。

ディレクトリをmatlab PATHに追加しようとしても何の効果もありませんでした。

挨拶は

答えて

1

それは前モデルを実行するプロンプトMATLABコマンドで「初期化」を実行するだけで動作しますがpoeschlorn?その場合は、おそらくコールバックを "init.m"というスクリプトを実行する

init 

と置き換える必要があります。

+0

タイピングのMatlabのCOMANDラインにはなく、私はそれを見つけたコールバック – poeschlorn

+0

で、動作します。私はこのmファイル内で関数を宣言しなければなりません:) – poeschlorn

1

コールバックトレースを使用して、モデルのロードおよびシミュレーションのプロセス中に呼び出されたコールバックを確認できます。詳細はdocumentation on callbacksをご覧ください。

また、initはスクリプトですか、関数ですか?これはスクリプトでなければなりません。また、evalin( 'base')を使用してvarsをベースワークスペースに配置する必要があります。 init.mにブレークポイントを置いてヒットしないようにすることもできます。

+0

こんにちは、initはexacly "init.m"という名前のスクリプトです。それはそれ以上の機能を含んでいません。それは私のワークスペース内のいくつかの変数を初期化するだけです。あなたの最初のプロンプトに関して、代わりに(シミュレーションが始まる前にスクリプトを実行する) "StartFcn"を使用しましたが、何の影響も受けませんでした。 – poeschlorn

+0

奇妙なことに、なぜこれが動作しないのか正確にはわかりません。私はあなたがやっていることを正確に行うためにモデルで何回もコールバックを使いました。彼らは常に働きます。試みるもう1つのことは、init.mの内容をコールバックに直接貼り付けることです。 – MikeT

0

私も同じ問題を抱えていました。今それは解決されました。 解決策は簡単に終了しました。 PreLoadFcn * で関数を定義したら、simulinkファイルを保存して再起動するだけです。 確かに動作します。

挨拶、 'initは' ハリー

関連する問題