本發明屬于計算機數據采集與處理技術領域,具體涉及一種基于LabVIEW的實時監控系統數據記錄方法。
背景技術:
計算機技術和總線技術的發展使得以PC機為中心的實時監控系統在現代測試工程中扮演著越來越重要的角色。隨著操作系統和處理器并行處理能力的不斷提高,人們對實時監控系統的功能和復雜程度也提出了更高的要求。當一個復雜的實時監控系統工作時,人們不僅希望能實現必要的監視、控制功能,而且希望有一套可靠、有效的機制用于實現現場數據的實時記錄,以達到數據備份,事后數據分析,用戶操作評估,輔助定排故等目的。
實時監控系統工作時,用戶希望能夠毫無遺漏地記錄全面的現場信息,包括總線數據、日期時間、用戶操作動作等。但由于PC機磁盤空間有限,為適應長期記錄的需要,還希望存儲文件能盡可能小。此外,由于需要和系統監控同時進行,數據記錄進程應盡可能少地占用系統資源,以免影響主體監控功能的實現。
現有的以PC機為平臺的實時監控系統數據記錄方法一般存在以下弊端:①多采用文本形式存儲數據,文件I/O效率低、占用磁盤空間大,長時間連續記錄時會出現數據阻塞、數據丟失、死機等現象;②記錄信息不全面,大多未記錄用戶在監控界面操作控件的動作;③普遍采用定時循環程序結構記錄數據,當總線波特率發生改變時,可能會造成總線數據丟失,程序自適應能力差。且記錄用戶操作動作時,需要在循環中不斷輪詢用戶界面控件的狀態,程序框架繁瑣,輪詢過程會消耗可觀的CPU處理時間,如果用戶執行太快,還可能遺漏用戶的輸入,程序響應能力弱。
技術實現要素:
本發明的目的在于提供一種基于LabVIEW的實時監控系統數據記錄方法,克服或減輕現有技術的至少一個上述缺陷。
本發明的目的通過如下技術方案實現:一種基于LabVIEW的實時監控系統數據記錄方法,其特征在于,包括如下步驟:
步驟一:使用LabVIEW語言創建“數據記錄文件”格式的文件;
步驟二:在步驟一所述的文件中定義實時監控系統所需記錄的不同數據類型的元素;
步驟三:實時記錄實時監控系統事件發生時步驟二中各元素的數據;
步驟四:當記錄的數據達到預設要求時保存該文件,同時創建新的“數據記錄文件”格式的文件記錄后續數據;
步驟五:當實時監控系統所需元素記錄完成后,篩選并刪除步驟四中各文件中的空白文件。
優選地是,所述實時監控系統所需記錄元素的類型為日期時間、數據幀類型、有效數據幀、開關組狀態、模塊上電時間。
優選地是,所述實時監控系統事件為該實時監控系統接收到有效通訊數據幀、用戶改變該實時監控系統界面開關狀態。
優選地是,所述步驟四的單個記錄文件中記錄數超過25000條或者記錄時長超過1小時。
本發明所提供的一種基于LabVIEW的實時監控系統數據記錄方法的有益效果在于,能全面記錄實時監控系統的各種信息;“數據記錄文件”格式文件I/O效率高,占用磁盤空間小,能夠滿足長期數據記錄的需要;程序框架簡單,運行時占用CPU資源少,效率較高;程序自適應能力強,響應速度快,不會丟失數據及遺漏用戶的操作;可應用于以PC機為平臺的實時監控系統中,用來實時存儲各種現場數據。
附圖說明
圖1為本發明基于LabVIEW的實時監控系統數據記錄方法的記錄文件數據結構示意圖;
圖2為本發明基于LabVIEW的實時監控系統數據記錄方法的流程圖;
圖3為本發明基于LabVIEW的實時監控系統數據記錄方法的程序框圖。
具體實施方式
為使本發明實施的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行更加詳細的描述。在附圖中,自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。所描述的實施例是本發明一部分實施例,而不是全部的實施例。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本發明,而不能理解為對本發明的限制。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
下面結合附圖對本發明的基于LabVIEW的實時監控系統數據記錄方法做進一步詳細說明。
一種基于LabVIEW的實時監控系統數據記錄方法,包括如下步驟:
步驟一:使用LabVIEW語言創建“數據記錄文件”格式的文件。
當實時監控系統開始工作時,首先在當前應用程序目錄下以“日期+時間+XXX數據記錄”為文件名創建并打開一個文件,并定義該文件的格式,該文件的格式為“數據記錄文件”格式。
所述“數據記錄文件”是LabVIEW特有的一種二進制文件類型,它以相同的結構化記錄序列存儲數據(類似于電子表格),每條數據記錄可由任何數據類型組成,非常適用于需要記錄復雜數據類型的場合。該文件類型相比文本文件占用磁盤空間更小,文件I/O效率更高。在創建記錄文件時,LabVIEW按順序給每個記錄分配一個記錄號,僅通過查詢序列號就可隨機訪問記錄,因此可在后期方便地查閱記錄文件,拓展回放功能。
步驟二:在步驟一所述的文件中定義實時監控系統所需記錄的不同數據類型的元素。
實時監控系統所需記錄元素的類型選擇日期時間、數據幀類型、有效數據幀、開關組狀態、模塊上電時間等其他需要記錄的數據類型。
步驟三:實時記錄實時監控系統事件發生時步驟二中各元素的數據。
實時監控系統事件選擇為實時監控系統接收到有效通訊數據幀、用戶改變該實時監控系統界面開關狀態以及其他實時監控系統發生的狀況。
檢測實時監控系統事件的發生,當事件發生時,程序立即響應,并按已定義的格式組裝各現場數據后寫入當前文件中,若事件未發生,程序一直處于等待狀態。
通過實時監控系統事件來響應特定的用戶操作,更接近于自然規律,不必輪詢前面板即可確定執行了何種操作。事件可以來自于用戶界面、外部I/O或者用戶自定義事件。事件程序框架簡單,不僅可減少程序對CPU的需求,還可保證對用戶的所有交互都能作出響應,提高了程序的自適應能力和響應能力。
步驟四:當記錄的數據達到預設要求時保存該文件,同時創建新的“數據記錄文件”格式的文件記錄后續數據。
當單個文件中記錄數到達一定數目或記錄時間到達一定時長時,具體為單個記錄文件中記錄數超過25000條或者記錄時長超過1小時。保存并關閉當前文件,而后創建并打開新文件以保存后續記錄。此舉是為了防止單個記錄文件過大而占用過多的內存開銷。該步驟不會破壞整體數據流盤結構。
所述“數據流盤”結構是一種文件操作結構,即在循環之前放置打開/創建/替換文件程序,在循環內部放置讀出/寫入文件程序,在循環之后放置關閉/刪除文件程序。這種結構避免了重復開關文件的系統占用,節省了內存資源,提高了程序效率。
步驟五:當實時監控系統所需元素記錄完成后,篩選并刪除步驟四中各文件中的空白文件。
工作結束時,程序自動遍歷本次工作產生的所有歷史記錄文件,若為空文件,則刪除。這種設計剔除了無用的文件,清理了磁盤空間,也節省了后期用戶查找文件的時間。
下面通過一個實施例詳盡闡述。該實施例需要對雷達電源單元工作過程中的產生的有效通訊幀數據、用戶操作開關動作、通訊幀類型、各電源模塊上電時間以及系統日期時間進行記錄。
實施例中的記錄文件數據結構如圖1所示,圖1中每一行都是一條記錄,每條記錄都按順序對應了一個記錄號,每條記錄都由4個不同數據類型的元素組成,包括:
101:日期時間,字符串型,格式為“年月日時分秒”;
102:數據幀類型,8位無符號整數型,記錄的是從總線接收到的通訊幀的類型,包括工作狀態幀、故障數據幀、使用記錄數據幀等;
103:有效數據幀,8位無符號整型數組類型,59個元素,記錄的是電源單元的系統狀態和參數;
104:開關組1狀態,8位無符號整數型,記錄的是用戶界面上8個電源模塊開關按鈕的狀態;
105:開關組2狀態,8位無符號整數型,記錄的是用戶界面上8個系統工作開關按鈕的狀態;
106:模塊上電時間,16位無符號整型數組類型,8個元素,記錄的是8個電源模塊單次上電時間。
該記錄文件由于采用二進制格式保存數據,每條記錄占用磁盤空間僅為97字節,若采用文本格式(文本或電子表格)保存這些數據,最大占用空間達251字節。
圖2所示,是本發明專利基于LabVIEW的實時監控系統數據記錄方法實現流程圖。本實施例中,采用圖1所示“數據記錄文件”格式來存儲數據。本流程采用數據流盤結構來提高文件I/O的效率,引入事件驅動機制來提高程序的自適應能力及響應能力,具體流程包括如下操作:
201:實時監控系統開始工作后,首先在當前應用程序目錄下以“日期+時間+XXX數據記錄”為文件名創建并打開一個記錄文件;
202:按圖1所示格式定義記錄文件格式;
203:等待事件的發生,虛線框中所示為事件結構對應的內容,每個循環僅能觸發一個事件;
204:“接收到有效通訊數據幀”事件發生,該事件屬于用戶自定義事件,有效通訊數據幀是監控系統從通訊總線得到的,事件發生后程序立刻響應此事件,進入207;
205:“用戶改變界面開關狀態”事件發生,該事件屬于用戶界面事件,是用戶在操作用戶界面開關時產生的,事件發生后程序立刻響應此事件,進入步驟207;
206:“超時”事件發生,該事件是程序等待一定時間仍沒204、205事件發生時觸發的,事件發生后程序立刻響應此事件,進入步驟208;
207:按圖1定義的“數據記錄文件”格式組裝數據,并寫入記錄文件中;
208:當單個記錄文件中記錄數超過25000條或者記錄時長超過1小時,進入209,否則進入210;
209:程序自動保存并關閉當前記錄文件,并跳至201重新新建一記錄文件以保存后續記錄;
210:監控系統是否要結束工作,結束進入211,否則跳至203等待新的事件觸發;
211:保存并關閉當前記錄文件;
212:遍歷本次工作產生的所有歷史記錄文件,若無空文件則結束數據記錄流程,否則跳至步驟213;
213:刪除查找到的空歷史記錄文件,結束數據記錄流程。
采用本實施例所示過程,對一套雷達電源單元進行長達20天的連續數據記錄實驗,無數據丟失、阻塞、死機現象,操作用戶界面開關流暢,無遺漏用戶操作現象,記錄結束后共得到記錄文件987個,總大小2.21G,無空白文件。若采用以往文本數據記錄的方式進行該實驗,經常會出現卡死,數據丟失,用戶頻繁操作時遺漏用戶輸入的現象,記錄結束后共得到1300多條記錄,有許多空白記錄,總大小高達6.13G。因此采用本發明所述方法能夠極大地節省磁盤空間,且不會造成數據丟失,可靠性好,程序響應能力強。
圖3所示,是本發明專利基于LabVIEW的實時監控系統數據記錄方法對應的程序框圖。框圖中給出了該實施例的程序框架結構,具體為:
框架301:順序結構,使用該結構來搭建實施例的整體數據流盤結構。共分為三部分,第一部分實現記錄文件的創建/打開,第二部分實現記錄文件的寫入/再創建,第三部分實現記錄文件的關閉/刪除;
框架302:while循環結構,處于框架301的第二部分,在該循環中實現記錄文件的循環寫入和再創建;
框架303:事件結構,處于框架302中,用于檢測“接收到有效通訊數據幀”以及“用戶改變界面開關狀態”事件的發生;
框架304:條件結構,處于框架302中,用于判斷記錄數是否超過25000條或者記錄時長是否超過1小時;
框架305:for循環結構,處于框架301的第三部分,用于遍歷單次工作產生的所有歷史記錄文件,并刪除空記錄文件。
該實施例程序框架簡單、清晰,實現容易,且采用LabVIEW圖形化語言編程,程序可讀性、可移植性強。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。