<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > RFID系統(tǒng)的組態(tài)管理軟件設(shè)計(jì)

          RFID系統(tǒng)的組態(tài)管理軟件設(shè)計(jì)

          作者: 時(shí)間:2008-06-11 來(lái)源:網(wǎng)絡(luò) 收藏

          引言

          隨著技術(shù)不斷革新,產(chǎn)業(yè)已進(jìn)入了成長(zhǎng)期。如何將技術(shù)同企業(yè)原有的信息進(jìn)行無(wú)縫連接,已成為許多企業(yè)考慮的問題。軟件能將眾多常用功能組合在一起形成一個(gè)新的軟件平臺(tái),用戶只需在這個(gè)平臺(tái)上進(jìn)行二次開發(fā)即可,因此90年代以后,國(guó)內(nèi)外推出了不少軟件產(chǎn)品,有FIX、WinCC、王、MCGS等。但這些軟件的通用性太強(qiáng),不能滿足的一些特殊要求,因此需要針對(duì)RFID的特點(diǎn)開發(fā)專用于RFID的組態(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é)合起來(lái),通過(guò)人機(jī)交互,方便地構(gòu)建RFID系統(tǒng)的監(jiān)控現(xiàn)場(chǎng)和配置RFID讀寫器,從而監(jiān)測(cè)和控制生產(chǎn)和流通的各個(gè)環(huán)節(jié)。

          1RFID技術(shù)

          無(wú)線射頻識(shí)別(RadioFrequencyIdentification,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)。近年來(lái)隨著科學(xué)技術(shù)的進(jìn)步,RFID在生產(chǎn)制造管理、物流配送管理、醫(yī)藥管理等領(lǐng)域得到廣泛的應(yīng)用。一般的RFID系統(tǒng)由硬件、軟件和基本的數(shù)據(jù)格式與通信協(xié)議組成。硬件包含電子標(biāo)簽(Tag)、讀寫器(Reader)和天線三部分。RFID讀寫器通過(guò)天線與RFID電子標(biāo)簽進(jìn)行無(wú)線通信,實(shí)現(xiàn)對(duì)標(biāo)簽識(shí)別碼和內(nèi)存數(shù)據(jù)的讀出或?qū)懭氩僮鳌\浖饕ㄖ虚g件應(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é)議。

          2RFID組態(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ù)過(guò)程監(jiān)控軟件是兩套軟件,軟件的利用率低。

          (2)RFID組態(tài)管理軟件的功能分析

          RFID組態(tài)管理軟件基于Windows平臺(tái),通過(guò)人機(jī)交互,可快速構(gòu)造和生成監(jiān)控系統(tǒng)。它可支持不同型號(hào)RFID讀寫器的配置和管理,支持多個(gè)RFID讀寫器的同時(shí)訪問。另外可提供生產(chǎn)流通過(guò)程的數(shù)據(jù)采集和信息管理。

          RFID組態(tài)管理軟件的主要性能指標(biāo)為:在中文Windows下運(yùn)行;多任務(wù),多線程;最多配置RFID讀寫器的數(shù)目為1000;監(jiān)控界面完整顯示時(shí)間不大于2秒;支持語(yǔ)音報(bào)警;支持報(bào)表生成。

          3RFID組態(tài)管理軟件的開發(fā)工具

          目前組態(tài)軟件的開發(fā)多用VisualC++、VisualBasic和Delphi。在RFID的組態(tài)管理軟件中采用VC++6.0。VC++6.0是面向?qū)ο蟮木幊陶Z(yǔ)言,它提供的MFC類庫(kù)很好地封裝了WindowsAPI函數(shù),充分利用類的繼承性、封裝性、多態(tài)性,用戶可方便的自己需要的類。另外VC對(duì)內(nèi)存和硬件的操作較容易。

          數(shù)據(jù)庫(kù)采用SQLServer2000。SQLServer2000完全運(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ù)的操作。

          4RFID組態(tài)管理軟件的功能實(shí)現(xiàn)及其關(guān)鍵技術(shù)

          RFID組態(tài)管理軟件采用模塊化,模塊與模塊之間盡量獨(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ù)過(guò)程監(jiān)控畫面的工具。監(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)刷新屏幕來(lái)顯示更新;⑥簡(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。



          表1RFID讀寫器控件的主要屬性

          (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(ActiveXDataObjects,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ù)訪問編程模式。通過(guò)ADO接口,RFID組態(tài)管理軟件能夠很好地同企業(yè)的數(shù)據(jù)庫(kù)相連,實(shí)現(xiàn)與企業(yè)原有信息系統(tǒng)的無(wú)縫連接。在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_tconn="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ā)能力有特別的要求。如果只采用單線程來(lái)進(jìn)行處理,速度慢,會(huì)有明顯的時(shí)間等待等問題,因此應(yīng)采用多線程技術(shù)來(lái)滿足實(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ù)。

          intRFIDThread_ReceiveDevBuf(intnType);//當(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);

          }

          elseif(nType==1)//停止

          {

          for(inti=0;im_nTotalDeviceNum;i++)

          TerminateThread(pRcvDataThread[i],0);

          }

          ……

          return0;

          }

          UINTRFID_RcvThread(LPVOIDlParam);//如果啟動(dòng)了pRcvDataThread,終端機(jī)上傳數(shù)據(jù),解析收到的數(shù)據(jù)

          UINTRFID_DealRcvBufThread(LPVOIDpParam);//如果啟動(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)流通過(guò)程的監(jiān)控軟件合二為一,不僅能夠方便地構(gòu)建RFID系統(tǒng)現(xiàn)場(chǎng),而且還能夠?qū)FID技術(shù)與公司原有的信息系統(tǒng)進(jìn)行無(wú)縫連接。另外采用ActiveX技術(shù)開發(fā)RFID讀寫器控件,能夠方便的配置RFID讀寫器,使得公司的信息系統(tǒng)能夠和新的RFID讀寫器連接起來(lái),保證了軟件的靈活性。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)清李蘇劍等編著.無(wú)線識(shí)別技術(shù)(RFID)理論與應(yīng)用,電子工業(yè)出版社2004

          [3]李耀,李超良.組態(tài)軟件架構(gòu)的研究與設(shè)計(jì).微計(jì)算機(jī)信息,2005,8:86-87



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();