- 发布日期
雷达 TR 测试软件:系统总览与架构
作者
M先生
WRSP6TK 雷达 TR 测试软件源码精讲(1):系统总览与架构
本系列以
C:\Data\WRSP6TK64_SRC_20260730\WRSP6TK\WRSP6TK工程中的CTRTestSC(TRTestSC.cpp,约 8 千行)为对象,逐模式剖析相控阵雷达 TR 组件测试软件的实现,并补充背后的物理规律、公式与计算机知识。本篇为总览。
一、这个软件是干什么的?
CTRTestSC 是一个 TR 组件测试与校准工具,运行在雷达上位机(Windows/MFC 对话框程序)上,用来:
- 校准:测量每个 TR 组件的幅度/相位误差,生成校准系数(发射/接收、H/V 极化、内/外校准)
- 测波瓣图:在暗室(微波暗室)里测量天线的发射/接收方向图,计算波束宽度、副瓣电平
- 远场测试:采集各通道幅度,用于远场方向图评估
一句话:它是雷达出厂前"体检"和"矫正"的工具软件。
二、硬件链路(先画全局地图)
┌──────────────────────────────────────────┐
│ 上位机(本软件) │
│ MFC对话框 + 数据线程 + 文件/Excel导出 │
└──────┬───────────┬───────────┬───────────┘
│ │ │
TRBEAMPORT │ UART0PORT│ RXBEAMPORT/RXCORRPORT/
(发射波束系数)│ (TR开关) │ TRCORRPORT(校正系数)
▼ ▼ ▼
┌──────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│ TR组件阵列 │◄──┤ 波控/功放 │ │ TR控制(串口) │ │ DIFR收发机 │
│ (H/V极化单元) │ │ (TRBEAM) │ │ (UART) │ │ (数字中频) │
└──────┬───────┘ └────────────┘ └────────────┘ └─────┬──────┘
│ │
└─────────────── 天线阵面 ─────────────────────────┘
▲
DSP 回传数据(网络/UDP)→ globalBuf
四条软件-硬件通道:
| 通道 | 端口宏 | 用途 |
|---|---|---|
| 发射波束系数 | TRBEAMPORT | 下发各 TR 通道发射波束的幅相系数 |
| 校正系数 | TRCORRPORT / RXCORRPORT | 下发接收/发射校准系数(含 DIFR 校正) |
| 接收波束系数 | RXBEAMPORT | 下发 DBF 接收波束系数 |
| TR 通道开关 | UART0PORT | 串口控制 TR 组件开关(通/断、选通道) |
术语注释:
- TR 组件(T/R Module,收发组件):相控阵天线每个单元后面接的"小雷达",含发射功放、接收低噪放、移相器、衰减器。阵列有多少个单元就有多少个 TR 组件。
- DIFR(Digital IF Receiver,数字中频接收机):把射频信号下变频到中频并数字化,做数字下变频(DDC)、数字正交变换得到 I/Q 数据。一个 DIFR 通常对应多个通道。
- DBF(Digital Beam Forming,数字波束形成):在数字域对各通道 I/Q 加权求和形成波束。
- 波控(Beam Steering):计算并下发每个移相器的控制数码。
- I/Q 数据:正交解调后的同相/正交分量,携带回波的幅度和相位信息。
三、7 种测试模式(m_TrTestMode)
┌────┬────────────────────────┬──────────────────────────────────┐
│ 0 │ 内接收校准 RecvAdjust │ 机内信号源注入,校准接收通道幅相 │
│ 1 │ 内发射校准 SendAdjust │ 机内耦合取样,校准发射通道幅相 │
│ 2 │ 外接收校准 AntRecvAdjust│ 外接信号源(天线口),校准接收通道 │
│ 3 │ 外发射校准 AntSendAdjust│ 外接测量,校准发射通道 │
│ 4 │ 暗室接收波瓣图 DarkRoomRecv │ 暗室转台扫描,测接收方向图 │
│ 5 │ 暗室发射波瓣图 DarkRoomSend │ 暗室扫描,测发射方向图 │
│ 6 │ 远场接收测试 FarFieldReceive│ 远场逐通道幅度采集 │
└────┴────────────────────────┴──────────────────────────────────┘
每种模式都有双极化版(g_Dbf2SysInfo.DualPolarProcEna 为真,H/V 同时处理)和单极化 SL 版(假,只处理一路)。
四、数据流与线程模型
4.1 线程模型
主线程(UI 消息循环)
└─ OnBnClickedButtonTrteststart:读取参数、调用对应 Init()
└─ OnTimer(1):定时触发一次取数(g_TrTestNeedSpaceIQFlag = TRUE)
└─ OnComm:串口收到 TR 位置/计数帧
数据线程(TRTestDataThread,最高优先级,等待事件)
└─ 收到 m_TRTestDataEvent 事件后 → 调用对应模式的 DataProc()(后处理)
关键机制:
SetEvent(m_TRTestDataEvent):当一帧数据取完(...DataProcess回调里)后触发事件,唤醒数据线程做后处理g_TrTestNeedSpaceIQFlag:定时器到点置位,表示"该取一次 I/Q 数据了"- 数据回调(
...DataProcess)→ 线程(...DataProc)两级流水:采集与处理解耦,避免 UI 卡顿
4.2 数据缓冲
globalBuf / g_DBFDataBuff(DSP 回传的原始 I/Q 数据)
│
├─ 结构:每通道 I/Q 交替存储
│ H通道: globalBuf[BinNum*2*2*i + 2*SuLocate] (I)
│ globalBuf[BinNum*2*2*i + 2*SuLocate + 1](Q)
│ V通道: globalBuf[BinNum*2*(2i+1) + ...]
│
└─ 其中:BinNum=距离库数,SuLocate=取样距离单元,
i = 波位/通道序号
计算机知识:数据按"通道×距离库×I/Q"交错存储,是为了让 DSP 顺序写、顺序读,充分利用缓存局部性(cache-friendly),避免随机访问。
五、UART 串口同步协议
// TRTestOpenUart:发 0x5a 握手,开启接收
// OnComm:逐字节解析
0xa5(帧头)→ 3 字节计数(Stm32Count)→ 帧结束
if (Stm32Count == m_DataCount) // 计数连续 = 位置有效
SetTimer(1, m_GetDataTime); // 延时后取数
else
m_UartErrorCount++; // 位置乱序,记错误
作用:TR 转台/扫描机构每到一个新位置,通过 UART 上报位置计数。软件用"计数连续"判断位置是否有效,再延时等待 DSP 数据稳定后取数。
计算机知识:这是典型的生产者-消费者同步——硬件(TR 位置)是生产者,软件取数是消费者,中间用"计数校验 + 定时器延时"做软同步。串口数据逐字节到达(每字节触发一次 OnComm),所以需要状态机(
m_CommHeadFlag+m_CommDataCount)拼帧。
六、测试参数配置体系
6.1 三类参数来源
| 来源 | 内容 | 读取函数 |
|---|---|---|
TRTestConfig.ini | 测试模式、阵列参数、串口、角度表 | OpenTRConfig |
TestPara\*.txt(14 个文件) | 各模式的 DSP 命令参数 | ParaOpen → m_xxxCmd[] |
| 界面控件 | DIFR 选择、通道选择、时延参数 | DisplayPannel |
6.2 14 个参数文件的命名规律
Inner/Outer/Lobe × Recv/Send × Calibtate/Difr + M(多波束)
校准区域 收发方向 参数类型
例:
InnerRecvCalibtate.txt → 内接收校准参数
LobeSendMDifr.txt → 暗室发射波瓣图多波束参数
计算机知识:参数文件是"数据与代码分离"的体现——测试参数变化频繁(频点、通道、扫描范围),若硬编码在代码里,每次修改都要重新编译。改成配置文件后,运行时可调、无需重编译。
6.3 阵列参数
| 参数 | 含义 |
|---|---|
m_ArrayXInterval / m_ArrayYInterval | 单元 X/Y 间距(cm),决定波束指向公式里的 d |
m_ArrayGapNum | 每个单元的"份数"(多通道复用时的逻辑分组) |
m_ArrayLineNum | 波瓣图需要采集的线数 |
g_BeamArrayInterval | 全局单元间距(cm) |
g_BeamArrayNum | 全局单元数 |
七、核心数据结构速查
| 结构 | 用途 |
|---|---|
m_AdjustSrcIQ[][2] | 校准源 I/Q(测量到的原始幅相) |
m_AdjustFactIQ[][2] | 校准系数 I/Q(待下发) |
m_AdjustSrcAP / m_AdjustFactAP[][2] | 对应的幅度/相位(dB/度) |
m_DarkRoomSouIQ[][][2] | 暗室数据(i: 单元份数, j: 线数) |
m_DarkRoomSouTmpHIQ[80][][2] | 暗室多波位暂存(H) |
m_ScanBeamBit[900] | 扫描波位表(仰角编码) |
m_BeamData / m_TmpBeamData[][] | 发射波束系数(32位打包) |
m_DBFBeamCoeff_DataI/Q[][] | DBF 接收波束系数(I/Q 浮点) |
八、软件工程要点总结
- 两级流水:采集回调(DataProcess)+ 处理线程(DataProc)解耦,UI 不卡
- 事件驱动:
CreateEvent+WaitForSingleObject线程同步 - 配置外置:ini + txt 参数文件,运行时加载
- 文件输出:测试结果写成 txt/Excel,文件名带频点、时间、角度(
%.3fGHz_..._%04d%02d%02d...),便于追溯 - 双极化/单极化分支:
DualPolarProcEna全局开关驱动两套流程,复用公共逻辑
九、一句话总结
TRTestSC 是一个"硬件在环"的测试上位机:通过四条通信通道(波束系数、校正系数、TR开关、DSP数据)驱动 TR 阵列,按 7 种模式完成校准与波瓣测量,用"回调采集 + 线程处理 + 事件同步"的架构保证实时性,用配置文件保证灵活性。
雷达 TR 测试软件:系统总览与架构
评论加载中…
