制御素人老人がScilab/Xcosのデモを動かしながら「制御」を学ばんと。前回は「水タンク」、連続系のPID制御でした。今回の制御対象のシステムは連続系の伝達関数(1次遅れ系)ですが、制御器は離散的なシステムです。連続と離散の接続、どうしたら良いの?という点にバッチリ例を示してくれてます。でも制御の意図は分からん?
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
連続と離散
Scilab/Xcosは真の計算実体は「デジタル」コンピュータですが、連続系でも離散系でもシミュレーションできるソフトウエアです。例によってGoogleの生成AI、Gemini様の解説をば掲げさせていただきます。
今回のデモ
黄色いマーカ部分が制御対象の連続系の「1次遅れ」システムとその入力(正弦波)です。緑色マーカ部分が離散系の制御器のようです。
キモといえば、連続系に離散系を取り出すのに「サンプル&ホールド」ブロックを使い、それを通した後は離散的なZ素子使って記述ができると。連続系に接続するときはそのままで良いのね。。。
上記のフローの上部には何やらスーパーブロックが定義されとります。その内部はこんな感じ。
CLOCKブロックの発するイベント(ここでは0.1s周期)を10分周(つまりは1秒周期)したイベントクロックを「2」のポート(サンプル&ホールド)に出力しているみたい。
一方外乱与える乱数ブロックはこんな感じ。
正規分布、0平均だけれども偏差は10あり。入力は振幅1の正弦波なので、偏差、けっこうデカイっす。
シミュレーション結果
緑が連続系の出力。黒が離散的なフィードバックっす。
なお、離散系のフィードバックを「外した」連続系だけの計算結果が以下に。
赤が連続系の出力、黒が入力正弦波です。ここで設定されている離散系の制御器の効果、素人老人にはよくわからんのう。。。