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

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

圖2 油機接線圖Fig.2 Wiring diagram of oil machine
采用51增強型1T單片機、西門子GSM模塊 (TC35)為核心及RS232串口、開關電源等部件構成。單片機采用STC12C5AA0S2增強型1T雙串口MCU,實現GSM模塊與發電機智能控制器板的數據透傳。
以西門子GSM模塊 (TC35i)為核心及RS232串口、開關電源等部件構成。GSM模塊實現接收控制器發出的短信,并與服務器進行通訊,完成服務器軟件對發電機的控制、數據處理等任務。
TC35i無線GSM模塊,集成了標準的RS232接口以及SIM卡,可以在PC機上用AT命令通過串口對它進行設置、調試[3]。這使它成為在聲音和數據通訊上通用的一個GSM雙頻終端產品。因此,在無線短信工業控制、遠程通訊,現場監控等諸多無線通訊領域應用中會給工作帶來極大的便利[4]。
TC35i模塊有40個引腳,通過一個ZIF(Zero Insertion Force,零阻力插座)連接器引出。這40個引腳可以劃分為5類,即電源、數據輸入/輸出、SIM卡、音頻接口和控制。
TC35i的第1~5引腳是正電源輸入腳通常推薦值4.2 V,第6~10引腳是電源地。11、12為充電引腳,可以外接鋰電池,13為對外輸出電壓 (共外電路使用),14為ACCU-TEMP接負溫度系數的熱敏電阻,用于鋰電池充電保護控制。
15腳是啟動腳IGT,系統加電后為使TC35i進入工作狀態,必須給IGT加一個大于100 ms的低脈沖,電平下降持續時間不可超過1 ms。
16~23 為數據輸入/輸出, 分別為 DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和 DCD0。 tc35i模塊的數據輸入/輸出接口實際上是一個串行異步收發器,符合ITU-TRS232接口標準。它有固定的參數:8位數據位和1位停止位,無校驗位,波特率在300 bps~115 kbps之間可選,默認9 600。硬件握手信號用RTS0/CTS0,軟件流量控制用XON/XOFF,CMOS電平,支持標準的AT命令集。
其中18腳RXD、19腳TXD為TTL的串口通訊腳,需要和單片機或者PC通訊。
TC35i使用外接式SIM卡,24~29為SIM卡引腳,SIM卡同 TC35i是 這 樣 連 接 的:SIM 上 的 CCRST、CCIO、CCCL、CCVCC和CCGND通過SIM卡閱讀器與TC35i的同名端直接相連,ZIF連接座的CCIN引腳用來檢測SIM卡是否插好,如果連接正確,則CCIN引腳輸出高電平,否則為低電平。
TC35i的第32腳SYNC引腳有兩種工作模式,一種是指示發射狀態時的功率增長情況,另一種是指示TC35i的工作狀態,可用AT命令AT+SYNC進行切換,本模塊使用的是后一種。當LED熄滅時,表明TC35i處于關閉或睡眠狀態;當LED為600 ms亮/600 ms熄時,表明SIM卡沒有插入或TC35i正在進行網絡登錄;當LED為75 ms亮/3 s熄時,表明TC35i已登錄進網絡,處于待機狀態。
30、31、32 腳為控制腳, 其中 30 為 RTC backup,31 為Power down,32 為 SYNC。
35~38 為語音接口,35、36 接揚聲器放音。37、38 可以直接接駐極體話筒來采集聲音(37是話筒正端,39是話筒負端)。
服務器監控軟件主要實現遠程油機的控制、油機狀態信息顯示、故障報警及油機運行數據統計等功能。此監控軟件系統主要包括數據訪問、串口通信、數據顯示等3大部分。此軟件的開發環境是VS.NET2005,語言是C#。
本模塊主要實現對數據庫的操作,即實現油機狀態信息數據的存和取數據庫的操作。在本系統中,為了更好的維護代碼,所有涉及數據庫的操作都封裝在DBAccess類中。此類包含的主要方法有以下幾個:
ExecuteNonQuery (ref OleDbCommand cmd,string query,params OleDbParameter[]param)
本方法主要實現對數據庫的更新、刪除等操作。
OleDbParameter[]GetParameters(params object[]arr)
本方法主要實現SQL語句中參數創建的操作
OleDbDataReader ExecuteReader (ref OleDbCommand cmd,string query,params OleDbParameter[]param)
本方法主要實現查詢數據庫并返回數據庫游標的操作。
ExecuteScalar (ref OleDbCommand cmd, string query,params OleDbParameter[]param)
本方法主要實現查詢數據庫并返回唯一結果的操作。
本系統采用的西門子GSM模塊支持GSM07.05所定義的AT[5]命令集的指令。因此,MCU通過UART串行接口直接向GSM模塊下發AT命令,就可以方便簡潔地實現基于GSM的短信息SMS的收發、查尋和管理[6]。所以,本模塊的主要功能是通過計算機串口向GSM模塊發送特定的AT命令。
.NET Framework 2.0類庫提供了對串口通信功能的支持,使用其中的SerialPort類可以方便的實現所需要串口通信的多種功能。通過創建一個新的SerialPort對象,就可以在.NET程序中控制串口通信的全過程。使用SerialPort類實現串口通信的一般流程是設置通訊端口號及波特率、數據位、停止位和校驗位,再打開端口連接,發送數據和接收數據,最后關閉端口連接這幾個步驟。
在本系統中所有涉及串口的操作都封裝在類GSMModem類中,下面簡單介紹DataReceived事件以及發送AT命令的函數SendAT。
1)DataReceived 函數
void sp_DataReceived(object sender,Serial Data Received EventArgs e)
{try{
string temp=sp.ReadLine();//讀取串口數據
if(temp.Length>8)
{if(temp.Substring(0, 6) == “+CMTI:”) //判斷收到的數據是否是短信 {newMsgIndex=Convert.ToInt32(temp.Split(',')[1]);//存儲新信息序號
OnRecieved(this, e); //觸發事件,進行短信內容的分析、存儲、顯示等操作 }}}}
2)SendAT 函數
public string SendAT(string ATCom){
sp.DataReceived-=sp_DataReceived; //注銷事件關聯,為發送做準備
try{sp.Write(ATCom+ “ ”);}//發送 AT 指令
catch (Exception ex)
{sp.DataReceived+=sp_DataReceived;throw ex;}
//接收數據 循環讀取數據 直至收到“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;//事件重新綁定正常監視串口數據}}
此模塊主要包括油機的控制(如開機、關機、狀態等)、油機狀態數據的顯示、歷史數據統計、油機錯誤告警、參數設置及顯示、數據查詢等功能。此模塊的核心是輔助線程通過串口得到的數據,而主線程更新界面,兩個線程通過委托機制進行交互。輔助線程從串口得到數據后調用OnRecieved函數也即gm_OnRecieved函數,此函數偽碼如下:
void gm_OnRecieved(object sender, EventArgs e){
s=gm.ReadNewMsg();//讀取新的短信內容
分析短信內容并把相關內容存入到數據庫中
Invoke (RecievedMsg, msgcont);//通過 Invoke 方法委托主線程去更新界面,RecievedMsg參數是一個函數,即更新界面的函數,msgcont是RecievedMsg函數的參數,即更新的內容。
}
在設計過程中規定了一套傳送二進制數據的編碼和解碼規則,可以最大限度的利用短消息提供的140個字節來傳送信息,這是利用短消息傳送數據的關鍵。在此之前,本地電信公司采用人工管理發電油機,費用很高。采用該系統后,費用大大降低,并且維護量也很小。該套系統還可以應用于各種遠程監控的領域中,具有很好的應用前景。
[1]唐明董,張俊波,劉建勛.基于GSM模塊的短信平臺服務器設計與實現[J].微計算機應用,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].通信與信息處理,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]陳凱,秦實宏.基于GSM模塊TC35I的收發控制系統設計[J].武漢工程大學學報,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].煤田地質與勘探,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].自動化技術與應用,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.