制御シミュレーション(2)

今回は,P制御(比例制御)の加え,最もよく使われているPID制御について実習を行う. また,計算結果のグラフィクス表示に挑戦しよう.

また,残りの時間は全体の復習およびまとめの時間とする.
各自で理解が不十分と思われる内容については,今日のうちにしっかりと復習・質問すること.

PID制御

P制御では,偏差 e ( = 入力SV - 応答PV ) に比例ゲイン Kp をかけて操作量 MV を生成するが,偏差がゼロにならない(=定常偏差またはオフセットと言う)問題があった.
実際の制御機器では,比例(P)に加え,偏差の積分(Integral)や微分量(Differential)を利用するPID制御が広く用いられている.

P制御では,操作量 MV は



と表されることを学んだが,PID制御ではこれに加えて,



の項を追加して,操作量MVを計算する.
ここで,Kp は比例ゲイン,TI は積分時間(積分ゲイン),TD は微分時間(微分ゲイン)と呼ばれる.

PID制御では,偏差の積分値や微分値などを用いて,滑らか,かつ,速やかに目標値に向かって制御することができる.
また,P制御の問題点であった定常偏差も大幅に減らすことができる.

グラフィックスの利用

前回の課題は,コンソールに文字・数値を出力し,Excelを用いてグラフ化する方法を使った.
コマンドラインでの結果の表示は,シミュレーション結果を簡単にチェックすることができ便利であるが,値の変化や時間変化などは数値の羅列よりもグラフで確認したい.
ここではExcelに頼らず,C言語のプログラムだけを用いて図を描く方法を示す.

本格的な3次元コンピュータグラフィクス(CG)の実現には多くのコードの記述が必要となるが,ここでは単純な2次元グラフィックの利用を紹介する.

参考ページ mogra.html

以下,実行に先立ってmogra_2.hをダウンロードしておくこと(右クリックでファイルに保存).
これはC言語のヘッダファイルなので,テキストエディタで開くことができる.

このファイルを使用するには,ソースファイルの先頭で


#include "mogra_2.h"

と記述することで,グラフィクス関数が利用可能となる.

参考:include文の < >" "について

上の例のように#include "..."とすることで, ソースファイルと同じフォルダ内の .h ファイルをincludeすることができる.
したがって,自作などのヘッダファイルのincludeには," "を使用する.

#include <...> では,ライブラリ関数などあらかじめ設定した検索場所(ヘッダーファイルの検索パス)に置かれているヘッダファイルしか読み込まない.