选择探测信号的类型,以提高雷达系统的探测距离
本例说明波形如何影响雷达系统的探测性能。该示例考虑了这样一种情况,即对现有雷达系统设计提出了更高的探测距离要求。由于旧设计已无法达到预期要求,因此使用了新的波形。该示例还展示了如何为偏离航道的目标建模、模拟返回,然后确定其探测距离。
使用的函数
Pkg.add(["DSP"])
using DSP
# Функция для построения выходного отклика радара и порогового значения
function RadarPulsePlot(ReceivePulse,threshold,t,tp,num_plot::Int64)
thresh = sqrt(threshold)*ones(length(t),num_plot)
ReceivePulse = Float64.(DSP.db2pow.((abs.(ReceivePulse)).^2))
ReceivePulse[ReceivePulse.==0] .= eps(0.)
thresh .= DSP.db2pow.(thresh.^2)
t = repeat(t,1,num_plot) .+ tp[1:num_plot]'
text_title = reshape(["Импульс № $(i)" for i in 1:num_plot],1,num_plot)
xlabel_text = [reshape(repeat([""],1,num_plot-1),1,num_plot-1) "Время, с"]
plot(t,ReceivePulse[:,1:num_plot],layout=(num_plot,1),label="",title = text_title,
fontfamily="Computer Modern", titlefontsize=10, guidefontsize=10, tickfontsize=10,gridalpha=0.3,lw=1.2)
plot!(t,thresh[:,1:num_plot],layout=(num_plot,1),xlabel=xlabel_text,lw=1.2,
ylabel = repeat(["Мощность, дБВт"],1,num_plot),label="",ls=:dash) #
end;
function BasicMonostaticRadarExampleData()
c = 299_792_458
waveform = EngeePhased.RectangularWaveform(PulseWidth=100/c,
PRF=c/1e4,OutputFormat="Pulses",NumPulses=1,SampleRate= 2c/100);
antenna = EngeePhased.IsotropicAntennaElement(FrequencyRange=[5e9 1.5e10]);
radiator = EngeePhased.Radiator(Sensor=antenna,
PropagationSpeed=c,OperatingFrequency=1e10);
collector = EngeePhased.Collector(Sensor=antenna,
PropagationSpeed=c,Wavefront="Plane",
OperatingFrequency=1e10);
transmitter = EngeePhased.Transmitter(PeakPower=5226.4791642003665401716716587543,
Gain=20,LossFactor=0, InUseOutputPort=true,CoherentOnTransmit=true);
receiver = EngeePhased.ReceiverPreamp(Gain=20,NoiseFigure=0,
ReferenceTemperature=290,SampleRate=2*c/100, PhaseNoiseInputPort=false,
EnableInputPort=true,SeedSource="Property",Seed=1000);
sensormotion = EngeePhased.Platform(InitialPosition=[0;0;0],Velocity=[0;0;0]);
return waveform, antenna, radiator, collector, transmitter, receiver, sensormotion
end;
1. 战术和技术特点
在案例研究"模拟雷达接收机的测试信号"中,设计了一种单静态脉冲雷达来模拟雷达接收机的测试信号,以满足下列要求:
1.最小有效散射面积(EDA):1 ,无波动;
2. 无差别目标探测的最大距离:5 千米;
3. 正确瞄准概率 (VPO):0.9;
4. 误报概率 (FAP): 。
加载雷达系统对象:
waveform,antenna,radiator,collector,transmitter,receiver,sensormotion = BasicMonostaticRadarExampleData();
新要求
雷达部署完成后,我们将增加 2 项新要求:
- 最大明确目标探测距离:5 公里;
- 目标波动模型:"Swerling-2"。
能否修改现有设计以满足新的性能目标?要回答这个问题,必须重新计算受新要求影响的参数。
第一个受影响的参数是脉冲重复率 (PR)。它需要根据新的最大个位数检测范围重新计算。
prop_speed = radiator.PropagationSpeed; # скорость распространения
max_range = 8000; # максимальная дальость
prf = prop_speed/(2*max_range) # ЧСИ
print("Новая частота следования импульсов: $(round(prf*1e-3;sigdigits=5)) кГц")
与现有设计的 30 kHz PSF 相比,新的 PSF 更小,为 18.737 kHz。因此,脉冲间隔时间更长。请注意,这只是雷达软件中微不足道的改动,而且硬件成本相当低廉。
waveform.PRF = prf;
接下来,由于目标是使用Swerling-2模型描述的,因此有必要使用Schnidman 方程(而不是 Albersham 方程)来计算达到给定 VPO 和 VLT 所需的 ROS。施尼德曼方程假定使用非相干累积的二次探测器。累积脉冲数为 10。
num_pulse_int = 10; # количество импульсов накопления
pfa = 1e-6; # вероятность ложной тревоги
snr_min = shnidman(0.9,pfa,num_pulse_int,2) # расчет ОСШ
print("Минимальное ОСШ: $(round(snr_min;sigdigits=5)) дБ")
2.选择信号类型
如果我们在现有设计中使用相同的矩形波形,脉冲宽度将保持不变,因为它是由测距分辨率决定的。然而,我们的最大测距从 5 千米增加到了 8 千米,目标模型也从无波动模型转换为 "Swerling-2 "模型,因此我们需要重新计算所需的峰值发射功率。
fc = radiator.OperatingFrequency; # несущая частота
lambda = prop_speed/fc; # длина волны
peak_power = ((4*pi)^3*noisepow(1/waveform.PulseWidth)*max_range^4*
DSP.db2pow(snr_min))/(DSP.db2pow(2*transmitter.Gain)*1*lambda^2) # расчет пиковой мощности
print("Пиковая мощность передатчика: $(round(peak_power*1e-3;sigdigits=5)) кВт")
峰值功率大约是以前要求的八倍。这种硬件改进不容易实现,原因有两个:
1.现有雷达设备的设计能产生峰值功率约为 5200 瓦的脉冲。虽然大多数设计都会在所需功率之上留出一些余量,但现有系统不太可能提供 8 倍的功率;
2.更换设备以输出如此大的功率非常昂贵。因此,必须对现有设计进行修改,采用更先进的信号处理技术,以达到新的目标。
线性频率调制(LFM)信号
降低功耗的方法之一是使用矩形信号以外的信号。例如,线性调频信号可以使用比矩形信号更长的脉冲持续时间。因此,所需的峰值发射功率就会降低。
让我们来看看 LFM 信号配置的细节。
所需的量程分辨率决定了信号的带宽。对于 LFM 信号,带宽等于其扫描宽度。然而,脉冲宽度不再受限于脉冲带宽的倒数,因此可以使用更大的脉冲宽度。我们使用的脉冲宽度是脉冲带宽的 20 倍,设置的采样率是脉冲带宽的两倍。
range_res = 50; # разрешение по дальности
pulse_bw = prop_speed/(2*range_res); # ширина спектра ЛЧМ-сигнала
pulse_width = 20/pulse_bw; # длительность импульса ЛЧМ-сигнала
fs = 2*pulse_bw; # частота дискретизации
waveform = EngeePhased.LinearFMWaveform(
SweepBandwidth=pulse_bw,
PulseWidth=pulse_width,
PRF=prf,
SampleRate=fs
);
现在,让我们来确定实现设计要求所需的新发射功率。
peak_power = ((4*pi)^3*noisepow(1/waveform.PulseWidth)*max_range^4*
DSP.db2pow(snr_min))/(DSP.db2pow(2*transmitter.Gain)*1*lambda^2)
print("Пиковая мощность передатчика: $(round(peak_power*1e-3;sigdigits=5)) кВт")
这个功率完全在我们现有雷达系统的能力范围之内。我们已经达到了无需改装现有设备即可满足新要求的峰值功率。
release!(transmitter)
transmitter.PeakPower = peak_power;
3.系统建模
现在,我们已经根据设计规范定义了雷达,让我们设置目标和环境来模拟整个系统。
目标
与上面的例子一样,我们假设自由空间环境中有 3 个目标。不过,现在的目标模型是目标波动模型,"Swerling-2"。让我们设置雷达和目标的位置,以及目标的 EPR
tgtpos = [[2024.66; 0; 0] [6518.63; 0; 0] [6845.04; 0; 0]]; # компоненты начального положения целей
tgtvel = [[0;0;0] [0;0;0] [0;0;0]]; # компоненты скорости целей
tgtmotion = EngeePhased.Platform(InitialPosition=tgtpos,Velocity=tgtvel); # модель движения целей
tgtrcs = [2.2 1.1 1.05]; # ЭПР целей
fc = radiator.OperatingFrequency; # несущая частота
target = EngeePhased.RadarTarget(
Model="Swerling2", # модель флуктуации
MeanRCS=tgtrcs, # среднее значение ЭПР цели
OperatingFrequency=fc # несущая частота
);
传播环境
接下来,配置雷达与每个目标之间的传播通道。
channel = EngeePhased.FreeSpace(
SampleRate=waveform.SampleRate, # частота дискретизации
TwoWayPropagation=true, # двунаправленное распространение сигнала
OperatingFrequency=fc # несущая частота
);
信号合成
让我们设定接收器产生噪声的基线,以便重现相同的结果。
release!(receiver) # сброс внутреннего состояния объекта (измненеие )
receiver.SeedSource = "Property"; # изменение тип модели генерации шума
receiver.Seed = 2024; # задание начального состояния генератора тепловых шумов
fast_time_grid = unigrid(0,1/fs,1/prf,"[)") # сетка быстрого времени
slow_time_grid = (0:num_pulse_int-1)./prf; # сетка медленного времени
# Выделение памяти для результирующих данных
rxpulses = zeros(ComplexF64,length(fast_time_grid),num_pulse_int);
for m = 1:num_pulse_int
# Обновление пложения радара и целей
sensorpos,sensorvel = sensormotion(1/prf);
tgtpos,tgtvel = tgtmotion(1/prf);
# Расчет углов по дальности от радара до целей
global tgtrng,tgtang = rangeangle(tgtpos,sensorpos);
# Моделирование распространения сигнала от радара до целей
pulse = waveform(); # генератор ЛЧМ-сигнала
txsig,txstatus = transmitter(pulse); # усилитель передающего сигнала
txsig = radiator(txsig,tgtang); # излучатель сгенерированного сигнала в среду
txsig = channel(txsig,sensorpos,tgtpos,sensorvel,tgtvel); # среда распространения
# Отражение сигнала от целей с учетом ЭПР
tgtsig = target(txsig,true);
# Прием и предварительного усиление отраженного сигнала
rxsig = collector(tgtsig,tgtang); # приемная антенна
rxpulses[:,m] = receiver(rxsig, .!(txstatus.>0) ); # предусилитель
end
4 确定测距估计值
计算探测阈值
检测阈值是利用给定累积脉冲数的噪声信息计算得出的。请注意,如上例所示,在加载系统中,噪声带宽为采样频率的一半。我们将阈值与前两个脉冲一起绘制出来。
noise_bw = receiver.SampleRate/2;
npower = noisepow(noise_bw,
receiver.NoiseFigure,receiver.ReferenceTemperature);
threshold = npower * db2pow(npwgnthresh(pfa,num_pulse_int,"noncoherent"));
pulseplotnum = 2;
RadarPulsePlot(rxpulses,threshold,fast_time_grid,slow_time_grid,pulseplotnum)
从图中可以看出,脉冲非常宽,这可能会导致测距分辨率较低。此外,第二和第三个目标完全被噪声掩盖。
一致过滤
与矩形波形一样,接收到的脉冲首先经过匹配滤波器,以提高有效值。匹配滤波器可提供处理增益,进一步提高检测阈值。此外,匹配滤波器对低频调制信号的另一个优势是,它可以压缩时域波形,使滤波后的脉冲变得更窄,从而提高量程分辨率。
matchingcoeff = getMatchedFilter(waveform);
matchedfilter = EngeePhased.MatchedFilter(
CoefficientsSource="Property",
Coefficients=matchingcoeff,
GainOutputPort=true
);
rxpulses, mfgain = matchedfilter(rxpulses);
threshold = threshold * DSP.db2pow(mfgain);
要补偿匹配滤波器的延迟,可使用缓冲器功能。
matchingdelay = size(matchingcoeff,1)-1;
rxpulses = buffer(rxpulses[(matchingdelay+1):end][:,:],size(rxpulses,1));
然后将随时间变化的增益应用于信号,以便在所有范围内使用恒定的阈值。
range_gates = prop_speed*fast_time_grid/2;
lambda = prop_speed/fc;
tvg = EngeePhased.TimeVaryingGain(
RangeLoss=2*fspl(Vector(range_gates),lambda),
ReferenceLoss=2*fspl(max_range,lambda));
rxpulses = tvg(rxpulses);
不连贯累积
现在,有必要对接收到的脉冲进行非相干累加,以进一步提高有效值。
rxpulses = pulsint(rxpulses,"noncoherent");
RadarPulsePlot(rxpulses,threshold,fast_time_grid,slow_time_grid,1)
累积后,数据就可以进入最后的检测阶段。从上图可以看出,没有误报。
目标范围检测
最后,对累积脉冲进行阈值检测。检测电路会识别峰值,然后将其位置转换为目标范围。
_,range_detect = findpeaks(rxpulses,"MinPeakHeight",sqrt(threshold));
真实和估计的目标范围如下:
true_range = round.(tgtrng;sigdigits=4)
println("Истинная дальность: $(true_range) м")
range_estimates = round.(range_gates[range_detect];sigdigits=4)
print("Оценка дальности: $(range_estimates) м")
请注意,根据雷达系统可达到的测距分辨率(在本例中为 50 米),这些测距估计值是准确的。
结论
在本例中,我们使用了低频调制信号类型进行测距探测。通过使用这种信号,我们能够降低所需的峰值发射功率,从而使目标波动模型Swerling-2的探测距离更远(8 千米)。