質問は非常に単純で、伝達関数を実装する場所と方法がわかりません。
私が古典的なシステムを持っているとしましょう
ここで、P は zita=0.7、F=1 で 2 次の伝達関数を持ち、C はプロセス レギュレータです。
C または C++ で ATMega128P のようなコントローラーにこのレギュレーターを実装したいと考えています。
プロセスの伝達関数は実験的方法によって特定され、調整器はプロセスの伝達関数によって異なる場合があります。
どこから始めればよいですか?
質問は非常に単純で、伝達関数を実装する場所と方法がわかりません。
私が古典的なシステムを持っているとしましょう
ここで、P は zita=0.7、F=1 で 2 次の伝達関数を持ち、C はプロセス レギュレータです。
C または C++ で ATMega128P のようなコントローラーにこのレギュレーターを実装したいと考えています。
プロセスの伝達関数は実験的方法によって特定され、調整器はプロセスの伝達関数によって異なる場合があります。
どこから始めればよいですか?
伝達関数が連続時間 (ラプラス) の場合は、離散化方法 (前方差分、後方差分、台形) のいずれかを使用して、離散時間 (Z 変換) に変換する必要があります。
離散伝達関数を取得したら、逆 Z 変換を適用して、時間領域でシステムの方程式を取得する必要があります。次に、離散化ステップを決定する必要があります。
このデータがあれば、このシステムをマイクロコントローラーに非常に簡単に実装できます。実際には、ADC 入力を介してセンサーを定期的に読み取り、その入力と前の入力 (y[k] , y[k-1], ...) の値は、参照 (r[k]) に従って制御値 (u[k]) を生成します。
ADC (y[k]) は、離散化ステップに従って起動するように設定されたタイマー割り込みを使用して読み取ることができます。値が読み取られると、u[k] を計算し、それに応じて実行要素を設定できます。
実装については、C++ をお勧めします。この場合、C++ はおそらく少しやり過ぎになるからです (このようなシステムを実装するほとんどの組み込みシステムは、ANSI C または MISRA C を使用してプログラムされています。特に自動車の場合)。
C にジャンプする前に、まず計算が正しく行われたかどうかを確認し、Simulink (MATLAB) または Scilab でシステムをシミュレートしました。
実際の組み込みシステムを調整するには、Ziegler-Nichols メソッドについて読むことをお勧めします。
http://en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
離散化に関する情報:
http://www-verimag.imag.fr/~tdang/DocumentsCours/Discretization.pdf