Function-Call Subsystemを​またいでのグローバル​変数を使用したい場合​は、どのようにするの​でしょうか?

조회 수: 2 (최근 30일)
Hiroshi Fujioka
Hiroshi Fujioka 2016년 5월 23일
답변: Akihiro Yasuda 2016년 10월 5일
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が出ています。
ご教授下さいますよう、よろしくお願い致します。

답변 (1개)

Akihiro Yasuda
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をグローバル変数として扱う場合、 信号オブジェクトを作成し、グローバル データ ストアにする必要があります。
下記リンク先は関連資料となります。

카테고리

Help CenterFile Exchange에서 Subsystems에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by