欢迎来到天天文库
浏览记录
ID:6356609
大小:97.50 KB
页数:5页
时间:2018-01-11
《基于gprs短信息的远程控制系统设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于GPRS短信息的远程控制系统设计班级:06计本1班学号:060120091前言目前,对输油管道、电力装置等多个分散点进行监控主要采用人工巡逻的方式,这种方式存在实时性差、成本高、无法对环境恶劣的地区进行监控等缺点。随着internet与移动通信技术的发展,这种传统的监控方案已无法满足应用要求,亟待开发一种实时性好、可靠性高、价低易用的无线远程监控系统。GPRS能够很好地解决上述问题。GPRS是在充分利用现有GSM网络的基础上,通过添加GGSN和SGSN实现数据的分组传输,从而将移动通信与Internet网络联系起来,是目前无
2、线数据传输应用最广泛的网络。2系统硬件组成输油管道压力监控模块的硬件结构框图如图1所示,系统由远程监控模块和监控中心PC机组成,它们通过GPRS网络进行通信。远程监控节点由ARM模块、GPRS模块和传感器模块组成。其中,GPRS模块主要用于数据的发送、接收以及短消息的接收;ARM模块完成传感器数据的编码和TCP/IP封装,控制GPRS模块将数据发送到监控中心,并接收和执行监控中心发送的控制命令;监控中心为通过以太网卡连人Internet中的一台具有固定IP的计算机,采用VB.NET开发工具调用Winsock控件编写监控软件,用于
3、接收、处理和显示各个监控点发送的数据,并对监控点发送控制命令。其中,GPRS模块是无线数据传输的核心部分,本文采用西门子公司的MC39i,它提供一个标准的RS232接口用于与外部应用系统连接。3系统软件设计3.1基于FreeRTOS的系统任务设计根据嵌入式实时操作系统模块化设计理念,将系统软件设计划分为主控任务MainTask()、与网络连接任务GPRSConctTask()、数据传输任务xDataTrsmtTask()、短消息处理任务xSMSProc-Task()和传感器任务xSensorStatTask()。任务之间采用信号
4、量、队列和邮箱等进行通信,其关系如图2所示,其中MC39iSerialDrv()为串口驱动程序。MC39iSerialDrv()为串口驱动函数,它负责将发送队列xQSendToMC39i里面的数据发送给与MC39i相连接的串口。接收到数据后,将MC39i串口接收到的数据发送到接收队列xQRecdFrom-MC39i中,数据的接收和发送是通过中断服务子程序完成的。GPRSConctTask()实现MC39i模块与GPRS网络的连接,是远程数据传输的基础和关键。3.2基于状态机设计GPRS连接任务由于网络和信号强弱等原因,可能导致节
5、点与GPRS网络连接的失败。本文采用基于状态机的结构设计方法对各个阶段产生的错误进行处理,保障模块与GPRS网络建立可靠连接。程序状态机如图3所示。3.3基于uIP协议栈的传输层软件设计利用GPRS模块进行数据传输时,数据格式须符合互连网络的TCP/IP协议标准。xDataTrsmtTask()任务完成传输层和网络层处理。根据系统状态(UDP或TCP态),传输层处理方式不同。TCP提供可靠的数据传输方式,其应用层协议也比较多,被广泛应用于网络通信领域。由于TCP的协议头以及数据传输控制比较复杂,数据的传输效率较低,因而越来越多的
6、实时小数据量的应用,更倾向于使用基于UDP的数据传输协议。3.3.1基于uIP的TCP数据传输方式的实现本文基于uIPTCP/IP协议栈实现TCP数据传输方式。uIP是由AdamDunkels编写的源代码免费开放的微型TCP/IP协议栈,传输层协议实现了UDP和TCP,链路层PPP协议可以作为uIP下面的设备驱动来实现,uIP系统底层和应用程序之间的关系如图4所示。应用程序必须提供一个回应函数给uIP,数据传输任务周期性调用UIP_AP-PCALL()函数处理事件的发生。进行TCP数据传输之前,首先通过调用uIP协议栈提供的ui
7、p_connect()函数与监控中心的监控软件建立一个TCP连接,TCP连接的三次握手均由uIP协议栈的uip_process()函数完成。默认情况下,uIP协议栈的发送和接收共用一个缓冲区,当uIP处理缓冲区内数据时,必须关中断,为了提高系统实时性,我们将其改为双缓冲区模式。系统每个时钟节拍分别对发送和接收缓冲区进行扫描,如发现缓冲区非空时,由uIP协议栈处理。接收数据时,uip_process()对接收缓冲区内数据进行TCP和IP协议头解析,并将应用数据发送到In-Buffer[]中。发送数据时,由uip_process()
8、完成发送缓冲区OutBuffer[]中数据的TCP/IP封装,再调用uIP驱动程序PPPSendData()进行链路层PPP协议头的封装,并将封装的数据发送到发送队列xQSendToMC39i中。3.3.2UDP数据传输的实现和改进设计中采用对数据包进行编码和增
此文档下载收益归作者所有