14回目(2015年度)


課題1 上記のアルゴリズムを基に速度法の関数を作成せよ.

使う式は,(c), (d)ですので,それぞれ関数を作ります.

周期Δtごとに制御するため,n周期後の応答は以下の式で示されます.
PVn = (T / (T + Δt)) PVn-1 + (Δt / (T + Δt)) MVn  ---(c)

なお,P制御をかけているので,今与えるべき操作量は
MVn = Kp en = Kp (SV - PVn-1)  ---(d)

もし可能であれば,引数に関数ポインタを使ってみてください.

参考例(オイラー法)
double euler(double (*fnc)(double, double), double t, double x, double h)
引数は
double(* fnc)(double, double): やりとりする関数のポインタを示します.
double t: 時刻を示します.
double x: 変数を示します.
double h: 時間刻みを示します.
となっています.

課題2 上記の関数を使って,シミュレーションを行ってみましょう.
SV=1.0, T=1.0, シミュレーション時間は5〜10[sec]程度,Δt 3通り,Kp 3通り変化させ,シミュレーションを
行います.なお,数値データはファイルに出力し,Excelでグラフを作成して応答を確認しましょう.

大雑把な流れですが,
1)シミュレーションの定数を決める
2)ループを設定し,刻み時間Δt間隔で
 -MVnの値を求める.
 -PVnの値を求め,ファイルに書き出す.
3)シミュレーション時間までループを繰り返す.
により計算できると思います.なお,初期値P0以前は0とすればよく,前回の応答値PVn-1は何らかの変数に
一時的に格納すればよいのです.

グラフの結果ですが,参考URLのファイルでシミュレーションしてみてください.