Storage Class を "Const" に設定している場合、​SIL実行ができない​のはなぜですか?

テストマネージャーで、SILを実行しています。
Storage Class を "Const" に設定している場合、SIL実行できません。
エラー:
'sim' の呼び出し時にエラーが発生しました ('PIL:pilverification:PILImplementationError'):
SIL または PIL ターゲット接続の実装の呼び出し中にエラーが発生しました。
"test_subComp_24b" のビルド中にエラーが発生しました
ログ:
Workspace parameter 'myParam' は SIL または PIL シミュレーション中の動的パラメーターの初期化、調整、またはテスト ハーネスのデータ定義でサポートされていません。パラメーターがインポートされる場合は、カスタム コードを使用してパラメーターを定義してください。パラメーターが初期化されない場合は、カスタム コードを使用してパラメーターを初期化してください。そうしない場合、SIL または PIL シミュレーションでリンカー エラーが発生するか、誤った数値結果が生じます。
Unable to access Workspace parameter 'myParam' because the data element is read-only in generated code. To enable access during SIL or PIL simulations, consider changing the storage class associated with Workspace parameter 'myParam'.

 Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 17 Jun. 2026 um 0:00

0 Stimmen

・Const の Storage Class について
SIL and PIL Limitations ドキュメントにも記載の通り、
Storage Class が "Const" に設定されているパラメータは、モデル側で初期化することができません。
これは、コード生成時に Storage Class が "Const" のパラメータに対する初期化コードが生成されないためです。
この場合、初期値は外部ファイル等から与えていただくことが前提となります。
(モデルが当該パラメータの Owner として扱われないため、外部での宣言・初期化が必要となります。)
・回避策について
回避策として、対象パラメータの Owner をモデル側に設定することで、Simulink に初期化コードを生成させることが可能です。
これにより、外部初期化に依存せずに動作させることができます。
例えば、添付ファイルを例ご紹介します。
DATA.zipを解凍ください。(R2024bで作成)
手順:
1.test_subComp_24b.slxモデルを開きます。
2.コンフィギュレーションパラメータで[コード生成] → [コード配置] に移動します。
3.「データ定義の配置にデータ オブジェクトからオーナーを使用する」 を有効にします。
(なお、こちらは、事前に設定しております。)
4.paramToLoad.matをロードします。myParamの「コード生成」タブを表示します。
Ownerに”test_subComp_24b”を設定します。
(なお、こちらは、事前に設定しております。)
5.テストマネージャファイルtest.mldatxを開きます。
シミュレーションを実行頂けます。

Weitere Antworten (0)

Kategorien

Produkte

Version

R2024b

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!