APP下载

基于M10芯片的GSM自动拨测系统的设计与实现

2013-01-31王震懿俞志敏

电视技术 2013年17期
关键词:测系统终端设备服务器端

王震懿,吴 怡,俞志敏

(福建师范大学光电与信息工程学院,福建福州350007)

在移动通信迅猛发展的今天,伴随着终端用户数量的日益增长,相应的GSM基站设备也在成指数级的增加。移动运营商也越来越关注运营网络质量的测试,尤其是在用户感受度方面的测试。中国移动在江苏、浙江、湖南、广东、福建等省都已筹划开始建设网络QoS自动拨测系统,并逐步完善功能,反映了网络优化深入开展的趋势。江西移动、山西移动也已经在开展此类项目的前期调研工作,并提出了相应的实施建议:在2012年建设完成满足江西移动GSM网络优化工作需要,并满足地市级重要客户网络质量监控需要的定点监测系统,预计将配置定点测试终端2 000~3 000台,随后建立覆盖全省的无线网络质量监控系统,实现全面的网络质量监控,使无线网络深度优化工作走向一个新的台阶。

为了解决传统的CQT测试主要以人工方式进行操作而产生了效率低下,测试数据缺乏准确性、真实性等弊端[1]。本文应用嵌入式系统的开发技术,设计了一种基于M10芯片的自动拨测系统,将该系统的终端设备置于测试地点,由系统的平台通过GSM网络下发测试任务,终端接收执行测试任务,并回传测试数据至平台,供服务器对数据进行处理。与文献[2-4]提出的拨测系统设计方案在终端设备的设计上均需使用多块芯片(控制芯片、通信芯片)相比,本文设计的拨测终端产品在M10芯片特有的OpenCPU架构上开发实现,无需引入额外的控制芯片,大大节约了开发成本。

1 系统的总体设计

系统的网络拓扑结构框图如图1所示。该自动拨测系统主要由嵌入式终端设备和服务器端设备组成。其中嵌入式终端设备负责接收执行来自服务器端的测试命令,采集相关的测试数据并通过网络传回给服务器端;服务器端设备由监测平台和数据库服务器组成,平台通过向终端设备发送短信的方式配置目标地址建立通信通道,下发测试任务并负责接收前端设备传回的数据,数据库服务器则负责对数据进行录入和分析[5-7]。

图1 网络结构框图

嵌入式拨测终端设备的硬件设计框图如图2所示,整个硬件平台基于Quectel公司生产的M10芯片搭建。M10采用特有的OpenCPU构架将GSM 模块和系统控制芯片集成在一起,开发人员可在Quectel公司提供的M10 SDK上可完成整个系统软件的开发。其中的GSM模块可工作于850,900,1 800,1 900 MHz四个频段,采用标准的AT指令与CPU进行交互。系统的存储空间由64 Mbyte的SDRAM和256 Mbyte的NAND Flash组成,满足程序运行和大量数据存储的需求。另外还设有RS-232外围接口可连接PC端串口供开发人员调试系统。

图2 终端设备硬件模块结构框图

2 系统的软件设计

2.1 OpenCPU架构

OpenCPU是一种提供了强大的支撑环境的软件机制,它为Quectel公司的M10和M30模块设计,其软件架构如图3所示,从上至下可分为应用层、应用接口层、传输接口层和内核层。

图3 OpenCPU架构图

OpenCPU使用标准C语言开发,向应用层抽象了包括Memory、FILE system、FCM在内的12类典型应用程序编程接口,可完美支持TCP/IP协议栈,支持最多10个的多任务处理机制,其子程序在ql_customer_config.c文件中定义。开发者可在其上开发新的创新应用并直接将它们嵌入到Quectel GSM/GPRS模块中。同时OpenCPU也能简单地让应用软件在别的不同的MCU平台上运行。以拨打测试为例,通过Ql_OpenModemPort()函数来打开虚拟串口,之后通过Ql_SendToModem()函数传输数据给coresystembuffer,传输内容可以是AT指令、CSD数 据 或GPRS数 据。Ql_SendToModem(“ATD10086/0xd”,4)与通过外接串口在超级终端中输入“ATD10086”指令的效果是一样的。而OpenCPU与外部设备通信则是通过Ql_SendToUart_2()函数来向UART口传输数据。给出一个典型的基于OpenCPU平台编写的应用代码框架如下:

/*main function*/

QlEventBuffer qlEventBuffer;

bool keepGoing=TRUE;

void ql_entry(void)//Entrance function

{

while(keepGoing)

{

Ql_GetEvent(&qlEventBuffer);//get event from Quectel Core system

switch(qlEventBuffer.eventTyp)

{

…//To do:add your code for parsing EVENTs.

default:…

break;

}

2.2 终端软件系统模块设计

终端系统软件结构框图如图4所示。

图4 终端系统软件结构框图

各主要模块功能描述如下:

1)AT指令通信模块:通过向virtual modem port接口发送AT指令来操控M10芯片的GSM模块。主要完成两个任务:一是根据测试任务要求连续采集相关的网络参数写入文件并交付数据收发模块,主要包括LAC(位置区码)、BASIC(基站识别码)、BCCH(广播控制信道)、RxLev(接收信号电平)、RxQualSub(闲时信号误码率)、RxQualFull(忙时信号误码率)等;二是负责从GSM modem的短信收件箱中读取短信,并交予任务处理模块对信息进行分析和处理。

2)任务处理模块:任务处理模块可分为协议处理和任务管理两部分。协议处理部分主要负责通信协议的解析与封转,接收来自AT指令通信模块的通信包,并按照相应的通信协议进行解析,剔除无效信息。任务管理部分则负责根据协议处理的结果创建不同类型的测试任务线程,分为拨打测试、短信测试和数据测试三类。

