999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多線程技術的測控系統軟件設計

2016-09-09 02:51:32宋國堃趙世平
電子設計工程 2016年16期
關鍵詞:系統

楊 珂,宋國堃,趙世平

(四川大學 制造科學與工程學院,四川 成都 610065)

基于多線程技術的測控系統軟件設計

楊 珂,宋國堃,趙世平

(四川大學 制造科學與工程學院,四川 成都610065)

根據某系統軟件設計的需要,開發了基于多線程技術的測控系統軟件。本文中所介紹的軟件是通過微軟.Net平臺下的C#語言實現的。該語言平臺提供強大的線程模型,完整的線程接口能夠滿足對線程操作的需要。軟件核心采用多線程技術,將數據采集、試驗控制、UI交互以及安全監測等功能模塊放在不同線程內執行。線程同步技術保證了線程之間對象高速傳輸的準確性。該軟件設計方式不僅大幅度提高了軟件的穩定性和可靠性,還充分利用了計算機的系統資源從而加快系統工作效率。

多線程;線程同步;測控系統;C#

文中所介紹的系統是集機械、液壓、電氣以及計算機于一體的工業測控系統。本系統不僅要滿足對各部分模擬數字信號采集與輸出的需要,同時要實現系統復雜的試驗控制功能。系統軟件要完成數據采集、試驗控制、UI人機交互以及安全監測等功能。傳統的測控軟件大多使用面向過程的編程模式,根據系統任務的需要自上至下的執行程序[1]。該編程模式顯然無法滿足本系統多任務同步執行以及高速數據采集控制的需要。

根據系統軟件的功能需要,采用多線程作為軟件的核心技術。本軟件使用微軟Visual Studio 2013平臺下的C#語言進行開發。該平臺的.Net Framework 4.5托管編碼環境提供完整并且功能強大的線程模型[2]。

依據該模型將整個程序分成若干功能模塊,把每個功能模塊放在不同的線程內執行。該方式依托多線程技術旨在把軟件功能模塊化,從而簡化了軟件的框架結構,從根本上實現系統的功能要求。

1 多線程技術

1.1多線程介紹

多線程技術就是允許一個復雜的應用程序能夠同時執行若干個任務。這里所說的“同時”在計算機發展的不同階段代表著不同的含義。在計算機內核上只存在一個CPU時,多任務只能是并發執行即多個任務在相同的時間間隔內執行。這里的時間間隔一般由操作系統來分配。由于計算機的執行速度很快,從邏輯上來看多任務是在同時執行。然而當計算機進入多核時代以后,一個CPU擁有多個內核,這里的多任務就是并行執行,每個任務同時在不同的計算機內核上執行,從而實現了真正意義上的同時執行。單核時代使用多線程或者單線程來處理多個任務時,實際上表現出來的處理效果并沒有太大差異。然而由于多線程之間任務的相互切換反而會耗費大量的系統資源,從而會使得多線程的執行效率更低[3]。相比之下,在多核計算機上使用多線程可以充分利用計算機的各個內核的硬件資源,遠遠超過單線程的執行效率。因此,本文所介紹的多線程都是在多核硬件平臺下的多線程,實現軟件各線程真正意義的并行執行[4]。

1.2線程基本操作和線程同步

.Net平臺的C#語言提供了操作線程的豐富接口,其中包括操作線程的方法,例如線程的開啟、阻塞、銷毀、優先級設置等;也包括獲取線程的各種屬性,例如獲取線程的名稱、標識符、當前執行狀態等信息。在應用程序中,對線程的常用操作包含以下步驟 (偽代碼示例):1)Thread myThread=new Thread()實例化一個線程對象myThread;2)myThead.Start (myMethod())開啟一個線程,myMethod()為線程所要執行方法的引用;3)在需要阻塞線程的位置,語句Thread.Sleep (myMillisecond)使線程進入休眠狀態,myMillisecond為一個int型參數指定阻塞線程的時間,單位為毫秒;4)線程執行完成myMethod()方法中的所有語句后,程序即會銷毀線程并且釋放線程所占用的系統資源,或者給myMethod()方法的循環體判斷標志置位,并且在調用線程使用Join()方法等待線程終止[5]。

在多線程中,如果允許不同的工作線程對同一個對象進行讀寫操作,這勢必會導致該對象訪問出錯從而引發程序異常。線程同步技術利用互斥鎖以排他方式防止共享對象被同時訪問。互斥鎖工作的基本原理是在某個線程訪問共享對象前,向操作系統申請鎖對象,如果鎖被其他線程占有,說明其他線程正在訪問該共享對象,當前線程則沒有訪問權限因此阻塞當前線程,直到獲取鎖才結束阻塞狀態;如果互斥鎖處于釋放狀態,則當前線程馬上獲取鎖并訪問共享對象,在訪問結束后釋放互斥鎖。使用這種方式,保證了程序在同一時刻只能有一個線程可以訪問共享對象[6]。C#語言提供的線程同步有Mutex、Monitor以及Lock等對象,使用方法均通過獲取互斥鎖、標記訪問共享對象的臨界區、釋放互斥鎖等操作組成。

