使用系统对象的单位置雷达系统的模型
该模型演示了一个简单的单位置雷达系统的操作。
系统模型的描述
该模型的特殊之处在于雷达发射器和接收器不包含天线阵列,因此天线相当于一个简单的各向同性元件。
一个矩形脉冲序列被用作探测信号,在发射机中被放大。
然后,从发射器的输出,信号通过自由空间传播到目标。 反射信号传输到接收器。
接收器放大信号并添加其自身的噪声。
采用匹配滤波器作为处理单元,通过增益控制补偿传播损耗。
加工的最后阶段是非相干积累。 模型的方案如图所示
数字处理由以下元素组成:
上面描述的块的实现。
输入参数的验证
In [ ]:
cd( @__DIR__ )
using Pkg; Pkg.add("DSP")
include( "initRadarParam.jl" );
paramRadar = initRadarParam();
矩形信号的定义。
In [ ]:
rectangular = EngeePhased.RectangularWaveform(
SampleRate = paramRadar.fs, # Символьная скорость
DurationSpecification = "Pulse width", # Метод
PulseWidth = 1/paramRadar.pulseBw, # Ширина импульса
PRF = paramRadar.prf,
FrequencyOffset = 0, # Смещение частоты
OutputFormat = "Pulses", # Выходной формат
NumPulses = 1, # Число импульсов
PRFOutputPort = false, # Выходной порт PRF
CoefficientsOutputPort = false
); # Порт вывода коэффициентов
确定发射机的参数。
In [ ]:
transmitter = EngeePhased.Transmitter(
PeakPower = paramRadar.peakPower, # Пик мощности
Gain = paramRadar.txGain, # коэффициент усиления
LossFactor = paramRadar.lossFactor, # Коэффициент потерь
InUseOutputPort = true, # Используется выходной порт
CoherentOnTransmit = true); # Когерентный при передаче
外部通道的定义。
In [ ]:
free_space_1 = EngeePhased.FreeSpace(
SampleRate = paramRadar.fs, # Частота дискретизации
PropagationSpeed = paramRadar.propSpeed, # Скорость распространения
OperatingFrequency = paramRadar.fc, # Рабочая частота
TwoWayPropagation = false, # Двустороннее распространение
MaximumDistance = paramRadar.maxRange # Максимальное расстояние
);
free_space_2 = EngeePhased.FreeSpace(
SampleRate = paramRadar.fs,
PropagationSpeed = paramRadar.propSpeed,
OperatingFrequency = paramRadar.fc,
TwoWayPropagation = false,
MaximumDistance = paramRadar.maxRange
);
设置雷达。
In [ ]:
target = EngeePhased.RadarTarget(
MeanRCS = paramRadar.target1Rcs, # Среднее значение RCS
Model = "Nonfluctuating", # Модель
PropagationSpeed = paramRadar.propSpeed, # Скорость распространения
OperatingFrequency = paramRadar.fc); # Рабочая частота
启用信道中的噪声,如果噪声不等于1,则信道中没有噪声。
In [ ]:
noise = 1; # Шум Вкл/Выкл
noise == 1 ? print("Приемник с шумами") : print("Приемник без шумов")
receiver = EngeePhased.ReceiverPreamp(
Gain = paramRadar.gain, # Прирост
LossFactor = paramRadar.lossFactor, # Коэффициент потерь
NoiseMethod = "Noise temperature", # Шумовой метод
NoiseFigure = 0.2, # Коэффициент шума
ReferenceTemperature = noise == 1 ? paramRadar.referenceTemperature : 1e-323, # Эталонная температура
SampleRate = paramRadar.fs, # Частота дискретизации
EnableInputPort = true, # Входной порт управления
PhaseNoiseInputPort = false) # Входной порт фазового шума
Out[0]:
过滤器定义
In [ ]:
mfilter = EngeePhased.MatchedFilter(
CoefficientsSource="Property",
Coefficients = paramRadar.matchingCoeff, # Коэффициенты
SpectrumWindow = "None", # Окно спектра
GainOutputPort = false # Выходной порт усиления
);
增益随时间变化的确定。
In [ ]:
TVG = EngeePhased.TimeVaryingGain(
RangeLoss = paramRadar.rangeLoss, # Потеря дальности
ReferenceLoss = paramRadar.referenceLoss # Эталонные потери
);
脉冲积分器的定义。
In [ ]:
integrator = EngeePhased.PulseIntegrator(
CoherentFlag = "Noncoherent", # Метод
NumberPulses = paramRadar.numPulseInt, # Число импульсов
IntegrationOverlap = 0
);
动平台的定义。
In [ ]:
platform = EngeePhased.Platform(
MotionModel = "Velocity", # Модель движения
InitialPosition = paramRadar.target1Pos, # Исходное положение
Velocity = paramRadar.target1Vel, # Скорость
); #1/paramRadar.prf
循环执行处理。 上面描述的所有对象被组合成一个系统,并在描述系统随时间的操作的循环中执行。
In [ ]:
N = paramRadar.numPulseInt
for i = 0:9
rectangular_out = rectangular()
platform_pos, platform_vel = platform(1/paramRadar.prf)
transmitter_out, transmitter_status = transmitter(rectangular_out)
free_space_1_out = free_space_1(transmitter_out, paramRadar.radar_pos, platform_pos, paramRadar.radar_vel, platform_vel)
target_out = target(free_space_1_out)
free_space_2_out = free_space_2(target_out, platform_pos, paramRadar.radar_pos,platform_vel, paramRadar.radar_vel)
receiver_out = receiver(free_space_2_out, [~transmitter_status[i] for i ∈ eachindex(transmitter_status)])
filter_out = mfilter(receiver_out)
TVG_out = TVG(filter_out)
global integrator_out = integrator(TVG_out)
end
在0到5000m范围内显示积分器输出
In [ ]:
plot(paramRadar.rangeGates, abs.(integrator_out)*1e6,label="",
xlabel="Дальность, м", ylabel="Мощность, мкВт",
title="Отклик отраженного сигнала после согласованной фильтрации ",
titlefont=font(14,"Computer Modern"),fontfamily="Compute Modern",lw=2,gridalpha=0.2)
Out[0]:
结论
我们已经审查了一个简单的单位置雷达系统的操作。 积分器输出的最终图表显示系统已经找到了一个峰值,也就是说,它能够在2000米的距离处检测到一个物体。 这意味着这种雷达方法工作正常。