コンピューターシミュレーションの課題について

コンピュータシミュレーション課題について
2014/10/21
よくある問題と解決策
1
1.1
プロットしても振動的で汚くなる
問題:シミュレーションを行なっても Fig. 1 のように振動的になってしまい、Fig. 2 のようにならない。
4.5
4.5
4
4
3.5
3.5
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0
-0.5
0
0
2
4
6
8
10
0
Fig.1: 可変ステップ
2
4
6
8
10
Fig.2: 固定ステップ
解決策:シミュレーションの設定を変えてください。具体的には、Fig. 3 のようにコンフィギュレーションパラ
メーターの設定画面を開き、左上の選択の欄からソルバーという項目を選択し (デフォルトではソルバーの項目が
開きます)、ソルバーオプションの種類を固定ステップに、ソルバーを ode3(Bogacki-Shampine) に、固定ステッ
プ (基本サンプル時間) を 1e-3 または 1e-4 にして下さい。
1.2
プロットできない
問題:シミュレーションを行なってもプロットできない。
解決策:コンフィギュレーションパラメーターの設定と Simulink モデル上の ToWorkspace(simuout や output
と名付けられたブロック) の設定があってるか確認してください。コンフィギュレーションパラメーターの設定に
ついては、Fig. 6 のようにコンフィギュレーションパラメーターの設定画面を開き、左上の選択の欄からデータの
インポート/エクスポートという項目を選択し、ファイル保存オプションのデータ数の制限のチェックが外れてい
て、形式が配列になっているか確認して下さい。ToWorkspace の設定については、Fig. 5 のように Simulink モデ
ル上のブロックをダブルクリックして設定画面を開き、保存形式が配列になっているか確認して下さい。
1
Fig.3: コンフィギュレーションパラメーター (ソルバー)
Fig.4: コンフィギュレーションパラメーター (データのインポート/エクスポート)
2
Fig.5: ToWorkspace(output) の設定
1.3
Scope の線が途切れている
問題:Simulink 上の Scope の線が途切れている
解決策:Scope をダブルクリックしてパラメーターのタブを開き、履歴を選択してください。その中でデータ数
の制限のチェックを外れていることを確認してください。
Fig.6: コンフィギュレーションパラメーター (データのインポート/エクスポート)
1.4
エラーが出てシミュレーションできない
一度やって見ること:おかしいと思ったらまずコマンド上で clear と打って変数を全部クリアして m-file を読み
込み直してシミュレーションし直してください。それでも駄目な場合について、積分器のエラーが出てシミュレー
ションできない場合はモデルの+-やパラメータがあってない可能性が高いです。一度見直しましょう。
1.5
図の保存の仕方がわからない
プロットした図は「ファイル」の「名前を付けて保存」から「ファイルの種類」を bmp や jpg などの画像形式
を選択して保存すると Word などに貼り付けることができます。tex を使う人は eps 形式でいいでしょう。モデル
の図の保存はモデルの画面を開いた状態で「Alt」+「PrintScreen」で画面をコピー, もしくは, Snipping Tool で
画像を切り取りペイントなどに貼りつけて画像を保存してください。
3
課題について
2
評価は先生曰く絶対評価ではなく、相対評価で見るそうです。ですのでできるところまでやって下さい。
2.1
2.1.1
課題 2
ナイキストプロット
これは教科書の 59 ページにある Fig. 48 を元にして開ループの伝達関数を手計算で求めましょう。プロットの
仕方は以前の課題で行ったはずです。安定性の判別方については自分で調べて下さい。またプロットした時の図が
見にくい場合、図の上で右クリック→「ズーム オン (-1,0)」で拡大しましょう。
2.2
課題 3
Fig. 7 は Simulink モデルの作成例です。教科書に合わせているので、あまり綺麗ではないかもしれません。気
になる人は修正してもいいでしょう。
Fig.7: 状態フィードバック制御 Simulink モデル作成例
2.2.1
フィードバックゲイン選定について
教科書 p.61 のアルゴリズムからゲインを求めると、


 
K1
LM {λ1 λ2 λ3 + Kx L(λ1 + λ2 + λ3 )}/Ki


 
x
 K2  =  −LM (λ1 λ2 + λ2 λ3 + λ3 λ1 + K
M )/Ki 
K3
(1)
−R − L(λ1 + λ2 + λ3 )
となります。例えば、m-file 上で以下のように追加するとよいでしょう。極は左半平面になるように実部は負にし
ましょう。
lambda1=-100;
lambda2=-150;
lambda3=-180;
K1=(L*M*lambda1*lambda2*lambda3+Kx*L*(lambda1+lambda2+lambda3))/Ki;
K2=-L*M/Ki*((lambda1*lambda2+lambda2*lambda3+lambda3*lambda1)+Kx/M);
K3=-(L*(lambda1+lambda2+lambda3)+R);
2.2.2
伝達関数について
(64) の状態空間表現を元にして伝達関数を計算しましょう。出力は y(t) = x(t) となるため、行列 C は [1 0 0]
となります。
4
2.2.3
極配置について
極配置図を描くコマンドは pzmap でできます。
2.2.4
積分器を含む状態フィードバック制御
Fig. 8 は Simulink モデルの作成例です。m-file には K4 というゲインの設定を追加します。
Fig.8: 積分器を含む状態フィードバック制御 Simulink モデル作成例
5