Darkside(https対応しました)

2012年9月9日(日) 19:53

実行して貯めたノウハウ

 「出力変更幅の上限」は、PD値にしろ電流値にしろ A/D変換で取得したナマ値に基づいて計算した。
 しかしその後の制御は、加工後の値に基づいて行なう。加工とは、過去4回の平均を取るとかメジアンフィルターであり、更に「過去値を直線延長しての未来値予測」となる。
 未来値予測というと凄く聞こえるが、(現在値×2−過去値)という最も単純な方式でうまく行くことが判明している。また、どの程度過去の値を使うかだが、10ミリ秒のオーダーで充分なことも判明している。

 余りに過去過ぎる値を採用すると、安定して収束せず振動が発生し易い。

 過去値を取り出すには、過去値を保存しておかねばならない。
 平均値やメジアンを計算するにも、やはり過去値を保存せねばならない。
 これら保存処理に関しては、最初から2系統分のプログラムコードが書いてある。だから、PD値だけでなく電流値に関しても全く同様の処理が可能である。問題は、こうして計算された未来値をどう利用して次のD/A出力値を決定するかという部分である。

 未来値がPD系のみであれば、実績ある処理コードが既に存在する。だが、ここに電流系の未来値が新たに登場する。どう組み合わせて制御の方向を決めれば良いか?
 1系統のみにおける実績ある制御だが、

・未来値>目標値の場合
 未来値が目標値より32以上大きな場合は、出力D/A値を「出力変更幅の上限」だけ減らす。
 未来値が目標値より32未満だけ大きな場合は、出力D/A値を1だけ減らす。

・未来値<目標値の場合
 未来値が目標値より32以上小さな場合は、出力D/A値を「出力変更幅の上限」だけ増やす。
 未来値が目標値より32未満だけ小さな場合は、出力D/A値を1だけ増やす。

 要するに、フィードバックループ1回で出力値を変動させる場合、1か最大値かという2通りのバリエーションしかない。未来値=目標値であればもちろん変動は0だが。以前は場合分けを細かくし、2だの3だの半端な変動量も許していた。だが、意味がほとんどないと判明。
 PD値にしろ電流値にしろ、A/D取得値には凄まじい量のノイズが乗っている。それと、励起LDに与える電圧を急激に変化させる必要は【理論上】存在しないという事実。両者を考慮すると、「必要がない限り、変動量は最低にする」のが最適なのだ。

written by higashino [ファイバーレーザー] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4