首页 › ran › NR PUSCH功控双环与TPC命令博弈

NR PUSCH功率控制OL/CL双环与TPC命令博弈

1. 引言:为什么PUSCH功率控制是NR最复杂的PHY过程

5G NR的上行功率控制远不止"调高或调低功率"这么简单。TS 38.213 Section 7.1.1定义的PUSCH功率控制公式,涉及开环(Open-Loop)参数集索引 j、闭环(Closed-Loop)TPC累积状态索引 l、路损参考信号索引 qd、SRI到功控参数映射、DCI承载的TPC命令等多个维度的交织决策。一个UE在同一次PUSCH传输中,需要同时确定使用哪组P₀/α参数、哪个路损估计、哪个TPC累积状态——这些选择完全由RRC配置、DCI字段和传输场景共同驱动。

本文基于TS 38.213 V18.8.0 Section 7.1、TS 38.331 PUSCH-PowerControl IE、TS 38.212 DCI Format 0_1/0_2/2_2,深度拆解PUSCH功控的双环架构和TPC命令博弈。

2. PUSCH功控主公式:六参数博弈的起点

TS 38.213 Section 7.1.1定义的PUSCH发射功率计算公式:

P_PUSCH(b,f,c)(i,j,qd,l) = min{P_CMAX,f,c(i),
    P_O_PUSCH(b,f,c)(j) + 10·log10(2^μ·M_RB(b,f,c)^PUSCH(i))
    + α(b,f,c)(j)·PL(b,f,c)(qd) + ΔTF,b,f,c(i) + f(b,f,c)(i,l)} [dBm]

这六个参数各司其职,构成了一个多层博弈系统:

flowchart TB
    subgraph 开环OL["开环功率控制 (Open Loop)"]
        P0["P_O_PUSCH(j)<br/>目标接收功率"]
        ALPHA["α(j)<br/>路损补偿因子"]
        PL["PL(qd)<br/>下行路损估计"]
        M["M_RB<br/>带宽修正"]
        DTF["ΔTF<br/>MCS功率偏移"]
    end
    subgraph 闭环CL["闭环功率控制 (Closed Loop)"]
        F["f(i,l)<br/>TPC累积修正"]
    end
    subgraph 上限["功率上限"]
        PCMAX["P_CMAX<br/>UE最大发射功率"]
    end

    P0 --> FORMULA["min(P_CMAX, OL + CL)"]
    ALPHA --> FORMULA
    PL --> FORMULA
    M --> FORMULA
    DTF --> FORMULA
    F --> FORMULA
    PCMAX --> FORMULA
    FORMULA --> TX["PUSCH发射功率"]

设计意图:开环部分让UE自主估算"应该用多大功率才能被gNB正确接收",闭环部分让gNB精细微调"实际应该再增减多少"。两者结合实现了快速自适应与精确控制的平衡。

3. 开环参数集j:从Msg3到动态调度的参数切换

3.1 j索引的三级分类

TS 38.213 Section 7.1.1定义了开环参数集索引j的取值规则:

j值 适用场景 P₀来源 α来源
j=0 Msg3 PUSCH(RAR授权)、Configured Grant Type 1 p0-PUSCH-AlphaSetId指向的第一组或默认值(P₀=0, α=1) 同左
j=1 动态授权PUSCH(DCI 0_0/0_1/0_2调度)、Configured Grant Type 2 SRI-PUSCH-PowerControl映射的p0-AlphaSetId 同左

3.2 RRC配置结构:p0-PUSCH-AlphaSetList

gNB通过RRC IE PUSCH-PowerControl 配置最多30组开环参数:

PUSCH-PowerControl ::= SEQUENCE {
    p0-PUSCH-AlphaSetList      SEQUENCE(SIZE(1..30)) OF P0-PUSCH-AlphaSet
    p0-NominalWithoutGrant     INTEGER (-202..24) dBm    -- CG Type 1的标称功率
    p0-NominalWithGrant        INTEGER (-202..24) dBm    -- 动态授权的标称功率
    ...
}

P0-PUSCH-AlphaSet ::= SEQUENCE {
    p0       INTEGER (-16..15) dB    -- UE特定偏移
    alpha    ENUMERATED {alpha0, alpha04, alpha05, alpha06,
                        alpha07, alpha08, alpha09, alpha1}
}

P_O_PUSCH(j)的组成:

P_O_PUSCH(j) = P_O_NOMINAL_PUSCH(j) + P_O_UE_PUSCH(j)

