Engee 文档
Notebook

应用系统对象的单定位雷达系统模型

该模型展示了一个简单的单位置雷达系统的操作。

系统模型描述

该模型的一个特点是雷达发射器和接收器不包含天线阵列,因此天线相当于一个简单的各向同性元件。

探测信号是一串在发射器中放大的矩形脉冲。

然后,信号从发射器输出端通过自由空间传播到目标。接收器接收反射信号。

接收器在放大信号的同时也会增加自身的噪声。

匹配滤波器被用作处理单元,通过调节增益来补偿传播损耗。

最后的处理步骤是非相干累加。模型运行示意图如图所示

shem_1.jpg

数字处理包括以下要素

shem_2.jpg

实现上述功能块。

验证输入参数

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); # Рабочая частота 

包括通道中的噪声,如果 noise 不等于 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]:
ReceiverPreamp:
    Gain=20
    LossFactor=0
    NoiseMethod=Noise temperature
    NoiseFigure=0.2
    ReferenceTemperature=290
    SampleRate=5.99584916e6
    NoisePower=1.0
    EnableInputPort=true
    PhaseNoiseInputPort=false
    SeedSource=Auto
    Seed=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 至 5000 米

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 米距离上的物体。这说明这种雷达方法工作正常。