Модель демонстрирует работу простой однопозиционной радиолокационной системы c множественными целями (по умолчанию - 4), координаты которых задаются в файле ParamMMT.jl.
В отличие от примера моделирования моностатической РЛС с одной целью, в приемо-передающем тракте есть возможность управлять геометрией антенной решетки, которая формирует многолепестковый вид диаграммы направленности (ДН).
Рассмотрим более детально структурную схему модели:
Схема работы модели представлена на рисунке ниже.
Цифровая обработка состоит из следующих элементов:
Опираясь на структурную схему, мы разработали модель радара, показанную на рисунке ниже.
Для инициализации входных параметров модели подключим файл "ParamMMT.jl". Если требуется изменить значения параметров, то откройте данный файл и отредактируйте необходимые параметры
include("$(@__DIR__)/ParamMMT.jl");
paramRadarMT = calcParams();
В модели возможна гибкая настройка антенной решетки передатчика и приемника, включающая в себя: тип элемента, геометрию антенной решетки (пример задания параметров антенной решетки приведены на рисунке ниже):
Дополнительно, существует возможность визуализации диаграммы направленности антенной решетки (АР) с помощью функции pattern(). Построим ее, взяв за основу геометрию из рисунка выше:
# задание антенного элемента
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)
Из ДН видно, что вдоль оси y АР практически не излучает, а вот в плоскости x-z излучает лучше всего.
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 ); # Запустить модель
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;
out = run_model("MonostaticRadarMT", @__DIR__); # запуск модели
Считаем из переменной out необходимый выход (в нашем случае "out_MR_MT"):
result = (out["out_MR_MT"]).value;
Построим отклик системы на последнем шаге модели, полученный в предыдущем пункте:
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)
В примере была рассмотрена работа простой однопозиционной радиолокационной системы. В результате работы РЛС было обнаружено 4 цели на ранее заданном расстоянии (1045, 1988, 3532 и 3845 метрах).