Main Content

コマンド ラインでの調整のために制御システム調整器から MATLAB コードを生成

制御システムをコマンド ラインで調整するために制御システム調整器で MATLAB® スクリプトを生成できます。生成されたスクリプトは、対話的に得た結果をプログラムで再現する際に使用すると便利です。また、生成された MATLAB スクリプトを使用すると、調整目標、システム パラメーターまたはモデル条件 (操作点など) を変更した複数の調整操作をプログラムから実行できます。

ヒント

制御システム調整器セッションを制御システム調整器内で再現するために保存することもできます。そのためには、[Control System] タブで [セッションの保存] をクリックします。

制御システム調整器で MATLAB スクリプトを生成するには、[調整] タブで [調整] をクリックします。[現在値を使用するスクリプト] を選択します。

MATLAB エディターに生成されたスクリプトが表示されます。このスクリプトによって、制御システム調整器の現在の調整構成がプログラムで再現されます。

たとえば、例制御システム調整器を使用したリニア電動アクチュエータの制御のすべての手順を完了した後に MATLAB スクリプトを生成するとします。生成されたスクリプトは、調整に使用される操作点の計算、調整するブロックの指定、調整目標の作成およびその他の操作を実行して、結果をコマンド ラインで再現します。

スクリプトの最初のセクションでは、Simulink® モデル (この例の rct_linact) に対する slTuner (Simulink Control Design) インターフェイスが作成されます。slTuner インターフェイスには、モデルの線形化と調整するブロックのパラメーター化が格納されます。

%% Create system data with slTuner interface
TunedBlocks = {'rct_linact/Current Controller/Current PID'; ...
               'rct_linact/Speed Controller/Speed PID'};
AnalysisPoints = {'rct_linact/Speed Demand (rpm)/1'; ...
                  'rct_linact/Current Sensor/1'; ...
                  'rct_linact/Hall Effect Sensor/1'; ...
                  'rct_linact/Speed Controller/Speed PID/1'; ...
                  'rct_linact/Current Controller/Current PID/1'};
OperatingPoints = 0.5;
% Specify the custom options
Options = slTunerOptions('AreParamsTunable',false);
% Create the slTuner object
CL0 = slTuner('rct_linact',TunedBlocks,AnalysisPoints,OperatingPoints,Options);

また、slTuner インターフェイスではモデルが線形化される操作点が指定され、この例の調整目標の指定に必要なすべての信号箇所が解析ポイントとしてマークされます (Simulink モデルに対する slTuner インターフェイスの作成と設定を参照)。

Simulink ではなく MATLAB でモデル化された制御システムを調整する場合、スクリプトの最初のセクションでは、制御システム調整器で指定した制御システムの genss モデルと等価なダイナミクスとパラメーター化をもつ genss モデルが作成されます。

次に、この例で指定した 3 つの調整目標が作成されます。このスクリプトは、TuningGoal オブジェクトを使用してこれらの調整目標を取得します。たとえば、TuningGoal.Tracking を使用してこの例の追従目標を取得します。

%% Create tuning goal to follow reference commands with prescribed performance
% Inputs and outputs
Inputs = {'rct_linact/Speed Demand (rpm)/1'};
Outputs = {'rct_linact/Hall Effect Sensor/1[rpm]'};
% Tuning goal specifications
ResponseTime = 0.1; % Approximately reciprocal of tracking bandwidth
DCError = 0.001; % Maximum steady-state error
PeakError = 1; % Peak error across frequency
% Create tuning goal for tracking
TR = TuningGoal.Tracking(Inputs,Outputs,ResponseTime,DCError,PeakError);
TR.Name = 'TR'; % Tuning goal name

調整目標の作成後に、制御システム調整器で設定したアルゴリズム オプションが設定されます。また、制御システム調整器での調整目標の構成に従って、調整目標が柔軟な目標または厳密な目標として指定されます (調整目標の管理を参照)。

%% Create option set for systune command
Options = systuneOptions();

%% Set soft and hard goals
SoftGoals = [ TR ; ...
              MG1 ; ...
              MG2 ];
HardGoals = [];

この例では、スクリプトの生成時にすべての目標が柔軟な目標として指定されます。したがって、HardGoals は空です。

最後に、調整目標およびオプションを使用して slTuner インターフェイスで systune (Simulink Control Design) を呼び出すことで、制御システムが調整されます。

%% Tune the parameters with soft and hard goals
[CL1,fSoft,gHard,Info] = systune(CL0,SoftGoals,HardGoals,Options);

また、viewGoal のオプションの呼び出しも含まれており、呼び出すと、調整結果の解釈と検証に役立つ調整目標がグラフィカルに表示されます。このコード行のコメントを解除してプロットを生成します。

%% View tuning results
% viewGoal([SoftGoals;HardGoals],CL1);

getIOTransfer (Simulink Control Design) などの関数の呼び出しを追加して、その他の解析プロットが生成されるようにすることができます。

関連するトピック