Top Page 周波数応答解析ツール(FRAT)用PCソフトウェアの開発
自作・実験工程のメモとして
02.Jun.2019


 今まで関連する2つのページ、「STM32F103でAD9959を動かす」と「周波数応答解析ツール(FRAT)の組立」を掲載してきましたが、このページで完結となります。
今回の「周波数応答解析ツール」(Frequency response analysis tool:以下 FRAT と略す)用パソコン(以下、PC)ソフトウェア(以下、S/W)は、2015年の「VB2013でSWRをビジュアル表示」で初めて作成したVisual Basic(以下、VB)のソースファイルを元に、2016年に「Stepping Motor Driver のPC操作プログラムの作成」として変更を加えてきたものを、「Visual Studio Community 2019」(以下、VS2019又はVB2019)を使って作成しました。
 VBを触るのが約2.5年ぶりとなり、すっかり忘れているのを思い出しながらの変更と、同時に進めているSTM32duino側のC言語系の記述とがゴチャゴチャになり苦労しました。
本ページはFRAT用Windows S/Wを使用するためのヘルプ(HELP)ファイルとして使うことを主な目的に、S/W操作の説明や解説を加えていきます。(ツールチップで簡単な説明が出るようにしています。)
ただし、実際の動作と記述内容との違いや、S/Wのバグ等により、出力する結果に不正確な部分が有ると思いますのでご了承ください。



ステップATT V3を20dB・30dB・39dBに設定して重ね合わせたForm全体のキャプチャー
(3つの縦破線マーカーは赤線のものです)
 


Edit by bluegriffon3.0.1


1.FRAT用PCソフトの概要

 文頭に有りますように、本S/WはVS2019を使用して作成しており、その中での使用言語はVBになります。
また、Windows フォーム アプリケーション(.NET Framework)として「.NET Framework 4.7.2」を指定して作成しており、動作に当たっては同 「.NET Framework 4.7.2」以上(現時点では4.8が最新)のインストールが必要です。
 私の使っているPCは、Windows 10 October 2018 Update (バージョン 1809)(64bit)で、Microsoftによると同Updateに「.NET Framework 4.7.2」が含まれているとのことですので、それより古いOSに関することはここでは触れません。


■.FRAT用ファイル
1.FRAT.exe (約222KB)
プログラム本体で、このファイルだけでPC用SWとして動作します。
2.FRAT.ini (約1KB)
最初にFRAT.exeを動作させたときに、このファイルを生成します。
終了時の設定を覚えて、次に起動するときに前の状態で起動する古いタイプやり方ですが、レジストリ書き替え等が無いのでこの方式にしました。(下部の、5項に内容説明あり)
3.FRAT001.jpg (001部分は連番)(Form全体コピーで約35KB、グラフ描画のカットコピーで18KB前後)
FRATで描いた特性のグラフをキャプチャーして保存したファイルで、FRATの操作で生成されます。
4.FRATreadme.txt(約5KB)
zipファイル用に用意(2019/06/16:追加)

■.インストール(Install)
インストールは必要ありません。
FRAT.exeを適当なフォルダに入れ使用するだけで、生成される追加ファイルも同フォルダに作られます。

■.アンインストール(Uninstall)
アンインストールは、FRAT.exeの有るフォルダごと削除すれば完了します。

■.ウィルスチェック
私はWindows10標準の「Windows Defender」を使用しており、その他の有料版ソフトウェアは使用していません。
以前は「ノートン セキュリティ」を使っていましたが、VS2019等で開発したソフト(EXEファイル)ができると直ぐに「ソナー:SONAR」が、問題があるソフト(使用実績が少ない?)と判断して削除していました。
そのため使用期間満了後は「Windows Defender」のみを使用しています。
「Windows Defender」や他社の有料版ソフトウェアも、同様の機能が有るかも知れませんが、さすがMicrosoft製品であるVS2019で開発したソフト(EXEファイル)は「Windows Defender」によって削除されることは無いようです。(今のところ)
もし、本ソフトを試用される場合は、上記事項を了承のうえ自己責任でお願いします。

■.配布用FRATソフト
PCB頒布時に、FRAT.EXEファイルとFRATreadme.txtファイルをzip形式に圧縮してフリーソフトとして公開します。(2019/06/16)
FRAT20190616.zip
ダウンロードして試してみましたが、最初の解凍時に「Windows Defender」が警告を発します。(2019/06/15)
ご自分のPCにあるウイルスチェックソフトでチェックしてください。
さらに最初の実行時に「Windows Defender」による警告が出ます。
(警告の例)

実行する場合は、「詳細情報」をクリックして「実行」


59 Arduino STM32duino Program sketch SPI 動作確認
Operation check 
2.COMポートの設定と終了等の操作

 使い始めは、FRAT(H/W)と接続するCOMポートの設定になります。また、終了操作も上部にまとめてあります。
