目次
1.アルゴリズムシミュレーション効果
これは PI コントローラーであり、PID コントローラーではありません。
vivado2019.2 のシミュレーション結果は次のとおりです。
2. アルゴリズムには、理論的知識の概要が含まれます
PID 調節計(比例・積分・微分調節計)は、比例ユニット P、積分ユニット I、微分ユニット D から構成されます。Kp、Ki、Kd の 3 つのパラメータを設定します。PID コントローラーは、基本的な線形および動的特性が時間とともに変化しないシステムに主に適しています。
PID コントローラーのブロック図 PID コントローラーは、産業用制御アプリケーションで一般的なフィードバック ループ コンポーネントです。コントローラーは、収集したデータを基準値と比較し、その差を使用して、システムのデータを基準値にするか、基準値にとどめることを目的とした新しい入力値を計算します。他の単純な制御操作とは異なり、PID コントローラーは、履歴データと差の発生率に従って入力値を調整できるため、システムをより正確で安定させることができます。他の制御方法ではシステムの安定性エラーやプロセスの繰り返しが発生する一方で、PID フィードバック ループがシステムを安定に保つことができることは、数学的に証明できます。
比例・積分・微分制御則を持つコントローラーは PID コントローラーと呼ばれます。この組み合わせには、3 つの基本法則のそれぞれの特性があり、その運動方程式は次のとおりです。
PID コントローラーを直列補正に使用すると、システムのタイプが 1 レベル改善されるだけでなく、2 つの負の実ゼロ点も提供されることがわかります。PI コントローラーと比較して、PID コントローラーには、システムの定常状態のパフォーマンスを向上させるという利点があるだけでなく、負の実ゼロ点も提供されるため、システムの動的パフォーマンスを向上させる上でより大きな利点があります。そのため、産業用プロセス制御システムでは、PID コントローラーが広く使用されています。PID コントローラの各部のパラメータの選択は、システムのオンサイト デバッグで最終的に決定されます。通常、積分部分はシステム周波数特性の低周波数帯域で発生し、システムの定常状態性能を改善し、微分部分はシステム周波数特性の中間周波数帯域で発生し、システムの動的性能を改善します。システム。
適応 PID 制御とは、適応制御の考え方と従来の PID 制御器を組み合わせた適応 PID 制御または自己修正 PID 制御技術を指し、総称して適応 PID 制御と呼びます。
最も一般的に使用される適応制御アルゴリズムは、最小分散適応 PID 制御、極構成適応 PID 制御、ゼロ極キャンセル適応 PID 制御です。
最小分散適応 PID 制御の基本的な考え方は、各サンプリング周期で、システム品質評価のパフォーマンス指標としてシステム偏差の最小分散を最小化し、最小二乗アルゴリズムを導入して未知のプロセス パラメータを推定することです。オンライン識別用. 各サンプリング時点での適応 PID 制御量 u(t) を計算します。
極配置適応 PID 制御の基本的な考え方は、次のとおりです。特定の最適化戦略に従って目的の閉ループ極分布を選択し、各サンプリング期間で、加重再帰最小二乗法によってプロセス パラメーターを明示的に推定し、取得する PID 制御則 未知のパラメーター q0、q1、および q2 を含むシステムの閉ループ方程式を取得し、システム特性多項式と期待される特性多項式の間の恒等関係を使用して、PID 制御パラメーターをオンラインで取得し、コントローラー出力を取得します。 u(t) ごとに。
零極相殺適応 PID 制御の基本的な考え方は次のとおりです。制御されたプロセスのパラメーターが不明な場合、各サンプリング周期で、加重再帰最小二乗アルゴリズムを使用してプロセス モデルを明示的に識別し、伝達関数でPID コントローラの制御プロセスの極と零点は、制御対象プロセスの伝達関数の極と零点の一部を打ち消し、各瞬間の PID 制御量を計算し、閉ループ システムが適切に動作するようにします。作業工程。
3.Verilogコアプログラム
.............................................................
input i_clk;
input i_rst;
input signed[11:0]i_din;
output signed[23:0]o_pd;
output signed[11:0]Kp_adptive;
output signed[11:0]Ki_adptive;
reg signed[11:0]o_error;
.............................................................
always @(posedge i_clk or posedge i_rst)
begin
if(i_rst)
begin
o_error <= 12'd0;
end
else begin
o_error <= i_din-o_pd[23:12];
end
end
//KP
reg signed[23:0]dat1;
reg signed[23:0]dat1d;
always @(posedge i_clk or posedge i_rst)
begin
if(i_rst)
begin
dat1 <= 24'd0;
dat1d<= 24'd0;
end
else begin
dat1 <= o_error*Kp;
dat1d<= dat1;
end
end
//KI
//KI
reg signed[23:0]dat3;
reg signed[23:0]dat3d;
always @(posedge i_clk or posedge i_rst)
begin
if(i_rst)
begin
dat3 <= 24'd0;
dat3d <= 24'd0;
end
else begin
dat3d <= o_error*Ki + dat3;
if(dat3d[23:22] == 2'b01 | dat3d[23:22] == 2'b11)
dat3d <= dat3d;
dat3 <= dat3d;
end
end
assign o_pd = dat1d + dat3d;
endmodule
A981
4. 完全なアルゴリズム コード ファイル
Ⅴ