😊Forward
发布日期

WRSP6TK 雷达 TR 测试软件源码精讲(6):远场接收测试与单极化变体

作者

M先生

WRSP6TK 雷达 TR 测试软件源码精讲(6):远场接收测试与单极化变体

本篇讲解模式 6(远场接收测试),并总结整个软件的双极化/单极化双轨架构。

一、远场测试的目的与条件

1.1 为什么需要"远场"?

天线方向图是远场特性——只有在足够远处,天线辐射才近似平面波,方向图才"稳定成形"(不再随距离变化)。近场测得的方向图是"畸变"的。

远场条件

Rff2D2λR_{ff} \ge \frac{2D^2}{\lambda}

其中 DD 为天线口径,λ\lambda 为波长。例:D=2D = 2m、f=9.1f = 9.1GHz(λ3.3\lambda \approx 3.3cm)→ Rff2×4/0.033242R_{ff} \ge 2\times4/0.033 \approx 242m。这就是为什么远场测试需要大场地。

1.2 测试目的

远场接收测试:信号源放在远场照射,雷达接收,逐通道记录幅度。用途:

  • 验证整机(天线+TR+接收链路)接收方向图
  • 与暗室测试结果互验
  • 阵列通道一致性终检

二、模式 6 流程

2.1 初始化(FarFieldReceiveInit)

void CTRTestSC::FarFieldReceiveInit()
{
    // 1. 统计有效通道数(根据 DBF 使能与否走不同逻辑)
    m_ValidChnnNum = GetValidChannNum(Cmd[dspParaDBFEna], Cmd);

    // 2. 创建数据文件
    FileName.Format("FarField_%04d%02d%02d%02d%02d%02d_%d.txt", 时间, m_RfFreqFloat);
    m_FarFieldFile.Open(...);

    // 3. 下发全部参数到 DSP
    USER_SetAllPara(g_SendMask, Cmd[dspParaDBFEna], Cmd);

    // 4. 若 DBF 扫描模式 → 需要全 IQ 数据
    if(m_DbfScanFlag)
        g_TrTestNeedSpaceIQFlag = TRUE;

    m_StartTrTest = TRUE;
}

GetValidChannNum 的逻辑(值得单独讲):

if (isDbfValid)  // DBF 使能
{
    if ((Para[dbfIQType] & 0x01) != 0x01)  // 非按IQ方式
    {
        // 统计 dbfTermDIFRMask0 起的掩码中置位的通道数
        for (j=0; j<MAXDIFRNUMBER; j++)
          for (i=0; i<16; i++)
            if (Para[dbfTermDIFRMask0+j] & (0x01<<i)) dbfBeamNum++;
    }
    else  // 按IQ方式:根据终端号选掩码段
    {
        switch(g_TermID) { case 0: AddrOffset=dbfTerm0Mask0; ... }
        for (j=0; j<4; j++)
          for (i=0; i<16; i++)
            if (Para[AddrOffset+j] & (0x01<<i)) dbfBeamNum++;
    }
}
else  // 无 DBF:统计 pMultiChanOutSel 中未屏蔽的通道
{
    for (i=0; i<16; i++)
        if ((Para[pMultiChanOutSel] & (0x01<<i)) == 0) dbfBeamNum++;
}

掩码(Mask)统计法:DSP 用位图掩码描述"哪些通道有效"(1=有效)。软件遍历掩码数 1 的个数就是有效通道数。位图是嵌入式系统最紧凑的集合表示——一个 32 位整数能表达 32 个通道的开关状态。

2.2 数据采集(FarFieldReceiveProcess)

void CTRTestSC::FarFieldReceiveProcess()
{
    short *DataPoint;
    for(i=0; i<MAXACHANNUM; i++)
    {
        // 每个通道的数据位置:结果缓冲 + 帧头 + (BinNum+头长)*通道号
        DataPoint = (short*)(dspBuf + g_ResultBufStart[0] + ZVWHEADLEN
                             + (Cmd[dspParaBinNum]+ZVWHEADLEN)*i);
        m_ChanAmp[i] = DataPoint[Cmd[dspParaSuLocate]] * 0.01f;  // 幅度×0.01
    }
    SetEvent(m_TRTestDataEvent);
}

数据布局:DSP 结果缓冲里,各通道数据按"通道号×(距离库数+头长)"间隔排列。dspParaSuLocate 指定取哪个距离单元的幅度,*0.01 把定点数转成 dB 单位(DSP 内部用 0.01dB 量化)。

2.3 写文件(FarFieldReceiveProc)

