« ターボファンエンジン(CF6-80C2)のCG | トップページ | 超音波による非破壊評価シンポジウム »

AGC80(Automatic Gain Control )とプログラミング

 プログラミングをしていると、一見簡単そうなことがなかなか実現できずに苦しむことがあれば、逆に難しそうに見えることが簡単にできることもあります。
 超音波探傷では、反射波(エコー)の強さ(音圧:振動子=トランスデューサーが超音波振動を受けて発生させる電圧に起因する)は重要な情報です。Aスコープ画面では「エコー高さ」として表されます。エコー高さを比較するのにゲイン機能を使ってAスコープの表示器上で同じ高さ(%)にそろえて、そのときのゲインの値で比較するという方法をよく使います。
 手動で行うこともできますが、最近のデジタル超音波探傷器では、ターゲットとなるエコーにゲートをかけて「AGC80%」ボタンを選択すると、自動的にエコー高さを一定の値(たとえば80%)にあわせてくれるAutomatic Gain Control と呼ばれる機能を搭載したものがあります。 

Agc80

 実はこのプログラミングは簡単です。

にほんブログ村 科学ブログ 技術・工学へ
ポチッとクリックで応援

 ターゲットになるエコー高さ(hp)が数値として与えられていれば、これを80%にするには80/を掛けてやれば良いことになります。単純な比の計算です。この比をデシベルに換算するとx=20×log10(80/)[dB]です。Visual Basicのコードにすると、AGC80と名づけた変数にhpを代入するようにしておいて

   dB = dB + 20 * Log(80 / AGC80) / Log(10)

 という1行でOKです。ゲインの値(dB)を変えると、表示器上のエコー高さをそれに合わせて表示する仕組みができていれば、実にシンプルです。

 先ほどの画像の例で言えば、=30%で80/30はデシベルにすると8.5dB、24dBからですと8.5dB上げて32.5dBになっています。ちなみにVBのコードでは、Log関数は自然対数になっているので、常用対数にするためにln(10)=2.3025で割っています。

 実はこれに比べてとんでもなく面倒で苦労をしたのが、ゲートをかけてエコーの情報を読み取る仕組みを作ることでした。リアルな探傷器では、パルサーレシーバーからの電気信号と同期回路からの信号を取り入れて処理するのでしょうが、エミュレーターではそうした信号自体をバーチャルに作り出すというところからはじめなければなりませんでした。

 しかし、いったん仕組みが出来上がると、AGC80などという機能は簡単にできる。少し高い山に登ったときの見晴らしのよさのような快感を覚えます。

 ここから油断して遭難しないように、今日もこつこつと仕事をしています。今日の記事は忘れっぽい私の覚書というところです。

にほんブログ村 科学ブログへ
アイコンをクリックすると、ブログランキングの応援になります。現在2位。

|

« ターボファンエンジン(CF6-80C2)のCG | トップページ | 超音波による非破壊評価シンポジウム »

プログラミング」カテゴリの記事

超音波」カテゴリの記事

コメント

AGC80%使い方によっては非常によい機能であると思いますが、プログラム上でピーク法としきい値法で異なった表示になる可能性があると思います。
その点がいかがでしょうか?うまくいきましたでしょうか?
阪神タイガースのファンより

投稿: tigers | 2011年8月 3日 (水) 11時38分

 ひとつのエコーがゲート内にある場合はともかくとして、複数のエコーがゲート内にある場合には、ピーク法かしきい値法かでAGCをかけると違ってきますね。このあたりは再現できています。ゲート機能を作るのに苦労をしたことが利いています。
 ところでこの件で実機を操作していて気づいたことがあります。面白いのだけれど、ブログ記事にしようかなぁ・・・ちょっと迷うところです。

投稿: SUBAL | 2011年8月 4日 (木) 03時26分

SUBALさん,こんばんわ。
(あえて,こちらの記事にコメントします)

AGCは,私も,お手製の車軸探傷ソフト(VB6です)で,
実験用に,デジタル探傷器の制御に実装しましたが,
アナログの粗調整つまみ(?)に相当する,
増幅度が不連続の箇所で,ドツボにはまったことがあります。

エミュレータだと,増幅直線性の心配はなさそうですが,
実機だと,アナログ的なところを考えたうえで,
プログラミングするのが,楽しいところかもしれません。

投稿: めぐめぐ | 2011年8月 8日 (月) 22時56分

めぐめぐさん もVB6をお使いですか。世間は狭いといいますか、VB6仲間がここにもいたか、という感じでうれしいですね。

 私のエミュレーターのソフトでは、AGC80%についてこの記事のように一発計算で処理しています(いろいろな状況からやっていますが問題ないようです)。しかし、実機の動きを見ているとそうではないことがわかります。その動きは、人間が機械を相手にやっている制御のやり方をそのまま自動でやっているように見えます。面白いなぁ、と思っています。

多分増幅器の性能と、元になるエコー高さのデータの有効数字の桁数と精度の問題が計算一発ではいけない要因としてあるのだろうと推測しています。

このあたり、実に面白いところなので、近々ブログ記事にしようと思っています。

投稿: SUBAL | 2011年8月 9日 (火) 00時34分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/222291/52371776

この記事へのトラックバック一覧です: AGC80(Automatic Gain Control )とプログラミング:

« ターボファンエンジン(CF6-80C2)のCG | トップページ | 超音波による非破壊評価シンポジウム »