ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

无线电规则中的编码与版本控制:从发射类别到协调区计算

无线电规则中的编码与版本控制:从发射类别到协调区计算

简介:《2024无线电规则 第二卷》是国际电信联盟(ITU)2024年版规则的中文文本,聚焦第2卷附录,面向频谱管理、卫星与地面业务协调、通信法规研究的从业者与师生,可作为查证频率划分、发射容限与协调程序的权威依据。资源为单个docx文档,压缩包约9.8MB,含附录目录与正文,涵盖发射类别与必要带宽、发射机频率容限、杂散域无用发射功率限值等表格,便于检索摘引。文本沿用2001年版编号方案,条取序列编号、款取复合编号,并以(WRC-23)等缩略语标注历次大会修订来源;卷首另附免责声明、秘书处说明与大会缩略语对照表,可据此判断条款生效时间与修订沿革。目前已有138人学习下载,适合作为合规审查与法规比对时的案头参考。

1. 从“12K5F3E”这串字符说起:一份规则文本为什么先做成编码系统

翻开2024年版《无线电规则》第二卷,最先撞上的不是频率划分表,而是一串像 12K5F3E 这样的字符。多数人把这类字符当成缩写跳过,但它其实是整份规则最底层的一层设计:把“一种发射”压缩成定长编码,让带宽、调制方式、信息类型各就各位。后面所有的协调区计算、频率容限判定、干扰评估,才有共同的输入口径。换句话说,规则文本的第一性问题不是“规定什么”,而是“如何唯一地命名一件事”——这件事一旦做不好,几万条指配就没有办法互相引用。第二卷(附录卷)正是这套命名与判定的总成,值得拆开看。

2. 编号即版本控制:条款缩略语如何把三十年决议压进一个坐标

一份从1995年一路修订到2023年的文本,最大的工程难题不是写新条文,而是让旧引用在新版本里还能落到正确的位置。规则给出的方案很朴素:不动编号,只在编号上标注修改来源。这套办法能不能撑住,要看三个细节。

2.1 复合编号法:9.2B 这种“款”是怎么插进去的

“条”用标准序列编号,条号后不带任何缩略语;“款”则用复合编号,形如 9.2B,读作第9条第2B款。字母后缀 B 的存在本身就是设计证据:它意味着在第9条第2款与第3款之间曾经插入过新内容,而插入者没有把后续所有款重排一遍。重排的代价是灾难性的——全球范围内已经发出的协调请求、干扰报告、指配通知全都引用着旧款号,一旦重排,历史文档就集体失效。常见的实现思路是把编号当成数据库主键:主键可以留空位、可以加后缀,但不可以回收和移位。这也解释了为什么文本里会出现 2A、2B 这类看起来别扭的款号,它是为了保住向后兼容而付出的可读性成本。

同一逻辑延伸到跨卷引用:规则里任何一处对“条”的提及,除非另有规定,都被视为对本版中该条案文的提及,而不是对某个历史版本的提及。所以引用是“当前指针”,版本信息由款尾缩略语承担,两件事被拆开存放,互不干扰。

2.2 缩略语后缀:修订痕迹为什么长在正文里

款尾出现的(WRC-23)、(WRC-19)等标记,含义是该款被对应届次大会修改或新增。这里有一个容易被忽略的反向规则:如果款后没有缩略语,说明该款与1995年那版简版规则的条款相同,完整案文收在WRC-97的第2号文件里。也就是说,“没有标记”本身就是一种标记,指向一份外部历史文件。这种设计把三十年的修订史压进了正文的字符流,不需要另建变更日志,也不需要读者去比对两版 PDF。

代价是可读性。一段话读到最后突然蹦出一个括号,读者必须先建立“括号=版本”的心智模型,才能继续。但从工程角度看,这是相当经济的:变更信息与被变更内容物理相邻,检索时可以直接用正则命中,无需跨文件关联。

2.3 附录的“修订版”与“(SUP-WRC-07)”:删除也是一种状态

第二卷承载的是附录,编号同样用标准序列,但后面会酌情加上缩略语,标准形式如“附录30(WRC-23,修订版)”。如果一个附录只被部分修改,那么被改动的具体条款会在案文结尾处单独标上缩略语,未标注的部分仍沿用旧文本。这就形成了一种混合状态:同一个附录里,不同条款可能归属于不同届次。

更极端的情况是删除。目录里能看到“附件2(SUP-WRC-07)”这样的条目,SUP 表示该附件已被废止,但编号位置依然保留。保留的理由与款号字母后缀一致:编号是引用锚点,锚点不能凭空消失,否则所有指向它的历史文档都会断链。把“已删除”显式建模成一种状态,而不是让条目消失,这是编号系统里最容易被低估的一条设计原则。

