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のファイルでシミュレーションしてみてください.