このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Truth Table ブロックを使った室温調節
この例では、Truth Table ブロックを使用して室温調節システムをモデル化します。室温調節システムを導入せずに室内の気候を一定に保つことは難しいため、居住者は通常、自動化されたシステムを利用して望ましい気候を維持します。温度と湿度は動的であるため、望ましい状態を保つには、常に監視して調整する必要があります。望ましい気候を保つために、家屋の各種サブシステムがどのように有効化されるかをモデル化するために、このモデルでは Truth Table ブロックを使用して論理的意思決定を管理します。
真理値表の調査
この例では、ClimateController
というラベルの付いた Truth Table ブロックによって、サブシステムの物理的な出力がすべて制御されます。このブロックは、望ましい温度 T_thresh
、実際の室温 t
、望ましい湿度 H_thresh
、および実際の室内湿度 h
の 4 つの入力を使用します。ブロックがどのように入力を使用して出力を生成するかを確認するには、ブロックをダブルクリックします。ClimateController
ブロックには、条件テーブルとアクション テーブルの 2 つのテーブルが含まれます。
条件テーブルは入力の論理的な評価方法を示し、ブロックで行う 2 つの比較と、ブロックが取ることのできる 4 つのアクションを示します。最初のアクションを実行するには、2 つの条件が True
でなければなりません。条件のいずれかが True
でない場合、ブロックは次の判定列に示された条件をテストします。ここでは、最初の条件のみが True
でなければなりません。この評価は、判定が得られるか、最後の判定列に達するまで左から右へと続行された後、実行されます。この例では、-
のエントリは False
条件のように機能します。結果として、ブロックは、-
条件が False
として明示的に定義されていた場合と同じように動作します。しかし、True
条件と False
条件のみを使用して自動生成されたコードでは、最適でないコード カバレッジが生成される可能性があります。この問題を回避するため、この例では -
条件を使用します。
最初の行で、ブロックは室温と望ましい温度を比較し、CoolOn
アクションと HeatOn
アクションを使用して、室内のクーラーとヒーターをそれぞれ制御します。t > T_thresh
の場合、ブロックは CoolOn
アクションを有効にします。この条件が True
でない場合、ブロックは HeatOn
アクションを有効にします。2 行目で、ブロックは室内湿度と望ましい湿度を比較し、HumidOn
アクションを使用して加湿器を制御します。h < H_thresh
の場合、ブロックは HumidOn
アクションを有効にします。
アクション テーブルは、各論理的アクションに関連付けられているブロック出力を定義します。最初の行で、CoolOn
は cooler
の値を 1
に、heater
の値を 0
に設定します。2 行目で、HeatOn
は heater
の値を 1
に、cooler
の値を 0
に設定します。既定では、ブロックで HumidOn
が有効にされている場合を除き、加湿器は 0
です。
家屋のサブシステムの調査
モデル内の Humidifier
、Cooler
、Heater
というラベルの付いた緑のブロックは、室内の気候を調整する物理的なサブシステムを表します。Humidifier
サブシステムには、ClimateController
ブロックの出力を受けて作動する Switch ブロックが含まれます。Humidifier
サブシステムの入力が 1
の場合、このサブシステムは 1.5
を出力します。それ以外の場合、サブシステムは値 0
を出力します。
Heater
サブシステムと Cooler
サブシステムも同様の原理で動作します。それぞれに、2 つの Switch ブロックが含まれます。一方の Switch ブロックは温度に作用する値を出力し、Cooler
では端子 "dt"、Heater
では端子 dt1 でそれぞれ出力されます。もう一方の Switch ブロックは湿度に作用する値を出力し、Cooler
では端子 "dh"、Heater
では端子 "dh1" でそれぞれ出力されます。cooler = 1
の場合は Cooler
サブシステムが有効になり、heater = 1
の場合は Heater
サブシステムが有効になります。作動すると、Heater
サブシステムは "dt1" で 1
を出力し、Cooler
サブシステムは dt で -1
を出力します。どちらのサブシステムも、作動すると dh および dh1 で -0.5
を出力します。
ClimateController
ブロックの構成により、Cooler
サブシステムと Heater
サブシステムが同時に有効になることはありません。
外部のサブシステムの調査
外の熱や湿度も室内の気候に影響します。このモデルは、これらの条件による影響を熱と湿度の流量として表します。externalHeatFlow
サブシステムは屋外の熱流量を、externalHumidityFlow
サブシステムは屋外の湿気流量をそれぞれモデル化します。externalHeatFlow
サブシステムは外気温と室温の差を取り、その差に係数を乗算します。
係数の値が高いほど熱流量が大きいことを表し、これは家屋の断熱性が良くない場合に発生します。externalHumidityFlow
サブシステムは、externalHeatFlow
サブシステムとは異なる物理的動作を表しますが、externalHumidityFlow
サブシステムでは、ブロックと接続に同じ配置を使用します。externalHumidityFlow
サブシステムは、屋外湿度と室内湿度の差を取り、その差に係数を乗算します。
モデルのシミュレーション
モデルを実行すると、2 つの Floating Scope ブロックが表示されます。temperatureScope
というラベルの付いた Scope ブロックには、外気温 (ET
) と室温 (temperature
) が表示されます。
humidityScope
というラベルの付いた Scope ブロックでは、屋外湿度 (EH
) と室内湿度 (humidity
) がプロットされます。
シミュレーションは無限に実行されるように設定されています。シミュレーションを停止するには、[停止] ボタンを押して手動で停止するか、シミュレーションの実行開始前に停止時間を調整します。
モデルの調査と変更
別の外気温信号を使用するか、信号の振幅を変更することにより、外気温を調整できます。Sine Wave ブロック externalTemp
および externalHumid
の振幅を調整して、モデルがどのように反応するかを観測してみてください。
断熱性が良くない家屋もあれば、より効果的な気候制御サブシステムのある家屋もあります。これらの物理的な差が、サブシステムの出力に影響します。Constant ブロックの値を変更して、Heater
サブシステムまたは Cooler
サブシステムの出力を調整してみてください。