一種基于opc da的數(shù)據(jù)采集與監(jiān)控系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及OPC技術(shù)領(lǐng)域,尤其涉及一種基于OPC DA的數(shù)據(jù)采集與監(jiān)控系統(tǒng)及方法。
【背景技術(shù)】
[0002]OPC技術(shù),是世界上多個自動化公司/軟硬件供應(yīng)商與微軟合作開發(fā)的一套接口的工業(yè)標(biāo)準(zhǔn)。其設(shè)計(jì)目標(biāo)是為現(xiàn)場設(shè)備/自動控制應(yīng)用/企業(yè)管理應(yīng)用軟件之間提供開放、一致的接口規(guī)范,OPC技術(shù)給工業(yè)控制軟件提供了一種一致的存取現(xiàn)場設(shè)備數(shù)據(jù)的方法,使得利用OPC在工業(yè)控制系統(tǒng)的構(gòu)建中體現(xiàn)出具大的優(yōu)勢。
[0003]目前利用OPC服務(wù)器進(jìn)行數(shù)據(jù)的采集和處理時,通信軟件COMApp和OPC DA服務(wù)器COM Group通過COM Group接口程序直接調(diào)用COM App通信軟件對下位系統(tǒng)SubSystem數(shù)據(jù)進(jìn)行讀取,讀取效率較低;同時,相關(guān)程序的升級困難。
【發(fā)明內(nèi)容】
[0004]本發(fā)明為克服上述的不足之處,提供一種基于OPCDA的數(shù)據(jù)采集與監(jiān)控系統(tǒng)及方法。
[0005]本發(fā)明通過以下技術(shù)方案達(dá)到上述目的:一種基于OPCDA的數(shù)據(jù)采集與監(jiān)控系統(tǒng),包括通信軟件COM App,OPC DA服務(wù)器COM Group、下位系統(tǒng)SubSystem,還包括內(nèi)存共享文件Map、GUI Editor編輯器、Data Recorder數(shù)據(jù)記錄器、Viewer閱讀器、History Data模塊、Setting模塊,所述通信軟件COM App用以從OPC DA服務(wù)器COM Group中獲得內(nèi)存共享文件Map的地址,通信軟件COM App還用以讀取下位系統(tǒng)SubSystem的值并將讀取到的值存放在內(nèi)存共享文件Map內(nèi);所述OPC DA服務(wù)器COM Group用以讀取內(nèi)存共享文件Map內(nèi)的數(shù)據(jù)得到下位系統(tǒng)SubSystem的數(shù)據(jù)值;所述Setting模塊用以實(shí)現(xiàn)OPC DA服務(wù)器⑶M GroupTag模塊的生成和下位系統(tǒng)SubSystem的參數(shù)設(shè)置;所述⑶I Editor編輯器用以對Tag模塊中的Tag Data文件內(nèi)的變量進(jìn)行編輯,決定要觀察及操作的變量,OPC DA服務(wù)器COM Group用以得到的相應(yīng)數(shù)據(jù)記錄到Data Recorder數(shù)據(jù)記錄器和Viewer閱讀器并保存數(shù)據(jù)到History Data模塊。
[0006]一種基于OPC DA的數(shù)據(jù)采集與監(jiān)控方法,所述通信軟件COM App和OPC DA服務(wù)器COM Group之間添加內(nèi)存共享文件Map進(jìn)行數(shù)據(jù)交互,具體步驟如下所示:
[0007]S1.根據(jù)下位系統(tǒng)SubSystem配置Conf ig Data文件,針對每一個下位系統(tǒng)SubSystem建立一個內(nèi)存共享文件Map;
[0008]S2.下位系統(tǒng)SubSystem由通信軟件⑶M App快速讀取數(shù)據(jù)并寫入內(nèi)存共享文件Map ;
[0009]S3.所有的內(nèi)存共享文件Map生成一個內(nèi)存文件管理表,管理指向內(nèi)存共享文件Map的指針信息,內(nèi)存文件管理表中的每一個元素對應(yīng)一個下位系統(tǒng)SubSystem變量,該元素管理下位系統(tǒng)SubSystem變量的設(shè)置信息;
[0010]S4.0PC DA服務(wù)器COM Group將內(nèi)存共享文件Map視為下位系統(tǒng)SubSystem內(nèi)存的實(shí)時映射,所有讀寫操作都直接讀取內(nèi)存共享文件Map中的數(shù)據(jù)。
[0011 ]進(jìn)一步的,所述內(nèi)存共享文件Map的建立的具體步驟如下所示:
[0012](I)OPC DA服務(wù)器COM Group啟動時讀取下位系統(tǒng)SubSystem的配置文件SubSystem.xml中的信息,每一個下位系統(tǒng)SubSystem對應(yīng)一個內(nèi)存共享文件Map,順序讀取并創(chuàng)建內(nèi)存共享文件Map,內(nèi)存共享文件Map順序命名,內(nèi)存共享文件Map創(chuàng)建后保存指向內(nèi)存共享文件Map開始位置的內(nèi)存指針pMap ;
[0013](2)內(nèi)存共享文件Map開頭部分保留4byte數(shù)據(jù)區(qū)作為OPC DA服務(wù)器COM Group讀取數(shù)據(jù)的計(jì)數(shù)標(biāo)記,同時內(nèi)存共享文件Map的每個下位系統(tǒng)SubSystem變量的開頭保留4by t e數(shù)據(jù)區(qū)作為下位系統(tǒng)Sub Sy s t em寫入數(shù)據(jù)的計(jì)數(shù)標(biāo)記;
[0014](3)對每一個下位系統(tǒng)SubSystem,讀取下位系統(tǒng)SubSystem的配置文件SubSystem.xml中的信息中的各寄存器區(qū)的配置信息,根據(jù)下位系統(tǒng)SubSystem變量的大小,順序計(jì)算生成指向每個下位系統(tǒng)SubSystem變量的內(nèi)存指針pReg加入下位系統(tǒng)SubSystem變量的內(nèi)存文件管理表,在每個下位系統(tǒng)SubSystem變量的大小內(nèi)存塊的末尾添加8byte的安全區(qū),在讀取下位系統(tǒng)SubSystem變量配置信息的同時,程序檢查每個下位系統(tǒng)SubSystem變量的大小信息,對有沖突的配置信息,異常的錯誤配置信息不加入內(nèi)存文件管理管理表;
[0015](4)重復(fù)(1)(2)(3)的過程,讀取每個下位系統(tǒng)SubSystem變量的配置信息,生成內(nèi)存文件管理表。
[0016]本發(fā)明的有益效果:0PCDA服務(wù)器COM Group進(jìn)行數(shù)據(jù)讀取時只需從內(nèi)存直接讀取不用調(diào)用COM App,從而大大降低了數(shù)據(jù)讀取的時間,可實(shí)現(xiàn)10rns級別的高速數(shù)據(jù)采集;所有系統(tǒng)配置通過xml配置文件管理,實(shí)現(xiàn)系統(tǒng)各個程序模塊之間松散耦合,簡化了系統(tǒng)升級時的修改和各個模塊開發(fā)配合的難度。
【附圖說明】
[0017]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0018]圖1是本發(fā)明整體框架圖;
[0019]圖2是本發(fā)明整體程序流程圖;
[0020]圖3是本發(fā)明內(nèi)存共享文件Map創(chuàng)建示意圖。
【具體實(shí)施方式】
[0021]以下結(jié)合附圖,對本發(fā)明的技術(shù)方案作進(jìn)一步的描述,但本發(fā)明并不限于這些實(shí)施例。
[0022]結(jié)合附圖1,一種基于OPCDA的數(shù)據(jù)采集與監(jiān)控系統(tǒng),包括通信軟件COM App、OPCDA服務(wù)器⑶M Group、下位系統(tǒng)SubSystem、內(nèi)存共享文件Map、GUI Editor編輯器、DataRecorder數(shù)據(jù)記錄器、Viewer閱讀器、History Data模塊、Setting模塊,所述通信軟件COMApp用以從OPC DA服務(wù)器COM Group中獲得內(nèi)存共享文件Map的地址,通信軟件COM App還用以讀取下位系統(tǒng)Subsystem的值并將讀取到的值存放在內(nèi)存共享文件Map內(nèi);所述OPC DA月艮務(wù)器COM Group用以讀取內(nèi)存共享文件Map內(nèi)的數(shù)據(jù)得到下位系統(tǒng)SubSystem的數(shù)據(jù)值;所述Setting模塊用以實(shí)現(xiàn)OPC DA服務(wù)器COM Group Tag模塊的生成和下位系統(tǒng)SubSystem的參數(shù)設(shè)置;所述⑶I Editor編輯器用以對Tag模塊中的Tag Data文件內(nèi)的變量進(jìn)行編輯,決定要觀察及操作的變量,OPC DA服務(wù)器⑶M Group用以得到的相應(yīng)數(shù)據(jù)記錄到DataRecorder數(shù)據(jù)記錄器和Viewer閱讀器并保存數(shù)據(jù)到History Data模塊。
[0023]結(jié)合附圖2,本發(fā)明的主要步驟為:定義變量,包括下位系統(tǒng)SubSystem的種類、通訊方式等,生成Config Data和Tag Data兩個XML文件;根據(jù)Config Data文件里設(shè)定的變量,通信軟件COM App采集下位系統(tǒng)SubSystem的數(shù)據(jù)并按照約定格式將數(shù)據(jù)保存到臨時共享文件Map內(nèi);0PC DA服務(wù)器COM Group按照約定格式每10ms讀取依次臨時共享文件Map里的值,得到數(shù)據(jù);在GUI Editor編輯器內(nèi)對Tag Data內(nèi)的變量進(jìn)行編輯,決定要觀察及操作的變量;根據(jù)需要觀察及操作的變量,將OPC DA服務(wù)器COM Group得到的相應(yīng)數(shù)據(jù)記錄到Data Recorder數(shù)據(jù)記錄器和Viewer閱讀器并保存數(shù)據(jù)到History Data模塊。
[0024]一種基于OPC DA的數(shù)據(jù)采集與監(jiān)控方法,所述通信軟件COM App和OPC DA服務(wù)器COM Group之間添加內(nèi)存共享文件Map進(jìn)行數(shù)據(jù)交互,具體步驟如下所示:
[°°25] S1.根據(jù)下位系統(tǒng)SubSystem配置Conf ig Data文件,針對每一個下位系統(tǒng)SubSystem建立一個內(nèi)存共享文件Map;
[0026]S2.下位系統(tǒng)SubSystem由通信軟件⑶M App快速讀取數(shù)據(jù)并寫入內(nèi)存共享文件Map ;
[0027]S3.所有的內(nèi)存共享文件Map生成一個內(nèi)存文件管理表,管理指向內(nèi)存共享文件Map的指針信息,內(nèi)存文件管理表中的每一個元素對應(yīng)一個下位系統(tǒng)SubSystem變量,該元素管理下位系統(tǒng)SubSystem變量的設(shè)置信息;
[0028]S4.0PC DA服務(wù)器COM Group將內(nèi)存共享文件Map視為下位系統(tǒng)SubSystem內(nèi)存的實(shí)時映射,所有讀寫操作都直接讀取內(nèi)存共享文件Map中的數(shù)據(jù)。
[0029]OPC DA服務(wù)器COM Group從內(nèi)存共享文件Map內(nèi)讀取所需數(shù)據(jù)的步驟為:
[0030](I)通信軟件COM App從OPC DA服務(wù)器COM Gro