• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      多線程技術(shù)在1000MW水輪發(fā)電機推力軸承試驗上的應用

      2011-07-02 03:29:30李淑鈺祖宇聰
      大電機技術(shù) 2011年6期
      關(guān)鍵詞:線程測控軸承

      孫 凱,李淑鈺,祖宇聰

      (1.哈爾濱大電機研究所,哈爾濱 150040;2.東北林業(yè)大學,哈爾濱 150040)

      1 引言

      對于大型發(fā)電機,推力軸承的設(shè)計和制造技術(shù)是非常重要的。進行推力軸承試驗是優(yōu)化大型水輪發(fā)電機組推力軸承的結(jié)構(gòu)、參數(shù),提高其運行可靠性的關(guān)鍵研究工作。

      為了能夠準確可靠的獲得推力軸承試驗的各項數(shù)據(jù),采用了先進的微機測控系統(tǒng),使用交互式編程語言LabWindows/CVI作為平臺來進行測控軟件的開發(fā),并在軟件開發(fā)過程中采用了多線程的編程技術(shù)。

      2 推力軸承試驗中的測控系統(tǒng)

      在1000MW水輪發(fā)電機推力軸承試驗中,測控系統(tǒng)以先進的工業(yè)控制計算機為核心,其硬件系統(tǒng)由多種傳感器、信號調(diào)理模塊、接口轉(zhuǎn)換模塊、多功能數(shù)據(jù)采集卡、VXI總線數(shù)采系統(tǒng)、單片機、巡檢儀等多種硬件系統(tǒng)組成,需要測試的數(shù)據(jù)點包括轉(zhuǎn)速、載荷、溫度、壓力、位移等多達254個,為了及時準確的測得數(shù)據(jù),硬件系統(tǒng)中采用了多種測試設(shè)備,設(shè)備與計算機之間采用了不同的通訊方式,這些通訊方式包括計算機與VXI數(shù)采系統(tǒng)之間的MXI-2、RS-232、無線485、以太網(wǎng)等技術(shù)(見圖1)。

      軟件系統(tǒng)以 LabWindows/CVI為開發(fā)平臺,為了合理利用硬件資源,安全可靠的進行測試,軟件系統(tǒng)中多處使用了多線程技術(shù)。

      圖1 硬件系統(tǒng)基本組成框圖

      3 多線程技術(shù)

      多線程技術(shù)是指計算機的操作系統(tǒng)在同一時間內(nèi)可以允許多個程序同時執(zhí)行的能力,也就是讓CPU同時執(zhí)行多個線程。

      3.1 線程

      進程通常被定義為一個正在運行的程序的實例,若要使進程完成某項操作,它必須擁有一個在它的環(huán)境中運行的線程,線程是進程內(nèi)部的可獨立執(zhí)行的單元,負責執(zhí)行包含在進程的地址空間中的代碼,是操作系統(tǒng)對系統(tǒng)資源的調(diào)度單位。

      3.2 CPU如何完成多線程任務

      目前主流的Windows操作系統(tǒng)都是基于多任務機制的,即可同時運行多個應用程序,這需要有多個線程同時執(zhí)行代碼,操作系統(tǒng)會為每一個線程安排一定的CPU時間,稱為時間片,讓每個線程只在自己時間片內(nèi)運行,時間片結(jié)束之后中斷該線程的運行,啟動另外的線程執(zhí)行,這被稱為線程切換。操作系統(tǒng)通過循環(huán)方式為線程提供時間片,采用時間片輪換的方式來執(zhí)行多個任務。

      多線程技術(shù)的優(yōu)勢在于將任務分解為多個線程,可以在主線程外產(chǎn)生一個或幾個輔助線程,每個線程獨立的執(zhí)行自己的代碼,用于完成如數(shù)據(jù)采集、網(wǎng)絡(luò)訪問、數(shù)據(jù)存儲等后臺工作,這些線程可以共享進程中的數(shù)據(jù)。

      由上述介紹可以知道,對于單個CPU計算機來說,宏觀上可以實現(xiàn)多線程并行運行,進而提高CPU的工作效率,對于多CPU的計算機,可以將不同的任務分配給不同CPU內(nèi)核來執(zhí)行,從而可以真正達到多個線程同時運行。這種多線程機制為單個計算機同時管理多個外圍設(shè)備提供了一種很好的解決方案。

      3.3 LabWindows/CVI中多線程程序的實現(xiàn)方式

      LabWindows/CVI是美國 NI公司開發(fā)的面向計算機測控領(lǐng)域的軟件開發(fā)平臺,它以ANSI C為核心,采用交互式編程方法,提供了大量的功能函數(shù)。

      該軟件提供了四種多線程機制的實現(xiàn)方式:線程池方式、異步定時器方式、Timer控件定時器方式和使用Windows SDK函數(shù)的方式。

      (1)線程池方式

      線程池可以理解為線程的容器,程序開發(fā)人員可以使用CmtNewThreadPool( )函數(shù)來創(chuàng)建新的線程池,通過調(diào)用線程調(diào)度函數(shù)將需要執(zhí)行的函數(shù)傳遞到線程池,這個被傳遞的函數(shù)稱為線程函數(shù),線程函數(shù)可以起任何名字,并且函數(shù)原型也沒有限制。

      在線程結(jié)束時,必須調(diào)用線程注銷函數(shù)來釋放線程池的資源,否則系統(tǒng)資源會逐漸消耗殆盡。

      (2)異步定時器方式

      此方式適用于等時間間隔執(zhí)行任務,異步定時器是利用Windows多媒體定時器在指定的時間間隔點調(diào)用線程函數(shù),此種方式下需要調(diào)用工具庫中的函數(shù)以創(chuàng)建異步定時器,函數(shù)原型如下:

      int CVICALLBACK NewAsyncTimer(double

      interval,int count, int initialState,void*callbackFunction,void *callbackDat);異步定時器創(chuàng)建好以后把需要執(zhí)行的線程函數(shù)傳遞給NewAsync Timer函數(shù),并設(shè)定執(zhí)行的時間間隔。異步定時器的時間間隔精確,可以用來對一些采集設(shè)備進行精確的軟件定時。

      (3)timer定時器方式

      這種多線程實現(xiàn)方式是調(diào)用一個timer定時器,它是 LabWindows/CVI提供的一個控件,能夠等間隔循環(huán)啟動它的回調(diào)函數(shù),獨立于主線程之外,其執(zhí)行效果與異步定時器接近,但是timer控件執(zhí)行線程的優(yōu)先級低,受主線程的影響嚴重,不適合做時間間隔要求非常嚴格的工作,因此這種多線程實現(xiàn)方式常常被程序開發(fā)者忽略。

      (4)使用Windows SDK中提供的函數(shù)

      Windows SDK提供了進行多線程編程的相關(guān)函數(shù),這些函數(shù)定義在winbase.h文件中,導入庫為kernel.lib文件,在使用的時候需要在源文件中添加windows.h文件,編程時調(diào)用CreateThread函數(shù)可以創(chuàng)建新的線程,函數(shù)SuspendThread和函數(shù)ResumeThread分別用來暫停和繼續(xù)執(zhí)行獨立線程,函數(shù)TeminateThread用來終止獨立的線程。

      此方式下,有些函數(shù)在windows SDK和LabWindows/CVI中都有定義,這些函數(shù)使用不當會出現(xiàn)編譯錯誤,因此要注意使用正確的頭文件。

      3.4 線程的優(yōu)先級

      線程的優(yōu)先級會影響線程從CPU獲得時間的長短,系統(tǒng)不會允許優(yōu)先級低的線程先執(zhí)行,因此在程序設(shè)計時,應該盡量將不重要的任務設(shè)成較低的優(yōu)先級。

      設(shè)置線程優(yōu)先級的函數(shù)如下:

      BOOL SetThreadPriority(HANDLE hThread,int nPriority)

      4 多線程技術(shù)在測控系統(tǒng)中的應用方案

      在1000MW水輪發(fā)電機推力軸承測控系統(tǒng)中,由計算機發(fā)送采集指令,送入VXI數(shù)據(jù)采集系統(tǒng)、單片機、巡檢儀等設(shè)備,測量結(jié)果返回到計算機中,然后進行數(shù)據(jù)顯示和保存。需要實現(xiàn)的功能有:

      (1)系統(tǒng)時間顯示;

      (2)VXI數(shù)采系統(tǒng)對轉(zhuǎn)速、載荷的監(jiān)測;

      (3)VXI數(shù)采系統(tǒng)測量溫度數(shù)據(jù);

      (4)數(shù)據(jù)采集卡對位移的測量;

      (5)采用無線485通訊對溫度巡檢儀和單片機采集系統(tǒng)進行控制;

      (6)RS-232中斷程序,用于位移測試儀;

      (7)TCP/IP通訊用于下位機數(shù)據(jù)顯示。

      在測控系統(tǒng)軟件的開發(fā)調(diào)試過程中,采用了多線程的編程方案。本系統(tǒng)中使用了線程池方式來實現(xiàn)多線程的程序開發(fā)。經(jīng)過對系統(tǒng)任務的分析,考慮了實際應用的過程,既要保證得到真實可靠的測試數(shù)據(jù),又要保證系統(tǒng)的安全,把測控軟件所要完成的功能劃分給不同的線程函數(shù)。在創(chuàng)建好的線程池內(nèi)調(diào)用這些線程函數(shù)。

      (1)系統(tǒng)時間顯示線程,在主函數(shù)中創(chuàng)建一個只有一個線程的線程池,在線城池中只放一個線程函數(shù),循環(huán)進行時間調(diào)用與顯示。雖然線程池中只有一個線程,但這是獨立于主函數(shù)進程之外的,不影響主函數(shù)的運行,不會造成程序失去響應的問題。

      (2)轉(zhuǎn)速、載荷的監(jiān)測及溫度數(shù)據(jù)采集線程,創(chuàng)建一個新線程池,放入兩個線程函數(shù),一個用來測量轉(zhuǎn)速和載荷,另一個用來測量溫度數(shù)據(jù),由于此任務分配給VXI數(shù)采系統(tǒng),該設(shè)備中的選用的模塊不支持并行采集,所以為了完成不同的測量任務,這里設(shè)置了硬件占用和硬件釋放標志。

      (3)創(chuàng)建第三個線程池,將PCI數(shù)據(jù)采集卡測量程序、無線485通信程序、RS-232中斷程序、以太網(wǎng)通信程序這四個函數(shù)放在這個線程池中,這四個函數(shù)分別使用不同的設(shè)備,相互之間不會干擾,所以在同一個線程池內(nèi)不會影響程序運行。

      至此,軟件系統(tǒng)的主要測試任務被分配到了多個線程中,在主函數(shù)中對這些線程函數(shù)進行啟動和終止等控制,并在用戶界面上設(shè)置相應的入口。用多線程的編程方案開發(fā)測控系統(tǒng)軟件,提高了系統(tǒng)并行處理問題的能力。

      將任務分配給不同線程后,提高了硬件系統(tǒng)的利用效率,但是也存在風險,因為在不同的線程內(nèi),會出現(xiàn)兩個線程同時訪問數(shù)據(jù)的情況,甚至會出現(xiàn)數(shù)據(jù)訪問時被改寫的問題,因此必須保護全局變量、靜態(tài)局部變量和動態(tài)分配的變量,否則可能會造成邏輯錯誤。LabWindows/CVI通用庫提供了三種不同的機制來保護數(shù)據(jù):線程鎖,線程變量和線程隊列。本系統(tǒng)軟件采用了線程隊列機制,線程隊列函數(shù)允許線程之間安全地傳遞數(shù)據(jù),保證讀數(shù)據(jù)和寫數(shù)據(jù)線程不會彼此阻塞。

      另外需要注意的是,在線程函數(shù)執(zhí)行完成后要釋放其所占用的硬件資源,系統(tǒng)運行結(jié)束前要關(guān)閉線程池,否則會導致操作系統(tǒng)資源消耗過大。

      5 應用該技術(shù)后的系統(tǒng)測試結(jié)果

      使用多線程技術(shù)開發(fā)的測控系統(tǒng)軟件在白鶴灘1000MW 水輪發(fā)電機推力軸承試驗中成功地完成了塑料瓦、鎢金瓦的試驗,為百萬千瓦機組推力軸承研究提供了大量真實可靠的數(shù)據(jù),圓滿地完成了對各種工況的控制和大量的數(shù)據(jù)采集任務。

      在以往的單線程測控系統(tǒng)中,所有的測控任務都是按順序執(zhí)行的,在數(shù)據(jù)采集的時候,每一項功能都需要一定的執(zhí)行時間,這樣完成所有項目的采集需要的時間比較長,當某一任務無法完成時,測控軟件會不停的等待,造成軟件無法結(jié)束的問題。另外,在試驗過程中,順序執(zhí)行的任務結(jié)束前,軟件無法響應操作者的任何指令,這是嚴重的安全隱患。推力軸承試驗測控系統(tǒng)中使用了多線程的編程技術(shù)以后,解決了上述問題,溫度采集、壓力采集、油膜厚度采集等都是相互獨立的,互不干涉,軟件可以隨時對操作者的指令做出響應,從而保證了試驗臺的安全運行。

      通過使用多線程的編程方案,測控軟件的程序結(jié)構(gòu)更加合理,由于多個線程同時執(zhí)行,大大縮短了程序的執(zhí)行時間,多臺設(shè)備同時運行,一個測試循環(huán)時間由5分鐘縮短到了3分鐘,充分利用了硬件資源,提高了試驗的效率。

      6 結(jié)束語

      采用多線程技術(shù)進行測控軟件開發(fā),能夠提高CPU的工作效率,充分利用系統(tǒng)資源,進而提高了程序的實時性,增強了CPU對外圍設(shè)備的控制能力,使測控系統(tǒng)軟件的工作效率大大提高。目前,多核心處理器逐漸普及,從而使得測控軟件能夠真正做到多線程同時執(zhí)行,該技術(shù)也日趨成熟。多線程技術(shù)的應用,不僅縮短了測控軟件的開發(fā)周期,也大大提高了系統(tǒng)的可靠性,為科學試驗提供大量真實可靠的數(shù)據(jù)。

      [1](美)Jeffrey Richter .Windows核心編程.北京:機械工業(yè)出版社, 2000.

      [2]宋宇峰.LabWindows/CVI逐步深入與開發(fā)實例.北京:機械工業(yè)出版社, 2003.

      [3]白鵬.虛擬儀器編程語言 LabWindows/CVI教程.北京: 電子工業(yè)出版社, 2001.

      猜你喜歡
      線程測控軸承
      軸承知識
      哈爾濱軸承(2022年2期)2022-07-22 06:39:32
      軸承知識
      哈爾濱軸承(2022年1期)2022-05-23 13:13:24
      軸承知識
      哈爾濱軸承(2021年2期)2021-08-12 06:11:46
      軸承知識
      哈爾濱軸承(2021年1期)2021-07-21 05:43:16
      《測控電路》實踐教學改革探討
      電子測試(2018年22期)2018-12-19 05:12:58
      淺談linux多線程協(xié)作
      基于現(xiàn)代測控技術(shù)及其應用分析
      向著新航程進發(fā)——遠望7號測控船首航記錄
      太空探索(2016年12期)2016-07-18 11:13:43
      基于USB2.0協(xié)議的通用測控通信接口設(shè)計
      Linux線程實現(xiàn)技術(shù)研究
      404 Not Found

      404 Not Found


      nginx
      泗阳县| 兴业县| 湾仔区| 高淳县| 通山县| 余庆县| 沾化县| 宁南县| 闽侯县| 华安县| 莱芜市| 绥宁县| 桂阳县| 石阡县| 金湖县| 呼伦贝尔市| 葫芦岛市| 丰宁| 容城县| 会东县| 萝北县| 新巴尔虎右旗| 沐川县| 顺昌县| 安仁县| 寻甸| 资中县| 德格县| 巴彦淖尔市| 巧家县| 尼玛县| 无锡市| 桐梓县| 阿拉善盟| 连江县| 通州区| 会泽县| 连平县| 焉耆| 岱山县| 丹江口市|