ドキュメンテーション

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

搬送モデルの線形化

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

操作条件の探索

モデルを開きます。

open_system('scdmechconveyor');

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

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

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

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

Simscape Multibody モデルの代数的な制約を確実に満たすには、平衡出力端子をゼロに指定しなければなりません。

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.63e-12      dx:     -3.35e-12 (0)
      x:         0.199      dx:     -2.57e-13 (0)
      x:         0.199      dx:     -1.86e-14 (0)
      x:        0.0743      dx:      1.42e-13 (0)
(2.) scdmechconveyor/Position Controller/Loopshaping Weight
      x:      2.59e-07      dx:     -1.04e-13 (0)
      x:      2.59e-07      dx:     -1.01e-14 (0)
      x:      9.66e-08      dx:     -3.89e-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.04e-13 (0)
      x:     -2.59e-07      dx:      1.01e-14 (0)
      x:     -9.66e-08      dx:      1.07e-13 (0)
(5.) Prismatic.P1.Position
      x:         0.103      dx:      7.53e-22 (0)
(6.) Prismatic.P1.Velocity
      x:      7.53e-22      dx:      8.02e-13 (0)
(7.) Revolute.R1.Position
      x:        -0.881      dx:     -2.28e-21 (0)
(8.) Revolute.R1.Velocity
      x:     -2.28e-21      dx:     -6.63e-12 (0)
(9.) Revolute1.R1.Position
      x:          0.83      dx:       4.7e-21 (0)
(10.) Revolute1.R1.Velocity
      x:       4.7e-21      dx:      6.06e-12 (0)
(11.) Revolute3.R1.Position
      x:        -0.172      dx:      -2.3e-21 (0)
(12.) Revolute3.R1.Velocity
      x:      -2.3e-21      dx:     -1.28e-12 (0)
(13.) Revolute5.R1.Position
      x:       0.00175      dx:     -7.28e-22 (0)
(14.) Revolute5.R1.Velocity
      x:     -7.28e-22      dx:     -1.74e-13 (0)

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

Outputs: 
----------
(1.) scdmechconveyor/MSB Trimming Out
      y:     -2.31e-13    (0)
      y:      1.41e-13    (0)
      y:     -9.13e-13    (0)
      y:      1.61e-13    (0)
      y:      7.74e-22    (0)
      y:      1.38e-22    (0)
      y:     -4.07e-22    (0)
      y:     -9.45e-22    (0)

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

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')
この情報は役に立ちましたか?