監(jiān)控模塊的軟件流程如圖2.3示,微控制器自動地完成對設備狀態(tài)的循環(huán)檢測,如果監(jiān)控的數字量或模擬量出現問題,則微控制器通過AT命令控制無線 MODEM向監(jiān)控者發(fā)送短消息報警,在緊急情況下也可以啟動語音通話,將存儲在語音芯片ISD25120中的語音信號播放出來,作為緊急狀態(tài)下的一種監(jiān)控報警手段;而用戶可以通過手機或Internet等其他不同的短信實體發(fā)出發(fā)出相應的控制命令,通過GSM網絡傳送給模塊,從而使得微控制器 AT89C52接收并解釋相應的命令,并作出相應的動作,比如修改設置、發(fā)送查詢監(jiān)控情況。
![智能模塊的監(jiān)控軟件總流程圖](http://www.jlck.cn/UpFile/基于GSM的無線智能監(jiān)控設計 3.jpg)
?
圖2.3 智能模塊的監(jiān)控軟件總流程圖
在監(jiān)控時可以根據現場情況的緊急程度分級處理:一般情況可以使用短信收發(fā),為了保證可靠,每條發(fā)送短信都需要用戶給予相應的一條固定回應;當緊急情況時,可以直接啟動撥打電話功能,通過將存儲在語音芯片的語音播放出來進行語音通話,以體現現場情況的緊急。
3.串行通信協議的改進
本設計監(jiān)控主板與無線MODEM和PC機之間的數據通信都采用異步串行協議,由于異步串行通信協議傳輸數據的速度相對較慢,效率較低,故在數據通信量大的時候常采用同步通信,但是同步通信也存在著限制,通信雙方的時鐘必須嚴格一致,否則通信不能同步則會發(fā)生錯誤。本節(jié)就是根據面向比特的同步通信協議,對異步串行協議作了一點改進,提出一種高效、面向字節(jié)傳送的類似HDLC通信協議的異步串行通信協議AHDLC及其算法的實現。
3.1AHDLC異步串行通信協議的格式
![](http://www.jlck.cn/UpFile/基于GSM的無線智能監(jiān)控設計%204.jpg)
?
如表3.1所示為AHDLC協議的格式,Data是要傳送的n個字節(jié)數據,Command是命令字節(jié),用它對數據進行解釋, Length表示數據長度的字節(jié).若傳送數據的幀格式為:Length,Command,data0,data1,…,datan- 1,CheckSum.它們都是字節(jié)數據,范圍是0~0xFF,直接傳送以上的幀格式,如果接收方在接收中有一個錯誤,則以后的接收將識別不到下一個數據幀的開始,通信將會混亂。所以必須有開始標志StartMark和一個結束標志EndMark。
StartMark和EndMark也是字節(jié)數據, 范圍是0~0xFF。設StartMark = EndMark="0x7E",若Length,Command,data0,data1,…,datan-1,CheckSum中出現與開始標志 StartMark相同的數據,通信也會不可靠.為此設一個ReplaceMark字節(jié),取值ReplaceMark=0xFD,用 ReplaceMark代替Length,Command,data0,data1,…,datan-1,Check-Sum中出現的,與 StartMark數值相同的字節(jié),代替規(guī)則如下:發(fā)送時,用ReplaceMark,0x01兩個字節(jié)代替出現的StartMark數值 (StartMark→ReplaceMark ,0x01);用ReplaceMark,0x00兩個字節(jié)代替出現的ReplaceMark數值 (RepalceMark→ReplaceMark,0x00),之后進行發(fā)送。接收時,如果接收到ReplaceMark,由下一個字節(jié)判斷,若下一個字節(jié)是0x01,則接收的數值用StartMark的數值代替(ReplaceMark,0x01→StartMark);若下一個字節(jié)是0x00,則接收的數值用ReplaceMark的數值代替(ReplaceMark,0x00→ReplaceMark)。
用ReplaceMark和附加的字節(jié)(0x00或0x01)代替Length,Command,data0,data1,…,datan- 1,CheckSum中可能出現的與StartMark相同的數值與真正的ReplaceMark數值.這樣避免了幀內出現與標志符相同的數值,同時又可以經過變換傳送與標志符相同的數值.
3.2AHDLC的效率分析
在通信中若采用ASCⅡ碼變換,n個字節(jié)的數據將變換為2n個ASCⅡ碼,若按 StartMark,Length,Command,data0,data1,…,datan-1,CheckSum,EndMark格式傳送,則需要傳送2n+8個字節(jié)的數據,效率=(n+5)(2n+8)=50%.用AHDLC協議,Length,Command,
data0,data1,…,datan-1,CheckSum中,若不出現與StartMark及ReplaceMark相同的數值,則需要傳送n+5 個字節(jié)的數據.若出現n個與StartMark或ReplaceMark相同的數值,則需要傳送2n+5個字節(jié)的數據.效率隨著StartMark或 ReplaceMark數值出現個數的增加而降低. StartMark和ReplaceMark數值出現的概率都是(n+3)/256,則用AHDLC協議傳送的統計平均字節(jié)數為:
![](http://www.jlck.cn/UpFile/基于GSM的無線智能監(jiān)控設計%205.jpg)
?
對于n=10,用ASCⅡ碼方式傳送需要28個字節(jié),效率=15/28=53.6%;用AHDLC協議方式傳送平均需要15.1個字節(jié),效率=15/15.1=99.3%,比用ASCⅡ碼方式傳送效率提高45.7%.
對于n=100,用ASCⅡ碼方式傳送需要208個字節(jié),效率=105/208=50.5%;用AHDLC協議方式傳送平均需要105.8個字節(jié),效率=105/105.8=99.2%,比用ASCⅡ碼方式傳送效率提高48.7%.StartMark(或EndMark)和ReplaceMark的數值可以根據實際情況自己定義,使AHDLC幀格式中出現StartMark和ReplaceMark的概率越低,則通信的效率越高。
4.結束語
該智能模塊的軟硬件經過調試已達到工業(yè)應用水平,在一些對監(jiān)控的實時性要求不是特別苛刻的情況下具有很高的性價比,再加上應用范圍廣,開發(fā)周期短,因而應用前景十分廣闊。
評論