基于GPRS/CDMA短消息功能修改负荷终端参数的程序设计

来源:互联网 发布:php发短信 编辑:程序博客网 时间:2024/04/28 21:36

基于GPRS/CDMA短消息功能修改负荷终端参数的程序设计

汪俊锋1陶维青1汪丽丽2

1合肥工业大学电气与自动化工程学院合肥 230009   2安徽电子计算机厂  合肥230018)

摘要:指出了短消息在电力通信中的应用前景并具体分析了短信在电力负荷管理系统中的应用方式。文中根据短信的技术特点以及短信在电力通信中的各种应用作了具体比较后,得出了利用短信功能实现电力设备应用的辅助操作功能,可以进一步提高设备产品应用的功能性和便利性。文章着重介绍了GPRS/CDMA短信功能修改负荷终端参数的软件设计和实现过程。

关键字:短消息  GPRS/CDMA   负荷终端  AT命令

The program design of modifying the load terminals parameters base on

the SMS function of GPRS / CDMA

Wang junfeng1   tao weiqin1  wang lili2

(1.School of Engineering and Automation, Hefei Uuniversity of Ttechnology,Hefei 230009,China;2.Anhui electronic computer factory, Hefei 230018,China)

Abstract: This article pointed out the application prospects of short message in the power communication and analyzed the application manners of short message in the power load management system in detail. In accordance with the technical characteristics of the SMS and the specific comparison of many application ways of SMS in the power of communication,it reached conclusion that we can use SMS to realize the auxiliary function of power equipment,which can further enhance the functionality and convenience of product.The article focuses on the realization of the process of software design which used the SMS function of GPRS / CDMA to modify the parameters of load terminal.

Keyword:  SMS  GPRS/CDMA    load terminal  AT command


引言、

短消息业务是GPRS/CDMA系统中最为简单和方便的数据通信方式,它不需要附加其它较为庞大的数据终端设备,仅使用GPRS/CDMA模块就可以进行信息交流。短消息业务是通过信道传输的,所以这些信息的发送和接收可以在GPRS/CDMA网络上与语音、数据和传真服务同时进行而不会彼此产生任何干扰。在诸多增值业务中,短消息服务因其价格低廉、使用方便、信息传递准确及时、存储转发等优点而备受用户欢迎,基于短消息服务具有良好的市场并最早应用于电力系统传输领域[1]

1短消息在电力通信中的应用

短消息电力负荷系统中数据的传输模式有两种:

1) 对电力负荷管理终端进行数据召测。

2) 终端数据主动上传。

短消息在终端侧的连接方式相同,在主站侧的连接方案有两种:

方案一: 是通过短消息通信方式;在主站设置一个或若干个GSM/CDMA中心主台,与终端的GPRS/CDMA通信模块直接“点对点“通信,这种方式适用于终端数量较少的场所,可减少主站的设备投资。

方案二: 从短消息服务中心建立专线连接,短消息通过专线发送到服务中心,服务中心再转发到终端中,终端侧的数据先发到短消息服务中心,再通过专线传到电力负荷主站上。该方式可以解决主站侧多个终端设备上报造成的信道容量问题。但是,这种方式需要申请数据专线的连接并承担一定的运行费用。

短消息业务在电力负荷系统中的应用存在着以下缺点:

1)实时性差,不适用于对实时控制功能要求很高的负荷管理系统。

2)对于短消息业务还不适用于电力负荷管理系统的分组与群发功能。

3) 数据传输长度受到限制,每条短消息的长度最多为140个字节,这样也不利于大量数据的传输。

基于以上的原因以及GPRS/ CDMA通信技术的不断发展,大多的电力设备在数据传输通信上都使用GPRSCDMA,而短信功能则慢慢成为在电力设备应用中辅助操作功能,但这些辅助功能必不可少,可以极大地提高设备产品应用的功能性和便利性。例如利用短信实现实时报警功能,如负荷管理预付费报警、电力线防盗系统、力通信网的管理报警等;利用短信实现参数修改的功能,如本文中实现短信修改负荷管理终端中IP地址和端口号等。

2短消息操作的AT命令和报文格式

