深度解析 3GPP TS 27.007:6 Call control commands and methods (呼叫控制命令与方法)

本文技术原理深度参考了3GPP TS 27.007 V19.4.0 (2025-09) Release 19 规范中,关于“6 Call control commands and methods”的核心章节。本章是AT命令世界的“心脏”,它定义了如何发起、管理和终止一次通信。我们将跟随工程师小李,从最经典的语音拨号,到复杂的2G/3G数据链路建立,再到关乎生命的eCall紧急呼叫,全面探索“呼叫控制”这一核心概念的演进与实现。

写在前面:小李的“第一次呼叫”

在完成了对模组的“身份盘查”和通信环境的“语言设定”后,物联网工程师小李迎来了“天眼”追踪器项目的一个关键里程碑:发起第一次真正的网络连接。无论是拨打一个语音电话进行测试,还是建立一条数据链路将位置信息上报云端,都离不开一个核心动作——“呼叫”。

AT命令的第六章,“Call control commands and methods”,正是这份庞大规范中专门论述“呼叫”的篇章。小李知道,这一章的内容远不止ATD拨号和ATH挂机那么简单。它像一部活的历史,记录了通信技术从电路交换(CS)到分组交换(PS)的演进轨迹。其中包含了如何选择数据业务类型、如何配置空中接口的传输协议、如何处理语音和数据的混合通话模式,甚至还包括了现代车联网中至关重要的eCall紧急呼叫指令。

对于小李而言,精通这一章,就意味着掌握了让他的“天眼”设备与世界建立任何形式连接的能力。这不仅是技术实现的必须,更是构建一个稳定、可靠、功能丰富的物联网产品的基石。让我们和小李一起,深入这“呼叫控制”的核心地带,揭开那些控制着数据与声音在无形电波中穿梭的神秘指令。


1. 呼叫的基石:经典拨号与挂断 (6.1, 6.2, 6.5)

一切复杂的呼叫,都源于最简单的“拨”与“挂”。规范的开篇就从这些继承自ITU-T V.250的经典命令讲起。

1.1 ATD:一切连接的起点 (Dial Command D)

ATD是AT命令集中最具标志性的命令之一,它的职责就是“发起呼叫”。

ITU-T Recommendation V.250 dial command D lists characters that may be used in a dialling string for making a call or controlling supplementary services in accordance with 3GPP TS 22.030.

小李的场景1:发起一次语音呼叫

为了测试模组的语音功能,小李需要用它拨打自己的手机。

  • 发送命令: ATD10086;

    • 10086:这是拨号字符串,即电话号码。

    • ; (分号):这是一个非常重要的修饰符,它告诉模组:“这是一次语音呼叫,发起后请立即返回命令模式,不要进入数据模式。” 如果没有分号,对于数据模组,它可能会尝试建立一个CSD(电路交换数据)连接。

  • 模组响应: OK

    此时,模组的通话状态变为active,小李的手机会响起。

1.2 ATHAT+CHUP:结束通话的两种方式

H[] (6.3.6): mand. hang- up a single mode call; for alternate mode call refer clause “Hangup call +CHUP”

+CHUP (6.5): Execution command causes the TA to hangup the current call of the MT.

小李发现有两个命令可以挂断电话:经典的H和扩展的+CHUP。它们有细微但重要的区别。

  • ATH: 是V.250标准定义的通用挂机命令。在简单的单模通话(纯语音或纯数据)中,ATH0(或直接ATH)用于挂断当前通话。

  • AT+CHUP: 是3GPP为蜂窝网络定义的专用挂机命令。它被设计用来更可靠地终止所有类型的通话,特别是那些复杂的“交替模式通话”(我们稍后会讲到)。规范甚至在注释中提到,ATH不一定能从语音模式中挂断一个交替模式通话。

小李的实践与感悟:

为了代码的健壮性和兼容性,他决定在自己的驱动库中,统一使用AT+CHUP来执行挂断操作,因为它在蜂窝通信场景下的行为定义更明确、更可靠。

1.3 +CSTA:明确你的号码类型 (Select Type of Address)

在拨打电话,特别是国际长途时,我们需要先拨+号。这个+号是如何被模组理解的呢?+CSTA命令揭示了答案。

Description

Set command selects the type of number for further dialling commands (D) according to 3GPP TS 24.008.