顺带说清分卷:条款正文在第一卷,附录在第二卷,决议和建议在第三卷。讨论附录时引用的“第9条”其实在另一卷里,跨卷引用靠编号而非页码,这也是编号必须先行的原因。

3. 发射类别编码:五个符号如何做到无损描述与可计算带宽

附录1 是整套编码规则的核心,它的输出是一个最多9个字符的字符串:前4位是必要带宽,中间3位是基本特性,最后2位是任选特性。看懂这9个位置各自承担什么,就能反推出为什么它被设计成定长。

3.1 必要带宽的四字符表示:小数点藏在字母里

必要带宽用三个数字加一个字母表示,字母同时承担两个职责:指示小数点的位置,以及指示量级单位(H 对应 Hz、K 对应 kHz、M 对应 MHz、G 对应 GHz)。字母在第几位,小数点就在第几位之前。这套编码允许的写法是 H002(0.002 Hz)、25H3(25.3 Hz)、180K(180 kHz)、6K00(6.00 kHz)、1M25(1.25 MHz)、5G65(5.65 GHz)。

还有一条约束:第一个字符不能是零、K、M 或 G。原因不难推:首位为数字时不允许前导零,否则 0K50 与 500H 会成为同义写法;首位为字母时只允许 H,因为小于1 kHz的量必须用 Hz 表达,不允许写成 K 开头的分数。这条约束把“同一个带宽只有一种合法写法”这件事锁死了,后续所有比较和排序才不需要做归一化。

解析这段编码只需要几行代码,字母的位置直接给出小数点偏移:

UNIT = {"H": 1.0, "K": 1e3, "M": 1e6, "G": 1e9} def parse_bandwidth(field: str) -> float: """把 '1M25' 这类四字符必要带宽字段还原成以 Hz 为单位的数值""" if len(field) != 4: raise ValueError("必要带宽字段必须是 4 个字符") for i, ch in enumerate(field): if ch in UNIT: # 命中量级字母,其下标即小数点位置 digits = field[:i] + field[i + 1:] # 去掉字母,剩下的三位是有效数字 mantissa = int(digits) * 10 ** -(3 - i) return mantissa * UNIT[ch] # 先还原数值,再乘量级 raise ValueError("缺少量级字母 H/K/M/G") for s in ["H002", "25H3", "180K", "6K00", "12K5", "1M25", "5G65"]: print(s, parse_bandwidth(s))

函数只有一个分支判断和一个幂运算,参数含义分别是:field为四位字段,i为量级字母下标(0到3),digits为三位有效数字。10 ** -(3 - i)这一项是关键——i=0 时除以1000,得到 0.002;i=3 时乘以1,得到 180。这段逻辑之所以能成立,完全依赖“字母位置即小数点位置”这一条硬约定,换成自由格式的字符串就不可能写得这么短。

3.2 三个基本符号的正交分解:调制方式、信号性质、信息类型

中间三位是发射类别的主体。第一位描述主载波的调制方式,取值包括 N(未调制载波)、A(双边带调幅)、H(单边带全载波)、R(单边带减幅载波)、J(单边带抑制载波)、B(独立边带)、C(残余边带)、F(调频)、G(调相)、D(调幅调角混合)、P(未调制脉冲)、K/L/M/Q(脉冲序列的幅度/宽度/位置/角度调制)、V(上述组合)、W(多方式组合)、X(其他)。第二位描述调制主载波的信号性质,0 表示无调制信号,F 表示不含副载波但含量化或数字信息的单频道,3 表示含副载波的单频道数字信息,7 表示多频道数字信息,8 表示多频道模拟信息,9 表示数模混合,X 表示其他。第三位描述拟发送信息的类型,N 无信息、A 人工接收电报、B 自动接收电报、C 传真、D 数据传输与遥测遥令、E 电话(含声音广播)、F 电视、W 组合、X 其他。

三个位置分属三个互相独立的维度,这是典型的正交分解:任意合法组合都能表达一种真实存在的发射,且不会因为维度交叉而产生歧义。值得注意的是第二位上挂的脚注——F 和 3 明确注明“不包括时分多路复用”。原因在于复用性质已经被安排在第五位(T 表示时分复用),如果第二位再编码一次,同一事实就有了两个可写位置,文本内部就会打架。把重复维度从编码里摘出去,是控制编码空间膨胀的常规手法。

3.3 两个任选符号与短划线占位:变长信息如何塞进定长槽位