其中P_O_NOMINAL通过SIB广播或RRC专用信令提供,P_O_UE通过上述p0字段配置。

3.3 SRI到开环参数的映射

这是NR引入的关键创新——通过SRI(Sounding Reference Indicator)实现快速的开环参数切换:

sequenceDiagram
    participant gNB
    participant UE

    Note over gNB,UE: RRC配置阶段
    gNB->>UE: PUSCH-PowerControl<br/>含p0-AlphaSetList(30组)
    gNB->>UE: SRI-PUSCH-PowerControl<br/>SRI值→p0-AlphaSetId映射

    Note over gNB,UE: 调度阶段
    gNB->>UE: DCI Format 0_1<br/>SRI field = 01
    UE->>UE: 查表: SRI=01 → Set#3<br/>获取P₀=-60dBm, α=0.8
    UE->>UE: 计算开环功率<br/>P_OL = P₀ + α·PL + 10log(M)
    UE->>UE: 应用闭环修正<br/>P_PUSCH = min(P_CMAX, P_OL + f(i,l))
    UE->>gNB: PUSCH传输

设计意图:不同SRI指向不同的SRS资源,对应不同的上行波束/空间滤波器。每个波束可能经历不同的路损特性,因此需要独立的开环参数组。SRI映射机制使得一次DCI调度就能完成波束切换+功控参数切换,避免了额外的MAC CE信令开销。

4. α路损补偿因子:小区间干扰的调节阀

4.1 部分路损补偿的博弈

α的取值范围:{0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}

α值 策略 小区中心UE 小区边缘UE 小区间干扰
1.0 全补偿 功率低 功率高(路损全补) 高(边缘UE发射功率大)
0.7-0.9 部分补偿 功率低 功率中(部分补偿) 中等
0.4-0.6 弱补偿 功率低 功率较低 低
0 不补偿 所有UE使用相同基准功率 严重不足 最低

博弈分析:

4.2 路损估计PL(qd):波束级路损测量

UE通过下行参考信号估计路损:

PL = referenceSignalPower - higherLayerFilteredRSRP

路损参考信号索引qd由RRC参数pathlossReferenceLinking和PUSCH-PathlossReferenceRS-r16配置,可关联到:

参考信号类型 配置方式 适用场景
SSB(SS/PBCH Block) SIB或RRC提供ss-PBCH-BlockPower 初始接入、默认路损参考
CSI-RS RRC配置CSI-RS Resource的powerControlOffsetSS 连接态精细路损跟踪

NR支持最多4个PUSCH路损参考信号(TS 38.331 maxNrofPUSCH-PathlossReferenceRS = 4),通过MAC CE动态切换激活的参考信号。

抓包识别:在RRC Reconfiguration中搜索pusch-PathlossReferenceRSId字段,每个ID关联一个SSB或CSI-RS资源索引。

5. 闭环TPC命令:累积vs绝对的抉择

5.1 f(i,l)的两种工作模式

闭环功控分量f(i,l)有两种运行模式,由RRC参数tpc-Accumulation决定:

累积模式(Accumulated,默认):

f(i,l) = f(i-1,l) + δ_PUSCH(i - K_PUSCH)

每次TPC命令叠加在上一次累积值之上,实现渐进式调整。

绝对模式(Absolute):

f(i,l) = δ_PUSCH(i - K_PUSCH)

每次TPC命令直接替换当前值,实现一步到位调整。

5.2 TPC命令映射表(TS 38.213 Table 7.1.1-1)

TPC命令(2bit) 累积模式 δ [dB] 绝对模式 δ [dB] 典型用途
00 -1 -4 大幅降功率
01 0 -1 维持/小幅降
10 +1 +1 小幅升功率
11 +3 +4 大幅升功率

博弈分析:

5.3 TPC命令的三种承载方式

flowchart LR
    subgraph TPC承载方式
        D1["DCI Format 0_0/0_1/0_2<br/>UL调度中的TPC字段<br/>UE专用"]
        D2["DCI Format 2_2<br/>TPC-PUSCH-RNTI<br/>组公共"]
        D3["DCI Format 2_2<br/>TPC-PUCCH-RNTI<br/>组公共"]
    end

    D1 --> |"C-RNTI加扰<br/>2-bit TPC"| UE1["单个UE<br/>调度伴随TPC"]
    D2 --> |"TPC-PUSCH-RNTI加扰<br/>Block结构"| UE2["一组UE<br/>PUSCH功控"]
    D3 --> |"TPC-PUCCH-RNTI加扰<br/>Block结构"| UE3["一组UE<br/>PUCCH功控"]

