Simulink Control Design

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

搬送モデルの線形化

この例では、SimMechanics モデルの線形化と共に、操作点の検索とスナップショット機能の使用について説明します。(SimMechanics が必要)。

操作条件の検索

モデルを開きます。

open_system('scdmechconveyor');

定常状態の操作点は、操作仕様オブジェクトを使用して検索できます。このオブジェクトは、シミュレートされた操作点を使用して初期化されたものです。定常状態の操作点を検索する場合、SimMechanics マシンの解析タイプを平衡化モードに設定しなければなりません。この機能の詳細は、SimMechanics ドキュメンテーションを参照してください。

set_param('scdmechconveyor/Mechanical Environment','AnalysisType','Trimming')
opspec = operspec('scdmechconveyor');

SimMechanics モデルでは、操作条件の検索を定常状態条件に収束させるには、非線形最小二乗アルゴリズムを使用するとより迅速になる場合もあります。このアルゴリズムは、Optimization Toolbox のライセンスがある場合に使用できます。検索の反復レポートは、LINEARIZEOPTIONS コマンドを使用して表示することもできます。

opt = findopOptions('OptimizerType','lsqnonlin','DisplayReport','none');
opt.OptimizationOptions.MaxFunEvals = 2000;

SimMechanics モデルの代数的な制約が満たされていることを確認するには、平衡出力端子をゼロに指定しなければなりません。

opspec.Outputs.y = zeros(8,1);
opspec.Outputs.Known = ones(8,1);

定常状態の操作点は、FINDOP コマンドを使用して検索できます。

[op,opreport] = findop('scdmechconveyor',opspec,opt);

最終レポートを表示します。

opreport
 Operating Report for the Model scdmechconveyor.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) scdmechconveyor/Position Controller/H_inf Controller
      x:         -1.08      dx:      1.42e-14 (0)
      x:     -7.64e-12      dx:     -2.12e-12 (0)
      x:         0.199      dx:     -1.79e-13 (0)
      x:         0.199      dx:     -1.29e-14 (0)
      x:        0.0743      dx:      1.42e-13 (0)
(2.) scdmechconveyor/Position Controller/Loopshaping Weight
      x:      2.59e-07      dx:     -1.54e-14 (0)
      x:      2.59e-07      dx:     -1.24e-15 (0)
      x:      9.66e-08      dx:     -3.85e-14 (0)
(3.) scdmechconveyor/Position Controller/Prefilter
      x:        0.0103      dx:      2.44e-13 (0)
(4.) scdmechconveyor/Position Controller/inv(W)
      x:     -2.59e-07      dx:      1.54e-14 (0)
      x:     -2.59e-07      dx:      1.24e-15 (0)
      x:     -9.66e-08      dx:      1.07e-13 (0)
(5.) Prismatic.P1.Position
      x:         0.103      dx:     -1.31e-20 (0)
(6.) Prismatic.P1.Velocity
      x:     -1.31e-20      dx:      2.94e-13 (0)
(7.) Revolute.R1.Position
      x:        -0.881      dx:      2.47e-22 (0)
(8.) Revolute.R1.Velocity
      x:      2.47e-22      dx:     -2.59e-12 (0)
(9.) Revolute1.R1.Position
      x:          0.83      dx:      1.31e-20 (0)
(10.) Revolute1.R1.Velocity
      x:      1.31e-20      dx:      2.37e-12 (0)
(11.) Revolute3.R1.Position
      x:        -0.172      dx:      4.45e-20 (0)
(12.) Revolute3.R1.Velocity
      x:      4.45e-20      dx:     -4.71e-13 (0)
(13.) Revolute5.R1.Position
      x:       0.00175      dx:     -2.01e-21 (0)
(14.) Revolute5.R1.Velocity
      x:     -2.01e-21      dx:     -6.81e-14 (0)

Inputs: None 
----------

Outputs: 
----------
(1.) scdmechconveyor/MSB Trimming Out
      y:     -2.31e-13    (0)
      y:      1.41e-13    (0)
      y:     -9.12e-13    (0)
      y:      1.61e-13    (0)
      y:     -1.31e-20    (0)
      y:      2.83e-21    (0)
      y:      6.86e-21    (0)
      y:      -8.3e-23    (0)

モデルの線形化を完了する前に、SimMechanics モデルの解析タイプを元に戻す必要があります。

set_param('scdmechconveyor/Mechanical Environment','AnalysisType','Forward dynamics')

モデルの線形化

このモデルでは、搬送位置とトルク指令間の開ループ プラント モデルを、次の入力と出力を使用して検索できます。

io(1) = linio('scdmechconveyor/Joint Sensor',1,'openoutput');
io(2) = linio('scdmechconveyor/Position Controller',1,'input');

モデルを線形化します。

sys = linearize('scdmechconveyor',op,io);

線形化されたモデルと対応するボード線図を表示します。

sysm = zpk(sys)
bodemag(sysm)
sysm =
 
  From input "Torque" to output "Joint Sensor":
        -2.0818
  -------------------
  (s-3.481) (s+3.481)
 
Continuous-time zero/pole/gain model.

モデルを閉じます。

bdclose('scdmechconveyor')