< 前へ | 次へ >

レッスン 5: 振る舞いの設計にステートチャートを追加する

このレッスンでは、重要な振る舞いをモデル化するために、SystemUnderControl にステートチャートを追加します。

SystemUnderControl はある初期温度の水が 720 リットル入ったプールで、 ControlSystem が提供する熱を使用して、この水を基準温度まで温める必要があります。SystemUnderControl を特徴付けるために、属性はシステムの状態を示し、パラメトリックな制約は SystemUnderControl への入力 (Q) と出力 (デルタ T) の数学的な関係を指定します。

式

この関係は、離散的な時間の定義域でも使用できるように変更することが可能です。Q をレートとして表現した場合、すなわち、ControlSystem (このモデルでは熱のソース) が最大レート 19.049 kJ/秒で熱を提供する場合、デルタ T はレート、すなわち、1 秒当たりの温度変化 (degC) となります。1 秒の陰的時間枠を使用することで、ステートチャート、離散的な時間の定義域の成果物を使用して、熱と温度変化の間の制約をモデル化することができます。

SystemUnderControl の振る舞いを示すステートチャートを追加するには、次の手順を実行します。

  1. ブラウザーで、「DesignSynthesisPkg」 > 「ブロック」 > 「コンテキスト」 > 「内部ブロック図」を展開し、「外部フロー」をダブルクリックして内部ブロック図を開きます。
  2. ダイアグラムの SystemUnderControl パートを右クリックし、「新規追加」 > 「ステートチャート」を選択します。
  3. 「スタンプ・モード」ツール 「スタンプ・モード」ツール を選択し、「状態」をクリックします。 (スタンプ・モードを使用すると、同じダイアグラムの要素で複数のバージョンを描画することができます。)
  4. 空のステートチャートを 3 回クリックし、状態を 3 つ描画します。「スタンプ・モード」を再度クリックして、使用を終了します。
  5. 3 つの状態にそれぞれラベル名 idlewarming、および cooling を入力します。
  6. 「デフォルト遷移」ツール 「デフォルト遷移」ツール を選択し、idle 状態の上をクリックしてから、その状態の上部を再度クリックします。
  7. 遷移ラインをダブルクリックして、「フィーチャー」ウィンドウを開きます。
  8. 「一般」ページの「アクション」フィールドで、 setTemperature(initialT); と入力します。
  9. 「OK」をクリックします。遷移の構文の一部として自動的に「/」が追加されることを確認します。
  10. 「条件コネクター」ツール 「条件コネクター」ツール を選択し、ステートチャートの中心をクリックします。
  11. 「遷移」ツール 「遷移」ツール を選択し、idle 状態から条件コネクターに矢印を描画します。この遷移に tm(1000) というラベルを付けます。
  12. 「ジャンクション・コネクター」ツールを選択し、warming 状態と cooling 状態の間でクリックします。
  13. warming と cooling からジャンクション・コネクターに遷移を描画します。
  14. ジャンクション・コネクターから idle 状態に遷移を描画します。遷移の「フィーチャー」ウィンドウを開き、次のテキスト行をセミコロンも含め「アクション」フィールドに追加し、「OK」をクリックします。setTemperature(heatFunction());
  15. 条件コネクターから warming 状態に遷移を描画します。この遷移に [heat>0] というラベルを付けます。
  16. 条件コネクターから cooling 状態に遷移を描画します。この遷移に [else] というラベルを付けます。
  17. ブラウザー内で、SystemUnderControl ブロックの下の「heatFunction」操作を見つけます。
    SystemUnderControl ブロックの下の「heatFunction」が表示されたブラウザー
  18. その操作をダブルクリックして「フィーチャー」ウィンドウを開き、「実装」タブを選択します。
    heatFunction の「実装」タブが表示された「フィーチャー」ウィンドウ
  19. 実装コンテンツの最初の部分の、2 つのスラッシュ文字 (C++ コメント文字) を削除します。テキストが緑色から別の構文固有の色に変わり、 Rhapsody® により構文解析が行われたことが示されます。 「OK」をクリックします。
作成されたステートチャートは、次の例のようになります。
ステートチャート

このステートチャートでは、適用された熱 (存在する場合) と cooling を考慮して、1 秒単位で新しい温度が計算されます。1 秒のタイミングの状態遷移により連続時間の陰的仕様が提供されるため、制約の式が簡単になります。例えば、通常 degC_per_s で表現される coolingRate は degC となります。

内部ブロック図のステートチャートを表示するには、次の手順を実行します。

  1. 「ウィンドウ」 > DesignSysntesisPkg::Context の「内部ブロック図: 外部フロー」 を選択します。
  2. 黄色のステートチャート・シンボル 黄色のステートチャート・シンボル が s:SystemUnderControl パートの右上隅にあります。ステートチャート・シンボルをクリックして、そのステートチャートを開きます。

レッスンのチェックポイント

このレッスンでは、次の事項について学習しました。
  • 内部ブロック図内のパートの振る舞いを定義する
  • ステートチャートを追加してシステムの振る舞いを定義する
  • スタンプ・モードを使用して、1 つのダイアグラム内の同じタイプの項目で複数のバージョンを描画する
  • 内部ブロック図からステートチャートを開く

次のレッスンでは、制約を定義してパラメトリック図を追加します。

< 前へ | 次へ >

フィードバック