2009-03-23 17 views
-1

私は実現したいと思っています。私はかなり標準的なフィードバックループだと思いますが、制御理論を見てから何年も経ちました。誰かが何が起こっているのかを簡単に説明し、解決策を実装するために使うことができるリソースを指してくれることを期待していました。私がこのトピックで見たすべての情報は、通常、数学に溺れています。だからここ単純なフィードバック制御リソース/例

は私が達成しようとしているものです:

  • 私は、電子回路の電流を制御したい、私はいつもそれが0.75Aを描きたいと言います。
  • もちろん、電流は回路の他の部分が何をしているかによって時間の経過とともに変化します。しかし、私は、DACに渡す電圧レベルによって制御されるように、多かれ少なかれ電流を引き出すハードウェアをいくつか持っています。
  • 私はまた、システムに引き込まれる電流に比例する電圧を私に与えるADCを持っています。

私は、ある閾値の範囲内でランプアップと振動を処理する必要があります。また、私は一定の電流を描画するためのソフトウェア制御システムには難しいだろうC.

おかげで、 リチャード

答えて

6

わかりましたので、すべてのハードウェアは既に完了していますか?

システムには現在のレベルのアンペア(ソフトウェアでは倍精度浮動小数点数で指定)のコマンド入力があり、コントローラの出力は電流を引き込むハードウェアを制御する電圧です。は回路で、フィードバックはおそらくあなたのA/Dに応じて符号付きか符号なしかの8,10または16ビットの数字です。

だからあなたのシステムが次のようになります。

alt text http://steves-wiki.wikispaces.com/file/view/control_diagram.jpg/64043668

あなたの最も迅速かつ汚いアプローチはおそらく、PID制御です。あなたはthis Wikipedia articleで基本をブラッシュアップすることができ、このembedded.com articleに実装に関するヒントがあります。

あなたの例では、現在のコマンド - 現在のフィードバックであるシステムのエラーを計算します。すべてが同じ単位で、うまくいけばアンペアであることを確認してください。次に、エラーを計算した後、コマンドで修正する必要があります。あなたのシステムでは、電圧制御された電流源に対する電圧コマンドです。 PIDでは、誤差、誤差の積分、および誤差の微分にゲインを掛けて結果を合計することによって、コマンドが計算されます。利益は難しい部分です。その他の難しい部分は、ユニットが一貫していること、タイミングが適切であること、正確な積分/派生計算を確実にすることです。

システムでは、エラーはAmps、コマンドはAmpsになり、現在の使用量はAmpsで、Voltsとして報告され、符号付きまたは符号なし整数に変換されます。エラーを適切にするためにアンペアに縮小してください。多くの変数があり、それぞれにどのような物理的単位が当てはまるかを把握できることを確認してください。

制御アルゴリズムはハードリアルタイムであり、専用レートで実行する必要があります。私は少なくとも100Hz(10msごとの計算)をお勧めします。電子回路は素早く動く。電気機械システムに似ているわけではない。あなたは物事の上にとどまるために高いレートを必要とするかもしれません。しかし、それはリアルタイムでは難しくなければなりません。つまり、一貫性があります。あなたはソフトウェアタイマーで逃げることさえできないかもしれません。

統合と微分の計算は難しいですが、それほど多くの方法があります。最も基本的なアルゴリズムは長方形ルールです - それはダムですが、おそらく動作します。より正確に台形ルールを使用する必要がある場合。アルゴリズムがhereであることを確認してください。ほとんどの場合、デリバティブコントロールは使用されません。ほとんどのシステムで不安定になりがちです。積分+比例制御でうまくいくはずです。

落とし穴がたくさんありますが、これが始まるはずです。あなたが制御理論の背景を持っていれば、それはすべてあなたに戻ってくるはずです。フレームワークが整備されたら、比例的かつ積分的な利益を調整するのに多くの時間を費やします。それは仕事の肉です。これはまだあなたのためにあまりにも多くの数学のように見える場合は、よく、ごめんなさい - これはコントロールのために取得するほど簡単です。

+0

良い要約。 あなたが言ったように、しかし:D用語をスクラップします。温度コントローラー以外はほとんど使用しません。 –

+0

偉大な応答!ちょっとした問題ですが、テキストの半分がブラウザの広告で覆われてしまいます。しかし、他に感謝して、私はPIDを見ていたが、用語で少し失われていた、あなたのダイアグラムは、多くの助けになります。再度、感謝します! – Richard

+0

ああ、ハードウェアはすでに設定されています。 – Richard

0

を働いています。これは、現在の変更に即座に対応できる専用のハードウェアを使用する方が効果的です。

ソフトウェアで実行したい場合は、おそらく "fuzzy-logic"コントローラのいくつかの形式を実装する必要があります。あなたの問題は、温度を制御するために使用されるファンに似ています。 1つの入力変数(電流に比例する電圧)と1つの出力変数(DACに渡される電圧レベル)があります。

+0

?!ファジー論理は、制御ループよりはるかに少ない理論を持つ黒い芸術である。私はソフトウェアで現在の制御を行ってきました。あなたは、帯域幅がまともであることを望むなら、それを速くしなければなりません。しかし、あなたはそれを行うことができます。 –

+0

どのくらい速くする必要がありますか? 1msごとにサンプルを取るとしましょう。つまり、1KHz/2 = 500Hzまでの信号を適切にサンプリングできます。例えば、1KHzのスパイクに対処することはできません。ソフトウェア制御ループは、低周波信号に対してのみ機能します。また、ファジィ論理とAIは多くの理論によってサポートされています – kgiannakakis