バンバン温度制御システムのモデル化
この例では、ボイラーの温度制御に用いるバンバン制御システムを作成する方法を示します。この例で示すのは、ボイラーの温度制御用のバンバン制御システムです。このシステムは、制御とタイミングのための Stateflow® チャートとボイラーの動作をモデル化する Simulink® サブシステムを実装しています。システムの主要コンポーネントは次の 2 つです。
Bang-Bang Controller:熱サイクルのタイミングを制御し、温度設定点を管理し、時相論理を使用してステート遷移を処理する Stateflow チャート。固定小数点データを使用してボイラーの温度を表します。Boiler Plant Model:さまざまなステートにおけるリアルタイムのボイラー温度のダイナミクスをシミュレートする Simulink サブシステム。

制御ロジック演算
Bang-Bang Controller システムは、Off ステートから始まり、Stateflow の時相論理で制御されるシーケンスに従います。システムを初期化すると次のようになります。
Offステートが40秒間アクティブなままになります。40秒後、ボイラーの温度が制御器でチェックされます。温度が低温状態を示している場合、制御器が
Onステートに遷移します。Onステートが20秒間アクティブなままになります。チャートが遷移して
Offステートに戻ります。この60秒のサイクルがシミュレーションを停止するまで繰り返されます。

On ステートと Off ステートの間の遷移のタイミングは after 演算子を使用して制御されます。たとえば、after(20,sec) は、20 秒後に On から Off への遷移をトリガーします。遷移ラベル after(40,sec)[cold()] は、40 秒後に関数 cold が true を返すと Off から On への遷移をトリガーします。
Off ステートでは、自己ループ遷移をもつ Flash というサブステートを使用してステータス LED を制御しています。遷移ラベル after(5,sec) は、サブステートの entry アクションをトリガーし、LED を 5 秒ごとに点滅させます。

温度信号の処理
Boiler Plant Model サブシステムは、加熱または冷却の期間中にボイラーの温度反応のシミュレーションを実行します。Bang-Bang Controller チャートの出力に応じて、サブシステムは前のボイラー温度に対して加算または減算を行います (加熱の場合は +1、冷却の場合は –0.1)。その後、その結果がチャートから Digital Thermometer サブシステムに渡されます。

温度信号は、Digital Thermometer サブシステムにおいて、温度読み取り値をデジタル制御値に変換する 3 つの段階を通過します。

温度信号は、生の温度読み取り値をデジタル制御値に変換する一連の 3 つの変換段階を通過します。
Sensor ブロックは、線形変換を使用して、ボイラー温度をアナログ電圧に変換します。これにより、電圧が温度に比例します。
Analog-to-Digital Converter ブロックは、アナログ電圧を離散 8 ビット値に変換します。電圧に変換係数を乗算し、その結果を最も近い整数に丸めてから、8 ビット境界を維持するように固定します。出力は量子化整数です。
Linear Fixed-Point Conversion ブロックは、8 ビット整数を処理して最終的な温度値にします。キャリブレーションされた傾きとバイアス オフセットを適用して、デジタルの温度読み取り値を生成します。これにより、測定の精度は保ちながら 8 ビット環境との互換性が維持されます。
このシステムは 8 ビット パラメーター内で演算を行います。入力範囲は 0 ~ 255、分解能はフル スケールの 1/256 で、すべての計算において固定小数点演算が使用されます。このシーケンスにより、センサー入力から最終的な制御出力まで、制御システム全体で一貫した温度表現が保証されます。
次に、Bang-Bang Controller チャートは、このデジタル コード化された温度を受け取り、それを符号なし 8 ビット固定小数点データとして解釈します。チャートは温度データを 8 ビット環境で処理します。
シミュレーション結果
シミュレーション結果には、ボイラーが 450 秒 (7.5 分) 後に 20℃ に達することが示されています。その後、バンバン制御器により、このターゲット温度が残りの実行時間にわたって維持されています。

参考
after | every | Data Type Conversion (Simulink)