Function-Call Subsystemをまたいでのグローバル変数を使用したい場合は、どのようにするのでしょうか?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Akihiro Yasuda
am 5 Okt. 2016
警告: ブロック '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 Kommentare
Siehe auch
Kategorien
Mehr zu Simulink Functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!