深度解析 3GPP TS 27.007:10 Commands for packet domain (Part 4 - 行为定义与模式选择)
本文技术原理深度参考了3GPP TS 27.007 V19.4.0 (2025-09) Release 19 规范中,关于“10 Commands for packet domain”的核心章节。在前三部分中,我们已然掌握了数据连接的建立、QoS保障、以及连接的动态管理。本文为Part 4,我们将深入探讨一组决定模组“性格”与“行为模式”的关键命令,看它们如何定义设备在不同网络制式、不同业务场景下的核心行为。
写在前面:当“天眼”开始思考“我是谁”
工程师小李的“天眼”追踪器项目进展顺利,原型机已经具备了稳定可靠的数据收发能力。然而,随着产品即将从原型走向多样化的市场,新的、更根本性的问题开始浮现。客户们的需求五花八门:
-
A客户(高端冷链物流)问:“你的追踪器在上传数据的同时,还能不能接听一个紧急语音电话,以便司机和后台通话?” 这涉及到设备同时处理多种业务的能力。
-
B客户(部署在4G为主的地区)问:“我们的网络主要靠4G数据和2G语音。当设备在进行4G数据传输时,如果有一个语音电话打进来,会发生什么?连接会中断吗?” 这关系到设备在混合网络下的业务连续性。
-
C客户(追求极致启动速度)问:“我希望设备一开机就能以最快速度把数据发出来,能不能跳过所有不必要的等待?” 这涉及到设备启动后的自动化行为。
-
D客户(传统行业)问:“我们还保留了通过短信作为备用控制通道的习惯,你的设备在5G网络下,发送短信是走传统的电路域,还是新的分组域通道?”
这些问题,不再是简单的“如何连接”,而是关乎设备在通信世界中**“如何自处”**的哲学问题。小李意识到,他必须为“天眼”定义清晰的行为模式,以适应不同的客户需求和网络环境。他需要为它设定“性格”:是“一心多用”的并发高手,还是“专注一事”的切换专家?是“雷厉风行”的急先锋,还是“沉稳听令”的执行者?
定义这些“性格”的工具,就隐藏在第十章的深处。本章,我们将跟随小李,深入探索+CGCLASS、+CEMODE、+CIPCA、+CGPADDR和+CGSMS这几个核心命令,学习如何精细化地定义模组的工作类别、模式偏好、启动行为和业务选择,从而将“天眼”打造成一个能够适应任何场景的“多面手”。
1. +CGCLASS:定义你的“工作类别” (GPRS Mobile Station Class)
在GPRS的早期,网络资源非常有限,一个设备能否同时进行语音通话(CS业务)和数据上网(PS业务)是一个重大的能力问题。+CGCLASS命令就是用来定义和查询设备在这种多任务场景下的工作类别的。
Description
The set command is used to set the MT to operate according to the specified mode of operation, see 3GPP TS 23.060. If the requested mode of operation is not supported, an ERROR or +CME ERROR response is returned.
Table 126: +CGCLASS parameter command syntax
| Command | Possible Response(s) |
| :--- | :--- |
| +CGCLASS=[<class>] | +CME ERROR: <err> |
| +CGCLASS? | +CGCLASS: <class> |
| +CGCLASS=? | +CGCLASS: (list of supported <class>s) |
参数<class>是一个字符串,定义了三种核心的设备工作类别:
-
"A"(Class-A): “全能并发”模式。Class-A mode of operation (A/Gb mode), or CS/PS mode of operation (Iu mode) (highest mode of operation)
行为: 设备可以同时进行CS业务(如语音通话)和PS业务(如数据传输)。这意味着在上传数据的同时,可以接听电话,而数据传输不会中断(可能会因为资源共享而速率下降)。这需要设备具备更强的硬件能力(如双收发链路)。
-
"B"(Class-B): “智能切换”模式。Class-B mode of operation (A/Gb mode), or CS/PS mode of operation (Iu mode)
行为: 设备可以同时监听CS和PS网络,但不能同时进行业务。当它在进行PS数据传输时,如果有一个CS电话打进来,数据传输会被挂起(suspend),设备转而去处理语音通话。通话结束后,数据传输可以恢复(resume)。这是最常见的设备类别。
-
"CG"(Class-CG): “专职数据”模式。Class-C mode of operation in PS only mode (A/Gb mode), or PS mode of operation (Iu mode)
行为: 设备只工作在PS模式下,完全忽略CS网络。它就是一个纯粹的数据终端,无法拨打或接听CS语音电话。
-
"CC"(Class-CC): “专职语音”模式。Class-C mode of operation in CS only mode (A/Gb mode), or CS (Iu mode) (lowest mode of operation)
行为: 设备只工作在CS模式下,就是一个传统的语音电话,无法进行GPRS数据上网。
小李如何回答A客户:
面对A客户关于“边打电话边传数据”的需求,小李首先要确认模组的能力。
-
发送测试命令:
AT+CGCLASS=? -
模组响应:
+CGCLASS: ("A","B","CG") -
解读与答复: 模组支持A、B、CG三种类别。小李可以自信地告诉客户:“我们的设备支持Class-A模式。您只需要在设备初始化时发送
AT+CGCLASS="A",就可以实现您需要的数据与语音并发功能。”
对于大多数纯数据型物联网应用(如“天眼”),设置为"CG"可以避免不必要的CS网络交互,可能在某些情况下更省电、更稳定。
2. +CEMODE:4G/EPS时代的“行为准则” (UE Modes of Operation for EPS)
随着4G/LTE成为主流,+CGCLASS的概念被更具体的+CEMODE所继承和发展。在4G网络中,语音业务的主流方案是VoLTE,但初期许多网络和终端并不支持,因此诞生了CSFB (Circuit Switched Fallback) 技术——当有语音呼叫时,终端从4G网络“回落”到2G/3G网络去完成通话。+CEMODE正是为了管理UE在这种复杂场景下的行为而设计的。
Description
The set command is used to set the MT to operate according to the specified mode of operation for EPS, see 3GPP TS 24.301.
Table 10.1.28-1: +CEMODE parameter command syntax
| Command | Possible Response(s) |
| :--- | :--- |
| +CEMODE=[<mode>] | +CME ERROR: <err> |
| +CEMODE? | +CEMODE: <mode> |
| +CEMODE=? | +CEMODE: (list of supported <mode>s) |
+CEMODE的<mode>参数定义了UE在EPS网络下的工作模式:
-
0(PS mode 2 of operation): 仅PS模式2。UE只附着在EPS网络上,不支持CSFB。这意味着它是一个纯数据终端,或者它支持VoLTE。如果有CS电话,它将无法接听。 -
1(CS/PS mode 1 of operation): CS/PS模式1。UE会同时进行EPS附着(用于数据)和非EPS的IMSI附着(用于CS语音)。当UE在4G网络下时,可以直接接收CS寻呼,然后回落到2G/3G进行通话。 -
2(CS/PS mode 2 of operation): CS/PS模式2。UE只进行EPS附着。当需要CS业务时,它依赖于核心网的SGs接口来实现寻呼和CSFB流程。
小李如何回答B客户:
B客户关心的是4G数据传输时来电会发生什么。这正是+CEMODE要解决的典型CSFB场景。
-
查询模组能力:
AT+CEMODE=?,假设返回支持(0,1,2)。 -
配置模组行为: 为了保证语音通话不丢失,小李必须将模组配置为支持CSFB的模式。他可以选择
1或2。通常,CS/PS mode 1在某些网络下兼容性更好。发送命令:
AT+CEMODE=1 -
向客户解释行为: “我们的‘天眼’设备已配置为CS/PS模式。当它在进行4G数据传输时,如果有一个电话打进来,数据传输会自动暂停,设备会回落到2G/3G网络让您完成通话。通话结束后,设备将自动返回4G网络并恢复数据传输。您的关键通话不会丢失。”
+CEMODE与+CGCLASS一脉相承,都是在定义设备的多任务处理能力,但+CEMODE更聚焦于4G/EPS环境下,特别是与CSFB技术紧密相关。
3. +CIPCA:定义你的“开机第一件事” (Initial PDP Context Activation)
对于电池供电的设备,从上电到发出第一个数据包的时间(Time to First Packet)和这期间的功耗,是至关重要的性能指标。+CIPCA命令就给了开发者一个选择权:设备在注册上网络后,是立即自动激活数据连接,还是等待应用程序的明确指令?
Description
The set command controls whether an initial PDP context (see clause 10.1.0) shall be established automatically following an attach procedure when the UE is attached…
Table 10.1.32-1: +CIPCA parameter command syntax
| Command | Possible Response(s) |
| :--- | :--- |
| +CIPCA=[<n>[,<AttachWithoutPDN>]]| |
| +CIPCA?| +CIPCA: <n>[,<AttachWithoutPDN>] |
| +CIPCA=?| +CIPCA: (list of supported <n>s),... |
参数<n>定义了初始上下文的激活策略:
-
0(Do not activate): “听我号令”模式。设备在完成网络附着后,会停留在Idle状态,不会自动激活任何PDP上下文/PDU会話。它会静静等待TE通过AT+CGACT命令来手动激活。 -
1(Always activate): “雷厉风行”模式。只要设备一附着到网络上,模组就会立即自动激活“初始PDP上下文”(通常是cid=0或cid=1)。 -
2(Activate when not roaming): “看家模式”。只有在本地网络(Home PLMN)时才自动激活,在漫游网络时不自动激活。这是一种节省漫游流量的策略。
小李如何回答C客户:
C客户追求极致的启动速度。
-
小李的策略: 选择“雷厉风行”模式。
-
配置流程:
-
在设备首次配置时,先通过
AT+CGDCONT=1,"IP","cmiot"定义好初始上下文。 -
然后发送
AT+CIPCA=1,将此设置永久保存。
-
-
最终效果: 之后,设备每次开机,只要一注册上网络,模组就会自动执行
CGACT的流程。MCU的应用代码可以大大简化,它无需再关心复杂的激活流程,只需等待网络可用后直接开始发送数据即可。这大大缩短了从开机到首个数据包发出的时间。
“听我号令”模式(n=0)的应用场景:
对于功耗极其敏感,且大部分时间都应处于最低功耗状态的设备,“听我号令”模式更好。设备开机附着后,可以立即进入PSM或eDRX的省电状态,只有在应用层(MCU)真正需要发送数据时,才由MCU唤醒并手动执行AT+CGACT,实现了对连接建立过程的完全掌控。
4. +CGPADDR:连接后的“验明正身” (Show PDP Address)
在执行完“上网三部曲”后,如何验证数据链路真的已经建立?+CGPADDR命令就是最权威的“验票员”,它用于查询已激活的PDP上下文/PDU会话所获取到的IP地址。
Description
The execution command returns a list of PDP addresses for the specified context identifiers.
Table 123: +CGPADDR action command syntax
| Command | Possible Response(s) |
| :--- | :--- |
|+CGPADDR[=<cid>[,<cid>...]]|[+CGPADDR: <cid>[,<PDP_addr_1>[,<PDP_addr_2>]]]|
|+CGPADDR=?|+CGPADDR: (list of defined <cid>s)|
响应解读:
-
<PDP_addr_1>: 通常是IPv4地址。 -
<PDP_addr_2>: 当UE是双栈(IPV4V6)时,这里会显示IPv6地址。
小李的连接检查函数:
他编写了一个函数IsNetworkReady(),其核心逻辑就是:
-
发送
AT+CGPADDR=1(假设数据连接使用cid=1)。 -
解析返回的
+CGPADDR: 1,"..."字符串。 -
如果返回中包含一个合法的IP地址(如
10.x.x.x),则函数返回true。 -
如果返回中没有IP地址(如
+CGPADDR: 1,"0.0.0.0"或根本没有地址字段),则函数返回false。
这个函数成为了他所有上层应用(如MQTT, HTTP客户端)开始工作前的“守门神”,确保了应用总是在IP地址就绪后才尝试发起连接,避免了大量的socket连接错误。
5. +CGSMS:选择你的短信“通道” (Select Service for MO SMS)
对于D客户提出的短信通道问题,+CGSMS命令提供了答案。在现代网络中,发送短信(MO-SMS)有两条路径可选:
-
电路域(CS): 传统的短信通道。
-
分组域(PS): 通过IMS或SMS over NAS(在LTE/5G中)发送,也称为”SMS over IP”。
Description
The set command is used to specify the service or service preference that the MT will use to send MO SMS messages.
Table 129: +CGSMS parameter command syntax
| Command | Possible response(s) |
| :--- | :--- |
| +CGSMS=[<service>] | |
| +CGSMS? | +CGSMS: <service> |
| +CGSMS=? | +CGSMS: (list of currently available <service>s) |
<service>参数的核心选项:
-
0(Packet Domain): 仅使用分组域。 -
1(Circuit Switched): 仅使用电路域。 -
2(Packet Domain preferred): 优先使用分组域,如果不可用则使用电路域。 -
3(Circuit switched preferred): 优先使用电路域,如果不可用则使用分组域。
小李的策略:
为了现代化和效率,PS域是首选。但为了保证在只有2G CS信号的偏远地区也能发送备用短信,他选择了“PS优先”的策略。
- 发送命令:
AT+CGSMS=2
这样配置后,当MCU调用AT+CMGS发送短信时,模组会首先尝试通过5G/4G的PS通道发送;如果失败(例如,IMS未注册),它会自动尝试通过2G/3G的CS通道发送,实现了最大的兼容性和可靠性。
总结
在第十章的Part 4中,我们深入了一系列定义模组核心“行为模式”的AT命令。这些命令让我们的设备不再是一个被动执行的“傻瓜终端”,而是一个能够根据预设策略自主行动的“智能体”。
-
通过**
+CGCLASS和+CEMODE,我们定义了设备在面对多业务并发**时的处理能力和策略,无论是CS/PS同时在线,还是优雅地进行CSFB回落。 -
通过**
+CIPCA,我们掌握了设备开机后的自动化行为**,可以在“极速连接”和“精确控制”之间做出最符合业务需求的权衡。 -
通过**
+CGPADDR,我们获得了一个最可靠的连接状态验证工具**,确保上层应用总是在正确的时机启动。 -
通过**
+CGSMS,我们学会了为短信业务选择最优的传输通道**,兼顾了效率与兼容性。
小李通过应用这些命令,将“天眼”追踪器打造成了一个更加成熟和灵活的商业产品,能够满足不同客户、不同网络环境下的苛刻要求。AT命令的探索之旅仍在继续,第十章的深处还有更多宝藏等待我们发掘。
FAQ:快速问答
Q1:+CGCLASS 和 +CEMODE 有什么关系?在5G模组上我应该用哪个?
A1:+CGCLASS源于GPRS时代,定义的是CS和PS业务的并发能力。+CEMODE源于EPS(4G)时代,更具体地定义了在LTE网络下如何处理CS业务(特别是CSFB)。可以认为+CEMODE是+CGCLASS在4G/5G时代的演进和具体化。对于现代4G/5G模组,+CEMODE是更常用、更相关的命令,因为它直接关系到VoLTE和CSFB的行为。而+CGCLASS在描述纯2G/3G场景下的行为时仍然有效。
Q2:什么是“初始PDP上下文”(Initial PDP Context),它和+CGDCONT定义的普通上下文有什么区别?
A2:“初始PDP上下文”是一个特殊的、通常由模组在启动时自动定义的上下文(经常是cid=0或1)。它的存在是为了支持+CIPCA等自动化功能。当你设置+CIPCA=1时,模组自动激活的就是这个“初始上下文”。它的参数(如APN)可能来自SIM卡配置、模组出厂预设,或者也可以通过+CGDCONT对其进行修改。它本质上就是一个被赋予了“自动激活”特殊使命的普通PDP上下文。
Q3:我的模组支持IPV4V6双栈,AT+CGPADDR返回了两个IP地址,我应该用哪个进行通信?
A3:你应该优先尝试使用IPv6地址进行通信。这是业界的主流趋势,也是解决IPv4地址枯竭问题的长远方案。你的应用程序应该设计成:
-
首先尝试用返回的IPv6地址建立socket连接。
-
如果连接失败(可能是因为你的服务器或中间网络不支持IPv6),再回退到使用IPv4地址进行连接。
一个健壮的物联网应用应该具备双栈自适应能力。
Q4:为什么短信要走PS域(分组域)?有什么好处吗?
A4:短信走PS域(即SMS over NAS或SMS over IMS)是技术演进的必然趋势,有几个主要好处:
-
统一网络:在纯LTE/5G覆盖、没有CS网络的区域,这是发送短信的唯一方式。
-
效率更高:避免了为了发一条短信而发起一次复杂的CS信令流程,可以复用已有的PS信令连接,理论上更快、更省电。
-
IMS融合:如果是SMS over IMS,短信可以和VoLTE、富媒体消息等IMS业务无缝集成。
因此,+CGSMS设置为2(PS优先)是现代模组的最佳实践。
Q5:如果我设置了+CGATT=0(去附着),之前+CGACT激活的数据连接会怎么样?
A5:会全部被断开。PS附着是所有分组域业务的基础。一旦执行去附着,模组会首先去激活(deactivate)所有已激活的PDP上下文/PDU会话,释放所有IP地址和承载资源,然后才向核心网发送Detach Request信令。所以,AT+CGATT=0是一个“釜底抽薪”的操作,会终止所有正在进行的PS数据业务。