①フォーム閉じる時の保存確認を排除
②セッティング保存ボタンを設ける
③パルス特性の結果を反映させるテキストボックスを用意する
→40dB帯域幅にも反映させる
④電力測定後、PEPに反映させる(空中線電力)
⑤規格線作成
【短パルス選択時】
●下記の定数/値を取得する(初期設定)
・中心周波数
・40dB帯域幅
・測定周波数範囲下限(開始周波数)[MHz]
・測定周波数範囲上限(終了周波数)[MHz]
・オフセット周波数[MHz]
・参照帯域幅[MHz]
・減衰曲線(30dB/decade)
・空中戦電力[W]
●結果を入れておくといい
・帯域外領域とスプリアス領域との境界 下側
・40dB帯域幅 下側
・40dB帯域幅 上側
・帯域外領域とスプリアス領域との境界 上側
●参照帯域幅(スプリアス領域で測定する周波数帯ごとに定義される)計算
入力値:(ユーザー)[MHz]
選択:1MHz固定、指定値、
非符号化パルス変調(固定周波数):1/パルス幅[us]
位相変調符号化パルスレーダー(固定周波数):1/移送変調チップ長[us]
周波数変調及びチャープレーダ:√(周波数偏移幅[MHz]/パルス幅[us])
③規格線作成
dim LimitNo as long
dim MaskFreq() as double
dim MaskLimit() as double
LimitNo = 0
Erase MaskFreq
Erase MaskLimit
・ステップ周波数(-60dBのポイント数を減らす式)
TempF = Int*1
End If
'40dB帯域内の場合
If Freq >= StartF40 And Freq <= StopF40 Then
CalcMaskData = 0
End If
'60dB境界下限周波数~40dB境界下限周波数の場合
If Freq > StartF60 And Freq < StartF40 Then
' CalcMaskData = -40 - 30 * Log(2 * (CenterF - Freq) / D40Width) / Log(10)
'D40Width:40dB帯域幅
CalcMaskData = -40 - 30 * (0.6931 + Log(CenterF - Freq) - lnD40Width) / 2.3026
End If
'40dB境界上限周波数~60dB境界上限周波数の場合
If Freq < StopF60 And Freq > StopF40 Then
' CalcMaskData = -40 - 30 * Log(2 * (Freq - CenterF - OffsetF) / D40Width) / Log(10)
CalcMaskData = -40 - 30 * (0.6931 + Log(Freq - CenterF) - lnD40Width) / 2.3026
End If
Exit Function
End Function
'******************************************************************************************
【マスクデータの生成について】
マスクデータを生成する際、周波数点は以下のようにしています。
①下記の周波数点は必ず生成されるようにしています。
・40dB 帯域幅の上限下限の周波数点
マスクデータ = 0dB
・40dB 帯域幅の上限+0.001 Hz、下限-0.001 Hz の周波数点
マスクデータ = -40dB
・帯域外領域とスプリアス領域の境界周波数
マスクデータ = 43+10log(PEP)か-60dBのどちらか小さい方
②帯域外領域とスプリアス領域の境界周波数内のマスクデータ計算周波数点は
40 dB 帯域幅内を含めて、参照帯域幅の Step で生成されます。
③測定開始周波数から帯域外領域とスプリアス領域の境界周波数の下側までの周波数点は
5 点程度になるように生成しています。
④帯域外領域とスプリアス領域の境界周波数の上側から測定終了周波数までの周波数点は
5点程度になるように生成しています。
'****************************************************************************************
【分かったこと】
・電力5W以下は43+10log(PEP)の方が小さい
・スプリアスのATTは入力レベルの適正、通常は内部回路の保護のため最低でも10dBは入れておく
→尖っていない方だけ変化する。低いほど低い、大きいほど高い。
以上
*1:StartF60 - StartF) / 20)
Select Case TempF
Case Is < 1: StepNegF = 0.1
Case Is < 10: StepNegF = Int(TempF)
Case Is < 100: StepNegF = Int(TempF / 10) * 10
Case Is < 1000: StepNegF = Int(TempF / 100) * 100
Case Is < 10000: StepNegF = Int(TempF / 1000) * 1000
Case Else: StepNegF = 10000
End Select
TempF= Int((StopF - StopF60) / 20)
Select Case TempF
Case Is < 1: StepPosF = 0.1
Case Is < 10: StepPosF = Int(TempF)
Case Is < 100: StepPosF = Int(TempF / 10) * 10
Case Is < 1000: StepPosF = Int(TempF / 100) * 100
Case Is < 10000: StepPosF = Int(TempF / 1000) * 1000
Case Else: StepPosF = 10000
End Select
'①startF~StartF60
I = 1
Do While Integer.Parse(StartF + (I - 1) * StepNegF) < StartF60
If I = 1 Then
Freq = StartF
Else
Freq = Integer.Parse(StartF + (I - 1) * StepNegF)
End If
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
I = I + 1
Loop
'②StartF60~StartF40
I = 1
Do While (StartF60 + (I - 1) * BWref < StartF40
'BWref:参照帯域幅[MHz]
Freq = StartF60 + (I - 1) * BWref
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
I = I + 1
Loop
'③StartF40
Freq = StartF40
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
'④StartF40~StopF40
I = 1
Do While (StartF40) + (I - 1) * BWref < StopF40
Freq = (StartF40) + (I - 1) * BWref
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
I = I + 1
Loop
'⑤StopF40
Freq = StopF40
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
'⑥StopF40~StopF60
I = 2
Do While (StopF40) + (I - 1) * BWref < StopF60
Freq = (StopF40) + (I - 1) * BWref
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
I = I + 1
Loop
'⑦StopF60 ~ F_Stop
I = 1
Freq = (StopF60) + (I - 1) * StepPosF
Ret = SetMaskData(LimitNo, Freq)
LimitNo = LimitNo + 1
I = 2
Do While (StopF60) + (I - 1) * StepPosF < StopF
Freq = Integer.Parse(StopF60) + (I - 1) * StepPosF
MaskFreq(LimitNo)=Freq
MaskLimit(LimitNo)=CalcMaskData(Frep)
LimitNo = LimitNo + 1
I = I + 1
Loop
MaskFreq(LimitNo)=StopF
MaskLimit(LimitNo)=CalcMaskData(Frep)
'*******************************************************************************************************
'マスク値の計算
Function CalcMaskData(Freq As Double) As Double
'60dB境界下限周波数より低い場合
'60dB境界上限周波数より高い場合
If Freq <= StartF60 Or Freq >= StopF60 Then
CalcMaskData = (-60dB or 43+10log(PEP