< 上一個課程 | 下一個課程 >

第 5 課:將狀態圖新增至行為設計

在本課中,您要將狀態圖新增至 SystemUnderControl,以便建立基本行為的模型。

SystemUnderControl 是一個容量為 720 L 的水池,其起始溫度需要使用 ControlSystem 供應的熱量加熱至參考溫度。若要描述 SystemUnderControl 的特性,屬性可說明系統的狀態,而參數限制可指定輸入 Q 到 SystemUnderControl 及其輸出 deltaT 的數學關係。

方程式

此關係可以修改,以在離散時域中使用。如果 Q 表示為速率,即 ControlSystem(此模型中的熱源)以每秒 19.049 kJ 的速率上限提供熱量,deltaT 就變成速率,即溫度變化(採用每秒 degC 為單位)。透過使用隱含的時段 1 秒,熱量與溫度變化之間的限制便可以使用狀態圖(一個離散的時域構件)建模。

若要新增說明 SystemUnderControl 行為的狀態圖,請執行下列動作:

  1. 在瀏覽器中,展開 DesignSynthesisPkg > 區塊 > 環境定義 > 內部區塊圖,然後按兩下外部流程以開啟內部區塊圖。
  2. 用滑鼠右鍵按一下圖中的 SystemUnderControl 組件,然後選取新增 > 狀態圖
  3. 選取「戳記模式」工具 「戳記模式」工具,然後按一下「狀態」。(透過戳記模式,您可以繪製相同圖表元素的多個版本。)
  4. 在空白狀態圖中按三次以繪製三個狀態。再次按一下「戳記模式」以停止使用它。
  5. 在三個狀態的每一個狀態中輸入標籤名稱:idlewarmingcooling
  6. 選取「預設轉移」工具 「預設轉移」工具,並在 idle 狀態上方按一下,然後在該狀態頂端再按一下。
  7. 按兩下轉移線條以開啟「特性」視窗。
  8. 在「一般」頁面的動作欄位中,輸入 setTemperature(initialT);
  9. 按一下確定。請注意,會自動新增 "/" 作為轉移語法的一部分。
  10. 選取「條件連接器」工具 「條件連接器」工具,然後按一下狀態圖中間。
  11. 選取「轉移」工具 「轉移」工具,並繪製從 idle 狀態到條件連接器的箭頭。將此轉移標記為 tm(1000)
  12. 選取「接合連接器」工具,然後按一下 warming 與 cooling 狀態之間的位置。
  13. 繪製從 warming 和 cooling 到接合連接器的轉移。
  14. 繪製從接合連接器到 idle 狀態的轉移。開啟轉移的「特性」視窗,並將以下文字行(包括分號)新增至動作欄位,然後按一下確定setTemperature(heatFunction());
  15. 繪製從條件連接器到 warming 狀態的轉移。將此轉移標記為 [heat>0]
  16. 繪製從條件連接器到 cooling 狀態的轉移。將此轉移標記為 [else]
  17. 在瀏覽器中,找出 SystemUnderControl 區塊下面的 heatFunction 作業。
    顯示 SystemUnderControl 區塊下面的 heatFunction 的瀏覽器
  18. 按兩下該作業以開啟「特性」視窗,然後選取「實作」標籤。
    顯示 heatFunction 的「實作」標籤的「特性」視窗
  19. 移除實作內容開頭的兩個正斜線字元(C++ 註解字元)。文字會從綠色變更為另一語法特定顏色,以指出 Rhapsody® 已對其進行剖析。按一下確定
狀態圖應該類似於以下範例。
狀態圖

在此狀態圖中,考慮到供應的熱量(如果有)和冷卻,每秒會計算新的溫度。狀態轉移的一秒鐘計時會隱含指定簡化限制方程式的連續時間。例如,通常以 degC_per_s 表示的 coolingRate 會變成 degC。

若要查看內部區塊圖中的狀態圖,請執行下列動作:

  1. 選取視窗 > 內部區塊圖:DesignSysntesisPkg::Context 中的外部流程
  2. 黃色狀態圖符號 黃色狀態圖符號 位於 s:SystemUnderControl 組件的右上角。按一下該狀態圖符號以開啟該狀態圖。

課程回顧

在這一課,您學到下列各項:
  • 在內部區塊圖中定義組件行為
  • 新增狀態圖以定義系統行為
  • 使用戳記模式在圖表中繪製相同類型項目的多個版本
  • 從內部區塊圖開啟狀態圖

在下一課,您將定義限制並新增參數圖。

< 上一個課程 | 下一個課程 >

意見回饋