專利名稱:鍋爐控制中的基于opc服務器的實時數據庫實現數據實時更新的裝置及數據實時更新方法
技術領域:
本發明涉及一種數據控制方法。
背景技術:
實時數據庫是解決工業生產過程中的數據存儲和上位機軟件之間的數據共享的。它的主要特性是存儲速度快,強調數據的時間一致性。由于實時數據庫是將數據存儲在內存中,存儲速度大約是傳統數據庫的100倍,甚至更高。這樣在工業生產中就可以迅速的存儲下位機傳上來的數據,不致造成數據的丟失。實時數據庫每個數據都有嚴格的時間特性,這可以精確到ms級,傳統數據庫做不到。 數據的一致性是值每個操作都有嚴格的時間限制,數據庫中有完善的進程調用,保證數據存儲和訪問的時間特性。而傳統的數據庫各種操作是在一定意義上在什么時間完成是無法預知的,訪問一個數據時可能由于系統的負荷較大需要很長的時間才能返回。實時數據庫存儲數據時伴隨著數據的壓縮,在相同的存儲空間中可以存儲更多的數據。在鍋爐控制中,下位機較多,傳感器返回數據量大,實時性有要求,故不能使用傳統的數據庫。過程控制中涉及到下位機和上位機協調、數據共享、指令執行等操作,含有中間數據層,即實時數據庫是十分必要的。實時數據庫在工業程控制中處于數據核心的地位。現在大規模的實時數據庫產品較多,價格昂貴(以十萬甚至百萬記),主要是配合快速大容量數據記錄、轉存。而對于一般的工業控制,比如鍋爐控制,功能實用、價格低廉的實時數據庫卻很少,但其有廣闊的市場。OPC是一種數據交互協議,基于COM技術。OPC技術中包含OPC服務器和OPC客戶端。OPC客戶端可以訪問OPC服務器的數據,或者修改其中的數據。這種數據訪問有很好的實時性,支持多個客戶端同時訪問。在工業控制中廣泛使用,是一種各種設備廠商同時遵守的協議。OPC技術中把OPC分為OPC服務器和OPC客戶端,一個OPC服務器可以連接多個OPC客戶端,OPC客戶端之間是并行的,數據寫入和數據讀取也是并行的。現在市場上通用的做法是,單獨開發一個OPC服務器,將實時數據庫作為一個OPC客戶端,其他上位機軟件都是一種客戶端,上位機到實時數據庫中取數據要經過兩重OPC接口協議。系統的冗余較多,時序統一的難度也較大。OPC服務器開發有三種方法,I)使用OPC服務器速成庫,缺點是功能單一,缺乏靈活性,很難升級,修改相關程序功能。2)使用相關的軟件開發包,缺點是要依賴開發包,功能擴展性不強。3)使用COM開發,直接使用底層的API函數,該方法最靈活,能夠深入的掌握COM內部技術細節等特點,可以使用OPC協議所提供的所有的功能,不需要依賴其他動態鏈接庫。COM是Component Object Model的縮寫,是所有OLE機制的基礎。本發明就是使用COM開發的OPC服務器。
發明內容
本發明的目的是為了解決一種鍋爐控制中的OPC服務器的實時數據庫數據快速存儲的問題,提供一種鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置及方法。鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,它包括上位機、內置OPC服務器的實時數據庫和多個下位機;上位機與內置OPC服務器的實時數據庫通過OPC接口連接,內置OPC服務器的實時數據庫通過通信總線與多個下位機連接。每個下位機向內置OPC服務器的實時數據庫傳輸的數據包含讀寫標志位、CRC校驗位、下位機的地址位和下位機的數據值信息。所述的數據總線為串行RS8通信總線。所述的下位機是傳感器或執行機構。所述的上位機為監控軟件系統。鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置的實現數據實時更新方法,它是按照如下步驟實現的步驟一、首先內置OPC服務器的實時數據庫為每一個下位機根據其通信地址建立一個臨時表Tmp表,該臨時表Tmp表的表名為TmpXXX,其中XXX對應下位機的通信地址;臨時表Tmp表內包括有兩個數據項[GetDataTime]和[FieldVal], [FieldVal]表示下位機上傳的數據,[GetDataTime]表示獲取[FieldVal]的時間;步驟二、內置OPC服務器的實時數據庫使用map表存儲上一時刻的數據,該數據包括下位機返回的位地址項和數據值兩項數據;步驟三、當下位機發送數據給內置OPC服務器的實時數據庫的時候,進行實時數據庫的快速數據插入和OPC服務器數據更新,其方法是步驟三一、內置OPC服務器的實時數據庫接收到下位機所采集的數據,并對該傳輸的數據進行判斷,判斷該傳輸的數據是否滿足CRC校驗和通信總線協議,若滿足,則執行步驟三二 ;若不滿足,則執行步驟三三;步驟三二、內置OPC服務器的實時數據庫中實時數據庫按照協議解析該數據的數據值和地址,同時與map表中上一時刻數據的數據值進行比較,該比較分為兩種情況一、若該數據是數字量數據,比較該數據值與上一時刻map表中所存儲的數據值是否相同,若是,則,內置OPC服務器的實時數據庫對該數據不作存儲,若否,則,存入該下位機的臨時表Tmp表中;二、若該數據是模擬量數據,比較該數據所設置初始閾值是否相同,若是,則,實時數據庫對該數據不作存儲,若否,則,存入該下位機的臨時表Tmp表中;
然后內置OPC服務器的實時數據庫更新map表并返回到步驟三一;步驟三三、內置OPC服務器的實時數據庫通知下位機重新發送數據,判斷是否小于設定溢出時間和最大發送次數。鍋爐控制中的基于OPC服務器的數據實時更新方法,步驟三中所述的實時數據庫中包含七個表數字量數據表、模擬量數據表、名稱-地址表、臨時表、報警記錄表、系統運行記錄表和轉存信息記錄表;數字量數據表中包含的數據項有采集數字量數據的下位機的名稱、下位機所采集數字量數據的首地址、下位機的所采集數字量數據的偏移地址、下位機的所采集數字量數據的全局地址、是否保存該數據的狀態位、標志位和系統復位的初始值;模擬量數據表中包含的數據項有采集模擬量數據的下位機的名稱、下位機所采集模擬量數據的首地址、下位機所采集模擬量數據的偏移地址、下位機所采集模擬量數據的全局地址、是否保存該數據初始值的狀態位、下位機所采集模擬量數據的量程和下位機所采集模擬量數據的AD位數;名稱-地址表包含的數據項有下位機的名稱、下位機所采集數據的首地址、下位機所采集數據的全局地址、下位機所采集數據的變量類型和下位機所采集數據的標簽號;
臨時表Tmp表包含的數據項有[GetDataTime]和[FieldVal],二者分別代表獲取數據的時間和數組值,數據值是指經過解碼得到的模擬量和數字量值;報警記錄表包含的數據項有報警的時間、報警時長、報警的下位機名稱和是否解決問題標志位;系統運行記錄表系統開始運行時間和系統累計運行時間;轉存信息記錄表系統轉存開始時間、轉存結束時間、轉存歷史數據庫名稱和轉存數據庫表名。所述的實時數據庫中的名稱-地址表是由模擬量數據表和數字量數據表自動生成,生成該表后,先對該表的變量首地址由低到高排序,然后在此基礎上對該表的變量類型進行由低到高排序,形成數據按照名稱、首地址分類的表。本發明中的實時數據庫是采用統一的時間線程,按照時序改變標志變量的值。本發明的優點是I、我們將OPC服務器做在實時數據庫中,省去了將兩者分開還需要一重OPC協議的接口,使系統更加簡潔即減少了系統的硬件資源,同時OPC服務器與數據庫、下位機聯系更為緊密,使得數據傳遞更為靈活。如果將實時數據庫作為一個OPC客戶端,其他上位機軟件都是一種客戶端,上位機到實時數據庫中取數據要經過兩重OPC接口協議。系統的冗余較多,時序統一的難度也較大。2、本發明采用的實時數據庫的快速數據插入和OPC服務器數據更新算法減小了程序的冗余,縮小了程序存儲空間,節約了硬件資源,可巧妙、簡潔的實現對數據快速存儲和實時性的保證Map表只存儲上一次更新的數據,數據量小,查找速度快,用于在當前數據插入時做數據比較,對數據的初期壓縮起重要作用。TMP表存儲經過初期壓縮過的數據(比如數字量10 O O 01會被壓縮成101等),TMP表的結構十分簡單只有數據項時間和數據值,方便快速數據插入操作,減小系統延時。并且通過全局唯一地址(uniqueadd)命名表名,查找方便。對TMP表的操作是在系統空閑時間操作,這時可以將TMP里的數據轉存到數據庫的其他表中,或者進一步壓縮存入歷史數據庫(傳統硬盤數據庫)中。3、數據庫表的設計使得數據的插入和查找更加簡潔,配合上面的對數據的操作流程,可以提高數據庫數據操作效率。4、OPC標簽的設計方便組態人員操作。使得操作人員可以迅速定位傳感器,配置組態軟件。5、軟件整體獨立,不需要其他運行庫,使用COM技術開發,可以使用OPC協議所提供的所有的功能。6、合理的軟件體系結構設計,程序系統資源占用小,可維護性好,功能可升級。
圖I為本發明裝置的結構示意圖;圖2為實時數據庫的快速數據插入示意圖;圖3為實時數據庫的快速數據插入和OPC服務器數據更新的方法流程圖;圖4為原始的實時數據庫的快速數據插入和OPC服務器數據更新采用的算法流程圖; 圖5為本發明實時數據庫中的名稱-地址表的結構圖。
具體實施例方式具體實施方式
一下面結合圖I說明本實施方式,。鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,它包括上位機I、內置OPC服務器的實時數據庫2和多個下位機3 ;上位機I與內置OPC服務器的實時數據庫2通過OPC接口連接,內置OPC服務器的實時數據庫2通過通信總線與多個下位機3連接。
具體實施方式
二 下面結合圖I說明本實施方式,本實施方式為對實施方式一的進一步說明,鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,每個下位機3向內置OPC服務器的實時數據庫2傳輸的數據包含讀寫標志位、CRC校驗位、下位機3的地址位和下位機3的數據值信息。
具體實施方式
三下面結合圖I說明本實施方式,本實施方式為對實施方式一的進一步說明,鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,所述的數據總線4為串行RS485通信總線。
具體實施方式
四下面結合圖I說明本實施方式,本實施方式為對實施方式一的進一步說明,鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,所述的下位機3是傳感器或執行機構。
具體實施方式
五下面結合圖I說明本實施方式,本實施方式為應用實施方式一裝置的方法,所述的上位機(I)為監控軟件系統。
具體實施方式
六下面結合圖2、圖3、和圖5說明本實施方式,本實施方式為應用實施方式一裝置的方法,鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置的實現數據實時更新方法,其特征在于,它是按照如下步驟實現的
步驟一、首先內置OPC服務器的實時數據庫2為每一個下位機3根據其通信地址建立一個臨時表Tmp表,該臨時表Tmp表的表名為TmpXXX,其中XXX對應下位機3的通信地址;臨時表Tmp表內包括有兩個數據項[GetDataTime]和[FieldVal],[FieldVal]表示下位機上傳的數據,[GetDataTime]表示獲取[FieldVal]的時間;步驟二、內置OPC服務器的實時數據庫2使用map表存儲上一時刻的數據,該數據包括下位機3返回的32位地址項和數據值兩項數據;步驟三、當下位機3發送數據給內置OPC服務器的實時數據庫2的時候,進行實時數據庫的快速數據插入和OPC服務器數據更新,其方法是步驟三一、內置OPC服務器的實時數據庫2接收到下位機3所采集的數據,并對該傳輸的數據進行判斷,判斷該傳輸的數據是否滿足CRC校驗和通信總線協議,若滿足,則執行步驟三二 ;若不滿足,則執行步驟三三; 步驟三二、內置OPC服務器的實時數據庫2中實時數據庫按照協議解析該數據的數據值和地址,同時與map表中上一時刻數據的數據值進行比較,該比較分為兩種情況一、若該數據是數字量數據,比較該數據值與上一時刻map表中所存儲的數據值是否相同,若是,則,內置OPC服務器的實時數據庫2對該數據不作存儲,若否,則,存入該下位機3的臨時表Tmp表中;二、若該數據是模擬量數據,比較該數據所設置初始閾值是否相同,若是,則,實時數據庫2對該數據不作存儲,若否,則,存入該下位機3的臨時表Tmp表中;然后內置OPC服務器的實時數據庫2更新map表并返回到步驟三一;步驟三三、內置OPC服務器的實時數據庫2通知下位機重新發送數據,判斷是否小于設定溢出時間和最大發送次數。
具體實施方式
七本實施方式為對實施方式六的進一步說明,鍋爐控制中的基于OPC服務器的數據實時更新方法,其特征在于,步驟三中所述的實時數據庫中包含七個表數字量數據表、模擬量數據表、名稱-地址表、臨時表、報警記錄表、系統運行記錄表和轉存信息記錄表;數字量數據表中包含的數據項有采集數字量數據的下位機3的名稱、下位機3所采集數字量數據的首地址、下位機3的所采集數字量數據的偏移地址、下位機3的所采集數字量數據的全局地址、是否保存該數據的狀態位、標志位和系統復位的初始值;模擬量數據表中包含的數據項有采集模擬量數據的下位機3的名稱、下位機3所采集模擬量數據的首地址、下位機3所采集模擬量數據的偏移地址、下位機3所采集模擬量數據的全局地址、是否保存該數據初始值的狀態位、下位機3所采集模擬量數據的量程和下位機3所采集模擬量數據的AD位數;名稱-地址表包含的數據項有下位機3的名稱、下位機3所采集數據的首地址、下位機3所采集數據的全局地址、下位機3所采集數據的變量類型和下位機3所采集數據的標簽號;臨時表Tmp表包含的數據項有[GetDataTime]和[FieldVal],二者分別代表獲取數據的時間和數組值,數據值是指經過解碼得到的模擬量和數字量值;報警記錄表包含的數據項有報警的時間、報警時長、報警的下位機3名稱和是否解決問題標志位;
系統運行記錄表系統開始運行時間和系統累計運行時間;轉存信息記錄表系統轉存開始時間、轉存結束時間、轉存歷史數據庫名稱和轉存數據庫表名。
具體實施方式
八本實施方式為對實施方式六的進一步說明,鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新方法,所述的實時數據庫中的名稱-地址表是由模擬量數據表和數字量數據表自動生成,生成該表后,先對該表的變量首地址由低到高排序,然后在此基礎上對該表的變量類型進行由低到高排序,形成數據按照名稱、首地址分類的表。
具體實施方式
九本實施方式為對實施方式六的進一步說明, 鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新方法,實時數據庫采用統一的時間線程,按照時序改變標志變量的值。本發明不局限于上述實施方式,還可以是上述各實施方式中所述技術特征的合理組合。
權利要求
1.鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,其特征在于它包括上位機(I)、內置OPC服務器的實時數據庫(2)和多個下位機(3); 上位機⑴與內置OPC服務器的實時數據庫⑵通過OPC接口連接,內置OPC服務器的實時數據庫(2)通過通信總線與多個下位機(3)連接。
2.根據權利要求I所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,其特征在于每個下位機⑶向內置OPC服務器的實時數據庫⑵傳輸的數據包含讀寫標志位、CRC校驗位、下位機(3)的地址位和下位機(3)的數據值信息。
3.根據權利要求I所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,其特征在于所述的數據總線(4)為串行RS485通信總線。
4.根據權利要求I所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,其特征在于所述的下位機(3)是傳感器或執行機構。
5.根據權利要求I所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置,其特征在于所述的上位機(I)為監控軟件系統。
6.應用權利要求I所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置的實現數據實時更新方法,其特征在于,它是按照如下步驟實現的 步驟一、首先內置OPC服務器的實時數據庫(2)為每一個下位機(3)根據其通信地址建立一個臨時表Tmp表,該臨時表Tmp表的表名為TmpXXX,其中XXX對應下位機(3)的通信地址;臨時表Tmp表內包括有兩個數據項[GetDataTime]和[FieldVal],[FieldVal]表示下位機上傳的數據,[GetDataTime]表示獲取[FieldVal]的時間; 步驟二、內置OPC服務器的實時數據庫(2)使用map表存儲上一時刻的數據,該數據包括下位機(3)返回的32位地址項和數據值兩項數據; 步驟三、當下位機(3)發送數據給內置OPC服務器的實時數據庫(2)的時候,進行實時數據庫的快速數據插入和OPC服務器數據更新,其方法是 步驟三一、內置OPC服務器的實時數據庫(2)接收到下位機(3)所采集的數據,并對該傳輸的數據進行判斷,判斷該傳輸的數據是否滿足CRC校驗和通信總線協議,若滿足,則執行步驟三二 ;若不滿足,則執行步驟三三; 步驟三二、內置OPC服務器的實時數據庫(2)中實時數據庫按照協議解析該數據的數據值和地址,同時與map表中上一時刻數據的數據值進行比較,該比較分為兩種情況 一、若該數據是數字量數據,比較該數據值與上一時刻map表中所存儲的數據值是否相同,若是,則,內置OPC服務器的實時數據庫(2)對該數據不作存儲,若否,則,存入該下位機(3)的臨時表Tmp表中; 二、若該數據是模擬量數據,比較該數據所設置初始閾值是否相同,若是,則,實時數據庫(2)對該數據不作存儲,若否,則,存入該下位機(3)的臨時表Tmp表中; 然后內置OPC服務器的實時數據庫(2)更新map表并返回到步驟三一; 步驟三三、內置OPC服務器的實時數據庫(2)通知下位機重新發送數據,判斷是否小于設定溢出時間和最大發送次數。
7.根據權利要求6所述的鍋爐控制中的基于OPC服務器的數據實時更新方法,其特征在于,步驟三中所述的實時數據庫中包含七個表數字量數據表、模擬量數據表、名稱-地址表、臨時表、報警記錄表、系統運行記錄表和轉存信息記錄表;數字量數據表中包含的數據項有采集數字量數據的下位機(3)的名稱、下位機(3)所采集數字量數據的首地址、下位機(3)的所采集數字量數據的偏移地址、下位機(3)的所采集數字量數據的全局地址、是否保存該數據的狀態位、標志位和系統復位的初始值; 模擬量數據表中包含的數據項有采集模擬量數據的下位機(3)的名稱、下位機(3)所采集模擬量數據的首地址、下位機(3)所采集模擬量數據的偏移地址、下位機(3)所采集模擬量數據的全局地址、是否保存該數據初始值的狀態位、下位機(3)所采集模擬量數據的量程和下位機(3)所采集模擬量數據的AD位數; 名稱-地址表包含的數據項有下位機(3)的名稱、下位機(3)所采集數據的首地址、下位機(3)所采集數據的全局地址、下位機(3)所采集數據的變量類型和下位機(3)所采集數據的標簽號; 臨時表Tmp表包含的數據項有[GetDataTime]和[FieldVal],二者分別代表獲取數據的時間和數組值,數據值是指經過解碼得到的模擬量和數字量值; 報警記錄表包含的數據項有報警的時間、報警時長、報警的下位機(3)名稱和是否解決問題標志位; 系統運行記錄表系統開始運行時間和系統累計運行時間; 轉存信息記錄表系統轉存開始時間、轉存結束時間、轉存歷史數據庫名稱和轉存數據庫表名。
8.根據權利要求7所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新方法,其特征在于,所述的實時數據庫中的名稱-地址表是由模擬量數據表和數字量數據表自動生成,生成該表后,先對該表的變量首地址由低到高排序,然后在此基礎上對該表的變量類型進行由低到高排序,形成數據按照名稱、首地址分類的表。
9.根據權利要求6所述的鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新方法,其特征在于,實時數據庫采用統一的時間線程,按照時序改變標志變量的值。
全文摘要
鍋爐控制中的基于OPC服務器的實時數據庫實現數據實時更新的裝置及數據實時更新方法,涉及一種數據控制方法。為了解決鍋爐控制中的OPC服務器的實時數據庫數據快速存儲的問題。本發明的裝置包括上位機、內置OPC服務器的實時數據庫和多個下位機;上位機與內置OPC服務器的實時數據庫通過OPC接口連接,內置OPC服務器的實時數據庫通過通信總線與多個下位機連接。本發明實現數據實時更新方法為一、首先內置OPC服務器的實時數據庫為每一個下位機根據其通信地址建立一個臨時表Tmp表;二、實時數據庫使用map表存儲上一時刻的數據;三、進行實時數據庫的快速數據插入和OPC服務器數據更新。用于鍋爐控制中的實時數據控制。
文檔編號H04L29/06GK102663068SQ20121009312
公開日2012年9月12日 申請日期2012年3月31日 優先權日2012年3月31日
發明者孫一勇, 王光, 王慶領, 鐘賢德, 高會軍 申請人:哈爾濱工業大學