基于GSM的無線智能監(jiān)控設(shè)計(jì)
2.2軟件流程
本文引用地址:http://butianyuan.cn/article/86682.htm監(jiān)控模塊的軟件流程如圖2.3示,微控制器自動(dòng)地完成對設(shè)備狀態(tài)的循環(huán)檢測,如果監(jiān)控的數(shù)字量或模擬量出現(xiàn)問題,則微控制器通過AT命令控制無線MODEM向監(jiān)控者發(fā)送短消息報(bào)警,在緊急情況下也可以啟動(dòng)語音通話,將存儲在語音芯片ISD25120中的語音信號播放出來,作為緊急狀態(tài)下的一種監(jiān)控報(bào)警手段;而用戶可以通過手機(jī)或Internet等其他不同的短信實(shí)體發(fā)出發(fā)出相應(yīng)的控制命令,通過GSM網(wǎng)絡(luò)傳送給模塊,從而使得微控制器AT89C52接收并解釋相應(yīng)的命令,并作出相應(yīng)的動(dòng)作,比如修改設(shè)置、發(fā)送查詢監(jiān)控情況。
圖2.3 智能模塊的監(jiān)控軟件總流程圖
在監(jiān)控時(shí)可以根據(jù)現(xiàn)場情況的緊急程度分級處理:一般情況可以使用短信收發(fā),為了保證可靠,每條發(fā)送短信都需要用戶給予相應(yīng)的一條固定回應(yīng);當(dāng)緊急情況時(shí),可以直接啟動(dòng)撥打電話功能,通過將存儲在語音芯片的語音播放出來進(jìn)行語音通話,以體現(xiàn)現(xiàn)場情況的緊急。
3.串行通信協(xié)議的改進(jìn)
本設(shè)計(jì)監(jiān)控主板與無線MODEM和PC機(jī)之間的數(shù)據(jù)通信都采用異步串行協(xié)議,由于異步串行通信協(xié)議傳輸數(shù)據(jù)的速度相對較慢,效率較低,故在數(shù)據(jù)通信量大的時(shí)候常采用同步通信,但是同步通信也存在著限制,通信雙方的時(shí)鐘必須嚴(yán)格一致,否則通信不能同步則會發(fā)生錯(cuò)誤。本節(jié)就是根據(jù)面向比特的同步通信協(xié)議,對異步串行協(xié)議作了一點(diǎn)改進(jìn),提出一種高效、面向字節(jié)傳送的類似HDLC通信協(xié)議的異步串行通信協(xié)議AHDLC及其算法的實(shí)現(xiàn)。
3.1AHDLC異步串行通信協(xié)議的格式
如表3.1所示為AHDLC協(xié)議的格式,Data是要傳送的n個(gè)字節(jié)數(shù)據(jù),Command是命令字節(jié),用它對數(shù)據(jù)進(jìn)行解釋, Length表示數(shù)據(jù)長度的字節(jié).若傳送數(shù)據(jù)的幀格式為:Length,Command,data0,data1,…,datan-1,CheckSum.它們都是字節(jié)數(shù)據(jù),范圍是0~0xFF,直接傳送以上的幀格式,如果接收方在接收中有一個(gè)錯(cuò)誤,則以后的接收將識別不到下一個(gè)數(shù)據(jù)幀的開始,通信將會混亂。所以必須有開始標(biāo)志StartMark和一個(gè)結(jié)束標(biāo)志EndMark。
StartMark和EndMark也是字節(jié)數(shù)據(jù), 范圍是0~0xFF。設(shè)StartMark = EndMark=0x7E,若Length,Command,data0,data1,…,datan-1,CheckSum中出現(xiàn)與開始標(biāo)志StartMark相同的數(shù)據(jù),通信也會不可靠.為此設(shè)一個(gè)ReplaceMark字節(jié),取值ReplaceMark=0xFD,用ReplaceMark代替Length,Command,data0,data1,…,datan-1,Check-Sum中出現(xiàn)的,與StartMark數(shù)值相同的字節(jié),代替規(guī)則如下:發(fā)送時(shí),用ReplaceMark,0x01兩個(gè)字節(jié)代替出現(xiàn)的StartMark數(shù)值(StartMark→ReplaceMark,0x01);用ReplaceMark,0x00兩個(gè)字節(jié)代替出現(xiàn)的ReplaceMark數(shù)值(RepalceMark→ReplaceMark,0x00),之后進(jìn)行發(fā)送。接收時(shí),如果接收到ReplaceMark,由下一個(gè)字節(jié)判斷,若下一個(gè)字節(jié)是0x01,則接收的數(shù)值用StartMark的數(shù)值代替(ReplaceMark,0x01→StartMark);若下一個(gè)字節(jié)是0x00,則接收的數(shù)值用ReplaceMark的數(shù)值代替(ReplaceMark,0x00→ReplaceMark)。
用ReplaceMark和附加的字節(jié)(0x00或0x01)代替Length,Command,data0,data1,…,datan-1,CheckSum中可能出現(xiàn)的與StartMark相同的數(shù)值與真正的ReplaceMark數(shù)值.這樣避免了幀內(nèi)出現(xiàn)與標(biāo)志符相同的數(shù)值,同時(shí)又可以經(jīng)過變換傳送與標(biāo)志符相同的數(shù)值.
3.2AHDLC的效率分析
在通信中若采用ASCⅡ碼變換,n個(gè)字節(jié)的數(shù)據(jù)將變換為2n個(gè)ASCⅡ碼,若按StartMark,Length,Command,data0,data1,…,datan-1,CheckSum,EndMark格式傳送,則需要傳送2n+8個(gè)字節(jié)的數(shù)據(jù),效率=(n+5)(2n+8)=50%.用AHDLC協(xié)議,Length,Command,
data0,data1,…,datan-1,CheckSum中,若不出現(xiàn)與StartMark及ReplaceMark相同的數(shù)值,則需要傳送n+5個(gè)字節(jié)的數(shù)據(jù).若出現(xiàn)n個(gè)與StartMark或ReplaceMark相同的數(shù)值,則需要傳送2n+5個(gè)字節(jié)的數(shù)據(jù).效率隨著StartMark或ReplaceMark數(shù)值出現(xiàn)個(gè)數(shù)的增加而降低. StartMark和ReplaceMark數(shù)值出現(xiàn)的概率都是(n+3)/256,則用AHDLC協(xié)議傳送的統(tǒng)計(jì)平均字節(jié)數(shù)為:
對于n=10,用ASCⅡ碼方式傳送需要28個(gè)字節(jié),效率=15/28=53.6%;用AHDLC協(xié)議方式傳送平均需要15.1個(gè)字節(jié),效率=15/15.1=99.3%,比用ASCⅡ碼方式傳送效率提高45.7%.
對于n=100,用ASCⅡ碼方式傳送需要208個(gè)字節(jié),效率=105/208=50.5%;用AHDLC協(xié)議方式傳送平均需要105.8個(gè)字節(jié),效率=105/105.8=99.2%,比用ASCⅡ碼方式傳送效率提高48.7%.StartMark(或EndMark)和ReplaceMark的數(shù)值可以根據(jù)實(shí)際情況自己定義,使AHDLC幀格式中出現(xiàn)StartMark和ReplaceMark的概率越低,則通信的效率越高。
4.結(jié)束語
該智能模塊的軟硬件經(jīng)過調(diào)試已達(dá)到工業(yè)應(yīng)用水平,在一些對監(jiān)控的實(shí)時(shí)性要求不是特別苛刻的情況下具有很高的性價(jià)比,再加上應(yīng)用范圍廣,開發(fā)周期短,因而應(yīng)用前景十分廣闊。本文作者創(chuàng)新點(diǎn):與傳統(tǒng)的監(jiān)控產(chǎn)品不同,通信的媒介是GSM網(wǎng)絡(luò),采用SMS進(jìn)行數(shù)據(jù)交換,控制主體是用戶手機(jī)或監(jiān)控中心的計(jì)算機(jī)。
參考文獻(xiàn)
[1] GSM07.05,Digital cellular telecommunications system(Phase2+), Use of data terminal equipment-data circuit terminating,Equipment(DTE DCE)interface for short messageservice(SMS)and cellb roadcast service(CBS)[S].80-88
[2] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1998
[3]林粵偉,魏權(quán)利.基于GSM短信息的無線網(wǎng)絡(luò)環(huán)保監(jiān)測系統(tǒng)的研制[J]微計(jì)算機(jī)信息 2005,1:71-72
評論