現代制御理論コース実験1:線形系の状態空間解析と運動解

ここに画像の説明を挿入

1. 実験の目的

ここに画像の説明を挿入

線形システムの状態空間の標準形式、ソリューション、およびモデル変換をマスターします。

2.実験装置とソフトウェア:

MATLAB 数値解析ソフトウェア

3. 実験原理:

3.1. 行列固有値と固有ベクトルを求めるコマンド形式

[VJ]=eig(A)
cv= eig(A)
説明: V 固有ベクトル、J はジョルダン型、cv は固有値列ベクトル

3.2. 動きを求める方法

(1) ラプラス逆変換の利用----連続/離散線形システムに適しています

ilaplace/iztrans を使用して、伝達関数の逆関数を見つけます。この方法は、通常、ゼロ入力の場合の応答を見つけるためのものです。

(2) 連続 (離散) 状態遷移行列を使用して、システムの解析解を表します - 線形定常システムに適しています

連続線形定常システムには、次のものがあります。
ここに画像の説明を挿入

明らかに、システム状態遷移行列を計算するには、定義法、ラプラス変換法、シルベスター法など、多くの方法があります。
Matlab では、パデ近似の方法が採用されており、呼び出し形式は phi=expm( ) です。
離散線形不変システムの場合:
ここに画像の説明を挿入

3.3. 状態方程式の数値積分法 - 連続線形および非線形システムに適しています

さまざまな定常/時変および線形/非線形システムは、直接数値積分によって簡単に処理できます。数値積分法は数多くありますが、その中でもより効果的なのが予測補正数値積分法+適応ステップサイズ調整アルゴリズムの一種です。Matlab/Simulink に含まれるさまざまな種類の ODE (常微分方程式) を解くアルゴリズム (通常はルンゲ クッタ アルゴリズム) に効果的で適用可能な、一般的に使用される関数形式は次のとおりです。

[t,x] = ode45(odefun,[ti,tf],x0,options)----采用四阶、五阶Runge-Kutta算法
[t,x] = ode23(odefun,[ti,tf],x0,options)----采用二阶、三阶Runge-Kutta算法

解説: a. この2つの関数は非剛体常微分方程式を解くための関数で、剛体常微分方程式を解くにはいくつかの方法がありますode15s ode23s ode23t ode23tb
b. パラメータ オプションは積分の誤差設定であり、値は相対誤差 'reltol' と絶対誤差 'abstol' です; [ti,tf] は解くための時間範囲です; x0 は初期値ベクトルです; [t,x] は解です。
c. ルンゲ クッタ アルゴリズムは、最も一般的に使用される数値法です。関連情報を参照し、アルゴリズムの原理と計算形式をお読みください。
以下に例を示します。
ここに画像の説明を挿入

3.4. Cotrol ToolBox の離散化ソリューション機能の使用 - LTI システムに適しています

a. step()/impulse() 関数を使用して、ステップ入力/インパルス入力時のシステムの状態応答を見つけます。

システム G が連続の場合:
[y,t,x]=step/impulse(G) を呼び出すと、連続システム G のサンプリング時間範囲とサンプリング周期が自動的に選択されます; [y,t,
x]=step/impulse を呼び出すと、 (G,ti:Ts:tf) 連続システム G のサンプリング時間範囲とサンプリング周期は、ユーザーによって定義されます。
システム G が離散の場合:
[y,t,x]=step/impulse(G) を呼び出すと、離散システム G によって与えられたサンプリング周期に従って計算されます; [y,t,x]=
step/impulse( G , ti:Ts:tf), Ts は、離散システム G によって与えられるサンプリング周期と一致する必要があります。

b. lsim() 関数を使用して、任意の入力に対するシステムの状態応答を取得します。

呼び出し形式: [y,x,t]=lsim(G,u,ti:Ts:tf,x0) (連続系と離散系の状況に注意)

c. initial() 関数はゼロ入力応答に使用できます

呼び出し形式: [y,x,t]=initial(G,x0) (連続系と離散系の状況に注意)

3.5. Simulink 環境を使用して応答を取得する----すべてのシステムで応答を取得するのに適しています

Simulink を使用して線形または非線形システムの応答を見つける

呼び出し形式は次​​のとおりです。 [t,x,y]=sim('XX.mdl', ti:Ts:tf, options,u)

4. 実験内容

既知の線形システム
ここに画像の説明を挿入

実験手順は以下の通り

clear
A = [ -21 19 -20; 19 -21 20; 40 -40 -40]; 
B = [ 0; 1; 2];
C = [ 1 0 2];
D = [0];

