Engee documentation
Notebook

System model of a single-position radar system with multiple targets

The model demonstrates the operation of a simple single-position radar system with multiple targets (4 by default), the coordinates of which are specified in the ParamMMT.jl file.

Unlike example of a single-target monostatic radar simulation, the transmitting and receiving path has the ability to control the geometry of the antenna array, which forms a multi-blade pattern.

1. description of the model structure

Let's consider the structural diagram of the model in more detail:

  • Source (Waveform Rectungular): a sequence of rectangular pulses is used as a probing signal;
  • **Transmitter*: in the transmitter the signal is amplified and the DNL is formed with the help of an antenna array;
  • **Free Space*: The signal propagates to the targets and back to the receiver with attenuation proportional to the distance to the targets;
  • **Radar Target*: Reflects the incident signal and simulates the movement of both targets;
  • ** Receiver Preamp*: The signal reflected from the targets is fed to the receiving antenna array and amplified with the addition of the receiver's own thermal noise.
  • Digital Signal Processing: Digital processing consists of the following steps: BeamFormer, Matched Felter, Time Varying Gain, Pulse Integrator;

The schematic of the model operation is shown in the figure below.

shem_1.jpg

Digital processing consists of the following elements:

image.png

Based on the structural diagram, we developed the radar model shown in the figure below.

image_2.png

2 Initialisation of input parameters

To initialise the input parameters of the model we connect the file "ParamMMT.jl". If you need to change the values of parameters, open this file and edit the necessary parameters

In [ ]:
include("$(@__DIR__)/ParamMMT.jl");
paramRadarMT = calcParams();

The model allows flexible adjustment of the antenna array of the transmitter and receiver, including: type of element, geometry of the antenna array (an example of setting the parameters of the antenna array are shown in the figure below):

image_2.png

Additionally, it is possible to visualise the directional diagram of the antenna array (AA) using the function pattern(). Let's build it, taking as a basis the geometry from the figure above:

In [ ]:
# задание антенного элемента
antenna_element = EngeePhased.IsotropicAntennaElement(FrequencyRange=[0.0 1e20], BackBaffled=false)

# проектирование геометрии антенной решетки (в нашем случае ULA - линейная эквидистатная АР)
ULA_Array = EngeePhased.ULA(
    Element=antenna_element, # инициализация антенного элемента
    NumElements=4,# количество антенных элементов
    ElementSpacing=paramRadarMT.lambda/2, # расстояние между антенными элементами
    ArrayAxis="y", # ориентация элементов антенной решетки,
    Taper = 1 # весовой коэффициент антенного элемента
) 

# построение диаграммы направленности
pattern(ULA_Array,paramRadarMT.fc)
Out[0]:

From the DND we can see that along the y axis the AR practically does not radiate, but in the x-z plane it radiates best.

3. Running the model

In [ ]:
function run_model( name_model, path_to_folder ) # определение функции для прогона модели
    Path = path_to_folder * "/" * name_model * ".engee"
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    return model_output
end;
In [ ]:
out = run_model("MonostaticRadarMT", @__DIR__); # запуск модели
Building...
Progress 0%
Progress 3%
Progress 9%
Progress 16%
Progress 22%
Progress 29%
Progress 34%
Progress 40%
Progress 45%
Progress 52%
Progress 58%
Progress 65%
Progress 72%
Progress 77%
Progress 85%
Progress 97%
Progress 100%
Progress 100%

4. Reading output data

Read the required output (in our case "out_MR_MT") from the variable out:

In [ ]:
result = (out["out_MR_MT"]).value;

5. Displaying the results

Let us plot the response of the system in the last step of the model obtained in the previous paragraph:

In [ ]:
out_step_end = result[end] # считывание последнего шага модели
R_engee = paramRadarMT.metersPerSample .* (0:size(out_step_end, 1) - 1) .+ paramRadarMT.rangeOffset # сетка дальности
# построение графика
plot(R_engee,abs.(out_step_end)*1e6,title="Сигнал на выходе модели после обработки от 4 целей",label="",
    xlabel="Расстояние,м",ylabel="Мощность приемника, мкВт",gridalpha=0.5,lw=2,color=:blue)
Out[0]:

Conclusion

The example examined the operation of a simple single position radar system. The radar detected 4 targets at a previously specified distance (1045, 1988, 3532 and 3845 metres).