基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器_第1頁
基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器_第2頁
基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器_第3頁
基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器_第4頁
基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

北京師范大學(xué)本科生畢業(yè)論文北京師范大學(xué)成人高等教育2013屆本科生畢業(yè)論文(設(shè)計)基于ARM系統(tǒng)的基站空調(diào)節(jié)能控制器學(xué)生姓名:專業(yè)名稱:電子信息科學(xué)與技術(shù)學(xué)號:201113010492指導(dǎo)教師:完成時間:2013-08-27摘要本設(shè)計運用STM32F101系列MCU為主控模塊、Sensirion的SHT10數(shù)字溫濕度傳感器、繼電器、光耦開關(guān)、SIM900AGPRS通訊模塊、以及RS232/485通信芯片等元器件,設(shè)計了溫濕度采集電路、脈沖電表電量采集電路、開關(guān)量及模擬量采集電路,RS232/485通信驅(qū)動電路、以及GPRS無線通信電路。解決通信基站內(nèi)空調(diào)的自動啟停以及與節(jié)能通風(fēng)機組的聯(lián)動工作,最終實現(xiàn)了基站節(jié)能減排的目的。同時該節(jié)能控制器還具有采集脈沖電量表電能數(shù)據(jù)以及通過GPRS無線通信上傳的功能,方便對控制器以及基站能耗情況的集中統(tǒng)一管理。關(guān)鍵詞:基站、STM32F101MCU、SHT10數(shù)字溫濕度傳感器、GPRS無線通信、聯(lián)動控制、節(jié)能減排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章節(jié)能控制器的設(shè)計規(guī)劃 21.1設(shè)計要求 21.2設(shè)計過程 3第2章節(jié)能控制器硬件設(shè)計 52.1 節(jié)能控制器MCU 52.2 節(jié)能控制器電源電路 62.3 輸入輸出采集電路模塊 72.4 串口處理電路模塊 112.5 GPRS無線通信電路模塊 132.6 程序存儲及程序下載電路模塊 14第3章節(jié)能控制器軟件設(shè)計 163.1 KeilC軟件概述 163.2 主程序的基本結(jié)構(gòu) 163.3 GPRS/SMS數(shù)據(jù)處理流程 183.4 與智能設(shè)備間的通信流程 19第4章結(jié)論 20參考文獻(xiàn) 21附錄 231.主程序(節(jié)選) 232.GPRS/SMS通信程序(節(jié)選) 303.串口數(shù)據(jù)處理流程(節(jié)選) 35前言近年來,隨著我國能源消耗日益增加、環(huán)境污染問題日益嚴(yán)重,經(jīng)濟(jì)社會發(fā)展與能源環(huán)境的矛盾更加突出。為此,國家提出了節(jié)能減排的重大戰(zhàn)略。節(jié)能減排工作逐漸成為新時期各行各業(yè)工作安排的重中之重,電信行業(yè)也不例外。同時,由于電信運營行業(yè)作為國家重要的基礎(chǔ)設(shè)施,自身的行業(yè)特殊性也決定了必須進(jìn)行節(jié)能減排。從整個電信運營商移動通信網(wǎng)絡(luò)設(shè)備的能源消耗分布來看,基站設(shè)備的能源消耗占到了90%,所以基站節(jié)能是移動通信網(wǎng)絡(luò)節(jié)能減排的關(guān)鍵。移動基站的節(jié)能不僅僅包括基站主設(shè)備的節(jié)能,還涉及電源、空調(diào)、機房空間等多個方面。而基站空調(diào)在整個通信基站的能耗中占到了40-50%以上。在一年當(dāng)中,隨著環(huán)境的變化有些季節(jié)是無需開啟空調(diào)進(jìn)行制冷的,而且通過基站內(nèi)配置一定風(fēng)量的通風(fēng)機組,充分利用涼爽季節(jié)提供的天然冷源,完全可以實現(xiàn)制冷和節(jié)能的雙重目的。如何實現(xiàn)空調(diào)在恰當(dāng)溫度環(huán)境下的啟停,以及與通風(fēng)機組的聯(lián)動配合,這就需要一個智能化的控制器自動根據(jù)基站內(nèi)外環(huán)境的變化控制空調(diào)、通風(fēng)機組協(xié)調(diào)工作。電信運營商的無線基站都是無人值守的,這就需要節(jié)能控制器還要具有基于無線通信的接口,保證運行數(shù)據(jù)上傳給機房值班人員的監(jiān)控中心,以實現(xiàn)遠(yuǎn)程監(jiān)控。第1章節(jié)能控制器的設(shè)計規(guī)劃本項目是基于STM32F101系列MCU為主控單元的集成電路板件,該MCU內(nèi)核采用ARM32位的Cortex-M3CPU,采用C語言作為硬件編程工具。與空調(diào)的通信采用RS485協(xié)議解析的方式,與通風(fēng)機組的控制采用繼電器加上接觸器的方式實現(xiàn),對于觸發(fā)整個節(jié)能系統(tǒng)的溫濕度采用SHT10數(shù)字溫濕度方式,根據(jù)采集需要至少要配置2組分別放在室內(nèi)外。并選用SIM900AGPRS通訊模塊最終實現(xiàn)控制器與監(jiān)控中心的無線遠(yuǎn)程通信。1.1設(shè)計要求控制器首先要實現(xiàn)與基站內(nèi)空調(diào)進(jìn)行協(xié)議通信,并以空調(diào)自定義的協(xié)議命令完成對空調(diào)工作狀態(tài)的實時采集。同時,可根據(jù)基站內(nèi)環(huán)境的變化按既定的節(jié)能控制邏輯來控制空調(diào)啟停。另外,控制器對節(jié)能通風(fēng)機組的狀態(tài)采集和控制也必須以簡單可靠的方式實現(xiàn),即通過繼電器或二次繼電器方式來通斷通風(fēng)機組的輸入供電,以及配置風(fēng)壓傳感器來測量其換氣風(fēng)扇產(chǎn)生的風(fēng)壓有無來判斷機組工作狀態(tài)。最后,節(jié)能控制器的內(nèi)嵌程序需要按照基站內(nèi)外的溫濕度變化情況實現(xiàn)既定的節(jié)能控制邏輯,該控制邏輯主要完成空調(diào)與通風(fēng)機組的工作配合,盡量減少空調(diào)的工作時間,最終達(dá)到節(jié)能目的。具體的節(jié)能控制邏輯如下(圖1-1)所示。圖1-1控制器的節(jié)能控制邏輯節(jié)能控制器還需具有對監(jiān)控機房的無線通信功能,這樣可以保證設(shè)備的運行數(shù)據(jù)以及實際的能耗運行數(shù)據(jù)都可以被監(jiān)控中心采集并做后續(xù)的管理統(tǒng)計。1.2設(shè)計過程根據(jù)以上的設(shè)計目標(biāo),將節(jié)能控制器分成四個主要的電路模塊:輸入輸出處理電路模塊、串口處理電路模塊、GPRS無線通信電路模塊、程序存儲及程序下載電路模塊。其中輸入輸出電路模塊分出五個相對獨立的子電路:模擬量輸入采集子電路,主要是對一些模擬量傳感器輸入的采集信號進(jìn)行處理;開關(guān)量輸入采集子電路,主要是采集“0、1”狀態(tài)的輸入信號;繼電器輸出控制子電路,主要以常開或常閉的方式對節(jié)能通風(fēng)機組進(jìn)行開關(guān)機控制等;兩路數(shù)字溫濕度子電路將直接對SHT10數(shù)字溫濕度的數(shù)字信號進(jìn)行處理;兩路脈沖量采集子電路,主要是對基站內(nèi)配置的普通脈沖電表進(jìn)行脈沖計量。串口處理電路主要是完成RS232/RS485的通信驅(qū)動,該電路包含三路RS485和一路RS232兩類物理接口,主要是考慮在通信基站內(nèi)會配置不同品牌空調(diào),這就造成其通信口也會有所不同,節(jié)能控制器就需要具有一定的兼容性。GPRS無線通信電路模塊,主要考慮合理的性價比,以及較小的運行功耗。經(jīng)過研究比對,最后選擇欣姆通公司的SIM900AGPRS通信模塊,該模塊運行穩(wěn)定性價比較高,比較適合本次的設(shè)計要求。程序存儲及程序下載電路模塊主要完成主程序的在線下載、更新升級,以及主運行程序的存儲,選用FLASH芯片主要考慮方便擦寫升級內(nèi)嵌程序。圖1-2節(jié)能控制器電路結(jié)構(gòu)第2章節(jié)能控制器硬件設(shè)計系統(tǒng)設(shè)計分成硬件和軟件兩大部分,具體的設(shè)計內(nèi)容在將在后續(xù)章節(jié)詳述??刂破靼鍖惭b到塑膠板殼內(nèi),板殼外部還要開孔多個LED指示燈,只要是指示設(shè)備的運行狀態(tài)和故障告警。從成本和大小考慮,該控制板采用雙層印刷電路板,除了GPRS通信模塊另行制版(主要從維修方便考慮)外,其它三個電路模塊都與ARM芯片組集成到一塊板件上。GPRS通信板通過多引腳接插件的方式與主板連接。由于采用塑膠外殼,GPRS通信板天線可以內(nèi)置在機殼內(nèi),無需外置安裝。節(jié)能控制器MCUSTM32F101基本型系列使用高性能的ARM_Cortex-M3_32位的RISC內(nèi)核,工作頻率為36MHz,內(nèi)置高速存儲器(高達(dá)128K字節(jié)的閃存和16K字節(jié)的SRAM),豐富的增強型外設(shè)和I/O端口聯(lián)接到兩條APB總線。所有型號的器件都包含1個12位的ADC和3個通用16位定時器,還包含標(biāo)準(zhǔn)的通信接口:2個I2C、2個SPI和3個USART。STM32F101基本型系列工作于-40°C至+85°C的溫度范圍,2.0V至3.6V的工作電壓,一系列的省電模式滿足低功耗應(yīng)用的需求。本主控板MCU電路如(圖2-1)所示。圖2-1MCU電路原理圖節(jié)能控制器電源電路根據(jù)現(xiàn)場供電情況配置雙路隔離輸出5V電源,實現(xiàn)對核心MCU和外圍接口電路(RS232、RS485、開關(guān)量輸入)的隔離供電(圖2-2)。圖2-2節(jié)能控制板電源電路原理圖輸入輸出采集電路模塊五路4-20ma標(biāo)準(zhǔn)電信號模擬量采集信號和一路電壓輸入模擬量采集信號,可實現(xiàn)對供電電壓、電壓型/電流型標(biāo)準(zhǔn)傳感器(溫、濕度等)等參數(shù)的實時監(jiān)測(圖2-3模擬量采集電路)。圖2-3模擬量采集電路節(jié)能控制器設(shè)計支持八路開關(guān)量的光電隔離輸入,可外接煙霧報警、急停開關(guān)、壓差開關(guān)等開光量參數(shù)(圖2-4開關(guān)量采集電路)。圖2-4開關(guān)量采集電路脈沖采集電路,支持對兩路脈沖電表電量的采集(圖2-5脈沖采集電路)。圖2-5脈沖采集電路四路繼電器輸出電路,實現(xiàn)對強電供電設(shè)備的控制,主要控制外節(jié)能通風(fēng)機組或不具有智能通信口品牌空調(diào)的按鍵模擬等(圖2-6繼電器控制輸出電路)。圖2-6繼電器控制輸出電路系統(tǒng)具備兩路數(shù)字溫濕度傳感器的接口,與SHT10探頭配合試點對本地溫濕度的采集。SHT10屬于Sensirion溫濕度傳感器家族中的貼片封裝系列。傳感器將傳感元件和信號處理電路集成在一塊微型電路板上,輸出完全標(biāo)定的數(shù)字信號(圖2-7數(shù)字溫濕度采集電路)。圖2-7數(shù)字溫濕度采集電路串口處理電路模塊兩路RS232接口電路,一路有光電隔離電路便于與具備RS232接口外設(shè)直連通信,另一路與MCU直連可外接DTU,串口網(wǎng)絡(luò)服務(wù)器的外設(shè)實現(xiàn)設(shè)備的遠(yuǎn)程通信(圖2-8RS-232通信口電路)。圖2-8RS-232通信口電路三路RS485接口,均具備光電隔離電路,可更根據(jù)實際需求配置成節(jié)能控制器與不同協(xié)議的智能空調(diào)、智能傳感器通信,或作為從機響應(yīng)主機(本地調(diào)試系統(tǒng))的召測(圖2-9RS-485通信口電路)。圖2-9RS-232通信口電路GPRS無線通信電路模塊本節(jié)能控制器的DCU(對上通信模塊)選用SIM900AGPRS通訊模塊,該模塊屬于雙頻GSM/GPRS模塊,完全采用SMT封裝形式,其性能穩(wěn)定。其采用工業(yè)標(biāo)準(zhǔn)接口,工作頻率為GSM/GPRS850/900/1800/1900MHz,可以低功耗實現(xiàn)語音、SMS、數(shù)據(jù)和傳真信息的傳輸。該通信電路模塊主要完成與監(jiān)控中心的無線遠(yuǎn)程通信,可采用主備通訊模式:GPRS為主信道,SMS為備用信道。而且控制器設(shè)計支持定時上報、事件上報和中心召測三種通信模式。其通信模塊與節(jié)能控制器主板通信占用1路MCU的RS232通信口(圖2-10GPRS無線通信電路)。圖2-10GPRS無線通信電路程序存儲及程序下載電路模塊M25PE16是16Mbit存儲器、SPI接口、頁字節(jié)256BYTE。用于存儲參數(shù)及歷史數(shù)據(jù),相對傳統(tǒng)頁字節(jié)4KBYTE,頁字節(jié)少,擦除靈活,節(jié)約MCU的緩沖RAM空間(圖2-11FLASH存儲電路)。圖2-11FLASH存儲電路傳統(tǒng)生產(chǎn)流程中都是先對芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上,調(diào)試工作較為繁瑣耗時。簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進(jìn)度。本節(jié)能控制器的程序下載、調(diào)試、仿真接口都采用JTAG在線編程方式,JTAG接口可對MCU芯片內(nèi)部的所有部件進(jìn)行編程(圖2-12JTAG程序下載電路)。圖2-12JTAG程序下載電路第3章節(jié)能控制器軟件設(shè)計KeilC軟件概述ARM系統(tǒng)開發(fā)中除必要的硬件電路外,同樣需要編寫內(nèi)嵌軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼通常有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。隨著單片機硬件技術(shù)的不斷發(fā)展,單片機的開發(fā)軟件也在持續(xù)更新,其內(nèi)嵌語言已從匯編語言開發(fā)逐漸轉(zhuǎn)入使用高級語言開發(fā)。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),其易學(xué)易用的特點逐漸被眾多開發(fā)者喜歡。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,掌握這一軟件的使用同樣對ARM系列的開發(fā)者來說也是十分必要的?;谙到y(tǒng)開發(fā)的便利性和可讀性,本節(jié)能控制器的內(nèi)嵌軟件,同樣首選KeilC作為開發(fā)工具,以下皆為具體的軟件結(jié)構(gòu)和處理流程。主程序的基本結(jié)構(gòu)主程序主要是完成各個程序模塊的統(tǒng)一調(diào)用,保證系統(tǒng)在每個采集周期內(nèi)將控制板的各類型硬件接口進(jìn)行數(shù)據(jù)掃描采集,整個程序以無限循環(huán)的方式持續(xù)運行,對于外圍的功能啟動和退出,皆采用中斷的模式完成。主程序代碼詳見《附錄1.主程序(節(jié)選)》。圖2-13節(jié)能控制器主程序運行流程GPRS/SMS數(shù)據(jù)處理流程節(jié)能控制器與監(jiān)控中心的通信采用標(biāo)準(zhǔn)的GPRS/SMS通信協(xié)議,上行數(shù)據(jù)采用動態(tài)IP地址的方式與監(jiān)控中心通信,下行數(shù)據(jù)以短信SMS的方式對(節(jié)能控制配置SIM卡,并分配單獨的卡號)節(jié)能控制器進(jìn)行通信喚醒,并以短消息的方式進(jìn)行數(shù)據(jù)傳送。主程序代碼詳見《附錄2.GPRS/SMS數(shù)據(jù)處理流程(節(jié)選)》。圖2-14控制器以GPRS/SMS方式與監(jiān)控中心數(shù)據(jù)處理流程與智能設(shè)備間的通信流程節(jié)能控制器將外圍的智能設(shè)備定義為從機,在每個數(shù)據(jù)采集周期內(nèi),節(jié)能控制器都會主動的查詢從機的命令響應(yīng)情況。對于不同品牌的空調(diào)和智能通風(fēng)機組,通信子程序已經(jīng)按照該設(shè)備的通信協(xié)議進(jìn)行專門的解析程序編寫,如果對指定序號的RS485口進(jìn)行命令發(fā)送后有數(shù)據(jù)回應(yīng),通信子程序則將回饋數(shù)據(jù)包進(jìn)行數(shù)據(jù)解析,按照預(yù)定控制邏輯完成各個溫控邏輯控制動作,同時將關(guān)鍵數(shù)據(jù)通信封包,通過GPRS方式傳遞至數(shù)據(jù)中心。如果三次以上對指定RS485口進(jìn)行命令發(fā)送后而無反饋,程序則認(rèn)為該設(shè)備脫網(wǎng)或設(shè)備故障,并以故障信息幀形式將數(shù)據(jù)包上傳,同時驅(qū)動硬件告警指示燈,方便維護(hù)人員直觀判斷。主程序代碼詳見《附錄3.串口數(shù)據(jù)處理流程(節(jié)選)》。圖2-15控制器以RS485方式與智能設(shè)備間的數(shù)據(jù)處理流程第4章結(jié)論本項目是基于STM32F101系列MCU為主控單元的集成電路板件,該MCU內(nèi)核采用ARM32位的Cortex-M3CPU,采用C語言作為硬件編程工具。該芯片組充分體現(xiàn)了RAM開發(fā)的方便性和快捷性,節(jié)能控制器樣機在模擬移動基站的實地測試中,通過軟件的多次優(yōu)化改進(jìn),基本實現(xiàn)了對基站環(huán)境溫控的智能管理,并且通過RS485方式與智能通風(fēng)機組的聯(lián)動控制,大大減少了空調(diào)機組的工作時間,有效的實現(xiàn)了節(jié)能降耗的目的。節(jié)能控制板內(nèi)包含的GPRS通信電路,可以以GPRS無線方式,全天候的將基站內(nèi)空調(diào)運行及能耗數(shù)據(jù)上傳至監(jiān)控中心,為基站的整體能耗管理提供準(zhǔn)確的數(shù)據(jù)支持,同時節(jié)能控制器配置的多個模擬量、開關(guān)量、控制量接口,還可以將機房環(huán)境、空調(diào)機組、通風(fēng)機組等組成統(tǒng)一的集中維護(hù)管理系統(tǒng)。在本次實際測試中發(fā)現(xiàn)該節(jié)能控制器還存在一些有待于繼續(xù)優(yōu)化的功能。譬如系統(tǒng)的遠(yuǎn)程復(fù)位和遠(yuǎn)程升級的功能,這樣就可以大大方便控制器未來的功能擴(kuò)展和穩(wěn)定性提升;再者,基站的地理位置多分布在荒郊野外,雷雨天氣對通信板的安全穩(wěn)定影響很大,未來的節(jié)能控制器還需要增加防雷電路部分,以增強其在惡劣環(huán)境下的生存能力。參考文獻(xiàn)[1]康華光.電子技術(shù)基礎(chǔ)-數(shù)字部分(第四版)[M].北京:高等教育出版社.1999[2]閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ).高等教育出版社.1997[3]賴麒文.8051單片機C語言開發(fā)環(huán)境實務(wù)與設(shè)計[M].北京:科學(xué)出版社.2002[4]謝自美.電子線路設(shè)計實驗測試[M].武漢:華中科技大學(xué)出版社.2000[5]劉婷婷李軍.電子設(shè)計自動化(EDA).北京師范大學(xué)出版社.2007[6]康華光.電子技術(shù)基礎(chǔ)-模擬部分(第四版)[M].北京:高等教育出版社.1999[7]劉明生.信息技術(shù)基礎(chǔ).河北大學(xué)出版社.2002[8]曹繼松..測試電路[M].上海:上海交通大學(xué)出版社.1995[9]孫育才.MCS-51系列單片微型計算機及其應(yīng)用(第四版)[M].南京:東南大學(xué)出版社.2004[10]徐愛鈞.智能化測量控制儀表原理與設(shè)計[M].北京:北京航空航天大學(xué)出版社.2004附錄1.主程序(節(jié)選)#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數(shù)據(jù)接收緩存區(qū)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); //讀繼電器狀態(tài) 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]);//繼電器常關(guān) 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 //讀取系統(tǒng)靜態(tài)參數(shù) 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"); } //讀取系統(tǒng)動態(tài)參數(shù) 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 //讀串口工作狀態(tài) 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"); } } //設(shè)置DTU工作參數(shù) 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) //設(shè)備信息管理 dev_proce(tsUsart1RecFrm.rcv_buf,tsUsart1RecFrm.rcv_len); } else //清除USART1接收緩存區(qū) USART1_reset_recfrm(); }2.GPRS/SMS通信程序(節(jié)選)#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; //關(guān)閉回顯 rv=gprs_echo_set(0); if(rv!=GPRS_OK) returnrv;//斷開連接 //gprs_tcp_disconnect(); //if(rv!=GPRS_OK) // returnrv; ////設(shè)置GPRS恢復(fù)為出廠默認(rèn)配置 //rv=gprs_set_default_setting(); //if(rv!=GPRS_OK) // returnrv; ////選擇TCPIP應(yīng)用模式(必須在網(wǎng)絡(luò)斷開模式設(shè)置) //rv=gprs_set_cipmode(0); //不檢測返回結(jié)果 //if(rv!=GPRS_OK) // returnrv; ////設(shè)置移動臺類別 //rv=gprs_set_cgclass(); //if(rv!=GPRS_OK) // returnrv; //設(shè)置接收數(shù)據(jù)是否顯示IP頭 rv=gprs_set_ciphead(1); if(rv!=GPRS_OK) returnrv; ////設(shè)置MS附著上GPRS網(wǎng)絡(luò) //rv=gprs_set_cgatt(); //if(rv!=GPRS_OK) // returnrv; ////設(shè)置為GPRS連接模式 //rv=gprs_set_cipcsgp(); //if(rv!=GPRS_OK) // returnrv; //設(shè)置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; } //查詢網(wǎng)絡(luò)信息強度 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); } //連接服務(wù)器(重連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連接服務(wù)器失敗.錯誤號[%X].",rv); return; } } while(1) { //查詢網(wǎng)絡(luò)狀態(tài) 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; } } //發(fā)送數(shù)據(jù) rv=gprs_tcp_send(chSendBuf,sizeof(chSendBuf)); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRSgprs_tcp_send失敗.錯誤號[%X].",rv); return; } //接收數(shù)據(jù) charrcvData[1024]; intiLen=0; memset(rcvData,0x00,sizeof(rcvData)); rv=gprs_tcp_recv(rcvData,&iLen); if(rv!=GPRS_OK) { debug_info(UARTOUT,DEBUG5,"GPRS接收數(shù)據(jù)失敗.錯誤號[%X].",rv); return; } debug_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論