なお、視認性の関係から画像中の丸数字を、説明文では(数字)括弧数字で表しています。





(1).COMポートの選択 コンボボックス
FRAT(H/W)に接続しているCOMポートをコンボボックス(ComboBox)より選択します。
もし、COMポートの準備が出来ていない時に立ち上げてもリストに現れません。
本ソフトを終了して再起動が必要です。

(2).FRAT(H/W)側のUSBインタフェースの選択 コンボボックス
FRAT(H/W)側のUSB-COMポートは、<図2−1>の「STM32_USB」が標準ですが、<図2−2>の「extUART」も選択できるようにコンボボックスを利用しています。
この部分は、「extUART」を選択した場合に通信速度(921600bpsに固定)の関係から、受信の遅れを待つ処理に利用しています。
なお、「STM32_USB」を使用した場合は、通信速度を低く設定してもPCとSTM32側で最高の速度で交信するようですので、「extUART」利用時以外は大きな意味は有りません。

(3).Connect/Disconnect ボタン(FRAT(H/W)との接続)
 
Connect」ボタンを押して接続すると、<図2−2>のように終了処理用の「Disconnect」に表示が変わります。
また、「Disconnect」表示中にCOMポート関連の操作を行うと、自動的にCOMポートをクローズして「Connect」表示に戻るようにしています。(<図2−1>)

(4).END ボタン (終了処理)
   END   」ボタンは、ソフトの終了処理に使います。また、右上の[X]ボタンも同様の動きをします。
もし、コネクト中(「Disconnect」を表示中)に同操作をすると、ディスコネクトの後に終了します。

(5).CutCopy ボタン(画面コピー機能)
CutCopy」ボタンは、そのまま押すとFRAT(S/W)が描画しているグラフ領域部分をカットして、jpegファイルで保管します。
また、「Shift」キーを押しながら「CutCopy」ボタンを押すと、ソフト全体の画面(Form)を保管します。
ファイル名は、FRAT001.jpg として001部が連番で増分します。
この連番は iniファイル に保存してあり、エディタで変更することができます。
また、変更後に連番が重なったときは、(1)(2)・・・を付記して上書きを避けています。

(6).最大化ボタンの禁止
最大化ボタンは効かないようソフト処理しています。
また、Formの大きさも固定です。


3.周波数の設定と描画操作

 周波数の設定と描画操作はグループ分けして画面中段に置いています。
他の処理でも使っていますが、他の関連部分を強制的に変更したりする動作をさせています。
また、起動直後は、<図3−1>のような背景色に成っていますが、操作性上で注目する場面を示すように一部で切り替えるようにしています。
なお、周波数範囲は、0〜200MHzまでとなります。特に、計算上の周波数がマイナスになった場合は、強制的に0KHzからの測定に書き換えます。
また、中途半端な数値で指定した場合も、切りの良い数値に書き換える処理をしています。
さらに、上限は200MHzを超えても描画領域の上限周波数として設定できますが、描画は100KHz〜200MHzまでとなります。






(1).Center/Width(Spot/W0) Radioボタン
このボタンを選択し、Center(KHz)のテキストボックスに中心周波数を入れ、Widthコンボボックスで中心からの広さを選択します。

(2)Center(KHz) テキストボックス
中心周波数を7桁までの数字で入力します。
もし、数値以外の文字が入っていたら除外してコンマ付きの数値として書き戻します。

(3).Width コンボボックス 
上記(2)の中心周波数に対して上下のSweep幅を設定します。
Sweep幅は、±125KHz・±250KHz・±500KHz・±1MHz・±2MHz・±5MHz・±10MHz・±20MHz・±50MHz・±100MHzの10種類を予め用意しています。
また、<図3−3>にあるように此処で「Spot/0Hz」を選んだ場合は、Center/Width(Spot/W0) Radioボタンが選択状態になり、(2)Center(KHz)の周波数のみを発振するSpotモードになります。

(4).Start/Stop Radioボタン
ラジオボタン右の「 Start(KHz)」「Stop(KHz)」にそれそれ数値を入れその幅をSweepして描画するモードになります。
もし、「 Start(KHz)」が「Stop(KHz)」より大きかったり、同じ値の場合は書き換えます。

(5).Start(KHz) テキストボックス
描画スタートの周波数を7桁までの数字で入力します。
もし、数値以外の文字が入っていたら除外してコンマ付きの数値として書き戻します。
さらに、ここが1MHzより小さな値の時は、0KHzに書き換えます。
1MHz以上の場合で10KHz台以下の位に0以外の数値が有れば、下方の100KHzに丸めます。(例:1999KHz ==> 1,900KHz)

