Matlab_Simulink:I-PD制御プログラム(無料公開)

実現したいこと

  • Simulinkとmファイルを用いたI-PD制御(比例微分先行型PID制御)シミュレータプログラムの構築
  • SimulinkのPIDブロックを用いずに実現
    - 各PIDゲインの特性を理解するためのプログラム
    - 不完全微分が含まれない形式のPID制御
  • PID制御,PI-D制御とI-PD制御の比較(入力が最も穏やかなのか)

Matlabのバージョン

Matlab2021a
※ダウンロード形式として過去のバージョンも用意

必要なtoolbox

ダウンロードURL

【ダウンロードリンク】

I-PD_Control - Google ドライブ 

※ご利用中のMatlabバージョンのフォルダをダウンロードしてください。
 例:2021aバージョンであれば,上記リンクの「2021a」を選択
※上記プログラムの利用で生じたトラブルは一切の責任を負いかねます

フォルダ構成

上記ダウンロードし展開。
(下記のようなフォルダ構成になっていることを確認)

実行方法

「Main_I_PD.m」を実行

Simulinkファイル(I_PD.slx)

mファイルソースコード(Main_I_PD.m)

%% 初期化
clc % コマンドウィンドウの初期化
clear % ワークスペースの初期化
close all % グラフを全部閉じる

%% 変数宣言
% ===== PIDゲイン =====
Kp = 1; % Pゲイン
Ki = 1; % Iゲイン
Kd = 1; % Dゲイン

% ===== 制御対象 =====
K = 1;
A = 1;
B = 1;
C = 1;

% ===== 目標値 =====
r_val = 10; % ステップ状の目標値

% ===== Simulink関係 =====
N_File = 'I_PD.slx'; % simulinkファイル名
FinalTime = 30; % シミュレーション終了時刻[s]
SamplingTime = 0.1; % サンプリング時間[s]
%% Simulinkの実行
open(N_File); % Simulinkを起動
sim(N_File); % Simulinkの実行

%% グラフ化
% ===== Simulinkデータ格納 =====
t = ScopeData.time; % 時刻情報
y = ScopeData.signals(1).values(:, 1); % 出力
r = ScopeData.signals(1).values(:, 2); % 目標値
u = ScopeData.signals(2).values(:, 1); % 入力

% ===== グラフ描画 =====
% ----- y -----
figure;
subplot(211);
plot(t,y);
hold on;
plot(t,r,'--');
grid on;
xlabel('$$ t {\rm [s]} $$', 'interpreter', 'latex');
ylabel('$$ y(t) $$', 'interpreter', 'latex');
legend('$$ y(t) $$', '$$ r(t) $$', 'interpreter', 'latex');
% ----- u -----
subplot(212);
plot(t,u);
hold on;
grid on;
xlabel('$ t {\rm [s]} $', 'interpreter', 'latex');
ylabel('$ u(t) $', 'interpreter', 'latex');

実行結果

まとめ・考察

PID制御則,PI-D制御則,I-PD制御則は下記の通り。

【PID制御則】
 u(t) = K_P・e(t) + K_I・\int_{0}^{t} e(\tau)d\tau + K_D・\dfrac{de(t)}{dt}

【PI-D制御則】
 u(t) = K_P・e(t) + K_I・\int_{0}^{t} e(\tau)d\tau - K_D・\dfrac{dy(t)}{dt}

【I-PD制御則】
 u(t) = - K_P・y(t) + K_I・\int_{0}^{t} e(\tau)d\tau - K_D・\dfrac{dy(t)}{dt}

上記の通り,PID制御則と比較し異なるのは下記の2点である。

  • 右辺3項:符号
  • 右辺3項: e(t) or  y(t)微分
  • 右辺1項: e(t) or  y(t) 

 e(t) は目標値変動が生じた場合に急激に変化する。
一方, y(t)は目標値変動に依存しない。

したがって,I-PD制御は,PID制御・PI-D制御と比較し,偏差変動による比例ゲインの入力への影響が小さくなり,入力が滑らかになる。
※下記の関連記事と比較することを推奨

併せて確認推奨の過去記事

forfree.hatenablog.jp

forfree.hatenablog.jp

forfree.hatenablog.jp