張敬普,鄭均輝
(1.平頂山學(xué)院 軟件學(xué)院,河南 平頂山 467000;2.平頂山學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 平頂山 467000)
手機(jī)短信遠(yuǎn)程監(jiān)控技術(shù)是控制技術(shù)與現(xiàn)代通信技術(shù)結(jié)合實(shí)現(xiàn)系統(tǒng)遠(yuǎn)程監(jiān)控的一種便捷、有效的方式[1]。它借助手機(jī)短信無線通信形式完成短信報(bào)警、遠(yuǎn)程數(shù)據(jù)傳輸、超遠(yuǎn)程工業(yè)設(shè)備遙控等任務(wù),無需線路鋪設(shè),因而不受作業(yè)現(xiàn)場條件限制,可廣泛應(yīng)用于工業(yè)控制、數(shù)據(jù)傳輸和系統(tǒng)環(huán)境如變電站、電表、水塔、水庫或環(huán)保監(jiān)測點(diǎn)等監(jiān)測數(shù)據(jù)的無線傳輸和無線自動(dòng)警報(bào)。
本系統(tǒng)是依據(jù)移動(dòng)通訊基站發(fā)電機(jī)的使用范圍廣、數(shù)量大、缺乏相關(guān)的管理手段而針對性開發(fā)的智能化設(shè)備。目的是使管理人員能實(shí)時(shí)監(jiān)測發(fā)電機(jī)各種運(yùn)行參數(shù)。現(xiàn)行的發(fā)電機(jī)由于沒有智能化管理設(shè)備,啟動(dòng)操作、運(yùn)行信息采集全靠人工執(zhí)行、反饋[2]。而本設(shè)備可以使發(fā)電機(jī)根據(jù)設(shè)定條件自行發(fā)電,或遠(yuǎn)程控制發(fā)電并對其進(jìn)行智能化管理。本系統(tǒng)采用單片機(jī)自動(dòng)檢測并控制油機(jī)的運(yùn)行狀態(tài),通過GSM網(wǎng)絡(luò)實(shí)時(shí)傳輸油機(jī)信息,為這種簡短的、突發(fā)性和頻繁少量的數(shù)據(jù)傳輸提供了一種高效、低成本的途徑。在本系統(tǒng)中,單片機(jī)主要用于對油機(jī)的數(shù)據(jù)采集,PC計(jì)算機(jī)主要用于數(shù)據(jù)顯示和數(shù)據(jù)管理。PC計(jì)算機(jī)和單片機(jī)通過對GSMModem發(fā)送AT命令來實(shí)現(xiàn)相互間的串行通信。
該系統(tǒng)的基本結(jié)構(gòu)由帶有手機(jī)芯片的短信數(shù)據(jù)傳輸板,油機(jī)智能控制器,監(jiān)控服務(wù)器3部分構(gòu)成,如圖1所示。短信數(shù)據(jù)傳輸板,通過帶有手機(jī)卡的GSM模塊與之相連,它實(shí)現(xiàn)油機(jī)智能控制器與GSM模塊的透明傳輸。油機(jī)智能控制器板為帶有單片機(jī)的智能控制器。通過匯編語言和C語音編程,它能按照要求采集監(jiān)視的各種數(shù)據(jù),并依據(jù)協(xié)議規(guī)定的二進(jìn)制編碼規(guī)則,將數(shù)據(jù)組成一禎,填充到短消息的數(shù)據(jù)位中,然后通過短信數(shù)據(jù)傳輸板向監(jiān)控服務(wù)器發(fā)送。監(jiān)控服務(wù)器通過短信貓與計(jì)算機(jī)的串口(RS-232)相連,當(dāng)現(xiàn)場油機(jī)智能控制器向它發(fā)送短消息時(shí),與串口相連的手機(jī)卡就會(huì)通知它有消息到來,并通知該消息存儲(chǔ)在芯片的哪個(gè)存儲(chǔ)區(qū)內(nèi)。監(jiān)控服務(wù)器可以分析得到的信息,并將特定的命令發(fā)送到短信貓上,同時(shí)將該存儲(chǔ)區(qū)內(nèi)的數(shù)據(jù)讀到計(jì)算機(jī)中,并按規(guī)定的解碼方法進(jìn)行解碼,這樣就可以得到現(xiàn)場油機(jī)智能控制器發(fā)送的數(shù)據(jù)。在現(xiàn)場油機(jī)智能控制器發(fā)送到監(jiān)控服務(wù)器的短消息中包含該站唯一的SIM卡號(hào)以及發(fā)送時(shí)間等信息,監(jiān)控服務(wù)器就可以清楚的知道是哪一個(gè)現(xiàn)場油機(jī)發(fā)送來的數(shù)據(jù),并將這些數(shù)據(jù)放到相應(yīng)的數(shù)據(jù)庫中,供顯示、查詢、統(tǒng)計(jì)使用。

圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of the system
本模塊由51單片機(jī)、AD轉(zhuǎn)換ADC0804、鎖存器74HC574、電子開關(guān)CD4051、雙向總線發(fā)送器/接收器74HC245、時(shí)鐘DS2887、存儲(chǔ)器 24C02、液晶屏 LCD1602、RS232串口以及用于模擬量處理的運(yùn)算放大器、電源等核心部件構(gòu)成。
單片機(jī)采用STC89C51系列MCU,最高工作速度可達(dá)90 MHz,片內(nèi)FLASH程序存儲(chǔ)器和8 K左右的片內(nèi)EEROM,多達(dá)36個(gè)通用I/O口。
以上器件組成發(fā)電機(jī)智能控制器板,智能控制器與油機(jī)相連從而控制油機(jī),連接圖如圖2所示。在單片機(jī)的統(tǒng)一控制下完成對油機(jī)發(fā)電機(jī)的智能邏輯控制,并由串口通過協(xié)議(自定義的)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。

圖2 油機(jī)接線圖Fig.2 Wiring diagram of oil machine
采用51增強(qiáng)型1T單片機(jī)、西門子GSM模塊 (TC35)為核心及RS232串口、開關(guān)電源等部件構(gòu)成。單片機(jī)采用STC12C5AA0S2增強(qiáng)型1T雙串口MCU,實(shí)現(xiàn)GSM模塊與發(fā)電機(jī)智能控制器板的數(shù)據(jù)透傳。
以西門子GSM模塊 (TC35i)為核心及RS232串口、開關(guān)電源等部件構(gòu)成。GSM模塊實(shí)現(xiàn)接收控制器發(fā)出的短信,并與服務(wù)器進(jìn)行通訊,完成服務(wù)器軟件對發(fā)電機(jī)的控制、數(shù)據(jù)處理等任務(wù)。
TC35i無線GSM模塊,集成了標(biāo)準(zhǔn)的RS232接口以及SIM卡,可以在PC機(jī)上用AT命令通過串口對它進(jìn)行設(shè)置、調(diào)試[3]。這使它成為在聲音和數(shù)據(jù)通訊上通用的一個(gè)GSM雙頻終端產(chǎn)品。因此,在無線短信工業(yè)控制、遠(yuǎn)程通訊,現(xiàn)場監(jiān)控等諸多無線通訊領(lǐng)域應(yīng)用中會(huì)給工作帶來極大的便利[4]。
TC35i模塊有40個(gè)引腳,通過一個(gè)ZIF(Zero Insertion Force,零阻力插座)連接器引出。這40個(gè)引腳可以劃分為5類,即電源、數(shù)據(jù)輸入/輸出、SIM卡、音頻接口和控制。
TC35i的第1~5引腳是正電源輸入腳通常推薦值4.2 V,第6~10引腳是電源地。11、12為充電引腳,可以外接鋰電池,13為對外輸出電壓 (共外電路使用),14為ACCU-TEMP接負(fù)溫度系數(shù)的熱敏電阻,用于鋰電池充電保護(hù)控制。
15腳是啟動(dòng)腳IGT,系統(tǒng)加電后為使TC35i進(jìn)入工作狀態(tài),必須給IGT加一個(gè)大于100 ms的低脈沖,電平下降持續(xù)時(shí)間不可超過1 ms。
16~23 為數(shù)據(jù)輸入/輸出, 分別為 DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和 DCD0。 tc35i模塊的數(shù)據(jù)輸入/輸出接口實(shí)際上是一個(gè)串行異步收發(fā)器,符合ITU-TRS232接口標(biāo)準(zhǔn)。它有固定的參數(shù):8位數(shù)據(jù)位和1位停止位,無校驗(yàn)位,波特率在300 bps~115 kbps之間可選,默認(rèn)9 600。硬件握手信號(hào)用RTS0/CTS0,軟件流量控制用XON/XOFF,CMOS電平,支持標(biāo)準(zhǔn)的AT命令集。
其中18腳RXD、19腳TXD為TTL的串口通訊腳,需要和單片機(jī)或者PC通訊。
TC35i使用外接式SIM卡,24~29為SIM卡引腳,SIM卡同 TC35i是 這 樣 連 接 的:SIM 上 的 CCRST、CCIO、CCCL、CCVCC和CCGND通過SIM卡閱讀器與TC35i的同名端直接相連,ZIF連接座的CCIN引腳用來檢測SIM卡是否插好,如果連接正確,則CCIN引腳輸出高電平,否則為低電平。
TC35i的第32腳SYNC引腳有兩種工作模式,一種是指示發(fā)射狀態(tài)時(shí)的功率增長情況,另一種是指示TC35i的工作狀態(tài),可用AT命令A(yù)T+SYNC進(jìn)行切換,本模塊使用的是后一種。當(dāng)LED熄滅時(shí),表明TC35i處于關(guān)閉或睡眠狀態(tài);當(dāng)LED為600 ms亮/600 ms熄時(shí),表明SIM卡沒有插入或TC35i正在進(jìn)行網(wǎng)絡(luò)登錄;當(dāng)LED為75 ms亮/3 s熄時(shí),表明TC35i已登錄進(jìn)網(wǎng)絡(luò),處于待機(jī)狀態(tài)。
30、31、32 腳為控制腳, 其中 30 為 RTC backup,31 為Power down,32 為 SYNC。
35~38 為語音接口,35、36 接揚(yáng)聲器放音。37、38 可以直接接駐極體話筒來采集聲音(37是話筒正端,39是話筒負(fù)端)。
服務(wù)器監(jiān)控軟件主要實(shí)現(xiàn)遠(yuǎn)程油機(jī)的控制、油機(jī)狀態(tài)信息顯示、故障報(bào)警及油機(jī)運(yùn)行數(shù)據(jù)統(tǒng)計(jì)等功能。此監(jiān)控軟件系統(tǒng)主要包括數(shù)據(jù)訪問、串口通信、數(shù)據(jù)顯示等3大部分。此軟件的開發(fā)環(huán)境是VS.NET2005,語言是C#。
本模塊主要實(shí)現(xiàn)對數(shù)據(jù)庫的操作,即實(shí)現(xiàn)油機(jī)狀態(tài)信息數(shù)據(jù)的存和取數(shù)據(jù)庫的操作。在本系統(tǒng)中,為了更好的維護(hù)代碼,所有涉及數(shù)據(jù)庫的操作都封裝在DBAccess類中。此類包含的主要方法有以下幾個(gè):
ExecuteNonQuery (ref OleDbCommand cmd,string query,params OleDbParameter[]param)
本方法主要實(shí)現(xiàn)對數(shù)據(jù)庫的更新、刪除等操作。
OleDbParameter[]GetParameters(params object[]arr)
本方法主要實(shí)現(xiàn)SQL語句中參數(shù)創(chuàng)建的操作
OleDbDataReader ExecuteReader (ref OleDbCommand cmd,string query,params OleDbParameter[]param)
本方法主要實(shí)現(xiàn)查詢數(shù)據(jù)庫并返回?cái)?shù)據(jù)庫游標(biāo)的操作。
ExecuteScalar (ref OleDbCommand cmd, string query,params OleDbParameter[]param)
本方法主要實(shí)現(xiàn)查詢數(shù)據(jù)庫并返回唯一結(jié)果的操作。
本系統(tǒng)采用的西門子GSM模塊支持GSM07.05所定義的AT[5]命令集的指令。因此,MCU通過UART串行接口直接向GSM模塊下發(fā)AT命令,就可以方便簡潔地實(shí)現(xiàn)基于GSM的短信息SMS的收發(fā)、查尋和管理[6]。所以,本模塊的主要功能是通過計(jì)算機(jī)串口向GSM模塊發(fā)送特定的AT命令。
.NET Framework 2.0類庫提供了對串口通信功能的支持,使用其中的SerialPort類可以方便的實(shí)現(xiàn)所需要串口通信的多種功能。通過創(chuàng)建一個(gè)新的SerialPort對象,就可以在.NET程序中控制串口通信的全過程。使用SerialPort類實(shí)現(xiàn)串口通信的一般流程是設(shè)置通訊端口號(hào)及波特率、數(shù)據(jù)位、停止位和校驗(yàn)位,再打開端口連接,發(fā)送數(shù)據(jù)和接收數(shù)據(jù),最后關(guān)閉端口連接這幾個(gè)步驟。
在本系統(tǒng)中所有涉及串口的操作都封裝在類GSMModem類中,下面簡單介紹DataReceived事件以及發(fā)送AT命令的函數(shù)SendAT。
1)DataReceived 函數(shù)
void sp_DataReceived(object sender,Serial Data Received EventArgs e)
{try{
string temp=sp.ReadLine();//讀取串口數(shù)據(jù)
if(temp.Length>8)
{if(temp.Substring(0, 6) == “+CMTI:”) //判斷收到的數(shù)據(jù)是否是短信 {newMsgIndex=Convert.ToInt32(temp.Split(',')[1]);//存儲(chǔ)新信息序號(hào)
OnRecieved(this, e); //觸發(fā)事件,進(jìn)行短信內(nèi)容的分析、存儲(chǔ)、顯示等操作 }}}}
2)SendAT 函數(shù)
public string SendAT(string ATCom){
sp.DataReceived-=sp_DataReceived; //注銷事件關(guān)聯(lián),為發(fā)送做準(zhǔn)備
try{sp.Write(ATCom+ “ ”);}//發(fā)送 AT 指令
catch (Exception ex)
{sp.DataReceived+=sp_DataReceived;throw ex;}
//接收數(shù)據(jù) 循環(huán)讀取數(shù)據(jù) 直至收到“OK”或“ERROR”
try{while (temp.Trim() !="OK"&&temp.Trim()!="ERROR")
{temp=sp.ReadLine (); result+=temp; }return result;}
catch (Exception ex) {throw ex; }
finally{sp.DataReceived+=sp_DataReceived;//事件重新綁定正常監(jiān)視串口數(shù)據(jù)}}
此模塊主要包括油機(jī)的控制(如開機(jī)、關(guān)機(jī)、狀態(tài)等)、油機(jī)狀態(tài)數(shù)據(jù)的顯示、歷史數(shù)據(jù)統(tǒng)計(jì)、油機(jī)錯(cuò)誤告警、參數(shù)設(shè)置及顯示、數(shù)據(jù)查詢等功能。此模塊的核心是輔助線程通過串口得到的數(shù)據(jù),而主線程更新界面,兩個(gè)線程通過委托機(jī)制進(jìn)行交互。輔助線程從串口得到數(shù)據(jù)后調(diào)用OnRecieved函數(shù)也即gm_OnRecieved函數(shù),此函數(shù)偽碼如下:
void gm_OnRecieved(object sender, EventArgs e){
s=gm.ReadNewMsg();//讀取新的短信內(nèi)容
分析短信內(nèi)容并把相關(guān)內(nèi)容存入到數(shù)據(jù)庫中
Invoke (RecievedMsg, msgcont);//通過 Invoke 方法委托主線程去更新界面,RecievedMsg參數(shù)是一個(gè)函數(shù),即更新界面的函數(shù),msgcont是RecievedMsg函數(shù)的參數(shù),即更新的內(nèi)容。
}
在設(shè)計(jì)過程中規(guī)定了一套傳送二進(jìn)制數(shù)據(jù)的編碼和解碼規(guī)則,可以最大限度的利用短消息提供的140個(gè)字節(jié)來傳送信息,這是利用短消息傳送數(shù)據(jù)的關(guān)鍵。在此之前,本地電信公司采用人工管理發(fā)電油機(jī),費(fèi)用很高。采用該系統(tǒng)后,費(fèi)用大大降低,并且維護(hù)量也很小。該套系統(tǒng)還可以應(yīng)用于各種遠(yuǎn)程監(jiān)控的領(lǐng)域中,具有很好的應(yīng)用前景。
[1]唐明董,張俊波,劉建勛.基于GSM模塊的短信平臺(tái)服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)應(yīng)用,2007,28(2):l74-177.TANG Ming-dong,ZHANG Jun-bo,LIU Jian-xun.Design and implementation of a SMSplatform by using GSM modems[J].Microcomputer Applications,2007,28(2):l74-177.
[2]王喜軍.基于B/S模式的抽油機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].通信與信息處理,2010,29(9):47-49.WANG Xi-jun.Remote monitoring system for pumping unit based on B/S[J].Communication and Information Processing,2010,29(9):47-49.
[3]陳凱,秦實(shí)宏.基于GSM模塊TC35I的收發(fā)控制系統(tǒng)設(shè)計(jì)[J].武漢工程大學(xué)學(xué)報(bào),2011,33(1):91-94.CHEN Kai,QIN Shi-hang.Design of receive and transmit control system based on GSM module TC35i[J].Journal of Wuhan Institute of Technology,2011,33(1):91-94.
[4]李偉,閆述,楊波.基于手機(jī)短信的無線傳感器網(wǎng)絡(luò)的遠(yuǎn)程數(shù)據(jù)傳輸[J].煤田地質(zhì)與勘探,2009,37(5):57-60.LI Wei,YAN Shu,YANG Bo.Remote data transmission of wireless sensor networks based on mobile telephone short message[J].Coal Geology&Exploration,2009,37(5):57-60.
[5]Wavecom公司.AT Commands Interface[EB/OL].(2007-07-26).http://www.atasun.net/download.
[6]王喜軍.基于B/S模式的抽油機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2010,29(9):47-49.WANG Xi-jun.Remote monitoring system for pumping unit based on B/S[J].Techniques of Automation and Applications,2010,29(9):47-49.