基于CDMA模块MG815+的车载终端数据通信设计
2011-04-14
车载终端简介
车载终端组成
图1为车载终端的结构图,车载数据终端主要包括单片机(rabbit2000)、GPS模块、CDMA 手机模块、GSM手机模块、铁电存储器、电源变换模块等。其中,CDMA模块负责所采集数据的无线传输。
图1 车载终端结构图
车载终端工作原理
车载终端的工作原理可以描述为数据采集、数据处理及存储、数据上传几个过程。其中数据采集读取GPS模块返回的消息,提取经纬度信息,通过GSM和 CDMA 模块分别采集CDMA和GSM网络质量参数;数据处理及存储根据经纬度信息判断车辆行驶距离,由此距离判断是否记录该次采集的数据,上传数据时再从铁电中读取这些数据;数据上传通过简单IP实现与监控中心的TCP连接,并实时检测TCP连接状态,连接中断则立即重新连接,保证数据能实时地上传给监控中心。
数据传输的实现
硬件连接
本文中采用了MG815+模块及UIM卡,硬件连接如图2所示。图中左侧为UIM卡连接参考电路,右侧为MG815+模块连接参考电路。由于模块串口输出电平为3.8V,而Rabbit串口输出电平为5V,因此在两者之间增加了串口电平转换芯片NC7WZ07,以提升Rabbit和模块之间串口通信的可靠性。
图2 MG815+及UIM卡的硬件连接图
AT指令
AT(Attention) 指令最初由 Hayes 公司推出,主要用于对调制解调器的控制,现在已演化为一种标准,所有移动模块都支持 AT 指令。虽然不同厂家的手机模块都参照 GSM 协议,但格式还是有所不同,开发过程中一定要认真参考厂家给的资料。AT 指令格式如下:
AT指令都以“AT”开头,以结束,例如 “ATE0rn”
AT指令返回格式:<跟AT指令相关的字符串>,例如,对于上一AT命令的返回为“ATE0rnrnOKrn” 。
TCP连接的建立
TCP的连接建立经过以下过程:
① 建立拨号连接,AT命令为AT+ZPPPOPENrn。
② 建立TCP连接,AT 命令为AT+ZIPSETUP=SOCKET_NUM, IP_AD, PORT_NUM rn,例如AT+ZIPSETUP=1,211.136.18.171,5000rn。
③ TCP连接成功建立后,可以发送数据,AT命令为AT+ZIPSEND=, rrn,例如AT+ZIPSEND=1,4rgoodrn,发送的数据为“good”。
这里所用到的查询命令及各命令返回说明包括:
①查询拨号连接状态命令:AT+ZPPPSTATUSrn
返回有三种状态:拨号连接建立rn+ZPPPSTATUS: OPENEDrnrnOKrn
拨号连接断开 rn+ZPPPSTATUS: CLOSEDrnr nOKrn
正在拨号 rn+ZPPPSTATUS: * rnrnOKrn
②查询TCP连接状态命令:AT+ZIPSTATUS= SOCKET_NUM rn
返回有三种状态:TCP连接建立 rn+ZIPSTATUS: ESTABLISHEDrnrnOKrn
TCP连接失败 rn+ZIPSTATU S:CLOSEDrnrnOKrn
正在建立连接 rn+ZIPSTATUS:SYN_SENTrnrn OKrn
数据的发送和接收
模块从TCP通道接收到数据后,由串口返回消息:+ZIPRECV:0,1,, rn,例如,+ZIPRECV: 0,10,1234567890rn,则TCP通道接收的数据为1234567890。
+ZIPRECV为异步消息,在任意时刻返回,在接收该消息时要注意。
数据传输的软件设计
终端与监控中心以报文形式交互数据,报文包括数据包(采集的数据信息)、心跳包(定时发送,以维持网络连接)以及校时请求,以上均由终端主动发起,监控中心回复。数据通信子程序的流程如图3。
图3 数据通信流程图
根据流程图可知,发送数据后等待监控中心的回复消息,设置等待时间,若超时还无回复消息,则退出等待;下次发送数据时重新发送。
数据传输实例
终端发送的数据包如下:
01780102000146003030407 5345460008184101641000105 03010701221632303903.6741N1215 3.1326E27990357079425-70-66-632 004070031040828531405011144 1801194100068722100694210807 02200906902012
数据包中0178为报文长度;01为版本号;02为命令字;0001为数据包序列号;460030304075345为UIM卡号;460008184101641为SIM卡号;00010503为系统工作状态字;01为后面跟1条数据(每条长度126)。
0701221632303903.6741N12153.13 26E27990357079425-70-66-63200407003104082853140501114 418011941000687221006942 1080702200906902012为一条数据,依次为时间、经纬度、C网质量参数和G网质量参数。
注意事项
拆包现象
模块支持在TCP通道一次发送1024字节数据,但模块内部发送缓冲区为536字节,使用+ZIPSEND命令一次发送1024字节数据时,发送的1024 字节数据拆分为2条socket数据先后传送给监控中心服务器。可通过降低一次发送的数据量来避免此现象,即一次传输不多于536字节。
连包现象
如果两条+ZIPSEND指令时间间隔过小,或前一包数据还未发送成功时模块收到新的数据发送命令,则模块把两条指令中的数据合并为一条 socket数据发送。此时,可以从两方面解决此问题:一是模块发送端每发送一个数据包后,等待监控中心返回确认消息后再继续其他工作,这样只能最大限度地防止上述现象的发生;另一方面是在监控中心接收端对上述现象进行容错处理。
此外,如果监控中心发送两条数据的时间间隔太短,模块接收数据时会出现中心发送的两条数据合并,以+ZIPRECV消息从串口返回,终端处理TCP数据时要考虑此问题。
异步消息的返回
模块返回的异步消息主要为TCP通道返回的数据。该消息的返回格式在前文中已说明。由于异步消息返回时间的不确定性,该消息会以两种方式从串口输出。一是单独返回。二是向模块发送AT指令后,异步消息随该指令的返回值一同返回,例如,当发AT指令查询拨号连接状况时,模块在TCP通道收到数据,则返回如下:rn+ZPPPSTATUS:OPENEDrnrnOK rn+ZIPRECV:1,24,002401810 000070312120016rn。在接收和处理异步数据时应充分考虑异步消息的这两种返回情况,以免丢失数据。
结语
本文详细论述了如何通过CDMA模块MG815+的数据传输功能实现车载终端与监控中心的通信,并给出了软件设计流程。
上一篇:WAF 防护核心WEB应用
- 国产高精度、高速率ADC芯片,正在崛起
- 贸泽开售用于快速开发精密数据采集系统的 Analog Devices ADAQ7767-1 μModule DAQ解决方案
- 采用电容型PGA,纳芯微推出高精密多通道24/16位Δ-Σ型ADC
- 安森美CEO亮相慕尼黑Electronica展,推出Treo平台
- ADALM2000实验:变压器
- 意法半导体推出灵活、节省空间的车载音频 D类放大器,新增针对汽车应用优化的诊断功能
- 高信噪比MEMS麦克风驱动人工智能交互
- 全差分放大器为精密数据采集信号链提供高压低噪声信号
- 安森美推出业界领先的模拟和混合信号平台
- 集Hi-Fi、智能和USB多通道等特征于一体的微控制器——迎接数字音频新时代