應用領域:現(xiàn)場測試
挑戰(zhàn):利用LabVIEW 開發(fā)功能完善的鋼軌頂面短波不平順自動檢測
系統(tǒng),填補中國該技術(shù)領域的空白。
應用方案:用NI 公司的多功能數(shù)據(jù)采集卡和LabVIEW 平臺開發(fā)一個功能完善的、先進的檢測系統(tǒng)。
使用的產(chǎn)品:LabVIEW;PCI-6035E、6711E、PCI-MIO-16E-
4 等數(shù)據(jù)采集卡
介紹
鋼軌頂面短波不平順是產(chǎn)生噪音和引起火車輪軌相互作用力變化的主要原因之一。隨著鐵路運輸不斷向高速、重載方向發(fā)展,鋼軌頂面短波不平順程度日益嚴重,這不僅加劇了軌道結(jié)構(gòu)部件的傷損和幾何尺寸的超限,而且影響了鋼軌的使用壽命,甚至危及行車安全。目前,中國檢測鋼軌頂面短波不平順的現(xiàn)有方法僅是靜態(tài)逐點手工測量,費時、費力、效率很低。研制和開發(fā)新型鋼軌頂面短波不平順檢測系統(tǒng),能夠為鋼軌打磨計劃的制定提供科學依據(jù), 從而指導對鋼軌的打磨以延長其使用壽命,提高旅客乘車舒適度,保障行車安全,可見其經(jīng)濟和社會效益都十分可觀。
本文介紹了基于LabVIEW 的鋼軌頂面短波不平順檢測系統(tǒng)(以下簡稱“檢測系統(tǒng)”)的開發(fā),并就開發(fā)過程中的一些問題進行討論。
檢測系統(tǒng)的功能及特點
檢測系統(tǒng)分為:在線檢測子系統(tǒng)與事后回放子系統(tǒng)兩部分。用LabVIEW 開發(fā)的兩個子系統(tǒng)的前面板分別如圖1 和圖2 所示。
[align=center]
圖1 在線檢測子系統(tǒng)前面板
圖2 事后回放子系統(tǒng)前面板[/align]
在線檢測子系統(tǒng)通過外脈沖觸發(fā)采樣,同時測量外脈沖時間間隔,由時間間隔計算出對應的火車速度。在連續(xù)采集數(shù)據(jù)的同時,系統(tǒng)還將對采集到的數(shù)據(jù)進行必要的分析處理、按一定格式存儲并動態(tài)地顯示原始數(shù)據(jù)和處理結(jié)果的波形;處理完的數(shù)據(jù)及驅(qū)動走紙儀的信號經(jīng)輸出卡輸送給走紙儀,這樣可以在現(xiàn)場得到所需要的大部分檢測結(jié)果。
事后回放子系統(tǒng)則通過對現(xiàn)場檢測得到的原始數(shù)據(jù)文件進行數(shù)據(jù)索引和調(diào)用,實現(xiàn)與在線檢測子系統(tǒng)相仿的處理功能,進行在線檢測過程的信息回放。此外,該子系統(tǒng)還可以對檢測結(jié)果做出評估,并以報表的形式顯示和打印結(jié)果,十分便于檢測人員對各段鋼軌頂面不平順程度具體情況的了解。
本系統(tǒng)最明顯的先進技術(shù)特點是集成化,數(shù)據(jù)的采集、分析處理、保存、顯示、輸出及畫圖均在一個系統(tǒng)中實現(xiàn)完成,克服了老式檢測系統(tǒng)的數(shù)據(jù)采
集和分析處理不同步等弱點,基本實現(xiàn)了實時在線檢測。
利用NI 公司的LabVIEW開發(fā)此系統(tǒng),不僅可以很方便地實現(xiàn)復雜的數(shù)據(jù)處理功能,而且用戶界面也可以做得十分美觀、友好和具有個性化特點,其模塊化的設計,又大大方便了程序的修改和維護。
檢測系統(tǒng)的實現(xiàn)
作為一種圖形化程序設計語言,NI 公司的LabVIEW 帶有豐富的VI 庫,并且調(diào)用也十分方便;此外,其豐富的應用舉例子程序和完善的在線幫助功能,也會給程序設計者帶來極大的方便。
1. 多任務間的配合
本檢測系統(tǒng)設計的難點在于:由于裝設在列車上,在線檢測子系統(tǒng)要在列車行駛過程中保持長時間穩(wěn)定運行,并且在連續(xù)采集數(shù)據(jù)的同時還要對各項數(shù)據(jù)進行處理、顯示并驅(qū)動走紙儀完成畫圖。在整個在線檢測過程中,要保證數(shù)據(jù)不會丟失,就要做到數(shù)據(jù)的采集、處理、顯示和輸出各個環(huán)節(jié)的緊密配合,如果其中的處理或輸出功能模塊占用時間太多,采集的數(shù)據(jù)將來不及被有序、完全地讀取,從而造成緩沖區(qū)溢出致使有用數(shù)據(jù)丟失?;谝陨峡紤],我們在程序設計中充分利用了LabVIEW 的多任務運行機制,把數(shù)據(jù)的采集、處理及輸出分別作為獨立的子任務,調(diào)用函數(shù)庫中的事件(occurrence)函數(shù)和時間等待(wait on occurrence)函數(shù)來實現(xiàn)多任務之間合理的配合。我們研制出的檢測系統(tǒng)的在線檢測子系統(tǒng)主程序的流程圖如圖3 所示。
[align=center]
圖3 在線檢測子系統(tǒng)主程序流程圖[/align]
2. 數(shù)據(jù)傳送方式及緩沖區(qū)
一般來說,采集功能單元傳送數(shù)據(jù)所采用的方式有:定時、查詢(Polling Mode)、中斷(Interrupt Mode)以及直接存儲器存?。―MA Mode)等。前三種方式都要占用比較多的CPU 時間,而且傳送速度也沒有DMA 方式快。由于本檢測系統(tǒng)采集的數(shù)據(jù)量大,持續(xù)時間長,一般可能要幾個甚至十幾個小時,并且整個檢測系統(tǒng)占用CPU 資源比較多,因而我們在程序設計中采用DMA 方式傳送數(shù)據(jù)。一般的數(shù)據(jù)采集卡都支持這種數(shù)據(jù)傳送方式,但不同數(shù)據(jù)采集卡支持的DMA通道數(shù)目是不同的,有的可能只有一個DMA 通道。本系統(tǒng)采集數(shù)據(jù)和測量時間間隔都要用到DMA,因此至少要有兩個DMA 通道可供利用。
為了保證在長時間連續(xù)采集數(shù)據(jù)的同時進行數(shù)據(jù)的處理,并給數(shù)據(jù)處理留下一定的緩沖時間,必須開辟一塊循環(huán)緩沖區(qū)(circular
buffer)存儲采集到的數(shù)據(jù)。這樣,在采集數(shù)據(jù)的同時就不會耽誤對數(shù)據(jù)的及時處理。當緩沖區(qū)放滿數(shù)據(jù)時,它會從緩沖區(qū)首端起存儲新的數(shù)據(jù),因而要求讀取數(shù)據(jù)的速度要足夠快,否則也會造成數(shù)據(jù)丟失。當讀取數(shù)據(jù)時,如果緩沖區(qū)中的數(shù)據(jù)還沒達到所需要的讀取量,程序會等待其到達后再讀取。
3. 程序的優(yōu)化
為減少程序占用系統(tǒng)資源,提高系統(tǒng)執(zhí)行速度,我們在程序設計中盡可能采用子VI,充分利用LabVIEW 便于構(gòu)建模塊化系統(tǒng)的
特點,實現(xiàn)了模塊化的程序設計。LabVIEW提供有豐富的數(shù)據(jù)結(jié)構(gòu),包括數(shù)組、字符串、數(shù)據(jù)群(cluster),以及由它們構(gòu)成的更復雜的數(shù)據(jù)結(jié)構(gòu)。但從算法的執(zhí)行效率以及流程圖的可視化方面考慮,我們在程序設計中盡量少采用復雜的數(shù)據(jù)結(jié)構(gòu)。
結(jié)論及體會
目前,我們承擔的鋼軌頂面短波不平順檢測系統(tǒng)的開發(fā)已基本完成,并已到現(xiàn)場進行了多次的驗證性測試。相信經(jīng)過進一步完善,這個用LabVIEW 研制開發(fā)的鋼軌頂面短波不平順檢測系統(tǒng)將填補國內(nèi)有關短波不平順自動檢測系統(tǒng)方面的空白。
初學LabVIEW 時,雖然比較容易入門,但在具體應用中還是會
碰到程序設計上各種各樣的問題。作為一種圖形化的快速編程語言,對許多程序設計者來說,LabVIEW多方面的優(yōu)點還遠未得到充分利用。
以本文作者的親身體會,LabVIEW 提供了豐富的應用舉例子程序,其中許多可以直接利用或稍加修改就可以用到自己的程序中,比如DAQ 的很多應用在例子程序中都可以找到。因此建議多學習一下LabVIEW 自帶的應用舉例子程序,這對程序設計者一定會有
很大的幫助。
LabVIEW 的多任務并行運行機制是一般傳統(tǒng)語言所不具備的,
應充分利用這一優(yōu)勢,方便、靈活地實現(xiàn)多任務調(diào)度,快速、高效地構(gòu)造較為復雜的多任務檢測系統(tǒng)。
LabVIEW 的多任務運行機制具有協(xié)作式(cooperative)而非搶占式(preemptive)的特點,系統(tǒng)不支持中斷,因此無法實現(xiàn)嚴格意義上的任務定時,在實時性上有一定的局限性,即它只適用于對實時性要求不很高的場合。如果對實時性要求很高,就要選用其他能滿足實時性要求的開發(fā)系統(tǒng),例如實時LabVIEW 系統(tǒng)(LabVIEW RT 系列)。但是,實時性是一個相對的概念,對于一些實時性要求不是很高的場合, 采用LabVIEW開發(fā)平臺,通過對各任務的合理調(diào)度,便可以很好地滿足要求,沒必要選用價格相對較高的實時開發(fā)系統(tǒng)。
從程序開發(fā)方面考慮,如果選用LabVIEW 作為軟件開發(fā)平臺,建議最好采用NI 公司的板卡,這樣可以使程序設計更簡單、更方便,從而縮短程序開發(fā)周期。