DCI Format 2_2的结构(TS 38.212 Section 7.3.1.7):

| Block#1                     | Block#2                     | ... | Block#N            |
| ServingCellId(5bit) | BWPId(2bit) | TPC(2bit) | ServCellId | BWPId | TPC | ... | ... | ... |

每个Block包含:Serving Cell ID(5bit)、UL BWP ID(2bit,仅当配置了closedLoopIndex时存在)、TPC命令(2bit)。一个DCI 2_2可同时携带多个UE的TPC命令,每个UE通过RRC参数tpc-Index知道自己对应第几个Block。

设计意图:DCI 2_2组公共TPC的引入,是为了解决免授权传输(Configured Grant)场景下UE没有UL调度DCI的问题。此时gNB无法通过DCI 0_1伴随发送TPC,只能通过DCI 2_2统一发送。这保证了CG-SDT、SPS PUSCH等半持续传输也能享受闭环功控。

6. 双闭环状态l=0/1:Multi-TRP场景的功控独立

6.1 两个独立的TPC累积状态

NR支持为PUSCH配置两个独立的闭环功控状态(TS 38.213 Section 7.1.1),由RRC参数twoPUSCH-PC-AdjustmentStates激活:

状态索引l 触发方式 应用场景
l=0 DCI中SRI field或closedLoopIndex指向 主TRP/主波束
l=1 DCI中closedLoopIndex=1 辅TRP/辅波束

当配置了双闭环状态时,DCI Format 0_1/0_2中会出现1bit的Closed loop indicator字段,指示本次TPC命令应更新哪个累积状态:

sequenceDiagram
    participant TRP1 as TRP1(主)
    participant gNB as gNB(CU)
    participant TRP2 as TRP2(辅)
    participant UE

    Note over UE: 两个独立TPC累积状态
    Note over UE: f(i,l=0) → TRP1方向
    Note over UE: f(i,l=1) → TRP2方向

    gNB->>UE: DCI 0_1调度PUSCH
    Note over gNB,UE: SRI=0 → p0-AlphaSet#1<br/>closedLoopIndex=0
    UE->>UE: 使用f(i,l=0)累积值<br/>TRP1方向功控
    UE->>TRP1: PUSCH(朝TRP1波束)
    UE->>TRP2: PUSCH(朝TRP1波束,TRP2也收到)

    Note over TRP1: 测量SINR偏低
    TRP1->>gNB: L1测量报告
    gNB->>UE: DCI 0_1<br/>closedLoopIndex=0<br/>TPC=11(+3dB)
    UE->>UE: f(i,0) += 3dB

    Note over TRP2: 测量SINR偏高
    TRP2->>gNB: L1测量报告
    gNB->>UE: DCI 0_1<br/>closedLoopIndex=1<br/>TPC=00(-1dB)
    UE->>UE: f(i,1) += (-1)dB

设计意图:Multi-TRP场景中,UE面向不同TRP的波束经历不同信道,需要独立的闭环功控。如果只有一个TPC累积状态,gNB对TRP1方向说"增功率"会同时影响TRP2方向的干扰水平。双闭环状态解耦了两个方向的功控,使Multi-TRP功率管理更加灵活。

6.2 K_PUSCH时延:TPC命令何时生效

TPC命令不是即时生效的。从DCI发送到TPC命令作用于PUSCH传输,存在K_PUSCH个时隙的延迟:

f(i,l)取决于i - K_PUSCH时刻收到的TPC命令

K_PUSCH的值与UE处理能力、子载波间隔μ、DCI-to-PUSCH时序有关。典型值在μ=1(30kHz SCS)时为2-3个时隙。这意味着gNB在计算TPC命令时必须预测未来K_PUSCH个时隙后的信道状况——这是一个隐含的博弈。

7. 完整信令流程:从RRC配置到PUSCH传输的功控链路

