-2

私が持っているこのpidコードを実装します。主に、関数に渡す必要がある情報です。渡す変数は 6 つありますが、何を入力すればよいかわかりません。少し背景を説明すると、私は自家醸造所を自動化しています。それはすべて稼働していますが、RIM の温度制御はいたるところにあります。RIM とは何かに慣れていない方のために説明すると、これは浸されている穀物が非常に一定の温度に保たれるようにする方法です。これは、ポンプと加熱要素を使用して浸漬容器の底から液体を加熱し、加熱要素を通過させ、必要に応じて液体を加熱することによって行われます。現在実行しているコードは馬鹿げているので、PID などのよりインテリジェントなものに置き換える必要があります。

わかりましたので、コードを持っています。それを使用する方法です! vb.net を使用して、スタンドアロンの Windows フォーム プロジェクトで起動して実行したいと考えています。アプリケーションに合うように PID 値をいじる必要があることはわかっていますが、何を入力すればよいのでしょうか?

助けてくれてありがとう!

Public Function PID_output(ByVal process As Double, ByVal setpoint As Double, ByVal Gain As Double, _
                        ByVal Integ As Double, ByVal deriv As Double, ByVal deltaT As Double)

 Dim Er As Double
 Dim Derivative As Double
 Dim Proportional As Double
 Static Olderror As Double
 Static Cont As Double
 Static Integral As Double
 Static Limiter_Switch As Double

 Limiter_Switch = 1

 Er = setpoint - process

 If ((Cont >= 1 And Er > 0) Or (Cont <= 0 And Er < 0) Or (Integ >= 9999)) Then
     Limiter_Switch = 0
 Else
     Limiter_Switch = 1
 End If

 Integral = Integral + Gain / Integ * Er * deltaT * Limiter_Switch

 Derivative = Gain * deriv * (Er - Olderror) / deltaT

 Proportional = Gain * Er

 Cont = Proportional + Integral + Derivative
 Olderror = Er

 If (Cont > 1) Then
     Cont = 1
 End If
 If (Cont < 0) Then
     Cont = 0
 End If

Return (Cont)

End Function 
4

1 に答える 1

0

加熱プロセスに PID を使用することは、典型的な PID アプリケーションよりも少しトリッキーです。その理由は; 加熱する必要があるときは、おそらくヒーターに通電し始めます。そのヒーターの電力は、システムにどれだけのエネルギーを送り込むことができるか、そしてどれだけ速く加熱できるかの鍵となります. ただし、冷却に関しては、通常、冷却は環境の性質によって達成されます。私が言おうとしているのは、システムは対称的ではないということです。

コントロールの「方向」に応じて、異なるコントロール セットを使用することをお勧めします。プロセスが設定値よりも低い場合は、コントローラー 1 を使用します。ただし、システムが設定値よりも高い場合は、コントローラー 2 を使用します。

システム 1 については、D タームを使用することをお勧めします。なぜなら、D タームは、コントローラーが進行中に熱を蓄積する速さの一種のリミッターだからです。心配なのは; 多くの熱制御システムには、かなりの熱慣性と、フィードバックの読み取りの遅れ (遅延) があります。これにより、オーバーシュートが大きくなることがよくあります (進行状況がかなりの量で設定値に到達し、通過しています)。誇張すると、永遠に振動(変動)します:)

また、冷却効果については、環境が20度であるとします。ここで、設定値が 100 の場合、これは何かです。設定値が 1000 の場合、これはまったく異なります。これは、デルタ T が異なり (それぞれ 80 度と 980 度)、「冷却しようとする」システムの応答がデルタ T の関数になるためです。

冷却の進行は線形ではなく、指数関数的です (コンデンサが一定の抵抗で放電するように)。設定値が毎日変化しない場合は、問題ありません。ただし、そうでない場合は、設定値空間を領域に分割し、異なる設定値に対しても異なるコントローラー パラメーターを使用することをお勧めします。

どこから始めればよいか: さまざまな PID チューニング ルールの親指があります。チーグラー・ニコルス法を見てください。しかし、基本的には、進行を冷やしてから(初期状態)、加熱パワーをフルスロットルにして、時間と熱のグラフを記録します。このグラフはステップ応答と呼ばれ、熱慣性とシステム ラグを推定します。これにより、Ziegler Nichols 法をチェックするときに、典型的な開始 PID 値がわかります。

于 2013-10-27T14:37:34.877 に答える