李信洪,劉忠華,廖錦坤
(深圳達實智能股份有限公司,廣東深圳 518057)
基于VB的短消息實現(xiàn)及在監(jiān)控系統(tǒng)中的應用
李信洪,劉忠華,廖錦坤
(深圳達實智能股份有限公司,廣東深圳 518057)
介紹了GSM無線模塊短消息發(fā)送的相關AT命令和模式,利用VB語言實現(xiàn)短消息發(fā)送的核心程序,以及監(jiān)控系統(tǒng)的報警配置,實現(xiàn)了監(jiān)控系統(tǒng)報警信息的短消息發(fā)送。
短消息;AT指令;VB語言;監(jiān)控系統(tǒng)
隨著計算機和控制技術的發(fā)展,過程監(jiān)控系統(tǒng)的可靠性和自動化程度有了大幅的提高,并得到了廣泛的應用。同時隨著移動技術的發(fā)展和手機的普及,基于GSM的短信息服務以其通訊費用低廉、雙向傳輸、通訊質(zhì)量可靠、速度快等顯著優(yōu)點已經(jīng)得到了越來越多用戶的認可和使用,同時為監(jiān)控系統(tǒng)的少人或無人值守創(chuàng)造了條件,過程監(jiān)控對象的異常狀態(tài)或運行參數(shù)等信息可以通過移動運營商提供的SMS短消息服務及時發(fā)送到一個或多個生產(chǎn)管理人員的手機上,從而可以對生產(chǎn)過程異常迅速作出判斷和處理。
1.1 GSM模塊
本次應用中GSM調(diào)制解調(diào)器采用深圳倚天科技開發(fā)有限公司生產(chǎn)的ETPRO-101AI,它由電源管理、接口電路和GSM模塊三部分組成[1],其中GSM模塊采用德國SIEMENS(西門子)公司的一款雙頻900/1 800 MHz高度集成的TC35i。計算機與GSM調(diào)制解調(diào)器之間通過RS-232串口連接,并通過AT命令進行交互。
1.2 AT指令
AT即Attention,AT指令集是從終端設備(Ter?minal Equipment,TE)或數(shù)據(jù)終端設備(Data Termi?nal Equipment,DTE)向終端適配器(Terminal Adapter,TA)或數(shù)據(jù)電路終端設備(Data Circuit Terminal Equipment,DCE)發(fā)送的。通過TA,TE發(fā)送AT指令來控制移動臺(Mobile Station,MS)的功能,與GSM網(wǎng)絡業(yè)務進行交互,通過AT指令進行呼叫、短信、電話本、數(shù)據(jù)業(yè)務、傳真等方面的控制。發(fā)送短消息常用的AT命令如表1[2]。
表1 發(fā)送短消息常用的AT命令
1.3 短消息模式
接收和發(fā)送短消息的模式有三種:BLOCK模式、TEXT模式和PDU模式。BLOCK模式已基本淡出使用;TEXT模式則只能發(fā)送ASCII碼,國內(nèi)手機在此模式下基本上不支持收發(fā)中文短消息;而PDU模式被所有手機支持,可收發(fā)中英文短消息,用PDU模式收發(fā)短消息可采用三種編碼方式: 7-bit編碼、8-bit編碼和UCS2編碼,分別用于發(fā)送普通的ASCII字符、數(shù)據(jù)消息和Unicode字符。
按照GSM07.05協(xié)議的規(guī)定,短消息中的漢字均采用Unicode碼的形式發(fā)送,因此本應用的短消息模式采用PDU模式,并選擇UCS2編碼方式。整個PDU串除了包含所發(fā)送的消息本身外,還包含服務中心號碼、目標號碼和編碼方式等信息,其結構具體說明見參考文獻[3]。
圖1 程序流程圖
通過VB程序?qū)崿F(xiàn)監(jiān)控系統(tǒng)報警信息發(fā)送的流程如圖1所示。
2.1 通訊串口設置
從VB工程菜單的部件選項中添加Microsoft Comm Control 6.0控件到工具欄,并在程序窗體里添加MSComm控件,在程序中對其作如下初始化:
MSComm1.CommPort=1'選擇串口COM1
MSComm1.Settings="9600,n,8,1"'設置通訊屬性
MSComm1.RThreshold=1
MSComm1.SThreshold=0
MSComm1.InputLen=0'讀入輸入整個緩沖區(qū)
MSComm1.RTSEnable=True'設置RTS有效
MSComm1.PortOpen=True'打開通訊口。
2.2 UCS2編碼實現(xiàn)
VB中通過AscW函數(shù)()和Hex()函數(shù)可實現(xiàn)GB2321編碼到UCS2編碼的轉換,AscW()函數(shù)用于返回輸入字符的Unicode碼位,如AscW("您")= 24 744,而Hex()函數(shù)用于返回表示十六進制數(shù)字值的字符串,如Hex(24744)=60A8,即字符“您”的UCS2編碼為:60A8。
在VB中實現(xiàn)發(fā)送短消息內(nèi)容字符的UCS2編碼如下:
For i=1 To Len(sSendStr)'sSendStr為待發(fā)送的短消息內(nèi)容,string型變量
sUCS2=sUCS2&Right("0000"&Hex(As?cW(Mid(sSendStr,i,1))),4)'sUCS2為字符編碼,string型變量
Next
2.3 短消息發(fā)送程序
svarūpavirahasthitivyatikaraikarūpās tu na || 1 [47v6-7] (Pthvī)
MSComm1.Output="AT+CMGF=0"&vbCr'設置為PDU模式
fTimeDelay(1000) '自定義延時函數(shù)
nStrLength=Len(sUCS2)/2'計算發(fā)送長度
MSComm1.Output="AT+CMGS="&Str(15+ nStrLength)&vbCr
fTimeDelay(1000) '自定義延時函數(shù)
sPDU="089168"&sSMSCA&"11000D9168" &sSMID&"0008C2"&nLength&sUCS2'sSMSCA為信息中心地址,sSMID為目標手機地址,均為不足12位號碼補F后的奇偶位對調(diào)結果,nLength為用16進制(兩位數(shù))表示的sUCS2信息長度
MSComm1.Output=sPDU&Chr$(26)
sInputStr=""'sInputStr為讀入輸入緩沖區(qū)變量,string型變量
Do
DoEvents'轉讓控制權,以便讓操作系統(tǒng)處理其它的事件
sInputStr=sInputStr&MSComm1.Input'讀入輸入緩沖區(qū)內(nèi)容
Loop Until InStr(sInputStr,"OK")Or InStr(sIn?putStr,"ERROR")Or(timeGetTime>lTimer+3000) '滿足返回發(fā)送成功,或返回發(fā)送失敗,或延時時間條件之一時結束循環(huán)
If InStr(sInputStr,"OK")<>0 Then
PubStatus("發(fā)送成功!") '發(fā)送成功(Pub?Status為自定義的系統(tǒng)消息顯示函數(shù))
ElseIf InStr(sInputStr,"ERROR")<>0 Then
PubStatus("發(fā)送失?。?) '發(fā)送失?。≒ub?Status為自定義的系統(tǒng)消息顯示函數(shù))
Endif
伴隨著生產(chǎn)信息化的需求,組態(tài)軟件因其支持各種工控設備的通信協(xié)議、提供分布式數(shù)據(jù)管理和網(wǎng)絡功能、使用靈活等特點,已作為HMI人機界面監(jiān)控軟件在各行業(yè)廣泛應用于監(jiān)視和控制自動化設備和生產(chǎn)過程,是過程監(jiān)控系統(tǒng)的重要組成部分[4]。
目前國內(nèi)外主流的組態(tài)軟件都支持將報警信息記錄到與ODBC兼容的數(shù)據(jù)庫中,如Microsoft Access。因此可以利用短消息發(fā)送程序定時查詢數(shù)據(jù)庫中的報警信息,并將其發(fā)送給指定的目標手機號碼。
本應用采用國內(nèi)知名的監(jiān)控組態(tài)軟件組態(tài)王作為報警信息源,數(shù)據(jù)庫為Microsoft Access,下面簡要介紹其配置過程。
3.1 報警數(shù)據(jù)庫和表字段
建立一個Microsoft Access報警數(shù)據(jù)庫文件(本應用數(shù)據(jù)庫文件命名為InDasSms.mdb),在數(shù)據(jù)庫文件中創(chuàng)建一個名稱為“Alarm”的表(注意表名稱不能更改),并按表2設置字段(注意字段名要一致)。
表2 “Alarm”表字段
在實際應用中可以根據(jù)需要組織表中各字段的內(nèi)容作為短信息發(fā)送內(nèi)容。
3.2 創(chuàng)建ODBC數(shù)據(jù)源
在計算機的控制面板中的“ODBC數(shù)據(jù)源管理器”中創(chuàng)建基于“Microsoft Access Driver(*. mdb)”驅(qū)動程序的用戶數(shù)據(jù)源(本應用數(shù)據(jù)源名設為InDas SMS),數(shù)據(jù)庫選擇上一步建立的報警數(shù)據(jù)庫,如圖2所示。
圖2 ODBC數(shù)據(jù)源創(chuàng)建
3.3 監(jiān)控系統(tǒng)報警配置
在組態(tài)王的開發(fā)環(huán)境下在“報警配置”中對其屬性進行配置,鉤選“記錄報警事件到數(shù)據(jù)庫”,并選取上一步配置好的數(shù)據(jù)源,如圖3所示,同時對報警格式進行配置,如圖4所示。
圖3 報警配置屬性頁
圖4的報警格式是本應用中采用的格式,可根據(jù)不同應用進行調(diào)整。需要注意的是,在報警格式配置中變量名等長度的設置一定不能小于實際的長度,并且每個中文字符占用2個長度,否則存入報警數(shù)據(jù)庫表中的數(shù)據(jù)將按設置的長度截斷。
Implementation of Short Message and Its Application in Control System Based on VB Language
LI Xin-hong,LIU Zhong-hua,LIAO Jin-kun
(Shenzhen DAS Intellitech Co.,Ltd,Shenzhen518057,China)
This paper introduces AT command and patterns of GSM wireless module,the transmit code of Short Message based on VB language,and the alarm configuration of control system,this method has been used to the Short Message transmission of alarm information in control system.
short message;AT command;VB language;control system
TP29
A
1009-9492(2014)03-0060-03
10.3969/j.issn.1009-9492.2014.03.018
2013-09-03