sequenceDiagram
    participant gNB
    participant UE

    rect rgb(230,240,255)
    Note over gNB,UE: 阶段一:RRC配置
    gNB->>UE: RRC Reconfiguration
    Note right of UE: PUSCH-PowerControl:<br/>• p0-AlphaSetList[{p0=-60dB,α=0.8},{p0=-70dB,α=1.0}]<br/>• p0-NominalWithGrant=-78dBm<br/>• twoPUSCH-PC-AdjustmentStates=true
    gNB->>UE: RRC Reconfiguration
    Note right of UE: SRI-PUSCH-PowerControl:<br/>• SRI=0 → SetId=0, PL-RS-id=0, CL-l=0<br/>• SRI=1 → SetId=1, PL-RS-id=1, CL-l=1
    gNB->>UE: MAC CE激活PUSCH Pathloss RS#0
    end

    rect rgb(255,240,230)
    Note over gNB,UE: 阶段二:路损估计
    UE->>UE: 测量SSB#0的RSRP<br/>PL = ss-PBCH-BlockPower - RSRP<br/>假设PL=120dB
    end

    rect rgb(230,255,230)
    Note over gNB,UE: 阶段三:DCI调度+TPC
    gNB->>UE: DCI Format 0_1<br/>SRI=0, TPC=10(+1dB)<br/>closedLoopIndex=0
    UE->>UE: 查表SRI=0:<br/>j方向: Set#0 (P₀=-60dB, α=0.8)<br/>qd方向: PL-RS#0 (PL=120dB)<br/>l方向: CL状态#0
    UE->>UE: 计算功率:<br/>P_OL=-78+(-60)+0.8×120+10log(50RB)<br/>     =-78-60+96+17=-25dBm<br/>f(i,0)=0+1=1dB<br/>P_PUSCH=min(23,-25+1)=-24dBm
    UE->>gNB: PUSCH @ -24dBm
    end

    rect rgb(255,230,255)
    Note over gNB,UE: 阶段四:闭环微调
    gNB->>UE: DCI Format 2_2<br/>TPC-PUSCH-RNTI加扰<br/>Block#0: TPC=11(+3dB)
    UE->>UE: f(i+1,0)=1+3=4dB<br/>下次PUSCH功率增加3dB
    end

8. P_O_PUSCH分解与ΔTF偏移

8.1 P₀的二级结构

P_O_PUSCH(j)的完整分解:

P_O_PUSCH(j) = P_O_NOMINAL_PUSCH + P_O_UE_PUSCH(j)

分量 配置方式 取值范围 说明
P_O_NOMINAL_PUSCH SIB1中p0-NominalWithGrant -202~+24 dBm 小区级基准接收功率目标
P_O_UE_PUSCH p0-AlphaSet中的p0 -16~+15 dB UE特定偏移

P_O_NOMINAL代表了gNB期望的"理想接收功率",P_O_UE则针对每个UE的硬件差异、天线增益等进行补偿。

8.2 ΔTF:MCS相关的功率偏移

ΔTF根据MCS索引和传输块大小计算,反映高阶调制对SNR需求的提升:

当 Ks=1.25时: ΔTF = 10·log10((2^1.25·R·MCS_factor) - 1)
当 Ks=0时:    ΔTF = 0(禁用MCS偏移)

其中Ks由deltaMCS参数控制。R为码率。高MCS(如256QAM)需要更高SNR,ΔTF为正值使UE增加功率;低MCS(如QPSK低码率)允许降低功率。

9. 实战连接:抓包识别与故障排错

9.1 抓包识别PUSCH功控流程

抓包点 识别方法 关键字段
RRC Reconfiguration 搜索PUSCH-PowerControl IE p0-AlphaSetList, tpc-Accumulation
DCI Format 0_1 在PDCCH中按C-RNTI过滤 TPC field(2bit), SRI field, closedLoopIndex
DCI Format 2_2 按TPC-PUSCH-RNTI过滤 Block结构中的TPC command
MAC CE 功控相关MAC CE TCI States Activation, Pathloss RS Update

9.2 常见故障点

故障现象 可能原因 排错思路
PUSCH SINR持续偏低 P₀配置过低或α偏小 检查RRC中p0-AlphaSet值,对比路损估计是否合理
UE发射功率频繁撞顶(P_CMAX) 开环参数过高或路损估计不准 检查referenceSignalPower配置,验证SSB RSRP测量
边缘UE吞吐量骤降 α=1导致邻区干扰加剧 尝试降低α至0.7-0.8,启用部分路损补偿
CG PUSCH功率漂移 未配置DCI 2_2组TPC 确认TPC-PUSCH-RNTI配置和tpc-Index
Multi-TRP功率振荡 两个闭环状态TPC冲突 检查closedLoopIndex映射,确认两个TRP的TPC是否协调
## 10. 与LTE PUSCH功控的对比
特性 LTE (TS 36.213) NR (TS 38.213)
开环参数集数量 1组(P₀_UE_PUSCH + α) 最多30组(p0-AlphaSetList)
闭环状态数量 1个 2个(l=0/1)
SRI映射 不支持 支持SRI→(P₀,α,PL-RS,CL)映射
波束级路损 不支持(CRS路损) 支持(SSB/CSI-RS多路损参考)
组TPC DCI Format 3/3A DCI Format 2_2
BWP级功控 不支持 支持per-BWP独立参数
Multi-TRP 不支持 通过双闭环状态支持

