基于ARM系统的基站空调节能控制器_第1页
基于ARM系统的基站空调节能控制器_第2页
基于ARM系统的基站空调节能控制器_第3页
基于ARM系统的基站空调节能控制器_第4页
基于ARM系统的基站空调节能控制器_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京师范大学本科生毕业论文北京师范大学成人高等教育2013届本科生毕业论文(设计)基于ARM系统的基站空调节能控制器学生姓名:专业名称:电子信息科学与技术学号:201113010492指导教师:完成时间:2013-08-27摘要本设计运用STM32F101系列MCU为主控模块、Sensirion的SHT10数字温湿度传感器、继电器、光耦开关、SIM900AGPRS通讯模块、以及RS232/485通信芯片等元器件,设计了温湿度采集电路、脉冲电表电量采集电路、开关量及模拟量采集电路,RS232/485通信驱动电路、以及GPRS无线通信电路。解决通信基站内空调的自动启停以及与节能通风机组的联动工作,最终实现了基站节能减排的目的。同时该节能控制器还具有采集脉冲电量表电能数据以及通过GPRS无线通信上传的功能,方便对控制器以及基站能耗情况的集中统一管理。关键词:基站、STM32F101MCU、SHT10数字温湿度传感器、GPRS无线通信、联动控制、节能减排BasedonARMbasestationairconditioningenergy-savingcontrollerofthesystemAbstractThisdesignUSESSTM32F101seriesMCUasthemastercontrolmodule,theSensirionSHT10digitaltemperatureandhumiditysensor,relay,switchoflightcoupling,SIM900AGPRScommunicationmodule,andRS232/485communicationchipcomponents,designofthetemperatureandhumidityacquisitioncircuit,pulsepowermeteracquisitioncircuit,digitalandanalogacquisitioncircuit,RS232/485communicationdrivecircuit,andGPRSwirelesscommunicationcircuit.Solvethecommunicationbasestationairautomaticstart-stopandthejointoperationwithenergysavingventilationunit,finallyrealizesthepurposeofthebasestationenergyconservationandemissionsreduction.Atthesametimetheenergy-savingcontrolleralsohasapulseelectricscaleelectricenergydataanduploadthroughGPRSwirelesscommunicationfunction,convenienttothecontrollerandthebasestationenergyconsumptionsituationofcentralizedandunifiedmanagement.Keywords:Basestations;STM32F101MCU;SHT10digitaltemperatureandhumiditysensor;GPRSwirelesscommunication;Linkagecontrol;EnergyConservationandEmissionsReduction目录前言 1第1章节能控制器的设计规划 21.1设计要求 21.2设计过程 3第2章节能控制器硬件设计 52.1 节能控制器MCU 52.2 节能控制器电源电路 62.3 输入输出采集电路模块 72.4 串口处理电路模块 112.5 GPRS无线通信电路模块 132.6 程序存储及程序下载电路模块 14第3章节能控制器软件设计 163.1 KeilC软件概述 163.2 主程序的基本结构 163.3 GPRS/SMS数据处理流程 183.4 与智能设备间的通信流程 19第4章结论 20参考文献 21附录 231.主程序(节选) 232.GPRS/SMS通信程序(节选) 303.串口数据处理流程(节选) 35前言近年来,随着我国能源消耗日益增加、环境污染问题日益严重,经济社会发展与能源环境的矛盾更加突出。为此,国家提出了节能减排的重大战略。节能减排工作逐渐成为新时期各行各业工作安排的重中之重,电信行业也不例外。同时,由于电信运营行业作为国家重要的基础设施,自身的行业特殊性也决定了必须进行节能减排。从整个电信运营商移动通信网络设备的能源消耗分布来看,基站设备的能源消耗占到了90%,所以基站节能是移动通信网络节能减排的关键。移动基站的节能不仅仅包括基站主设备的节能,还涉及电源、空调、机房空间等多个方面。而基站空调在整个通信基站的能耗中占到了40-50%以上。在一年当中,随着环境的变化有些季节是无需开启空调进行制冷的,而且通过基站内配置一定风量的通风机组,充分利用凉爽季节提供的天然冷源,完全可以实现制冷和节能的双重目的。如何实现空调在恰当温度环境下的启停,以及与通风机组的联动配合,这就需要一个智能化的控制器自动根据基站内外环境的变化控制空调、通风机组协调工作。电信运营商的无线基站都是无人值守的,这就需要节能控制器还要具有基于无线通信的接口,保证运行数据上传给机房值班人员的监控中心,以实现远程监控。第1章节能控制器的设计规划本项目是基于STM32F101系列MCU为主控单元的集成电路板件,该MCU内核采用ARM32位的Cortex-M3CPU,采用C语言作为硬件编程工具。与空调的通信采用RS485协议解析的方式,与通风机组的控制采用继电器加上接触器的方式实现,对于触发整个节能系统的温湿度采用SHT10数字温湿度方式,根据采集需要至少要配置2组分别放在室内外。并选用SIM900AGPRS通讯模块最终实现控制器与监控中心的无线远程通信。1.1设计要求控制器首先要实现与基站内空调进行协议通信,并以空调自定义的协议命令完成对空调工作状态的实时采集。同时,可根据基站内环境的变化按既定的节能控制逻辑来控制空调启停。另外,控制器对节能通风机组的状态采集和控制也必须以简单可靠的方式实现,即通过继电器或二次继电器方式来通断通风机组的输入供电,以及配置风压传感器来测量其换气风扇产生的风压有无来判断机组工作状态。最后,节能控制器的内嵌程序需要按照基站内外的温湿度变化情况实现既定的节能控制逻辑,该控制逻辑主要完成空调与通风机组的工作配合,尽量减少空调的工作时间,最终达到节能目的。具体的节能控制逻辑如下(图1-1)所示。图1-1控制器的节能控制逻辑节能控制器还需具有对监控机房的无线通信功能,这样可以保证设备的运行数据以及实际的能耗运行数据都可以被监控中心采集并做后续的管理统计。1.2设计过程根据以上的设计目标,将节能控制器分成四个主要的电路模块:输入输出处理电路模块、串口处理电路模块、GPRS无线通信电路模块、程序存储及程序下载电路模块。其中输入输出电路模块分出五个相对独立的子电路:模拟量输入采集子电路,主要是对一些模拟量传感器输入的采集信号进行处理;开关量输入采集子电路,主要是采集“0、1”状态的输入信号;继电器输出控制子电路,主要以常开或常闭的方式对节能通风机组进行开关机控制等;两路数字温湿度子电路将直接对SHT10数字温湿度的数字信号进行处理;两路脉冲量采集子电路,主要是对基站内配置的普通脉冲电表进行脉冲计量。串口处理电路主要是完成RS232/RS485的通信驱动,该电路包含三路RS485和一路RS232两类物理接口,主要是考虑在通信基站内会配置不同品牌空调,这就造成其通信口也会有所不同,节能控制器就需要具有一定的兼容性。GPRS无线通信电路模块,主要考虑合理的性价比,以及较小的运行功耗。经过研究比对,最后选择欣姆通公司的SIM900AGPRS通信模块,该模块运行稳定性价比较高,比较适合本次的设计要求。程序存储及程序下载电路模块主要完成主程序的在线下载、更新升级,以及主运行程序的存储,选用FLASH芯片主要考虑方便擦写升级内嵌程序。图1-2节能控制器电路结构第2章节能控制器硬件设计系统设计分成硬件和软件两大部分,具体的设计内容在将在后续章节详述。控制器板将安装到塑胶板壳内,板壳外部还要开孔多个LED指示灯,只要是指示设备的运行状态和故障告警。从成本和大小考虑,该控制板采用双层印刷电路板,除了GPRS通信模块另行制版(主要从维修方便考虑)外,其它三个电路模块都与ARM芯片组集成到一块板件上。GPRS通信板通过多引脚接插件的方式与主板连接。由于采用塑胶外壳,GPRS通信板天线可以内置在机壳内,无需外置安装。节能控制器MCUSTM32F101基本型系列使用高性能的ARM_Cortex-M3_32位的RISC内核,工作频率为36MHz,内置高速存储器(高达128K字节的闪存和16K字节的SRAM),丰富的增强型外设和I/O端口联接到两条APB总线。所有型号的器件都包含1个12位的ADC和3个通用16位定时器,还包含标准的通信接口:2个I2C、2个SPI和3个USART。STM32F101基本型系列工作于-40°C至+85°C的温度范围,2.0V至3.6V的工作电压,一系列的省电模式满足低功耗应用的需求。本主控板MCU电路如(图2-1)所示。图2-1MCU电路原理图节能控制器电源电路根据现场供电情况配置双路隔离输出5V电源,实现对核心MCU和外围接口电路(RS232、RS485、开关量输入)的隔离供电(图2-2)。图2-2节能控制板电源电路原理图输入输出采集电路模块五路4-20ma标准电信号模拟量采集信号和一路电压输入模拟量采集信号,可实现对供电电压、电压型/电流型标准传感器(温、湿度等)等参数的实时监测(图2-3模拟量采集电路)。图2-3模拟量采集电路节能控制器设计支持八路开关量的光电隔离输入,可外接烟雾报警、急停开关、压差开关等开光量参数(图2-4开关量采集电路)。图2-4开关量采集电路脉冲采集电路,支持对两路脉冲电表电量的采集(图2-5脉冲采集电路)。图2-5脉冲采集电路四路继电器输出电路,实现对强电供电设备的控制,主要控制外节能通风机组或不具有智能通信口品牌空调的按键模拟等(图2-6继电器控制输出电路)。图2-6继电器控制输出电路系统具备两路数字温湿度传感器的接口,与SHT10探头配合试点对本地温湿度的采集。SHT10属于Sensirion温湿度传感器家族中的贴片封装系列。传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号(图2-7数字温湿度采集电路)。图2-7数字温湿度采集电路串口处理电路模块两路RS232接口电路,一路有光电隔离电路便于与具备RS232接口外设直连通信,另一路与MCU直连可外接DTU,串口网络服务器的外设实现设备的远程通信(图2-8RS-232通信口电路)。图2-8RS-232通信口电路三路RS485接口,均具备光电隔离电路,可更根据实际需求配置成节能控制器与不同协议的智能空调、智能传感器通信,或作为从机响应主机(本地调试系统)的召测(图2-9RS-485通信口电路)。图2-9RS-232通信口电路GPRS无线通信电路模块本节能控制器的DCU(对上通信模块)选用SIM900AGPRS通讯模块,该模块属于双频GSM/GPRS模块,完全采用SMT封装形式,其性能稳定。其采用工业标准接口,工作频率为GSM/GPRS850/900/1800/1900MHz,可以低功耗实现语音、SMS、数据和传真信息的传输。该通信电路模块主要完成与监控中心的无线远程通信,可采用主备通讯模式:GPRS为主信道,SMS为备用信道。而且控制器设计支持定时上报、事件上报和中心召测三种通信模式。其通信模块与节能控制器主板通信占用1路MCU的RS232通信口(图2-10GPRS无线通信电路)。图2-10GPRS无线通信电路程序存储及程序下载电路模块M25PE16是16Mbit存储器、SPI接口、页字节256BYTE。用于存储参数及历史数据,相对传统页字节4KBYTE,页字节少,擦除灵活,节约MCU的缓冲RAM空间(图2-11FLASH存储电路)。图2-11FLASH存储电路传统生产流程中都是先对芯片进行预编程现再装到板上,调试工作较为繁琐耗时。简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。本节能控制器的程序下载、调试、仿真接口都采用JTAG在线编程方式,JTAG接口可对MCU芯片内部的所有部件进行编程(图2-12JTAG程序下载电路)。图2-12JTAG程序下载电路第3章节能控制器软件设计KeilC软件概述ARM系统开发中除必要的硬件电路外,同样需要编写内嵌软件,我们写的汇编语言源程序要变为CPU可以执行的机器码通常有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。随着单片机硬件技术的不断发展,单片机的开发软件也在持续更新,其内嵌语言已从汇编语言开发逐渐转入使用高级语言开发。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,其易学易用的特点逐渐被众多开发者喜欢。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,掌握这一软件的使用同样对ARM系列的开发者来说也是十分必要的。基于系统开发的便利性和可读性,本节能控制器的内嵌软件,同样首选KeilC作为开发工具,以下皆为具体的软件结构和处理流程。主程序的基本结构主程序主要是完成各个程序模块的统一调用,保证系统在每个采集周期内将控制板的各类型硬件接口进行数据扫描采集,整个程序以无限循环的方式持续运行,对于外围的功能启动和退出,皆采用中断的模式完成。主程序代码详见《附录1.主程序(节选)》。图2-13节能控制器主程序运行流程GPRS/SMS数据处理流程节能控制器与监控中心的通信采用标准的GPRS/SMS通信协议,上行数据采用动态IP地址的方式与监控中心通信,下行数据以短信SMS的方式对(节能控制配置SIM卡,并分配单独的卡号)节能控制器进行通信唤醒,并以短消息的方式进行数据传送。主程序代码详见《附录2.GPRS/SMS数据处理流程(节选)》。图2-14控制器以GPRS/SMS方式与监控中心数据处理流程与智能设备间的通信流程节能控制器将外围的智能设备定义为从机,在每个数据采集周期内,节能控制器都会主动的查询从机的命令响应情况。对于不同品牌的空调和智能通风机组,通信子程序已经按照该设备的通信协议进行专门的解析程序编写,如果对指定序号的RS485口进行命令发送后有数据回应,通信子程序则将回馈数据包进行数据解析,按照预定控制逻辑完成各个温控逻辑控制动作,同时将关键数据通信封包,通过GPRS方式传递至数据中心。如果三次以上对指定RS485口进行命令发送后而无反馈,程序则认为该设备脱网或设备故障,并以故障信息帧形式将数据包上传,同时驱动硬件告警指示灯,方便维护人员直观判断。主程序代码详见《附录3.串口数据处理流程(节选)》。图2-15控制器以RS485方式与智能设备间的数据处理流程第4章结论本项目是基于STM32F101系列MCU为主控单元的集成电路板件,该MCU内核采用ARM32位的Cortex-M3CPU,采用C语言作为硬件编程工具。该芯片组充分体现了RAM开发的方便性和快捷性,节能控制器样机在模拟移动基站的实地测试中,通过软件的多次优化改进,基本实现了对基站环境温控的智能管理,并且通过RS485方式与智能通风机组的联动控制,大大减少了空调机组的工作时间,有效的实现了节能降耗的目的。节能控制板内包含的GPRS通信电路,可以以GPRS无线方式,全天候的将基站内空调运行及能耗数据上传至监控中心,为基站的整体能耗管理提供准确的数据支持,同时节能控制器配置的多个模拟量、开关量、控制量接口,还可以将机房环境、空调机组、通风机组等组成统一的集中维护管理系统。在本次实际测试中发现该节能控制器还存在一些有待于继续优化的功能。譬如系统的远程复位和远程升级的功能,这样就可以大大方便控制器未来的功能扩展和稳定性提升;再者,基站的地理位置多分布在荒郊野外,雷雨天气对通信板的安全稳定影响很大,未来的节能控制器还需要增加防雷电路部分,以增强其在恶劣环境下的生存能力。参考文献[1]康华光.电子技术基础-数字部分(第四版)[M].北京:高等教育出版社.1999[2]阎石.数字电子技术基础.高等教育出版社.1997[3]赖麒文.8051单片机C语言开发环境实务与设计[M].北京:科学出版社.2002[4]谢自美.电子线路设计实验测试[M].武汉:华中科技大学出版社.2000[5]刘婷婷李军.电子设计自动化(EDA).北京师范大学出版社.2007[6]康华光.电子技术基础-模拟部分(第四版)[M].北京:高等教育出版社.1999[7]刘明生.信息技术基础.河北大学出版社.2002[8]曹继松..测试电路[M].上海:上海交通大学出版社.1995[9]孙育才.MCS-51系列单片微型计算机及其应用(第四版)[M].南京:东南大学出版社.2004[10]徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社.2004附录1.主程序(节选)#include"global.h"#defineVER_INFO "WirelesscontrolterminalV1.2.11\r\n"#defineDTU_TYPE()((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)<<1)|GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6))//Usart1数据接收缓存区externtsUsartRecFrmtsUsart1RecFrm; intmain(void){ unsignedlongflash_id=0; structtmcur_time; inti=0; u8rssi; chardtu_sim_status=0; BSP_Init(); rtc_init(); flash_init(); USART1_DMA_Config(); USART1_init(115200,TRUE,0); //DTU上电 DTU_POWER_5V_ON(); _delay_ms(50); DTU_POWER_3_3V_ON(); _delay_ms(50); //SHT10上电 SHT10_POWER_ON(); sys_info(UARTOUT,VER_INFO); rtc_read(&cur_time); sys_info(UARTOUT,"%04d-%02d-%02d%02d:%02d:%02d\r\n",cur_time.tm_year,cur_time.tm_mon+1,cur_time.tm_mday,cur_time.tm_hour,cur_time.tm_min,cur_time.tm_sec); flash_id=flash_read_id(); sys_info(UARTOUT,"flash_id:%04X\r\n",flash_id); //读继电器状态 flash_read_relay_state(g_relay_state); sys_info(UARTOUT,"relay1[%d],relay2[%d],relay3[%d],relay4[%d].\r\n",g_relay_state[0],g_relay_state[1],g_relay_state[2],g_relay_state[3]);//继电器常关 if(g_relay_state[0]==1) { RELAY1_ON(); } else { RELAY1_OFF(); } if(g_relay_state[1]==1) { RELAY2_ON(); } else { RELAY2_OFF(); } if(g_relay_state[2]==1) { RELAY3_ON(); } else { RELAY3_OFF(); } if(g_relay_state[3]==1) { RELAY4_ON(); } else { RELAY4_OFF(); } if(flash_read_pulse_count()) { sys_info(UARTOUT,"pulsecount1:%lu\r\n",g_pulse_count[0]); sys_info(UARTOUT,"pulsecount2:%lu\r\n",g_pulse_count[1]); } else { sys_info(UARTOUT,"flash_read_pulse_counterror.\r\n"); }//初始脉冲值#if0 g_pulse_count[1]=0; flash_write_pulse_count();#endif//SHT10测试#if0 while(1) { u32t1,t2; u32h1,h2; BOOLread_sht_state=FALSE; IWDG_ReloadCounter(); read_sht_state=sht10_read(0,&t1,&h1); if(read_sht_state) debug_info(UARTOUT,DEBUG1,"SHT10CH1T[%d],H[%d].\r\n",t1,h1); else debug_info(UARTOUT,DEBUG1,"SHT10CH1Error.\r\n"); read_sht_state=sht10_read(1,&t2,&h2); if(read_sht_state) debug_info(UARTOUT,DEBUG1,"SHT10CH2T[%d],H[%d].\r\n",t2,h2); else debug_info(UARTOUT,DEBUG1,"SHT10CH2Error..\r\n"); _delay_ms(1000); }#endif //读取系统静态参数 memset(&g_sys_static_param,0x00,sizeof(SYS_Static_Param)); if(sys_static_param_read(&g_sys_static_param)) { sys_info(UARTOUT,"DevID:%s\r\n",g_sys_static_param.dev_id); } else { sys_info(UARTOUT,"sys_static_param_readerror.\r\n"); } //读取系统动态参数 memset(&g_sys_dynamic_param,0x00,sizeof(SYS_Dynamic_Param)); if(sys_dynamic_param_read(&g_sys_dynamic_param)) { for(i=0;i<g_sys_dynamic_param.server_num;i++) {sys_info(UARTOUT,"serverip:%s\r\n",g_sys_dynamic_param.server_list[i].server_ip);sys_info(UARTOUT,"serverport:%lu\r\n",g_sys_dynamic_param.server_list[i].server_port);sys_info(UARTOUT,"parity:%d\r\n",g_sys_dynamic_param.server_list[i].parity); if(g_sys_dynamic_param.server_list[i].conn_type==1) { sys_info(UARTOUT,"conntype:TCP\r\n"); } elseif(g_sys_dynamic_param.server_list[i].conn_type==2) { sys_info(UARTOUT,"conntype:UDP\r\n"); } else { sys_info(UARTOUT,"conntype:unknown\r\n"); } sys_info(UARTOUT,"freemaxtime:%d\r\n",g_sys_dynamic_param.server_list[i].free_max_time); } } else { sys_info(UARTOUT,"sys_dynamic_param_readerror.\r\n"); }//DTU测试#if0{ charimsi[16]; while(1) { IWDG_ReloadCounter(); _delay_ms(1000); if(dtu_ready()==DTU_OK) { debug_info(UARTOUT,DEBUG1,"dtu_readyok.\r\n"); } else { debug_info(UARTOUT,DEBUG1,"dtu_readyerror.\r\n"); } _delay_ms(1000); if(dtu_read_rssi(&rssi)==DTU_OK) { debug_info(UARTOUT,DEBUG1,"dtu_read_rssiok,rssi:%d.\r\n",rssi); } else { debug_info(UARTOUT,DEBUG1,"dtu_read_rssierror.\r\n"); } _delay_ms(1000); if(dtu_insert_sim()==DTU_OK) { debug_info(UARTOUT,DEBUG1,"dtu_insert_simok.\r\n"); } else { debug_info(UARTOUT,DEBUG1,"dtu_insert_simerror.\r\n"); } _delay_ms(1000); if(dtu_network_status()==DTU_OK) { debug_info(UARTOUT,DEBUG1,"dtu_network_statusok.\r\n"); } else { debug_info(UARTOUT,DEBUG1,"dtu_network_statuserror.\r\n"); } IWDG_ReloadCounter(); _delay_ms(1000); if(dtu_read_imsi(imsi)==DTU_OK) { debug_info(UARTOUT,DEBUG1,"dtu_read_imsiok,imsi:%s.\r\n",imsi); } else { debug_info(UARTOUT,DEBUG1,"dtu_read_imsierror.\r\n"); } _delay_ms(1000); dtu_set_serverip("",8080); _delay_ms(1000);dtu_set_local_ip(DTU_TCP,"00",8080,"","",""); _delay_ms(1000); dtu_set_connect_type(1,3); _delay_ms(1000); debug_info(UARTOUT,DEBUG1,"dtu_read_status:%d\r\n",dtu_read_status()); }}#endif#if0 while(1) {debug_info(UARTOUT,DEBUG1,"MODULE_TYPE:%d\r\n",MODULE_TYPE());_delay_ms(2000); }#endif //读串口工作状态 flash_read_uart_param(&uart_param); if(uart_param.usart2_baud==0xFFFFFFFF) { memset(&uart_param,0x00,sizeof(_uart_param_)); if(!flash_write_uart_param(&uart_param)) { sys_err_info(UARTOUT,__FILE__,__LINE__,0,"flash_write_uart_paramerror.\r\n"); } } //设置DTU工作参数 if(g_dtu_type!=DTU_ETHERNET) {dtu_set_serverip(g_sys_dynamic_param.server_list[0].server_ip,g_sys_dynamic_param.server_list[0].server_port); dtu_set_connect_type(g_sys_dynamic_param.server_list[0].conn_type,g_sys_dynamic_param.serv; { if(tsUsart1RecFrm.rcv_buf[0]==STX&&tsUsart1RecFrm.rcv_buf[tsUsart1RecFrm.rcv_len-1]==ETX); } //处理Usart1的命令 if(tsUsart1RecFrm.rcv_flag==UART_RCV_OK) //设备信息管理 dev_proce(tsUsart1RecFrm.rcv_buf,tsUsart1RecFrm.rcv_len); } else //清除USART1接收缓存区 USART1_reset_recfrm(); }2.GPRS/SMS通信程序(节选)#include"global.h"#include"gprs_sim900a.h"charg_gprs_rcvbuf_sim900a[MAX_GPRS_RXBUF_LEN];unsignedintg_gprs_rcvlen_sim900a;unsignedcharg_gprs_rcvstate_sim900a;#defineAtCommand(x) UART5_send_str(x)#defineAtCommand_hex(data,len) UART5_send_data(data,len)voidgprs_power_on(){//功能:// GPRS初始化//输入:// 无//输出:// 无//返回:// GPRS_OKchargprs_init(void){ //USARTD1_init(BAUD_9600,true,USART_RXCINTLVL_MED); //_delay_ms(500); charrv=0; //rv=gprs_is_alive(); //if(rv!=GPRS_OK) // returnGPRS_ERR_NOT_ALIVE; ////检查是否有卡 //rv=gprs_check_sim(); //if(rv!=GPRS_OK) // returnrv; //关闭回显 rv=gprs_echo_set(0); if(rv!=GPRS_OK) returnrv;//断开连接 //gprs_tcp_disconnect(); //if(rv!=GPRS_OK) // returnrv; ////设置GPRS恢复为出厂默认配置 //rv=gprs_set_default_setting(); //if(rv!=GPRS_OK) // returnrv; ////选择TCPIP应用模式(必须在网络断开模式设置) //rv=gprs_set_cipmode(0); //不检测返回结果 //if(rv!=GPRS_OK) // returnrv; ////设置移动台类别 //rv=gprs_set_cgclass(); //if(rv!=GPRS_OK) // returnrv; //设置接收数据是否显示IP头 rv=gprs_set_ciphead(1); if(rv!=GPRS_OK) returnrv; ////设置MS附着上GPRS网络 //rv=gprs_set_cgatt(); //if(rv!=GPRS_OK) // returnrv; ////设置为GPRS连接模式 //rv=gprs_set_cipcsgp(); //if(rv!=GPRS_OK) // returnrv; //设置IO模式 //rv=gprs_set_iomode(); //if(rv!=GPRS_OK) // returnGPRS_ERR_SET_IOMODE; returnGPRS_OK;}voidgprs_test(void){ charchBuf[128]; charrv=0; intrssi=0; intcon=0; unsignedcharchSendBuf[29]={0xF0,0x00,0x13,0x01,0x11,0x01,0x26,0x53,0x00,0x00,0x04,0x01,0x01,0x80,0x00,0x20,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x0B,0x25,0xFF}; charimsi[16]; do{ //GPRS是否启动 rv=gprs_is_alive(); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRS没有启动,错误号[%X].\r\n",rv); break; } //检查是否有卡 rv=gprs_check_sim(); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRS没有检测到SIM卡,错误号[%X].\r\n",rv); break; } //查询网络信息强度 rv=gprs_get_rssi(&rssi); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRSrssi失败.错误号[%X].\r\n",rv); break; } //GPRS信号太差 if(rssi<9) { debug_info(UARTOUT,DEBUG5,"GPRS信号太差,信号值[%d].\r\n",rssi); break; } else { debug_info(UARTOUT,DEBUG5,"GPRS信号值[%d].\r\n",rssi); } //连接服务器(重连3次失败报错) for(con=0;con<3;con++) { rv=gprs_tcp_connect("12",8888); if(rv==GPRS_CONNECT) { break; } if(con==2) { debug_info(UARTOUT,DEBUG5,"GPRS连接服务器失败.错误号[%X].",rv); return; } } while(1) { //查询网络状态 rv=gprs_cipstatus(); if(rv!=STATUS_CONNECT_OK) { //重新连接 rv=gprs_tcp_connect("12",8888); if(rv==GPRS_OK) else { debug_info(UARTOUT,DEBUG5,"GPRSconnect失败.错误号[%X].",rv); return; } } //发送数据 rv=gprs_tcp_send(chSendBuf,sizeof(chSendBuf)); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRSgprs_tcp_send失败.错误号[%X].",rv); return; } //接收数据 charrcvData[1024]; intiLen=0; memset(rcvData,0x00,sizeof(rcvData)); rv=gprs_tcp_recv(rcvData,&iLen); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRS接收数据失败.错误号[%X].",rv); return; } debug_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论