• 
    

    
    

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

      兩級隊列調(diào)度通信模型設(shè)計及應(yīng)用

      2011-09-19 13:24:22胡浩民
      自動化儀表 2011年10期
      關(guān)鍵詞:實時性線程隊列

      胡浩民 張 菁

      (上海工程技術(shù)大學電子電氣工程學院,上海 201620)

      0 引言

      在太陽能光伏發(fā)電系統(tǒng)中,光伏電池(光電陣列)和蓄電池組成了系統(tǒng)的電源單元[1]。對光伏電池和蓄電池的各種參數(shù)(如電壓、電流、溫度等)進行實時采集與檢測,不僅有利于篩選性能優(yōu)良的電池,而且對系統(tǒng)的維護也非常重要。目前,數(shù)據(jù)采集技術(shù)已向著并行、高速、大量存儲、實時分析處理、集成化等方向發(fā)展[2]。對于批量電池的實時檢測,如果采用輪詢方式采集數(shù)據(jù),很難保證采樣周期的一致性。因此,構(gòu)建了一種星型拓撲的以太網(wǎng)采集環(huán)境,并設(shè)計了兩級隊列調(diào)度的數(shù)據(jù)通信模型。通過編程實現(xiàn)相應(yīng)算法,確保數(shù)據(jù)采集的實時性與采樣周期的一致性,這不僅使采集的數(shù)據(jù)有利于分析挖掘,而且該模式可應(yīng)用于物聯(lián)網(wǎng)中的信息交換。

      1 系統(tǒng)結(jié)構(gòu)

      目前,有不少電池巡檢儀和電池參數(shù)監(jiān)測儀提供了電池組實時在線巡回檢測的功能,包括對每節(jié)單體電池或整組電池的電壓、電流、溫度進行自動檢測等[3]。計算機通過RS-232或RS-485接口實現(xiàn)在線監(jiān)測電池狀態(tài)、顯示曲線及生成報表等。這既提高了電池的檢測效率和測試的安全性,又降低了維護人員的測試勞動強度。采用RS-232或RS-485接口雖然可以很容易地實現(xiàn)對外圍儀表設(shè)備的通信,但當通信結(jié)點比較多時,會受到接口數(shù)量的限制(如RS-232只提供點對點通信,RS-485支持多點通信,但一個網(wǎng)段最多連接32個結(jié)點[4])。為了實現(xiàn)對太陽能電池的批量檢測,設(shè)計了如圖1所示的系統(tǒng)結(jié)構(gòu)。

      圖1 系統(tǒng)結(jié)構(gòu)Fig.1 Structure of the system

      在圖1所示的太陽能電池檢測系統(tǒng)中,主控計算機與“以太網(wǎng)/串口適配器”通過RJ-45接口連接到交換機,形成星形的拓撲結(jié)構(gòu)。結(jié)點之間采用客戶服務(wù)器模式,通過TCP面向連接的可靠數(shù)據(jù)傳送進行通信[5]。數(shù)據(jù)采集采用了分布式的系統(tǒng)結(jié)構(gòu)。每個電池巡檢儀中的微處理器可實現(xiàn)對單組太陽能電池的檢測,采集的數(shù)據(jù)通過串口傳送到以太網(wǎng)/串口適配器,適配器再將轉(zhuǎn)換后的TCP數(shù)據(jù)報交付以太網(wǎng)。

      系統(tǒng)結(jié)構(gòu)只是提供了一種分布式的處理環(huán)境,采用怎樣的通信模型與算法,將會在很大程度上影響數(shù)據(jù)采集的實時性。

      2 調(diào)度通信模型設(shè)計

      2.1 設(shè)計原理

      通常實時數(shù)據(jù)采集系統(tǒng)要求定時準確,即采樣間隔具有較好的一致性[6]。在圖1所示的電池檢測系統(tǒng)中,主控計算機通過以太網(wǎng)/串口適配器將數(shù)據(jù)采集指令發(fā)送給電池巡檢儀,巡檢儀根據(jù)指令從電池采集電流、電壓、溫度等數(shù)據(jù),以太網(wǎng)/串口適配器再將巡檢儀采集的數(shù)據(jù)返回給主控計算機。當被測電池數(shù)量較多時,如果采用輪詢采集方式,采樣周期的一致性將很難得到保證。這是因為任一采集通道的阻塞都會干擾采樣周期,影響實時性,降低系統(tǒng)的效率。雖然采用多線程并發(fā)方式能隔離采集通道之間的干擾,但如果沒有合理的同步調(diào)度機制,也難以避免這一現(xiàn)象。兩級隊列調(diào)度通信模型描述了如何在確保線程在完成周期性采樣的前提下,實現(xiàn)對臨界資源的互斥與同步,達到實時采樣與可靠歸檔。根據(jù)程序并發(fā)執(zhí)行條件可知,若p1和p2這兩個程序能并發(fā)執(zhí)行,且具有可再現(xiàn)性,需要滿足以下Bernstein條件[7]:

      式中:R為“讀集”;W為“寫集”。設(shè)采集線程集合為S={thread1,thread2,…,threadn},由式(1)可知,對于?ti、?tj(ti∈S,tj∈S,ti≠tj),如有 R(p1)∩W(p2)∪R(p2)∩W(p1)∪W(p1)∩W(p2)={},則能使任意數(shù)據(jù)的采集通道均不會因競爭資源而阻塞。若為每個采集線程分配獨立的緩沖隊列存放數(shù)據(jù),即可滿足上述條件。

      采集線程除了實現(xiàn)數(shù)據(jù)采集功能(入隊操作)之外,還能實現(xiàn)數(shù)據(jù)歸檔功能(出隊操作)。設(shè)歸檔數(shù)據(jù)庫所支持的并發(fā)度為p,則當p<n時,并發(fā)度p成為采集線程集合的臨界資源,推導的Bernstein條件被破壞;當p≥n時,雖不會出現(xiàn)資源競爭而引起的阻塞,但普適性較差。這是因為p是由數(shù)據(jù)庫的性能所決定的,n隨著實際的應(yīng)用而變化,很可能會出現(xiàn)無法滿足這一條件的情況。因此,增加一個歸檔隊列,用于實現(xiàn)數(shù)據(jù)歸檔前先進入該緩沖隊列,再由m個歸檔線程完成存數(shù)據(jù)庫操作。因為數(shù)據(jù)庫系統(tǒng)常用基于鎖的并發(fā)控制,獲得一個鎖的開銷遠小于處理數(shù)據(jù)的開銷[8],所以m可取小于或大于p的值,且與n無關(guān)。

      由于歸檔隊列是臨界資源,因此,緩沖隊列與歸檔隊列之間的數(shù)據(jù)調(diào)度由“隊列線程”完成,否則會出現(xiàn)采集線程競爭歸檔隊列而引起的阻塞。此外,當緩沖隊列空時,隊列線程會阻塞,所以隊列線程個數(shù)需要n個,否則會引起其他緩沖隊列的溢出和采集線程的阻塞。兩級隊列調(diào)度通信模型如圖2所示。

      圖2 兩級隊列調(diào)度通信模型Fig.2 Two-stage queue scheduling communication model

      由以上模型可知,在緩沖隊列不滿的條件下,采集線程可以獲得最大程度的并發(fā),數(shù)據(jù)采集周期的一致性可以得到有效保證。隊列線程與采集線程分別操作的是out和in指向的存儲空間,因此對并發(fā)不產(chǎn)生影響,只有在隊列空和隊列滿的狀態(tài)下需要同步。隊列線程之間競爭的是歸檔隊列尾指針,雖然需要同步,但臨界區(qū)很小,所以對并發(fā)影響不大。需要指出的是,歸檔線程應(yīng)帶一個數(shù)據(jù)項的內(nèi)部存儲區(qū),當某一線程獲得隊列頭時,將隊列頭指針指向的數(shù)據(jù)項復制到自身的存儲區(qū),然后立即釋放隊列頭臨界資源,再進行寫數(shù)據(jù)庫操作。試驗表明,這有利于提高歸檔速度。

      2.2 算法描述

      信號量提供了一種方便有效的進程同步處理機制,但由于大量的同步操作分散在每個要訪問臨界資源的進程中,不僅給系統(tǒng)的管理帶來麻煩,還會由于使用不當而導致一些難以檢測的時序錯誤[9]。而管程定義了一個數(shù)據(jù)結(jié)構(gòu)和能為并發(fā)進程所執(zhí)行在該數(shù)據(jù)結(jié)構(gòu)上的一組操作,這組操作能同步進程和改變管程中的數(shù)據(jù)。鑒于這一特征,定義了類似管程功能的兩個類(CMonitorQ1和CMonitorQ2)來實現(xiàn)三種線程對兩級隊列的同步與互斥。設(shè)緩沖隊列為一級隊列,歸檔隊列為二級隊列,模型對應(yīng)的算法描述如下。

      每路數(shù)據(jù)采集通道均需要一個CMonitorQ1對象。該對象用于采集線程(調(diào)用putQ1Data)和隊列線程(調(diào)用getQ1Data)對一級緩沖隊列buffer的同步操作。由于兩類線程各只有一個,且操作的分別是隊列頭和隊列尾,因此在隊列空或滿時同步即可。另外,getQ1Data在對緩沖隊列空信號量進行V操作之前必須將數(shù)據(jù)存入臨時空間,而不能只保存下標,否則就會出現(xiàn)數(shù)據(jù)被覆蓋的可能。

      第二級隊列的同步與互斥操作由CMonitorQ2對象實現(xiàn)。該對象只需要一個,隊列線程調(diào)用putQ2Data,歸檔線程調(diào)用getQ2Data。由于有多個線程競爭隊列頭與隊列尾,所以引入兩個互斥量mutexHead和mutexRear,用于互斥操作。為防止死鎖的出現(xiàn),以下的P、V操作次序不能交換。同樣地,getQ2Data中對queueEmpty的V操作之前,歸檔線程需要把數(shù)據(jù)復制到自身的臨時空間。

      以上列出了兩個類的主要成員與方法,其中對信號量和互斥量的P操作可用WaitForSingleObject實現(xiàn);V操作則分別用ReleaseSemaphore和ReleaseSemaphore完成[10]。因為所有的同步與互斥操作全部集中到CMonitorQ1和CMonitorQ2對象,所以有效地控制了三類線程的復雜度。以隊列線程的Execute方法為例,描述如下。

      在以上算法中,getQ1Data()在一級緩沖隊列空時阻塞;putQ2Data()在二級歸檔隊列滿時阻塞。雖然二級歸檔隊列是多個歸檔線程競爭的臨界資源,但因為臨界區(qū)很小,且有一級緩沖隊列為采集線程服務(wù),所以系統(tǒng)的實時性與采集周期可以得到有效保證。

      3 應(yīng)用實例

      兩級隊列調(diào)度通信模型已應(yīng)用于太陽能電池的巡檢。這一系統(tǒng)可對太陽能電池進行批量檢測與監(jiān)控,掌握電池組的運行狀態(tài),實時檢測記錄并顯示各單體電池或電池組電壓、電流、電池溫度等參數(shù),以及時發(fā)現(xiàn)劣質(zhì)電池,保證系統(tǒng)正常可靠、無故障運行。采集的數(shù)據(jù)在歸檔的同時,還可以實時、直觀地用趨勢圖顯示。采集周期一致的歸檔數(shù)據(jù)為后續(xù)的數(shù)據(jù)分析、處理與挖掘提供了有利條件。

      4 結(jié)束語

      兩級隊列調(diào)度通信模型是在批量電池巡檢中,為防止局部模塊異常對數(shù)據(jù)采集周期一致性的影響而提出的。該模型通過三類線程調(diào)度和兩級緩沖隊列隔離的方法,有效地確保了局部采集模塊的阻塞不會成為采樣實時性的瓶頸。實踐表明,該模型有效實現(xiàn)了數(shù)據(jù)采集的實時性、采樣間隔的一致性、歸檔過程的可靠性以及歸檔模塊對不同數(shù)據(jù)庫并發(fā)功能的支持。

      [1]董宏,張飄.通信用光伏與風力發(fā)電系統(tǒng)[M].北京:人民郵電出版社,2008:20 -23.

      [2]徐德炳,徐興.數(shù)據(jù)采集與總線技術(shù)的發(fā)展[J].測控技術(shù),2002,21(6):1 -6.

      [3]宋森濤,楊運國.用于智能巡檢儀的數(shù)字濾波技術(shù)研究[J].華東電力,2005,33(9):47 -49.

      [4]王華忠.監(jiān)控與數(shù)據(jù)采集(SCADA)系統(tǒng)及其應(yīng)用[M].北京:電子工業(yè)出版社,2010:27 -28.

      [5]Andrew S,Tanenbaum.Computer networks[M].Fourth edition.Pearson Education,2004:454 -457.

      [6]鄭存紅,胡榮強,趙瑞峰.用Visual C++實現(xiàn)實時數(shù)據(jù)采集[J].計算機應(yīng)用研究,2002(4):103 -104.

      [7]湯子瀛,哲鳳屏,湯小丹.計算機操作系統(tǒng)[M].西安:西安電子科技大學出版社,2001:38 -39.

      [8]王振明.SCADA監(jiān)控與數(shù)據(jù)采集軟件系統(tǒng)的設(shè)計與開發(fā)[M].北京:機械工業(yè)出版社,2009:51 -52.

      [9]Abraham S,Peter B G,Greg G.Operating system concepts[M].Seventh edition.Wiley,2007:209 -210.

      [10]Jeffrey M R,Christophe N.Windows via C/C++[M].Microsoft Press,2008:246 -269.

      猜你喜歡
      實時性線程隊列
      基于規(guī)則實時性的端云動態(tài)分配方法研究
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      在隊列里
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
      豐田加速駛?cè)胱詣玉{駛隊列
      航空電子AFDX與AVB傳輸實時性抗干擾對比
      淺談linux多線程協(xié)作
      一種車載Profibus總線系統(tǒng)的實時性分析
      Linux線程實現(xiàn)技術(shù)研究
      汶川县| 桂东县| 西和县| 喀喇| 湘潭县| 汽车| 雅江县| 信阳市| 峨眉山市| 庆元县| 克山县| 武功县| 启东市| 略阳县| 五常市| 黔西县| 万全县| 额敏县| 迁安市| 独山县| 景宁| 襄垣县| 云霄县| 陆川县| 竹溪县| 阳谷县| 如皋市| 米脂县| 和硕县| 正定县| 绥化市| 鄱阳县| 秭归县| 桦川县| 七台河市| 永修县| 铁力市| 扶余县| 香港 | 江阴市| 桑日县|