11. PUSCH功控状态机总览

stateDiagram-v2
    [*] --> 初始化: RRC配置完成
    初始化 --> 开环计算: 收到UL调度或CG触发

    state 开环计算 {
        [* --> 确定j值: Msg3→j=0<br/>动态/CG→j=1
        确定j值 --> 选择P0AlphaSet: 通过SRI映射或默认
        选择P0AlphaSet --> 估计路损: 使用PL-RS(qd)
        估计路损 --> 计算开环功率: P₀+α·PL+10log(M)+ΔTF
    }

    开环计算 --> 闭环修正: 加载f(i,l)

    state 闭环修正 {
        [* --> 检查TPC模式: accumulated或absolute
        检查TPC模式 --> 累积: f(i)=f(i-1)+δ
        检查TPC模式 --> 绝对: f(i)=δ
        累积 --> 应用闭环值
        绝对 --> 应用闭环值
    }

    闭环修正 --> 功率上限: min(P_CMAX, ...)
    功率上限 --> PUSCH发射: 最终功率确定
    PUSCH发射 --> gNB测量: gNB测量SINR
    gNB测量 --> TPC命令: 生成TPC命令
    TPC命令 --> 闭环修正: 更新f(i,l)

12. 3GPP Rel-18/19增强方向

Rel-18对PUSCH功控的增强(TS 38.213 V18.x):

  1. Multi-TRP PUSCH重复增强:支持per-TRP独立的功控参数和TPC状态,适应NCJT(Non-Coherent Joint Transmission)场景。
  2. CSI-RS路径损耗参考扩展:支持更多的CSI-RS资源配置用于路损估计,适应高频段密集波束场景。
  3. SRI映射扩展:支持更大数量的SRI到功控参数映射,适应Multi-Panel上行场景。

Rel-19正在讨论的方向: - AI/ML辅助的功控参数预测 - 高频段(FR2-2, 52.6-71GHz)的功控增强 - NTN(Non-Terrestrial Network)场景的大RTT补偿

13. 常见问题

Q1: 累积模式和绝对模式如何选择? A: 累积模式是默认模式,适合信道变化较慢的场景(低速移动、稳定信道)。绝对模式适合需要快速功率纠正的场景(高速移动、信道突变)。实际部署中,大部分厂商默认使用累积模式,绝对模式在高速场景下可能更优。

Q2: 为什么Msg3使用j=0而非j=1? A: Msg3在随机接入阶段发送,此时UE尚未获得完整的RRC配置(包括p0-AlphaSetList)。j=0使用默认参数或初始BWP中有限的配置,确保UE在没有精细参数的情况下也能合理设置功率。一旦进入连接态并获得完整配置,后续PUSCH使用j=1享受精细参数控制。

Q3: DCI 2_2组TPC的Block编号如何对应到具体UE? A: gNB通过RRC参数PUSCH-TPC-CommandConfig中的tpc-Index字段告知UE它在DCI 2_2 payload中对应的Block位置。UE收到DCI 2_2后,只解析自己索引对应的Block中的TPC命令。

Q4: α=0时PUSCH功控如何工作? A: α=0意味着完全不补偿路损,开环部分仅提供P₀+10log(M)+ΔTF。此时路损大的UE(边缘)和路损小的UE(中心)的开环功率几乎相同,全靠闭环TPC命令来区分。这种方式实际上把功控权完全交给了gNB的闭环控制。

Q5: 双闭环状态在单TRP场景下有用吗? A: 有用。即使只有一个TRP,双闭环状态也可以分别对应不同的SRI(不同上行波束),实现per-beam的独立功控。当UE在不同波束间切换时,不需要重置TPC累积值,直接使用对应波束的独立累积状态。

参考来源

  1. 3GPP TS 38.213 V18.8.0 — Section 7.1.1 PUSCH power control
  2. 3GPP TS 38.212 V18.x — Section 7.3.1 DCI formats (0_1, 0_2, 2_2)
  3. 3GPP TS 38.331 V18.x — PUSCH-PowerControl, SRI-PUSCH-PowerControl IE
  4. RF Wireless World - 5G NR Uplink Power Control — PUSCH功控公式和参数详解
  5. Amarisoft Tech Academy - 5G NR Power Control — OL/CL双环功控实战配置

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入