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

Системная модель бистатического радара с двумя целями

В примере рассмотрим моделирование бистатической радиолокационной системы с двумя целями. Передатчик и приемник бистатического радара расположены неодинаково и движутся по разным траекториям.

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

Рассмотрим подробней функциональную структуру модели:

  • Источник (Linear FM): в качестве зондирующего сигнала используется непрерывный сигнал с линейной частотной модуляцией (полоса равна 3 МГц, что соответствует 50 метрам разрешения по дальности);
  • Передатчик (Radar Transmitter): Усиливает импульс и имитирует движение передатчика;
  • Среда распространения (FreeSpace): сигнал распространяется до целей и обратно до приемника, претерпевая затухание пропорциональное расстоянию до цели;
  • Цель (Radar Targets): Отражает падающий сигнал и имитирует движение обеих целей;
  • Приемник (Radar Receiver): Принимает отраженный сигнал от цели, добавляет шум приемника и имитирует движение;
  • Фильтрация (Range Doppler Processing): в блока обработки используется буффер (Buffer) для накопления 64 импульсов и процессор, выполняет согласованную фильтрацию для оценка дальности и БПФ для оценки доплеровского смещения (скорости) ;

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

image.png

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

image.png

Модель радара представлена на рисунке ниже.

image_2.png

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

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

In [ ]:
include("$(@__DIR__)/ParamBistatic.jl")

paramBistatic = calc_param_BistaticRadar();

В модели приемник и передатчик разнесены и движутся по различным траекториям. Поддерживается 3 модели движения: равномерное, равноускоренное и пользовательское (траектория задается поточечно). Пример задания равномерного движения передатчика приведен ниже:

image_2.png

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 ) # Открыть модель
        model_output = engee.run( model, verbose=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( "BistaticRadar", @__DIR__); # Запустить модель
Building...
Progress 100%

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

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

In [ ]:
out_bistatic_engee = zeros(ComplexF64,size(out["out_bistatic"].value[1],1),size(out["out_bistatic"].value[2],2),length(out["out_bistatic"].value))
[out_bistatic_engee[:,:,i] = collect(out["out_bistatic"].value[i]) for i in eachindex(out["out_bistatic"].value)];

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

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

In [ ]:
using Plots
plotlyjs()
abs_out_map = abs.(out_bistatic_engee[:,:,2]).+eps(1.0)
range_doppler_map =  10log10.(abs.(abs_out_map).^2)
x_speed = range(-5000,5000;length = length(range_doppler_map[1,:]))
y_range = range(0,45;length = length(range_doppler_map[:,1]))
Plots.heatmap(x_speed, y_range, range_doppler_map,ylabel="Дальность,км ", 
    xlabel="Скорость км/ч", title="Карта доплеровских и временных задержек", colorbar_title="Мощность, дбВт",
    color=:viridis,size = (600,400) )
Out[0]:

Вывод

В примере была рассмотрена работа бистатической радиолокационной системы с двумя целями. В результате работы РЛС была построена карта доплеровских откликов (по скорости) и временных задержек (дальность), с помощью которой было определено положение и скорости двух целей.

Блоки, использованные в примере