+CSTA用于设置地址类型八位位组(Type-of-Address octet)。这个八位位组会告诉网络,你拨打的号码是国际格式还是国内格式。

  • 默认值 145: 当拨号字符串包含+号时,模组会使用这个值,它代表“国际号码”。

  • 默认值 129: 当拨号字符串不包含+号时,模组使用这个值,代表“未知”(通常被网络解析为国内号码)。

小李的理解:

这个命令通常不需要开发者手动设置。但理解它的存在,有助于明白+号在AT命令中的特殊含义,它不仅仅是一个字符,更是触发模组使用特定地址类型(145)向网络表明这是一个国际号码的“开关”。


2. 从CSD到HSCSD:数据呼叫的早期探索

在分组交换(PS)技术成熟之前,早期的数据业务是通过电路交换(CSD)实现的,就像拨打一个“数据电话”。尽管现在已很少使用,但理解相关命令有助于我们了解数据业务的演进。

2.1 +CBST:宣告数据呼叫的意图 (Select Bearer Service Type)

当小李想建立一个CSD连接时,他必须先告诉模组,这次ATD不是打语音电话,而是要一个数据承载。+CBST就是这个“宣告”。

Description

Set command selects the bearer service with data rate , and the connection element to be used when data calls are originated…

+CBST有三个核心参数:<speed>, <name>, <ce>

Table 14: +CBST parameter command syntax

| Command | Possible response(s) |

| :--- | :--- |

|+CBST=[<speed>[,<name>[,<ce>]]]| |

|+CBST?|+CBST: <speed>,<name>,<ce>|

|+CBST=?|+CBST: (list of supported ...)|

  • <speed>: 定义数据速率,如 7 代表 9600 bps。

  • <name>: 定义承载类型,0 代表异步,1 代表同步。

  • <ce>: 定义连接元素,这是关键,它区分了**透明(Transparent, T)非透明(Non-Transparent, NT)**模式。

    • 0 (Transparent, T): 透明模式。空中接口不提供任何差错控制。数据像流水一样,错了就错了,不会重传。它的优点是时延固定,缺点是可靠性差。

    • 1 (Non-Transparent, NT): 非透明模式。空中接口引入了**RLP(Radio Link Protocol)**协议,提供差错重传机制,保证数据传输的可靠性。缺点是由于重传,时延会发生抖动。

小李的场景: 他想建立一个9600bps的、可靠的(非透明)异步CSD连接。

  1. 设置承载: AT+CBST=7,0,1

  2. 拨号: ATD<data_number>

+CBST选择了非透明模式后,RLP协议就被激活了。+CRLP命令允许我们对这个“可靠性引擎”的参数进行微调。

Description

Radio link protocol (RLP) parameters used when non-transparent data calls are originated may be altered with set command.

Table 15: +CRLP parameter command syntax

| Command | Possible response(s) |

| :--- | :--- |

|+CRLP=[<iws>[,<mws>...]]|…|

其核心参数包括:

  • <iws>, <mws>: IWF-to-MS和MS-to-IWF的窗口大小。定义了在收到确认前,最多可以连续发送多少个数据帧(滑动窗口)。

  • <T1>: 应答计时器。

  • <N2>: 最大重传次数。

小李的感悟: +CBST+CRLP这一组合,生动地展示了早期移动数据通信为了在不可靠的无线信道上实现可靠传输所做的努力。这与现代TCP/IP协议中的滑动窗口和重传机制思想如出一辙。

2.3 HSCSD:2G时代的“多车道高速” (6.12-6.18)

HSCSD (High-Speed Circuit-Switched Data) 是CSD的增强版,它通过捆绑多个GSM时隙,实现了更高的数据速率。虽然早已被淘汰,但规范中仍保留了+CHSD, +CHST, +CHSN等一系列命令来对它进行配置,记录了那段历史。对于现代开发者,了解即可,无需深究。


3. 语音与数据的协奏曲:交替模式通话 (6.4, 6.6)

在2G/3G时代,一个有趣的业务是“交替模式通话”,即在同一次呼叫中,可以在语音和数据/传真之间进行切换。+CMOD命令就是这个功能的总开关。

Description

Set command selects the call mode of further dialling commands (D) or for next answering command (A). Mode can be either single or alternating…

Table 12: +CMOD parameter command syntax

| Command | Possible response(s) |

| :--- | :--- |