AT命令是由美国Hayes公司推出的一套Mdoem操作命令集,是Modem通信接口的工业标准。GPRS/CDMA模块在实际应用中,通信方式和任何通信相关的参数均利用AT命令的形式通过串口本地更改设置的。

1)在GPRS模块(以MC55为例)中短信操作相关的AT命令有[3]

 AT+CMGF=1 设置短信格式为文本。

AT+CNMI=3,1 设置新消息提示。

收到新短消息将提示:

+CMTI" MT",2

表示新消息存储于存储空间第2条。

 AT+CMGR=2读出存储序号为2的消息。

 AT+CMGD=2删除存储序号为2的消息。

短信发送操作为:

AT+CMGS=139********/r

> ”Message”  0x1A

2)在CDMA模块(以AnyDATA公司的模块为例)短信相关的AT命令有[5]

AT+UGSM=1(选择使用第2套短信指令)

AT+CMGF=1(格式化输出。实际数据的每个字节在输出的时候,输出其ASCII值。)

AT+CMGF=0 (普通格式。这个格式是输出短消息数据的二进制原文)

有短信来时终端显示:CMT: 11为表示新消息存储于空间的第1个位置)

AT+CMGR=1读存储序号为1的消息。

模块回复:

+CMGR:00000220,13956083950,,2008/08/29/10:13,0,123456789/r/nOK/r/n

发信息过程:

AT+CMGS=2,13956083950,,0,123                           

发送成功模块回复:

+CMGS: 2/r/nOK/r/nCMGS: 2, 1

在设计中,我们主要利用GPRS/CDMA的短信功能来修改和查询终端系统的IP地址、端口号和服务类型以及利用短信复位终端系统的GPRS/CDMA的模块。我们自定义了短信的报文格式,这些报文主要有字母和数字组成,为了方便的短信的操作,我们在GPRSCDMA的短信操作中都是选用文本格式,短信报文命令格式如下:

AT+KDC  修改命令,

具体格式:AT+KDC=210.45.240.88080192.168.0.189999,,,cmnet# 

前面的为主IP和端口号,接着为备用IP和端口号,最后为服务类型。

AT+KDC?  查询命令

AT+RET   复位命令

终端系统在给操作用户回复相关结果的时候也是严格按照这种短信报文格式进行的操作的。

3 短消息功能的程序设计

GPRSCDMA短信在整体的设计框架是一样的,只是在具体某些细节上有些区别。由上述的流程图我们可以了解到,当有短信来的时候,MCU的串口会收到短信来提示符,接着系统会发送读操作AT命令,将相应的短信储存器中消息读出来,再对读出的短信进行解包处理判断出本条短信的操作类型,然后分别进行相应的操作,如修改操作,需要将终端系统的原有IP地址、端口和服务类型修改成操作者需要修改的IP地址、端口和服务类型并修改以后的IP地址、端口和服务类型作为回复信息发回给操作者,并复位GPRS/CDMA模块。另外,在进行短信操作时,需要及时清理GPRS/CDMA模块的短信储存空间,以免防止短信储存空间满,造成新的短信不能接收[4]

整个短信功能实现的主要函数如下:

int GetMessage()

{  //主要用来判断短信的操作控制类型

far char *ptr;

  CharTempBuf[100];  

memcpy(TempBuf, DataInBuf,99);

  TempBuf[99]=0;

  ptr=far_strtok (TempBuf,",");

  ptr=far_strtok (0,"/n");

  ptr=far_strtok (0,":");

if(!MemCmp((uchar*)ptr,(uchar*)

"AT+KDC=",7))//设置

   return 1;

if(!MemCmp((uchar*)ptr,(uchar*)

"AT+KDC?",7))//查询

   return 2;

  if(!MemCmp((uchar *)ptr,(uchar*)"AT+RET",6))//复位

   return 3;

  else  return 0;

}

void HandleMessage( int MesType) //主要进行短信的解包处理和相应操作

