5.3.2 サーボ制御


 Simulink を利用したサーボ制御のシミュレーションを行うためのファイル

 (1) 制御対象の状態空間表現の定義と極配置法によるコントローラ設計
    ...... M ファイル servo.m (p.113)
clear
format compact

A = [ 0  1  0  0
     -4 -2  4  2
      0  0  0  1
      2  1 -2 -1 ];
B = [ 0
      2
      0
      0 ];
C = [ 0  0  1  0 ];

Vc = ctrb(A,B)
rank(Vc)

M0 = [ A  B
       C  0 ]
det(M0)

Ae = [ A  zeros(4,1)
      -C  0          ];
Be = [ B
       0 ];

p = [ -1+3j
      -1-3j
      -2+j
      -2-j
      -2   ];
Ke = - acker(Ae,Be,p);
K = Ke(1:4)
G = Ke(5)

eig(Ae + Be*Ke)
 (2) サーボ制御のシミュレーション ...... Simulink モデル (p.114)
simulink_servo_R2010b.mdl(R2010b 以降のバージョン用)
simulink_servo_R2007b.mdl(R2007b 以降のバージョン用)
simulink_servo_R13SP1.mdl(R13SP1 以降のバージョン用)
 (3) シミュレーション結果の表示 ...... M ファイル plot_data_cart.m (p.111)
plot(t,y); 
grid;
xlabel('t [s]');
ylabel('position (cart2) [m]');

 (3') シミュレーション結果の表示(グラフのカスタマイズ) ...... M ファイル plot_data_cart2.m (本には記載していない)
figure(1);
plot(t,y,'r','linewidth',2); 
grid;

% --- グラフのカスタマイズ --------------------------------
xlim([0 10]);
ylim([0 1.5]);

set(gca,'xtick',[0:1:10]);
set(gca,'ytick',[0:0.25:1.5]);

set(gca,'fontname','times','fontsize',20);

xlabel('{\it{t}} [s]','fontname','times','fontsize',22);
ylabel('position (cart2) [m]','fontname','times','fontsize',22);

set(gcf,'position',[50 50 900 420])


 実行結果

 (1) 制御対象の状態空間表現の定義,極配置法によるコントローラ設計と初期状態 x(0) = 0 の設定
>> servo
Vc =
     0     2    -4     4
     2    -4     4    12
     0     0     2    -2
     0     2    -2    -6
ans =
     4
M0 =
     0     1     0     0     0
    -4    -2     4     2     2
     0     0     0     1     0
     2     1    -2    -1     0
     0     0     1     0     0
ans =
     4
K =
   -3.0000   -2.5000  -22.0000   -9.0000
G =
    25
ans =
  -1.0000 + 3.0000i
  -1.0000 - 3.0000i
  -2.0000 + 1.0000i
  -2.0000 - 1.0000i
  -2.0000    
>> x0 = zeros(4,1);
 (2) シミュレーション開始

    もしくは
    もしくは
>> sim('simulink_servo_R2010b')
 (3) シミュレーション結果の表示
>> plot_data_cart

 (3') シミュレーション結果の表示(グラフのカスタマイズ)
>> plot_data_cart2