引言
隨著技術(shù)不斷革新,,RFID產(chǎn)業(yè)已進(jìn)入了成長期,。如何將RFID技術(shù)同企業(yè)原有的信息系統(tǒng)進(jìn)行無縫連接,已成為許多企業(yè)考慮的問題,。組態(tài)軟件能將眾多常用功能組合在一起形成一個新的軟件平臺,,用戶只需在這個平臺上進(jìn)行二次開發(fā)即可,因此90年代以后,,國內(nèi)外推出了不少組態(tài)軟件產(chǎn)品,,有FIX、WinCC,、組態(tài)王,、MCGS等。但這些軟件的通用性太強(qiáng),,不能滿足RFID系統(tǒng)的一些特殊要求,,因此需要針對RFID的特點開發(fā)專用于RFID系統(tǒng)的組態(tài)軟件。
本文參考了國內(nèi)外幾個著名的組態(tài)軟件產(chǎn)品,,采用ActiveX技術(shù)開發(fā)RFID組態(tài)管理軟件,,不僅提高了軟件的開發(fā)速度,也提高了軟件的可維護(hù)性和可擴(kuò)展性,。RFID組態(tài)管理軟件能夠?qū)⒌蛯拥腞FID硬件和上層的應(yīng)用軟件很好的結(jié)合起來,,通過人機(jī)交互,方便地構(gòu)建RFID系統(tǒng)的監(jiān)控現(xiàn)場和配置RFID讀寫器,,從而監(jiān)測和控制生產(chǎn)和流通的各個環(huán)節(jié),。
1 RFID技術(shù)
無線射頻識別(RadioFrequencyIdentification,RFID)是二十世紀(jì)九十年代興起的一項非接觸的自動識別技術(shù),,它利用射頻信號實現(xiàn)對靜止或移動的物體或人員的自動識別,。RFID具有數(shù)據(jù)可讀寫、信號穿透能力強(qiáng),、識別距離遠(yuǎn),、非接觸、多標(biāo)簽同時識別,、信息存儲量大,、保密性強(qiáng)等優(yōu)點。近年來隨著科學(xué)技術(shù)的進(jìn)步,RFID在生產(chǎn)制造管理,、物流配送管理,、醫(yī)藥管理等領(lǐng)域得到廣泛的應(yīng)用。一般的RFID系統(tǒng)由硬件,、軟件和基本的數(shù)據(jù)格式與通信協(xié)議組成,。硬件包含電子標(biāo)簽(Tag)、讀寫器(Reader)和天線三部分,。RFID讀寫器通過天線與RFID電子標(biāo)簽進(jìn)行無線通信,,實現(xiàn)對標(biāo)簽識別碼和內(nèi)存數(shù)據(jù)的讀出或?qū)懭氩僮鳌\浖饕ㄖ虚g件應(yīng)用平臺和應(yīng)用管理軟件,。中間件可屏蔽不同廠家的RFID讀寫器等硬件系統(tǒng),,實現(xiàn)不同硬件設(shè)備與不同應(yīng)用軟件系統(tǒng)的連接。RFID的數(shù)據(jù)格式定義了電子標(biāo)簽的數(shù)據(jù)存儲格式,,通信協(xié)議則主要包含了電子標(biāo)簽與讀寫器的數(shù)據(jù)傳輸協(xié)議,。
2 RFID組態(tài)管理軟件的功能分析
(1)RFID組態(tài)管理軟件的開發(fā)背景
第一,,標(biāo)簽和讀寫器之間有多種通信協(xié)議,,目前已確定的標(biāo)準(zhǔn)就有ISO14443、ISO15693,、ISO18000等,,這造成了當(dāng)前各廠商的讀寫器的型號有很多,在RFID系統(tǒng)中對RFID讀寫器進(jìn)行配置時很不方便,;第二,,許多公司的RFID讀寫器配置軟件和業(yè)務(wù)過程監(jiān)控軟件是兩套軟件,軟件的利用率低,。
?。?)RFID組態(tài)管理軟件的功能分析
RFID組態(tài)管理軟件基于Windows平臺,通過人機(jī)交互,,可快速構(gòu)造和生成監(jiān)控系統(tǒng),。它可支持不同型號RFID讀寫器的配置和管理,支持多個RFID讀寫器的同時訪問,。另外可提供生產(chǎn)流通過程的數(shù)據(jù)采集和信息管理,。
RFID組態(tài)管理軟件的主要性能指標(biāo)為:在中文Windows下運(yùn)行;多任務(wù),,多線程,;最多配置RFID讀寫器的數(shù)目為1000;監(jiān)控界面完整顯示時間不大于2秒,;支持語音報警,;支持報表生成,。
3 RFID組態(tài)管理軟件的開發(fā)工具
目前組態(tài)軟件的開發(fā)多用VisualC++、VisualBasic和Delphi,。在RFID的組態(tài)管理軟件中采用VC++6.0。VC++6.0是面向?qū)ο蟮木幊陶Z言,,它提供的MFC類庫很好地封裝了WindowsAPI函數(shù),,充分利用類的繼承性、封裝性,、多態(tài)性,,用戶可方便的設(shè)計自己需要的類。另外VC對內(nèi)存和硬件的操作較容易,。
數(shù)據(jù)庫采用SQLServer2000,。SQLServer2000完全運(yùn)行于Microsoft的Windows操作環(huán)境下,是一個高性能的數(shù)據(jù)管理系統(tǒng),。SQL功能強(qiáng)大且操作簡單,,能夠提供安全可靠的存儲功能。利用VC提供的ADO,、ODBC等接口可方便實現(xiàn)對SQL數(shù)據(jù)庫的操作,。
4 RFID組態(tài)管理軟件的功能實現(xiàn)及其關(guān)鍵技術(shù)
RFID組態(tài)管理軟件采用模塊化設(shè)計,模塊與模塊之間盡量獨(dú)立,,接口盡量簡單,。針對RFID組態(tài)管理軟件的要求,將其劃分為圖形繪制模塊,、數(shù)據(jù)庫管理模塊,、通信模塊、其它模塊(報警,、報表等),。
圖1 軟件體系結(jié)構(gòu)圖
(1) 圖形界面模塊
圖形界面是人機(jī)交互的渠道。圖形界面模塊完成所有組態(tài)畫面的繪制,,是生成RFID讀寫器網(wǎng)絡(luò)連接和業(yè)務(wù)過程監(jiān)控畫面的設(shè)計工具,。監(jiān)控系統(tǒng)運(yùn)行時的各種界面都是在圖形組態(tài)系統(tǒng)開發(fā)環(huán)境下生成的。
圖形界面的功能包括:①能夠進(jìn)行簡單圖形的繪制,,如直線,、任意形狀的線條、文字等,;②用戶可設(shè)置圖形的屬性,,如圖形邊線的顏色、線條的粗細(xì),、圖形的填充色等,;③用戶對圖形的操作,,如移動位置、復(fù)制,、任意縮放大小等,;④可添加ActiveX控件;⑤完成所有的外部事件,,如鼠標(biāo),、鍵盤等的處理,可自動刷新屏幕來顯示更新,;⑥簡單的動畫處理,。
在RFID組態(tài)管理軟件中,我們會經(jīng)常對不同型號的RFID讀寫器進(jìn)行配置,,為了滿足不同的需求,,在圖形界面模塊中我們添加了RFID讀寫器控件的設(shè)計。ActiveX是基于組件對象模型的一種技術(shù),,將OLE技術(shù)和OCX技術(shù)融為一體,。采用ActiveX技術(shù)開發(fā)RFID讀寫器控件,擴(kuò)充了組態(tài)軟件的功能,,使配置讀寫器變得簡單,,軟件升級更加方便。
RFID讀寫器控件需完成的功能:串口操作(打開,、關(guān)閉),、讀寫器初始化、標(biāo)簽操作(檢測多張,、連續(xù)檢測單張,、連續(xù)檢測多張)、讀取數(shù)據(jù),、寫標(biāo)簽數(shù)據(jù),、寫入AFI、寫入DSFID,、鎖定AFI,、鎖定DSFID。
表1 RFID讀寫器控件的主要屬性
?。?)數(shù)據(jù)庫模塊
數(shù)據(jù)庫是整個組態(tài)軟件的核心部分,。數(shù)據(jù)庫模塊提供對RFID讀寫器的數(shù)據(jù)的采集、存儲和處理,。為了提高數(shù)據(jù)庫的讀寫速度,,將數(shù)據(jù)庫分為實時數(shù)據(jù)庫和歷史數(shù)據(jù)庫兩部分。實時數(shù)據(jù)庫保存從RFID讀寫器讀出的實時值,,并定時將實時數(shù)據(jù)寫入歷史數(shù)據(jù)庫中,。歷史數(shù)據(jù)庫則完成歷史報表的生成和歷史信息的查詢,。
在RFID組態(tài)管理軟件中采用ADO標(biāo)準(zhǔn)數(shù)據(jù)庫訪問方式。ADO(ActiveX Data Objects,,ActiveX數(shù)據(jù)對象)是Microsoft提出的應(yīng)用程序接口(API),,用以實現(xiàn)訪問關(guān)系或非關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。ADO是一種面向?qū)ο蟮木幊探涌?,是對?dāng)前微軟所支持的數(shù)據(jù)庫進(jìn)行操作的最有效和最簡單直接的方法,,是一種功能強(qiáng)大的數(shù)據(jù)訪問編程模式。通過ADO接口,,RFID組態(tài)管理軟件能夠很好地同企業(yè)的數(shù)據(jù)庫相連,實現(xiàn)與企業(yè)原有信息系統(tǒng)的無縫連接,。在VC++6.0中ADO接口的實現(xiàn):
pConn.CreateInstance(__uuidof(ADODB::Connection));//創(chuàng)建Connection對象
pCommand.CreateInstance(__uuidof(ADODB::Command));
pRecordset.CreateInstance(__uuidof(ADODB::Recordset));//創(chuàng)建記錄集對象
pConn->ConnectionTimeout=90;
pConn->Mode=adModeReadWrite;//|adModeShareDenyNone;
_bstr_tconn="DSN=product;UID=sa;PWD=123456";//設(shè)置連接字符串,,
DSN值為企業(yè)數(shù)據(jù)庫名稱
pConn->Open(conn,"","",-1);
(3)通信與數(shù)據(jù)處理模塊
由于人機(jī)界面要與多個RFID讀寫器及其它的I/O接口進(jìn)行數(shù)據(jù)交換,,提供實時監(jiān)控的環(huán)境,,所以對系統(tǒng)的并發(fā)能力有特別的要求。如果只采用單線程來進(jìn)行處理,,速度慢,,會有明顯的時間等待等問題,因此應(yīng)采用多線程技術(shù)來滿足實時監(jiān)控的要求,。
在RFID組態(tài)管理軟件中主要運(yùn)用了三個線程:主線程,、串行通信數(shù)據(jù)采集線程pRcvDataThread、數(shù)據(jù)存儲線程pRcvBufThread,。主線程為用戶接口線程,,由系統(tǒng)自動生成,負(fù)責(zé)系統(tǒng)的運(yùn)行和信息的處理,,使程序能迅速響應(yīng)命令和其它事件,。串行通信數(shù)據(jù)采集線程pRcvDataThread,為輔助線程,,負(fù)責(zé)接收或發(fā)送數(shù)據(jù),,并按照通信協(xié)議對數(shù)據(jù)進(jìn)行解析處理。數(shù)據(jù)存儲線程RcvBufThread,,為輔助線程,,負(fù)責(zé)實時數(shù)據(jù)的存儲,并定時將采樣數(shù)據(jù)保存入庫,。
intRFIDThread_ReceiveDevBuf(intnType);//當(dāng)與RFID讀寫器通訊連接時,,啟動pRcvDataThread
{
if(nType==0)//啟動
{
if(pRcvDataThread==NULL)
{
pRcvDataThread=AfxBeginThread(RFID_RcvThread,NULL);
pRcvDataThread->m_bAutoDelete=true;
}
Sleep(500);
}
elseif(nType==1)//停止
{
for(inti=0;i
}
……
return0;
}
UINTRFID_RcvThread(LPVOIDlParam);//如果啟動了pRcvDataThread,終端機(jī)上傳數(shù)據(jù),,解析收到的數(shù)據(jù)
UINTRFID_DealRcvBufThread(LPVOIDpParam);//如果啟動了pRcvBufThread,,存儲收到的數(shù)據(jù)
?。?)其它模塊
報表生成模塊、報警模塊和權(quán)限設(shè)置模塊,,這些模塊的設(shè)計與普通軟件設(shè)計大同小異,,在此不再贅述。
5結(jié)束語
本文作者創(chuàng)新點在于采用組態(tài)技術(shù)開發(fā)RFID系統(tǒng)管理軟件,,它將RFID讀寫器的配置軟件和生產(chǎn)流通過程的監(jiān)控軟件合二為一,,不僅能夠方便地構(gòu)建RFID系統(tǒng)現(xiàn)場,而且還能夠?qū)FID技術(shù)與公司原有的信息系統(tǒng)進(jìn)行無縫連接,。另外采用ActiveX技術(shù)開發(fā)RFID讀寫器控件,,能夠方便的配置RFID讀寫器,使得公司的信息系統(tǒng)能夠和新的RFID讀寫器連接起來,,保證了軟件的靈活性,。RFID組態(tài)管理軟件在存儲RFID標(biāo)簽數(shù)據(jù)庫、RFID讀寫器種類改變等情況發(fā)生時,,只需少許修改便可完成設(shè)計軟件的更新,,實現(xiàn)新的需求,具有較強(qiáng)的實用性,。