2 多線程在系統軟件中的詳細設計

2.1軟件框架介紹

文中所介紹的軟件根據系統的功能要求,人為的把程序各功能模塊放在以下多個獨立的線程中執行,它們分別是數據采集線程(這里包括低速和高速采集兩個線程)、UI交互線程、試驗控制線程以及安全監測線程。線程間交互及邏輯關系如圖1所示。

圖1 程序框架圖

2.2線程功能詳解

2.2.1數據采集線程

數據采集作為測控系統軟件的基礎功能,通過在while函數中循環調用采集板卡的系統API函數為顯示、控制以及安全判斷提供系統模擬和數字信息。本軟件根據系統采集和控制的需要,將數據采集分為低速數據采集線程和高速數據采集線程。在本文的測控系統中,一部分模擬信號和數字信號僅作為輔助參考信號使用,例如液壓壓力、溫度、過濾器狀態等信號。低速線程采集的數據以觸發事件的形式將數據傳遞給UI顯示線程和試驗控制線程和安全監測線程。并且保證低速采集線程每采集一次數據睡眠10 ms,從而節約系統資源。相比較于低速采集線程,高速采集線程則負責采集系統需要采集頻率較高的拉壓力以及位移信號,并且使用線程同步技術保證數據的高速傳輸。為了滿足系統試驗控制線程的采樣要求,本系統選用Advantech公司的PCI1716數據采集卡。該采集板卡具有16位分辨率的8路差分輸入或16路單端輸入模擬信號采集功能,采樣頻率可達250 KS/s。軟件實測顯示,在線程全速采集無休眠操作的情況下單通道采集時間為160 μs/次,該采集速度可以滿足系統需求。

2.2.2UI交互線程

UI交互線程實現顯示試驗界面以及響應用戶操作的功能。該線程一方面把來自數據采集線程數據、試驗控制線程的試驗狀態以及安全監測線程的狀態信息通過窗體的顯示控件直觀的表示出來,例如chart、richtextbox、label等控件;另一方面通過用戶觸發窗體控件的事件屬性來響應其操作,軟件中即通過“開始試驗”按鈕的Click()事件開啟試驗控制線程。試驗界面設計如圖2所示。

2.2.3試驗控制線程

試驗控制線程實現試驗過程控制和數據保存的功能。線程同步的方式使得該線程與高速采集線程實現數據共享,從而保證了試驗過程數據的高速采集。高速采集的數據一方面用于試驗控制的判斷依據,另一方面數據被保存到緩存數組中并定期保存到文件當中以供查看歷史數據。該線程執行的方法體中集合了整個試驗的核心控制算法,依賴采集的實時數據、狀態標志以及邏輯判斷等實現復雜的試驗控制功能。

2.2.4安全監測線程

安全監測線程實時監測整個系統的各項工作參數是否在安全參數范圍內,如果參數超標則報警或者緊急停機。該線程在系統軟件啟動后就開始運行,直至退出軟件停止工作。這其中監測的信號包括拉壓力、液壓壓力、溫度液位以及急停開關等信號,這些信號同樣來自于數據采集線程。該線程也是一個低速線程,每監測一個循環睡眠100 ms。

2.3線程同步實現

軟件為滿足系統對于實時高速數據采集的要求,在數據采集線程和試驗控制線程之間實現數據共享對象的線程同步操作。線程同步具體代碼如圖3所示。這里選用Monitor對象來實現線程同步,數據共享對象為高速采集線程中的cacheBuf數組。如圖程序所示,高速采集線程T1對cacheBuf進行寫操作,試驗控制線程T2對其進行讀操作。線程同步操作步驟:1)T1執行Monitor.Enter()語句,獲取鎖并將T2線程阻塞在Monitor.Enter()語句處;2)T1執行Monitor.Pulse()語句,通知阻塞在Monitor.Wait()語句處的線程進入就緒狀態;3)T1執行Monitor.Wait()語句,釋放鎖并且進入等待狀態;4)此阻塞在Monitor.Entor()處的T2獲取鎖并執行到Monitor. Pulse()通知阻塞在Monitor.Wait()的T1進入就緒狀態;5)T2執行Monitor.Wait()語句,釋放鎖并且進入等待狀態,此時處于就緒狀態并阻塞在Monitor.Wait()處的T1重新獲取鎖,并執行Monitor.Exit()并釋放鎖;6)由于T2阻塞在Monitor.Wait()處并處于等待狀態,此時T1再次執行Monitor.Enter()語句并再次獲取鎖。依次類推,保證在同一時間只有一個線程獲取能夠獲取對共享對象cacheBuf的獨占訪問權。

圖2 實驗界面

圖3 線程同步圖

3 結 論

