Документация Engee
Notebook

Системная модель однопозиционной радиолокационной системы с несколькими целями

Модель демонстрирует работу простой однопозиционной радиолокационной системы c множественными целями (по умолчанию - 4), координаты которых задаются в файле ParamMMT.jl.

В отличие от (ссылка на модель), в приемо-передающем тракте есть возможность управлять геометрией антенной решетки, которая формирует многолепестковый вид диаграммы направленности (ДН).

1. Описание структуры модели

Рассмотрим более детально структурную схему модели:

  • Источник (Waveform Rectungular): в качестве зондирующего сигнала используется последовательность прямоугольных импульсов;
  • Передатчик (Transmitter): в передатчике усиливается сигнал и формируется ДН с помощью антенной решетки;
  • Среда распространения (Free Space): сигнал распространяется до целей и обратно до приемника, претерпевая затухание пропорциональное расстоянию до целей;
  • Цель (Radar Target): Отражает падающий сигнал и имитирует движение обеих целей;
  • Приемник (Receiver Preamp): сигнал отраженный от целей поступает на приемную антенную решетку и усиливается с добавлением собственных тепловых шумов приемника.
  • Цифоровая обработка сигнала: цифровая обработка состоит из следующих этапов: формирование луча (BeamFormer), согласованная фильтрация (Matched Felter), перестраиваемое усиление (Time Varying Gain), некогерентное накопление (Pulse Integrator);

Схема работы модели представлена на рисунке ниже.

shem_1.jpg

Цифровая обработка состоит из следующих элементов:

image.png

Опираясь на структурную схему, мы разработали модель радара, показанную на рисунке ниже.

image_2.png

2. Инициализация входных параметров

Для инициализации входных параметров модели подключим файл "ParamMMT.jl". Если требуется изменить значения параметров, то откройте данный файл и отредактируйте необходимые параметры

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

В модели возможна гибкая настройка антенной решетки передатчика и приемника, включающая в себя: тип элемента, геометрию антенной решетки (пример задания параметров антенной решетки приведены на рисунке ниже):

image_2.png

Дополнительно, существует возможность визуализации диаграммы направленности антенной решетки (АР) с помощью функции pattern(). Построим ее, взяв за основу геометрию из рисунка выше:

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

Из ДН видно, что вдоль оси y АР практически не излучает, а вот в плоскости x-z излучает лучше всего.

3. Запуск модели

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 3%
Progress 10%
Progress 15%
Progress 21%
Progress 26%
Progress 32%
Progress 38%
Progress 44%
Progress 49%
Progress 54%
Progress 61%
Progress 67%
Progress 74%
Progress 79%
Progress 85%
Progress 91%
Progress 98%
Progress 100%
Progress 100%

4. Считывание выходных данных

Считаем из переменной out необходимый выход (в нашем случае "out_MR_MT"):

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

5. Отображение результатов

Построим отклик системы на последнем шаге модели, полученный в предыдущем пункте:

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

Вывод

В примере была рассмотрена работа простой однопозиционной радиолокационной системы. В результате работы РЛС было обнаружено 4 цели на ранее заданном расстоянии (1045, 1988, 3532 и 3845 метрах).