一、NBIOT网络架构
这里使用华为开发者社区提供的信息来看NB-IoT端到端架构全貌。
1)UE(终端)与eNB/EPC(基站)之间:基于NB-IoT技术进行通信,分为AS和NAS,这部分基本完全由芯片实现。
2)UE与IoT云平台之间:一般使用CoAP/MQTT等物联网专用的应用层协议进行通信,主要是考虑了NB-IoT UE的硬件资源配置一般很低,不适合使用HTTP/HTTPs等复杂的协议。
3)IoT云平台与第三方应用服务器之间:由于两者的性能都很强大,且要考虑带宽、安全等诸多方面,因此一般会HTTPs/HTTP等应用层协议进行通信。
二、NBIOT模块工作模式
NBIOT模块默认有三种工作状态如下:
1. Connected(连接态)
模块注册入网后处于该状态,可以发送和接收数据,无数据交互超过一段时间后会进入Idle模式,时间可配置。
2. Idle(空闲态)
可收发数据,且接收下行数据会进入Connected状态,无数据交互超过一段时会进入PSM模式,时间可配置。空闲状态可配置执行DRX或eDRX模式。
DRX:discontinuous reception,不连续接收模式。对下行业务时延要求高,如路灯。
eDRX:Extended idle mode DRX,扩展不连续接收模式。对下行业务时延有较高要求,可根据设备是否处于休眠状态缓存消息或者立即下发消息,如智能穿戴设备。
3. PSM(节能模式)
此模式下终端关闭收发信号机,不监听无线侧的寻呼,因此虽然依旧注册在网络,但信令不可达,无法收到下行数据,功率很小。
持续时间由核心网配置(T3412),有上行数据需要传输或TAU周期结束时会进入Connected态。
NB-IoT三种工作状态一般情况的转换过程可以总结如下:
1) 终端发送数据完毕处于Connected态,启动“不活动计时器”,默认20秒,可配置范围为1s~3600s;
2) “不活动计时器”超时,终端进入Idle态,启动活动定时器(Active-Timer【T3324】),超时时间配置范围为2秒~186分钟;
3) Active-Timer超时,终端进入PSM状态,在此状态中,终端不进行寻呼,不接受下行数据,处于休眠状态,当终端处于PSM态时,也可以通过主动发送上行数据令终端回到**态;
4)TAU Timer从终端进入空闲态时便开始计时,TAU周期结束时进入Connected态,TAU周期【T3412】配置范围为54分钟~310小时。
三、AT指令
NB-IoT的中文指令集,基于BC95 657 SP2版本翻译的。
——————————————————————
AT 命令 描述 实现的状态
3GPP Commands (27.007)
AT+CGMI 查询制造商 ID B350+
AT+CGMM 查询模块型号 B350+
AT+CGMR 查询固件版本 B350+
AT+CGSN 查询模块*** B350+
AT+CEREG 查询网络注册状态 B350+
AT+CSCON 查询信号连接状态 B350+
AT+CLAC 列出可用命令 B350+
AT+CSQ 获取信号强度 B350+
AT+CGPADDR 显示 PDP 地址 B350+
AT+COPS 选择接入的网络 B350+
AT+CGATT PS 连接或分离 B350+
AT+CGACT **或停用 PDP 上下文 B657SP1+
AT+CIMI 查询国际移动设备身份码 B350+
AT+CGDCONT 定义一个 PDP 上下文 B350+
AT+CFUN 设置终端功能 B350+
AT+CMEE 报告移动终端错误 B600+
AT+CCLK 返回当前日期和时间 B656+
AT+CPSMS 省电模式设置 B657SP1+
AT+CEDRXS eDRX 设置 B657SP1+
AT+CEER 扩展错误报告 B657SP1+
AT+CEDRXRDP eDRX 阅读动态参数 B657SP1+
AT+CTZR 时区报告 B657SP1+
ETSI Commands(正在开发中)
AT+CSMS 选择短消息服务 B657SP1+
AT+CNMA 模块消息提醒 B657SP1+
AT+CSCA 服务中心地址 B657SP1+
AT+CMGS 发送短消息 B657SP1+
AT+CMGC 发送短信命令 B657SP1+
AT+CSODCP 通过控制层发送原始数据 B657SP1+
AT+CRTDCP 通过控制层传送终端数据 B657SP1+
General Commands 通用命令
AT+NMGS 发送消息到 CDP 服务器 B350+
AT+NMGR 接收 CDP 服务器消息 B350+
AT+NNMI 接收消息标志 B350+
AT+NSMI 发送消息的标志 B350+
AT+NQMGR 查询接收到的消息量 B350+
AT+NQMGS 查询发送的消息量 B350+
AT+NMSTATUS 信息注册状态 B657SP1+
AT+NRB 模块重启 B350+
AT+NCDP 配置和查询 CDP 服务器设置 B350+
AT+NUESTATS 获取的操作统计 B350+
AT+NEARFCN 指定搜素频率 B350+
AT+NSOCR 创建 Socket B350+
AT+NSOST 发送数据 B350+
AT+NSOSTF 发送有标记数据 B656+
AT+NSORF 接收命令 B350+
AT+NSOCL 关闭 Socket B350+
+NSONMI 指示 Socket 消息到达(只响应) B350+
AT+NPING 测试 IP 网络连接到远程主机 B350+
AT+NBAND 设置频段 B600+
AT+NLOGLEVEL 设置日志级别 B600+
AT+NCONFIG 配置模块的功能 B650+
AT+NATSPEED 配置 UART 端口波特率 B656+
AT+NCCID 卡片识别 B657SP1+
AT+NFWUPD 通过 UART 更新固件 B657SP1+
AT+NRDCTRL 控制无线配置 B657SP1+
AT+NCHIPINFO 读取系统信息 B657SP1+
Temporary Commands 临时命令
四、NBIOT的联网过程
NB模组UDP数据发送
1)开机/重启,模块已经正常启动;
2)AT+NBAND? 查看当前频段信息,确定是否和模块型号对应;
3)AT+NBAND=5 电信模块,设置频段为850MHZ;
4)AT+NRB 重启模块;
5)AT+NBAND? 再次查询模块频段信息,确认设置成功;
6)AT+NCONFIG? 查询配置信息,主要包括自动连接使能配置信息,默认使能;
7)AT+CFUN? 模块是否处于全工作模式,打开射频电路,搜索信号,如果返回0,请确定AUTOCONNECT值是否为TRUE,以及是否安装NBIOT专用SIM卡;
8)AT+CIMI 查询IMSI信息,如果返回具体数值,说明已经正常识别SIM卡;
9)AT+CSQ 查询信号强度,返回的第一个数值代表信号强度,0-31代表有信号,数值越大信号越强,99代表没有NBIOT网络信号,第二个参数还没有实施,一直为99;
10)AT+NUESTATS 查询模块状态;
11)AT+CGATT? 查询是否模块附着成功,返回1代表成功;
12)AT+CEREG? 查询网络注册状态,第二个数值返回1代表:网络注册成功,返回2代表:正在注册网络,注册时间和信号强度有关;
13)AT+CSCON? 查看模块工作的连接状态,第二个返回数值代表模块的工作状态,1代表CONNECT连接状态,0代表IDLE睡眠状态,如果没有数据交互,在CONNECT状态持续20秒,之后进入IDLE状态;如果仍然没有数据交互,10秒之后从IDLE状态进入PSM深度睡眠状态,此时模块不在接收任何下行数据,如果需要下行传输数据必须在CONNECT 和 IDLE状态下进行;
14)AT+NSOCR=DGRAM,17,5683,1 创建UDP SOCKET 传输信道,DGRAM和17固定,5683代表本地端口号,1代表使能接收下行数据;最多可创建7个SOCKET传输信道,返回数值代表信号ID号,在发送和接收数据时需要指定;
15)AT+NSOST=0,…,####,3,303132 发送UDP数据,0代表UDP SOCKET信道ID,…代表远程服务器的IP地址(公网IP地址),####代表远程服务器端口号,3代表发送的字符个数(发送了3个字符),303132代表“012”3个hex表示的字符;返回值代表成功从0信道发送了3个字节的数据(我这里测试发送了74个字节);
16)+NSONMI:0,67 信息代表模块接收到新的数据,需要读取,如果不及时读取,接收到下一条数据,将不会主动上报该信息;但可以连续读取;0代表 UDP SOKECT信道,67代表有67个字节数据需要读取;
17)AT+NSORF=0,3 读取数据;0代表UDP SOCKET 信道,3代表需要读取数据字节长度;需要从返回值中提取出有效数据303132,代表字符“012”;
18)AT+NSOCL=0 关闭UDP SOCKET 传输信道;
五、NBIOT的数据收发过程