|+CMOD=[<mode>]| |

|+CMOD?|+CMOD: <mode>|

|+CMOD=?|+CMOD: (list of supported <mode>s)|

<mode>的取值:

  • 0: 单一模式(默认)。

  • 1: 交替语音/传真 (Teleservice 61)。

  • 2: 交替语音/数据 (Bearer service 61)。

  • 3: 语音后数据 (Bearer service 81)。

规范中的 “Figure 4: Voice followed by data call” 和 “Figure 5: Alternating voice and data call” 清晰地展示了这些流程。

小李的想象场景(远程维护终端):

一个现场维护人员需要支持一个远端的无人设备。

  1. 设置模式: 维护人员在终端上发送AT+CMOD=2

  2. 发起呼叫: 发送ATD<device_number>;。首先建立的是语音连接。

  3. 语音沟通: 维护人员与设备端的现场人员(或自动语音系统)通话,了解基本情况。

  4. 切换到数据: 沟通完毕,维护人员在终端上发送一个简单的ATAATD(不带号码),模组将执行“In-Call Modification”流程,将当前的语音承载切换为数据承载。

  5. 数据传输: 连接变为CSD数据链路,维护人员可以开始传输日志文件、下发配置等。

  6. 切换回语音: 再次发送ATH等指令,可以从数据模式切回语音模式。

  7. 结束通话: 最后通过AT+CHUP彻底挂断整个通话。

+CMOD和相关的流程图,完美诠释了在电路交换时代,人们是如何巧妙地在一次连接中复用不同业务的。


4. 现代呼叫的“风向标”:+CVMOD与eCall

随着IP网络的普及,语音业务也开始向VoIP演进。同时,车联网等垂直行业也对呼叫控制提出了新的要求。

4.1 +CVMOD:CS语音还是VoIP?(Voice call mode)

这条命令让TE可以表达对语音通话承载的偏好。

Description

Set command selects the voice call mode for making a Mobile Originated voice call from the UE. The voice call mode can be CS_ONLY, VOIP_ONLY, CS_PREFERRED or VOIP_PREFERRED.

<voice_mode>的取值:

  • 0 (CS_ONLY): 只使用CS语音。

  • 1 (VOIP_ONLY): 只使用VoIP(如VoLTE, VoNR)。

  • 2 (CS_PREFERRED): 优先使用CS语音。

  • 3 (VOIP_PREFERRED): 优先使用VoIP。

小李的策略:

对于他的“天眼”追踪器,虽然主要业务是数据,但可能预留了紧急情况下的语音对讲功能。考虑到VoLTE/VoNR的覆盖可能不如CS网络完善,他可以将模式设置为AT+CVMOD=3(VoIP优先),这样在有5G/4G覆盖时能获得更好的通话质量,而在信号不佳的地区,模组也能自动回落到2G/3G的CS语音,保证了通话的可靠性。

4.2 +CECALL+CECN:生命的呼唤 (eCall)

eCall(Emergency Call)是欧盟强制推行的车载紧急呼叫系统。当车辆发生严重事故时,车载终端(IVS)会自动拨打紧急号码(如112),并同时通过数据通道(in-band modem)将事故的关键数据(MSD - Minimum Set of Data),如车辆位置、碰撞方向、乘客数量等,发送到公共安全应答点(PSAP)。

+CECALL (6.27): Set command is used to trigger an eCall to the network or to provide an updated MSD to the network during an ongoing eCall.

+CECN (6.28): Set command is used to control the presentation of an unsolicited result code +CECN: <data_type> when =1 and the network requests an updated MSD during an eCall.

小李的扩展项目(车载版“天眼”):

假设“天眼”项目推出了一个车载版本,集成了碰撞传感器。

  1. 事故发生: MCU检测到剧烈碰撞。

  2. 触发eCall: MCU立即向模组发送AT+CECALL=2,,<msd_len>,<msd_data>

    • 2: 代表“手动发起的eCall”(自动发起是3)。

    • <msd_data>: 包含了GPS位置、时间戳等信息的最小数据集。

  3. 建立连接: 模组会以最高优先级建立一个紧急语音呼叫,并在呼叫过程中将MSD数据发送出去。

  4. 网络请求更新: 在通话过程中,如果救援中心需要更新信息(如再次确认位置),网络会下发指令。如果模组设置了AT+CECN=1,它会主动上报URC +CECN: 1,通知MCU“网络需要新数据”。

  5. 响应更新: MCU收到URC后,重新采集数据,并通过AT+CECALL=1,,<new_msd_len>,<new_msd_data>1代表“重配置eCall”)将更新后的MSD发送出去。