第四位是信号的详细说明,用来区分双态码有无纠错、码元状态数、声音质量等级(单声道、立体声)、是否彩色等;第五位是复用性质,N 无复用、C 码分、F 频分、T 时分、W 频分与时分组合、X 其他。这两位是可选的,但可选不等于可省略:不使用时必须在对应位置写一个短划线。于是“6K00A3E”这种常见写法在规范上应当是“6K00A3E--”。

这条约定把变长语义强行纳入了定长框架。好处是任何解析器都可以按固定偏移取字段,不必做分隔符识别;坏处是人在抄写时习惯性省略末尾短划线,导致实际文本的字段长度参差不齐。规范的严格形式与实际书写惯例之间存在缝隙,这个缝隙在后文会变成一类具体的排查场景。

一个完整的解码示例:6K00A3E-- 拆开是 6K00(6 kHz 必要带宽)、A(双边带调幅)、3(含副载波的单频道数字信息)、E(电话)、--(无详细说明、无复用)。九个字符读完,一种发射的全部关键属性就确定下来了。

3.4 编码与公式的接口:为什么带宽要能被算出来

附录1 给出了必要带宽的三种确定方式:按对应的频谱管理建议书(SM.1138-3)中的公式和示例计算、按其他建议书计算、在前两者未覆盖时实测。这三条并列很关键——它意味着编码里的带宽值不是随手填的估计值,而是有指定计算路径的派生量。

这正是定长编码的真正价值:字符串本身不携带计算结果,但携带了“该用哪条公式、代入哪些参数”的索引。调制方式决定占用带宽的形态,信号性质决定是单信道还是多信道,复用性质决定带宽要不要乘以路数。把这三个维度编码进固定位置,等于给后续计算准备了一份结构化入参。如果发射类别写成自由文本,这一步就只能靠人读,自动化无从谈起。

4. 阈值固化:频率容限表和协调区计算为什么都落到查表

附录2 和附录7、附录8 表面上干的是两件不同的事:一个管发射机频率允许多大偏差,一个管地球站周围多大范围内需要协调。但它们的结构完全同构——都是把连续物理量转换成离散可判定阈值的装置。理解这一点,才能读懂那些看起来繁琐的表格为什么不能简化。

4.1 频率容限的二维函数:频段乘台站类别

附录2 的表结构是:纵轴为频段,横轴为台站类别(固定电台、陆地电台中的海岸台与航空台、移动电台中的船舶台与救生艇台与航空器台与陆地移动台、无线电测定电台、广播电台、空间电台、地球站),交叉处给出容限值。频段的边界写法是“不包括下限,包括上限”,也就是半开区间。这个细节不是笔误,而是为了避免边界频率同时落入两个频段导致规则冲突——9 kHz 到 535 kHz 与 535 kHz 到 1606.5 kHz 之间如果两端都取闭区间,535 kHz 就同时受两套容限约束。

容限值的单位也不统一:表头声明“除非另有说明,频率容限用 10⁶ 分之若干表示”,但个别行直接给出绝对量,例如广播电台那几行写的是 10 Hz。混合口径并非疏漏,而是因为广播发射机的载频一致性要求针对的是绝对偏差(多台同步组网时,频率差必须收敛到赫兹级),用相对值反而不好用。读到这类行必须先确认口径,否则把 10 Hz 当成 10×10⁻⁶ 去算,误差会有好几个数量级。

4.2 功率口径与调制口径:单边带为什么按峰包功率分档

同一张表里,许多行的容限会按功率再分一档:某频段内功率不超过200 W 给一个值,超过200 W 给更严的值。这里的功率口径有明确限定——单边带发射机取峰包功率,其他各类发射机取平均功率。原因不难推:单边带信号的包络随语音起伏,平均功率远低于峰值,若按平均值分档,同样标称功率的单边带设备会被划进更宽松的档位,实际占用效果与调幅设备不可比。统一到峰包功率,分档才有可比性。

类似的划分还出现在发射类别上:4 MHz 到 29.7 MHz 段内,单边带与独立单边带发射按功率分档,F1B 类发射单独给一档,其他类别再给一档。这实际上是在做“调制方式影响频率稳定度”的经验归纳——不同调制体制对振荡器稳定度的要求本就不同,用一张统一的功率表覆盖所有体制,只会逼着所有设备按最严的那一档做,成本上没有意义。

维度取值来源作用
频段半开区间,不含下限含上限避免边界频率被双重约束
台站类别固定、陆地、移动、测定、广播、空间、地球站区分使用场景的稳定度要求
功率档单边带取峰包功率,其余取平均功率让不同体制的功率可比
发射类别单独列出特殊类别体现调制体制的固有差异
容限口径相对值(10⁶分之若干)或绝对 Hz对应不同物理约束

