Function-Call Subsystemをまたいでのグローバル変数を使用したい場合は、どのようにするのでしょうか?
조회 수: 2 (최근 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에서 Subsystems에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!