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