Function-Call Subsystemをまたいでのグローバル変数を使用したい場合は、どのようにするのでしょうか?
1 回表示 (過去 30 日間)
古いコメントを表示
Function-Call Subsystemをまたいでのグローバル変数を使用したい場合は、どのようにするのでしょうか?
StateFlowを使用して、各周期ごとに処理する内容を切り替えて実行するModelを作成しております。 最終の処理内容は下記の通りです。
Task1: 「at」で実行・・・初期処理のみ実行・・・グローバル変数の演算を実施(変数の上下限値や物理定数などの演算) Task2: 「every」で実行・・・○msecでの処理を実行・・・上記Task1で演算した定数を使用して処理を実行 Task3: 「every」で実行・・・△msecでの処理を実行・・・上記Task1で演算した定数を使用して処理を実行
Model_rott +--PulseGenerator +--StateFlow(上記Taskの実行タイミング指示信号を生成)・・・PulseGeneratorのEdgeを数えて「at」「every○」「Every△」の実行信号を生成(上記Task1から3を実行するための3つのStateのみ) +--SubSystem(上記Taskの処理内容を記載) +--SubSystem:上記Task1~3をFuctionCallで実装 +--Task1 +--Task2 +--Task3
Task1で計算した値をWorkSpaceで他のTaskで使用しようとすると、 「警告: ブロック 'Model_root/subsystem/functionCall2/Data Store Read1' は、時間 0.0008 で 1つまたは複数のブロックがこのメモリ領域全体に書き込む前に、データ ストア 'Model_root/subsystemm/Data Store Memory2' から読み取っています 」 というWorningが出ています。
またGotoでは「非バーチャル サブシステム境界、すなわち、atomic、条件付き実行、または Function-Call Subsystem あるいはモデル参照の境界をまたがることはありません」とのことでErrorが出ています。
ご教授下さいますよう、よろしくお願い致します。
0 件のコメント
回答 (1 件)
Akihiro Yasuda
2016 年 10 月 5 日
警告: ブロック 'Model_root/subsystem/functionCall2/Data Store Read1' は、
時間 0.0008 で 1つまたは複数のブロックがこのメモリ領域全体に書き込む前に、
データ ストア 'Model_root/subsystemm/Data Store Memory2' から読み取っています
上記警告メッセージから、Model_root/subsystemm下にData Store Memoryブロックを配置しているかと思います。
Data Store Memoryをグローバル変数として扱う場合、 信号オブジェクトを作成し、グローバル データ ストアにする必要があります。
下記リンク先は関連資料となります。
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Simulink Functions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!