Engee documentation
Notebook

Model of single-position radar system with application of system objects

This model demonstrates the operation of a simple single position radar system.

Description of the system model

A special feature of the model is that the radar transmitter and receiver do not contain an antenna array, thus the antenna is equivalent to a simple isotropic element.

The probing signal is a sequence of rectangular pulses that are amplified in the transmitter.

The signal is then propagated from the transmitter output to the target through free space. The reflected signal is received by the receiver.

The receiver amplifies the signal and also adds its own noise.

A matched filter is used as a processing unit and the propagation losses are compensated by adjusting the gain.

The final processing step is incoherent accumulation. The schematic of the model operation is shown in the figure

shem_1.jpg

Digital processing consists of the following elements:

shem_2.jpg

Implementation of the blocks described above.

Validation of input parameters

In [ ]:
cd( @__DIR__ )
using Pkg; Pkg.add("DSP")
include( "initRadarParam.jl" );
paramRadar = initRadarParam();

Definition of the rectangular signal.

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
); # Порт вывода коэффициентов 

Definition of transmitter parameters.

In [ ]:
transmitter = EngeePhased.Transmitter( 
    PeakPower = paramRadar.peakPower, # Пик мощности 
    Gain = paramRadar.txGain, # коэффициент усиления 
    LossFactor = paramRadar.lossFactor, # Коэффициент потерь 
    InUseOutputPort = true, # Используется выходной порт 
    CoherentOnTransmit = true); # Когерентный при передаче 

Definition of the external channel.

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 
);

Radar setting.

In [ ]:
target = EngeePhased.RadarTarget( 
    MeanRCS = paramRadar.target1Rcs, # Среднее значение RCS
    Model = "Nonfluctuating", # Модель 
    PropagationSpeed = paramRadar.propSpeed, # Скорость распространения 
    OperatingFrequency = paramRadar.fc); # Рабочая частота 

Include noise in the channel, if noise is not equal to 1, there is no noise in the channel.

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

Filter definition

In [ ]:
mfilter = EngeePhased.MatchedFilter(
    CoefficientsSource="Property",
    Coefficients = paramRadar.matchingCoeff, # Коэффициенты 
    SpectrumWindow = "None", # Окно спектра 
    GainOutputPort = false # Выходной порт усиления 
);

Determining the change in gain over time.

In [ ]:
TVG = EngeePhased.TimeVaryingGain( 
    RangeLoss = paramRadar.rangeLoss, # Потеря дальности 
    ReferenceLoss = paramRadar.referenceLoss # Эталонные потери 
);

Definition of pulse integrator.

In [ ]:
integrator = EngeePhased.PulseIntegrator(
    CoherentFlag = "Noncoherent", # Метод 
    NumberPulses = paramRadar.numPulseInt, # Число импульсов 
    IntegrationOverlap = 0 
);

Definition of a moving platform.

In [ ]:
platform = EngeePhased.Platform( 
    MotionModel = "Velocity", # Модель движения 
    InitialPosition = paramRadar.target1Pos, # Исходное положение 
    Velocity = paramRadar.target1Vel, # Скорость 
); #1/paramRadar.prf

Execution of processing in a cycle. All the above described objects are combined into one system and executed in a cycle describing the operation of the system in time.

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

Integrator output displays in the range from 0 to 5000 m

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]:

Conclusion

We have examined the performance of a simple single position radar system. The final graph of the integrator output shows that the system found the peak, that is, it was able to detect an object at a distance of 2000 metres. This means that this radar method works correctly.