{  far char *ptr;

  char apn[17], Number[15];

  ptr=far_strpbrk(DataInBuf,",");

  ptr += 2;

  far_memcpy(Number,ptr,14);

//读取发信人号码

  Number[14]=0;

  ptr=far_strpbrk (ptr,"/n");

  switch(MesType)

  { case 1://修改操作

解包修改操作短信报文,修改终端系统相关参数,复位GPRS/CDMA模块;

               break;

    case 2: //查询操作

进行具体的发送执行操作,使用发送短信AT命令;

              break;

    case 3: //复位操作

复位GORS/CDMA模块;

              break;}

}

void HandleSMS()

{  far char *ptr;

if(!MemCmp(DataInBuf+2,

(uchar*)"+CMTI:",6))  findstr=1;

else if(!MemCmp(DataInBuf+2,

(uchar*)"+CMGR:",6)) findstr=2;

else if(!MemCmp(DataInBuf,

(uchar*)"/r/n>",3)) findstr=3;

else if(!MemCmp(DataInBuf+2,

(uchar*)"+CMGS:",6)) findstr=4;

else return;

     if(findstr==0) return;

   switch(findstr)

   {  case 1:

             发送读短信命令;

             Break;

      case 2:

      判断短信操作类型并进行处理;

             break;

      case 3:

将终端参数打包,发送给操作者;

             break;

      case 4:

             删除短信储存区;

             break;

      default:

             break;}

}

需要注意的是,短信功能作为整个GPRS/CDMA通信功能的一部分,其本身必须要与整个GPRS/CDMA通信框架相融合。在设计中为了将短信处理函数HandleSMS()很好地放在GPRS/CDMA通信框架中,使短信操作与GPRS/CDMA通信无缝连接,互不影响,我们考虑和解决了方面有以下几点:

1)短信的操作不能发生在GPRS/CDMA模块正在拨号连接的过程中,所以在设计中,我们对模块的拨号过程进行的强制保护,短信的具体操作主要发生GPRS/CDMA模块的未连接状态和数据传输状态[2]

2)短信在修改过系统参数后,需将修改后的参数作为应答信息回复给操作者,然后GPRS/CDMA模块的复位,按照新的参数进行上线连接。需要注意的是模块的复位时间与应答信息回复时间之间的匹配操作,否则会造成应答信息收不到。设计中,我们利用相关定时器是控制复位操作的执行时间,确保在收到应答信息后,模块再复位。

3CDMA模块在进行AT模式操作连接后进入透传模式,在该模式下任何和AT操作都会视为传输数据,所以当在透传模式下进行短信操作时,需要将已建立的连接断开。在设计中,在透传模式下进行短信操作时,我们会强制复位CDMA模块,使模块上电但不连接上线,然后再进行短信操作。

4)为了防止短信储存空间满,或者因为信号强度等原因造成短信没有及时收到,我们在程序设计中短信解包处理操作后会立即删除储存去的短信,并在AT的拨号中设置了一次读操作和一次删除操作保证有足够的储存空间来接收短信,一次读操作就是处理上次没有及时收到的短信。

总结

本文重点介绍了在负荷管理系统中如何实现短信修改负荷管理终IP地址和端口号的功能,文中详细说明实现GPRS/CDMA短信功能所需要的AT命令以及各命令之间的关系和操作顺序,阐述了GPRS/CDMA短信功能实现的软件设计流程,给出了功能函数的框架,具体说明了在软件设计中的重点和难点并给出了若干解决的方法。该设计已应用到终端现场,运行稳定可靠,具有很好的工程运用价值。

参考文献

[1]姚刚,基于GSMSMS短消息方式通信模块在电力负荷控制系统中的应用,上海大学,2006.1

[2]汪俊锋、陶维青、张全,基于MC39I的电能管理终端远程GPRS接口设计[J],合肥工业大学学报(自然科学版),2009.124-27

[3] SIEMENS, MC55 / MC56 AT Command Set[DB/OL]. DATASHEET.2003.9

[4]陈星、刘利.基于SMS的执行器无线监控终端的设计[G].微计算机信息.2008.312-15

[5] AnyDATA.AnyDATA CDMA MODULE AT Command Set[DB/OL]. DATASHEET.2006.8

原创粉丝点击