stateSpace = ss(A, B, C, D);    % 状态空间表达式

% 阶跃响应
[stepOutResponse, stepTime, stepResponse] = step(stateSpace);

% 冲激响应
[impulseOutResponse, impulseTime, impulseResponse] = impulse(stateSpace);

figure(1);
subplot(2, 1, 1);
plot(stepTime, stepResponse);
title('阶跃响应状态响应曲线');
grid on;
 
subplot(2, 1, 2);
plot(stepTime, stepOutResponse);
title('阶跃响应输出响应曲线');
grid on;

figure(2);
subplot(2, 1, 1);
plot(impulseTime, impulseResponse);
title('冲激响应状态响应曲线');
grid on;
 
subplot(2, 1, 2);
plot(impulseTime, impulseOutResponse);
title('冲激响应输出响应曲线');
grid on;

t =[0: 0.01: 5];
u = (1 + exp(-t) .* cos(5 * t)).*(t<3) + 1 * (t>= 3);
t = t'; u = u';
ut = [t, u];
[t1, x, y] = sim('shiyan.mdl', t, [], ut);

figure(3);
subplot(2, 1, 1);
plot(t1, x);
title('状态响应曲线');
grid on;

subplot(2, 1, 2);
plot(t1, y);
title('输出响应曲线');
grid on;

 % 传递函数
[num, den] = ss2tf(A, B, C, D, 1); 
transferFunc = tf(num, den);

figure(4);
rlocus(transferFunc);
title('K增益负反馈闭环根轨迹图');
grid on;

figure(5);
bode(transferFunc);
title('系统的bode图'); grid on;

figure(6);
nyquist(transferFunc);
title('系统的Nyquist图');
grid on;
  • Matlab を使用してゼロ状態でのステップ応答 (状態と出力を含む) を計算し、2 つのグラフを生成します: 最初のグラフは各状態の応答曲線を描き、それらをマークします; 2 番目のグラフは出力応答曲線を描きます。
    ここに画像の説明を挿入

  • Matlab を使用してゼロ状態でのインパルス応答 (状態と出力を含む) を計算し、2 つのグラフを生成します: 最初のグラフは各状態の応答曲線を描き、それらをマークします; 2 番目のグラフは出力応答曲線を描きます。
    ここに画像の説明を挿入

制御入力が

ここに画像の説明を挿入

初期状態は

ここに画像の説明を挿入

システムの応答を求める、要求する

  • a. Simulink でモデルを描画して応答を見つけ、2 つのグラフを生成します: 最初のグラフは各状態の応答曲線を描画してラベルを付け、2 番目のグラフは出力応答曲線を描画します。
    ここに画像の説明を挿入

  • システム伝達関数
    ここに画像の説明を挿入

  • K ゲインの負のフィードバックを使用して閉ループの根軌跡図を描く
    ここに画像の説明を挿入

根軌跡から、最初のものはソース ポイントに向かう傾向があり、2 つ目は 20 ~ 60 の間になる傾向があり、3 つ目は無限に向かう傾向があります。

Matlab でボード線図とナイキスト線図を描く
ここに画像の説明を挿入
ここに画像の説明を挿入

ボード線図では、クロスオーバー周波数がコーナー周波数の後にあることがわかります。そのため、システム応答は低周波数帯域で変化します。位相周波数については、システムの位相周波数特性はすべて負です。ナイキスト線図によると、システムは安定しています。

5. 実験のまとめ

ここに画像の説明を挿入

5.1. 実験原理

線形定常連続システムの状態空間モデルは、Matlab で解くことができます。

  • ステップ応答関数 step() を使用して、伝達関数モデルの出力応答、または状態空間モデルの状態応答と出力応答を、単位ステップ入力とゼロの初期状態 (条件) で計算できます。
  • インパルス励起下のシミュレーション関数 impact() を使用して、インパルス刺激入力下の伝達関数モデルの出力応答、または状態空間モデルの状態応答と出力応答を計算できます。
  • 任意の入力励起下でのシミュレーション関数 lsim() を使用して、特定の入力信号シーケンス (入力信号関数のサンプル値) の下で伝達関数モデルの出力応答を計算できます。

5.2. 実験のまとめ

この実験を通して、

  • MATLAB での線形システムの状態空間式と伝達関数の使用をマスターしました。
  • simulink で状態方程式のシステム シミュレーション モデルを構築する方法を理解する。
  • そして、さまざまな応答の後、状態空間内の状態変数の状態を見つける方法、状態空間システムのシミュレーション モデルを確立する方法など。
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_47419053/article/details/127337637