3. AT指令基础与吞吐测试准备

好,咱们进入第三章。这一章是实操前的「弹药准备」。

你想想看,模组再厉害,也得有人给它下命令。谁下?就是我们通过串口发AT指令。吞吐测试能不能跑起来,关键就看你能不能把数据链路搭通。我见过太多人拿着测试工具一顿操作,结果发现模组根本没注册上网络——那测出来的全是寂寞。

3.1 什么是AT指令?

AT指令,说白了就是「Attention」。主机(比如你的电脑或MCU)通过串口发一串字符给模组,模组回你一串结果。一问一答,就这么简单。

每条AT指令以 AT 开头,以 \r\n 结尾。模组收到后会回复 OK 或 ERROR,有些还会带上数据。

AT指令的基本格式:

  • 测试指令:AT+<cmd>=? —— 查询模组支持哪些参数
  • 查询指令:AT+<cmd>? —— 读取当前值
  • 设置指令:AT+<cmd>=<param> —— 写入参数
  • 执行指令:AT+<cmd> —— 触发某个动作

举个例子:AT+CSQ 就是查询信号强度,模组回你 +CSQ: 19,99。19表示信号还行,99表示误码率没测到。嗯,这里要注意,不同厂商的返回值格式可能略有差异,但大体一致。

3.2 吞吐测试前的三条「必查指令」

我个人习惯,拿到一块新模组,先跑三条指令确认状态。这三条不过,后面的吞吐测试想都别想。

3.2.1 AT+CSQ —— 信号质量

这条指令查的是射频底子。返回值 +CSQ: <rssi>,<ber>。

RSSI值 信号强度 (dBm) 评价
0 -113 或更低 几乎没信号
10 -93 勉强可用
20 -73 良好
31 -51 或更高 极好
99 未知 不可用

我的经验:吞吐测试时,RSSI最好在15以上。低于10的话,重传率会飙升,测出来的吞吐数据根本不能反映模组的真实能力。我曾经在实验室里测出过80Mbps,拿到客户现场只有20Mbps——一查,RSSI只有8。所以先查CSQ,别盲目开跑。

3.2.2 AT+CGATT —— 网络附着状态

这条指令告诉你模组有没有「挂」到网络上。返回值 +CGATT: 1 表示已附着,0 表示未附着。

AT+CGATT?
+CGATT: 1

OK

如果返回0,别急着测吞吐。先检查SIM卡有没有插好、APN对不对、天线有没有接。我遇到过好几次,折腾半天发现是SIM卡座接触不良。

3.2.3 AT+QIACT —— PDP上下文激活

这条是重点。PDP上下文,你可以理解成「模组和基站之间的一条逻辑通道」。吞吐数据就是走这条通道跑的。通道没建好,数据发不出去。

AT+QIACT=1
OK

AT+QIACT?
+QIACT: 1,1,1,"10.20.30.40"

OK

返回的IP地址说明激活成功。如果返回 ERROR,大概率是APN配错了,或者网络侧没开数据业务。

注意:有些模组支持多PDP上下文,但吞吐测试一般只用第一个(CID=1)。别搞混了。我曾经在调试时同时激活了CID 1和CID 2,结果数据走错了通道,吞吐死活上不去。

3.3 PDP上下文激活的完整流程

光知道单条指令不够,你得把整个流程串起来。我画了张图,你看一眼就明白了。

PDP上下文激活与数据链路建立流程 PDP上下文激活与数据链路建立流程 模组上电开机 AT+CSQ 查信号 AT+CGATT 附着网络 AT+QICSGP 配置APN AT+QIACT 激活PDP ✅ 数据链路就绪,开始吞吐测试 关键检查点 1. CSQ ≥ 15 再继续 2. CGATT=1 才可激活 3. 激活后确认获取到IP

流程不复杂,但每一步都有坑。我建议你写个脚本,把这几个步骤自动化。手动敲指令太容易出错了。

3.4 建立数据链路:从PDP到Socket

PDP上下文激活后,模组有了IP地址,但还不能直接收发数据。你得再建一个Socket连接——这才是真正的数据管道。

以常见的TCP为例,流程是这样的:

  1. 配置Socket参数:AT+QIOPEN=1,0,"TCP","服务器IP",端口,0,0
  2. 等待连接建立:模组返回 CONNECT 或 +QIOPEN: 0,0
  3. 开始收发数据:用 AT+QISEND 发,模组主动上报接收数据
// 配置并打开TCP连接
AT+QIOPEN=1,0,"TCP","192.168.1.100",8888,0,0

// 模组返回
OK

+QIOPEN: 0,0   // 0号Socket连接成功

// 发送数据
AT+QISEND=0,5
> HELLO
SEND OK

// 接收数据(模组主动上报)
+QIURC: "recv",0,12
AT+QIRD=0,12
+QIRD: 12
Hello Server

避坑指南:我曾经在调试时发现数据发不出去,查了半天,结果是服务器端口被防火墙挡住了。所以建链前,先确认服务器端口的可达性。用PC上的telnet或nc先测一遍,别让模组背锅。

3.5 吞吐测试前的「体检清单」

好了,理论讲完,咱们来点实际的。每次吞吐测试前,我建议你按这个清单走一遍:

检查项 指令/方法 期望结果
信号强度 AT+CSQ RSSI ≥ 15
网络附着 AT+CGATT? 1
PDP激活 AT+QIACT? 有IP地址
Socket连接 AT+QISTATE? Socket状态为CONNECTED
天线驻波 用网分或模组自检 VSWR < 2:1

重要提醒:别在信号差的地方做吞吐测试。你测出来的不是模组的能力,而是射频环境的瓶颈。我见过有人在地下室测出1Mbps,然后抱怨模组不行——其实模组在开阔环境下能跑50Mbps。测试环境要可控,结果才有意义。

3.6 本章小结

这一章我们干了三件事:搞懂了AT指令的基本玩法,学会了三条吞吐测试前的必查指令,走通了从PDP激活到数据链路建立的完整流程。

说白了,吞吐测试的准备工作就是「查信号、附着网、激活PDP、建Socket」。每一步都有对应的AT指令,每一步都有坑。你按我给的清单走,至少能省掉一半的排查时间。