(6)Stop(KHz) テキストボックス
描画スタートの周波数を7桁までの数字で入力します。
もし、数値以外の文字が入っていたら除外してコンマ付きの数値として書き戻します。
さらに、Start(KHz)と同じか小さな数字を入力した場合は、200MHzを最大値としてStart(KHz)に1MHzプラスした値に変更し、両方が200MHzの時は、Start(KHz)の値を1MHzマイナスします。

(7)CALB/Spot Radioボタン
測定の最初に、測定経路の損失を無効化して、測定対象の減衰特性値を相対的に求めるための校正を行います。
キャリブレーション動作時のグラフは、灰色のグラフで表しています。
プログラムの最初の初期位置となり、キャリブレーション動作(この位置で「Start」ボタンを押す)を完了する必要が有ります。
もし、周波数モードや数値を変更した場合は、このボタンがチェック状態になり、再度キャリブレーション動作を完了させる必要が有ります。
また、キャリブレーション動作を完了せずに他の Radioボタン を選択し「Start」ボタンを押すと、強制的にキャリブレーション動作として実行します。
キャリブレーション動作完了時には、背景色が薄い水色系に変わります。
なお、Spotモードの時にはこの位置のみで動作します。(強制的に設定)

(8)G1&Mrk Radioボタン
基本となる描画領域(透過)の第1グラフ層(Graph1G1と略す)を選択します。
第1グラフ層は、赤色のグラフで表しています。
Mrkは、描画領域で縦の破線を描いてその位置の周波数とdB値を表示することを意味します。
既に描画されている第1グラフ層の内容を消去する機能は、有りません。(上書きのみ)

(9)Graph2 Radioボタン
G1層に透過で重ねる第2グラフ層(Graph2)を選択します。
第2グラフ層は、ピンク色のグラフで表しています。
既に描画されている第2グラフ層の内容を消去したいときは、Shiftキーを押しながらGraph2ラベル部分をクリックします。

(10)Graph3 Radioボタン
G1層に透過で重ねる第3グラフ層(Graph3)を選択します。
第3グラフ層は、柿色のグラフで表しています。
既に描画されている第3グラフ層の内容を消去したいときは、Shiftキーを押しながらGraph3のラベル部分をクリックします。

(11).Overlap チェックボックス
ここをチェックすると、Graph1Graph2Graph3の3層を重ねて同時に表示することができます。

(12)Start ボタン
Sweep範囲の下限から上限に向かって500ステップのSweepを実行します。
実行中(通常200mS以下の時間)は、二重押しを避ける処理を実施しています。
また、Sweep中は「Running」と表示を変えSweep中であることを表しています。

(13)SweepTime テキストボックス
上記(12)の「Start」ボタンを押してSweepが終了するまでの時間を表示するようにしています。
この時間は、Sweep毎や他のソフトの稼働具合によってもバラツキがあり、「extUART」の場合は、1秒程度の時間がかかっています。




4.描画領域関連の表示

 上記3項で「周波数の設定と描画操作」を行った結果が、下部のエリアに表示されます。
この領域は、最上部右の「CutCopy」ボタンの操作で切り取ることができるようにしています。



(1).縦軸の目盛
10dB刻みで相対的なdBを表しています。ただし、キャリブレーション時は、絶対的なdBmに近い値を示しています。
縦軸は400ドットになります。

(2)下限周波数の値
下限値を0KHz(0Hzでも良かったんですが他も含めてKHzに統一)以上の数字で表します。

(3).横軸 一分割ごとの周波数幅 
横軸は500ドットになります。
上限ー下限のSweep幅を、均等に10分割しています。
あまり中途半端な数字になるときは、上限・下限側を丸めて切りの良い値になるようにしています。

(4)横軸 中心周波数
上限ー下限のSweep幅の中心点の周波数を表します。
また、この位置の目盛線は、ピンクの破線で表しています。

(5)上限周波数の値
Sweepの上限値(200MHz以下)を表します。
なお、Center/Widthモードで計算上200MHzを超えたときは、200MHz以上の上限周波数を容認しています。
ただし、その時でもグラフ描画は、200MHzまでとなります。

(6)第1グラフ層(G1)に描画した測定結果
第1グラフ層の描画は、赤線を使います。

(7)第1グラフ層(G1)の測定結果に対する1番目のマーカー(マウスの左クリック)
このマーカーは、縦破線で赤色線に対してクリックした位置を表し、その交点の周波数及びdB値は、上部に表示します。
全部のマーカーは、領域内で有ればマークする位置に制限(右端でもOK)は有りませんが、周波数及びdB値の表示位置は固定です。
もし、赤線の無い領域をクリックした場合は、周波数及びdB値を表示するところに「Out of frequency range」と表示します。
マーカーだけを消したいときは、マウスの右クリックで消去できます。