+CECALL+CECN这一对命令,是AT命令集服务于垂直行业、承载关键任务的典范。


总结

第六章“呼叫控制”是AT命令集中承上启下的一章。它以经典的ATD命令为起点,向我们展示了移动通信如何从简单的语音通话,一步步演进到支持可靠数据传输(CSD/HSCSD)、语音数据混合(交替模式),并最终迈向IP化(VoIP偏好选择)和行业深度融合(eCall)的完整画卷。

对于工程师小李来说,这一章的学习让他收获颇丰:

  • 他掌握了发起和终止任何类型呼叫的基本指令。

  • 他理解了透明与非透明数据业务的本质区别,以及RLP协议在其中扮演的关键角色。

  • 他学会了如何通过+CMOD来处理复合型业务,并通过+CVMOD来适应现代网络CS与PS并存的现状。

  • 他掌握了如何利用+CECALL来实现高可靠、低延迟的紧急业务,这为他的产品进入车联网等高端领域打开了大门。

呼叫控制,是模组与网络之间最核心的交互。掌握了这一章,小李就真正掌握了开启通信大门的钥匙。


FAQ:快速问答

Q1:为什么现在物联网都用PS数据业务了,还要学习CSD相关的+CBST等命令?

A1:主要有三个原因:1. 理解演进:CSD是PS数据业务的前身,理解其透明/非透明模式、RLP协议等,有助于更深刻地理解现代数据通信中QoS、可靠性等概念的根源。2. 兼容遗留系统:在某些极其偏远或特殊的网络环境中(如专网),仍可能存在仅支持CSD的场景。3. 概念复用+CBST中关于承载业务类型(异步/同步)的定义,在后续其他命令中也可能被引用。

Q2:ATHAT+CHUP,我到底应该用哪个来挂断电话?

A2:强烈推荐使用AT+CHUPATH是源自V.250的通用命令,在3GPP的复杂通话模型(如交替模式)下,其行为可能不明确。而AT+CHUP是3GPP专门为蜂窝网络定义的挂断命令,其行为定义更清晰、更可靠,能够确保终止当前所有与呼叫相关的活动。为了代码的健壮性,应优先使用+CHUP

Q3:什么是“交替模式通话”(Alternating Mode Call),现在还有用吗?

A3:交替模式通话是指在同一次电路交换(CS)呼叫中,可以在语音和数据(或传真)两种业务状态之间来回切换。例如,先语音通话,然后切换到数据模式传个文件,传完再切回语音继续通话。这个技术在2G/3G时代有一定应用。在现在这个VoLTE和数据业务可以完全并行的4G/5G时代,这种基于CS的交替模式已经基本被淘汰,但在一些特殊行业应用或老旧网络中可能还会遇到。

Q4:+CRCRING有什么区别?

A4:RING是V.250定义的传统来电提示,它只告诉你“有电话来了”。而+CRC(Cellular Result Codes)是3GPP的扩展功能,通过AT+CRC=1开启。开启后,来电时模组会上报更详细的信息,如+CRING: VOICE+CRING: FAX+CRING: ASYNC,让TE可以清楚地知道这是一通语音电话、传真电话还是CSD数据电话,从而做出不同的响应(如启动不同的处理程序)。

Q5:eCall (+CECALL) 和普通紧急呼叫(如ATD112;)有什么本质区别?

A5:普通紧急呼叫(ATD112;)仅仅是建立一条到紧急中心的语音通道。而eCall是一个更完整的系统:

  1. 自动/手动触发+CECALL可以由程序根据传感器数据(如碰撞)自动触发。

  2. 数据与语音并行:最核心的区别在于,eCall在建立语音呼叫的同时,会通过带内调制解调器(in-band modem)技术,在语音通道上“承载”一个被称为MSD(最小数据集)的数据包,将事故位置、时间等关键信息主动推送给救援中心。

  3. 高优先级:eCall呼叫在网络中具有最高优先级,能保证在网络拥塞时也能优先接通。

因此,+CECALL不仅仅是拨号,而是一个集成了数据上报的、标准化的紧急求助流程。