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

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

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

2. Инициализация входных параметров
Для инициализации входных параметров модели подключим файл "ParamBistatic.jl". Если требуется изменить значения параметров, то откройте данный файл и отредактируйте необходимые параметры
include("$(@__DIR__)/ParamBistatic.jl")
paramBistatic = calc_param_BistaticRadar();
В модели приемник и передатчик разнесены и движутся по различным траекториям. Поддерживается 3 модели движения: равномерное, равноускоренное и пользовательское (траектория задается поточечно). Пример задания равномерного движения передатчика приведен ниже:

3. Запуск модели
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;
out = run_model( "BistaticRadar", @__DIR__); # Запустить модель
4. Считывание выходных данных
Считаем из переменной out необходимый выход (в нашем случае "out_bistatic"):
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. Отображение результатов
Построим отклик системы по скорости и дальности, полученный в предыдущем пункте:
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), margin = 5*Plots.mm)
Вывод
В примере была рассмотрена работа бистатической радиолокационной системы с двумя целями. В результате работы РЛС была построена карта доплеровских откликов (по скорости) и временных задержек (дальность), с помощью которой было определено положение и скорости двух целей.