(8)第1グラフ層(G1)の測定結果に対する2番目のマーカー(Shift + マウスの左クリック)
このマーカーも上記(7)と同様に使います。
マーカーだけを消したいときは、Shift + マウスの右クリックで消去できます。

(9)第1グラフ層(G1)の測定結果に対する3番目のマーカー(Ctrl + マウスの左クリック)
このマーカーも上記(7)(8)と同様に使います。
マーカーだけを消したいときは、Ctrl + マウスの右クリックで消去できます。

(10)第2グラフ層(Graph2)に描画した測定結果
第1グラフ層の描画は、ピンク色線を使います。

(11)第3グラフ層(Graph3)に描画した測定結果
第3グラフ層の描画は、柿色線を使います。

(12).カットコピー時のメモ欄 テキストボックス
この欄は、オシロスコープ(DSO)の測定結果を画像としてUSBメモリへSAVEしているときに、画像にメモを入れられると助かると感じていたことを、本ソフトに取り入れました。
入力可能文字数は、半角文字で68文字以上程度、全角文字で50文字程度入力できますが、プロポーショナルフォントのため増減があります。

(13).グラフ線が重なった時の目印 (Overlap チェック時のみ)
2つのグラフがほぼ同じ状態で重なった時に、上位の描画層のみが目立つため別のグラフの存在を見失わないように、描画領域外の右側にマークを付けました。
また、キャリブレーションの位置を示す灰色も残しています。
(上位層側)Graph3       
      Graph2
(下位層側)Graph1


参考<図4−2>

FRAT(H/W)側で10MHz毎の最大値を+9.5dBmに調整しているため、上のようなグラフになると思います。

参考<図4−3>

低域の特性を見てみました、DDSやLNAの結合コンデンサの値によるものか、低域は出力が落ちます。
ただし、この帯域で測定をする予定も有りませんし、キャリブレーション後に補正をするためこのままとします。

参考<図4−4>

Spotの表示は、中心周波数部分にその周波数を表し、AD8307の読取値を補正せずそのまま縦1本の線で表しました。
縦線上部の位置が読取値(dBm)を表しますが、数値での表記は有りません。
また、他のグラフより線幅を少し太くしています。

参考<図4−5>
 
ステップアッテネータ(ATT:0dB設定)を繋いだ状態でキャリブレーションを実施した後、ATT側でケーブルを外してみました。
(FRAT入力側のケーブル長:約20cm)


参考<図4−6>
同、FRAT入力側のケーブルを外してみました。


参考<図4−7>
同、FRAT入力側のケーブルを外したところに50Ωの終端抵抗を入れてみました。


参考<図4−8>
実際の特性を測った図が無かったので、2009年よりIC-7600Mに付けているローパスフィルタを測ってみました。(2019/06/13)
キャリブレーション:約2mのRG-58C/Uケーブル(両端BNC-P)
測定経路:「OUTPUT」=>COMET CF-50MR=>ALPHAコモンモードフィルタ=>DAIWA CS-201(アンテナ切換器)=>「INPUT」
測定経路の長さ(同軸の合計約5.5m:コア2個取付)もあり、高域での減衰量の低下がみられます。
また、ローパスフィルタ以外にも減衰要素が多くありますが、それなりの特性で有ることが確認できました。

5.iniファイルの内容について

 iniファイルとして基本的な項目を記憶して、次回立ち上げ時に同じ内容で使えるようにしています。
通常使用する分には、その内容は関係ありませんが、トラブル時に役立つかもしれませんので書き出しておきます。
iniファイルの一例
[Form1Text]
Text=FRAT V.2019.05.30
[Form1Point]
Xpos=65              '画面上のどの位置Formが有ったかを示すXポジション
Ypos=75              '画面上のどの位置Formが有ったかを示すYポジション
[Form1Size]
Width=580          'Fromの横サイズ 580ドット(不変)
Height=718         'Fromの縦サイズ 718ドット(不変)
[ComPort]
PortName=COM21     '前回開いていたCOMポート番号
Speed=921601          'COMポートの速度(STM32_USBを表します。)
[Analysis]
ScanMode=1             '0=Center/Width  ,  1=Start/Stop
CenterFreq(KHz)=145000     '中心周波数
Width(KHz)=1000     'Widthの値、もし"0"ならSpotモード
StartFreq(KHz)=0     'Start/Stopモードのスタート周波数
StopFreq(KHz)=200000     'Start/Stopモードのストップ周波数
[ImageSave]
ImageSerialNumber=0     '測定画像をjpegファイルにするときの連番
'VBのコメントのように赤字で説明を書き加えましたが、説明のための記述であり、実ファイルでは有りません。




9.変更履歴


2019/06/16:
FRAT.exeにFRATreadme.txtを同梱してzipファイルに圧縮
2019/06/02:
初版リリース


99.追記用

大幅な改定・追記用