本文利用多線程技術,一方面實現了測控系統軟件各功能模塊的代碼分離從而優化了軟件框架,保證其可靠性和穩定性;另一方面,多線程的引入大幅度提高系統資源的利用率從而提升軟件的整體執行效率。這種基于多線程的測控軟件設計方法同時具有很高的復用性。本文軟件中的各功能模塊已在多個測控軟件中實現了充分的代碼復用,并且得到滿意的效果。

[1]武杰.快速可重組機械工程測控實驗平臺的研制 [D].南京:南京航空航天大學,2007.

[2]Tobin Titus,Fabio Claudio Ferracchiati.C#線程參考手冊[M].北京:清華大學出版社,2003.

[3]眭俊華,劉慧娜,王建鑫,等.多核多線程技術綜述[J].計算機應用,2013(33):239-242,261.

[4]劉權盛,楊洪斌,吳悅,等.同時多線程技術[J].計算機工程與設計,2008(4):963-967.

[5]Christian Nagel,Bill Evjen,Jay Glynn,等.C#高級編程[M]. 8版.北京:清華大學出版社,2013.

[6]楊宗德,呂光宏,劉雍.Linux高級程序設計[M].3版.北京:人民郵電出版社,2012.

The software design of measurement and control system based on multi-threading technology

YANG Ke,SONG Guo-kun,ZHAO Shi-ping
(Manufactory Science and Engineering Institute of Sichuan University,Chengdu 610065,China)

We developed a software of measurement and control system based on multi-threading technology according to the design need of a certain measurement and control system.The realization of the software in the article is through the C# language on the.Net platform,which providing with a powerful thread model and complete operation interfaces can meet the needs toward to the operation on threads.The core function of the software,which starts different threads to run the data acquisition,experiment control,UI interaction and safety monitoring functional modules,is multi-threading technology. Thread synchronization technology guaranteed the accuracy of high-speed objects transmission among different threads.On the one hand,this kind of design pattern enhances the stability and reliability of the software significantly,on the other hand,it can also takes full advantage of the computer's system resources to speed up the working efficiency of the system.

multi-threading;data synchronization;measurement and control system;C#

TN98

A

1674-6236(2016)16-0089-03

2015-08-25稿件編號:201508133

楊珂(1991—),男,四川成都人,碩士。研究方向:儀器儀表工程。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 国产精品人成在线播放| 人妻少妇乱子伦精品无码专区毛片| 在线欧美a| 久久中文电影| 国产视频a| 免费无遮挡AV| 午夜一区二区三区| 亚洲乱伦视频| 精品国产女同疯狂摩擦2| 亚洲资源站av无码网址| 日韩第八页| 91成人在线免费视频| 99免费视频观看| 亚洲中文字幕无码爆乳| 在线播放91| 亚洲无码精品在线播放| 成人免费午间影院在线观看| 国产日本欧美在线观看| 中国国语毛片免费观看视频| 制服丝袜国产精品| 免费一级毛片在线观看| 亚洲性视频网站| 亚洲男人的天堂久久香蕉| 欧美翘臀一区二区三区| 毛片大全免费观看| 一级毛片免费观看久| 成人欧美日韩| 成人av专区精品无码国产| 精品综合久久久久久97| 99伊人精品| 国产欧美日韩va| 免费一级无码在线网站| 美女啪啪无遮挡| 日韩精品亚洲精品第一页| 国内精品久久久久久久久久影视| 视频二区国产精品职场同事| 精品少妇人妻无码久久| 欧美一区国产| av一区二区三区高清久久| 欧美一级高清片欧美国产欧美| 国产成人无码综合亚洲日韩不卡| 国产福利一区视频| 国产一区二区三区视频| 国产精品福利在线观看无码卡| 欧美色图久久| 五月天丁香婷婷综合久久| 国产成人夜色91| 中文字幕永久视频| 自拍偷拍欧美日韩| 久久综合结合久久狠狠狠97色| 精品国产黑色丝袜高跟鞋| 人妻丰满熟妇αv无码| 欧洲欧美人成免费全部视频| 久久亚洲欧美综合| 国产专区综合另类日韩一区| 国产午夜无码专区喷水| 干中文字幕| 精品一区二区三区无码视频无码| 毛片网站免费在线观看| 国产青榴视频| 亚洲欧美精品日韩欧美| 成人午夜在线播放| 欧洲精品视频在线观看| 国产亚洲欧美在线视频| 日韩精品一区二区三区大桥未久| 丁香婷婷综合激情| 国产网站免费| 亚洲国产成人久久77| 67194在线午夜亚洲| 一级全黄毛片| 999精品视频在线| 国产成人a在线观看视频| jijzzizz老师出水喷水喷出| 国产91线观看| 香蕉视频在线观看www| 国产成人AV男人的天堂| 亚洲91在线精品| 视频二区亚洲精品| 日本亚洲欧美在线| 91小视频在线观看免费版高清| 亚洲动漫h| 91精品亚洲|