// 每行:角度 + 各通道幅度
if(m_DbfScanFlag)
    value.Format("%.3f\t", (USHORT)dspStatus[dspELSt]*0.01f);  // DBF扫描:用状态字仰角
else
    value.Format("%.3f\t", m_FarFieldAngle);                    // 固定:用界面角度

for(i=0; i<m_ValidChnnNum; i++)
    value += Format("%.3f\t", m_ChanAmp[i]);
value += "\n";
m_FarFieldFile.Write(value);

文件格式:每行 = 一个测量角度 + 所有通道幅度。转台每转到一个角度写一行,最终形成"角度×通道"矩阵,可直接绘图或导入专业工具做方向图分析。

2.4 DBF 扫描模式

if(m_DbfScanFlag)
{
    g_TrTestNeedSpaceIQFlag = TRUE;   // 需要全 IQ
    // 写文件时角度取 dspStatus[dspELSt](实时仰角)
}

DBF 扫描时,雷达自身在电扫(波束跳变),软件需要全 I/Q 数据流,角度从 DSP 状态字实时读取——电扫角度由 DSP 控制,软件只记录

三、单极化(SL)变体:全软件的双轨架构

3.1 什么是 SL?

SL = Single-Line / Single-Polarization(单极化)。当 g_Dbf2SysInfo.DualPolarProcEna == false 时,系统只有一路极化(通常 H),不需要双通道处理。

3.2 双轨架构

模式 0:RecvAdjustInit  vs  SLRecvAdjustInit
模式 1:SendAdjustInit  vs  SLSendAdjustInit
模式 2:AntRecvAdjustInit vs SLAntRecvAdjustInit
模式 3:AntSendAdjustInit vs SLAntSendAdjustInit
模式 4:DarkRoomRecvInit vs SLDarkRoomRecvInit
模式 5:DarkRoomSendInit vs SLDarkRoomSendInit
(模式 6SL:远场天然按通道采集)

调度入口:

switch(m_TrTestMode)
{
case 0:
    if(g_Dbf2SysInfo.DualPolarProcEna) RecvAdjustInit();
    else                                SLRecvAdjustInit();
    break;
...
}

3.3 SL 与双极化的具体差异

差异点双极化单极化 SL
单元数g_BeamArrayNum >> 1(H/V 各半)g_BeamArrayNum(全部)
数据布局H/V 交替存储(BinNum*2*2*i单路连续(BinNum*2*i
GPIOPORT 控制按 H/V 设置电平固定
TR 控制g_TRMapData 查表SCUartCtlDataSL 查表
取样双通道 I/Q单通道 I/Q

数据布局差异示例(暗室接收):

// 双极化:H 在 4×BinNum×i 处,V 在 4×BinNum×i+2×BinNum 处
H: globalBuf[BinNum*2*2*i + 2*SuLocate]
V: globalBuf[BinNum*2*(2i+1) + 2*SuLocate]

// 单极化:每波位只占 2×BinNum
H: globalBuf[BinNum*2*i + 2*SuLocate]

计算机知识:这是"同一软件支持两种硬件配置"的经典手法——用全局配置开关(DualPolarProcEna)驱动两套实现,避免每次判断散落在代码各处。代价是代码量翻倍(这也是为什么这个文件有 8000 多行),维护时需要"改了双极化记得改单极化"。

四、全 6 模式的功能矩阵

模式目的信号源扫描输出
0 内接收校准接收通道幅相校准机内校准系数文件
1 内发射校准发射通道幅相校准机内取样逐通道校准系数文件
2 外接收校准含天线的接收校准外部信号源转台校准系数文件
3 外发射校准含天线的发射校准外部接收转台校准系数文件
4 暗室接收波瓣接收方向图暗室信号源仰角+DBF波瓣数据文件
5 暗室发射波瓣发射方向图发射取样仰角波瓣数据文件
6 远场接收整机接收方向图远场信号源角度角度×通道文件

五、一句话总结

模式 6 是"最朴素"的测试:转台转一个角度、记一行各通道幅度,靠 DSP 结果缓冲的通道交错布局逐通道取数。 而整个软件的双极化/单极化双轨,则体现了"一套软件适配两种硬件"的工程取舍——灵活但倍增维护量。

下一篇:WRSP6TK 雷达 TR 测试软件源码精讲(7):数据后处理——方向图计算、波束宽度、副瓣与校准系数打包

WRSP6TK 雷达 TR 测试软件源码精讲(6):远场接收测试与单极化变体

评论加载中…