4.3 协调区计算:传播方式(1)与(2)的分工,以及等值线的作用

附录7 处理的是100 MHz 到105 GHz 之间、如何确定地球站周围协调区的问题。它没有直接给公式,而是给出一套分层的附件结构:附件1 与附件2 分别确定传播方式(1)与传播方式(2)所需距离,附件3 和附件4 分别给出与对地静止空间电台、与非对地静止空间电台共同操作时地球站水平方向的天线增益,附件5 处理双向划分频段内发射地球站相对接收地球站的协调区,附件6 定义补充等值线与辅助等值线,附件7 汇总系统参数与预定协调距离。

这套分工的逻辑是“把耦合关系拆成互不重叠的传播路径”。传播方式(1)与(2)对应不同的传播机制(例如是否考虑大气折射、是否考虑绕射),两条路径各自算出距离,再取包络。等值线的引入是另一个关键设计:连续变化的场强无法作为判定依据,必须离散成一组闭合曲线,落在曲线内即触发协调。补充等值线与辅助等值线的存在,是为了在近场和远场分别用不同的取值密度,避免为了远端精度而在近端画过多条线。

附录8 处理的是对地静止卫星网络之间的协调,结构同源:附件1 算两个对地静止卫星之间的顶心角间隔,附件2 算自由空间传输损耗,附件3 在未公布地球站天线辐射方向性图时提供一张默认方向图,附件4 给实施实例。默认方向图的地位值得单独说——它是一条兜底约定:当申报方不提供实测方向图时,协调计算按最不利的通用图形处理。这把“信息缺失”从不可计算状态转成了可计算的保守状态,是整个协调体系能闭环的前提。

4.4 双轨制:规划、列表与共用标准为什么并存

第二卷里体量最大的是附录30、30A、30B 这一组,处理卫星广播业务与卫星固定业务的频率分配规划。它们的共同特征是同时存在两套机制:一套是“规划”(plan),把频率和轨道位置预先分配给各主管部门;另一套是“列表”(List),记录已经指配并在用的条目。附录30 的附件里既有规划,也有指配表,还有业务间共用标准与轨道位置限制。

双轨并存不是冗余,而是历史演进的产物:先有规划,保证新进入者一定能拿到资源;后有列表,允许在规划框架内做双边调整。由于调整会改变干扰环境,于是又派生出“判定是否受影响”的标准——附录30B 附件4 给出了判定一项分配或指配是否受影响的标准,其附录1 给出已调载波必要带宽平均全链路单入和集总载干比的计算方法,附录2 给出载波噪声比的计算方法。判定链是固定的:先按统一方法算干扰量,再与阈值比对,输出“受影响/不受影响”的布尔值,只有前者才需要启动双边协议。

这条链路解释了一个看似矛盾的现象:附录动辄几百页,但真正做判定的只有几个阈值和两三个比值公式,其余篇幅都在定义“怎么算”。规则的重量不在结论,而在计算口径的统一。

5. 避坑与排查:读这份规则时最容易翻车的五个地方

文本量大、结构严密,反而让一些细小约定成了陷阱。以下五条是实际拆解时最常遇到的,按“现象—原因—解决”记录。

5.1 编号与引用类

现象:拿着“第13条(WRC-23)”去检索,一无所获,怀疑文本缺页。原因:缩略语只出现在“款”尾和附录编号后,“条”号后不带任何版本标记。条级引用的语义是“本版该条全文”,版本信息下沉到款。解决:把检索目标降到款级,例如查第13.1款结尾是否带缩略语,再顺着该款读下去;同时记住“款后无缩略语”意味着该款沿用1995年简版,完整案文在WRC-97的第2号文件里,需要跨文档回溯。

现象:目录里看到“附件2(SUP-WRC-07)”,误以为它仍然有效并据此做计算。原因:删除状态被显式保留在编号体系里,SUP 只是标记而非移除。解决:解析目录时把含 SUP 的条目单独归入“已废止”集合,任何计算路径都应排除;如果某个现行条款引用了该附件,说明引用本身需要核对版本。

5.2 编码与单位类

现象:写脚本按固定偏移解析发射类别,遇到“6K00A3E”就抛越界异常。原因:规范要求任选符号缺省时用短划线占位,总长应为9字符,但实际书写惯例常把末尾的短划线省掉。解决:解析前先右补短划线到9位,再做切片。用正则表达式可以顺带做一次格式校验:

