最近在做ILS净空评估时我把CSB/SBO方向图、辐射场叠加、DDM提取和多径效应仿真完整搭了一遍。说实话这套链路看起来不复杂——无非是天线阵方向图乘一乘、射线路径加一加、包络检波算一算——但真要在某个现场条件下把“新增机库后航道DDM会不会超限”这种问题回答清楚每一步都藏着不少细节。这篇文章打算用做项目的方式把ILS的SBO/CSB信号关系、多径对DDM的作用机制、以及仿真模型的搭建过程和常见坑都过一遍适合做航空导航地面设备、净空评估、电磁仿真或者对ILS信号体制好奇的朋友参考。1. 先理清底层的信号关系CSB、SBO、DDM是怎么一起工作的1.1 CSB和SBO不是两台发射机而是同一个天线阵的两路“馈电模式”很多朋友第一次接触ILS时会困惑航向信标LOC或者下滑信标GS不就是发射一个调幅信号吗为什么非要分出CSB和SBO两个名字实际上CSB和SBO确实是两路射频信号但它们在发射机里是同一个频率基准、同一个调制音频源生成的严格相干只是“携带的内容”不同。CSB的全称是Carrier and SideBands也就是载波加边带。它包含完整的载波同时也包含90Hz和150Hz调制的边带。在航向信标里CSB馈到天线阵时通常采用等幅或者设计好的幅度分布形成一个沿着跑道中心线方向最大、向两侧缓慢衰减的波束。这个波束决定了ILS航道的基本覆盖范围。SBO的全称是SideBands Only也就是只含边带、载波被抑制的信号。它和CSB的差别很关键SBO里只有90Hz和150Hz的边带分量没有载波。在馈电网络上SBO端口通常会分两路送到天线阵的左半阵和右半阵其中一路被反相。这样合成的SBO方向图会在天线阵的法线方向也就是跑道中心线方向出现一个零深而零深两侧的边带相位正好相反。可以用一个粗糙但好记的类比CSB是“底稿”决定了整个场区的基本形状SBO是“整形师”专门在中心线附近制造左右不对称。两者在空间叠加后航向道左右两侧的90Hz和150Hz调制深度会发生相反方向的偏置机载接收机才能判断飞机是在航道中心线的左边还是右边以及偏离了多少。下滑信标的道理类似只不过它是在垂直面内用CSB和SBO的交叉方式形成下滑道。下滑道设计通常让CSB方向图在大约下滑角上方占优SBO方向图在下方产生相反的边带偏置两者在空间交会后沿既定下滑角方向上DDM为零上下偏离时呈现出正确的极性。理解了航向信标下滑信标就只剩下坐标轴从水平换成垂直的问题。1.2 DDM不是抽象概念而是可以直接算出来的数值DDM是Difference in Depth of Modulation也就是90Hz信号调制深度和150Hz信号调制深度之差。机载接收机把收到的射频信号做包络检波再从检波后的音频信号里分别提取90Hz和150Hz分量的幅度最后算( DDM m_{90} - m_{150} )这里 (m_{90}) 和 (m_{150}) 是射频信号包络上对应音频分量的调制度。如果飞机严格在航道中心线上那么SBO方向图为零接收到的信号里90Hz和150Hz的调制深度相等DDM就是0。飞机偏向左边SBO叠加进去后让90Hz分量比150Hz分量强DDM为正偏向右边则相反。机头上的航道偏差指示器CDI指针偏转度和DDM成正比航向信标通常满偏刻度对应0.155 DDM下滑信标对应0.175 DDM。在仿真里为了把DDM算出来最忌讳的做法是拿“发射功率”直接算。因为DDM取决于载波和边带之间的复矢量关系不是功率标量叠加。真正的做法是建立复场强设接收点处CSB的复场强为 (E_C)SBO的复场强为 (E_S)。由于接收机最终对载波相位做参考所以边带分量并不是简单把 (|E_S|) 加上去就算完而要把 (E_S) 投影到 (E_C) 的相位方向上( E_{S,\parallel} \operatorname{Re}\left(E_S \cdot e^{-j \arg(E_C)}\right) )然后再算( m_{90} \propto m_0 \frac{|E_C| E_{S,\parallel}}{|E_C|} )( m_{150} \propto m_0 \frac{|E_C| - E_{S,\parallel}}{|E_C|} )( DDM m_{90} - m_{150} \propto \frac{2 m_0 E_{S,\parallel}}{|E_C|} )这里 (m_0) 是CSB里音频调制的基准调制度。这个式子把整个ILS信号体制的本质压得很干净DDM只跟“SBO在CSB载波相位方向上的投影”有关SBO中垂直于CSB相位的分量基本不产生DDM它只会让接收机看到一点载波相位扰动。理解这一点后面调仿真代码时能少走很多弯路。1.3 为什么没有SBO就成不了引导有段时间我做方向图数值实验故意把SBO通路关掉只保留CSB然后计算沿水平方向的DDM曲线。结果所有位置的DDM都是0。为什么因为CSB自己的90Hz和150Hz调制度在空间各方向虽然可能因为天线方向图频率响应的差异略有变化但在理想模型里这两个边带是同源的它们的调制深度变化趋势一致差值始终为零。换句话说CSB只告诉接收机“我在这儿有信号”但没办法告诉接收机“你偏了”。SBO的加入在中心线两侧制造了“边带差”。左侧90Hz比150Hz强右侧150Hz比90Hz强数值上就和飞机偏离角度近似成正比。这也是ILS被称为“等信号法”的原因导航不是靠信号强弱判断位置而是靠两个调制信号相等的位置判断位置。2. 多径效应让DDM从一条直线变成带毛刺的曲线2.1 多径不是“信号变差”那么简单而是复矢量叠加如果没有障碍物DDM沿航道中心线会是一条平滑的、近似线性过零的曲线。但现实跑道周边有机库、塔台、车辆、围界甚至大片积水或积雪这些都会让一部分电磁波经过反射后到达接收机。直射波和反射波在接收点进行的是矢量叠加不是功率相加。反射波不仅有路径延迟带来的相位差还有反射表面带来的幅度衰减和相位翻转。假设直射波为 (E_d)反射波为 (E_r)接收点总场就是 (E_d E_r)。多径效应对DDM的影响本质上不是“信号弱了”而是它改变了DDM表达式里的 (E_C) 和 (E_S) 的复数值。反射波可能让CSB载波相位发生偏移也可能让SBO在载波方向上的投影突然增大或减小。飞机往前飞几米路径差变化导致反射波相位转了一圈DDM就跟着上下波动于是飞行校验记录里看到的“航道抖动”“DDM毛刺”就出现了。这里有个容易踩的误区不要直接用多径功率衰落模型去套DDM。功率衰落算的是总功率变化但ILS引导信息藏在双边带调制度差里。一个反射体可能把总功率打掉1dBDDM却从0.00跳到0.08反过来总功率几乎不变的时候DDM也可能因为边带相位关系变化而剧烈波动。2.2 典型反射源地面、机库、车辆、雨雪哪种最危险按影响机制ILS多径大致分三类地面反射LOC和GS天线都架设在跑道附近地面是绕不开的反射面。对宽波束来说地面反射主要影响垂直方向图在低频段、大波长情况下镜像天线法能很好描述。地面反射的危险在于掠射角很小时反射系数接近-1处理不好会在某些角度形成深的零值。大型建筑物机库、航站楼这类尺寸远大于波长的目标镜面反射效应明显。反射波可以在很大范围内形成一个“虚拟天线”其等效相位中心跟着飞机位置移动。如果建筑物正好在第一菲涅尔区内影响可能持续几个海里。分散小目标车辆、围界、施工铁皮、积水坑。单个体积不大但数量多或者距离天线阵很近时同样不可忽略。特别是金属围界沿跑道方向延伸很长反射波一致性极强容易产生周期性DDM振荡。在实际评估中我最关注的是大型金属表面和靠近跑道中心线的长条状物体。它们不会像单点障碍物那样只影响某个固定飞行位置而是随着飞机进近路径差连续变化产生类似正弦波的DDM抖动脉冲。2.3 反射系数、菲涅尔区、相位延迟仿真里到底怎么取既然要做仿真就得把反射源数学化。最简单的模型是光学射线法反射点遵守入射角等于反射角反射波幅度等于入射波乘以反射系数相位等于路径延迟相位加上反射面相位变化。对光滑地面和建筑表面可以用菲涅尔反射系数水平极化反射系数 (R_h) 和垂直极化 (R_v) 公式都和入射余角、相对介电常数、电导率有关。ILS天线阵通常使用水平极化所以重点用 (R_h)。干燥土壤、湿润土地、混凝土、金属的介电参数差别很大选值不同DDM曲线幅度可能差出一倍。菲涅尔区用来判断“哪个反射体值得建模”。第一菲涅尔半径近似为( r_1 \sqrt{\frac{\lambda d_1 d_2}{d_1 d_2}} )其中 (d_1) 是发射端到反射点的距离(d_2) 是反射点到接收端的距离。如果反射体的尺寸只有第一菲涅尔半径的零点几倍它可以按一个等效点源或者干脆忽略如果尺寸超过好几个菲涅尔半径就要按面反射处理否则会严重高估或低估影响。反射源类型建模方式关键参数典型影响平坦地面镜像天线法介电常数、电导率、天线架高垂直方向图起伏下滑道畸变大型建筑物墙面镜面反射面/射线路径墙面位置尺寸、反射系数局部DDM突变或周期性抖动细长金属围界多段镜面线反射围界高度、距跑道中心线距离沿航向道出现高频DDM波动车辆等小目标点散射体等效散射截面、位置短时间DDM毛刺反射路径的相位延迟是仿真的核心。路径差 ( \Delta L ) 换算成相位直接用( \Delta \phi \frac{2\pi \Delta L}{\lambda} \phi_r )(\lambda) 是载波波长LOC大约在2.8米左右GS更短。也就是说飞机即使只移动十几厘米反射波和直射波的相位关系也会明显变化。这也是为什么多径仿真不能像一般覆盖预测那样粗扫描必须细致处理空间步长。3. 仿真链路搭建从天线阵方向图到逐点DDM曲线3.1 建模思路与工具取舍一开始我也动过用全波电磁仿真软件去算整个LOC天线阵和机库的念头但很快就否决了。原因是场区太大从天线阵到飞机可能间隔好几公里电尺寸达到几十万个波长全波仿真根本算不过来。这类问题最适合的还是“阵列方向图 射线追踪”的混合方法。我的整体思路分四步第一步把LOC或GS天线阵的每个单元位置、馈电幅度、相位建模出来直接累加出CSB/SBO方向图。这个方向图不是先算远场再调用的而是在每个接收点用精确距离逐单元累加保证近场/中距离场景下也没问题。第二步把多径反射源加入反射路径仍从每个天线单元出发经过反射点再到接收点同样逐路径累加。第三步在接收点上分别得到CSB和SBO的复场强 (E_C) 和 (E_S)。第四步按上一节给出的投影方法算出DDM沿一条进近航迹逐点扫描输出曲线。工具上我用Python为主配合NumPy做复数运算scipy做必要滤波。Matlab也可以但Python处理路径数据和批量扫描更方便。需要强调这套代码核心是复矢量运算不要试图用dB功率值去模拟否则DDM永远算不准。3.2 把CSB/SBO馈电关系和空间场写进代码用一个简化但能跑的Python例子来说明。假设LOC天线阵沿跑道侧向分布每个单元坐标放在array_pos里w_c和w_s分别是对应CSB和SBO馈电的复数权值k是波数。import numpy as np k 2 * np.pi / 2.8 # 以LOC约108MHz为例波长约2.8m def field_at_point(rx, ry, rz, array_pos, weights, obstaclesNone): E 0.0j for n, (ax, ay, az) in enumerate(array_pos): r0 np.sqrt((rx-ax)**2 (ry-ay)**2 (rz-az)**2) E weights[n] * np.exp(-1j * k * r0) / r0 if obstacles: for (ox, oy, oz, gamma) in obstacles: r1 np.sqrt((ax-ox)**2 (ay-oy)**2 (az-oz)**2) r2 np.sqrt((rx-ox)**2 (ry-oy)**2 (rz-oz)**2) E weights[n] * gamma * np.exp(-1j * k * (r1 r2)) / (r1 r2) return E E_C field_at_point(rx, ry, rz, array_pos, w_c, obstacles) E_S field_at_point(rx, ry, rz, array_pos, w_s, obstacles) # 把SBO投影到CSB载波相位上 phase_C np.angle(E_C) E_S_parallel np.real(E_S * np.exp(-1j * phase_C)) # 基准调制度 m0 0.2 m90 m0 * (abs(E_C) E_S_parallel) / abs(E_C) m150 m0 * (abs(E_C) - E_S_parallel) / abs(E_C) DDM m90 - m150这段代码有几个关键点为什么用 (1/r) 幅度衰减而不是 dB 路径损耗因为求DDM需要场强线性值不是功率。两个路径叠加时相位关系远比功率损耗重要。为什么反射路径也要从每个单元分别算因为天线阵列不同单元到反射点和接收点的路径差不同方向图本身就是由这种空间相位差形成的。如果只把一个“阵列等效点”放到某个位置会把方向图的阵因子人为丢掉。为什么反射系数gamma是复数因为反射不仅衰减幅度还改变相位。金属面近似可以取 (-1)地面则要根据掠射角和介电常数计算。3.3 多径叠加和DDM提取的几个细节多径叠加很容易写但物理上要注意两个细节。一是反射点坐标必须满足镜面条件。如果模型里给定一个建筑物墙面反射点不是随便选一个点而是要根据入射点和接收点相对于墙面的镜像位置求出来。先把接收点对墙面做镜像镜像点到天线单元的连线与墙面的交点才是真实的反射点。这个步骤错了算出来的路径差就会出现莫名其妙的抖动和实际飞行校验完全对不上。二是反射波不要重复计算。如果模型里既包含了地面镜像又把地面本身当作一个障碍物点反射同一个物理反射过程就被计了两次DDM结果会偏差很大。我的习惯是一个反射源只对应一种建模方式地面统一用镜像法建筑物统一用几何射线法两类之间禁止交叉重复。DDM提取方面如果只想看稳态曲线上面的公式就够了。但如果想仿真接收机输出过程最好把90Hz和150Hz分量做一次带通滤波或Goertzel算法从时域信号里提取幅度。我做过一版时域方案对每个扫描点生成长度为1/30秒的合成波形然后做FFT求两个音频分量的幅度结果和复投影法一致但耗时高得多。批量扫描时复投影法效率优势非常明显。3.4 仿真结果应该长什么样一个干净的LOC天线上沿水平方向扫描出来的DDM曲线应该近似是一条直线中心线附近斜率基本恒定向两侧逐渐饱和。加入一个大型反射体之后曲线形态会变成“直线叠加正弦波纹”波纹的幅度和反射系数有关空间周期则取决于反射路径差随飞机位置的变化率。我常用一个验证手段先把没有障碍物的模型跑一遍看DDM曲线是否在中心线严格过零、左右是否对称。如果这一步有偏差问题通常出在SBO馈电符号或者相位参考上。只有无多径结果正确再打开障碍物多径引起的增量才有意义。4. 我踩过的坑和排查心得4.1 把SBO当成普通调幅波算DDM整体偏移这是我第一次建模时犯的错。我以为CSB和SBO可以在包络层面直接相加于是写了两组幅度方向图一组给90Hz一组给150Hz最后相减。结果DDM曲线不仅中心线不对零而且随着距离变化出现整体平移。原因就是没有处理载波相位参考。SBO的复相位和CSB的载波相位存在夹角直接把模值相加减等于强行忽略了相位投影关系。改掉这个错误后DDM曲线才回到正确形态。之后我把“SBO在CSB同相分量上的投影”做成标准函数所有代码都走这个函数避免每次散落着写。这个函数值得单独做单元测试给它输入一组相位相差90度的 (E_C)、(E_S)输出DDM应当为0否则代码就是错的。4.2 反射点坐标写错扫出来DDM周期抖动特别奇怪有次仿真结果里DDM波纹周期明显比理论值短频率高得离谱。我第一个怀疑是反射路径算错了后来把反射点坐标直接打印出来发现反射点落在了障碍物背面显然不符合镜面反射。修正了镜像交点计算之后波纹周期就正常了。排查这类问题有个小技巧单独画“路径差随接收点位置的变化曲线”。对于单反射体路径差曲线应该是一条平滑的、变化率有限的函数。如果曲线出现折点或突变基本就是反射点位置或者迭代收敛出了问题。4.3 空间扫描步长和载波相位分辨率因为载波波长只有2.8米左右多径相位在空间上变化很快。如果扫描步长超过0.3米很容易把DDM波纹的高频部分“混叠”掉得到一条看起来平滑但实际上丢掉峰值的曲线。这会让评估过于乐观。我后来对重点区域采用自适应步长在DDM变化快的区域加密到0.05米在远离反射源的区域可以放宽到0.5米。不过也要注意飞行校验接收机通常有时间常数和滤波平均不会反映无限细节。所以仿真曲线里的高频抖动未必全部能被校验记录复现。我的处理是同时输出原始DDM和经过模拟接收机滤波后的DDM两者一对比就能判断哪些是真实风险、哪些只是理论上的瞬时效应。4.4 和飞行校验数据对不上的几个常见原因把仿真DDM和真实飞行校验数据放在一起时不要指望完全重合。常见差异来源有几个天线阵和馈电网络的实际相位误差没有建模CSB/SBO端口之间存在微小的互耦和失配场区环境比模型复杂尤其跑道周边存在很多无法逐一建模的小反射体机载接收机对信号的处理方式、滤波器带宽和仪表阻尼不同校验飞机的实际航迹不是一条理想直线转弯、侧滑都会引入DDM的变化。我通常把仿真当作“趋势预测器”用来判断新增障碍物相对原有环境增加了多少DDM风险而不是直接预测某一点的具体仪表读数。把仿真的“无反射基线”和“有反射结果”差分出来拿这个差值和校验数据里的异常段相比才是最有效的对比方式。现象可能原因排查思路无多径时中心线DDM不为零相位参考错误 / SBO权值符号反检查投影函数和半阵反相逻辑DDM波纹周期过快反射点不满足镜面条件 / 步长不足打印路径差曲线加密扫描总场强明显偏低反射模型重复计算确认地面镜像和障碍物不重叠仿真结果与校验数据差异大反射体单点化过度 / 接收机滤波未模拟比较增量曲线而非绝对值5. 一点个人体会这套仿真真正难的不是写代码而是把物理意义转成复数运算。我在迭代过程中反复试过很多次最后总结出一个习惯每次改动工程前先跑两个回归一是无反射环境下DDM曲线是否线性过零二是把反射点放在第一菲涅尔区外时结果是否基本不变。只要这两个回归有一个不通过代码里一定有隐藏问题。最后再分享一个小技巧把扫描后的DDM曲线和飞行校验数据画在同一张图时不要急着对齐绝对值先把航道零点的横坐标和中心线附近斜率对齐再观察多径抖动否则很容易被整体相位差误导得出错误结论。
阅读完成 · 觉得有帮助?