このレッスンでは、ControlSystem のブロック定義図の作成、ブロック・プロパティーの追加、コンポーネントの追加、および内部ブロック図の作成を行います。
基本アーキテクチャーをブロック定義図のプロジェクトに追加するには、次の手順を行います。
- ブラウザーで、DesignSynthesisPkg を開き、ブロック定義図 (Block Definition Diagram) フォルダーを選択します。
- 右クリックして、「新しいブロック定義図の追加」を選択します。
- 「新規ダイアグラム」ウィンドウで、名前制御システム構造 を入力し、「OK」をクリックします。プロジェクトにはこの新しい図のブロックがまだ存在しないため、この図に「ダイアグラムへのデータの取り込み」オプションは使用できません。
- 「スタンプ・モード」ツールおよび「ブロック」ツール
を選択します。
- 図に 3 つのブロックを配置し、「スタンプ・モード」ツールをクリックしてモードの使用を停止します。
- ブロックをクリックして、それらのブロック名をセンサー、アクチュエーター、およびコントローラーに置換します。
- ブラウザーで、ブロック領域を開き、リストに新しいブロックがあることを確認します。
- 制御システム構造ブロック定義図に戻ります。
- 新しいブロックは、ControlSystem のコンポーネントです。「有向コンポジション」ツール
を使用して、ControlSystem ブロックと新しい各ブロックの間にコンポジション関連を追加します (塗りつぶされたダイヤモンドは ControlSystem に接続する必要があります)。関連を定義するには、以下の手順に従ってください。- センサー・ブロックでコンポジション関連の矢印の端をダブルクリックして、その「フィーチャー」ウィンドウを開きます。
- 「名前:」に sen を設定します。「ControlSystem を以下として認識」を cs に設定します。「OK」をクリックします。
- コンポジションをもう一度右クリックし、「表示オプション」で端 1 の名前を表示するように設定します。
- コントローラー・ブロックのコンポジション関連を右クリックし、「表示オプション」で端 1 の名前を表示するように設定します。
- アクチュエーター・ブロックでコンポジション関連の矢印の端をダブルクリックして、その「フィーチャー」ウィンドウを開きます。「名前:」に act を設定します。「ControlSystem を以下として認識」を cs に設定します。「OK」をクリックします。
- コンポジションをもう一度右クリックし、「表示オプション」で端 1 の名前を表示するように設定します。
- コントローラー・ブロックでコンポジション関連の矢印の端をダブルクリックして、その「フィーチャー」ウィンドウを開きます。「名前:」に con を設定します。「OK」をクリックします。
- ブラウザーで ControlSystem ブロックを選択し、「属性」カテゴリーを展開します。温度属性をコピーし、センサー・ブロックに貼り付け、コントローラー・ブロックにも貼り付けます。
- ブラウザーでコントローラー・ブロックを選択し、「属性」カテゴリーを展開します。
- PredefinedTypes パッケージから選択できるように、このパッケージを表示するには、ブラウザーの上部にあるプロジェクト名をダブルクリックします。 「プロパティー」タブで、Browser::Settings::ShowPredefinedPackage プロパティーを見つけます。名前の横にあるボックスをチェックして、このプロパティーをオンにします。 「OK」をクリックします。
- 「新しい属性の追加」を右クリックして選択します。属性を追加して定義するには、以下の手順に従ってください。
- heat_data という名前のブール型の属性を追加します。
- ブラウザーで heat_data 属性を選択します。これをコピーし、アクチュエーター・ブロックに貼り付けます。
- 初期値に 40.0 を設定した setPoint という名前の degC 型の属性をコントローラーに追加します。
- 初期値に 19.049 を設定した rating という名前の deg 型の属性をアクチュエーターに追加します。
- ブラウザーで ControlSystem ブロックを選択し、「フロー・ポート」カテゴリーを展開します。フロー・ポートを追加して定義するには、以下の手順に従ってください。
- フロー・ポートを選択してコピーします。これをセンサー・ブロックとコントローラー・ブロックに貼り付けます。
- センサーの温度フロー・ポートをダブルクリックし、「方向」を「Out」に変更します。
- heat_data という名前のブール型の新しいフロー・ポートをコントローラー・ブロックに追加します。
- このフロー・ポートを選択し、コピーしてアクチュエーター・ブロックに貼り付けます。
- アクチュエーターの heat_data フロー・ポートの「方向」を「In」に変更します。
- ブロックのポートを表示するには、図にあるブロックを選択し、右クリックして「表示オプション」オプションを選択します。
「コンパートメント」ボタンをクリックします。「コンパートメント」ウィンドウで、「ポート」を選択し、「表示」ボタン (下図参照) をクリックして「表示」列に移動します。 「OK」を 2 回クリックします。
- ブロック定義図に定義したコンポーネントが、ControlSystem ブロックの下のパーツ (act、con、および sen) としてブラウザーに表示されていることを確認します。
制御システム構造ブロック定義図は、次の例のように表示されます。
内部ブロック図の追加
設計を完成させるには、ControlSystem が接続に対してコンテキストを提供できるように、内部ブロック図でセンサー、コントローラー、およびアクチュエーターを接続する必要があります。
- ブラウザーで、ControlSystem ブロックを選択し、を選択します。
- 内部ブロック図の名前を制御システムの内部構造と入力します。
- ブラウザーで、ControlSystem の sen、con、および act の各パーツを内部ブロック図にドラッグします。
- デフォルトでは、パーツはそのフロー・ポートを表示します。「コネクター」ツール
を選択し、センサーの温度フロー・ポートからコントローラーの温度フロー・ポートに接続を描画します。
- コントローラーの heat_data フロー・ポートからアクチュエーターの heat_data フロー・ポートに別の接続を描画します。
- ポートが正しい方向 (In、Out) を向いていることを確認します。必要に応じて、各フロー・ポートの「フィーチャー」ウィンドウを使用してそれらを変更します。
- ダイアグラム・フレームが表示されない場合は、図の空白部分をクリックし、コンテキスト機能の「ダイアグラム・フレームの表示/非表示」を起動して、フレームを表示させます。
フレームを右クリックして、を起動します。この設定により、ControlSystem ブロックの温度と熱の各フロー・ポートがフレーム上で表示されます。
ControlSystem は温度フロー・ポートで受信するデータをセンサーに委任します。
同様に、アクチュエーターはそれが提供する熱を ControlSystem の熱フロー・ポートに委任します。
完成した内部ブロック図
は、次の例のように表示されます。