import re # 带宽4位 + 基本特性3位 + 任选特性2位,缺省位必须是短划线 EMISSION = re.compile(r"^[1-9H][0-9H][0-9KM][0-9KMG][NAHRJBCFG DPKLMQVWX][0F3789X][NABCDEFWX][A-NWX-][NCFTWX-]$".replace(" ", "")) def normalize(code: str) -> str: """把实际文本里省略末尾短划线的写法补齐为 9 字符规范形式""" code = code.strip().upper() if len(code) < 9: code = code.ljust(9, "-") # 只用短划线补齐,不用空格 if not EMISSION.match(code): raise ValueError(f"非法发射类别字段: {code}") return code print(normalize("6K00A3E")) # -> 6K00A3E-- print(normalize("12K5F3E--")) # -> 12K5F3E--

代码里ljust(9, "-")的补齐字符必须是短划线,用空格会破坏定长解析;EMISSION正则按位置逐位约束取值范围,第一位单独排除 0、K、M、G 这几种非法起始字符。参数说明:输入为原始字段,输出为规范化的9字符形式,校验失败直接抛异常而不是静默修正,避免把错值带进后续计算。

现象:反查带宽时对不上,180.4 kHz 在文本里写成 181K,而按 180K 去查却找不到对应行。原因:四字符表示只有三位有效数字,超出部分进位,导致两个相近带宽共享同一编码。解决:编码只保证三位有效数字精度,反查时按区间匹配而非精确相等,并意识到“编码相同”不代表“带宽相同”。

现象:把广播电台那行的“10 Hz”当成相对值 10×10⁻⁶ 代入计算,结果偏差几个数量级。原因:容限表混用相对与绝对两种口径,表头的“除非另有说明”就是留给这类例外的。解决:读表时先判断该行给的是相对值还是绝对量,凡是带 Hz 单位的直接按绝对偏差处理。

5.3 生效与版本类

现象:按新版文本设计的产品参数,在2025年初发现部分条款的执行口径与预期不一致。原因:多数条款自2025年1月1日起生效,其余条款按修订版第59条规定的特别生效日期生效,全文本并非同时生效。解决:把“条款生效日期”作为独立字段维护,不要假设整卷同一时刻生效;对涉及特别生效日期的条款单独建一张对照表。

现象:跨版本比对时发现某附录的同一节内容前后不一致。原因:附录被部分修改时,只有被改动的条款在案文结尾标缩略语,未标注部分仍是旧文本,同一个附录里并存多个版本来源。解决:以条款为最小比对单位,逐条看结尾缩略语,而不是以整个附录为粒度做 diff。

6. 当规则被当成协议来设计,代价是什么

把这份文本当成协议规范来读,会发现它做了几个非常明确的取舍,而且每个取舍都付出了可见的代价。

第一是可追溯性优先于可读性。版本信息长在款尾和附录编号上,读者必须随时携带“括号即版本、无括号即继承”的心智模型。换来的是任何一处引用都能自解释:看到 9.2B 就知道它在 9.2 与 9.3 之间插入过,看到(WRC-23)就知道改动来源。若改成集中式变更日志,正文会干净很多,但任何一次核对都要跨文件跳转。

第二是编号冻结优先于结构合理。本版沿用与2001年版相同的编号方案,意味着某些条款的排列顺序在今天看来未必最优,但历史引用全部有效。这跟数据库不轻易改主键是同一种考虑:结构可以丑,锚点不能动。

第三是定长编码优先于紧凑表达。发射类别固定9字符,缺位用短划线补齐,机器解析成本极低,人读成本很高。如果改成逗号分隔的键值对,可读性会上去,但字段缺失、顺序错乱、分隔符冲突这些问题会立刻出现。

第四是双轨制优先于统一机制。规划、列表、共用标准三者并存,历史包袱明显,但它同时满足了“新进入者有保底资源”和“存量可以双边调整”两个互相冲突的目标,单靠任何一套机制都做不到。

要验证自己是否读懂了这套设计,有个笨办法很有效:随便挑一条现行引用,从条款追到附录、再追到附录里的某个附件,看每一跳的版本标记是否闭合。如果中间出现一个既无缩略语、也无法回溯到历史文件的断点,那多半是把“继承”误读成了“缺失”。

我自己的习惯是,每次动这份文本之前,先跑一遍引用一致性检查,把带 SUP 的条目、缺版本标记的附录引用、长度不足9位的发射类别字段各列一张清单,确认没有断链再往下做。有一次偷懒跳过了这步,结果把一份已废止的附件当成现行标准算了两天,返工时才发现目录里那个 SUP 标记一直在那儿。从那以后我每次拆规则文本,都强制走一遍清单。

希望帮到你。

本文还有配套的精品资源,点击获取

返回列表