Engee 文档
Notebook

一种两用双稳态雷达系统模型

在这个例子中,我们来看看具有两个目标的双稳态雷达系统的建模。 双稳态雷达的发射器和接收器位于不同的位置并沿着不同的轨迹移动。

1. 模型结构的描述

让我们仔细看看模型的功能结构:

*源(线性调频):采用线性调频的连续信号作为探测信号(频段为3MHz,对应50米范围分辨率);
*雷达发射器:放大脉冲并模拟发射器的运动;
*分布环境(FreeSpace):信号传播到目标并返回接收器,经历与到目标的距离成比例的衰减;
*目标(雷达目标):反映入射信号并模拟两个目标的运动;
*接收器(雷达接收器):接收来自目标的反射信号,添加接收器噪声并模拟运动;
*滤波(范围多普勒处理):处理单元使用缓冲器累积64个脉冲,处理器执行一致滤波以估计范围和FFT以估计多普勒频移(速度) ;

该模型的运行方案如下图所示。

image.png

数字处理由以下元素组成:

image.png

雷达模型如下图所示。

image_2.png

2. 输入参数的初始化

要初始化模型的输入参数,我们将连接文件"Parambistic。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 0%
Progress 6%
Progress 15%
Progress 25%
Progress 31%
Progress 40%
Progress 50%
Progress 59%
Progress 65%
Progress 75%
Progress 81%
Progress 89%
Progress 96%
Progress 100%
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 [ ]:
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)
Out[0]:

结论

在该示例中,考虑了具有两个目标的双稳态雷达系统的操作。 作为雷达操作的结果,构建了多普勒响应(在速度方面)和时间延迟(范围)的地图,用于确定两个目标的位置和速度。

示例中使用的块