- 发布日期
WRSP6TK 雷达 TR 测试软件源码精讲(6):远场接收测试与单极化变体
作者
M先生
WRSP6TK 雷达 TR 测试软件源码精讲(6):远场接收测试与单极化变体
本篇讲解模式 6(远场接收测试),并总结整个软件的双极化/单极化双轨架构。
一、远场测试的目的与条件
1.1 为什么需要"远场"?
天线方向图是远场特性——只有在足够远处,天线辐射才近似平面波,方向图才"稳定成形"(不再随距离变化)。近场测得的方向图是"畸变"的。
远场条件:
其中 为天线口径, 为波长。例:m、GHz(cm)→ m。这就是为什么远场测试需要大场地。
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
(模式 6 无 SL:远场天然按通道采集)
调度入口:
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 测试软件源码精讲(6):远场接收测试与单极化变体
评论加载中…