3)数据收发模块:通过GPRS拨号连接网络,形成PPP链路。进而将AT指令通信模块产生的测试数据封装成UDP报文发送回服务器端。其硬件层面依然是通过GSM modem实现,在OpenCPU构架下有关UDP通信的实现被封装成以下几个函数,一个UDP报文的产生和发送流程如图5所示。

图5 M10芯片UDP包传输流程

4)程序监控模块:实现类似看门狗的功能,通过生成软件定时器要求系统中的各程序模块在指定时限内向监控模块发送心跳包,一旦监控模块在一个运行周期内未接收到合法的心跳信息,则调用硬件接口对整个软硬件系统进行复位和重启。

2.3 关键通信协议及服务器端软件设计

整个拨测系统的南向接口规范包括下行命令数据包和上行应答数据包两部分,其中命令类型包括:初始化设备、设置全局通信参数、重启测试模块、停止测试任务、设置短信内容、设置告警门限、设置告警使能、下发语音测试任务、下发语音测试任务、下发扫频测试任务、查询设备状态、查询告警信息、查询关键网络参数、查询周边网络参数、告警和告警消除十五类。具体的下行命令格式如表1。控制命令所含各字段说明如表2所示。

表1 下行命令格式

表2 控制命令所含各字段说明

上行应答格式与下行命令格式相比,在命令长度与命令类型字段间增加了设备编号参数,其余字段设置相同,其数据结构定义为:

typedef struct

{

unsigned char strCodeFlag[1];

unsigned char strCodeLength[2];

unsigned char strDeviceID[10];

unsigned char strCodeID[2];

unsigned char strCodeContent[MAX_SIZE];

unsigned char strCodeCrc16[4];

}UpPacketStats;

其中,CRC校验位的算法实现如下:

static unsigned short fcstab16[]={0x0000,0x1189,…,0x0f78,};

unsigned short VerifyCrc16(byte*origFrame,int length)

{

unsigned short fcs16=0xFFFF;

for(int i=0;i<length;i++)

{

fcs16=(unsigned short)((fcs16>>8)^fcstab16[(fcs16^orig-Frame[i])&0xff]);

}

return fcs16;

}

3 测试结果

服务器端软件负责封装和发送下行数据包,接收和解析上行数据包,并录入数据库。服务器端软件使用VC++编写,利用MFC中的Cstring类实现对字符型数据的操作,利用ODBC技术实现数据库支持,图6是服务器端软件的界面图。以下发短信测试任务为例,用户在下发短信测试任务的各个参数编辑框中填入参数,点击“下行编码”按钮完成编码,点击“数据发送”按钮下发测试任务。当前端设备应答时,软件将弹窗提示用户接收到有上行数据,点击确认后,数据将直接显示在“指令显示”编辑框中,点击上行解码软件自动比对CRC校验成功后,数据自动填入左侧的上行执行结果中。由图6中数据可见,前端设备共发送短信496条,成功率100%。

图6 服务器接收端软件(截图)

4 结束语

本文阐述了一种新型的GSM自动拨测系统的设计方案,重点介绍了终端设备的软硬件设计和通信协议编写以及在OpenCPU环境下的应用编程。经初步测试,本文设计的基于M10芯片的GSM自动拨测系统可实现语音拨打测试、短信收发测试和网络参数测试,能够为移动运营商提高准确及时的测试数据。与传统的人工拨测手段相比,该系统具不仅节省了大量的人力物力也提高了运营商的运维效率[2]。得益于针对M10芯片的深入开发,使得系统终端新媒体技术设备无需再引入额外的控制芯片,降低了开发成本,从而使整个设计方案更具有现实意义。

[1]李程达.GSM网络自动拨测终端的设计与实现[J].电视技术,2012,36(11):154-156.

[2]申晨,刘伟平,黄红斌.基于以太网通信的自动拨测系统设计与实现[J].微计算机应用,2008,29(12):34-38.

[3]YD/T 1216—2010,900/1800MHz TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)基站子系统与服务GPRS支持节点(SGSN)间接口(Gb接口)测试方法[S].2010.

[4]江厚炎,刘军杰.GPRS核心网自动拨测系统的设计与实现[J].军事通信技术,2008,29(3):57-60.

[5]柯小婉,李文璟,芮兰兰.移动业务拨打测试自动控制协议设计[J].工程与设计,2010(3):54-59.

[6]管耀武,杨宗德.ARM嵌入式无线通信系统开发实例精讲[M].北京:电子工业出版社,2006.

[7]潘爱国,王国印.Visual C++技术内幕[M].4版.北京:清华大学出版社,2009.

猜你喜欢

测系统终端设备服务器端
基于定标模型云共享的奶牛粪水微型NIR现场速测系统
Linux环境下基于Socket的数据传输软件设计
RSSP-I铁路信号安全通信协议的测试研究
视频监视系统新型终端设备接入方案
行车记录仪通信连接方法、行车记录仪及终端设备
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
车站信号系统终端设备整合及解决方案
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
基于广域量测系统的电力系统综合负荷辨识模型的研究